* mipsread.c (parse_type): Don't complain() if we guessed struct
authorJim Kingdon <jkingdon@engr.sgi.com>
Sat, 18 Sep 1993 21:11:25 +0000 (21:11 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Sat, 18 Sep 1993 21:11:25 +0000 (21:11 +0000)
and it was a union, or vice versa.

gdb/ChangeLog
gdb/mipsread.c

index 2a174a59eb70277f243f10c9b913eb2211d8d630..6aecd17f2a54ddb6f06173f28135891106473798 100644 (file)
@@ -1,5 +1,8 @@
 Sat Sep 18 10:13:18 1993  Jim Kingdon  (kingdon@poseidon.cygnus.com)
 
+       * mipsread.c (parse_type): Don't complain() if we guessed struct
+       and it was a union, or vice versa.
+
        * defs.h (make_cleanup): Change PTR to void * when inside PARAMS.
 
        Some of the following is in #ifdef CALL_DUMMY_BREAKPOINT_OFFSET.
index e380150b8ff76e9cf1baa0665b799802310abb74..1c70aa7e142e341717652e53bcffa9d6b04ab7c4 100644 (file)
@@ -1466,12 +1466,22 @@ parse_type (fd, ax, bs, bigend, sym_name)
        {
 
          /* Usually, TYPE_CODE(tp) is already type_code.  The main
-            exception is if we guessed wrong re struct/union/enum. */
-         if (TYPE_CODE (tp) != type_code)
+            exception is if we guessed wrong re struct/union/enum.
+            But for struct vs. union a wrong guess is harmless, so
+            don't complain().  */
+         if ((TYPE_CODE (tp) == TYPE_CODE_ENUM
+              && type_code != TYPE_CODE_ENUM)
+             || (TYPE_CODE (tp) != TYPE_CODE_ENUM
+                 && type_code == TYPE_CODE_ENUM))
            {
              complain (&bad_tag_guess_complaint, sym_name);
+           }
+
+         if (TYPE_CODE (tp) != type_code)
+           {
              TYPE_CODE (tp) = type_code;
            }
+
          /* Do not set the tag name if it is a compiler generated tag name
              (.Fxx or .xxfake or empty) for unnamed struct/union/enums.  */
          if (name[0] == '.' || name[0] == '\0')