solist - internals: when ldd is in libc
Joel Brobecker
brobecker@adacore.com
Fri Aug 15 20:28:00 GMT 2008
> 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?
Would the same routine in the target_ops object be what you are looking
for? Specifically, it is set to the following function for svr4:
/* Return non-zero if GDB_SO_NAME and INFERIOR_SO_NAME represent
the same shared library. */
static int
svr4_same_1 (const char *gdb_so_name, const char *inferior_so_name)
{
if (strcmp (gdb_so_name, inferior_so_name) == 0)
return 1;
/* On Solaris, when starting inferior we think that dynamic linker is
/usr/lib/ld.so.1, but later on, the table of loaded shared libraries
contains /lib/ld.so.1. Sometimes one file is a link to another, but
sometimes they have identical content, but are not linked to each
other. We don't restrict this check for Solaris, but the chances
of running into this situation elsewhere are very low. */
if (strcmp (gdb_so_name, "/usr/lib/ld.so.1") == 0
&& strcmp (inferior_so_name, "/lib/ld.so.1") == 0)
return 1;
/* Similarly, we observed the same issue with sparc64, but with
different locations. */
if (strcmp (gdb_so_name, "/usr/lib/sparcv9/ld.so.1") == 0
&& strcmp (inferior_so_name, "/lib/sparcv9/ld.so.1") == 0)
return 1;
return 0;
}
--
Joel
More information about the Gdb
mailing list