https://sourceware.org/bugzilla/show_bug.cgi?id=22150
Bug ID: 22150 Summary: [2.29 Regression] ld.bfd keeps a version reference in .gnu.version_r for symbols which are optimized out Product: binutils Version: 2.29 Status: NEW Severity: normal Priority: P2 Component: ld Assignee: unassigned at sourceware dot org Reporter: doko at debian dot org Target Milestone: --- [forwarded from https://launchpad.net/bugs/1715641] test files at https://people.canonical.com/~doko/tmp/lp1715641.tar.xz feel free to call that a regression or behavior change ;) ... This is seen when building NetworkManager using ld 2.29 using glibc 2.26, the dpkg-shlibs tool not seeing a versioned dependency on a glibc 2.26 symbol, and then the packaging tools declaring NetworkManager be ready for use with glibc 2.24, and then the dynamic loader complaining with # ldd /usr/sbin/NetworkManager /usr/sbin/NetworkManager: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /usr/sbin/NetworkManager) The behaviour change between ld 2.28 and ld 2.29 seems to be $ readelf -V NetworkManager-ld-2.28 | fgrep GLIBC_2.25 $ readelf -V NetworkManager-ld-2.29 | fgrep GLIBC_2.25 0x0170: Name: GLIBC_2.25 Flags: none Version: 11 $ readelf -V NetworkManager-gold-2.28 | fgrep GLIBC_2.25 000: 0 (*local*) 2 (GLIBC_2.25) d (CURL_GNUTLS_3) d (CURL_GNUTLS_3) 0x0010: Name: GLIBC_2.25 Flags: none Version: 2 $ readelf -V NetworkManager-gold-2.29 | fgrep GLIBC_2.25 000: 0 (*local*) 2 (GLIBC_2.25) d (CURL_GNUTLS_3) d (CURL_GNUTLS_3) 0x0010: Name: GLIBC_2.25 Flags: none Version: 2 $ objdump -T NetworkManager-ld-2.29|grep GLIBC_2.25 $ objdump -T NetworkManager-gold-2.29|grep GLIBC_2.25 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.25 __explicit_bzero_chk There is no behavior change in gold, and gold correctly marks the symbol as undefined. ld-2.28 otoh is able to detect that the symbol isn't used, doesn't emit a reference, but in 2.29 it keeps a reference in the .gnu.version_r section. Is this expected behavior? There is a bug in NetworkManager as well, as it defines a backup for the explicit_bzero function which is new in glibc 2.25, but it fails to define that for explicit_bzero_chk which is used when building with -D_FORTIFY_SOURCE. -- 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