* somread.c (som_symtab_read): Remove some commented out code and

updated related comments.  Do not set the minimal symbol table to
        mst_solib_trampoline for ST_ENTRY symbols with SS_LOCAL scope
        in a dynamic executable.
        * hppa-tdep.c (find_proc_framesize): Sanely handle the case
        where we are unable to find the minimal symbol for the given
        PC value.
This commit is contained in:
Jeff Law 2002-03-27 00:21:51 +00:00
parent b99d18333d
commit 3fa41cdbae
3 changed files with 25 additions and 22 deletions

View file

@ -1,3 +1,13 @@
2002-03-26 Jeff Law (law@redhat.com)
* somread.c (som_symtab_read): Remove some commented out code and
updated related comments. Do not set the minimal symbol table to
mst_solib_trampoline for ST_ENTRY symbols with SS_LOCAL scope
in a dynamic executable.
* hppa-tdep.c (find_proc_framesize): Sanely handle the case
where we are unable to find the minimal symbol for the given
PC value.
2002-03-25 Jeff Law (law@redhat.com)
* linux-proc.c (read_mapping): Scan up to end of line for filename.

View file

@ -747,7 +747,9 @@ find_proc_framesize (CORE_ADDR pc)
/* If Save_SP is set, and we're not in an interrupt or signal caller,
then we have a frame pointer. Use it. */
if (u->Save_SP && !pc_in_interrupt_handler (pc)
if (u->Save_SP
&& !pc_in_interrupt_handler (pc)
&& msym_us
&& !IN_SIGTRAMP (pc, SYMBOL_NAME (msym_us)))
return -1;

View file

@ -117,20 +117,13 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
can do the right thing for ST_ENTRY vs ST_CODE symbols).
There's nothing in the header which easily allows us to do
this. The only reliable way I know of is to check for the
existence of a $SHLIB_INFO$ section with a non-zero size. */
/* The code below is not a reliable way to check whether an
* executable is dynamic, so I commented it out - RT
* shlib_info = bfd_get_section_by_name (objfile->obfd, "$SHLIB_INFO$");
* if (shlib_info)
* dynamic = (bfd_section_size (objfile->obfd, shlib_info) != 0);
* else
* dynamic = 0;
*/
/* I replaced the code with a simple check for text offset not being
* zero. Still not 100% reliable, but a more reliable way of asking
* "is this a dynamic executable?" than the above. RT
*/
this.
This code used to rely upon the existence of a $SHLIB_INFO$
section to make this determination. HP claims that it is
more accurate to check for a nonzero text offset, but they
have not provided any information about why that test is
more accurate. */
dynamic = (text_offset != 0);
endbufp = buf + number_of_symbols;
@ -240,13 +233,11 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
case ST_ENTRY:
symname = bufp->name.n_strx + stringtab;
/* For a dynamic executable, ST_ENTRY symbols are
the stubs, while the ST_CODE symbol is the real
function. */
if (dynamic)
ms_type = mst_solib_trampoline;
else
ms_type = mst_file_text;
/* SS_LOCAL symbols in a shared library do not have
export stubs, so we do not have to worry about
using mst_file_text vs mst_solib_trampoline here like
we do for SS_UNIVERSAL and SS_EXTERNAL symbols above. */
ms_type = mst_file_text;
bufp->symbol_value += text_offset;
bufp->symbol_value = SMASH_TEXT_ADDRESS (bufp->symbol_value);
break;