Add detection of IMB and IMBRange SWIs.
[deliverable/binutils-gdb.git] / gdb / mdebugread.c
index c3fae0a8f0dba062b23244fd49f1609b0e629c28..12b84553b0f1340dc1b2050b8e5074ba35010bbe 100644 (file)
@@ -1,5 +1,5 @@
 /* Read a symbol table in ECOFF format (Third-Eye).
-   Copyright 1986, 87, 89, 90, 91, 92, 93, 94, 95, 96, 1997
+   Copyright 1986, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 1998
    Free Software Foundation, Inc.
    Original version contributed by Alessandro Forin (af@cs.cmu.edu) at
    CMU.  Major work by Per Bothner, John Gilmore and Ian Lance Taylor
@@ -88,6 +88,7 @@ typedef struct mips_extra_func_info {
 #include "expression.h"
 #include "language.h"          /* Needed inside partial-stab.h */
 
+extern void _initialize_mdebugread PARAMS ((void));
 
 /* Provide a default mapping from a ecoff register number to a gdb REGNUM.  */
 #ifndef ECOFF_REG_TO_REGNUM
@@ -988,26 +989,28 @@ parse_symbol (sh, ax, ext_sh, bigend, section_offsets)
 
              case stMember:
                if (nfields == 0 && type_code == TYPE_CODE_UNDEF)
-                 /* If the type of the member is Nil (or Void),
-                    without qualifiers, assume the tag is an
-                    enumeration.
-                    Alpha cc -migrate enums are recognized by a zero
-                    index and a zero symbol value.
-                    DU 4.0 cc enums are recognized by a member type of
-                    btEnum without qualifiers and a zero symbol value.  */
-                 if (tsym.index == indexNil
-                     || (tsym.index == 0 && sh->value == 0))
-                   type_code = TYPE_CODE_ENUM;
-                 else
-                   {
-                     (*debug_swap->swap_tir_in) (bigend,
-                                                 &ax[tsym.index].a_ti,
-                                                 &tir);
-                     if ((tir.bt == btNil || tir.bt == btVoid
-                          || (tir.bt == btEnum && sh->value == 0))
-                         && tir.tq0 == tqNil)
-                       type_code = TYPE_CODE_ENUM;
-                   }
+                 {
+                   /* If the type of the member is Nil (or Void),
+                      without qualifiers, assume the tag is an
+                      enumeration.
+                      Alpha cc -migrate enums are recognized by a zero
+                      index and a zero symbol value.
+                      DU 4.0 cc enums are recognized by a member type of
+                      btEnum without qualifiers and a zero symbol value.  */
+                   if (tsym.index == indexNil
+                       || (tsym.index == 0 && sh->value == 0))
+                     type_code = TYPE_CODE_ENUM;
+                   else
+                     {
+                       (*debug_swap->swap_tir_in) (bigend,
+                                                   &ax[tsym.index].a_ti,
+                                                   &tir);
+                       if ((tir.bt == btNil || tir.bt == btVoid
+                            || (tir.bt == btEnum && sh->value == 0))
+                           && tir.tq0 == tqNil)
+                         type_code = TYPE_CODE_ENUM;
+                     }
+                 }
                nfields++;
                if (tsym.value > max_value)
                  max_value = tsym.value;
@@ -1090,10 +1093,12 @@ parse_symbol (sh, ax, ext_sh, bigend, section_offsets)
           here.) */
 
        if (type_code == TYPE_CODE_UNDEF)
-         if (nfields > 1 && max_value == 0)
-           type_code = TYPE_CODE_UNION;
-         else
-           type_code = TYPE_CODE_STRUCT;
+         {
+           if (nfields > 1 && max_value == 0)
+             type_code = TYPE_CODE_UNION;
+           else
+             type_code = TYPE_CODE_STRUCT;
+         }
 
        /* Create a new type or use the pending type.  */
        pend = is_pending_symbol (cur_fdr, ext_sh);
@@ -2749,11 +2754,12 @@ parse_partial_symbols (objfile, section_offsets)
                    /* Concatinate stabstring2 with stabstring1 */
                    if (stabstring
                        && stabstring != debug_info->ss + fh->issBase + sh.iss)
-                     stabstring = realloc (stabstring, len + len2 + 1);
+                     stabstring = xrealloc (stabstring, len + len2 + 1);
                    else
-                     stabstring = malloc (len + len2 + 1);
+                     stabstring = xmalloc (len + len2 + 1);
                    strcpy (stabstring, stabstring1);
                    strcpy (stabstring + len, stabstring2);
+                   len += len2;
                  }
 
 #define SET_NAMESTRING() \
This page took 0.024831 seconds and 4 git commands to generate.