solist - internals: when ldd is in libc

Aleksandar Ristovski aristovski@qnx.com
Fri Aug 15 18:27:00 GMT 2008


Hello,


I have a question regarding the internals. We (qnx) have ldd in libc; qnx target is svr4, so we use solib-svr4; ldd is not listed in the process' link map. ldd lives in libc, but in .interp section it is called "ldqnx.so.2". Physically, ldqnx.so.2 is a softlink to real libc.so.2 (libc.so.3).

When GDB tries to determines current_sos before any shared object is loaded, it will call svr4_default_sos, which, in turn, will create "artificial" ldqnx entry in the gdb's so_list based on .interp name.

The problem: when the "real" libc is mapped, gdb will update_solib_list and determine that ldqnx is now missing from the inferior's linkmap and thus disable all the breakpoints set in it. I want to avoid disabling the breakpoints and let gdb "know" that newly mapped libc is, in fact, ldqnx mapped by default_sos; being one the same, all the resolved addresses for breakpoints are valid. 

And this is, finally, my question: is there a mechanism in gdb to handle such situation, or would supporting this scenario be a new feature?


Thank you,
Aleksandar Ristovski
QNX Software Systems



More information about the Gdb mailing list