aboutsummaryrefslogtreecommitdiff
path: root/gas/stabs.c
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>2001-12-04 23:07:26 +0000
committerMichael Snyder <msnyder@vmware.com>2001-12-04 23:07:26 +0000
commit1ea5c32521e1acff5f3fb8d40e113655a0682234 (patch)
tree55f2989c66699696f53060c14480dbbc1e4a1453 /gas/stabs.c
parentbafae9c48de1793fa374b55b905136a3cd7486a1 (diff)
downloadgdb-1ea5c32521e1acff5f3fb8d40e113655a0682234.zip
gdb-1ea5c32521e1acff5f3fb8d40e113655a0682234.tar.gz
gdb-1ea5c32521e1acff5f3fb8d40e113655a0682234.tar.bz2
2001-11-16 Michael Snyder <msnyder@redhat.com>
* stabs.c (stabs_generate_asm_lineno): Remember file and line number from one call to the next, and eliminate consecutive duplicates (thereby emitting only one line symbol per source line). * dwarf2dbg.c (dwarf2_gen_line_info): Ditto.
Diffstat (limited to 'gas/stabs.c')
-rw-r--r--gas/stabs.c35
1 files changed, 31 insertions, 4 deletions
diff --git a/gas/stabs.c b/gas/stabs.c
index cd5a705..60b03c4 100644
--- a/gas/stabs.c
+++ b/gas/stabs.c
@@ -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);