mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
2002-06-14 H.J. Lu <hjl@gnu.org>
Daniel Jacobowitz <drow@mvista.com> * dwarf2dbg.h (dwarf2_directive_file): Return char *. * dwarf2dbg.c (dwarf2_directive_file): Return filename. * config/tc-mips.c (s_mips_file): Call s_app_file_string and new_logical_line for the first .file directive. * read.c (s_app_file_string): New function. (s_app_file): Call it. * read.h (s_app_file_string): Add declaration. 2002-06-14 Daniel Jacobowitz <drow@mvista.com> * configure.in: Remove MIPS_STABS_ELF. * configure: Regenerated. * config.in: Regenerated. * config/obj-elf.h (ECOFF_DEBUGGING): Define to mips_flag_mdebug for MIPS targets. * config/tc-mips.c (mips_pseudo_table): Remove #ifdef around ".extern". (pdr_seg): Declare unconditionally. (md_begin): Always generate .pdr unless ECOFF_DEBUGGING or not ELF. (s_mips_end): Likewise. Generate stabs function markers. (s_mips_ent): Generate stabs function markers. (s_mips_frame): Always generate .pdr unless ECOFF_DEBUGGING or not ELF. (s_mips_mask): Likewise. (mips_flag_mdebug): New. (md_longopts): Add "mdebug" and "no-mdebug". (md_parse_options): Add OPTION_MDEBUG and OPTION_NO_MDEBUG. (mips_after_parse_args): Set mips_flag_mdebug. * doc/as.texinfo: Add "-mdebug" and "-no-mdebug" for MIPS. 2002-06-14 Daniel Jacobowitz <drow@mvista.com> * gas/mips/lineno.d: Use --gstabs. * gas/mips/mips.exp (lineno.s): Remove XFAIL.
This commit is contained in:
parent
a829521801
commit
ecb4347ade
@ -1,3 +1,36 @@
|
|||||||
|
2002-06-14 H.J. Lu <hjl@gnu.org>
|
||||||
|
Daniel Jacobowitz <drow@mvista.com>
|
||||||
|
|
||||||
|
* dwarf2dbg.h (dwarf2_directive_file): Return char *.
|
||||||
|
* dwarf2dbg.c (dwarf2_directive_file): Return filename.
|
||||||
|
* config/tc-mips.c (s_mips_file): Call s_app_file_string
|
||||||
|
and new_logical_line for the first .file directive.
|
||||||
|
* read.c (s_app_file_string): New function.
|
||||||
|
(s_app_file): Call it.
|
||||||
|
* read.h (s_app_file_string): Add declaration.
|
||||||
|
|
||||||
|
2002-06-14 Daniel Jacobowitz <drow@mvista.com>
|
||||||
|
|
||||||
|
* configure.in: Remove MIPS_STABS_ELF.
|
||||||
|
* configure: Regenerated.
|
||||||
|
* config.in: Regenerated.
|
||||||
|
* config/obj-elf.h (ECOFF_DEBUGGING): Define to mips_flag_mdebug
|
||||||
|
for MIPS targets.
|
||||||
|
* config/tc-mips.c (mips_pseudo_table): Remove #ifdef around
|
||||||
|
".extern".
|
||||||
|
(pdr_seg): Declare unconditionally.
|
||||||
|
(md_begin): Always generate .pdr unless ECOFF_DEBUGGING or not ELF.
|
||||||
|
(s_mips_end): Likewise. Generate stabs function markers.
|
||||||
|
(s_mips_ent): Generate stabs function markers.
|
||||||
|
(s_mips_frame): Always generate .pdr unless ECOFF_DEBUGGING or not
|
||||||
|
ELF.
|
||||||
|
(s_mips_mask): Likewise.
|
||||||
|
(mips_flag_mdebug): New.
|
||||||
|
(md_longopts): Add "mdebug" and "no-mdebug".
|
||||||
|
(md_parse_options): Add OPTION_MDEBUG and OPTION_NO_MDEBUG.
|
||||||
|
(mips_after_parse_args): Set mips_flag_mdebug.
|
||||||
|
* doc/as.texinfo: Add "-mdebug" and "-no-mdebug" for MIPS.
|
||||||
|
|
||||||
2002-06-13 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
|
2002-06-13 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
|
||||||
|
|
||||||
* config/tc-mips.c (md_apply_fix3): Don't subtract the symbol's
|
* config/tc-mips.c (md_apply_fix3): Don't subtract the symbol's
|
||||||
|
@ -130,9 +130,6 @@
|
|||||||
/* Define if you have the <sys/param.h> header file. */
|
/* Define if you have the <sys/param.h> header file. */
|
||||||
#undef HAVE_SYS_PARAM_H
|
#undef HAVE_SYS_PARAM_H
|
||||||
|
|
||||||
/* Define if you have the <sys/stat.h> header file. */
|
|
||||||
#undef HAVE_SYS_STAT_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/types.h> header file. */
|
/* Define if you have the <sys/types.h> header file. */
|
||||||
#undef HAVE_SYS_TYPES_H
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
@ -163,9 +160,6 @@
|
|||||||
/* Define as 1 if big endian. */
|
/* Define as 1 if big endian. */
|
||||||
#undef TARGET_BYTES_BIG_ENDIAN
|
#undef TARGET_BYTES_BIG_ENDIAN
|
||||||
|
|
||||||
/* Use ELF stabs for MIPS, not ECOFF stabs */
|
|
||||||
#undef MIPS_STABS_ELF
|
|
||||||
|
|
||||||
/* Default architecture. */
|
/* Default architecture. */
|
||||||
#undef DEFAULT_ARCH
|
#undef DEFAULT_ARCH
|
||||||
|
|
||||||
|
@ -48,11 +48,8 @@ extern int alpha_flag_mdebug;
|
|||||||
|
|
||||||
/* For now, always set ECOFF_DEBUGGING for a MIPS target. */
|
/* For now, always set ECOFF_DEBUGGING for a MIPS target. */
|
||||||
#ifdef TC_MIPS
|
#ifdef TC_MIPS
|
||||||
#ifdef MIPS_STABS_ELF
|
#define ECOFF_DEBUGGING mips_flag_mdebug
|
||||||
#define ECOFF_DEBUGGING 0
|
extern int mips_flag_mdebug;
|
||||||
#else
|
|
||||||
#define ECOFF_DEBUGGING (debug_type == DEBUG_ECOFF)
|
|
||||||
#endif /* MIPS_STABS_ELF */
|
|
||||||
#endif /* TC_MIPS */
|
#endif /* TC_MIPS */
|
||||||
|
|
||||||
#ifdef OBJ_MAYBE_ECOFF
|
#ifdef OBJ_MAYBE_ECOFF
|
||||||
|
@ -77,6 +77,8 @@ static int mips_output_flavor () { return OUTPUT_FLAVOR; }
|
|||||||
#define ECOFF_DEBUGGING 0
|
#define ECOFF_DEBUGGING 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int mips_flag_mdebug = -1;
|
||||||
|
|
||||||
#include "ecoff.h"
|
#include "ecoff.h"
|
||||||
|
|
||||||
#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
|
#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
|
||||||
@ -885,9 +887,7 @@ static const pseudo_typeS mips_pseudo_table[] =
|
|||||||
{"text", s_change_sec, 't'},
|
{"text", s_change_sec, 't'},
|
||||||
{"word", s_cons, 2},
|
{"word", s_cons, 2},
|
||||||
|
|
||||||
#ifdef MIPS_STABS_ELF
|
|
||||||
{ "extern", ecoff_directive_extern, 0},
|
{ "extern", ecoff_directive_extern, 0},
|
||||||
#endif
|
|
||||||
|
|
||||||
{ NULL, NULL, 0 },
|
{ NULL, NULL, 0 },
|
||||||
};
|
};
|
||||||
@ -967,11 +967,10 @@ static boolean imm_unmatched_hi;
|
|||||||
|
|
||||||
static boolean mips16_small, mips16_ext;
|
static boolean mips16_small, mips16_ext;
|
||||||
|
|
||||||
#ifdef MIPS_STABS_ELF
|
/* The pdr segment for per procedure frame/regmask info. Not used for
|
||||||
/* The pdr segment for per procedure frame/regmask info */
|
ECOFF debugging. */
|
||||||
|
|
||||||
static segT pdr_seg;
|
static segT pdr_seg;
|
||||||
#endif
|
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
mips_isa_to_str (isa)
|
mips_isa_to_str (isa)
|
||||||
@ -1224,12 +1223,15 @@ md_begin ()
|
|||||||
SEC_HAS_CONTENTS | SEC_READONLY);
|
SEC_HAS_CONTENTS | SEC_READONLY);
|
||||||
(void) bfd_set_section_alignment (stdoutput, sec, 2);
|
(void) bfd_set_section_alignment (stdoutput, sec, 2);
|
||||||
}
|
}
|
||||||
|
#ifdef OBJ_ELF
|
||||||
#ifdef MIPS_STABS_ELF
|
else if (OUTPUT_FLAVOR == bfd_target_elf_flavour)
|
||||||
pdr_seg = subseg_new (".pdr", (subsegT) 0);
|
{
|
||||||
(void) bfd_set_section_flags (stdoutput, pdr_seg,
|
pdr_seg = subseg_new (".pdr", (subsegT) 0);
|
||||||
SEC_READONLY | SEC_RELOC | SEC_DEBUGGING);
|
(void) bfd_set_section_flags (stdoutput, pdr_seg,
|
||||||
(void) bfd_set_section_alignment (stdoutput, pdr_seg, 2);
|
SEC_READONLY | SEC_RELOC
|
||||||
|
| SEC_DEBUGGING);
|
||||||
|
(void) bfd_set_section_alignment (stdoutput, pdr_seg, 2);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
subseg_set (seg, subseg);
|
subseg_set (seg, subseg);
|
||||||
@ -9929,6 +9931,10 @@ struct option md_longopts[] =
|
|||||||
{"n32", no_argument, NULL, OPTION_N32},
|
{"n32", no_argument, NULL, OPTION_N32},
|
||||||
#define OPTION_64 (OPTION_ELF_BASE + 6)
|
#define OPTION_64 (OPTION_ELF_BASE + 6)
|
||||||
{"64", no_argument, NULL, OPTION_64},
|
{"64", no_argument, NULL, OPTION_64},
|
||||||
|
#define OPTION_MDEBUG (OPTION_ELF_BASE + 7)
|
||||||
|
{"mdebug", no_argument, NULL, OPTION_MDEBUG},
|
||||||
|
#define OPTION_NO_MDEBUG (OPTION_ELF_BASE + 8)
|
||||||
|
{"no-mdebug", no_argument, NULL, OPTION_NO_MDEBUG},
|
||||||
#endif /* OBJ_ELF */
|
#endif /* OBJ_ELF */
|
||||||
{NULL, no_argument, NULL, 0}
|
{NULL, no_argument, NULL, 0}
|
||||||
};
|
};
|
||||||
@ -10295,6 +10301,16 @@ md_parse_option (c, arg)
|
|||||||
mips_7000_hilo_fix = false;
|
mips_7000_hilo_fix = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef OBJ_ELF
|
||||||
|
case OPTION_MDEBUG:
|
||||||
|
mips_flag_mdebug = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case OPTION_NO_MDEBUG:
|
||||||
|
mips_flag_mdebug = false;
|
||||||
|
break;
|
||||||
|
#endif /* OBJ_ELF */
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -10650,6 +10666,16 @@ mips_after_parse_args ()
|
|||||||
|
|
||||||
if (HAVE_NEWABI)
|
if (HAVE_NEWABI)
|
||||||
mips_big_got = 1;
|
mips_big_got = 1;
|
||||||
|
|
||||||
|
if (mips_flag_mdebug < 0)
|
||||||
|
{
|
||||||
|
#ifdef OBJ_MAYBE_ECOFF
|
||||||
|
if (OUTPUT_FLAVOR == bfd_target_ecoff_flavour)
|
||||||
|
mips_flag_mdebug = 1;
|
||||||
|
else
|
||||||
|
#endif /* OBJ_MAYBE_ECOFF */
|
||||||
|
mips_flag_mdebug = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -13365,13 +13391,30 @@ static void
|
|||||||
s_mips_file (x)
|
s_mips_file (x)
|
||||||
int x ATTRIBUTE_UNUSED;
|
int x ATTRIBUTE_UNUSED;
|
||||||
{
|
{
|
||||||
|
static int first_file_directive = 0;
|
||||||
|
|
||||||
if (ECOFF_DEBUGGING)
|
if (ECOFF_DEBUGGING)
|
||||||
{
|
{
|
||||||
get_number ();
|
get_number ();
|
||||||
s_app_file (0);
|
s_app_file (0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
dwarf2_directive_file (0);
|
{
|
||||||
|
char *filename;
|
||||||
|
|
||||||
|
filename = dwarf2_directive_file (0);
|
||||||
|
|
||||||
|
/* Versions of GCC up to 3.1 start files with a ".file"
|
||||||
|
directive even for stabs output. Make sure that this
|
||||||
|
".file" is handled. Note that you need a version of GCC
|
||||||
|
after 3.1 in order to support DWARF-2 on MIPS. */
|
||||||
|
if (filename != NULL && ! first_file_directive)
|
||||||
|
{
|
||||||
|
(void) new_logical_line (filename, -1);
|
||||||
|
s_app_file_string (filename);
|
||||||
|
}
|
||||||
|
first_file_directive = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The .loc directive, implying DWARF-2. */
|
/* The .loc directive, implying DWARF-2. */
|
||||||
@ -13432,46 +13475,52 @@ s_mips_end (x)
|
|||||||
assert (S_GET_NAME (p));
|
assert (S_GET_NAME (p));
|
||||||
if (strcmp (S_GET_NAME (p), S_GET_NAME (cur_proc_ptr->isym)))
|
if (strcmp (S_GET_NAME (p), S_GET_NAME (cur_proc_ptr->isym)))
|
||||||
as_warn (_(".end symbol does not match .ent symbol."));
|
as_warn (_(".end symbol does not match .ent symbol."));
|
||||||
|
|
||||||
|
if (debug_type == DEBUG_STABS)
|
||||||
|
stabs_generate_asm_endfunc (S_GET_NAME (p),
|
||||||
|
S_GET_NAME (p));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
as_warn (_(".end directive missing or unknown symbol"));
|
as_warn (_(".end directive missing or unknown symbol"));
|
||||||
|
|
||||||
#ifdef MIPS_STABS_ELF
|
#ifdef OBJ_ELF
|
||||||
{
|
/* Generate a .pdr section. */
|
||||||
segT saved_seg = now_seg;
|
if (OUTPUT_FLAVOR == bfd_target_elf_flavour && ! ECOFF_DEBUGGING)
|
||||||
subsegT saved_subseg = now_subseg;
|
{
|
||||||
valueT dot;
|
segT saved_seg = now_seg;
|
||||||
expressionS exp;
|
subsegT saved_subseg = now_subseg;
|
||||||
char *fragp;
|
valueT dot;
|
||||||
|
expressionS exp;
|
||||||
|
char *fragp;
|
||||||
|
|
||||||
dot = frag_now_fix ();
|
dot = frag_now_fix ();
|
||||||
|
|
||||||
#ifdef md_flush_pending_output
|
#ifdef md_flush_pending_output
|
||||||
md_flush_pending_output ();
|
md_flush_pending_output ();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
assert (pdr_seg);
|
assert (pdr_seg);
|
||||||
subseg_set (pdr_seg, 0);
|
subseg_set (pdr_seg, 0);
|
||||||
|
|
||||||
/* Write the symbol. */
|
/* Write the symbol. */
|
||||||
exp.X_op = O_symbol;
|
exp.X_op = O_symbol;
|
||||||
exp.X_add_symbol = p;
|
exp.X_add_symbol = p;
|
||||||
exp.X_add_number = 0;
|
exp.X_add_number = 0;
|
||||||
emit_expr (&exp, 4);
|
emit_expr (&exp, 4);
|
||||||
|
|
||||||
fragp = frag_more (7 * 4);
|
fragp = frag_more (7 * 4);
|
||||||
|
|
||||||
md_number_to_chars (fragp, (valueT) cur_proc_ptr->reg_mask, 4);
|
md_number_to_chars (fragp, (valueT) cur_proc_ptr->reg_mask, 4);
|
||||||
md_number_to_chars (fragp + 4, (valueT) cur_proc_ptr->reg_offset, 4);
|
md_number_to_chars (fragp + 4, (valueT) cur_proc_ptr->reg_offset, 4);
|
||||||
md_number_to_chars (fragp + 8, (valueT) cur_proc_ptr->fpreg_mask, 4);
|
md_number_to_chars (fragp + 8, (valueT) cur_proc_ptr->fpreg_mask, 4);
|
||||||
md_number_to_chars (fragp + 12, (valueT) cur_proc_ptr->fpreg_offset, 4);
|
md_number_to_chars (fragp + 12, (valueT) cur_proc_ptr->fpreg_offset, 4);
|
||||||
md_number_to_chars (fragp + 16, (valueT) cur_proc_ptr->frame_offset, 4);
|
md_number_to_chars (fragp + 16, (valueT) cur_proc_ptr->frame_offset, 4);
|
||||||
md_number_to_chars (fragp + 20, (valueT) cur_proc_ptr->frame_reg, 4);
|
md_number_to_chars (fragp + 20, (valueT) cur_proc_ptr->frame_reg, 4);
|
||||||
md_number_to_chars (fragp + 24, (valueT) cur_proc_ptr->pc_reg, 4);
|
md_number_to_chars (fragp + 24, (valueT) cur_proc_ptr->pc_reg, 4);
|
||||||
|
|
||||||
subseg_set (saved_seg, saved_subseg);
|
subseg_set (saved_seg, saved_subseg);
|
||||||
}
|
}
|
||||||
#endif /* MIPS_STABS_ELF */
|
#endif /* OBJ_ELF */
|
||||||
|
|
||||||
cur_proc_ptr = NULL;
|
cur_proc_ptr = NULL;
|
||||||
}
|
}
|
||||||
@ -13525,6 +13574,10 @@ s_mips_ent (aent)
|
|||||||
symbol_get_bfdsym (symbolP)->flags |= BSF_FUNCTION;
|
symbol_get_bfdsym (symbolP)->flags |= BSF_FUNCTION;
|
||||||
|
|
||||||
++numprocs;
|
++numprocs;
|
||||||
|
|
||||||
|
if (debug_type == DEBUG_STABS)
|
||||||
|
stabs_generate_asm_func (S_GET_NAME (symbolP),
|
||||||
|
S_GET_NAME (symbolP));
|
||||||
}
|
}
|
||||||
|
|
||||||
demand_empty_rest_of_line ();
|
demand_empty_rest_of_line ();
|
||||||
@ -13540,36 +13593,38 @@ static void
|
|||||||
s_mips_frame (ignore)
|
s_mips_frame (ignore)
|
||||||
int ignore ATTRIBUTE_UNUSED;
|
int ignore ATTRIBUTE_UNUSED;
|
||||||
{
|
{
|
||||||
#ifdef MIPS_STABS_ELF
|
#ifdef OBJ_ELF
|
||||||
|
if (OUTPUT_FLAVOR == bfd_target_elf_flavour && ! ECOFF_DEBUGGING)
|
||||||
long val;
|
|
||||||
|
|
||||||
if (cur_proc_ptr == (procS *) NULL)
|
|
||||||
{
|
{
|
||||||
as_warn (_(".frame outside of .ent"));
|
long val;
|
||||||
|
|
||||||
|
if (cur_proc_ptr == (procS *) NULL)
|
||||||
|
{
|
||||||
|
as_warn (_(".frame outside of .ent"));
|
||||||
|
demand_empty_rest_of_line ();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
cur_proc_ptr->frame_reg = tc_get_register (1);
|
||||||
|
|
||||||
|
SKIP_WHITESPACE ();
|
||||||
|
if (*input_line_pointer++ != ','
|
||||||
|
|| get_absolute_expression_and_terminator (&val) != ',')
|
||||||
|
{
|
||||||
|
as_warn (_("Bad .frame directive"));
|
||||||
|
--input_line_pointer;
|
||||||
|
demand_empty_rest_of_line ();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
cur_proc_ptr->frame_offset = val;
|
||||||
|
cur_proc_ptr->pc_reg = tc_get_register (0);
|
||||||
|
|
||||||
demand_empty_rest_of_line ();
|
demand_empty_rest_of_line ();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
cur_proc_ptr->frame_reg = tc_get_register (1);
|
#endif /* OBJ_ELF */
|
||||||
|
s_ignore (ignore);
|
||||||
SKIP_WHITESPACE ();
|
|
||||||
if (*input_line_pointer++ != ','
|
|
||||||
|| get_absolute_expression_and_terminator (&val) != ',')
|
|
||||||
{
|
|
||||||
as_warn (_("Bad .frame directive"));
|
|
||||||
--input_line_pointer;
|
|
||||||
demand_empty_rest_of_line ();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
cur_proc_ptr->frame_offset = val;
|
|
||||||
cur_proc_ptr->pc_reg = tc_get_register (0);
|
|
||||||
|
|
||||||
demand_empty_rest_of_line ();
|
|
||||||
#else
|
|
||||||
s_ignore (ignore);
|
|
||||||
#endif /* MIPS_STABS_ELF */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The .fmask and .mask directives. If the mdebug section is present
|
/* The .fmask and .mask directives. If the mdebug section is present
|
||||||
@ -13582,41 +13637,44 @@ static void
|
|||||||
s_mips_mask (reg_type)
|
s_mips_mask (reg_type)
|
||||||
char reg_type;
|
char reg_type;
|
||||||
{
|
{
|
||||||
#ifdef MIPS_STABS_ELF
|
#ifdef OBJ_ELF
|
||||||
long mask, off;
|
if (OUTPUT_FLAVOR == bfd_target_elf_flavour && ! ECOFF_DEBUGGING)
|
||||||
|
|
||||||
if (cur_proc_ptr == (procS *) NULL)
|
|
||||||
{
|
{
|
||||||
as_warn (_(".mask/.fmask outside of .ent"));
|
long mask, off;
|
||||||
|
|
||||||
|
if (cur_proc_ptr == (procS *) NULL)
|
||||||
|
{
|
||||||
|
as_warn (_(".mask/.fmask outside of .ent"));
|
||||||
|
demand_empty_rest_of_line ();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (get_absolute_expression_and_terminator (&mask) != ',')
|
||||||
|
{
|
||||||
|
as_warn (_("Bad .mask/.fmask directive"));
|
||||||
|
--input_line_pointer;
|
||||||
|
demand_empty_rest_of_line ();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
off = get_absolute_expression ();
|
||||||
|
|
||||||
|
if (reg_type == 'F')
|
||||||
|
{
|
||||||
|
cur_proc_ptr->fpreg_mask = mask;
|
||||||
|
cur_proc_ptr->fpreg_offset = off;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cur_proc_ptr->reg_mask = mask;
|
||||||
|
cur_proc_ptr->reg_offset = off;
|
||||||
|
}
|
||||||
|
|
||||||
demand_empty_rest_of_line ();
|
demand_empty_rest_of_line ();
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (get_absolute_expression_and_terminator (&mask) != ',')
|
|
||||||
{
|
|
||||||
as_warn (_("Bad .mask/.fmask directive"));
|
|
||||||
--input_line_pointer;
|
|
||||||
demand_empty_rest_of_line ();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
off = get_absolute_expression ();
|
|
||||||
|
|
||||||
if (reg_type == 'F')
|
|
||||||
{
|
|
||||||
cur_proc_ptr->fpreg_mask = mask;
|
|
||||||
cur_proc_ptr->fpreg_offset = off;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
#endif /* OBJ_ELF */
|
||||||
cur_proc_ptr->reg_mask = mask;
|
s_ignore (reg_type);
|
||||||
cur_proc_ptr->reg_offset = off;
|
|
||||||
}
|
|
||||||
|
|
||||||
demand_empty_rest_of_line ();
|
|
||||||
#else
|
|
||||||
s_ignore (reg_type);
|
|
||||||
#endif /* MIPS_STABS_ELF */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The .loc directive. */
|
/* The .loc directive. */
|
||||||
|
479
gas/configure
vendored
479
gas/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -170,7 +170,6 @@ changequote([,])dnl
|
|||||||
dev=no
|
dev=no
|
||||||
bfd_gas=no
|
bfd_gas=no
|
||||||
em=generic
|
em=generic
|
||||||
mips_stabs_elf=
|
|
||||||
|
|
||||||
# assign object format
|
# assign object format
|
||||||
case ${generic_target} in
|
case ${generic_target} in
|
||||||
@ -373,13 +372,13 @@ changequote([,])dnl
|
|||||||
mips-*-irix*) fmt=ecoff ;;
|
mips-*-irix*) fmt=ecoff ;;
|
||||||
mips-*-lnews*) fmt=ecoff em=lnews ;;
|
mips-*-lnews*) fmt=ecoff em=lnews ;;
|
||||||
mips-*-riscos*) fmt=ecoff ;;
|
mips-*-riscos*) fmt=ecoff ;;
|
||||||
mips*-*-linux*) fmt=elf em=tmips mips_stabs_elf=y ;;
|
mips*-*-linux*) fmt=elf em=tmips ;;
|
||||||
mips-*-sysv4*MP* | mips-*-gnu*)
|
mips-*-sysv4*MP* | mips-*-gnu*)
|
||||||
fmt=elf em=tmips ;;
|
fmt=elf em=tmips ;;
|
||||||
mips-*-sysv*) fmt=ecoff ;;
|
mips-*-sysv*) fmt=ecoff ;;
|
||||||
mips-*-elf* | mips-*-rtems* | mips-*-netbsd* | mips-*-openbsd*)
|
mips-*-elf* | mips-*-rtems* | mips-*-netbsd* | mips-*-openbsd*)
|
||||||
fmt=elf ;;
|
fmt=elf ;;
|
||||||
mips-*-vxworks*) fmt=elf mips_stabs_elf=y ;;
|
mips-*-vxworks*) fmt=elf ;;
|
||||||
mmix-*-*) fmt=elf bfd_gas=yes ;;
|
mmix-*-*) fmt=elf bfd_gas=yes ;;
|
||||||
mn10200-*-*) fmt=elf bfd_gas=yes ;;
|
mn10200-*-*) fmt=elf bfd_gas=yes ;;
|
||||||
mn10300-*-*) fmt=elf bfd_gas=yes ;;
|
mn10300-*-*) fmt=elf bfd_gas=yes ;;
|
||||||
@ -524,11 +523,6 @@ changequote([,])dnl
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x${mips_stabs_elf} != x; then
|
|
||||||
AC_DEFINE(MIPS_STABS_ELF, 1,
|
|
||||||
[Use ELF stabs for MIPS, not ECOFF stabs])
|
|
||||||
fi
|
|
||||||
|
|
||||||
case ${cpu_type}-${fmt} in
|
case ${cpu_type}-${fmt} in
|
||||||
alpha*-*) bfd_gas=yes ;;
|
alpha*-*) bfd_gas=yes ;;
|
||||||
arm-*) bfd_gas=yes ;;
|
arm-*) bfd_gas=yes ;;
|
||||||
|
@ -382,6 +382,7 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
|
|||||||
[@b{-mips16}] [@b{-no-mips16}]
|
[@b{-mips16}] [@b{-no-mips16}]
|
||||||
[@b{-mips3d}] [@b{-no-mips3d}]
|
[@b{-mips3d}] [@b{-no-mips3d}]
|
||||||
[@b{-mdmx}] [@b{-no-mdmx}]
|
[@b{-mdmx}] [@b{-no-mdmx}]
|
||||||
|
[@b{-mdebug}] [@b{-no-mdebug}]
|
||||||
@end ifset
|
@end ifset
|
||||||
@ifset MMIX
|
@ifset MMIX
|
||||||
|
|
||||||
@ -892,6 +893,11 @@ Schedule and tune for a particular @sc{mips} cpu.
|
|||||||
Cause nops to be inserted if the read of the destination register
|
Cause nops to be inserted if the read of the destination register
|
||||||
of an mfhi or mflo instruction occurs in the following two instructions.
|
of an mfhi or mflo instruction occurs in the following two instructions.
|
||||||
|
|
||||||
|
@item -mdebug
|
||||||
|
@itemx -no-mdebug
|
||||||
|
Cause stabs-style debugging output to go into an ECOFF-style .mdebug
|
||||||
|
section instead of the standard ELF .stabs sections.
|
||||||
|
|
||||||
@item -mgp32
|
@item -mgp32
|
||||||
@itemx -mfp32
|
@itemx -mfp32
|
||||||
The register sizes are normally inferred from the ISA and ABI, but these
|
The register sizes are normally inferred from the ISA and ABI, but these
|
||||||
|
@ -344,9 +344,13 @@ get_filenum (filename)
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle the .file directive. */
|
/* Handle two forms of .file directive:
|
||||||
|
- Pass .file "source.c" to s_app_file
|
||||||
|
- Handle .file 1 "source.c" by adding an entry to the DWARF-2 file table
|
||||||
|
|
||||||
void
|
If an entry is added to the file table, return a pointer to the filename. */
|
||||||
|
|
||||||
|
char *
|
||||||
dwarf2_directive_file (dummy)
|
dwarf2_directive_file (dummy)
|
||||||
int dummy ATTRIBUTE_UNUSED;
|
int dummy ATTRIBUTE_UNUSED;
|
||||||
{
|
{
|
||||||
@ -359,7 +363,7 @@ dwarf2_directive_file (dummy)
|
|||||||
if (*input_line_pointer == '"')
|
if (*input_line_pointer == '"')
|
||||||
{
|
{
|
||||||
s_app_file (0);
|
s_app_file (0);
|
||||||
return;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
num = get_absolute_expression ();
|
num = get_absolute_expression ();
|
||||||
@ -369,13 +373,13 @@ dwarf2_directive_file (dummy)
|
|||||||
if (num < 1)
|
if (num < 1)
|
||||||
{
|
{
|
||||||
as_bad (_("file number less than one"));
|
as_bad (_("file number less than one"));
|
||||||
return;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (num < (int) files_in_use && files[num].filename != 0)
|
if (num < (int) files_in_use && files[num].filename != 0)
|
||||||
{
|
{
|
||||||
as_bad (_("file number %ld already allocated"), (long) num);
|
as_bad (_("file number %ld already allocated"), (long) num);
|
||||||
return;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (num >= (int) files_allocated)
|
if (num >= (int) files_allocated)
|
||||||
@ -393,6 +397,8 @@ dwarf2_directive_file (dummy)
|
|||||||
files[num].filename = filename;
|
files[num].filename = filename;
|
||||||
files[num].dir = 0;
|
files[num].dir = 0;
|
||||||
files_in_use = num + 1;
|
files_in_use = num + 1;
|
||||||
|
|
||||||
|
return filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -36,7 +36,7 @@ struct dwarf2_line_info {
|
|||||||
/* Implements the .file FILENO "FILENAME" directive. FILENO can be 0
|
/* Implements the .file FILENO "FILENAME" directive. FILENO can be 0
|
||||||
to indicate that no file number has been assigned. All real file
|
to indicate that no file number has been assigned. All real file
|
||||||
number must be >0. */
|
number must be >0. */
|
||||||
extern void dwarf2_directive_file PARAMS ((int dummy));
|
extern char *dwarf2_directive_file PARAMS ((int dummy));
|
||||||
|
|
||||||
/* Implements the .loc FILENO LINENO [COLUMN] directive. FILENO is
|
/* Implements the .loc FILENO LINENO [COLUMN] directive. FILENO is
|
||||||
the file number, LINENO the line number and the (optional) COLUMN
|
the file number, LINENO the line number and the (optional) COLUMN
|
||||||
|
25
gas/read.c
25
gas/read.c
@ -1571,6 +1571,20 @@ s_data (ignore)
|
|||||||
definition for .file; the APPFILE argument is 1 for .appfile, 0 for
|
definition for .file; the APPFILE argument is 1 for .appfile, 0 for
|
||||||
.file. */
|
.file. */
|
||||||
|
|
||||||
|
void
|
||||||
|
s_app_file_string (file)
|
||||||
|
char *file;
|
||||||
|
{
|
||||||
|
#ifdef LISTING
|
||||||
|
if (listing)
|
||||||
|
listing_source_file (file);
|
||||||
|
#endif
|
||||||
|
register_dependency (file);
|
||||||
|
#ifdef obj_app_file
|
||||||
|
obj_app_file (file);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
s_app_file (appfile)
|
s_app_file (appfile)
|
||||||
int appfile;
|
int appfile;
|
||||||
@ -1596,16 +1610,7 @@ s_app_file (appfile)
|
|||||||
|
|
||||||
demand_empty_rest_of_line ();
|
demand_empty_rest_of_line ();
|
||||||
if (!may_omit)
|
if (!may_omit)
|
||||||
{
|
s_app_file_string (s);
|
||||||
#ifdef LISTING
|
|
||||||
if (listing)
|
|
||||||
listing_source_file (s);
|
|
||||||
#endif
|
|
||||||
register_dependency (s);
|
|
||||||
#ifdef obj_app_file
|
|
||||||
obj_app_file (s);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,6 +137,7 @@ extern void generate_lineno_debug PARAMS ((void));
|
|||||||
extern void s_abort PARAMS ((int)) ATTRIBUTE_NORETURN;
|
extern void s_abort PARAMS ((int)) ATTRIBUTE_NORETURN;
|
||||||
extern void s_align_bytes PARAMS ((int arg));
|
extern void s_align_bytes PARAMS ((int arg));
|
||||||
extern void s_align_ptwo PARAMS ((int));
|
extern void s_align_ptwo PARAMS ((int));
|
||||||
|
extern void s_app_file_string PARAMS ((char *));
|
||||||
extern void s_app_file PARAMS ((int));
|
extern void s_app_file PARAMS ((int));
|
||||||
extern void s_app_line PARAMS ((int));
|
extern void s_app_line PARAMS ((int));
|
||||||
extern void s_bad_endr PARAMS ((int));
|
extern void s_bad_endr PARAMS ((int));
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2002-06-14 Daniel Jacobowitz <drow@mvista.com>
|
||||||
|
|
||||||
|
* gas/mips/lineno.d: Use --gstabs.
|
||||||
|
* gas/mips/mips.exp (lineno.s): Remove XFAIL.
|
||||||
|
|
||||||
2002-06-12 Tom Rix <trix@redhat.com>
|
2002-06-12 Tom Rix <trix@redhat.com>
|
||||||
|
|
||||||
* gas/ppc/aix.exp: Run tests for all versions of powerpc AIX. Add
|
* gas/ppc/aix.exp: Run tests for all versions of powerpc AIX. Add
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#objdump: -d -l -mmips:4000
|
#objdump: -d -l -mmips:4000
|
||||||
#name: assembly line numbers
|
#name: assembly line numbers
|
||||||
#as: -g -march=r4000
|
#as: --gstabs -march=r4000
|
||||||
|
|
||||||
|
|
||||||
.*: +file format .*mips.*
|
.*: +file format .*mips.*
|
||||||
|
@ -145,8 +145,6 @@ if { [istarget mips*-*-*] } then {
|
|||||||
run_dump_test "mips4650"
|
run_dump_test "mips4650"
|
||||||
run_dump_test "mips4100"
|
run_dump_test "mips4100"
|
||||||
run_dump_test "perfcount"
|
run_dump_test "perfcount"
|
||||||
# Linux uses ELF stabs, which doesn't support line number.
|
|
||||||
setup_xfail "mips*-*-*linux*"
|
|
||||||
run_dump_test "lineno"
|
run_dump_test "lineno"
|
||||||
run_dump_test "sync"
|
run_dump_test "sync"
|
||||||
run_dump_test "mips32"
|
run_dump_test "mips32"
|
||||||
|
Loading…
Reference in New Issue
Block a user