OSDN Git Service

* config/i386/sol2.h (PREFERRED_DEBUGGING_TYPE): Use stabs.
[pf3gnuchains/gcc-fork.git] / gcc / dbxout.c
index e9e7072..6dd2f30 100644 (file)
@@ -136,8 +136,6 @@ Boston, MA 02111-1307, USA.  */
 #endif
 #endif
 
-char *getpwd ();
-
 /* Typical USG systems don't have stab.h, and they also have
    no use for DBX-format debugging info.  */
 
@@ -163,10 +161,12 @@ static int source_label_number = 1;
 #define FORCE_TEXT
 #endif
 
-/* If there is a system stabs.h, use it.  Otherwise, use our own.  */
-
-#ifndef HAVE_STABS_H
-#include "gstab.h"
+/* If there is a system stab.h, use it.  Otherwise, use our own.  */
+/* ??? This is supposed to describe the target's stab format, so using
+   the host HAVE_STAB_H appears to be wrong.  For now, we use our own file
+   when cross compiling.  */
+#if defined (USG) || !defined (HAVE_STAB_H) || defined (CROSS_COMPILE)
+#include "gstab.h" /* If doing DBX on sysV, use our own stab.h.  */
 #else
 #include <stab.h>
 
@@ -381,8 +381,7 @@ dbxout_init (asm_file, input_file_name, syms)
   asmfile = asm_file;
 
   typevec_len = 100;
-  typevec = (struct typeinfo *) xmalloc (typevec_len * sizeof typevec[0]);
-  bzero ((char *) typevec, typevec_len * sizeof typevec[0]);
+  typevec = (struct typeinfo *) xcalloc (typevec_len, sizeof typevec[0]);
 
   /* Convert Ltext into the appropriate format for local labels in case
      the system doesn't insert underscores in front of user generated
@@ -495,7 +494,7 @@ dbxout_typedefs (syms)
 
 void
 dbxout_start_new_source_file (filename)
-     char *filename;
+     char *filename ATTRIBUTE_UNUSED;
 {
 #ifdef DBX_USE_BINCL
   struct dbx_file *n = (struct dbx_file *) xmalloc (sizeof *n);
@@ -580,8 +579,8 @@ dbxout_source_line (file, filename, lineno)
 
 void
 dbxout_finish (file, filename)
-     FILE *file;
-     char *filename;
+     FILE *file ATTRIBUTE_UNUSED;
+     char *filename ATTRIBUTE_UNUSED;
 {
 #ifdef DBX_OUTPUT_MAIN_SOURCE_FILE_END
   DBX_OUTPUT_MAIN_SOURCE_FILE_END (file, filename);
@@ -814,13 +813,7 @@ dbxout_type_methods (type)
       {
        static int warned;
        if (!warned)
-         {
            warned = 1;
-#ifdef HAVE_TEMPLATES
-           if (warn_template_debugging)
-             warning ("dbx info for template class methods not yet supported");
-#endif
-         }
        return;
       }
   }
@@ -960,8 +953,18 @@ dbxout_range_type (type)
         were defined to be sub-ranges of int.  Unfortunately, this
         does not allow us to distinguish true sub-ranges from integer
         types.  So, instead we define integer (non-sub-range) types as
-        sub-ranges of themselves.  */
-      dbxout_type_index (type);
+        sub-ranges of themselves.  This matters for Chill.  If this isn't
+        a subrange type, then we want to define it in terms of itself.
+        However, in C, this may be an anonymous integer type, and we don't
+        want to emit debug info referring to it.  Just calling
+        dbxout_type_index won't work anyways, because the type hasn't been
+        defined yet.  We make this work for both cases by checked to see
+        whether this is a defined type, referring to it if it is, and using
+        'int' otherwise.  */
+      if (TYPE_SYMTAB_ADDRESS (type) != 0)
+       dbxout_type_index (type);
+      else
+       dbxout_type_index (integer_type_node);
     }
   if (TREE_CODE (TYPE_MIN_VALUE (type)) == INTEGER_CST)
     {
@@ -1931,7 +1934,7 @@ dbxout_symbol (decl, local)
 
       DECL_RTL (decl) = eliminate_regs (DECL_RTL (decl), 0, NULL_RTX);
 #ifdef LEAF_REG_REMAP
-      if (leaf_function)
+      if (current_function_uses_only_leaf_regs)
        leaf_renumber_regs_insn (DECL_RTL (decl));
 #endif
 
@@ -1960,7 +1963,7 @@ dbxout_symbol_location (decl, type, suffix, home)
   /* Don't mention a variable at all
      if it was completely optimized into nothingness.
      
-     If the decl was from an inline function, then it's rtl
+     If the decl was from an inline function, then its rtl
      is not identically the rtl that was used in this
      particular compilation.  */
   if (GET_CODE (home) == REG)
@@ -2184,7 +2187,7 @@ dbxout_symbol_name (decl, suffix, letter)
 
 static void
 dbxout_prepare_symbol (decl)
-     tree decl;
+     tree decl ATTRIBUTE_UNUSED;
 {
 #ifdef WINNING_GDB
   char *filename = DECL_SOURCE_FILE (decl);
@@ -2253,7 +2256,7 @@ dbxout_parms (parms)
          = eliminate_regs (DECL_INCOMING_RTL (parms), 0, NULL_RTX);
        DECL_RTL (parms) = eliminate_regs (DECL_RTL (parms), 0, NULL_RTX);
 #ifdef LEAF_REG_REMAP
-       if (leaf_function)
+       if (current_function_uses_only_leaf_regs)
          {
            leaf_renumber_regs_insn (DECL_INCOMING_RTL (parms));
            leaf_renumber_regs_insn (DECL_RTL (parms));
@@ -2677,7 +2680,7 @@ dbxout_really_begin_function (decl)
 
 void
 dbxout_begin_function (decl)
-     tree decl;
+     tree decl ATTRIBUTE_UNUSED;
 {
 #ifdef DBX_FUNCTION_FIRST
   dbxout_really_begin_function (decl);