* c-exp.y (parse_number): Change high_bit to unsigned.
authorFred Fish <fnf@specifix.com>
Wed, 3 Mar 1993 02:09:02 +0000 (02:09 +0000)
committerFred Fish <fnf@specifix.com>
Wed, 3 Mar 1993 02:09:02 +0000 (02:09 +0000)
* demangle.c:  Change all references to cfront to ARM, since the
actual algorithm is the one specified in the Annotated Reference
Manual.  This was confusing users into thinking that full cfront
support was implemented.
* dwarfread.c (CFRONT_PRODUCER):  Remove, was never really used.
* eval.c (evaluate_subexp):  For STRUCTOP_PTR pass the arg type
directly to lookup_struct_elt_type, which will do the
dereferencing itself.
* gdbtypes.c (lookup_struct_elt_type):  Expand comments.  Fix
NULL dereferencing bug for unnamed structs, comment out
questionable code.

gdb/ChangeLog
gdb/NEWS
gdb/c-exp.y
gdb/demangle.c
gdb/dwarfread.c
gdb/gdbtypes.c

index ebb3229e901b21368fcbac67be4e2b01297d2e19..d00469dbb42e44695872eb64c397829945c1f756 100644 (file)
@@ -1,3 +1,18 @@
+Tue Mar  2 17:57:56 1993  Fred Fish  (fnf@cygnus.com)
+
+       * c-exp.y (parse_number):  Change high_bit to unsigned.
+       * demangle.c:  Change all references to cfront to ARM, since the
+       actual algorithm is the one specified in the Annotated Reference
+       Manual.  This was confusing users into thinking that full cfront
+       support was implemented.
+       * dwarfread.c (CFRONT_PRODUCER):  Remove, was never really used.
+       * eval.c (evaluate_subexp):  For STRUCTOP_PTR pass the arg type
+       directly to lookup_struct_elt_type, which will do the
+       dereferencing itself.
+       * gdbtypes.c (lookup_struct_elt_type):  Expand comments.  Fix
+       NULL dereferencing bug for unnamed structs, comment out
+       questionable code.
+       
 Mon Mar  1 17:54:41 1993  John Gilmore  (gnu@cygnus.com)
 
        * coffread.c (process_coff_symbol):  Change PCC argument correction
index a6cde82cbcc2d940c818664a0b5d775c1eb21787..86d0ad2feb90a5587d9c004e0ba58a282018a34f 100644 (file)
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -6,6 +6,12 @@
 (This is a prototype to remind us of things that should be announced
 in the next release...)
 
+'Cfront' style demangling has had its name changed to 'ARM' style, to
+emphasize that it was written from the specifications in the Annotated
+Reference Manual, not to be compatible with AT&T cfront.  Despite disclaimers,
+it still generated too much confusion with users attempting to use gdb with
+AT&T cfront.
+
 H8/300 simulator
 H8/500 simulator (probably by the next release)
 Z8000 family simulator
index 981634a0eb1388fbb93797a2b6f2b9699e012f51..f8c87c4967a1c41e8418edb9a0da094fd5fc8575 100644 (file)
@@ -962,7 +962,7 @@ parse_number (p, len, parsed_float, putithere)
   register int base = input_radix;
   int unsigned_p = 0;
   int long_p = 0;
-  LONGEST high_bit;
+  unsigned LONGEST high_bit;
   struct type *signed_type;
   struct type *unsigned_type;
 
@@ -1047,13 +1047,13 @@ parse_number (p, len, parsed_float, putithere)
 
     if ((TARGET_INT_BIT != TARGET_LONG_BIT && (n >> TARGET_INT_BIT)) || long_p)
       {
-         high_bit = ((LONGEST)1) << (TARGET_LONG_BIT-1);
+         high_bit = ((unsigned LONGEST)1) << (TARGET_LONG_BIT-1);
         unsigned_type = builtin_type_unsigned_long;
         signed_type = builtin_type_long;
       }
     else 
       {
-        high_bit = ((LONGEST)1) << (TARGET_INT_BIT-1);
+        high_bit = ((unsigned LONGEST)1) << (TARGET_INT_BIT-1);
         unsigned_type = builtin_type_unsigned_int;
         signed_type = builtin_type_int;
       }    
