diff options
author | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-12-25 18:44:22 +0000 |
---|---|---|
committer | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-12-25 18:44:22 +0000 |
commit | 04f566a356078edd7887a4a4de0239a1148c2544 (patch) | |
tree | 234b2f579eeae3486bed8ff98afd57b7690b01c5 /gdb/config | |
parent | 504ccfd78814b535f3f67cb99c00514f5dbc8de5 (diff) | |
download | gdb-04f566a356078edd7887a4a4de0239a1148c2544.zip gdb-04f566a356078edd7887a4a4de0239a1148c2544.tar.gz gdb-04f566a356078edd7887a4a4de0239a1148c2544.tar.bz2 |
* defs.h: Move definitions of TARGET_*_BIT after include of tm.h.
The old way (using #undef in tm.h) was ugly and asking for
trouble, because it makes it possible for some file to use the
wrong definition. Move definition of HOST_CHAR_BIT after definition
of TARGET_CHAR_BIT.
* config/alpha/tm-alpha.h, config/h8300/tm-h8300.h,
config/h8500/tm-h8500.h, config/z8k/tm-z8k.h: Don't undef TARGET_*_BIT
before defining them.
Diffstat (limited to 'gdb/config')
-rw-r--r-- | gdb/config/alpha/tm-alpha.h | 58 | ||||
-rw-r--r-- | gdb/config/h8300/tm-h8300.h | 4 | ||||
-rw-r--r-- | gdb/config/h8500/tm-h8500.h | 5 | ||||
-rw-r--r-- | gdb/config/z8k/tm-z8k.h | 5 |
4 files changed, 39 insertions, 33 deletions
diff --git a/gdb/config/alpha/tm-alpha.h b/gdb/config/alpha/tm-alpha.h index b6cdcbf..d00bca9 100644 --- a/gdb/config/alpha/tm-alpha.h +++ b/gdb/config/alpha/tm-alpha.h @@ -27,11 +27,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* Redefine some target bit sizes from the default. */ -#undef TARGET_LONG_BIT #define TARGET_LONG_BIT 64 -#undef TARGET_LONG_LONG_BIT #define TARGET_LONG_LONG_BIT 64 -#undef TARGET_PTR_BIT #define TARGET_PTR_BIT 64 /* Floating point is IEEE compliant */ @@ -167,21 +164,34 @@ alpha_saved_pc_after_call PARAMS ((struct frame_info *)); #define MAX_REGISTER_VIRTUAL_SIZE 8 /* Nonzero if register N requires conversion - from raw format to virtual format. */ + from raw format to virtual format. + The alpha needs a conversion between register and memory format if + the register is a floating point register and + memory format is float, as the register format must be double + or + memory format is an integer with 4 bytes or less, as the representation + of integers in floating point registers is different. */ -#define REGISTER_CONVERTIBLE(N) 0 +#define REGISTER_CONVERTIBLE(N) ((N) >= FP0_REGNUM && (N) < FP0_REGNUM + 32) -/* Convert data from raw format for register REGNUM - to virtual format for register REGNUM. */ +/* Convert data from raw format for register REGNUM in buffer FROM + to virtual format with type TYPE in buffer TO. */ -#define REGISTER_CONVERT_TO_VIRTUAL(REGNUM,FROM,TO) \ - memcpy ((TO), (FROM), 8); +#define REGISTER_CONVERT_TO_VIRTUAL(REGNUM, TYPE, FROM, TO) \ + alpha_register_convert_to_virtual (REGNUM, TYPE, FROM, TO) +#ifdef __STDC__ +struct type; +#endif +extern void +alpha_register_convert_to_virtual PARAMS ((int, struct type *, char *, char *)); -/* Convert data from virtual format for register REGNUM - to raw format for register REGNUM. */ +/* Convert data from virtual format with type TYPE in buffer FROM + to raw format for register REGNUM in buffer TO. */ -#define REGISTER_CONVERT_TO_RAW(REGNUM,FROM,TO) \ - memcpy ((TO), (FROM), 8); +#define REGISTER_CONVERT_TO_RAW(TYPE, REGNUM, FROM, TO) \ + alpha_register_convert_to_raw (TYPE, REGNUM, FROM, TO) +extern void +alpha_register_convert_to_raw PARAMS ((struct type *, int, char *, char *)); /* Return the GDB type object for the "standard" data type of data in register N. */ @@ -201,9 +211,6 @@ alpha_saved_pc_after_call PARAMS ((struct frame_info *)); #define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \ alpha_extract_return_value(TYPE, REGBUF, VALBUF) -#ifdef __STDC__ -struct type; -#endif extern void alpha_extract_return_value PARAMS ((struct type *, char *, char *)); @@ -257,11 +264,22 @@ alpha_frame_chain PARAMS ((struct frame_info *)); extern CORE_ADDR alpha_frame_saved_pc PARAMS ((struct frame_info *)); -/* The offsets for the arguments and locals are off a virtual pointer - to the argument transfer area. The argument transfer area is immediately - below the virtual frame pointer, its size is in localoff from the PDR. */ +/* The alpha has two different virtual pointers for arguments and locals. + + The virtual argument pointer is pointing to the bottom of the argument + transfer area, which is located immediately below the virtual frame + pointer. Its size is fixed for the native compiler, it is either zero + (for the no arguments case) or large enough to hold all argument registers. + gcc uses a variable sized argument transfer area. As it has + to stay compatible with the native debugging tools it has to use the same + virtual argument pointer and adjust the argument offsets accordingly. + + The virtual local pointer is localoff bytes below the virtual frame + pointer, the value of localoff is obtained from the PDR. */ + +#define ALPHA_NUM_ARG_REGS 6 -#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame - (fi)->localoff) +#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame - (ALPHA_NUM_ARG_REGS * 8)) #define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame - (fi)->localoff) diff --git a/gdb/config/h8300/tm-h8300.h b/gdb/config/h8300/tm-h8300.h index 3356008..e3de3d5 100644 --- a/gdb/config/h8300/tm-h8300.h +++ b/gdb/config/h8300/tm-h8300.h @@ -47,11 +47,9 @@ extern void init_extra_frame_info (); #define IEEE_FLOAT /* Define the bit, byte, and word ordering of the machine. */ #define TARGET_BYTE_ORDER BIG_ENDIAN -#undef TARGET_INT_BIT + #define TARGET_INT_BIT 16 -#undef TARGET_LONG_BIT #define TARGET_LONG_BIT 32 -#undef TARGET_PTR_BIT #define TARGET_PTR_BIT (h8300hmode ? 32:16) /* Offset from address of function to start of its code. diff --git a/gdb/config/h8500/tm-h8500.h b/gdb/config/h8500/tm-h8500.h index 3086ed6..14d476f 100644 --- a/gdb/config/h8500/tm-h8500.h +++ b/gdb/config/h8500/tm-h8500.h @@ -27,13 +27,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define TARGET_BYTE_ORDER BIG_ENDIAN -#undef TARGET_INT_BIT #define TARGET_INT_BIT 16 - -#undef TARGET_LONG_BIT #define TARGET_LONG_BIT 32 - -#undef TARGET_PTR_BIT #define TARGET_PTR_BIT (minimum_mode ? 16 : 32) diff --git a/gdb/config/z8k/tm-z8k.h b/gdb/config/z8k/tm-z8k.h index 3f3d84c..b735973 100644 --- a/gdb/config/z8k/tm-z8k.h +++ b/gdb/config/z8k/tm-z8k.h @@ -19,11 +19,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define IEEE_FLOAT 1 -#undef TARGET_INT_BIT -#undef TARGET_LONG_BIT -#undef TARGET_SHORT_BIT -#undef TARGET_PTR_BIT - #define TARGET_SHORT_BIT 16 #define TARGET_INT_BIT 16 #define TARGET_LONG_BIT 32 |