[RFC PATCH 06/10] arm: discard .gnu.version* sections

Sam Edwards
2023-05-21T12:34:51Z

These are often a consequence of --pie, but they aren't actually
used in the runtime relocation code. It is better to discard them
than to aggregate them, because they tend to be of different types,
and this upsets some linkers (e.g. LLD).

Signed-off-by: Sam Edwards <CFSworks@gmail.com>
---

arch/arm/cpu/u-boot.lds | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
index fc4f63d834..8cdf08a730 100644
--- a/arch/arm/cpu/u-boot.lds
+++ b/arch/arm/cpu/u-boot.lds
@@ -229,6 +229,12 @@ SECTIONS
KEEP(*(.__bss_end));
}

+ /*
+ * LLD's --pie may synthesize these sections, even if they are empty;
+ * discard them, for we do not need version symbols
+ */
+ /DISCARD/ : { *(.gnu.version*) }
+
.dynsym _image_binary_end : { *(.dynsym) }
.dynbss : { *(.dynbss) }
.dynstr : { *(.dynstr*) }
--
2.39.2