mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-27 09:38:57 +00:00
* dbxread.c (process_one_symbol): Handle stabs-in-som just like
stabs-in-elf.
(pastab_build_psymtabs): Likewise.
* hppa-tdep.c: Change all comments to reference %r3 or frame pointer
rather than %r4.
(frame_chain, skip_prologue, dig_rp_from_stack): Handle %r3 as the
frame pointer.
* config/pa/tm-hppa.h (FP_REGNUM): Define as %r3.
(FIND_FRAME_SAVED_REGS): Handle %r3 as frame pointer.
(CALL_DUMMY): Likewise.
This commit is contained in:
@@ -1545,7 +1545,8 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
|
||||
since it would be silly to do things differently from Solaris), and
|
||||
false for SunOS4 and other a.out file formats. */
|
||||
block_address_function_relative =
|
||||
0 == strncmp (bfd_get_target (objfile->obfd), "elf", 3);
|
||||
(0 == strncmp (bfd_get_target (objfile->obfd), "elf", 3))
|
||||
|| (0 == strncmp (bfd_get_target (objfile->obfd), "som", 3));
|
||||
|
||||
if (!block_address_function_relative)
|
||||
/* N_LBRAC, N_RBRAC and N_SLINE entries are not relative to the
|
||||
@@ -1634,33 +1635,38 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
|
||||
if (!VARIABLES_INSIDE_BLOCK(desc, processing_gcc_compilation))
|
||||
local_symbols = new->locals;
|
||||
|
||||
/* If this is not the outermost LBRAC...RBRAC pair in the
|
||||
function, its local symbols preceded it, and are the ones
|
||||
just recovered from the context stack. Defined the block for them.
|
||||
|
||||
If this is the outermost LBRAC...RBRAC pair, there is no
|
||||
need to do anything; leave the symbols that preceded it
|
||||
to be attached to the function's own block. However, if
|
||||
it is so, we need to indicate that we just moved outside
|
||||
of the function. */
|
||||
if (local_symbols
|
||||
&& (context_stack_depth
|
||||
> !VARIABLES_INSIDE_BLOCK(desc, processing_gcc_compilation)))
|
||||
if (context_stack_depth
|
||||
> !VARIABLES_INSIDE_BLOCK(desc, processing_gcc_compilation))
|
||||
{
|
||||
/* FIXME Muzzle a compiler bug that makes end < start. */
|
||||
if (new->start_addr > valu)
|
||||
/* This is not the outermost LBRAC...RBRAC pair in the function,
|
||||
its local symbols preceded it, and are the ones just recovered
|
||||
from the context stack. Define the block for them (but don't
|
||||
bother if the block contains no symbols. Should we complain
|
||||
on blocks without symbols? I can't think of any useful purpose
|
||||
for them). */
|
||||
if (local_symbols != NULL)
|
||||
{
|
||||
complain (&lbrac_rbrac_complaint);
|
||||
new->start_addr = valu;
|
||||
/* Muzzle a compiler bug that makes end < start. (which
|
||||
compilers? Is this ever harmful?). */
|
||||
if (new->start_addr > valu)
|
||||
{
|
||||
complain (&lbrac_rbrac_complaint);
|
||||
new->start_addr = valu;
|
||||
}
|
||||
/* Make a block for the local symbols within. */
|
||||
finish_block (0, &local_symbols, new->old_blocks,
|
||||
new->start_addr, valu, objfile);
|
||||
}
|
||||
/* Make a block for the local symbols within. */
|
||||
finish_block (0, &local_symbols, new->old_blocks,
|
||||
new->start_addr, valu, objfile);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* This is the outermost LBRAC...RBRAC pair. There is no
|
||||
need to do anything; leave the symbols that preceded it
|
||||
to be attached to the function's own block. We need to
|
||||
indicate that we just moved outside of the function. */
|
||||
within_function = 0;
|
||||
}
|
||||
|
||||
if (VARIABLES_INSIDE_BLOCK(desc, processing_gcc_compilation))
|
||||
/* Now pop locals of block just finished. */
|
||||
local_symbols = new->locals;
|
||||
@@ -2157,6 +2163,9 @@ pastab_build_psymtabs (objfile, section_offsets, mainline)
|
||||
free_header_files ();
|
||||
init_header_files ();
|
||||
|
||||
/* This is needed to debug objects assembled with gas2. */
|
||||
processing_acc_compilation = 1;
|
||||
|
||||
/* In a PA file, we've already installed the minimal symbols that came
|
||||
from the PA (non-stab) symbol table, so always act like an
|
||||
incremental load here. */
|
||||
|
||||
Reference in New Issue
Block a user