dwarf2out.c (dwarf2out_finish): Don't abort because of orphan DIEs if there were...
authorJason Merrill <jason@redhat.com>
Thu, 15 Nov 2001 17:55:28 +0000 (12:55 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 15 Nov 2001 17:55:28 +0000 (12:55 -0500)
        * dwarf2out.c (dwarf2out_finish): Don't abort because of orphan
        DIEs if there were errors in the source.

        * config/alpha/alpha-interix.h, config/alpha/elf.h,
        config/arm/coff.h, config/i386/djgpp.h, config/i386/i386.c,
        config/i386/i386.h, config/i386/sco5.h, config/i960/i960-coff.h,
        config/m68k/coff.h, config/m88k/m88k.h, config/m88k/m88k.c,
        config/pa/pa64-hpux.h, config/sh/sh.h, config/sparc/litecoff.h,
        config/elfos.h, config/lynx.h, config/netware.h,
        config/m68hc11/m68hc11.h, config/mcore/mcore-pe.h,
        config/s390/linux64.h: Remove definitions of INT_ASM_OP, change
        uses to use ASM_LONG.

From-SVN: r47066

23 files changed:
gcc/ChangeLog
gcc/config/alpha/alpha-interix.h
gcc/config/alpha/elf.h
gcc/config/arm/coff.h
gcc/config/elfos.h
gcc/config/i386/djgpp.h
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/config/i386/sco5.h
gcc/config/i386/scodbx.h [new file with mode: 0644]
gcc/config/i960/i960-coff.h
gcc/config/lynx.h
gcc/config/m68hc11/m68hc11.h
gcc/config/m68k/coff.h
gcc/config/m88k/m88k.c
gcc/config/m88k/m88k.h
gcc/config/mcore/mcore-pe.h
gcc/config/netware.h
gcc/config/pa/pa64-hpux.h
gcc/config/s390/linux64.h
gcc/config/sh/sh.h
gcc/config/sparc/litecoff.h
gcc/dwarf2out.c

index fa194a23ab26002b2a429fbd8445de60d48f5f5e..3a97d8938e02146ca140e5f991e1a17eea69aaf1 100644 (file)
@@ -1,3 +1,18 @@
+2001-11-15  Jason Merrill  <jason@redhat.com>
+
+       * dwarf2out.c (dwarf2out_finish): Don't abort because of orphan
+       DIEs if there were errors in the source.
+
+       * config/alpha/alpha-interix.h, config/alpha/elf.h,
+       config/arm/coff.h, config/i386/djgpp.h, config/i386/i386.c,
+       config/i386/i386.h, config/i386/sco5.h, config/i960/i960-coff.h,
+       config/m68k/coff.h, config/m88k/m88k.h, config/m88k/m88k.c,
+       config/pa/pa64-hpux.h, config/sh/sh.h, config/sparc/litecoff.h,
+       config/elfos.h, config/lynx.h, config/netware.h,
+       config/m68hc11/m68hc11.h, config/mcore/mcore-pe.h,
+       config/s390/linux64.h: Remove definitions of INT_ASM_OP, change
+       uses to use ASM_LONG.
+
 2001-11-15  Alan Matsuoka  <alanm@redhat.com>
 
        * gensupport.c  process_include : Change call to alloca to
index 788eac4f1c020a581091e1b8282841d93eb77fc5..4dc21868dd45f5de86d4488071187e9175fcdba2 100644 (file)
@@ -126,8 +126,6 @@ const_section ()                                                    \
     }                                                                  \
 }
 
-#define INT_ASM_OP             "\t.long\t"
-
 /* The linker will take care of this, and having them causes problems with
    ld -r (specifically -rU).  */
 #define CTOR_LISTS_DEFINED_EXTERNALLY 1
index 4144c838376632214ba2cf135f32aec786ad633b..7c8822916724ce5caa405f523f23479511bfdb08 100644 (file)
@@ -165,12 +165,6 @@ do {                                                                       \
   ASM_OUTPUT_SKIP((FILE), (SIZE));                                     \
 } while (0)
 
