aboutsummaryrefslogtreecommitdiff
path: root/gdb/config
diff options
context:
space:
mode:
authorJim Kingdon <jkingdon@engr.sgi.com>1993-12-25 18:44:22 +0000
committerJim Kingdon <jkingdon@engr.sgi.com>1993-12-25 18:44:22 +0000
commit04f566a356078edd7887a4a4de0239a1148c2544 (patch)
tree234b2f579eeae3486bed8ff98afd57b7690b01c5 /gdb/config
parent504ccfd78814b535f3f67cb99c00514f5dbc8de5 (diff)
downloadgdb-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.h58
-rw-r--r--gdb/config/h8300/tm-h8300.h4
-rw-r--r--gdb/config/h8500/tm-h8500.h5
-rw-r--r--gdb/config/z8k/tm-z8k.h5
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