]> rtime.felk.cvut.cz Git - omk.git/commitdiff
Prevent GNU linker synthetic LOAD map statements to propagate to dependencies.
authorPavel Pisa <ppisa@pikron.com>
Fri, 7 Apr 2023 08:25:41 +0000 (10:25 +0200)
committerPavel Pisa <ppisa@pikron.com>
Fri, 7 Apr 2023 08:25:41 +0000 (10:25 +0200)
Never versions of GNU binutils LD generates next line into map files

  LOAD linker stubs

which is synthetic and does not match any file in filesystem.
It has to be excluded from the generated dependency files.

Signed-off-by: Pavel Pisa <ppisa@pikron.com>
snippets/gcc.omk
snippets/linux-kernel.omk
snippets/linux.omk
snippets/nuttx-compile.omk
snippets/nuttx-kernel.omk
snippets/rtems.omk

index b9c3f0c0fd2adc00e7d657565df6a54164ab635c..7213d9a03eff4ebff6ead153e7eacf223e44315a 100644 (file)
@@ -149,7 +149,7 @@ $(2)/$(1)$(3:%=-%): $$($(1)_OBJS)
        @echo "$(2)/$(1)$(3:%=-%): \\" >$(OBJS_DIR)/$(1)$(3:%=-%).exe.d
        @if [ -n "$(LD_SCRIPT)" ]; then \
          echo "  $(LIB_DIR)/$(LD_SCRIPT).ld$(3:%=-%) \\" >>$(OBJS_DIR)/$(1)$(3:%=-%).exe.d; fi
-       @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(OBJS_DIR)/$(1)$(3:%=-%).map|tr '&' '\134'  >>$(OBJS_DIR)/$(1)$(3:%=-%).exe.d
+       @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(OBJS_DIR)/$(1)$(3:%=-%).map|tr '&' '\134' | grep -v '^  linker [^ ]' >>$(OBJS_DIR)/$(1)$(3:%=-%).exe.d
        @echo >>$(OBJS_DIR)/$(1).exe.d
 endef
 
index bc6ac3aecfb7e91b929d4c87f2368ba52f1b63ac..adeef4632edeabdb268f1c61b47ae7753fa914be 100644 (file)
@@ -237,7 +237,7 @@ $(2)/$(1)$(KERN_LINK_SUFFIX): $$($(1)_OBJS)
        @$(QUIET_CMD_ECHO) "  LD [K]  $$@"
        $(Q) $$(KERN_LD) $$(KERN_LDFLAGS) -r $$($(1)_OBJS) -L$$(kern_GCCLIB_DIR) $$($(1)_LIBS:%=-l%) $$(KERN_LOADLIBES) -Map $(KERN_OBJS_DIR)/$(1).mod.map -o $$@
        @echo "$(2)/$(1)$(KERN_LINK_SUFFIX): \\" >$(KERN_OBJS_DIR)/$(1).mod.d
-       @$(SED4OMK) -n -e 's/^LOAD \(.*\)$$$$/  \1  \\/p' $(KERN_OBJS_DIR)/$(1).mod.map | grep -v '^  linker stubs' >>$(KERN_OBJS_DIR)/$(1).mod.d
+       @$(SED4OMK) -n -e 's/^LOAD \(.*\)$$$$/  \1  \\/p' $(KERN_OBJS_DIR)/$(1).mod.map | grep -v '^  linker [^ ]' >>$(KERN_OBJS_DIR)/$(1).mod.d
        @echo >>$(KERN_OBJS_DIR)/$(1).mod.d
        @if [ "$(KERN_EXE_SUFFIX)" = ".ko" ] ; then \
          echo $(1) >>$(KERN_MODPOST_DIR)/module-changes ; \
index e5017be39cb25cf35524d1a9892a817de1f15863..2c3073dbe8c55b664ac27c60181729c6b6eef9f5 100644 (file)
@@ -244,7 +244,7 @@ $(2)/$(1)$(3): $(TARGET_OBJS)
        $(Q) $(if $(filter $(CXX_PATTERN),$(TARGET_SOURCES)),$$(CXX),$$(CC)) \
          $(TARGET_OBJS) $$($(1)_LIBS:%=-l%) $$(LOADLIBES) $$(OMK_LDFLAGS) $$(LDFLAGS) $$($(1)_LDFLAGS) -Wl,-rpath-link,$(USER_LIB_DIR) -Wl,-Map,$(USER_OBJS_DIR)/$(1).exe.map -o $$@
        @echo "$(2)/$(1)$(3): \\" >$(USER_OBJS_DIR)/$(1).exe.d
-       @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(USER_OBJS_DIR)/$(1).exe.map|tr '&' '\134' | grep -v '^  linker stubs'  >>$(USER_OBJS_DIR)/$(1).exe.d
+       @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(USER_OBJS_DIR)/$(1).exe.map|tr '&' '\134' | grep -v '^  linker [^ ]'  >>$(USER_OBJS_DIR)/$(1).exe.d
        @echo >>$(USER_OBJS_DIR)/$(1).exe.d
 
 binary-pass-local: $(2)/$(1)$(3)
