* config/tc-mips.c (mips_pseudo_table): Add stabd and stabs entries.
	(s_mips_stab): Do not restrict to stabn only.

gas/testsuite/
	* gas/mips/mips16-stabs.s, gas/mips/mips16-stabs.d: New test.
	* gas/mips/mips.exp: Run it.
This commit is contained in:
Richard Sandiford 2013-05-02 22:30:11 +00:00
parent 13761a1136
commit 754e2bb948
6 changed files with 41 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2013-05-02 Richard Sandiford <rdsandiford@googlemail.com>
* config/tc-mips.c (mips_pseudo_table): Add stabd and stabs entries.
(s_mips_stab): Do not restrict to stabn only.
2013-05-02 Nick Clifton <nickc@redhat.com>
* config/tc-msp430.c: Add support for the MSP430X architecture.

View File

@ -1472,7 +1472,9 @@ static const pseudo_typeS mips_pseudo_table[] =
{"section", s_change_section, 0},
{"short", s_cons, 1},
{"single", s_float_cons, 'f'},
{"stabd", s_mips_stab, 'd'},
{"stabn", s_mips_stab, 'n'},
{"stabs", s_mips_stab, 's'},
{"text", s_change_sec, 't'},
{"word", s_cons, 2},
@ -17088,18 +17090,24 @@ s_insn (int ignore ATTRIBUTE_UNUSED)
demand_empty_rest_of_line ();
}
/* Handle a .stabn directive. We need these in order to mark a label
as being a mips16 text label correctly. Sometimes the compiler
will emit a label, followed by a .stabn, and then switch sections.
If the label and .stabn are in mips16 mode, then the label is
really a mips16 text label. */
/* Handle a .stab[snd] directive. Ideally these directives would be
implemented in a transparent way, so that removing them would not
have any effect on the generated instructions. However, s_stab
internally changes the section, so in practice we need to decide
now whether the preceding label marks compressed code. We do not
support changing the compression mode of a label after a .stab*
directive, such as in:
foo:
.stabs ...
.set mips16
so the current mode wins. */
static void
s_mips_stab (int type)
{
if (type == 'n')
mips_mark_labels ();
mips_mark_labels ();
s_stab (type);
}

View File

@ -1,3 +1,8 @@
2013-05-02 Richard Sandiford <rdsandiford@googlemail.com>
* gas/mips/mips16-stabs.s, gas/mips/mips16-stabs.d: New test.
* gas/mips/mips.exp: Run it.
2013-05-02 Nick Clifton <nickc@redhat.com>
* gas/all/gas.exp: Skip the DIFF1 test for the MSP430.

View File

@ -1086,6 +1086,7 @@ if { [istarget mips*-*-vxworks*] } {
if $has_newabi {
run_dump_test "mips16-dwarf2-n32"
}
run_dump_test "mips16-stabs"
}
if { !$no_mips16 } {
run_dump_test "mips16e-jrc"

View File

@ -0,0 +1,6 @@
#as: -mips3 -EB
#objdump: -dr
#...
0+ <foo>:
0: e820 jr ra
#pass

View File

@ -0,0 +1,8 @@
.align 2
.set mips16
.globl foo
.ent foo
foo:
.stabs "foo:F(0,49)",36,0,0,foo
jr $31
.end foo