X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fstabs.c;h=e0594fa5d4ed2a6b15c3527c19784cf656308fa5;hb=aac129d77611fab3db3f354c67c0f2c9406fa828;hp=d295beae40b6a07d7e7c15c8099293b976cbff62;hpb=3d6b762c68c6e19bdf387c0f1db7773fd22aab9a;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/stabs.c b/gas/stabs.c index d295beae40..e0594fa5d4 100644 --- a/gas/stabs.c +++ b/gas/stabs.c @@ -1,6 +1,6 @@ /* Generic stabs parsing for gas. Copyright 1989, 1990, 1991, 1993, 1995, 1996, 1997, 1998, 2000, 2001 - 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. + 2002, 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -20,6 +20,7 @@ 02110-1301, USA. */ #include "as.h" +#include "filenames.h" #include "obstack.h" #include "subsegs.h" #include "ecoff.h" @@ -164,6 +165,8 @@ aout_process_stab (what, string, type, other, desc) symbol_append (symbol, symbol_lastP, &symbol_rootP, &symbol_lastP); + symbol_get_bfdsym (symbol)->flags |= BSF_DEBUGGING; + S_SET_TYPE (symbol, type); S_SET_OTHER (symbol, other); S_SET_DESC (symbol, desc); @@ -496,9 +499,10 @@ stabs_generate_asm_file (void) char *dir2; dir = remap_debug_filename (getpwd ()); - dir2 = alloca (strlen (dir) + 2); + dir2 = (char *) alloca (strlen (dir) + 2); sprintf (dir2, "%s%s", dir, "/"); generate_asm_file (N_SO, dir2); + xfree ((char *) dir); } generate_asm_file (N_SO, file); } @@ -515,11 +519,11 @@ generate_asm_file (int type, char *file) char sym[30]; char *buf; char *tmp = file; - char *endp = file + strlen (file); + char *file_endp = file + strlen (file); char *bufp; if (last_file != NULL - && strcmp (last_file, file) == 0) + && filename_cmp (last_file, file) == 0) return; /* Rather than try to do this in some efficient fashion, we just @@ -534,11 +538,11 @@ generate_asm_file (int type, char *file) /* Allocate enough space for the file name (possibly extended with doubled up backslashes), the symbol name, and the other characters that make up a stabs file directive. */ - bufp = buf = xmalloc (2 * strlen (file) + strlen (sym) + 12); + bufp = buf = (char *) xmalloc (2 * strlen (file) + strlen (sym) + 12); *bufp++ = '"'; - while (tmp < endp) + while (tmp < file_endp) { char *bslash = strchr (tmp, '\\'); size_t len = (bslash) ? (size_t) (bslash - tmp + 1) : strlen (tmp); @@ -603,7 +607,7 @@ stabs_generate_asm_lineno (void) prev_lineno = lineno; } else if (lineno == prev_lineno - && strcmp (file, prev_file) == 0) + && filename_cmp (file, prev_file) == 0) { /* Same file/line as last time. */ return; @@ -612,7 +616,7 @@ stabs_generate_asm_lineno (void) { /* Remember file/line for next time. */ prev_lineno = lineno; - if (strcmp (file, prev_file) != 0) + if (filename_cmp (file, prev_file) != 0) { free (prev_file); prev_file = xstrdup (file); @@ -667,8 +671,9 @@ stabs_generate_asm_func (const char *funcname, const char *startlabname) } as_where (&file, &lineno); - asprintf (&buf, "\"%s:F1\",%d,0,%d,%s", - funcname, N_FUN, lineno + 1, startlabname); + if (asprintf (&buf, "\"%s:F1\",%d,0,%d,%s", + funcname, N_FUN, lineno + 1, startlabname) == -1) + as_fatal ("%s", xstrerror (errno)); input_line_pointer = buf; s_stab ('s'); free (buf); @@ -693,7 +698,8 @@ stabs_generate_asm_endfunc (const char *funcname ATTRIBUTE_UNUSED, ++label_count; colon (sym); - asprintf (&buf, "\"\",%d,0,0,%s-%s", N_FUN, sym, startlabname); + if (asprintf (&buf, "\"\",%d,0,0,%s-%s", N_FUN, sym, startlabname) == -1) + as_fatal ("%s", xstrerror (errno)); input_line_pointer = buf; s_stab ('s'); free (buf);