* somread.c (som_symtab_read): Remove some commented out code and
authorJeff Law <law@redhat.com>
Wed, 27 Mar 2002 00:21:51 +0000 (00:21 +0000)
committerJeff Law <law@redhat.com>
Wed, 27 Mar 2002 00:21:51 +0000 (00:21 +0000)
        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.

gdb/ChangeLog
gdb/hppa-tdep.c
gdb/somread.c

index 0500e9475ca38bbb8da99c19383b124202fcd749..b3bdce5015eb9c5ec64dc6def9ca611a3812740f 100644 (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.
index c27d9641431c1284e2f583bf6406290be7ac249c..e8a68cf350828eb11b2a42c37fa3781385e0d24c 100644 (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;
 
index e4fec18ae624119c25a3c07c875eacdd2a26824a..38e35b2e7bbd5d2043fc4f67d4052a2ab18e0ab7 100644 (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;