hc
2024-08-14 93e8ba98c407598d13d8ade71bc7802acfb19c58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
From 16f293d67eace501c98494976030f4319778ebf5 Mon Sep 17 00:00:00 2001
From: Merlin Mathesius <mmathesi@redhat.com>
Date: Wed, 13 May 2020 08:02:27 -0500
Subject: [PATCH] Workaround multiple definition of symbol errors
 
[From https://src.fedoraproject.org/rpms/syslinux/raw/rawhide/f/0005-Workaround-multiple-definition-of-symbol-errors.patch
 plus adding '-z muldefs' for gpxe]
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
---
 com32/cmenu/Makefile           | 2 +-
 com32/elflink/ldlinux/Makefile | 2 +-
 com32/gpllib/Makefile          | 2 +-
 com32/hdt/Makefile             | 2 +-
 core/Makefile                  | 2 +-
 dos/Makefile                   | 2 +-
 efi/Makefile                   | 2 +-
 gpxe/src/arch/i386/Makefile    | 2 +-
 8 files changed, 8 insertions(+), 8 deletions(-)
 
diff --git a/com32/cmenu/Makefile b/com32/cmenu/Makefile
index 6bb52316..66cdd649 100644
--- a/com32/cmenu/Makefile
+++ b/com32/cmenu/Makefile
@@ -49,7 +49,7 @@ makeoutputdirs:
     @mkdir -p $(OBJ)/libmenu
 
 libmenu/libmenu.elf: $(LIBMENU)
-    $(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) \
+    $(LD) -shared $(LDFLAGS) -z muldefs -soname $(patsubst %.elf,%.c32,$(@F)) \
         -o $@ $^
 
 tidy dist:
diff --git a/com32/elflink/ldlinux/Makefile b/com32/elflink/ldlinux/Makefile
index d948da43..67434a1f 100644
--- a/com32/elflink/ldlinux/Makefile
+++ b/com32/elflink/ldlinux/Makefile
@@ -33,7 +33,7 @@ endif
 all: $(BTARGET) ldlinux_lnx.a
 
 ldlinux.elf : $(OBJS)
-    $(LD) $(LDFLAGS) -soname $(SONAME) -o $@ $^ $(LIBS)
+    $(LD) $(LDFLAGS) -z muldefs -soname $(SONAME) -o $@ $^ $(LIBS)
 
 LNXCFLAGS += -D__export='__attribute__((visibility("default")))'
 LNXLIBOBJS = get_key.lo
diff --git a/com32/gpllib/Makefile b/com32/gpllib/Makefile
index e3e30d76..17520a1e 100644
--- a/com32/gpllib/Makefile
+++ b/com32/gpllib/Makefile
@@ -24,7 +24,7 @@ makeoutputdirs:
         $(addprefix $(OBJ),$(sort $(dir $(LIBOBJS)))),$(b))
 
 libgpl.elf : $(LIBOBJS)
-    $(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) -o $@ $^
+    $(LD) -shared $(LDFLAGS) -z muldefs -soname $(patsubst %.elf,%.c32,$(@F)) -o $@ $^
 
 tidy dist clean:
     find . \( -name \*.o -o -name .\*.d -o -name \*.tmp \) -print0 | \
diff --git a/com32/hdt/Makefile b/com32/hdt/Makefile
index 80f2d0a0..8509cd96 100644
--- a/com32/hdt/Makefile
+++ b/com32/hdt/Makefile
@@ -52,7 +52,7 @@ QEMU            ?= qemu-kvm
 all: $(MODULES) $(TESTFILES)
 
 hdt.elf : $(OBJS) $(LIBS) $(C_LIBS)
-    $(LD) $(LDFLAGS) -o $@ $^
+    $(LD) $(LDFLAGS) -z muldefs -o $@ $^
 
 memtest:
     -[ ! -f $(FLOPPY_DIR)/$(MEMTEST) ] && $(WGET) $(MEMTEST_URL) -O $(FLOPPY_DIR)/$(MEMTEST)
diff --git a/core/Makefile b/core/Makefile
index ad0acb5a..3bee4dc9 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -164,7 +164,7 @@ AUXLIBS = libisolinux.a libisolinux-debug.a libldlinux.a \
 LDSCRIPT = $(SRC)/$(ARCH)/syslinux.ld
 
 %.elf: %.o $(LIBDEP) $(LDSCRIPT) $(AUXLIBS)
-    $(LD) $(LDFLAGS) -Bsymbolic $(LD_PIE) -E --hash-style=gnu -T $(LDSCRIPT) -M -o $@ $< \
+    $(LD) $(LDFLAGS) -z muldefs -Bsymbolic $(LD_PIE) -E --hash-style=gnu -T $(LDSCRIPT) -M -o $@ $< \
         --start-group $(LIBS) $(subst $(*F).elf,lib$(*F).a,$@) --end-group \
         > $(@:.elf=.map)
     $(OBJDUMP) -h $@ > $(@:.elf=.sec)
diff --git a/dos/Makefile b/dos/Makefile
index b9c337d5..2af87346 100644
--- a/dos/Makefile
+++ b/dos/Makefile
@@ -19,7 +19,7 @@ include $(MAKEDIR)/embedded.mk
 CFLAGS    += -D__MSDOS__ -mregparm=3 -DREGPARM=3
 # CFLAGS  += -DDEBUG
 
-LDFLAGS     = -T $(SRC)/dosexe.ld
+LDFLAGS     = -T $(SRC)/dosexe.ld -z muldefs
 OPTFLAGS = -g
 INCLUDES = -include code16.h -nostdinc -iwithprefix include \
        -I$(SRC) -I$(SRC)/.. -I$(SRC)/../libfat \
diff --git a/efi/Makefile b/efi/Makefile
index d24d16db..7c714ebf 100644
--- a/efi/Makefile
+++ b/efi/Makefile
@@ -70,7 +70,7 @@ $(OBJS): subdirs
 BTARGET  = syslinux.efi
 
 syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS)
-    $(LD) $(LDFLAGS) --strip-debug -o $@ $^ -lgnuefi -lefi
+    $(LD) $(LDFLAGS) -z muldefs --strip-debug -o $@ $^ -lgnuefi -lefi
 
 # We need to rename the .hash section because the EFI firmware
 # linker really doesn't like it.
diff --git a/gpxe/src/arch/i386/Makefile b/gpxe/src/arch/i386/Makefile
index dd8da802..be1d00ff 100644
--- a/gpxe/src/arch/i386/Makefile
+++ b/gpxe/src/arch/i386/Makefile
@@ -55,7 +55,7 @@ ASFLAGS        += --32
 ifeq ($(HOST_OS),FreeBSD)
 LDFLAGS        += -m elf_i386_fbsd
 else
-LDFLAGS        += -m elf_i386
+LDFLAGS        += -z muldefs -m elf_i386
 endif
 
 # EFI requires -fshort-wchar, and nothing else currently uses wchar_t
-- 
2.30.1