OSDN Git Service

* config/mips/mips.c (save_restore_insns): Don't mark any register
[pf3gnuchains/gcc-fork.git] / gcc / xcoffout.h
index 10dc6dc..8730798 100644 (file)
@@ -1,7 +1,26 @@
 /* XCOFF definitions.  These are needed in dbxout.c, final.c,
-   and xcoffout.h.  */
+   and xcoffout.h. 
+   Copyright (C) 1998, 2000 Free Software Foundation, Inc.
 
-#define ASM_STABS_OP ".stabx"
+This file is part of GCC.
+
+GCC 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.
+
+GCC 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 GCC; see the file COPYING.  If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.  */
+
+
+#define ASM_STABS_OP "\t.stabx\t"
 
 /* Tags and typedefs are C_DECL in XCOFF, not C_LSYM.  */
 
@@ -58,8 +77,8 @@
 
 #define DBX_STATIC_BLOCK_END(ASMFILE,CODE)                             \
 {                                                                      \
-  if (current_sym_code == N_STSYM || current_sym_code == N_LCSYM)      \
-    fprintf (asmfile, "\t.es\n");                                      \
+  if ((CODE) == N_STSYM || (CODE) == N_LCSYM)                          \
+    fputs ("\t.es\n", (ASMFILE));                                      \
 }
 
 /* We must use N_RPYSM instead of N_RSYM for register parameters.  */
   if (current_sym_addr && current_sym_code == N_FUN            \
       && GET_CODE (current_sym_addr) == SYMBOL_REF)            \
     {                                                          \
-      char *_p;                                                        \
-      for (_p = XSTR (current_sym_addr, 0); *_p != '[' && *_p; _p++) \
-       fprintf (asmfile, "%c", *_p);                           \
+      const char *_p = XSTR (current_sym_addr, 0);             \
+      if (*_p == '*')                                          \
+       fprintf (asmfile, "%s", _p+1);                          \
+      else                                                     \
+        for (; *_p != '[' && *_p; _p++)                                \
+         fprintf (asmfile, "%c", *_p);                         \
     }                                                          \
   else if (current_sym_addr)                                   \
     output_addr_const (asmfile, current_sym_addr);             \
 #define N_RPSYM 0x8e
 #endif
 
-/* The line number of the beginning of the current function.
-   xcoffout.c needs this so that it can output relative linenumbers.  */
-
-extern int xcoff_begin_function_line;
-
 /* Name of the current include file.  */
 
-extern char *xcoff_current_include_file;
-
-/* Name of the current function file.  This is the file the `.bf' is
-   emitted from.  In case a line is emitted from a different file,
-   (by including that file of course), then the line number will be
-   absolute.  */
-
-extern char *xcoff_current_function_file;
+extern const char *xcoff_current_include_file;
 
 /* Names of bss and data sections.  These should be unique names for each
    compilation unit.  */
@@ -137,7 +147,7 @@ extern char *xcoff_read_only_section_name;
 
 /* Last source file name mentioned in a NOTE insn.  */
 
-extern char *xcoff_lastfile;
+extern const char *xcoff_lastfile;
 
 /* Don't write out path name for main source file.  */
 #define DBX_OUTPUT_MAIN_SOURCE_DIRECTORY(FILE,FILENAME)
@@ -145,23 +155,32 @@ extern char *xcoff_lastfile;
 /* Write out main source file name using ".file" rather than ".stabs".
    We don't actually do this here, because the assembler gets confused if there
    is more than one .file directive.  ASM_FILE_START in config/rs6000/rs6000.h
-   is already emitting a .file direcgtory, so we don't output one here also.
+   is already emitting a .file directory, so we don't output one here also.
    Initialize xcoff_lastfile.  */
 #define DBX_OUTPUT_MAIN_SOURCE_FILENAME(FILE,FILENAME) \
-  xcoff_lastfile = input_file_name
+  xcoff_lastfile = (FILENAME)
 
 /* If we are still in an include file, its end must be marked.  */
 #define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME)        \
 {                                                      \
   if (xcoff_current_include_file)                      \
     {                                                  \
-      fprintf (FILE, "\t.ei\t");                       \
-      output_quoted_string (FILE, xcoff_current_include_file); \
-      fprintf (FILE, "\n");                            \
+      fputs ("\t.ei\t", (FILE));                       \
+      output_quoted_string ((FILE), xcoff_current_include_file);       \
+      putc ('\n', (FILE));                             \
       xcoff_current_include_file = NULL;               \
     }                                                  \
 }
 
+/* .stabx has the type in a different place.  */
+#if 0  /* Do not emit any marker for XCOFF until assembler allows XFT_CV.  */
+#define DBX_OUTPUT_GCC_MARKER(FILE) \
+  fprintf ((FILE), "%s\"%s\",0,%d,0\n", ASM_STABS_OP, STABS_GCC_MARKER, \
+          stab_to_sclass (N_GSYM))
+#else
+#define DBX_OUTPUT_GCC_MARKER(FILE)
+#endif
+
 /* Do not break .stabs pseudos into continuations.  */
 #define DBX_CONTIN_LENGTH 0
 
@@ -175,3 +194,29 @@ extern char *xcoff_lastfile;
    can't find them.  */
 
 #define DEBUG_SYMS_TEXT
+
+/* Prototype functions in xcoffout.c. */
+
+extern int stab_to_sclass                      PARAMS ((int));
+#ifdef BUFSIZ
+extern void xcoffout_begin_prologue            PARAMS ((unsigned int,
+                                                        const char *));
+extern void xcoffout_begin_block               PARAMS ((unsigned, unsigned));
+extern void xcoffout_end_epilogue              PARAMS ((void));
+extern void xcoffout_end_function              PARAMS ((unsigned int));
+extern void xcoffout_end_block                 PARAMS ((unsigned, unsigned));
+#endif /* BUFSIZ */
+
+#ifdef TREE_CODE
+extern void xcoff_output_standard_types                PARAMS ((tree));
+#ifdef BUFSIZ
+extern void xcoffout_declare_function          PARAMS ((FILE *, tree, const char *));
+#endif /* BUFSIZ */
+#endif /* TREE_CODE */
+
+#ifdef RTX_CODE
+#ifdef BUFSIZ
+extern void xcoffout_source_line               PARAMS ((unsigned int,
+                                                        const char *));
+#endif /* BUFSIZ */
+#endif /* RTX_CODE */