gcc -shared -O2 -fPIC bug-shared.c -ldl -o shared.so
gcc -O2 -fPIC bug-main.c -ldl
./a.out
Now comment out the printf
of the pointer in bug-shared.c
#0 0x00007ffff7de4b77 in _dl_lookup_symbol_x () from /lib64/ld-linux-x86-64.so.2
#1 0x00007ffff7951b91 in do_sym () from /usr/lib/libc.so.6
#2 0x00007ffff7bd80f4 in ?? () from /usr/lib/libdl.so.2
#3 0x00007ffff7de9f94 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#4 0x00007ffff7bd85e1 in ?? () from /usr/lib/libdl.so.2
#5 0x00007ffff7bd8148 in dlsym () from /usr/lib/libdl.so.2
#6 0x00007ffff7dea0ea in call_init.part () from /lib64/ld-linux-x86-64.so.2
#7 0x00007ffff7dea1fb in _dl_init () from /lib64/ld-linux-x86-64.so.2
#8 0x00007ffff7dee627 in dl_open_worker () from /lib64/ld-linux-x86-64.so.2
#9 0x00007ffff7de9f94 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#10 0x00007ffff7dede01 in _dl_open () from /lib64/ld-linux-x86-64.so.2
#11 0x00007ffff7bd7fc9 in ?? () from /usr/lib/libdl.so.2
#12 0x00007ffff7de9f94 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#13 0x00007ffff7bd85e1 in ?? () from /usr/lib/libdl.so.2
#14 0x00007ffff7bd8061 in dlopen () from /usr/lib/libdl.so.2
#15 0x0000000000400622 in main ()
I've attached the compiled assembly of bus-shared.c