gas/
* config/tc-mips.c (mips_fix_adjustable): On REL targets also reject PC-relative relocations. gas/testsuite/ * gas/mips/branch-misc-2.d: Adjust for relocation change. * gas/mips/branch-misc-2pic.d: Likewise. * gas/mips/branch-misc-4.d: New test for PC-relative relocation overflow. * gas/mips/branch-misc-4-64.d: Likewise. * gas/mips/branch-misc-4.s: Source for the new tests. * testsuite/gas/mips/mips.exp: Run the new tests.
This commit is contained in:
parent
5c4f07bae1
commit
ce70d90a3e
@ -1,3 +1,8 @@
|
||||
2011-02-28 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
* config/tc-mips.c (mips_fix_adjustable): On REL targets also
|
||||
reject PC-relative relocations.
|
||||
|
||||
2011-02-28 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
* config/tc-mips.c (md_convert_frag): Correct message
|
||||
|
@ -14248,8 +14248,12 @@ mips_fix_adjustable (fixS *fixp)
|
||||
&& (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_MERGE) != 0)
|
||||
return 0;
|
||||
|
||||
/* There is no place to store an in-place offset for JALR relocations. */
|
||||
if (fixp->fx_r_type == BFD_RELOC_MIPS_JALR && HAVE_IN_PLACE_ADDENDS)
|
||||
/* There is no place to store an in-place offset for JALR relocations.
|
||||
Likewise an in-range offset of PC-relative relocations may overflow
|
||||
the in-place relocatable field if recalculated against the start
|
||||
address of the symbol's containing section. */
|
||||
if (HAVE_IN_PLACE_ADDENDS
|
||||
&& (fixp->fx_pcrel || fixp->fx_r_type == BFD_RELOC_MIPS_JALR))
|
||||
return 0;
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
|
@ -1,3 +1,13 @@
|
||||
2011-02-28 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
* gas/mips/branch-misc-2.d: Adjust for relocation change.
|
||||
* gas/mips/branch-misc-2pic.d: Likewise.
|
||||
* gas/mips/branch-misc-4.d: New test for PC-relative relocation
|
||||
overflow.
|
||||
* gas/mips/branch-misc-4-64.d: Likewise.
|
||||
* gas/mips/branch-misc-4.s: Source for the new tests.
|
||||
* testsuite/gas/mips/mips.exp: Run the new tests.
|
||||
|
||||
2011-02-28 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
* gas/mips/relax-swap1.l: Adjust for message capitalization
|
||||
|
@ -39,6 +39,6 @@ Disassembly of section .text:
|
||||
[ ]*b0: R_MIPS_PC16 x2
|
||||
0+00b4 <[^>]*> 00000000 nop
|
||||
0+00b8 <[^>]*> 1000ffff b 000000b8 <g6\+0x10>
|
||||
[ ]*b8: R_MIPS_PC16 \.data
|
||||
[ ]*b8: R_MIPS_PC16 \.Ldata
|
||||
0+00bc <[^>]*> 00000000 nop
|
||||
\.\.\.
|
||||
|
@ -40,6 +40,6 @@ Disassembly of section .text:
|
||||
[ ]*b0: R_MIPS_PC16 x2
|
||||
0+00b4 <[^>]*> 00000000 nop
|
||||
0+00b8 <[^>]*> 1000ffff b 000000b8 <g6\+0x10>
|
||||
[ ]*b8: R_MIPS_PC16 \.data
|
||||
[ ]*b8: R_MIPS_PC16 \.Ldata
|
||||
0+00bc <[^>]*> 00000000 nop
|
||||
\.\.\.
|
||||
|
35
gas/testsuite/gas/mips/branch-misc-4-64.d
Normal file
35
gas/testsuite/gas/mips/branch-misc-4-64.d
Normal file
@ -0,0 +1,35 @@
|
||||
#objdump: -dr --prefix-addresses --show-raw-insn
|
||||
#name: MIPS branch-misc-4-64
|
||||
#as: -64
|
||||
#source: branch-misc-4.s
|
||||
|
||||
# Verify PC-relative relocations do not overflow.
|
||||
|
||||
.*: +file format .*mips.*
|
||||
|
||||
Disassembly of section \.text:
|
||||
\.\.\.
|
||||
[0-9a-f]+ <[^>]*> 10000000 b [0-9a-f]+ <foo\+0x[0-9a-f]+>
|
||||
[ ]*[0-9a-f]+: R_MIPS_PC16 bar\+0xf+fffc
|
||||
[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0xf+fffc
|
||||
[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0xf+fffc
|
||||
[0-9a-f]+ <[^>]*> 00000000 nop
|
||||
[0-9a-f]+ <[^>]*> 10000000 b [0-9a-f]+ <foo\+0x[0-9a-f]+>
|
||||
[ ]*[0-9a-f]+: R_MIPS_PC16 \.init\+0x4
|
||||
[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x4
|
||||
[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x4
|
||||
[0-9a-f]+ <[^>]*> 00000000 nop
|
||||
\.\.\.
|
||||
|
||||
Disassembly of section \.init:
|
||||
[0-9a-f]+ <[^>]*> 10000000 b [0-9a-f]+ <bar\+0x[0-9a-f]+>
|
||||
[ ]*[0-9a-f]+: R_MIPS_PC16 foo\+0xf+fffc
|
||||
[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0xf+fffc
|
||||
[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0xf+fffc
|
||||
[0-9a-f]+ <[^>]*> 00000000 nop
|
||||
[0-9a-f]+ <[^>]*> 10000000 b [0-9a-f]+ <bar\+0x[0-9a-f]+>
|
||||
[ ]*[0-9a-f]+: R_MIPS_PC16 \.text\+0x40004
|
||||
[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x40004
|
||||
[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x40004
|
||||
[0-9a-f]+ <[^>]*> 00000000 nop
|
||||
\.\.\.
|
26
gas/testsuite/gas/mips/branch-misc-4.d
Normal file
26
gas/testsuite/gas/mips/branch-misc-4.d
Normal file
@ -0,0 +1,26 @@
|
||||
#objdump: -dr --prefix-addresses --show-raw-insn
|
||||
#name: MIPS branch-misc-4
|
||||
#as: -32
|
||||
|
||||
# Verify PC-relative relocations do not overflow.
|
||||
|
||||
.*: +file format .*mips.*
|
||||
|
||||
Disassembly of section \.text:
|
||||
\.\.\.
|
||||
([0-9a-f]+) <[^>]*> 1000ffff b \1 <foo>
|
||||
[ ]*[0-9a-f]+: R_MIPS_PC16 bar
|
||||
[0-9a-f]+ <[^>]*> 00000000 nop
|
||||
([0-9a-f]+) <[^>]*> 1000ffff b \1 <\.Lfoo>
|
||||
[ ]*[0-9a-f]+: R_MIPS_PC16 \.Lbar
|
||||
[0-9a-f]+ <[^>]*> 00000000 nop
|
||||
\.\.\.
|
||||
|
||||
Disassembly of section \.init:
|
||||
([0-9a-f]+) <[^>]*> 1000ffff b \1 <bar>
|
||||
[ ]*[0-9a-f]+: R_MIPS_PC16 foo
|
||||
[0-9a-f]+ <[^>]*> 00000000 nop
|
||||
([0-9a-f]+) <[^>]*> 1000ffff b \1 <\.Lbar>
|
||||
[ ]*[0-9a-f]+: R_MIPS_PC16 \.Lfoo
|
||||
[0-9a-f]+ <[^>]*> 00000000 nop
|
||||
\.\.\.
|
28
gas/testsuite/gas/mips/branch-misc-4.s
Normal file
28
gas/testsuite/gas/mips/branch-misc-4.s
Normal file
@ -0,0 +1,28 @@
|
||||
# Source file to verify PC-relative relocations do not overflow.
|
||||
|
||||
.text
|
||||
.space 0x40000
|
||||
.globl foo
|
||||
.ent foo
|
||||
foo:
|
||||
b bar
|
||||
.Lfoo:
|
||||
b .Lbar
|
||||
.end foo
|
||||
|
||||
# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
|
||||
.align 2
|
||||
.space 8
|
||||
|
||||
.section .init, "ax", @progbits
|
||||
.globl bar
|
||||
.ent bar
|
||||
bar:
|
||||
b foo
|
||||
.Lbar:
|
||||
b .Lfoo
|
||||
.end bar
|
||||
|
||||
# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
|
||||
.align 2
|
||||
.space 8
|
@ -830,6 +830,11 @@ if { [istarget mips*-*-vxworks*] } {
|
||||
run_dump_test "jalr2"
|
||||
|
||||
run_dump_test_arches "aent" [mips_arch_list_matching mips1]
|
||||
|
||||
run_dump_test_arches "branch-misc-4" \
|
||||
[mips_arch_list_matching mips1]
|
||||
run_dump_test_arches "branch-misc-4-64" \
|
||||
[mips_arch_list_matching mips3]
|
||||
}
|
||||
|
||||
if $has_newabi {
|
||||
|
Loading…
Reference in New Issue
Block a user