summaryrefslogtreecommitdiffstats
path: root/contrib/binutils/gas/stabs.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/binutils/gas/stabs.c')
-rw-r--r--contrib/binutils/gas/stabs.c47
1 files changed, 37 insertions, 10 deletions
diff --git a/contrib/binutils/gas/stabs.c b/contrib/binutils/gas/stabs.c
index eed11b3..60b03c4 100644
--- a/contrib/binutils/gas/stabs.c
+++ b/contrib/binutils/gas/stabs.c
@@ -217,7 +217,7 @@ s_stab_generic (what, stab_secname, stabstr_secname)
input_line_pointer++;
else
{
- as_warn (_(".stabs: Missing comma"));
+ as_warn (_(".stab%c: missing comma"), what);
ignore_rest_of_line ();
return;
}
@@ -225,7 +225,7 @@ s_stab_generic (what, stab_secname, stabstr_secname)
if (get_absolute_expression_and_terminator (&longint) != ',')
{
- as_warn (_(".stab%c: Missing comma"), what);
+ as_warn (_(".stab%c: missing comma"), what);
ignore_rest_of_line ();
return;
}
@@ -233,7 +233,7 @@ s_stab_generic (what, stab_secname, stabstr_secname)
if (get_absolute_expression_and_terminator (&longint) != ',')
{
- as_warn (_(".stab%c: Missing comma"), what);
+ as_warn (_(".stab%c: missing comma"), what);
ignore_rest_of_line ();
return;
}
@@ -244,7 +244,7 @@ s_stab_generic (what, stab_secname, stabstr_secname)
{
if (*input_line_pointer != ',')
{
- as_warn (_(".stab%c: Missing comma"), what);
+ as_warn (_(".stab%c: missing comma"), what);
ignore_rest_of_line ();
return;
}
@@ -469,7 +469,7 @@ s_desc (ignore)
if (*input_line_pointer != ',')
{
*p = 0;
- as_bad (_("Expected comma after name \"%s\""), name);
+ as_bad (_("expected comma after \"%s\""), name);
*p = c;
ignore_rest_of_line ();
}
@@ -539,7 +539,7 @@ generate_asm_file (type, file)
while (tmp < endp)
{
char *bslash = strchr (tmp, '\\');
- int len = (bslash ? (bslash - tmp + 1) : strlen (tmp));
+ size_t len = (bslash) ? (size_t) (bslash - tmp + 1) : strlen (tmp);
/* Double all backslashes, since demand_copy_C_string (used by
s_stab to extract the part in quotes) will try to replace them as
@@ -580,10 +580,9 @@ stabs_generate_asm_lineno ()
unsigned int lineno;
char *buf;
char sym[30];
-
- /* Let the world know that we are in the middle of generating a
- piece of stabs line debugging information. */
- outputting_stabs_line_debug = 1;
+ /* Remember the last file/line and avoid duplicates. */
+ static unsigned int prev_lineno = -1;
+ static char *prev_file = NULL;
/* Rather than try to do this in some efficient fashion, we just
generate a string and then parse it again. That lets us use the
@@ -594,6 +593,34 @@ stabs_generate_asm_lineno ()
as_where (&file, &lineno);
+ /* Don't emit sequences of stabs for the same line. */
+ if (prev_file == NULL)
+ {
+ /* First time thru. */
+ prev_file = xstrdup (file);
+ prev_lineno = lineno;
+ }
+ else if (lineno == prev_lineno
+ && strcmp (file, prev_file) == 0)
+ {
+ /* Same file/line as last time. */
+ return;
+ }
+ else
+ {
+ /* Remember file/line for next time. */
+ prev_lineno = lineno;
+ if (strcmp (file, prev_file) != 0)
+ {
+ free (prev_file);
+ prev_file = xstrdup (file);
+ }
+ }
+
+ /* Let the world know that we are in the middle of generating a
+ piece of stabs line debugging information. */
+ outputting_stabs_line_debug = 1;
+
generate_asm_file (N_SOL, file);
sprintf (sym, "%sL%d", FAKE_LABEL_NAME, label_count);
OpenPOWER on IntegriCloud