https://sourceware.org/bugzilla/show_bug.cgi?id=19636
Bug ID: 19636 Summary: -pie changes program behavior and generate unnecessary dynamic symbols. Product: binutils Version: unspecified Status: NEW Severity: normal Priority: P2 Component: ld Assignee: unassigned at sourceware dot org Reporter: hjl.tools at gmail dot com Target Milestone: --- [hjl@gnu-tools-1 pie-1]$ cat x.s .text .globl _start _start: .byte 0 .section .data.rel.ro.local,"aw",%progbits .weak func .dc.a func [hjl@gnu-tools-1 pie-1]$ make as -o x.o x.s ./ld -pie -o x x.o ./ld -o y x.o readelf -r --dyn-syms x Relocation section '.rela.dyn' at offset 0x248 contains 1 entries: Offset Info Type Sym. Value Sym. Name + Addend 000000200268 000300000001 R_X86_64_64 0000000000000000 func + 0 Symbol table '.dynsym' contains 6 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND 1: 0000000000000260 0 SECTION LOCAL DEFAULT 6 2: 0000000000200370 0 NOTYPE GLOBAL DEFAULT 9 __bss_start 3: 0000000000000000 0 NOTYPE WEAK DEFAULT UND func 4: 0000000000200370 0 NOTYPE GLOBAL DEFAULT 9 _edata 5: 0000000000200370 0 NOTYPE GLOBAL DEFAULT 9 _end readelf -r --dyn-syms y There are no relocations in this file. [hjl@gnu-tools-1 pie-1]$ -pie generates a dynamic relocation for func, which changes program behavior and makes weak symbol a run-time decision instead of link-time. Also 2: 0000000000200370 0 NOTYPE GLOBAL DEFAULT 9 __bss_start 4: 0000000000200370 0 NOTYPE GLOBAL DEFAULT 9 _edata 5: 0000000000200370 0 NOTYPE GLOBAL DEFAULT 9 _end are odd since there are no dynamic relocations for those symbols. With gold, I got [hjl@gnu-tools-1 pie-1]$ make LD=ld.gold as -o x.o x.s ld.gold -pie -o x x.o ld.gold -o y x.o readelf -r --dyn-syms x There are no relocations in this file. Symbol table '.dynsym' contains 1 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND readelf -r --dyn-syms y There are no relocations in this file. [hjl@gnu-tools-1 pie-1]$ -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils