MIPS/GAS: Sanitize `.option picX' pseudo-op
gas/ * config/tc-mips.c (s_option): Sanitize `.option picX' pseudo-op. * testsuite/gas/mips/option-pic-1.d: New test. * testsuite/gas/mips/option-pic-2.l: New list test. * testsuite/gas/mips/option-pic-1.s: New test source. * testsuite/gas/mips/option-pic-2.s: New test source. * testsuite/gas/mips/mips.exp: Run the new tests.
This commit is contained in:
parent
668c5ebc09
commit
41a1578ed1
7 changed files with 56 additions and 1 deletions
|
@ -1,3 +1,13 @@
|
|||
2016-04-09 Maciej W. Rozycki <macro@imgtec.com>
|
||||
|
||||
* config/tc-mips.c (s_option): Sanitize `.option picX'
|
||||
pseudo-op.
|
||||
* testsuite/gas/mips/option-pic-1.d: New test.
|
||||
* testsuite/gas/mips/option-pic-2.l: New list test.
|
||||
* testsuite/gas/mips/option-pic-1.s: New test source.
|
||||
* testsuite/gas/mips/option-pic-2.s: New test source.
|
||||
* testsuite/gas/mips/mips.exp: Run the new tests.
|
||||
|
||||
2016-04-09 Maciej W. Rozycki <macro@imgtec.com>
|
||||
|
||||
* config/tc-mips.c (s_option): Reject `.option picX' if VxWorks
|
||||
|
|
|
@ -15472,7 +15472,7 @@ s_option (int x ATTRIBUTE_UNUSED)
|
|||
{
|
||||
/* FIXME: What does this mean? */
|
||||
}
|
||||
else if (strncmp (opt, "pic", 3) == 0)
|
||||
else if (strncmp (opt, "pic", 3) == 0 && ISDIGIT (opt[3]) && opt[4] == '\0')
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
|
@ -1474,6 +1474,9 @@ if { [istarget mips*-*-vxworks*] } {
|
|||
|
||||
run_dump_test "li-d"
|
||||
|
||||
run_dump_test "option-pic-1"
|
||||
run_list_test "option-pic-2" "" \
|
||||
"MIPS invalid PIC option"
|
||||
run_list_test "option-pic-vxworks-1" "-mvxworks-pic" \
|
||||
"MIPS invalid PIC option in VxWorks PIC"
|
||||
run_list_test "option-pic-vxworks-2" "-mvxworks-pic" \
|
||||
|
|
18
gas/testsuite/gas/mips/option-pic-1.d
Normal file
18
gas/testsuite/gas/mips/option-pic-1.d
Normal file
|
@ -0,0 +1,18 @@
|
|||
#objdump: -dr --prefix-addresses --show-raw-insn
|
||||
#name: MIPS PIC option
|
||||
#as: -32
|
||||
|
||||
.*: +file format .*mips.*
|
||||
|
||||
Disassembly of section \.text:
|
||||
[0-9a-f]+ <[^>]*> 8f820000 lw v0,0\(gp\)
|
||||
[ ]*[0-9a-f]+: R_MIPS_GOT16 bar
|
||||
[0-9a-f]+ <[^>]*> 3c020000 lui v0,0x0
|
||||
[ ]*[0-9a-f]+: R_MIPS_HI16 bar
|
||||
[0-9a-f]+ <[^>]*> 24420000 addiu v0,v0,0
|
||||
[ ]*[0-9a-f]+: R_MIPS_LO16 bar
|
||||
[0-9a-f]+ <[^>]*> 8f820000 lw v0,0\(gp\)
|
||||
[ ]*[0-9a-f]+: R_MIPS_GOT16 bar
|
||||
[0-9a-f]+ <[^>]*> 03e00008 jr ra
|
||||
[0-9a-f]+ <[^>]*> 00000000 nop
|
||||
\.\.\.
|
16
gas/testsuite/gas/mips/option-pic-1.s
Normal file
16
gas/testsuite/gas/mips/option-pic-1.s
Normal file
|
@ -0,0 +1,16 @@
|
|||
.abicalls
|
||||
.text
|
||||
.globl foo
|
||||
.ent foo
|
||||
foo:
|
||||
la $2, bar
|
||||
.option pic0 # Switch off!
|
||||
la $2, bar
|
||||
.option pic2 # Switch on!
|
||||
la $2, bar
|
||||
jr $ra
|
||||
.end foo
|
||||
|
||||
# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
|
||||
.align 4, 0
|
||||
.space 16
|
4
gas/testsuite/gas/mips/option-pic-2.l
Normal file
4
gas/testsuite/gas/mips/option-pic-2.l
Normal file
|
@ -0,0 +1,4 @@
|
|||
.*: Assembler messages:
|
||||
.*:2: Warning: unrecognized option "picfoo"
|
||||
.*:3: Warning: unrecognized option "pic0foo"
|
||||
.*:4: Error: junk at end of line, first unrecognized character is `f'
|
4
gas/testsuite/gas/mips/option-pic-2.s
Normal file
4
gas/testsuite/gas/mips/option-pic-2.s
Normal file
|
@ -0,0 +1,4 @@
|
|||
.abicalls
|
||||
.option picfoo
|
||||
.option pic0foo
|
||||
.option pic0 foo
|
Loading…
Reference in a new issue