What | Removed | Added |
---|---|---|
CC | matz@suse.com, schwab@suse.com |
Yhat was only speculation, though. I think it's not triggered by that: % cat hello.c #include <stdio.h> int main(void) { printf ("hello\n"); return 0; } % gcc hello.c % readelf -d a.out | grep NOW % LD_DEBUG=bindings ./a.out 19645: 19645: calling init: /lib64/ld-linux-x86-64.so.2 19645: 19645: 19645: calling init: /lib64/libc.so.6 19645: 19645: 19645: initialize program: ./a.out 19645: 19645: 19645: transferring control: ./a.out 19645: hello 19645: 19645: calling fini: ./a.out [0] 19645: So, something in ld.so changed that the bindings debug messages aren't emitted anymore, and if that wasn't by design we have a regression. I can see this behaviour with glibc 2.36 on tumbleweed. With glibc 2.35 (on an older TW): % gcc -Wl,-z,now hello.c % LD_DEBUG=bindings ./a.out 30703: binding file linux-vdso.so.1 [0] to linux-vdso.so.1 [0]: normal symbol `__vdso_clock_gettime' [LINUX_2.6] 30703: binding file linux-vdso.so.1 [0] to linux-vdso.so.1 [0]: normal symbol `__vdso_gettimeofday' [LINUX_2.6] 30703: binding file linux-vdso.so.1 [0] to linux-vdso.so.1 [0]: normal symbol `__vdso_time' [LINUX_2.6] ... 30703: binding file ./a.out [0] to /lib64/libc.so.6 [0]: normal symbol `puts' [GLIBC_2.2.5] ... and so on. This is just to demonstrate the -znow in itself is not the cause, but the glibc version is. CCing Andreas.