Multiarch SVR4_FETCH_LINK_MAP_OFFSETS and GET_LONGJMP_TARGET for GNU/Linux/MIPS.
This commit is contained in:
parent
e8119602a5
commit
19ed69dd06
|
@ -1,3 +1,17 @@
|
||||||
|
2002-12-20 Kevin Buettner <kevinb@redhat.com>
|
||||||
|
|
||||||
|
* Makefile.in (mips-linux-tdep.o): Add $(osabi_h) and $(gdb_string_h).
|
||||||
|
* config/mips/tm-linux.h (mips_linux_svr4_fetch_link_map_offsets)
|
||||||
|
(mips_linux_get_longjmp_target): Delete declarations.
|
||||||
|
(SVR4_FETCH_LINK_MAP_OFFSETS, GET_LONGJMP_TARGET)
|
||||||
|
(MIPS_LINUX_JB_ELEMENT_SIZE, MIPS_LINUX_JB_PC): Delete definitions.
|
||||||
|
* mips-linux-tdep.c (osabi.h, gdb_string.h): Include.
|
||||||
|
(MIPS_LINUX_JB_ELEMENT_SIZE, MIPS_LINUX_JB_PC): Define.
|
||||||
|
(mips_linux_get_longjmp_target)
|
||||||
|
(mips_linux_svr4_fetch_link_map_offsets): Make static.
|
||||||
|
(mips_linux_init_abi): New function.
|
||||||
|
(_initialize_mips_linux_tdep): Register mips_linux_init_abi().
|
||||||
|
|
||||||
2002-12-19 Keith Seitz <keiths@redhat.com>
|
2002-12-19 Keith Seitz <keiths@redhat.com>
|
||||||
|
|
||||||
patch committed by Elena Zannoni <ezannoni@redhat.com>
|
patch committed by Elena Zannoni <ezannoni@redhat.com>
|
||||||
|
|
|
@ -1946,7 +1946,7 @@ minsyms.o: minsyms.c $(defs_h) $(gdb_string_h) $(symtab_h) $(bfd_h) \
|
||||||
mips-irix-tdep.o: mips-irix-tdep.c $(defs_h) $(osabi_h) $(elf_bfd_h)
|
mips-irix-tdep.o: mips-irix-tdep.c $(defs_h) $(osabi_h) $(elf_bfd_h)
|
||||||
mips-linux-nat.o: mips-linux-nat.c $(defs_h)
|
mips-linux-nat.o: mips-linux-nat.c $(defs_h)
|
||||||
mips-linux-tdep.o: mips-linux-tdep.c $(defs_h) $(gdbcore_h) $(target_h) \
|
mips-linux-tdep.o: mips-linux-tdep.c $(defs_h) $(gdbcore_h) $(target_h) \
|
||||||
$(solib_svr4_h)
|
$(solib_svr4_h) $(osabi_h) $(gdb_string_h)
|
||||||
mips-nat.o: mips-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(regcache_h)
|
mips-nat.o: mips-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(regcache_h)
|
||||||
mips-tdep.o: mips-tdep.c $(defs_h) $(gdb_string_h) $(frame_h) $(inferior_h) \
|
mips-tdep.o: mips-tdep.c $(defs_h) $(gdb_string_h) $(frame_h) $(inferior_h) \
|
||||||
$(symtab_h) $(value_h) $(gdbcmd_h) $(language_h) $(gdbcore_h) \
|
$(symtab_h) $(value_h) $(gdbcmd_h) $(language_h) $(gdbcore_h) \
|
||||||
|
|
|
@ -40,25 +40,6 @@
|
||||||
|
|
||||||
#include "config/tm-linux.h"
|
#include "config/tm-linux.h"
|
||||||
|
|
||||||
/* Use target_specific function to define link map offsets. */
|
|
||||||
|
|
||||||
extern struct link_map_offsets *mips_linux_svr4_fetch_link_map_offsets (void);
|
|
||||||
#define SVR4_FETCH_LINK_MAP_OFFSETS() \
|
|
||||||
mips_linux_svr4_fetch_link_map_offsets ()
|
|
||||||
|
|
||||||
/* Details about jmp_buf. */
|
|
||||||
|
|
||||||
#define MIPS_LINUX_JB_ELEMENT_SIZE 4
|
|
||||||
#define MIPS_LINUX_JB_PC 0
|
|
||||||
|
|
||||||
/* Figure out where the longjmp will land. Slurp the arguments out of the
|
|
||||||
stack. We expect the first arg to be a pointer to the jmp_buf structure
|
|
||||||
from which we extract the pc (JB_PC) that we will land at. The pc is
|
|
||||||
copied into ADDR. This routine returns 1 on success. */
|
|
||||||
|
|
||||||
#define GET_LONGJMP_TARGET(ADDR) mips_linux_get_longjmp_target(ADDR)
|
|
||||||
extern int mips_linux_get_longjmp_target (CORE_ADDR *);
|
|
||||||
|
|
||||||
/* We do single stepping in software. */
|
/* We do single stepping in software. */
|
||||||
|
|
||||||
#define SOFTWARE_SINGLE_STEP_P() 1
|
#define SOFTWARE_SINGLE_STEP_P() 1
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#include "gdbcore.h"
|
#include "gdbcore.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "solib-svr4.h"
|
#include "solib-svr4.h"
|
||||||
|
#include "osabi.h"
|
||||||
|
#include "gdb_string.h"
|
||||||
|
|
||||||
/* Copied from <asm/elf.h>. */
|
/* Copied from <asm/elf.h>. */
|
||||||
#define ELF_NGREG 45
|
#define ELF_NGREG 45
|
||||||
|
@ -60,7 +62,10 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
|
||||||
which we extract the pc (MIPS_LINUX_JB_PC) that we will land at. The pc
|
which we extract the pc (MIPS_LINUX_JB_PC) that we will land at. The pc
|
||||||
is copied into PC. This routine returns 1 on success. */
|
is copied into PC. This routine returns 1 on success. */
|
||||||
|
|
||||||
int
|
#define MIPS_LINUX_JB_ELEMENT_SIZE 4
|
||||||
|
#define MIPS_LINUX_JB_PC 0
|
||||||
|
|
||||||
|
static int
|
||||||
mips_linux_get_longjmp_target (CORE_ADDR *pc)
|
mips_linux_get_longjmp_target (CORE_ADDR *pc)
|
||||||
{
|
{
|
||||||
CORE_ADDR jb_addr;
|
CORE_ADDR jb_addr;
|
||||||
|
@ -309,7 +314,7 @@ static struct core_fns regset_core_fns =
|
||||||
This makes it possible to access GNU/Linux MIPS shared libraries from a
|
This makes it possible to access GNU/Linux MIPS shared libraries from a
|
||||||
GDB that was built on a different host platform (for cross debugging). */
|
GDB that was built on a different host platform (for cross debugging). */
|
||||||
|
|
||||||
struct link_map_offsets *
|
static struct link_map_offsets *
|
||||||
mips_linux_svr4_fetch_link_map_offsets (void)
|
mips_linux_svr4_fetch_link_map_offsets (void)
|
||||||
{
|
{
|
||||||
static struct link_map_offsets lmo;
|
static struct link_map_offsets lmo;
|
||||||
|
@ -342,8 +347,18 @@ mips_linux_svr4_fetch_link_map_offsets (void)
|
||||||
return lmp;
|
return lmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mips_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
||||||
|
{
|
||||||
|
set_gdbarch_get_longjmp_target (gdbarch, mips_linux_get_longjmp_target);
|
||||||
|
set_solib_svr4_fetch_link_map_offsets
|
||||||
|
(gdbarch, mips_linux_svr4_fetch_link_map_offsets);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_initialize_mips_linux_tdep (void)
|
_initialize_mips_linux_tdep (void)
|
||||||
{
|
{
|
||||||
|
gdbarch_register_osabi (bfd_arch_mips, GDB_OSABI_LINUX,
|
||||||
|
mips_linux_init_abi);
|
||||||
add_core_fns (®set_core_fns);
|
add_core_fns (®set_core_fns);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue