* solib-svr4.h: Update copyright year.

(svr4_ilp32_fetch_link_map_offsets)
(svr4_lp64_fetch_link_map_offsets): New prototype.
* solib-svr4.c: Update copyright year.
(svr4_ilp32_fetch_link_map_offsets)
(svr4_lp64_fetch_link_map_offsets): New function.
This commit is contained in:
Mark Kettenis 2004-02-21 18:34:45 +00:00
parent 3c9d0484ea
commit e4bbbda840
3 changed files with 89 additions and 2 deletions

View File

@ -1,3 +1,12 @@
2004-02-21 Mark Kettenis <kettenis@gnu.org>
* solib-svr4.h: Update copyright year.
(svr4_ilp32_fetch_link_map_offsets)
(svr4_lp64_fetch_link_map_offsets): New prototype.
* solib-svr4.c: Update copyright year.
(svr4_ilp32_fetch_link_map_offsets)
(svr4_lp64_fetch_link_map_offsets): New function.
2004-02-20 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (add_partial_symbol): Fix typo in adding enumerators

View File

@ -1,7 +1,8 @@
/* Handle SVR4 shared libraries for GDB, the GNU Debugger.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999,
2000, 2001, 2003 Free Software Foundation, Inc.
2000, 2001, 2003, 2004
Free Software Foundation, Inc.
This file is part of GDB.
@ -1508,6 +1509,77 @@ init_fetch_link_map_offsets (struct gdbarch *gdbarch)
return legacy_fetch_link_map_offsets;
}
/* Most OS'es that have SVR4-style ELF dynamic libraries define a
`struct r_debug' and a `struct link_map' that are binary compatible
with the origional SVR4 implementation. */
/* Fetch (and possibly build) an appropriate `struct link_map_offsets'
for an ILP32 SVR4 system. */
struct link_map_offsets *
svr4_ilp32_fetch_link_map_offsets (void)
{
static struct link_map_offsets lmo;
static struct link_map_offsets *lmp = NULL;
if (lmp == NULL)
{
lmp = &lmo;
/* Everything we need is in the first 8 bytes. */
lmo.r_debug_size = 8;
lmo.r_map_offset = 4;
lmo.r_map_size = 4;
/* Everything we need is in the first 20 bytes. */
lmo.link_map_size = 20;
lmo.l_addr_offset = 0;
lmo.l_addr_size = 4;
lmo.l_name_offset = 4;
lmo.l_name_size = 4;
lmo.l_next_offset = 12;
lmo.l_next_size = 4;
lmo.l_prev_offset = 16;
lmo.l_prev_size = 4;
}
return lmp;
}
/* Fetch (and possibly build) an appropriate `struct link_map_offsets'
for an LP64 SVR4 system. */
struct link_map_offsets *
svr4_lp64_fetch_link_map_offsets (void)
{
static struct link_map_offsets lmo;
static struct link_map_offsets *lmp = NULL;
if (lmp == NULL)
{
lmp = &lmo;
/* Everything we need is in the first 16 bytes. */
lmo.r_debug_size = 16;
lmo.r_map_offset = 8;
lmo.r_map_size = 8;
/* Everything we need is in the first 40 bytes. */
lmo.link_map_size = 40;
lmo.l_addr_offset = 0;
lmo.l_addr_size = 8;
lmo.l_name_offset = 8;
lmo.l_name_size = 8;
lmo.l_next_offset = 24;
lmo.l_next_size = 8;
lmo.l_prev_offset = 32;
lmo.l_prev_size = 8;
}
return lmp;
}
static struct target_so_ops svr4_so_ops;
extern initialize_file_ftype _initialize_svr4_solib; /* -Wmissing-prototypes */

View File

@ -1,5 +1,6 @@
/* Handle shared libraries for GDB, the GNU Debugger.
Copyright 2000
Copyright 2000, 2004
Free Software Foundation, Inc.
This file is part of GDB.
@ -82,3 +83,8 @@ extern CORE_ADDR svr4_fetch_objfile_link_map (struct objfile *objfile);
which is used to fetch link map offsets. It will only be set
by solib-legacy.c, if at all. */
extern struct link_map_offsets *(*legacy_svr4_fetch_link_map_offsets_hook)(void);
/* Fetch (and possibly build) an appropriate `struct link_map_offsets'
for ILP32 and LP64 SVR4 systems. */
extern struct link_map_offsets *svr4_ilp32_fetch_link_map_offsets (void);
extern struct link_map_offsets *svr4_lp64_fetch_link_map_offsets (void);