]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[linux] Add a prefix to all symbols to avoid future name collisions
authorMichael Brown <mcb30@ipxe.org>
Sat, 27 Feb 2021 18:52:11 +0000 (18:52 +0000)
committerMichael Brown <mcb30@ipxe.org>
Sat, 27 Feb 2021 19:25:02 +0000 (19:25 +0000)
Allow for the possibility of linking to platform libraries for the
Linux userspace build by adding an iPXE-specific symbol prefix.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/Makefile
src/Makefile.housekeeping
src/arch/x86/Makefile.linux

index 60be873fbedf40e5ccf9a823ea0a29f4b8606cc5..69139dc11c101c9ea7f643cd4c91ca8653faee7a 100644 (file)
@@ -10,6 +10,7 @@ LDFLAGS               :=
 HOST_CFLAGS    :=
 MAKEDEPS       := Makefile
 CROSS_COMPILE  ?= $(CROSS)
+SYMBOL_PREFIX  :=
 
 ###############################################################################
 #
index 2c2c8a1fcc12df4d3b9668426e0cd97ae2769b4c..e017c656bcf6a79635b9398f7087ad6fbf6b03df 100644 (file)
@@ -1102,9 +1102,10 @@ TGT_LD_ENTRY     = _$(TGT_PREFIX)_start
 #
 TGT_LD_FLAGS   = $(foreach SYM,$(TGT_LD_ENTRY) $(TGT_LD_DRIVERS) \
                    $(TGT_LD_DEVLIST) obj_config obj_config_$(PLATFORM),\
-                   -u $(SYM) --defsym check_$(SYM)=$(SYM) ) \
+                   -u $(SYMBOL_PREFIX)$(SYM) \
+                   --defsym check_$(SYM)=$(SYMBOL_PREFIX)$(SYM) ) \
                  $(patsubst %,--defsym %,$(TGT_LD_IDS)) \
-                 -e $(TGT_LD_ENTRY)
+                 -e $(SYMBOL_PREFIX)$(TGT_LD_ENTRY)
 
 # Calculate list of debugging versions of objects to be included in
 # the target.
@@ -1166,6 +1167,7 @@ $(BLIB) : $(BLIB_OBJS) $(BLIB_LIST) $(MAKEDEPS)
        $(Q)$(RM) $(BLIB)
        $(QM)$(ECHO) "  [AR] $@"
        $(Q)$(AR) rD $@ $(sort $(BLIB_OBJS))
+       $(Q)$(OBJCOPY) --prefix-symbols=$(SYMBOL_PREFIX) $@
        $(Q)$(RANLIB) -D $@
 blib : $(BLIB)
 
@@ -1207,6 +1209,7 @@ $(BIN)/version.%.o : core/version.c $(MAKEDEPS) $(GIT_INDEX)
                -DVERSION_PATCH=$(VERSION_PATCH) \
                -DVERSION="\"$(VERSION)\"" \
                -c $< -o $@
+       $(Q)$(OBJCOPY) --prefix-symbols=$(SYMBOL_PREFIX) $@
 
 # Build an intermediate object file from the objects required for the
 # specified target.
index 1faf847532e22f742bab05fe6bc3e38ef86e43e9..3740cc81ada7905747eb206ca9b1ff070124ba7a 100644 (file)
@@ -3,6 +3,8 @@ MEDIA = linux
 # enable valgrind
 CFLAGS += -UNVALGRIND
 
+SYMBOL_PREFIX = _ipxe__
+
 INCDIRS += arch/x86/include/linux
 SRCDIRS += interface/linux
 SRCDIRS += drivers/linux