]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
count rel_dyn
authorTom Rini <trini@konsulko.com>
Mon, 26 Jan 2026 17:19:22 +0000 (11:19 -0600)
committerTom Rini <trini@konsulko.com>
Mon, 26 Jan 2026 17:19:22 +0000 (11:19 -0600)
Signed-off-by: Tom Rini <trini@konsulko.com>
scripts/Makefile.xpl

index 5e65d7b24984c8f6f6033696f7fc7def1ed7f4e4..1be0057e6b8f96ef30c3666f6f8a9ff17bb97863 100644 (file)
@@ -343,8 +343,17 @@ $(obj)/$(SPL_BIN).bin: $(obj)/$(SPL_BIN)-nodtb.bin FORCE
 endif
 
 # Create a file that pads from the end of u-boot-spl-nodtb.bin to bss_end
-$(obj)/$(SPL_BIN)-pad.bin: $(obj)/$(SPL_BIN)
-       @bss_size_str=$(shell $(NM) $< | awk 'BEGIN {size = 0} /__bss_size/ {size = $$1} END {print "ibase=16; " toupper(size)}' | bc); \
+$(obj)/$(SPL_BIN)-pad.bin: $(obj)/$(SPL_BIN)-nodtb.bin
+       bss_size_str=$(shell cat $(obj)/$(SPL_BIN).map | \
+               awk ' \
+                       /__rel_dyn_start/ { start = $$1 } \
+                       /__rel_dyn_end/ { end = $$1 } \
+                       /__bss_size/ { size = $$1 } \
+                       END { \
+                               if (start != "" && end != "" && size != "") \
+                                       print end " " start " " size; \
+                       }' \
+               | sh -c 'read end start size && echo $$(( size - (end - start) ))'); \
        dd if=/dev/zero of=$@ bs=1 count=$${bss_size_str} 2>/dev/null;
 
 $(obj)/$(SPL_BIN).dtb: $(obj)/dts/dt-$(SPL_NAME).dtb FORCE