* solib-svr4.c (svr4_have_link_map_offsets): New function.
(locate_base): Return early if there aren't any link map offsets. (svr4_solib_create_inferior_hook): Warn if shared library support is unavailable.
This commit is contained in:
parent
351980a492
commit
d5a921c9a8
2 changed files with 32 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
|||
2003-04-14 Kevin Buettner <kevinb@redhat.com>
|
||||
|
||||
* solib-svr4.c (svr4_have_link_map_offsets): New function.
|
||||
(locate_base): Return early if there aren't any link map offsets.
|
||||
(svr4_solib_create_inferior_hook): Warn if shared library support
|
||||
is unavailable.
|
||||
|
||||
2003-04-14 David Carlton <carlton@math.stanford.edu>
|
||||
|
||||
* symtab.c (symbol_set_names): Add prefix when storing Java names
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
|
||||
static struct link_map_offsets *svr4_fetch_link_map_offsets (void);
|
||||
static struct link_map_offsets *legacy_fetch_link_map_offsets (void);
|
||||
static int svr4_have_link_map_offsets (void);
|
||||
|
||||
/* fetch_link_map_offsets_gdbarch_data is a handle used to obtain the
|
||||
architecture specific link map offsets fetching function. */
|
||||
|
@ -542,9 +543,10 @@ locate_base (void)
|
|||
/* Check to see if we have a currently valid address, and if so, avoid
|
||||
doing all this work again and just return the cached address. If
|
||||
we have no cached address, try to locate it in the dynamic info
|
||||
section for ELF executables. */
|
||||
section for ELF executables. There's no point in doing any of this
|
||||
though if we don't have some link map offsets to work with. */
|
||||
|
||||
if (debug_base == 0)
|
||||
if (debug_base == 0 && svr4_have_link_map_offsets ())
|
||||
{
|
||||
if (exec_bfd != NULL
|
||||
&& bfd_get_flavour (exec_bfd) == bfd_target_elf_flavour)
|
||||
|
@ -1273,6 +1275,13 @@ svr4_solib_create_inferior_hook (void)
|
|||
/* Relocate the main executable if necessary. */
|
||||
svr4_relocate_main_executable ();
|
||||
|
||||
if (!svr4_have_link_map_offsets ())
|
||||
{
|
||||
warning ("no shared library support for this OS / ABI");
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
if (!enable_break ())
|
||||
{
|
||||
warning ("shared library handler failed to enable breakpoint");
|
||||
|
@ -1392,6 +1401,20 @@ svr4_fetch_link_map_offsets (void)
|
|||
return (flmo ());
|
||||
}
|
||||
|
||||
/* Return 1 if a link map offset fetcher has been defined, 0 otherwise. */
|
||||
static int
|
||||
svr4_have_link_map_offsets (void)
|
||||
{
|
||||
struct link_map_offsets *(*flmo)(void) =
|
||||
gdbarch_data (current_gdbarch, fetch_link_map_offsets_gdbarch_data);
|
||||
if (flmo == NULL
|
||||
|| (flmo == legacy_fetch_link_map_offsets
|
||||
&& legacy_svr4_fetch_link_map_offsets_hook == NULL))
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* set_solib_svr4_fetch_link_map_offsets() is intended to be called by
|
||||
a <arch>_gdbarch_init() function. It is used to establish an
|
||||
architecture specific link_map_offsets fetcher for the architecture
|
||||
|
|
Loading…
Reference in a new issue