This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Ensure that padding in the constant pool uses constant values.


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a6684f0dddb292873f962dc36b20e6db00ef6b09

commit a6684f0dddb292873f962dc36b20e6db00ef6b09
Author: Nick Clifton <nickc@redhat.com>
Date:   Wed May 11 12:51:04 2016 +0100

    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.

Diff:
---
 gas/ChangeLog                   |  8 ++++++++
 gas/config/tc-arm.c             |  1 +
 gas/testsuite/gas/arm/pr20068.d | 18 ++++++++++++++++++
 gas/testsuite/gas/arm/pr20068.s | 10 ++++++++++
 4 files changed, 37 insertions(+)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index cf46ef9..6a059e7 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,13 @@
 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.
 	* testsuite/gas/arm/archv8m-cmse-main-1.d: Likewise.
 	* testsuite/gas/arm/archv8m-cmse-main-2.d: Likewise.
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index b5f3786..3c7e014 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -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;
diff --git a/gas/testsuite/gas/arm/pr20068.d b/gas/testsuite/gas/arm/pr20068.d
new file mode 100644
index 0000000..b694c0e
--- /dev/null
+++ b/gas/testsuite/gas/arm/pr20068.d
@@ -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 	.*
diff --git a/gas/testsuite/gas/arm/pr20068.s b/gas/testsuite/gas/arm/pr20068.s
new file mode 100644
index 0000000..483cc2e
--- /dev/null
+++ b/gas/testsuite/gas/arm/pr20068.s
@@ -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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]