X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fxcoffout.c;h=f2b8a3fbe771779d8fd48482332453712a39dfef;hb=c7d80600af3cb26f465ea6fea52ac5f4e47e2ae6;hp=de7528fbb4fbb522c7acfd150fabb4fadbd7f773;hpb=709e5e548b3481d9c2f51f600d7bd50a62e0083e;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/xcoffout.c b/gcc/xcoffout.c index de7528fbb4f..f2b8a3fbe77 100644 --- a/gcc/xcoffout.c +++ b/gcc/xcoffout.c @@ -1,5 +1,5 @@ /* Output xcoff-format symbol table information from GNU compiler. - Copyright (C) 1992, 1994, 1995, 1997, 1998, 1999, 2000, 2002, 2003 + Copyright (C) 1992, 1994, 1995, 1997, 1998, 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GCC. @@ -77,8 +77,8 @@ const char *xcoff_lastfile; #define ABS_OR_RELATIVE_LINENO(LINENO) \ ((xcoff_inlining) ? (LINENO) : (LINENO) - xcoff_begin_function_line) -/* Output source line numbers via ".line" rather than ".stabd". */ -#define ASM_OUTPUT_SOURCE_LINE(FILE,LINENUM,COUNTER) \ +/* Output source line numbers via ".line". */ +#define ASM_OUTPUT_LINE(FILE,LINENUM) \ do \ { \ if (xcoff_begin_function_line >= 0) \ @@ -156,7 +156,7 @@ xcoff_assign_fundamental_type_number (tree decl) size_t i; /* Do not waste time searching the list for non-intrinsic types. */ - if (DECL_NAME (decl) == 0 || DECL_SOURCE_LINE (decl) > 0) + if (DECL_NAME (decl) == 0 || ! DECL_IS_BUILTIN (decl)) return 0; name = IDENTIFIER_POINTER (DECL_NAME (decl)); @@ -327,7 +327,7 @@ xcoffout_source_line (unsigned int line, const char *filename) xcoffout_source_file (asm_out_file, filename, inline_p); - ASM_OUTPUT_SOURCE_LINE (asm_out_file, line, 0); + ASM_OUTPUT_LINE (asm_out_file, line); } /* Output the symbols defined in block number DO_BLOCK. @@ -405,22 +405,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 = alloca (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 @@ -454,7 +450,7 @@ xcoffout_begin_prologue (unsigned int line, xcoffout_block (DECL_INITIAL (current_function_decl), 0, DECL_ARGUMENTS (current_function_decl)); - ASM_OUTPUT_SOURCE_LINE (asm_out_file, line, 0); + ASM_OUTPUT_LINE (asm_out_file, line); } /* Called at end of function (before epilogue).