aboutsummaryrefslogtreecommitdiff
path: root/gdb/rs6000-tdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/rs6000-tdep.c')
-rw-r--r--gdb/rs6000-tdep.c79
1 files changed, 38 insertions, 41 deletions
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index e715399..30702c6 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -26,11 +26,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "gdbcore.h"
#include "symfile.h"
#include "objfiles.h"
-
#include "xcoffsolib.h"
-#include <a.out.h>
-
extern struct obstack frame_cache_obstack;
extern int errno;
@@ -49,19 +46,16 @@ static struct sstep_breaks {
/* Static function prototypes */
-static CORE_ADDR
-find_toc_address PARAMS ((CORE_ADDR pc));
+static CORE_ADDR find_toc_address PARAMS ((CORE_ADDR pc));
-static CORE_ADDR
-branch_dest PARAMS ((int opcode, int instr, CORE_ADDR pc, CORE_ADDR safety));
+static CORE_ADDR branch_dest PARAMS ((int opcode, int instr, CORE_ADDR pc,
+ CORE_ADDR safety));
-static void
-frame_get_cache_fsr PARAMS ((struct frame_info *fi,
- struct rs6000_framedata *fdatap));
+static void frame_get_cache_fsr PARAMS ((struct frame_info *fi,
+ struct rs6000_framedata *fdatap));
+
+/* Calculate the destination of a branch/jump. Return -1 if not a branch. */
-/*
- * Calculate the destination of a branch/jump. Return -1 if not a branch.
- */
static CORE_ADDR
branch_dest (opcode, instr, pc, safety)
int opcode;
@@ -641,12 +635,12 @@ pop_frame ()
its argumets will be passed by gdb. */
void
-fix_call_dummy(dummyname, pc, fun, nargs, type)
- char *dummyname;
- CORE_ADDR pc;
- CORE_ADDR fun;
- int nargs; /* not used */
- int type; /* not used */
+fix_call_dummy (dummyname, pc, fun, nargs, type)
+ char *dummyname;
+ CORE_ADDR pc;
+ CORE_ADDR fun;
+ int nargs; /* not used */
+ int type; /* not used */
{
#define TOC_ADDR_OFFSET 20
#define TARGET_ADDR_OFFSET 28
@@ -675,12 +669,13 @@ fix_call_dummy(dummyname, pc, fun, nargs, type)
*(int*)((char*)dummyname + TARGET_ADDR_OFFSET+4) = ii;
}
-/* Pass the arguments in either registers, or in the stack. In RS6000, the first
- eight words of the argument list (that might be less than eight parameters if
- some parameters occupy more than one word) are passed in r3..r11 registers.
- float and double parameters are passed in fpr's, in addition to that. Rest of
- the parameters if any are passed in user stack. There might be cases in which
- half of the parameter is copied into registers, the other half is pushed into
+/* Pass the arguments in either registers, or in the stack. In RS6000,
+ the first eight words of the argument list (that might be less than
+ eight parameters if some parameters occupy more than one word) are
+ passed in r3..r11 registers. float and double parameters are
+ passed in fpr's, in addition to that. Rest of the parameters if any
+ are passed in user stack. There might be cases in which half of the
+ parameter is copied into registers, the other half is pushed into
stack.
If the function is returning a structure, then the return address is passed
@@ -689,11 +684,11 @@ fix_call_dummy(dummyname, pc, fun, nargs, type)
CORE_ADDR
push_arguments (nargs, args, sp, struct_return, struct_addr)
- int nargs;
- value_ptr *args;
- CORE_ADDR sp;
- int struct_return;
- CORE_ADDR struct_addr;
+ int nargs;
+ value_ptr *args;
+ CORE_ADDR sp;
+ int struct_return;
+ CORE_ADDR struct_addr;
{
int ii, len;
int argno; /* current argument number */
@@ -853,9 +848,9 @@ ran_out_of_registers_for_arguments:
void
extract_return_value (valtype, regbuf, valbuf)
- struct type *valtype;
- char regbuf[REGISTER_BYTES];
- char *valbuf;
+ struct type *valtype;
+ char regbuf[REGISTER_BYTES];
+ char *valbuf;
{
int offset = 0;
@@ -905,7 +900,7 @@ CORE_ADDR rs6000_struct_return_address;
CORE_ADDR
skip_trampoline_code (pc)
-CORE_ADDR pc;
+ CORE_ADDR pc;
{
register unsigned int ii, op;
CORE_ADDR solib_target_pc;
@@ -936,8 +931,8 @@ CORE_ADDR pc;
return pc;
}
-
/* Determines whether the function FI has a frame on the stack or not. */
+
int
frameless_function_invocation (fi)
struct frame_info *fi;
@@ -964,6 +959,7 @@ frameless_function_invocation (fi)
}
/* Return the PC saved in a frame */
+
unsigned long
frame_saved_pc (fi)
struct frame_info *fi;
@@ -1212,12 +1208,13 @@ add_text_to_loadinfo (textaddr, dataaddr)
}
-/* Note that this assumes that the "textorg" and "dataorg" elements
- of a member of this array are correlated with the "toc_offset"
- element of the same member. This is taken care of because the loops
- which assign the former (in xcoff_relocate_symtab or xcoff_relocate_core)
- and the latter (in scan_xcoff_symtab, via vmap_symtab, in vmap_ldinfo
- or xcoff_relocate_core) traverse the same objfiles in the same order. */
+/* Note that this assumes that the "textorg" and "dataorg" elements of
+ a member of this array are correlated with the "toc_offset" element
+ of the same member. This is taken care of because the loops which
+ assign the former (in xcoff_relocate_symtab or xcoff_relocate_core)
+ and the latter (in scan_xcoff_symtab, via vmap_symtab, in
+ vmap_ldinfo or xcoff_relocate_core) traverse the same objfiles in
+ the same order. */
static CORE_ADDR
find_toc_address (pc)