https://sourceware.org/bugzilla/show_bug.cgi?id=28385
Bug ID: 28385 Summary: gold: linker script symbol assignment given wrong visibility with versioning script Product: binutils Version: 2.37 Status: NEW Severity: normal Priority: P2 Component: gold Assignee: ccoutant at gmail dot com Reporter: vapier at gentoo dot org CC: ian at airs dot com Target Milestone: --- the attr package uses a linker script to set up compatibility symbols, and a versioning script to set up the visibility. bfd handles this, but gold sets the wrong visibility. in the test below you can see bfd puts symtest_o@SYM_1.0 in the exported dynsym but gold does not. $ cat test.c void symtest_new() {} void symtest_old() {} $ cat test.lds "symtest_o@SYM_1.0" = symtest_old; $ cat test.ver SYM_1.0 { global: symtest_o; local: *; }; SYM_1.1 { global: symtest_new; }; $ gcc -fPIC -shared test.c -Wl,--version-script=test.ver -Wl,test.lds -o libtest.so -fuse-ld=bfd $ readelf -sW libtest.so | grep -i sym Symbol table '.dynsym' contains 9 entries: 5: 0000000000001100 0 FUNC GLOBAL DEFAULT 11 symtest_o@SYM_1.0 6: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS SYM_1.0 7: 00000000000010f9 7 FUNC GLOBAL DEFAULT 11 symtest_new@@SYM_1.1 8: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS SYM_1.1 Symbol table '.symtab' contains 19 entries: 6: 0000000000001100 7 FUNC LOCAL DEFAULT 11 symtest_old 11: 0000000000001100 0 FUNC GLOBAL DEFAULT 11 symtest_o@SYM_1.0 13: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS SYM_1.0 15: 00000000000010f9 7 FUNC GLOBAL DEFAULT 11 symtest_new 16: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS SYM_1.1 $ gcc -fPIC -shared test.c -Wl,--version-script=test.ver -Wl,test.lds -o libtest.so -fuse-ld=gold $ readelf -sW libtest.so | grep symtest Symbol table '.dynsym' contains 8 entries: 5: 00000000000005e9 7 FUNC GLOBAL DEFAULT 12 symtest_new@@SYM_1.1 6: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS SYM_1.0 7: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS SYM_1.1 Symbol table '.symtab' contains 20 entries: 5: 00000000000005f0 7 FUNC LOCAL DEFAULT 12 symtest_old 8: 00000000000005f0 0 FUNC LOCAL DEFAULT 12 symtest_o@SYM_1.0 13: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS SYM_1.1 14: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS SYM_1.0 15: 00000000000005e9 7 FUNC GLOBAL DEFAULT 12 symtest_new -- You are receiving this mail because: You are on the CC list for the bug.