-/* This is the pseudo-op used to generate a 64-bit word of data with a
-   specific value in some section.  */
-
-#undef  INT_ASM_OP
-#define INT_ASM_OP             "\t.quad\t"
-
 /* Biggest alignment supported by the object file format of this
    machine.  Use this macro to limit the alignment which can be
    specified using the `__attribute__ ((aligned (N)))' construct.  If
index db057b917a3562aa66661e3103e5279c9b403282..84ab1ed7f45d4195f47574575bcbfdca73dfde4c 100644 (file)
@@ -115,8 +115,6 @@ rdata_section ()                                            \
 \f
 /* Support the ctors/dtors sections for g++.  */
 
-#define INT_ASM_OP "\t.word\t"
-
 /* __CTOR_LIST__ and __DTOR_LIST__ must be defined by the linker script.  */
 #define CTOR_LISTS_DEFINED_EXTERNALLY
 
index 5c64afbc1a626afb568ce458fb1e3efef7c3040e..e6b36a703d00bc96d4821d178d5e1812c36a964b 100644 (file)
@@ -224,17 +224,6 @@ Boston, MA 02111-1307, USA.  */
     }                                                          \
   while (0)
 
-/* This is the pseudo-op used to generate a reference to a specific
-   symbol in some section.  It is only used in machine-specific
-   configuration files.  This is the same for all known svr4
-   assemblers, except those in targets that don't use 32-bit pointers.
-   Those should override INT_ASM_OP.  Yes, the name of the macro is
-   misleading.  */
-
-#ifndef INT_ASM_OP
-#define INT_ASM_OP             "\t.long\t"
-#endif
-
 /* This is the pseudo-op used to generate a contiguous sequence of byte
    values from a double-quoted string WITHOUT HAVING A TERMINATING NUL
    AUTOMATICALLY APPENDED.  This is the same for most svr4 assemblers.  */
index b17346a249e1dd15bc18236b062981478e6d95f5..edd0fc2bc7dce78a3b3d0c04c11b0a56b144e527 100644 (file)
@@ -53,10 +53,6 @@ Boston, MA 02111-1307, USA.  */
 #undef IDENT_ASM_OP
 #define IDENT_ASM_OP "\t.ident\t"
 
-/* Define the name of the .int op.  */
-#undef INT_ASM_OP
-#define INT_ASM_OP "\t.long\t"
-
 /* Enable alias attribute support.  */
 #ifndef SET_ASM_OP
 #define SET_ASM_OP "\t.set\t"
