* stabsread.c (resolve_symbol_reference): Return 1 on success, 0 on
authorStu Grossman <grossman@cygnus>
Wed, 16 Sep 1998 21:59:01 +0000 (21:59 +0000)
committerStu Grossman <grossman@cygnus>
Wed, 16 Sep 1998 21:59:01 +0000 (21:59 +0000)
failure.
* (define_symbol):  Check return value from resolve_symbol_reference,
and drop symbol if it fails.

gdb/ChangeLog
gdb/stabsread.c

index 3712db95ad513892ed82e2e286aa92394e34a307..e7f0f8d8a2c9d584c14a1d11d8584cf18bdc8564 100644 (file)
@@ -1,3 +1,26 @@
+Wed Sep 16 14:57:14 1998  Stu Grossman  <grossman@babylon-5.cygnus.com>
+
+       * stabsread.c (resolve_symbol_reference):  Return 1 on success, 0 on
+       failure.
+       * (define_symbol):  Check return value from resolve_symbol_reference,
+       and drop symbol if it fails.
+
+Tue Sep 15 15:24:16 1998  Stu Grossman  <grossman@fencer.cygnus.com>
+
+       * stabsread.c:  Make all complaints static.
+       * Fix formatting of live range splitting code.
+       * (resolve_symbol_reference define_symbol resolve_live_range):  Change
+       errors to complaints so that bad live range symbols won't abort the
+       entire symbol table.  Handle errors by aborting just the current
+       symbol.
+       * (ref_init):  Goes away.  Folded into ref_add().
+       * (REF_MAP_SIZE):  Put parens around parameter so that args like
+       `1 + 2' get handled correctly (yes, this was a real bug).
+       * (ref_add):  Remove check for allocation failures.  Not necessary
+       when using xrealloc().  Fix pointer arithmetic problem when clearing
+       memory.  This and the previous patch prevent random SEGV's when there
+       are lots of live range symbols.
+       
 Tue Sep 15 14:02:01 1998  Nick Clifton  <nickc@cygnus.com>
 
        * remote-rdi.c: Prevent multiple attempts to close the remote
index 4e48280988870512313399cc58feab70e34f77cb..f1575ade9665b9d8342ae3c20d9d23fe56e83821 100644 (file)
@@ -1044,7 +1044,7 @@ resolve_cfront_continuation (objfile, sym, p)
 
 
 /* This routine fixes up symbol references/aliases to point to the original
-   symbol definition.  */
+   symbol definition.  Returns 0 on failure, non-zero on success.  */
 
 static int
 resolve_symbol_reference (objfile, sym, p)
@@ -1133,8 +1133,8 @@ resolve_symbol_reference (objfile, sym, p)
 
       /* Get to the end of the list.  */
       for (temp = SYMBOL_ALIASES (ref_sym);
-          temp->next; 
-          temp = temp->next);
+          temp->next;
+          temp = temp->next)
        ;
       temp->next = alias;
     }
@@ -1146,7 +1146,7 @@ resolve_symbol_reference (objfile, sym, p)
    SYMBOL_NAME (sym) = SYMBOL_NAME (ref_sym);
 
   /* Done!  */
-  return 0;  
+  return 1;
 }
 
 /* Structure for storing pointers to reference definitions for fast lookup 
@@ -1392,7 +1392,8 @@ define_symbol (valu, string, desc, type, objfile)
       if (refnum >= 0)
          ref_add (refnum, sym, string, SYMBOL_VALUE (sym));
       else
-       resolve_symbol_reference (objfile, sym, string);
+       if (!resolve_symbol_reference (objfile, sym, string))
+         return NULL;
 
       /* S..P contains the name of the symbol.  We need to store
         the correct name into SYMBOL_NAME.  */