[PATCH] AIX/i386 config tweaks
Mark Kettenis
kettenis@wins.uva.nl
Thu Mar 2 07:52:00 GMT 2000
FYI, I have checked in the following.
This is untested, but AIX/i386 was broken anyway, and in theory this
should fix it. The problem is that
i386-tdep.c:i386_extract_return_value() accessed the FP0_REGNUM in
GDB's register array, but since the reorganization of tm-i386.h last
fall, the register array wasn't large enough anymore.
It also clears the way for some changes I'm planning to make to
i386-tdep.c:i386_extract_return_value().
Mark
2000-03-02 Mark Kettenis <kettenis@gnu.org>
* config/i386/tm-i386aix.h (NUM_FPREGS, NUM_REGS, REGISTER_BYTES):
Override definitions to include the normal FPU registers.
(REGISTER_CONVERTIBLE, REGISTER_CONVERT_TO_VIRTUAL,
REGISTER_CONVERT_TO_RAW): Removed. The default definitions are
fine for AIX/i386.
(i387_to_double, double_to_i387): Remove prototypes.
Index: config/i386/tm-i386aix.h
===================================================================
RCS file: /cvs/src/src/gdb/config/i386/tm-i386aix.h,v
retrieving revision 1.1.1.2
diff -u -p -r1.1.1.2 tm-i386aix.h
--- config/i386/tm-i386aix.h 1999/07/07 20:13:03 1.1.1.2
+++ config/i386/tm-i386aix.h 2000/03/02 15:37:29
@@ -29,40 +29,27 @@
#ifndef I386
#define I386 1
#endif
+
+/* FIXME: kettenis/2000-03-02: This is used in
+ i386-tdep.c:i386_extract_return_value(), and will be remove once
+ I've fixed that. Meanwhile don't use it for any other purpose
+ please! */
#ifndef I386_AIX_TARGET
#define I386_AIX_TARGET 1
#endif
-
-/* Nonzero if register N requires conversion
- from raw format to virtual format. */
-
-#undef REGISTER_CONVERTIBLE
-#define REGISTER_CONVERTIBLE(N) \
- ((N < FP0_REGNUM) ? 0 : 1)
-
-/* Convert data from raw format for register REGNUM in buffer FROM
- to virtual format with type TYPE in buffer TO. */
-#undef REGISTER_CONVERT_TO_VIRTUAL
-#define REGISTER_CONVERT_TO_VIRTUAL(REGNUM,TYPE,FROM,TO) \
-{ \
- double val; \
- i387_to_double ((FROM), (char *)&val); \
- store_floating ((TO), TYPE_LENGTH (TYPE), val); \
-}
-extern void
-i387_to_double PARAMS ((char *, char *));
+/* AIX/i386 has FPU support. However, the native configuration (which
+ is the only supported configuration) doesn't make the FPU control
+ registers available. Override the appropriate symbols such that
+ only the normal FPU registers are included in GDB's register array. */
+
+#undef NUM_FPREGS
+#define NUM_FPREGS (8)
-/* Convert data from virtual format with type TYPE in buffer FROM
- to raw format for register REGNUM in buffer TO. */
+#undef NUM_REGS
+#define NUM_REGS (NUM_GREGS + NUM_FPREGS)
-#undef REGISTER_CONVERT_TO_RAW
-#define REGISTER_CONVERT_TO_RAW(TYPE,REGNUM,FROM,TO) \
-{ \
- double val = extract_floating ((FROM), TYPE_LENGTH (TYPE)); \
- double_to_i387((char *)&val, (TO)); \
-}
-extern void
-double_to_i387 PARAMS ((char *, char *));
+#undef REGISTER_BYTES
+#define REGISTER_BYTES (SIZEOF_GREGS + SIZEOF_FPU_REGS)
#endif /* TM_I386AIX_H */
More information about the Gdb-patches
mailing list