X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fxcoffout.c;h=ccc1ab810ff74bce50441820ad27f8daac0db66b;hb=068c688e1c7c551edca89c0efb2a073efddb12d4;hp=f79755a58a869792a7a9f6f9ff1024b79b195454;hpb=e3b8b6976b826173fef677fe922dec4911c255be;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/xcoffout.c b/gcc/xcoffout.c index f79755a58a8..ccc1ab810ff 100644 --- a/gcc/xcoffout.c +++ b/gcc/xcoffout.c @@ -1,12 +1,12 @@ /* Output xcoff-format symbol table information from GNU compiler. - Copyright (C) 1992, 1994, 1995, 1997, 1998, 1999, 2000, 2002, 2003, 2004 - Free Software Foundation, Inc. + Copyright (C) 1992, 1994, 1995, 1997, 1998, 1999, 2000, 2002, 2003, 2004, + 2007, 2008 Free Software Foundation, Inc. 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 +Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY @@ -15,9 +15,8 @@ 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. */ +along with GCC; see the file COPYING3. If not see +. */ /* Output xcoff-format symbol table data. The main functionality is contained in dbxout.c. This file implements the sdbout-like parts of the xcoff @@ -31,10 +30,11 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "tree.h" #include "rtl.h" #include "flags.h" -#include "toplev.h" +#include "diagnostic-core.h" #include "output.h" #include "ggc.h" #include "target.h" +#include "debug.h" #ifdef XCOFF_DEBUGGING_INFO @@ -145,7 +145,7 @@ static const struct xcoff_type_number xcoff_type_numbers[] = { /* ??? Should also handle built-in C++ and Obj-C types. There perhaps aren't any that C doesn't already have. */ -}; +}; /* Returns an XCOFF fundamental type number for DECL (assumed to be a TYPE_DECL), or 0 if dbxout.c should assign a type number normally. */ @@ -184,7 +184,7 @@ xcoff_assign_fundamental_type_number (tree decl) /* Print an error message for unrecognized stab codes. */ #define UNKNOWN_STAB(STR) \ - internal_error ("no sclass for %s stab (0x%x)\n", STR, stab) + internal_error ("no sclass for %s stab (0x%x)", STR, stab) /* Conversion routine from BSD stabs to AIX storage classes. */ @@ -301,7 +301,8 @@ xcoffout_source_file (FILE *file, const char *filename, int inline_p) if (xcoff_current_include_file) { fprintf (file, "\t.ei\t"); - output_quoted_string (file, xcoff_current_include_file); + output_quoted_string (file, + remap_debug_filename (xcoff_current_include_file)); fprintf (file, "\n"); xcoff_current_include_file = NULL; } @@ -309,7 +310,7 @@ xcoffout_source_file (FILE *file, const char *filename, int inline_p) if (strcmp (main_input_filename, filename) || inline_p) { fprintf (file, "\t.bi\t"); - output_quoted_string (file, filename); + output_quoted_string (file, remap_debug_filename (filename)); fprintf (file, "\n"); xcoff_current_include_file = filename; } @@ -320,7 +321,9 @@ xcoffout_source_file (FILE *file, const char *filename, int inline_p) /* Output a line number symbol entry for location (FILENAME, LINE). */ void -xcoffout_source_line (unsigned int line, const char *filename) +xcoffout_source_line (unsigned int line, const char *filename, + int discriminator ATTRIBUTE_UNUSED, + bool is_stmt ATTRIBUTE_UNUSED) { bool inline_p = (strcmp (xcoff_current_function_file, filename) != 0 || (int) line < xcoff_begin_function_line); @@ -405,22 +408,18 @@ xcoffout_end_block (unsigned int line, unsigned int n) void xcoffout_declare_function (FILE *file, tree decl, const char *name) { - int i; + size_t len; if (*name == '*') name++; - else - for (i = 0; name[i]; ++i) - { - if (name[i] == '[') - { - char *n = alloca (i + 1); - strncpy (n, name, i); - n[i] = '\0'; - name = n; - break; - } - } + len = strlen (name); + if (name[len - 1] == ']') + { + char *n = XALLOCAVEC (char, len - 3); + memcpy (n, name, len - 4); + n[len - 4] = '\0'; + name = n; + } /* Any pending .bi or .ei must occur before the .function pseudo op. Otherwise debuggers will think that the function is in the previous