* corelow.c, exec.c, inftarg.c, m3-nat.c, op50-rom.c, procfs.c,
[deliverable/binutils-gdb.git] / gdb / partial-stab.h
index 30942351b687fb43deaa7206698c4afde63fad2b..ac79f014f1330aca971d05d89ebb55b914ed47c6 100644 (file)
@@ -1,5 +1,5 @@
 /* Shared code to pre-read a stab (dbx-style), when building a psymtab.
-   Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993
+   Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994
    Free Software Foundation, Inc.
 
 This file is part of GDB.
@@ -79,20 +79,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
          if ((namestring[0] == '-' && namestring[1] == 'l')
              || (namestring [(nsl = strlen (namestring)) - 1] == 'o'
                  && namestring [nsl - 2] == '.')
-#ifdef GDB_TARGET_IS_HPPA
-              /* some cooperation from gcc to get around ld stupidity */
-              || (namestring[0] == 'e' && STREQ (namestring, "end_file."))
-#endif
              )
            {
-#ifndef GDB_TARGET_IS_HPPA
              if (objfile -> ei.entry_point <  CUR_SYMBOL_VALUE &&
                  objfile -> ei.entry_point >= last_o_file_start)
                {
                  objfile -> ei.entry_file_lowpc = last_o_file_start;
                  objfile -> ei.entry_file_highpc = CUR_SYMBOL_VALUE;
                }
-#endif
              if (past_first_source_file && pst
                  /* The gould NP1 uses low values for .o and -l symbols
                     which are not the address.  */
@@ -217,6 +211,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
          SET_NAMESTRING();
 
+         /* Null name means end of .o file.  Don't start a new one. */
+         if (*namestring == '\000')
+           continue;
+
          /* Some compilers (including gcc) emit a pair of initial N_SOs.
             The first one is a directory name; the second the file name.
             If pst exists, is empty, and has a filename ending in '/',
@@ -463,7 +461,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
                      /* Check for and handle cretinous dbx symbol name
                         continuation!  */
-                     if (*p == '\\')
+                     if (*p == '\\' || (*p == '?' && p[1] == '\0'))
                        p = next_symbol_text ();
 
                      /* Point to the character after the name
@@ -496,10 +494,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
              continue;
 
            case 'f':
+             CUR_SYMBOL_VALUE += ANOFFSET (section_offsets, SECT_OFF_TEXT);
 #ifdef DBXREAD_ONLY
              /* Kludges for ELF/STABS with Sun ACC */
              last_function_name = namestring;
-             if (pst && pst->textlow == 0)
+             /* Do not fix textlow==0 for .o or NLM files, as 0 is a legit
+                value for the bottom of the text seg in those cases. */
+             if (pst && pst->textlow == 0 && !symfile_relocatable)
                pst->textlow = CUR_SYMBOL_VALUE;
 #if 0
              if (startup_file_end == 0)
@@ -517,10 +518,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
                 are put into the global psymtab like one would expect.
                 They're also in the minimal symbol table.  */
            case 'F':
+             CUR_SYMBOL_VALUE += ANOFFSET (section_offsets, SECT_OFF_TEXT);
 #ifdef DBXREAD_ONLY
              /* Kludges for ELF/STABS with Sun ACC */
              last_function_name = namestring;
-             if (pst && pst->textlow == 0)
+             /* Do not fix textlow==0 for .o or NLM files, as 0 is a legit
+                value for the bottom of the text seg in those cases. */
+             if (pst && pst->textlow == 0 && !symfile_relocatable)
                pst->textlow = CUR_SYMBOL_VALUE;
 #if 0
              if (startup_file_end == 0)
@@ -624,9 +628,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #endif
                  }
              }
-           else
-             error ("Invalid symbol data: \"repeated\" header file not previously seen, at symtab pos %d.",
-                    symnum);
          }
 #endif /* DBXREAD_ONLY */
          continue;
@@ -668,6 +669,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
          /* If we haven't found it yet, ignore it.  It's probably some
             new type we don't know about yet.  */
          complain (&unknown_symtype_complaint,
-                   local_hex_string ((unsigned long) CUR_SYMBOL_TYPE));
+                   local_hex_string (CUR_SYMBOL_TYPE));
          continue;
        }
This page took 0.024314 seconds and 4 git commands to generate.