* Makefile.in (m68k-tdep.o, m68klinux-tdep.o): Update
dependencies. * m68k-tdep.c (m68k_gdbarch_init): Call gdbarch_init_osabi at the end. * m68klinux-tdep.c (m68k_linux_init_abi): New function. (_initialize_m68k_linux_tdep): New function. (m68k_linux_frame_saved_pc): Make static. (m68k_linux_extract_return_value): Likewise. (m68k_linux_store_return_value): Likewise. (m68k_linux_extract_struct_value_address): Likewise. * config/m68k/tm-linux.h (DEPRECATED_EXTRACT_RETURN_VALUE): Remove. (DEPRECATED_STORE_RETURN_VALUE): Remove. (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Remove. (DEPRECATED_FRAME_SAVED_PC): Remove.
This commit is contained in:
parent
72fe3d258d
commit
55809acbfc
5 changed files with 66 additions and 38 deletions
|
@ -1,3 +1,21 @@
|
|||
2003-05-21 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* Makefile.in (m68k-tdep.o, m68klinux-tdep.o): Update
|
||||
dependencies.
|
||||
* m68k-tdep.c (m68k_gdbarch_init): Call gdbarch_init_osabi at the
|
||||
end.
|
||||
* m68klinux-tdep.c (m68k_linux_init_abi): New function.
|
||||
(_initialize_m68k_linux_tdep): New function.
|
||||
(m68k_linux_frame_saved_pc): Make static.
|
||||
(m68k_linux_extract_return_value): Likewise.
|
||||
(m68k_linux_store_return_value): Likewise.
|
||||
(m68k_linux_extract_struct_value_address): Likewise.
|
||||
* config/m68k/tm-linux.h (DEPRECATED_EXTRACT_RETURN_VALUE):
|
||||
Remove.
|
||||
(DEPRECATED_STORE_RETURN_VALUE): Remove.
|
||||
(DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Remove.
|
||||
(DEPRECATED_FRAME_SAVED_PC): Remove.
|
||||
|
||||
2003-05-20 Kris Warkentin <kewarken@qnx.com>
|
||||
|
||||
* nto-tdep.c (fetch_core_registers): Match gdb's idea of
|
||||
|
|
|
@ -1918,12 +1918,12 @@ m68hc11-tdep.o: m68hc11-tdep.c $(defs_h) $(frame_h) $(symtab_h) \
|
|||
m68k-stub.o: m68k-stub.c
|
||||
m68k-tdep.o: m68k-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(gdbcore_h) \
|
||||
$(value_h) $(gdb_string_h) $(inferior_h) $(regcache_h) \
|
||||
$(arch_utils_h) $(gregset_h) $(m68k_tdep_h)
|
||||
$(arch_utils_h) $(gregset_h) $(osabi_h) $(m68k_tdep_h)
|
||||
m68klinux-nat.o: m68klinux-nat.c $(defs_h) $(frame_h) $(inferior_h) \
|
||||
$(language_h) $(gdbcore_h) $(gdb_string_h) $(regcache_h) \
|
||||
$(m68k_tdep_h) $(gdb_stat_h) $(floatformat_h) $(target_h)
|
||||
m68klinux-tdep.o: m68klinux-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \
|
||||
$(target_h) $(gdb_string_h) $(gdbtypes_h) $(m68k_tdep_t)
|
||||
$(target_h) $(gdb_string_h) $(gdbtypes_h) $(osabi_h) $(m68k_tdep_t)
|
||||
m68knbsd-nat.o: m68knbsd-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
|
||||
$(regcache_h)
|
||||
m68knbsd-tdep.o: m68knbsd-tdep.c $(defs_h) $(gdbtypes_h) $(regcache_h)
|
||||
|
|
|
@ -31,33 +31,6 @@
|
|||
|
||||
#define START_INFERIOR_TRAPS_EXPECTED 2
|
||||
|
||||
/* The following definitions are appropriate when using the ELF
|
||||
format, where floating point values are returned in fp0, pointer
|
||||
values in a0 and other values in d0. */
|
||||
|
||||
/* Extract from an array REGBUF containing the (raw) register state a
|
||||
function return value of type TYPE, and copy that, in virtual
|
||||
format, into VALBUF. */
|
||||
|
||||
#define DEPRECATED_EXTRACT_RETURN_VALUE(TYPE, REGBUF, VALBUF) \
|
||||
m68k_linux_extract_return_value (TYPE, REGBUF, VALBUF)
|
||||
extern void m68k_linux_extract_return_value (struct type *, char *, char *);
|
||||
|
||||
/* Write into appropriate registers a function return value of type
|
||||
TYPE, given in virtual format. */
|
||||
|
||||
#define DEPRECATED_STORE_RETURN_VALUE(TYPE, VALBUF) \
|
||||
m68k_linux_store_return_value (TYPE, VALBUF)
|
||||
extern void m68k_linux_store_return_value (struct type *, char *);
|
||||
|
||||
/* Extract from an array REGBUF containing the (raw) register state
|
||||
the address in which a function should return its structure value,
|
||||
as a CORE_ADDR (or an expression that can be used as one). */
|
||||
|
||||
#define DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) \
|
||||
m68k_linux_extract_struct_value_address (REGBUF)
|
||||
extern CORE_ADDR m68k_linux_extract_struct_value_address (char *);
|
||||
|
||||
/* Offsets (in target ints) into jmp_buf. */
|
||||
|
||||
#define JB_ELEMENT_SIZE 4
|
||||
|
@ -70,8 +43,5 @@ extern CORE_ADDR m68k_linux_extract_struct_value_address (char *);
|
|||
|
||||
#define GET_LONGJMP_TARGET(ADDR) m68k_get_longjmp_target(ADDR)
|
||||
|
||||
#define DEPRECATED_FRAME_SAVED_PC(frame) m68k_linux_frame_saved_pc (frame)
|
||||
extern CORE_ADDR m68k_linux_frame_saved_pc (struct frame_info *);
|
||||
|
||||
#define IN_SIGTRAMP(pc,name) m68k_linux_in_sigtramp (pc)
|
||||
extern int m68k_linux_in_sigtramp (CORE_ADDR pc);
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "inferior.h"
|
||||
#include "regcache.h"
|
||||
#include "arch-utils.h"
|
||||
#include "osabi.h"
|
||||
|
||||
#include "m68k-tdep.h"
|
||||
|
||||
|
@ -1052,6 +1053,9 @@ m68k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||
/* Should be using push_dummy_call. */
|
||||
set_gdbarch_deprecated_dummy_write_sp (gdbarch, generic_target_write_sp);
|
||||
|
||||
/* Hook in ABI-specific overrides, if they have been registered. */
|
||||
gdbarch_init_osabi (info, gdbarch);
|
||||
|
||||
return gdbarch;
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "target.h"
|
||||
#include "gdb_string.h"
|
||||
#include "gdbtypes.h"
|
||||
#include "osabi.h"
|
||||
#include "m68k-tdep.h"
|
||||
|
||||
/* Check whether insn1 and insn2 are parts of a signal trampoline. */
|
||||
|
@ -68,8 +69,8 @@ m68k_linux_in_sigtramp (CORE_ADDR pc)
|
|||
if (IS_RT_SIGTRAMP (insn0, insn1))
|
||||
return 2;
|
||||
|
||||
insn0 = (insn0 << 16) | (insn1 >> 16);
|
||||
insn1 = (insn1 << 16) | (insn2 >> 16);
|
||||
insn0 = ((insn0 << 16) & 0xffffffff) | (insn1 >> 16);
|
||||
insn1 = ((insn1 << 16) & 0xffffffff) | (insn2 >> 16);
|
||||
if (IS_SIGTRAMP (insn0, insn1))
|
||||
return 1;
|
||||
if (IS_RT_SIGTRAMP (insn0, insn1))
|
||||
|
@ -118,7 +119,7 @@ m68k_linux_sigtramp_saved_pc (struct frame_info *frame)
|
|||
|
||||
/* Return the saved program counter for FRAME. */
|
||||
|
||||
CORE_ADDR
|
||||
static CORE_ADDR
|
||||
m68k_linux_frame_saved_pc (struct frame_info *frame)
|
||||
{
|
||||
if (get_frame_type (frame) == SIGTRAMP_FRAME)
|
||||
|
@ -127,7 +128,15 @@ m68k_linux_frame_saved_pc (struct frame_info *frame)
|
|||
return read_memory_unsigned_integer (get_frame_base (frame) + 4, 4);
|
||||
}
|
||||
|
||||
void
|
||||
/* The following definitions are appropriate when using the ELF
|
||||
format, where floating point values are returned in fp0, pointer
|
||||
values in a0 and other values in d0. */
|
||||
|
||||
/* Extract from an array REGBUF containing the (raw) register state a
|
||||
function return value of type TYPE, and copy that, in virtual
|
||||
format, into VALBUF. */
|
||||
|
||||
static void
|
||||
m68k_linux_extract_return_value (struct type *type, char *regbuf, char *valbuf)
|
||||
{
|
||||
if (TYPE_CODE (type) == TYPE_CODE_FLT)
|
||||
|
@ -145,7 +154,10 @@ m68k_linux_extract_return_value (struct type *type, char *regbuf, char *valbuf)
|
|||
TYPE_LENGTH (type));
|
||||
}
|
||||
|
||||
void
|
||||
/* Write into appropriate registers a function return value of type
|
||||
TYPE, given in virtual format. */
|
||||
|
||||
static void
|
||||
m68k_linux_store_return_value (struct type *type, char *valbuf)
|
||||
{
|
||||
if (TYPE_CODE (type) == TYPE_CODE_FLT)
|
||||
|
@ -164,8 +176,32 @@ m68k_linux_store_return_value (struct type *type, char *valbuf)
|
|||
}
|
||||
}
|
||||
|
||||
CORE_ADDR
|
||||
/* Extract from an array REGBUF containing the (raw) register state
|
||||
the address in which a function should return its structure value,
|
||||
as a CORE_ADDR. */
|
||||
|
||||
static CORE_ADDR
|
||||
m68k_linux_extract_struct_value_address (char *regbuf)
|
||||
{
|
||||
return *(CORE_ADDR *) (regbuf + REGISTER_BYTE (M68K_A0_REGNUM));
|
||||
}
|
||||
|
||||
static void
|
||||
m68k_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
||||
{
|
||||
set_gdbarch_deprecated_frame_saved_pc (gdbarch,
|
||||
m68k_linux_frame_saved_pc);
|
||||
set_gdbarch_deprecated_extract_return_value (gdbarch,
|
||||
m68k_linux_extract_return_value);
|
||||
set_gdbarch_deprecated_store_return_value (gdbarch,
|
||||
m68k_linux_store_return_value);
|
||||
set_gdbarch_deprecated_extract_struct_value_address (gdbarch,
|
||||
m68k_linux_extract_struct_value_address);
|
||||
}
|
||||
|
||||
void
|
||||
_initialize_m68k_linux_tdep (void)
|
||||
{
|
||||
gdbarch_register_osabi (bfd_arch_m68k, 0, GDB_OSABI_LINUX,
|
||||
m68k_linux_init_abi);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue