* config/mips/tm-mips.h (FIX_CALL_DUMMY): Define to set up $25
authorMark Alexander <marka@cygnus>
Sun, 15 Dec 1996 04:59:33 +0000 (04:59 +0000)
committerMark Alexander <marka@cygnus>
Sun, 15 Dec 1996 04:59:33 +0000 (04:59 +0000)
correctly for PIC on Irix 5.

gdb/config/mips/tm-mips.h

index e9f1fe2e472ee4e8c62cb8faa47da29ad1a5ba16..10944298e3260d628a9a571b3b066a235ec2853c 100644 (file)
@@ -183,6 +183,7 @@ extern int in_sigtramp PARAMS ((CORE_ADDR, char *));
 #  define MIPS_LAST_ARG_REGNUM 7  /* old ABI uses R4 through R7 for args */
 #  define MIPS_NUM_ARG_REGS 4
 #endif
+#define T9_REGNUM 25           /* Contains address of callee in PIC */
 #define SP_REGNUM 29           /* Contains address of top of stack */
 #define RA_REGNUM 31           /* Contains return address value */
 #define PS_REGNUM 32           /* Contains processor status */
@@ -392,7 +393,10 @@ extern void mips_pop_frame PARAMS ((void));
 
 #define CALL_DUMMY_BREAKPOINT_OFFSET (0)
 
-#define FIX_CALL_DUMMY(dummyname, start_sp, fun, nargs, args, rettype, gcc_p)
+/* On Irix, $t9 ($25) contains the address of the callee (used for PIC).
+   It doesn't hurt to do this on other systems; $t9 will be ignored.  */
+#define FIX_CALL_DUMMY(dummyname, start_sp, fun, nargs, args, rettype, gcc_p) \
+    write_register(T9_REGNUM, fun)
 
 #define CALL_DUMMY_LOCATION AT_ENTRY_POINT