index db06683ffc55a0d8cd925a206ed6e91e80d5986b..fd60fd8e201ba23c65f918d7c0c99302c7d7261a 100644 (file)
@@ -5212,11 +5212,11 @@ i386_dwarf_output_addr_const (file, x)
      rtx x;
 {
 #ifdef ASM_QUAD
-  fprintf (file, "%s", TARGET_64BIT ? ASM_QUAD : INT_ASM_OP);
+  fprintf (file, "%s", TARGET_64BIT ? ASM_QUAD : ASM_LONG);
 #else
   if (TARGET_64BIT)
     abort ();
-  fprintf (file, "%s", INT_ASM_OP);
+  fprintf (file, "%s", ASM_LONG);
 #endif
   if (flag_pic)
     output_pic_addr_const (file, x, '\0');
index be2af29793049c4d2a4c97ebc3a4b485e4e651f4..3b2ce410336a70cac032d164b971a30486026acc 100644 (file)
@@ -2969,7 +2969,6 @@ do { long l;                                              \
    degenerate to the macros used above.  */
 #define UNALIGNED_SHORT_ASM_OP         ASM_SHORT
 #define UNALIGNED_INT_ASM_OP           ASM_LONG
-#define INT_ASM_OP                     ASM_LONG
 
 /* This is how to output an assembler line for a numeric constant byte.  */
 
index 000207c8df5e609ad5820fe91f21a5e1b789a24f..6bd6934b7749ad8422403cc7a050a080838e34a3 100644 (file)
@@ -50,9 +50,6 @@ Boston, MA 02111-1307, USA.  */
 #undef LOCAL_ASM_OP
 #define LOCAL_ASM_OP                   "\t.local\t"
 
-#undef INT_ASM_OP
-#define INT_ASM_OP                     "\t.long\t"
-
 #undef ASM_SHORT
 #define ASM_SHORT                      "\t.value\t"
 
diff --git a/gcc/config/i386/scodbx.h b/gcc/config/i386/scodbx.h
new file mode 100644 (file)
index 0000000..7da9305
--- /dev/null
@@ -0,0 +1,84 @@
+/* Definitions for Intel 386 running SCO Unix System V,
+   using dbx-in-coff encapsulation.
+   Copyright (C) 1992, 1995, 1996, 1999 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING.  If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include "i386/svr3dbx.h"
+
+/* Overridden defines for SCO systems from sco.h. */
+
+/* By default, target has a 80387, uses IEEE compatible arithmetic,
+   and returns float values in the 387, ie,
+   (TARGET_80387 | TARGET_FLOAT_RETURNS_IN_80387)
+
+   SCO's software emulation of a 387 fails to handle the `fucomp'
+   opcode.  fucomp is only used when generating IEEE compliant code.
+   So don't make TARGET_IEEE_FP default for SCO. */
+
+#undef TARGET_SUBTARGET_DEFAULT
+#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_FLOAT_RETURNS)
+
+/* Use crt1.o as a startup file and crtn.o as a closing file.  */
+
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC \
+  "%{!r:%{!z:svr3.ifile%s}%{z:svr3z.ifile%s}}\
+   %{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}}"
+
+/* Library spec, including SCO international language support. */
+
+#undef LIB_SPEC
+#define LIB_SPEC \
+ "%{p:-L/usr/lib/libp}%{pg:-L/usr/lib/libp} %{scointl:libintl.a%s} -lc"
+
+/* Specify predefined symbols in preprocessor.  */
+
+#undef CPP_PREDEFINES
+#define CPP_PREDEFINES "-Dunix -DM_UNIX -DM_I386 -DM_COFF -DM_WORDSWAP -Asystem=svr3"
+
+#undef CPP_SPEC
+#define CPP_SPEC "%(cpp_cpu) %{scointl:-DM_INTERNAT}"
+
+/* This spec is used for telling cpp whether char is signed or not.  */
+
+#undef SIGNED_CHAR_SPEC
+#if DEFAULT_SIGNED_CHAR
+#define SIGNED_CHAR_SPEC \
+ "%{funsigned-char:-D__CHAR_UNSIGNED__ -D_CHAR_UNSIGNED}"
+#else
+#define SIGNED_CHAR_SPEC \
+ "%{!fsigned-char:-D__CHAR_UNSIGNED__ -D_CHAR_UNSIGNED}"
+#endif
+
+/* caller has to pop the extra argument passed to functions that return
+   structures. */
+
+#undef RETURN_POPS_ARGS
+#define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE)   \
+  ((FUNDECL) && TREE_CODE (FUNDECL) == IDENTIFIER_NODE ? 0     \
+   : (TARGET_RTD                                               \
+      && (TYPE_ARG_TYPES (FUNTYPE) == 0                                \
+         || (TREE_VALUE (tree_last (TYPE_ARG_TYPES (FUNTYPE))) \
+             == void_type_node))) ? (SIZE)                     \
+   : 0)
+/* On other 386 systems, the last line looks like this:
+   : (aggregate_value_p (TREE_TYPE (FUNTYPE))) ? GET_MODE_SIZE (Pmode) : 0)  */
+
+/* Handle #pragma pack. */
+#define HANDLE_SYSV_PRAGMA
index 7f462153a6ce2b8e17a3300b0767635b368f1c13..47bcc8d71226c186739e06ff077ca832c2046835 100644 (file)
@@ -41,6 +41,4 @@ Boston, MA 02111-1307, USA.  */
 #define CTORS_SECTION_ASM_OP   "\t.section\t.ctors,\"x\""
 #define DTORS_SECTION_ASM_OP   "\t.section\t.dtors,\"x\""
 
-#define INT_ASM_OP "\t.word\t"
-
 /* end of i960-coff.h */
index a0594d8a25e8db56e74cfd46f4ec010801920d72..012a701bc64dd716fefb74a7c6f01af5262f0d85 100644 (file)
@@ -140,8 +140,6 @@ do {                                                                \
 #undef DTORS_SECTION_ASM_OP
 #define DTORS_SECTION_ASM_OP   "\t.section\t.dtors"
 
-#define INT_ASM_OP             "\t.long\t"
-
 #undef DO_GLOBAL_CTORS_BODY
 #undef DO_GLOBAL_DTORS_BODY
 
index 211a65fc1a475e6a4769a9690a668805541d85f8..941763ceabb02b789a000cf6afdb1aa8700feaf7 100644 (file)
@@ -1570,15 +1570,6 @@ do {                                                                    \
 /* Output before uninitialized data.  */
 #define BSS_SECTION_ASM_OP     ("\t.sect\t.bss")
 
-/* This is the pseudo-op used to generate a reference to a specific
-   symbol in some section.  It is only used in machine-specific
-   configuration files.  This is the same for all known svr4
-   assemblers, except those in targets that don't use 32-bit pointers.
-   Those should override INT_ASM_OP.  Yes, the name of the macro is
-   misleading.  */
-#undef INT_ASM_OP
-#define INT_ASM_OP             "\t.word\t"
-
 /* Define the pseudo-ops used to switch to the .ctors and .dtors sections.
 
    Same as config/elfos.h but don't mark these section SHF_WRITE since
index 946f1967e7f2f8f65a3720b376bef92acc4f15d8..9c677f0fada04195ed4e299b3e10c239188648b7 100644 (file)
@@ -104,8 +104,6 @@ Boston, MA 02111-1307, USA.  */
 #undef TARGET_ASM_NAMED_SECTION
 #define TARGET_ASM_NAMED_SECTION  m68k_coff_asm_named_section
 
-#define INT_ASM_OP "\t.long\t"
-
 /* Don't assume anything about startfiles.  */
 
 #undef STARTFILE_SPEC
index 4f596ad8b114ac8ed91c566facc1664fcdbdc44a..f4eb8dda532a11b9af96a4753170059c4f8d3ba3 100644 (file)
@@ -2367,7 +2367,7 @@ output_tdesc (file, offset)
 
   tdesc_section ();
 
-  fprintf (file, "%s%d,%d", INT_ASM_OP, /* 8:0,22:(20 or 16),2:2 */
+  fprintf (file, "%s%d,%d", ASM_LONG, /* 8:0,22:(20 or 16),2:2 */
           (((xmask != 0) ? 20 : 16) << 2) | 2,
           flag_pic ? 2 : 1);
 
index cee7096bc9def564684a580da6d2d5a100b6e950..b9ddd72bec681fb3cb951080ea956e8f0bd4f181 100644 (file)
@@ -1651,7 +1651,6 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS,
 #define ASM_COMMENT_START ";"
 
 /* Allow pseudo-ops to be overridden.  Override these in svr[34].h.  */
-#undef INT_ASM_OP
 #undef ASCII_DATA_ASM_OP
 #undef CONST_SECTION_ASM_OP
 #undef CTORS_SECTION_ASM_OP
@@ -1697,8 +1696,7 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS,
 #define BSS_ASM_OP             "\tbss\t"
 #define FLOAT_ASM_OP           "\tfloat\t"
 #define DOUBLE_ASM_OP          "\tdouble\t"
-#define INT_ASM_OP             "\tword\t"
-#define ASM_LONG               INT_ASM_OP
+#define ASM_LONG               "\tword\t"
 #define SHORT_ASM_OP           "\thalf\t"
 #define CHAR_ASM_OP            "\tbyte\t"
 #define ASCII_DATA_ASM_OP      "\tstring\t"
@@ -2049,7 +2047,7 @@ do {                                                                       \
   do {                                                                 \
     union { REAL_VALUE_TYPE d; long l[2]; } x;                         \
     x.d = (VALUE);                                                     \
-    fprintf (FILE, "%s0x%.8lx, 0x%.8lx\n", INT_ASM_OP,                 \
+    fprintf (FILE, "%s0x%.8lx, 0x%.8lx\n", ASM_LONG,                   \
             (long) x.l[0], (long) x.l[1]);                             \
   } while (0)
 
@@ -2058,12 +2056,12 @@ do {                                                                     \
   do {                                                                 \
     int i;                                                             \
     FLOAT_TO_INT_INTERNAL (VALUE, i);                                  \
-    fprintf (FILE, "%s0x%.8x\n", INT_ASM_OP, i);                       \
+    fprintf (FILE, "%s0x%.8x\n", ASM_LONG, i);                 \
   } while (0)
 
 /* Likewise for `int', `short', and `char' constants.  */
 #define ASM_OUTPUT_INT(FILE,VALUE)                                     \
-( fprintf (FILE, "%s", INT_ASM_OP),                                    \
+( fprintf (FILE, "%s", ASM_LONG),                                      \
   output_addr_const (FILE, (VALUE)),                                   \
   fprintf (FILE, "\n"))
 
index e08b337c1948090444cdeef0fe04d55e28c287b7..067706c3f09d65757790c72fd8d8f9d12e54b596 100644 (file)
@@ -183,8 +183,6 @@ rdata_section ()                                            \
 #define STARTFILE_SPEC "crt0.o%s"
 #define ENDFILE_SPEC  "%{!mno-lsim:-lsim}"
 
-#define INT_ASM_OP "\t.long\t"
-
 /* __CTOR_LIST__ and __DTOR_LIST__ must be defined by the linker script.  */
 #define CTOR_LISTS_DEFINED_EXTERNALLY
 
index 42b228556bf3fdfad9fa047bbeb1fc998d6084c3..129fa3921796c8284512896c6bf10d106c35124b 100644 (file)
@@ -100,6 +100,3 @@ const_section ()                                                        \
       in_section = in_const;                                            \
     }                                                                   \
 }
-
-#undef INT_ASM_OP
-#define INT_ASM_OP ".long"
index ba421fcab4e75b18fc9a8f929dae1cd80ffce7c1..6445c9aa27ea18ac2d0a783531895f8b5e917d83 100644 (file)
@@ -180,8 +180,6 @@ do {                                                                \
   DECL_SECTION_NAME (DECL) = build_string (len, string);       \
 } while (0)
 
-#define INT_ASM_OP "\t.dword\t"
-
 /* Define the strings used for the special svr4 .type and .size directives.
    These strings generally do not vary from one system running svr4 to
    another, but if a given system (e.g. m88k running svr) needs to use
index d66bdaa7bd2d3815b254e9907a60d3839c9f011a..0fdd173cc3a79962dc3623af4a83b6f8812cebbd 100644 (file)
@@ -59,9 +59,6 @@ Boston, MA 02111-1307, USA.  */
        %{static:-static}}}"
 #endif
 
-#undef INT_ASM_OP
-#define INT_ASM_OP "\t.quad\t"
-
 #undef PROMOTE_PROTOTYPES 
 #undef MASK_RETURN_ADDR 
 #undef SELECT_SECTION
index 80a3a36e4cb24327edd8d1037d1205cf9e9140d2..cdb25c89ec2fa3fcfc355510b4e811ce9823997b 100644 (file)
@@ -1929,11 +1929,6 @@ while (0)
 /* Switch into a generic section.  */
 #define TARGET_ASM_NAMED_SECTION  sh_asm_named_section
 
-/* This is the pseudo-op used to generate a reference to a specific
-   symbol in some section.  */
-
-#define INT_ASM_OP     "\t.long\t"
-     
 #undef DO_GLOBAL_CTORS_BODY
 #define DO_GLOBAL_CTORS_BODY                   \
 {                                              \
index 4b08d3848a54afab3954dc5f2f59f8089fd25e2d..dede792e69bb068e00de7e49499210075f37a841 100644 (file)
@@ -44,8 +44,6 @@ Boston, MA 02111-1307, USA.  */
 #define EXTRA_SECTION_FUNCTIONS                                                \
   CONST_SECTION_FUNCTION
 
-#define INT_ASM_OP "\t.long\t"
-
 #undef DO_GLOBAL_CTORS_BODY
 #undef DO_GLOBAL_DTORS_BODY
 
index 80f16dbb6df1b96a350aaa0c15847f873b3ed9a1..886b15bf806bae2f0cb590339061e0e635fcdba2 100644 (file)
@@ -11853,6 +11853,9 @@ dwarf2out_finish (input_filename)
            add_child_die (origin->die_parent, die);
          else if (die == comp_unit_die)
            ;
+         else if (errorcount > 0 || sorrycount > 0)
+           /* It's OK to be confused by errors in the input.  */
+           add_child_die (comp_unit_die, die);
          else
            abort ();
        }