aboutsummaryrefslogtreecommitdiff
path: root/gdb/mdebugread.c
diff options
context:
space:
mode:
authorMark Alexander <marka@cygnus>1997-03-22 04:40:03 +0000
committerMark Alexander <marka@cygnus>1997-03-22 04:40:03 +0000
commitc81a76b311a313707e80af5de287a11008fc72bc (patch)
treec652b707ee4b7218a2c6e756f55375fdb3dda613 /gdb/mdebugread.c
parent7cad1a894be0fce0f179275d89d575cc1e49a249 (diff)
downloadgdb-c81a76b311a313707e80af5de287a11008fc72bc.zip
gdb-c81a76b311a313707e80af5de287a11008fc72bc.tar.gz
gdb-c81a76b311a313707e80af5de287a11008fc72bc.tar.bz2
* mips-tdep.c (mips_push_arguments): On non-EABI architectures,
copy first two floating point arguments to general registers, so that MIPS16 functions will receive the arguments correctly. (mips_print_register): Print double registers correctly on little-endian hosts. (mips_extract_return_value): Return double values correctly on little-endian hosts. * mdebugread.c (parse_procedure): Adjust address of procedure relative to address in file descriptor record; this accounts for constant strings that may precede functions in the text section. Remove now-useless lowest_pdr_addr from argument list and all calls.
Diffstat (limited to 'gdb/mdebugread.c')
-rw-r--r--gdb/mdebugread.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c
index 8047798..1e9fe6d 100644
--- a/gdb/mdebugread.c
+++ b/gdb/mdebugread.c
@@ -1893,14 +1893,13 @@ upgrade_type (fd, tpp, tq, ax, bigend, sym_name)
to look for the function which contains the MIPS_EFI_SYMBOL_NAME symbol
in question, or NULL to use top_stack->cur_block. */
-static void parse_procedure PARAMS ((PDR *, struct symtab *, CORE_ADDR,
+static void parse_procedure PARAMS ((PDR *, struct symtab *,
struct partial_symtab *));
static void
-parse_procedure (pr, search_symtab, lowest_pdr_addr, pst)
+parse_procedure (pr, search_symtab, pst)
PDR *pr;
struct symtab *search_symtab;
- CORE_ADDR lowest_pdr_addr;
struct partial_symtab *pst;
{
struct symbol *s, *i;
@@ -2006,7 +2005,7 @@ parse_procedure (pr, search_symtab, lowest_pdr_addr, pst)
e = (struct mips_extra_func_info *) SYMBOL_VALUE (i);
e->pdr = *pr;
e->pdr.isym = (long) s;
- e->pdr.adr += pst->textlow - lowest_pdr_addr;
+ e->pdr.adr += cur_fdr->adr; /* PDR address is relative to FDR address */
/* Correct incorrect setjmp procedure descriptor from the library
to make backtrace through setjmp work. */
@@ -3372,7 +3371,7 @@ psymtab_to_symtab_1 (pst, filename)
pdr_in = pr_block;
pdr_in_end = pdr_in + fh->cpd;
for (; pdr_in < pdr_in_end; pdr_in++)
- parse_procedure (pdr_in, st, lowest_pdr_addr, pst);
+ parse_procedure (pdr_in, st, pst);
do_cleanups (old_chain);
}
@@ -3486,7 +3485,7 @@ psymtab_to_symtab_1 (pst, filename)
pdr_in = pr_block;
pdr_in_end = pdr_in + fh->cpd;
for (; pdr_in < pdr_in_end; pdr_in++)
- parse_procedure (pdr_in, 0, lowest_pdr_addr, pst);
+ parse_procedure (pdr_in, 0, pst);
do_cleanups (old_chain);
}