libthread_db.so

Peter D HUERTER pete.huerter@st.com
Tue Jan 25 16:25:00 GMT 2005


Hi Everyone,

I am trying to program a debugger to figure out which version of 
libthread_db.so to use (to debug an SMP program linked -lpthread) in all 
situations.  The debugger currently checks for 
/lib/tls/libthread_db.so.1 first, and then for /lib/libthread_db.so.1 if 
the /lib/tls version does not exist.  I understand that the thread_db 
interface off /lib is to debug programs linked with the old linuxthread 
debug library, and the thread_db interface off /lib/tls is used to debug 
programs linked with the newer NPTL thread library.

My problem is when I link -static (gcc -lpthread -static...).  When the 
debugger attempts to debug a statically linked SMP program it is not 
able to use /lib/tls/libthread_db.so.  When I force the debugger to use 
/lib/libthread_db.so.1 everything works.

I am assuming that /lib/libthread_db.so goes with /lib/libpthread.so, 
and /lib/tls/libpthread_db.so goes with /lib/tls/libpthread.so.

Q: When I build my program -Bstatic does this automatically tell the 
linker to link in the old linuxthread library?

Q: Is there a way to force a static link to use the NPTL thread library 
instead?

Q: I would like for the debugger not to break if  /lib/tls disappears.  
How can I select which version of libthread_db.so.1 to use when my 
program is statically linked?

Q: Will this work?:
    if  symbol "__linuxthreads_version" is found in the symbol tables of 
exe/solibs then use /lib/libthread_db.so
    else if /lib/tls/libthread_db.so exists use it
    otherwise use /lib/libthread_db.so

This debugger works on both x86, and x86-64.  Any info would be much 
appreciated.

Thanks for your help,
Pete Huerter.

-- 
Peter Huerter - Software Engineer                (pete.huerter@st.com)
AST Manno Lab, STMicroelectronics                (ph:+41 91-612'86'41)




More information about the Libc-alpha mailing list