Rework the alignment check for BFD_RELOC_MIPS_18_PCREL_S3.
gas/ * config/tc-mips.c (md_apply_fix): Apply alignment check to the symbol and offset rather than *valP for BFD_RELOC_MIPS_18_PCREL_S3. Also update the error message for BFD_RELOC_MIPS_19_PCREL_S2. gas/testsuite/ * gas/mips/r6-64.s: Remove .align directives from LDPC instructions and add further tests for LDPC. * gas/mips/r6-64-n32.d: remove the NOPs from LDPC expected output and update for new tests. * gas/mips/r6-64-n64.d: Likewise. * gas/mips/ldpc-unalign.l: New file. * gas/mips/ldpc-unalign.s: Likewise. * gas/mips/mips.exp: Run ldpc-unalign test.
This commit is contained in:
parent
13e322759b
commit
0866e94c87
@ -1,3 +1,10 @@
|
||||
2014-12-19 Matthew Fortune <matthew.fortune@imgtec.com>
|
||||
|
||||
* config/tc-mips.c (md_apply_fix): Apply alignment check
|
||||
to the symbol and offset rather than *valP for
|
||||
BFD_RELOC_MIPS_18_PCREL_S3. Also update the error message
|
||||
for BFD_RELOC_MIPS_19_PCREL_S2.
|
||||
|
||||
2014-12-14 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/tc-i386.c (flag_compress_debug): Default to compress
|
||||
|
@ -15009,10 +15009,14 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
|
||||
break;
|
||||
|
||||
case BFD_RELOC_MIPS_18_PCREL_S3:
|
||||
if ((*valP & 0x7) != 0)
|
||||
if ((S_GET_VALUE (fixP->fx_addsy) & 0x7) != 0)
|
||||
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||
_("PC-relative access to misaligned address (%lx)"),
|
||||
(long) *valP);
|
||||
_("PC-relative access using misaligned symbol (%lx)"),
|
||||
(long) S_GET_VALUE (fixP->fx_addsy));
|
||||
if ((fixP->fx_offset & 0x7) != 0)
|
||||
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||
_("PC-relative access using misaligned offset (%lx)"),
|
||||
(long) fixP->fx_offset);
|
||||
|
||||
gas_assert (!fixP->fx_done);
|
||||
break;
|
||||
@ -15021,7 +15025,7 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
|
||||
if ((*valP & 0x3) != 0)
|
||||
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||
_("PC-relative access to misaligned address (%lx)"),
|
||||
(long) *valP);
|
||||
(long) (S_GET_VALUE (fixP->fx_addsy) + fixP->fx_offset));
|
||||
|
||||
gas_assert (!fixP->fx_done);
|
||||
break;
|
||||
|
@ -1,3 +1,14 @@
|
||||
2014-12-19 Matthew Fortune <matthew.fortune@imgtec.com>
|
||||
|
||||
* gas/mips/r6-64.s: Remove .align directives from LDPC
|
||||
instructions and add further tests for LDPC.
|
||||
* gas/mips/r6-64-n32.d: remove the NOPs from LDPC expected
|
||||
output and update for new tests.
|
||||
* gas/mips/r6-64-n64.d: Likewise.
|
||||
* gas/mips/ldpc-unalign.l: New file.
|
||||
* gas/mips/ldpc-unalign.s: Likewise.
|
||||
* gas/mips/mips.exp: Run ldpc-unalign test.
|
||||
|
||||
2014-12-19 Matthew Fortune <matthew.fortune@imgtec.com>
|
||||
|
||||
* gas/mips/octeon3.d: Switch to use numeric register names.
|
||||
|
9
gas/testsuite/gas/mips/ldpc-unalign.l
Normal file
9
gas/testsuite/gas/mips/ldpc-unalign.l
Normal file
@ -0,0 +1,9 @@
|
||||
.*: Assembler messages:
|
||||
.*:2: Error: PC-relative access using misaligned offset \(4\)
|
||||
.*:3: Error: PC-relative access using misaligned offset \(4\)
|
||||
.*:4: Error: PC-relative access using misaligned symbol \(1c\)
|
||||
.*:5: Error: PC-relative access using misaligned symbol \(1c\)
|
||||
.*:6: Error: PC-relative access using misaligned symbol \(1c\)
|
||||
.*:6: Error: PC-relative access using misaligned offset \(4\)
|
||||
.*:7: Error: PC-relative access using misaligned symbol \(1c\)
|
||||
.*:7: Error: PC-relative access using misaligned offset \(4\)
|
18
gas/testsuite/gas/mips/ldpc-unalign.s
Normal file
18
gas/testsuite/gas/mips/ldpc-unalign.s
Normal file
@ -0,0 +1,18 @@
|
||||
.text
|
||||
ldpc $4, 1f+4
|
||||
ldpc $4, 1f+4
|
||||
ldpc $4, 2f
|
||||
ldpc $4, 2f
|
||||
ldpc $4, 2f+4
|
||||
ldpc $4, 2f+4
|
||||
.align 3
|
||||
1:
|
||||
nop
|
||||
2:
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
|
||||
.align 2
|
||||
.space 8
|
@ -1450,6 +1450,7 @@ if { [istarget mips*-*-vxworks*] } {
|
||||
run_dump_test_arches "r6-n64" [mips_arch_list_matching mips64r6]
|
||||
run_dump_test_arches "r6-64-n32" [mips_arch_list_matching mips64r6]
|
||||
run_dump_test_arches "r6-64-n64" [mips_arch_list_matching mips64r6]
|
||||
run_list_test_arches "ldpc-unalign" "-64" [mips_arch_list_matching mips64r6]
|
||||
}
|
||||
run_list_test_arches "r6-removed" "-32" [mips_arch_list_matching mips32r6]
|
||||
run_list_test_arches "r6-64-removed" [mips_arch_list_matching mips64r6]
|
||||
|
@ -44,18 +44,21 @@ Disassembly of section .text:
|
||||
[ ]*78: R_MIPS_PC19_S2 L0.+0xffffc
|
||||
0+007c <[^>]*> ec940000 lwupc a0,fff0007c <[^>]*>
|
||||
0+0080 <[^>]*> ec93ffff lwupc a0,0010007c <[^>]*>
|
||||
0+0084 <[^>]*> 00000000 nop
|
||||
0+0084 <[^>]*> ec980000 ldpc a0,00000080 <[^>]*>
|
||||
[ ]*84: R_MIPS_PC18_S3 \.L1.1
|
||||
0+0088 <[^>]*> ec980000 ldpc a0,00000088 <[^>]*>
|
||||
[ ]*88: R_MIPS_PC18_S3 \.L1.1
|
||||
0+008c <[^>]*> 00000000 nop
|
||||
0+0090 <[^>]*> ec980000 ldpc a0,00000090 <[^>]*>
|
||||
[ ]*90: R_MIPS_PC18_S3 L0.-0x100000
|
||||
0+0094 <[^>]*> 00000000 nop
|
||||
[ ]*90: R_MIPS_PC18_S3 \.L3.1-0x100000
|
||||
0+0094 <[^>]*> ec980000 ldpc a0,00000090 <[^>]*>
|
||||
[ ]*94: R_MIPS_PC18_S3 \.L3.1-0x100000
|
||||
0+0098 <[^>]*> ec980000 ldpc a0,00000098 <[^>]*>
|
||||
[ ]*98: R_MIPS_PC18_S3 L0.+0xffff8
|
||||
0+009c <[^>]*> 00000000 nop
|
||||
[ ]*98: R_MIPS_PC18_S3 \.L3.2\+0xffff8
|
||||
0+009c <[^>]*> ec980000 ldpc a0,00000098 <[^>]*>
|
||||
[ ]*9c: R_MIPS_PC18_S3 \.L3.2\+0xffff8
|
||||
0+00a0 <[^>]*> ec9a0000 ldpc a0,fff000a0 <[^>]*>
|
||||
0+00a4 <[^>]*> 00000000 nop
|
||||
0+00a4 <[^>]*> ec9a0000 ldpc a0,fff000a0 <[^>]*>
|
||||
0+00a8 <[^>]*> ec99ffff ldpc a0,001000a0 <[^>]*>
|
||||
0+00ac <[^>]*> 00000000 nop
|
||||
0+00ac <[^>]*> ec99ffff ldpc a0,001000a0 <[^>]*>
|
||||
\.\.\.
|
||||
|
@ -50,24 +50,33 @@ Disassembly of section .text:
|
||||
[ ]*78: R_MIPS_NONE \*ABS\*\+0xffffc
|
||||
0+007c <[^>]*> ec940000 lwupc a0,f+ff0007c <[^>]*>
|
||||
0+0080 <[^>]*> ec93ffff lwupc a0,0+010007c <[^>]*>
|
||||
0+0084 <[^>]*> 00000000 nop
|
||||
0+0084 <[^>]*> ec980000 ldpc a0,0+0000080 <[^>]*>
|
||||
[ ]*84: R_MIPS_PC18_S3 .L1.1
|
||||
[ ]*84: R_MIPS_NONE \*ABS\*
|
||||
[ ]*84: R_MIPS_NONE \*ABS\*
|
||||
0+0088 <[^>]*> ec980000 ldpc a0,0+0000088 <[^>]*>
|
||||
[ ]*88: R_MIPS_PC18_S3 \.L1.1
|
||||
[ ]*88: R_MIPS_PC18_S3 .L1.1
|
||||
[ ]*88: R_MIPS_NONE \*ABS\*
|
||||
[ ]*88: R_MIPS_NONE \*ABS\*
|
||||
0+008c <[^>]*> 00000000 nop
|
||||
0+0090 <[^>]*> ec980000 ldpc a0,0+0000090 <[^>]*>
|
||||
[ ]*90: R_MIPS_PC18_S3 L0.-0x100000
|
||||
[ ]*90: R_MIPS_PC18_S3 .L3.1-0x100000
|
||||
[ ]*90: R_MIPS_NONE \*ABS\*-0x100000
|
||||
[ ]*90: R_MIPS_NONE \*ABS\*-0x100000
|
||||
0+0094 <[^>]*> 00000000 nop
|
||||
0+0094 <[^>]*> ec980000 ldpc a0,0+0000090 <[^>]*>
|
||||
[ ]*94: R_MIPS_PC18_S3 .L3.1-0x100000
|
||||
[ ]*94: R_MIPS_NONE \*ABS\*-0x100000
|
||||
[ ]*94: R_MIPS_NONE \*ABS\*-0x100000
|
||||
0+0098 <[^>]*> ec980000 ldpc a0,0+0000098 <[^>]*>
|
||||
[ ]*98: R_MIPS_PC18_S3 L0.\+0xffff8
|
||||
[ ]*98: R_MIPS_PC18_S3 .L3.2\+0xffff8
|
||||
[ ]*98: R_MIPS_NONE \*ABS\*\+0xffff8
|
||||
[ ]*98: R_MIPS_NONE \*ABS\*\+0xffff8
|
||||
0+009c <[^>]*> 00000000 nop
|
||||
0+009c <[^>]*> ec980000 ldpc a0,0+0000098 <[^>]*>
|
||||
[ ]*9c: R_MIPS_PC18_S3 .L3.2\+0xffff8
|
||||
[ ]*9c: R_MIPS_NONE \*ABS\*\+0xffff8
|
||||
[ ]*9c: R_MIPS_NONE \*ABS\*\+0xffff8
|
||||
0+00a0 <[^>]*> ec9a0000 ldpc a0,f+ff000a0 <[^>]*>
|
||||
0+00a4 <[^>]*> 00000000 nop
|
||||
0+00a4 <[^>]*> ec9a0000 ldpc a0,f+ff000a0 <[^>]*>
|
||||
0+00a8 <[^>]*> ec99ffff ldpc a0,0+01000a0 <[^>]*>
|
||||
0+00ac <[^>]*> 00000000 nop
|
||||
0+00ac <[^>]*> ec99ffff ldpc a0,0+01000a0 <[^>]*>
|
||||
\.\.\.
|
||||
|
@ -40,19 +40,24 @@
|
||||
lwu $4, (-262144 << 2)($pc)
|
||||
lwu $4, (262143 << 2)($pc)
|
||||
|
||||
.align 3
|
||||
ldpc $4, 1f
|
||||
.align 3
|
||||
ldpc $4, .+(-131072 << 3)
|
||||
.align 3
|
||||
ldpc $4, .+(131071 << 3)
|
||||
.align 3
|
||||
ldpc $4, 1f
|
||||
.align 3
|
||||
3:
|
||||
ldpc $4, 3b+(-131072 << 3)
|
||||
ldpc $4, 3b+(-131072 << 3)
|
||||
.align 3
|
||||
3:
|
||||
ldpc $4, 3b+(131071 << 3)
|
||||
ldpc $4, 3b+(131071 << 3)
|
||||
ld $4, (-131072 << 3)($pc)
|
||||
.align 3
|
||||
ld $4, (-131072 << 3)($pc)
|
||||
ld $4, (131071 << 3)($pc)
|
||||
ld $4, (131071 << 3)($pc)
|
||||
.align 3
|
||||
1:
|
||||
nop
|
||||
nop
|
||||
|
||||
# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
|
||||
.align 2
|
||||
|
Loading…
x
Reference in New Issue
Block a user