test: nlist: make resilient against -Wl,--gc-sections
With linker sections GC enabled, we get a test failure in nlist.c
:
nlist: nlist.c:72: main: Assertion `rc == 0' failed.
This turns out to be because several sections used by the test can be discarded:
ld: removing unused section '.text.func_pub' in file 'nlist.o'
ld: removing unused section '.bss.data_pub_uninit' in file 'nlist.o'
ld: removing unused section '.data.data_pub_init' in file 'nlist.o'
Reproduced with CFLAGS="-Og -fdata-sections -ffunction-sections"
and
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--gc-sections -Wl,-z,start-stop-gc"
.
Additionally, LDFLAGS="... -Wl,--print-gc-sections"
can help with diagnosing
which sections get removed.
We already mark these symbols as used
, but we need retain
[0] for them
to survive linker GC too.
Signed-off-by: Sam James sam@gentoo.org