The introduction of the _SHARED macros had one flaw: If multiple files
had _SHARED defined during compilation, each of them would contain an
assignment of stage0_printk to *printk. During linking, this caused
errors as multiple definitions of printk existed.
Make sure _SHARED alone gives you only the printk prototype, and iff
_MAINOBJECT is defined as well, include the assignment.

Signed-off-by: Carl-Daniel Hailfinger <[EMAIL PROTECTED]>

--- 
Index: LinuxBIOSv3/include/shared.h
===================================================================
--- LinuxBIOSv3/include/shared.h        (Revision 515)
+++ LinuxBIOSv3/include/shared.h        (Arbeitskopie)
@@ -29,9 +29,16 @@
  */
 #define FUNC(func, ret, attr, args...)   \
        ret stage0_##func(args) attr
+
+#ifdef _MAINOBJECT
 #define EXTERN(func, ret, attr, args...) \
        ret (*func)(args) attr= stage0_##func
 #else
+#define EXTERN(func, ret, attr, args...) \
+       ret *func(args) attr
+#endif
+
+#else
 #define FUNC(func, ret, attr, args...)   \
        ret func(args) attr
 #define EXTERN(func, ret, attr, args...)
Index: LinuxBIOSv3/mainboard/adl/msm800sev/Makefile
===================================================================
--- LinuxBIOSv3/mainboard/adl/msm800sev/Makefile        (Revision 515)
+++ LinuxBIOSv3/mainboard/adl/msm800sev/Makefile        (Arbeitskopie)
@@ -34,7 +34,7 @@
 
 # Next Quest: Make a single rule out of those:
 $(obj)/mainboard/$(MAINBOARDDIR)/initram.o: 
$(src)/mainboard/$(MAINBOARDDIR)/initram.c
-       $(Q)$(CC) $(INITCFLAGS) -D_SHARED -fPIE -c $< -o $@
+       $(Q)$(CC) $(INITCFLAGS) -D_SHARED -D_MAINOBJECT -fPIE -c $< -o $@
 $(obj)/northbridge/amd/geodelx/raminit.o: 
$(src)/northbridge/amd/geodelx/raminit.c
        $(Q)mkdir -p $(dir $@)
        $(Q)$(CC) $(INITCFLAGS) -D_SHARED -fPIE -c $< -o $@
Index: LinuxBIOSv3/mainboard/amd/norwich/Makefile
===================================================================
--- LinuxBIOSv3/mainboard/amd/norwich/Makefile  (Revision 515)
+++ LinuxBIOSv3/mainboard/amd/norwich/Makefile  (Arbeitskopie)
@@ -28,7 +28,7 @@
 
 # Next Quest: Make a single rule out of those:
 $(obj)/mainboard/$(MAINBOARDDIR)/initram.o: 
$(src)/mainboard/$(MAINBOARDDIR)/initram.c
-       $(Q)$(CC) $(INITCFLAGS) -D_SHARED -fPIE -c $< -o $@
+       $(Q)$(CC) $(INITCFLAGS) -D_SHARED -D_MAINOBJECT -fPIE -c $< -o $@
 $(obj)/northbridge/amd/geodelx/raminit.o: 
$(src)/northbridge/amd/geodelx/raminit.c
        $(Q)mkdir -p $(dir $@)
        $(Q)$(CC) $(INITCFLAGS) -D_SHARED -fPIE -c $< -o $@
Index: LinuxBIOSv3/mainboard/artecgroup/dbe61/Makefile
===================================================================
--- LinuxBIOSv3/mainboard/artecgroup/dbe61/Makefile     (Revision 515)
+++ LinuxBIOSv3/mainboard/artecgroup/dbe61/Makefile     (Arbeitskopie)
@@ -32,7 +32,7 @@
 
 # Next Quest: Make a single rule out of those:
 $(obj)/mainboard/$(MAINBOARDDIR)/initram.o: 
$(src)/mainboard/$(MAINBOARDDIR)/initram.c
-       $(Q)$(CC) $(INITCFLAGS) -D_SHARED -fPIE -c $< -o $@
+       $(Q)$(CC) $(INITCFLAGS) -D_SHARED -D_MAINOBJECT -fPIE -c $< -o $@
 $(obj)/northbridge/amd/geodelx/raminit.o: 
$(src)/northbridge/amd/geodelx/raminit.c
        $(Q)mkdir -p $(dir $@)
        $(Q)$(CC) $(INITCFLAGS) -D_SHARED -fPIE -c $< -o $@
Index: LinuxBIOSv3/mainboard/emulation/qemu-x86/Makefile
===================================================================
--- LinuxBIOSv3/mainboard/emulation/qemu-x86/Makefile   (Revision 515)
+++ LinuxBIOSv3/mainboard/emulation/qemu-x86/Makefile   (Arbeitskopie)
@@ -43,7 +43,7 @@
 INITRAM_OBJ = $(obj)/mainboard/$(MAINBOARDDIR)/initram.o
 
 $(obj)/mainboard/$(MAINBOARDDIR)/initram.o: 
$(src)/mainboard/$(MAINBOARDDIR)/initram.c
-       $(Q)$(CC) $(INITCFLAGS) -D_SHARED -fPIE -c $< -o $@
+       $(Q)$(CC) $(INITCFLAGS) -D_SHARED -D_MAINOBJECT -fPIE -c $< -o $@
 
 $(obj)/linuxbios.initram $(obj)/linuxbios.initram.map: $(obj)/stage0.init 
$(obj)/stage0-prefixed.o $(INITRAM_OBJ)
        $(Q)# initram links against stage0



-- 
linuxbios mailing list
linuxbios@linuxbios.org
http://www.linuxbios.org/mailman/listinfo/linuxbios

Reply via email to