From 6db472b71aee7c3b14d14467af773090636b0e53 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sun, 18 May 2003 21:10:11 +0000 Subject: * Makefile (m68klinux-nat.o, m68klinux-tdep.o): Update dependencies. * config/m68k/tm-linux.h (DEPRECATED_EXTRACT_RETURN_VALUE): Define as m68k_linux_extract_return_value. (DEPRECATED_STORE_RETURN_VALUE): Define as m68k_linux_store_return_value. (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Define as m68k_linux_extract_struct_value_address. * m68klinux-tdep.c (m68k_linux_sigtramp_saved_pc): Use get_next_frame, get_frame_base, get_frame_pc. (m68k_linux_frame_saved_pc): Use get_frame_base. (m68k_linux_extract_return_value): New function. (m68k_linux_store_return_value): New function. (m68k_linux_extract_struct_value_address): New function. * config/m68k/tm-m68k.h: Declare m68k_get_longjmp_target. --- gdb/config/m68k/tm-linux.h | 55 ++++++++++------------------------------------ gdb/config/m68k/tm-m68k.h | 2 ++ 2 files changed, 14 insertions(+), 43 deletions(-) (limited to 'gdb/config/m68k') diff --git a/gdb/config/m68k/tm-linux.h b/gdb/config/m68k/tm-linux.h index cc20c62a4b0..b11c41876db 100644 --- a/gdb/config/m68k/tm-linux.h +++ b/gdb/config/m68k/tm-linux.h @@ -1,6 +1,6 @@ /* Definitions to target GDB to GNU/Linux on m680x0. - Copyright 1996, 1998, 1999, 2000, 2002 Free Software Foundation, + Copyright 1996, 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of GDB. @@ -20,8 +20,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include "config/tm-linux.h" +#include "m68k/tm-m68k.h" + #include "regcache.h" -#include "m68k-tdep.h" /* Number of traps that happen between exec'ing the shell to run an inferior, and when we finally get to the inferior code. This is 2 @@ -37,56 +39,24 @@ function return value of type TYPE, and copy that, in virtual format, into VALBUF. */ -#define DEPRECATED_EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \ -{ \ - if (TYPE_CODE (TYPE) == TYPE_CODE_FLT) \ - { \ - REGISTER_CONVERT_TO_VIRTUAL (FP0_REGNUM, TYPE, \ - ((char *) (REGBUF) \ - + REGISTER_BYTE (FP0_REGNUM)), \ - VALBUF); \ - } \ - else if (TYPE_CODE (TYPE) == TYPE_CODE_PTR) \ - memcpy (VALBUF, (char *) (REGBUF) + REGISTER_BYTE (M68K_A0_REGNUM), \ - TYPE_LENGTH (TYPE)); \ - else \ - memcpy (VALBUF, \ - ((char *) (REGBUF) \ - + (TYPE_LENGTH (TYPE) >= 4 ? 0 : 4 - TYPE_LENGTH (TYPE))), \ - TYPE_LENGTH (TYPE)); \ -} +#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) \ -{ \ - if (TYPE_CODE (TYPE) == TYPE_CODE_FLT) \ - { \ - char raw_buffer[REGISTER_RAW_SIZE (FP0_REGNUM)]; \ - REGISTER_CONVERT_TO_RAW (TYPE, FP0_REGNUM, VALBUF, raw_buffer); \ - deprecated_write_register_bytes (REGISTER_BYTE (FP0_REGNUM), \ - raw_buffer, TYPE_LENGTH (TYPE)); \ - } \ - else \ - { \ - if (TYPE_CODE (TYPE) == TYPE_CODE_PTR) \ - deprecated_write_register_bytes (REGISTER_BYTE (M68K_A0_REGNUM), VALBUF, \ - TYPE_LENGTH (TYPE)); \ - deprecated_write_register_bytes (0, VALBUF, TYPE_LENGTH (TYPE)); \ - } \ -} - -#include "config/tm-linux.h" -#include "m68k/tm-m68k.h" +#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). */ -#undef DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS #define DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) \ - (*(CORE_ADDR *)((char *) (REGBUF) + REGISTER_BYTE (M68K_A0_REGNUM))) + m68k_linux_extract_struct_value_address (REGBUF) +extern CORE_ADDR m68k_linux_extract_struct_value_address (char *); /* Offsets (in target ints) into jmp_buf. */ @@ -100,7 +70,6 @@ #define GET_LONGJMP_TARGET(ADDR) m68k_get_longjmp_target(ADDR) -#undef DEPRECATED_FRAME_SAVED_PC #define DEPRECATED_FRAME_SAVED_PC(frame) m68k_linux_frame_saved_pc (frame) extern CORE_ADDR m68k_linux_frame_saved_pc (struct frame_info *); diff --git a/gdb/config/m68k/tm-m68k.h b/gdb/config/m68k/tm-m68k.h index 523cc4a0193..cb72c982f80 100644 --- a/gdb/config/m68k/tm-m68k.h +++ b/gdb/config/m68k/tm-m68k.h @@ -22,3 +22,5 @@ #include "regcache.h" #define GDB_MULTI_ARCH GDB_MULTI_ARCH_PARTIAL + +extern int m68k_get_longjmp_target (CORE_ADDR *); -- cgit v1.2.1