Newer versions of ld automatically emit .gnu.hash and .note.gnu.build-id
sections, which are not listed in the linker script, and will end up
breaking the build with an allocation conflict, e.g.,
/usr/bin/aarch64-linux-gnu-ld: section .note.gnu.build-id loaded at
[
0000000000000000,
0000000000000023] overlaps section .text loaded at
[
0000000000000000,
0000000000017dbf]
Since we don't require or care about these sections, update the linker
script so that they are discarded. Note that this involves emitting the
.note.gnu.build-id section into a non-allocatable segment to prevent the
linker from noticing that it is being discarded (and subsequently
complaining about it)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
PROVIDE(__reloc_end = .);\r
}\r
\r
+ .note (INFO) : { *(.note.gnu.build-id) }\r
+\r
/DISCARD/ : {\r
*(.note.GNU-stack)\r
+ *(.gnu.hash)\r
*(.gnu_debuglink)\r
*(.interp)\r
*(.dynamic)\r