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.
This commit is contained in:
parent
bafae9c48d
commit
1ea5c32521
3 changed files with 47 additions and 4 deletions
|
@ -116,6 +116,13 @@
|
|||
* config/tc-cris.c (md_apply_fix3): Cast value, not pointer, in
|
||||
val assignment.
|
||||
|
||||
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.
|
||||
|
||||
2001-11-16 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* config/tc-m68k.c (md_apply_fix3): Change val back to a signed type.
|
||||
|
|
|
@ -230,11 +230,20 @@ dwarf2_gen_line_info (ofs, loc)
|
|||
{
|
||||
struct line_subseg *ss;
|
||||
struct line_entry *e;
|
||||
static unsigned int line = -1;
|
||||
static unsigned int filenum = -1;
|
||||
|
||||
/* Early out for as-yet incomplete location information. */
|
||||
if (loc->filenum == 0 || loc->line == 0)
|
||||
return;
|
||||
|
||||
/* Don't emit sequences of line symbols for the same line. */
|
||||
if (line == loc->line && filenum == loc->filenum)
|
||||
return;
|
||||
|
||||
line = loc->line;
|
||||
filenum = loc->filenum;
|
||||
|
||||
e = (struct line_entry *) xmalloc (sizeof (*e));
|
||||
e->next = NULL;
|
||||
e->frag = frag_now;
|
||||
|
|
35
gas/stabs.c
35
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);
|
||||
|
|
Loading…
Reference in a new issue