index 45e130c3220e5ddb410e8f340519a03a94d7fc85..cdf7b40209b89c2079498599840b268543c38cdb 100644 (file)
@@ -31,7 +31,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* Select the default C++ demangling style to use.  The default is "auto",
    which allows gdb to attempt to pick an appropriate demangling style for
    the executable it has loaded.  It can be set to a specific style ("gnu",
-   "lucid", "cfront", etc.) in which case gdb will never attempt to do auto
+   "lucid", "arm", etc.) in which case gdb will never attempt to do auto
    selection of the style unless you do an explicit "set demangle auto".
    To select one of these as the default, set DEFAULT_DEMANGLING_STYLE in
    the appropriate target configuration file. */
@@ -64,9 +64,9 @@ static const struct demangler
   {LUCID_DEMANGLING_STYLE_STRING,
      lucid_demangling,
      "Lucid (lcc) style demangling"},
-  {CFRONT_DEMANGLING_STYLE_STRING,
-     cfront_demangling,
-     "ARM (cfront) style demangling"},
+  {ARM_DEMANGLING_STYLE_STRING,
+     arm_demangling,
+     "ARM style demangling"},
   {NULL, unknown_demangling, NULL}
 };
 
index c5168007701a6b66b4d615d130238b6a28c84335..b049fcd8ef733440e4d894d6201b06070531ba60 100644 (file)
@@ -197,10 +197,6 @@ typedef unsigned int DIE_REF;      /* Reference to a DIE */
 #define LCC_PRODUCER "NCR C/C++"
 #endif
 
-#ifndef CFRONT_PRODUCER
-#define CFRONT_PRODUCER "CFRONT "      /* A wild a** guess... */
-#endif
-
 /* start-sanitize-chill */
 #ifndef CHILL_PRODUCER
 #define CHILL_PRODUCER "GNU Chill "
@@ -1916,7 +1912,6 @@ handle_producer (producer)
      is not auto.  We also leave the demangling style alone if we find a
      gcc (cc1) producer, as opposed to a g++ (cc1plus) producer. */
 
-#if 1 /* Works, but is experimental.  -fnf */
   if (AUTO_DEMANGLING)
     {
       if (STREQN (producer, GPLUS_PRODUCER, strlen (GPLUS_PRODUCER)))
@@ -1927,12 +1922,7 @@ handle_producer (producer)
        {
          set_demangling_style (LUCID_DEMANGLING_STYLE_STRING);
        }
-      else if (STREQN (producer, CFRONT_PRODUCER, strlen (CFRONT_PRODUCER)))
-       {
-         set_demangling_style (CFRONT_DEMANGLING_STYLE_STRING);
-       }
     }
-#endif
 }
 
 
index 4be115d4fe470fc08973f8719a597fdf12731e0c..9bcdec00467a0e30a7f5e73cfcb1096fc84cad58 100644 (file)
@@ -691,6 +691,12 @@ lookup_template_type (name, type, block)
 }
 
 /* Given a type TYPE, lookup the type of the component of type named NAME.  
+
+   TYPE can be either a struct or union, or a pointer or reference to a struct or
+   union.  If it is a pointer or reference, its target type is automatically used.
+   Thus '.' and '->' are interchangable, as specified for the definitions of the
+   expression element types STRUCTOP_STRUCT and STRUCTOP_PTR.
+
    If NOERR is nonzero, return zero if NAME is not suitably defined.
    If NAME is the name of a baseclass type, return that type.  */
 
@@ -701,6 +707,7 @@ lookup_struct_elt_type (type, name, noerr)
     int noerr;
 {
   int i;
+  char *typename;
 
   if (TYPE_CODE (type) == TYPE_CODE_PTR ||
       TYPE_CODE (type) == TYPE_CODE_REF)
@@ -718,8 +725,15 @@ lookup_struct_elt_type (type, name, noerr)
 
   check_stub_type (type);
 
-  if (STREQ (type_name_no_tag (type), name))
+#if 0
+  /* FIXME:  This change put in by Michael seems incorrect for the case where
+     the structure tag name is the same as the member name.  I.E. when doing
+     "ptype bell->bar" for "struct foo { int bar; int foo; } bell;"
+     Disabled by fnf. */
+  typename = type_name_no_tag (type);
+  if (typename != NULL && STREQ (typename, name))
     return type;
+#endif
 
   for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
     {