* dwarf2dbg.c (dwarf2_gen_line_info): Early out for no line number.
* config/obj-elf.h (ECOFF_DEBUGGING) [TC_ALPHA]: Adjust for tri-state definition of alpha_flag_mdebug. * config/tc-alpha.c (alpha_flag_mdebug): Init to -1. (s_alpha_file): Store first .file directive. (s_alpha_stab): New. (md_pseudo_table): Add stabs and stabn.
This commit is contained in:
parent
9d2e1bab9d
commit
a8316fe296
@ -1,3 +1,13 @@
|
|||||||
|
2000-11-17 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
|
* dwarf2dbg.c (dwarf2_gen_line_info): Early out for no line number.
|
||||||
|
* config/obj-elf.h (ECOFF_DEBUGGING) [TC_ALPHA]: Adjust for
|
||||||
|
tri-state definition of alpha_flag_mdebug.
|
||||||
|
* config/tc-alpha.c (alpha_flag_mdebug): Init to -1.
|
||||||
|
(s_alpha_file): Store first .file directive.
|
||||||
|
(s_alpha_stab): New.
|
||||||
|
(md_pseudo_table): Add stabs and stabn.
|
||||||
|
|
||||||
2000-11-17 Richard Henderson <rth@redhat.com>
|
2000-11-17 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
* config/tc-i386.c (md_assemble): Call dwarf2_emit_insn.
|
* config/tc-i386.c (md_assemble): Call dwarf2_emit_insn.
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
#include "targ-cpu.h"
|
#include "targ-cpu.h"
|
||||||
|
|
||||||
#ifdef TC_ALPHA
|
#ifdef TC_ALPHA
|
||||||
#define ECOFF_DEBUGGING alpha_flag_mdebug
|
#define ECOFF_DEBUGGING (alpha_flag_mdebug > 0)
|
||||||
extern int alpha_flag_mdebug;
|
extern int alpha_flag_mdebug;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -248,6 +248,7 @@ static void s_alpha_frame PARAMS ((int));
|
|||||||
static void s_alpha_prologue PARAMS ((int));
|
static void s_alpha_prologue PARAMS ((int));
|
||||||
static void s_alpha_file PARAMS ((int));
|
static void s_alpha_file PARAMS ((int));
|
||||||
static void s_alpha_loc PARAMS ((int));
|
static void s_alpha_loc PARAMS ((int));
|
||||||
|
static void s_alpha_stab PARAMS ((int));
|
||||||
static void s_alpha_coff_wrapper PARAMS ((int));
|
static void s_alpha_coff_wrapper PARAMS ((int));
|
||||||
#endif
|
#endif
|
||||||
#ifdef OBJ_EVAX
|
#ifdef OBJ_EVAX
|
||||||
@ -435,7 +436,7 @@ static int alpha_debug;
|
|||||||
|
|
||||||
#ifdef OBJ_ELF
|
#ifdef OBJ_ELF
|
||||||
/* Whether we are emitting an mdebug section. */
|
/* Whether we are emitting an mdebug section. */
|
||||||
int alpha_flag_mdebug = 1;
|
int alpha_flag_mdebug = -1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Don't fully resolve relocations, allowing code movement in the linker. */
|
/* Don't fully resolve relocations, allowing code movement in the linker. */
|
||||||
@ -4578,10 +4579,29 @@ s_alpha_prologue (ignore)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char * first_file_directive;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
s_alpha_file (ignore)
|
s_alpha_file (ignore)
|
||||||
int ignore ATTRIBUTE_UNUSED;
|
int ignore ATTRIBUTE_UNUSED;
|
||||||
{
|
{
|
||||||
|
/* Save the first .file directive we see, so that we can change our
|
||||||
|
minds about whether ecoff debugging should or shouldn't be enabled. */
|
||||||
|
if (alpha_flag_mdebug < 0 && ! first_file_directive)
|
||||||
|
{
|
||||||
|
char *start = input_line_pointer;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
discard_rest_of_line ();
|
||||||
|
|
||||||
|
len = input_line_pointer - start;
|
||||||
|
first_file_directive = xmalloc (len + 1);
|
||||||
|
memcpy (first_file_directive, start, len);
|
||||||
|
first_file_directive[len] = '\0';
|
||||||
|
|
||||||
|
input_line_pointer = start;
|
||||||
|
}
|
||||||
|
|
||||||
if (ECOFF_DEBUGGING)
|
if (ECOFF_DEBUGGING)
|
||||||
ecoff_directive_file (0);
|
ecoff_directive_file (0);
|
||||||
else
|
else
|
||||||
@ -4598,6 +4618,33 @@ s_alpha_loc (ignore)
|
|||||||
dwarf2_directive_loc (0);
|
dwarf2_directive_loc (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
s_alpha_stab (n)
|
||||||
|
int n;
|
||||||
|
{
|
||||||
|
/* If we've been undecided about mdebug, make up our minds in favour. */
|
||||||
|
if (alpha_flag_mdebug < 0)
|
||||||
|
{
|
||||||
|
segT sec = subseg_new(".mdebug", 0);
|
||||||
|
bfd_set_section_flags(stdoutput, sec, SEC_HAS_CONTENTS|SEC_READONLY);
|
||||||
|
bfd_set_section_alignment(stdoutput, sec, 3);
|
||||||
|
|
||||||
|
ecoff_read_begin_hook ();
|
||||||
|
|
||||||
|
if (first_file_directive)
|
||||||
|
{
|
||||||
|
char *save_ilp = input_line_pointer;
|
||||||
|
input_line_pointer = first_file_directive;
|
||||||
|
ecoff_directive_file (0);
|
||||||
|
input_line_pointer = save_ilp;
|
||||||
|
free (first_file_directive);
|
||||||
|
}
|
||||||
|
|
||||||
|
alpha_flag_mdebug = 1;
|
||||||
|
}
|
||||||
|
s_stab (n);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
s_alpha_coff_wrapper (which)
|
s_alpha_coff_wrapper (which)
|
||||||
int which;
|
int which;
|
||||||
@ -5474,6 +5521,8 @@ const pseudo_typeS md_pseudo_table[] =
|
|||||||
{"prologue", s_alpha_prologue, 0},
|
{"prologue", s_alpha_prologue, 0},
|
||||||
{"file", s_alpha_file, 5},
|
{"file", s_alpha_file, 5},
|
||||||
{"loc", s_alpha_loc, 9},
|
{"loc", s_alpha_loc, 9},
|
||||||
|
{"stabs", s_alpha_stab, 's'},
|
||||||
|
{"stabn", s_alpha_stab, 'n'},
|
||||||
/* COFF debugging related pseudos. */
|
/* COFF debugging related pseudos. */
|
||||||
{"begin", s_alpha_coff_wrapper, 0},
|
{"begin", s_alpha_coff_wrapper, 0},
|
||||||
{"bend", s_alpha_coff_wrapper, 1},
|
{"bend", s_alpha_coff_wrapper, 1},
|
||||||
|
@ -444,6 +444,10 @@ dwarf2_gen_line_info (addr, l)
|
|||||||
/* No filename, no filnum => no play. */
|
/* No filename, no filnum => no play. */
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* Early out for as-yet incomplete location information. */
|
||||||
|
if (l->line == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
/* Must save these before the subseg_new call, as that call will change
|
/* Must save these before the subseg_new call, as that call will change
|
||||||
them. */
|
them. */
|
||||||
saved_seg = now_seg;
|
saved_seg = now_seg;
|
||||||
|
Loading…
Reference in New Issue
Block a user