Ensure that padding in the constant pool uses constant values.
PR target/20068 * config/tc-arm.c (add_to_lit_pool): Ensure that the padding added to the pool uses O_constant. * testsuite/gas/arm/pr20068.s: New test. * testsuite/gas/arm/pr20068.d: Test driver.
This commit is contained in:
parent
4e7fbb34f0
commit
a6684f0ddd
4 changed files with 37 additions and 0 deletions
|
@ -1,3 +1,11 @@
|
|||
2016-05-11 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR target/20068
|
||||
* config/tc-arm.c (add_to_lit_pool): Ensure that the padding added
|
||||
to the pool uses O_constant.
|
||||
* testsuite/gas/arm/pr20068.s: New test.
|
||||
* testsuite/gas/arm/pr20068.d: Test driver.
|
||||
|
||||
2016-05-11 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* testsuite/gas/arm/archv8m-cmse-base.d: Skip for non-ELF ARM targets.
|
||||
|
|
|
@ -3288,6 +3288,7 @@ add_to_lit_pool (unsigned int nbytes)
|
|||
}
|
||||
|
||||
pool->literals[entry] = inst.reloc.exp;
|
||||
pool->literals[entry].X_op = O_constant;
|
||||
pool->literals[entry].X_add_number = 0;
|
||||
pool->literals[entry++].X_md = (PADDING_SLOT << 8) | 4;
|
||||
pool->next_free_entry += 1;
|
||||
|
|
18
gas/testsuite/gas/arm/pr20068.d
Normal file
18
gas/testsuite/gas/arm/pr20068.d
Normal file
|
@ -0,0 +1,18 @@
|
|||
# name: PR20068 - Misaligned constant pool when running GAS on a 32-bit host.
|
||||
# as: -mfpu=vfpv3
|
||||
# objdump: -S
|
||||
|
||||
.*: file format .*
|
||||
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
00000000 <main>:
|
||||
0: e59f0008 ldr r0, \[pc, #8\].*
|
||||
4: ed9f9b03 vldr d9, \[pc, #12\].*
|
||||
8: e1a0f00e mov pc, lr
|
||||
c: 00000000 .*
|
||||
10: 12345678 .*
|
||||
14: 00000000 .*
|
||||
18: 00000fff .*
|
||||
1c: 0000fff0 .*
|
10
gas/testsuite/gas/arm/pr20068.s
Normal file
10
gas/testsuite/gas/arm/pr20068.s
Normal file
|
@ -0,0 +1,10 @@
|
|||
.global main
|
||||
|
||||
main:
|
||||
LDR R0, =0x12345678
|
||||
@LDR R0, =0x87654321
|
||||
FLDD D9, =0xfff000000fff
|
||||
@FLDD D9, =0
|
||||
@FLDD D9, =0x0
|
||||
MOV PC, LR
|
||||
.ltorg
|
Loading…
Reference in a new issue