HOWTO use the link map
Have you ever needed to know which shared object an address belongs to, but
you don't have any debug symbols and gdb's info shared
just isn't helping? Try walking down the link map chain to find what you
need to know.
If you can load the C library's debug symbols, then you can find the
first entry in the link map's chain of records by examining
*_rtld_global->_dl_ns[0]._ns_loaded
. The very first entry should
be for the executable itself. It has an empty l_name
field. Now
walk down the list by traversing the l_next
field of each record.
The l_entry
field is what gdb's info shared
command reports as the “From” address when debug symbols are available.