* partial-stab.h: New complaint: function_outside_compilation_unit.
authorJim Blandy <jimb@codesourcery.com>
Fri, 1 Jun 2001 20:37:11 +0000 (20:37 +0000)
committerJim Blandy <jimb@codesourcery.com>
Fri, 1 Jun 2001 20:37:11 +0000 (20:37 +0000)
(case N_FUN: case 'f':, case N_FUN: case 'F':): If pst is zero,
complain, and don't try to set pst's start address.

gdb/ChangeLog
gdb/partial-stab.h

index 0667b8b21dca9e0efc9a1fa3c73c18540d3f7389..f5a7ac4c9e82bf2b07cefd9c419509b74eb0a3fd 100644 (file)
@@ -1,3 +1,9 @@
+2001-06-01  Jim Blandy  <jimb@redhat.com>
+
+       * partial-stab.h: New complaint: function_outside_compilation_unit.
+       (case N_FUN: case 'f':, case N_FUN: case 'F':): If pst is zero,
+       complain, and don't try to set pst's start address.
+
 2001-05-31  Kevin Buettner  <kevinb@redhat.com>
 
        * ia64-linux-tdep.c (IA64_LINUX_SIGCONTEXT_OFFSET):  Revise to
index fcfb2ef7c18c10a0fe919bb4f34995bf754bed23..d6c6fd51ebcf4237a3693f6063f8b8ef7ed87a42 100644 (file)
@@ -40,6 +40,9 @@
 
 switch (CUR_SYMBOL_TYPE)
   {
+    static struct complaint function_outside_compilation_unit = {
+      "function `%s' appears to be defined outside of all compilation units", 0, 0
+    };
     char *p;
     /*
      * Standard, external, non-debugger, symbols
@@ -576,6 +579,14 @@ switch (CUR_SYMBOL_TYPE)
        continue;
 
       case 'f':
+        if (! pst)
+          {
+            int name_len = p - namestring;
+            char *name = xmalloc (name_len + 1);
+            memcpy (name, namestring, name_len);
+            name[name_len] = '\0';
+            complain (&function_outside_compilation_unit, name);
+          }
        CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
 #ifdef DBXREAD_ONLY
        /* Kludges for ELF/STABS with Sun ACC */
@@ -600,10 +611,12 @@ switch (CUR_SYMBOL_TYPE)
           the bounds created by N_SO symbols.  If that's the case
           use the address of this function as the low bound for
           the partial symbol table.  */
-       if (textlow_not_set
-           || (pst && CUR_SYMBOL_VALUE < pst->textlow
-               && CUR_SYMBOL_VALUE
-               != ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))))
+       if (pst
+            && (textlow_not_set
+                || (CUR_SYMBOL_VALUE < pst->textlow
+                    && (CUR_SYMBOL_VALUE
+                        != ANOFFSET (objfile->section_offsets,
+                                     SECT_OFF_TEXT (objfile))))))
          {
            pst->textlow = CUR_SYMBOL_VALUE;
            textlow_not_set = 0;
@@ -620,6 +633,14 @@ switch (CUR_SYMBOL_TYPE)
           are put into the global psymtab like one would expect.
           They're also in the minimal symbol table.  */
       case 'F':
+        if (! pst)
+          {
+            int name_len = p - namestring;
+            char *name = xmalloc (name_len + 1);
+            memcpy (name, namestring, name_len);
+            name[name_len] = '\0';
+            complain (&function_outside_compilation_unit, name);
+          }
        CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
 #ifdef DBXREAD_ONLY
        /* Kludges for ELF/STABS with Sun ACC */
@@ -647,10 +668,12 @@ switch (CUR_SYMBOL_TYPE)
           the bounds created by N_SO symbols.  If that's the case
           use the address of this function as the low bound for
           the partial symbol table.  */
-       if (textlow_not_set
-           || (pst && CUR_SYMBOL_VALUE < pst->textlow
-               && CUR_SYMBOL_VALUE
-               != ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))))
+       if (pst
+            && (textlow_not_set
+                || (CUR_SYMBOL_VALUE < pst->textlow
+                    && (CUR_SYMBOL_VALUE
+                        != ANOFFSET (objfile->section_offsets,
+                                     SECT_OFF_TEXT (objfile))))))
          {
            pst->textlow = CUR_SYMBOL_VALUE;
            textlow_not_set = 0;