https://sourceware.org/bugzilla/show_bug.cgi?id=20022
Bug ID: 20022
Summary: --gc-sections is broken with __start_ and shared
library
Product: binutils
Version: 2.27 (HEAD)
Status: NEW
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: hjl.tools at gmail dot com
Target Milestone: ---
When a __start_ symbol is defined both .o and .so, --gc-sections
drops the definition on .o:
[hjl@gnu-6 gc-4]$ cat a.s
.globl _start
_start:
.dc.a __start__foo
.dc.a bar
.section _foo,"aw",%progbits
foo:
.ascii "This is "
[hjl@gnu-6 gc-4]$ cat c.s
.globl bar
bar:
.dc.a __start__foo
.section _foo,"aw",%progbits
foo:
.ascii "This is "
[hjl@gnu-6 gc-4]$ make
gcc -B./ -fdata-sections -c -o a.o a.s
gcc -B./ -fdata-sections -c -o c.o c.s
./ld -shared --gc-sections -o c.so c.o
./ld --gc-sections -o x a.o c.so
./ld: warning: type and size of dynamic symbol `__start__foo' are not defined
./ld: warning: type and size of dynamic symbol `bar' are not defined
./ld -o y a.o c.so
./ld: warning: type and size of dynamic symbol `bar' are not defined
objdump -s -j _foo y
y: file format elf64-x86-64
Contents of section _foo:
600338 54686973 20697320 This is
objdump -s -j _foo x
x: file format elf64-x86-64
objdump: section '_foo' mentioned in a -j option, but not found in any input
file
Makefile:11: recipe for target 'all' failed
make: *** [all] Error 1
[hjl@gnu-6 gc-4]$
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-binutils