* config/i386/tm-i386.h: Add forward declaration of `struct value'.
authorMark Kettenis <kettenis@gnu.org>
Mon, 12 Jun 2000 01:44:35 +0000 (01:44 +0000)
committerMark Kettenis <kettenis@gnu.org>
Mon, 12 Jun 2000 01:44:35 +0000 (01:44 +0000)
(FIX_CALL_DUMMY): Redefined to call i386_fix_call_dummy.
(i386_fix_call_dummy): Add prototype.
* i386-tdep.c (i386_fix_call_dummy): New function based on the
code from the old FIX_CALL_DUMMY macro.

gdb/ChangeLog
gdb/config/i386/tm-i386.h
gdb/i386-tdep.c

index 3caff3324037a374878f7190d74ddd301d740ed9..790118adb60b89e96ade45c23479c99071c401c9 100644 (file)
@@ -1,3 +1,11 @@
+2000-06-12  Mark Kettenis  <kettenis@gnu.org>
+
+       * config/i386/tm-i386.h: Add forward declaration of `struct value'.
+       (FIX_CALL_DUMMY): Redefined to call i386_fix_call_dummy.
+       (i386_fix_call_dummy): Add prototype.
+       * i386-tdep.c (i386_fix_call_dummy): New function based on the
+       code from the old FIX_CALL_DUMMY macro.
+
 2000-06-12  Kevin Buettner  <kevinb@redhat.com>
 
        * procfs.c, remote.c: Eliminate use of PARAMS from these files.
index 918d62afeb1edcedd0ebd74e16bc462e27d2a61d..3507d822ef53c3021773adc16667d7f7ce0ec533 100644 (file)
 #ifndef TM_I386_H
 #define TM_I386_H 1
 
-/* Forward decl's for prototypes */
+/* Forward declarations for prototypes.  */
 struct frame_info;
 struct frame_saved_regs;
+struct value;
 struct type;
 
 #define TARGET_BYTE_ORDER LITTLE_ENDIAN
@@ -408,19 +409,13 @@ extern void i386_pop_frame (void);
 /* Insert the specified number of args and function address
    into a call sequence of the above form stored at DUMMYNAME.  */
 
-#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p)   \
-{ \
-       int from, to, delta, loc; \
-       loc = (int)(read_register (SP_REGNUM) - CALL_DUMMY_LENGTH); \
-       from = loc + 5; \
-       to = (int)(fun); \
-       delta = to - from; \
-       *((char *)(dummyname) + 1) = (delta & 0xff); \
-       *((char *)(dummyname) + 2) = ((delta >> 8) & 0xff); \
-       *((char *)(dummyname) + 3) = ((delta >> 16) & 0xff); \
-       *((char *)(dummyname) + 4) = ((delta >> 24) & 0xff); \
-}
+#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p) \
+  i386_fix_call_dummy (dummyname, pc, fun, nargs, args, type, gcc_p)
+extern void i386_fix_call_dummy (char *dummy, CORE_ADDR pc, CORE_ADDR fun,
+                                int nargs, struct value **args,
+                                struct type *type, int gcc_p);
 
+/* FIXME: kettenis/2000-06-12: These do not belong here.  */
 extern void print_387_control_word (unsigned int);
 extern void print_387_status_word (unsigned int);
 
index 4eddde5ef45a12c9e65852a1292b6e92cd2456f0..728d01296d1d2d208f14b781c23d286651486a7c 100644 (file)
@@ -638,6 +638,26 @@ i386_push_dummy_frame ()
   write_register (SP_REGNUM, sp);
 }
 
+/* Insert the (relative) function address into the call sequence
+   stored at DYMMY.  */
+
+void
+i386_fix_call_dummy (char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs,
+                    value_ptr *args, struct type *type, int gcc_p)
+{
+  int from, to, delta, loc;
+
+  loc = (int)(read_register (SP_REGNUM) - CALL_DUMMY_LENGTH);
+  from = loc + 5;
+  to = (int)(fun);
+  delta = to - from;
+
+  *((char *)(dummy) + 1) = (delta & 0xff);
+  *((char *)(dummy) + 2) = ((delta >> 8) & 0xff);
+  *((char *)(dummy) + 3) = ((delta >> 16) & 0xff);
+  *((char *)(dummy) + 4) = ((delta >> 24) & 0xff);
+}
+
 void
 i386_pop_frame ()
 {