index 1200dbbf9b44a77f11907edbf5496d5ae786cfa6..1539adb4126ba8daa3aebdcf39b6d31f3f4be25a 100644 (file)
@@ -289,7 +289,7 @@ $(2)/$(1)$(3:%=-%): $$($(1)_OBJS) $$($(1)_BUILTINTABLE:%.c=%$$(OBJ_EXT)) $$($(1)
          $$(shell for i in $$($(1)_PROGBUILTIN_LDAT); do cat $$$$i ; done) $$(NUTTXLIBES) \
          -o $$@
        @echo "$(2)/$(1)$(3:%=-%): \\" >$(OBJS_DIR)/$(1)$(3:%=-%).exe.d
-       @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(OBJS_DIR)/$(1)$(3:%=-%).map|tr '&' '\134'  >>$(OBJS_DIR)/$(1)$(3:%=-%).exe.d
+       @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(OBJS_DIR)/$(1)$(3:%=-%).map|tr '&' '\134' | grep -v '^  linker [^ ]' >>$(OBJS_DIR)/$(1)$(3:%=-%).exe.d
        @echo >>$(OBJS_DIR)/$(1).exe.d
 endef
 
@@ -306,7 +306,7 @@ $(2)/$(1).elf: $$($(1)_OBJS)
          -o $$@
        @echo "$(2)/$(1).elf: \\" >$(OBJS_DIR)/$(1).elf.d
        @echo "  $(ELF_FILE_LDSCRIPT) \\" >>$(OBJS_DIR)/$(1).elf.d
-       @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(OBJS_DIR)/$(1).elf.map|tr '&' '\134'  >>$(OBJS_DIR)/$(1).elf.d
+       @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(OBJS_DIR)/$(1).elf.map|tr '&' '\134' | grep -v '^  linker [^ ]' >>$(OBJS_DIR)/$(1).elf.d
        @echo >>$(OBJS_DIR)/$(1).elf.d
 endef
 
@@ -326,7 +326,7 @@ $(2)/$(1).pbi: $$($(1)_OBJS)
          -o $(OBJS_DIR)/$(1).pbo
        $(Q) $(OBJCOPY) --keep-global-symbol=$(1)_main $(OBJS_DIR)/$(1).pbo $$@
        @echo "$(2)/$(1).pbi: \\" >$(OBJS_DIR)/$(1).pbi.d
-       @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(OBJS_DIR)/$(1).pbi.map|tr '&' '\134'  >>$(OBJS_DIR)/$(1).pbi.d
+       @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(OBJS_DIR)/$(1).pbi.map|tr '&' '\134' | grep -v '^  linker [^ ]' >>$(OBJS_DIR)/$(1).pbi.d
        @echo >>$(OBJS_DIR)/$(1).pbi.d
        @echo "{ \"$1\", $$($(1)_PRIORITY), $$($(1)_STACKSIZE), $(1)_main }," >$(3)/$(1).bdat
        @echo "int $(1)_main(int argc, char *argv[]);" >$(3)/$(1).pdat
index 1d967233f7ae77b24e3dc8c42690075d8ef6deda..46a76fb06b24baa2bc932eeca814fbf02f8506ec 100644 (file)
@@ -78,7 +78,7 @@ $(2)/$(1)$(KERN_LINK_SUFFIX): $$($(1)_OBJS)
          -o $$@
        @echo "$(2)/$(1)$(KERN_LINK_SUFFIX): \\" >$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
        @echo "  $(ELF_FILE_LDSCRIPT) \\" >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
-       @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).map|tr '&' '\134'  >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
+       @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).map|tr '&' '\134' | grep -v '^  linker [^ ]' >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
        @echo >>$(OBJS_DIR)/$(1)$(KERN_LINK_SUFFIX).d
 
 $(2)/lib$(1).ka: $$($(1)_OBJS)
index 83c78ebeb76aa576c7d1cc5bea5969415543eb22..97e007527f84845e551df7ad2c54426dfcdba21f 100644 (file)
@@ -222,12 +222,9 @@ $(2)/$(1): $$($(1)_OBJS)
                -S $(1)-symbol-table.c -o $(1)-symbol-table.o $(1).prelink || exit 1 ; \
          $$($(1)_LDCOMMAND) $(1)-symbol-table.o $$(LOADLIBES) $$($(1)_LIBS:%=-l%) -o $(2)/$(1) || exit 1 ; \
        fi
-
-#@echo "$(2)/$(1): \\" >$(USER_OBJS_DIR)/$(1).exe.d
-#@$(SED4OMK) -n -e 's/^LOAD \(.*\)$$$$/  \1  \\/p' $(USER_OBJS_DIR)/$(1).exe.map  >>$(USER_OBJS_DIR)/$(1).exe.d
-#@echo >>$(USER_OBJS_DIR)/$(1).exe.d
-#-Wl,-Map,$(USER_OBJS_DIR)/$(1).exe.map
-# FIXME: Why the map file was commented out?
+       @echo "$(2)/$(1): \\" >$(USER_OBJS_DIR)/$(1).exe.d
+       @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(USER_OBJS_DIR)/$(1).exe.map|tr '&' '\134' | grep -v '^  linker [^ ]'  >>$(USER_OBJS_DIR)/$(1).exe.d
+       @echo >>$(USER_OBJS_DIR)/$(1).exe.d
 endef
 
 # Rules for other output formats (can be specified by OUTPUT_FORMATS)