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/binutils-2_32-branch] [GAS, Arm] PR24559: Fix pseudo load-operations for Armv8-M Baseline


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

commit 114c576d1796773456a74d93c7b391279347e117
Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Date:   Tue May 21 16:27:28 2019 +0100

    [GAS, Arm] PR24559: Fix pseudo load-operations for Armv8-M Baseline
    
    gas/ChangeLog:
    2019-05-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
    
    	Backport from mainline
    	2019-05-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
    
    	PR24559
    	* config/tc-arm.c (move_or_literal_pool): Set size_req to 0 for MOVW
    	replacement.
    	* testsuite/gas/arm/load-pseudo.s: New test input.
    	* testsuite/gas/arm/m0-load-pseudo.d: New test.
    	* testsuite/gas/arm/m23-load-pseudo.d: New test.
    	* testsuite/gas/arm/m33-load-pseudo.d: New test.

Diff:
---
 gas/ChangeLog                           | 13 +++++++++++++
 gas/config/tc-arm.c                     |  5 +++++
 gas/testsuite/gas/arm/load-pseudo.s     |  3 +++
 gas/testsuite/gas/arm/m0-load-pseudo.d  | 12 ++++++++++++
 gas/testsuite/gas/arm/m23-load-pseudo.d | 12 ++++++++++++
 gas/testsuite/gas/arm/m33-load-pseudo.d | 11 +++++++++++
 6 files changed, 56 insertions(+)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 2b8de26..72fac52 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,16 @@
+2019-05-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+	Backport from mainline
+	2019-05-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+	PR24559
+	* config/tc-arm.c (move_or_literal_pool): Set size_req to 0 for MOVW
+	replacement.
+	* testsuite/gas/arm/load-pseudo.s: New test input.
+	* testsuite/gas/arm/m0-load-pseudo.d: New test.
+	* testsuite/gas/arm/m23-load-pseudo.d: New test.
+	* testsuite/gas/arm/m33-load-pseudo.d: New test.
+
 2019-04-16  Sudakshina Das  <sudi.das@arm.com>
 
 	Backport from mainline
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index e6600f6..138e377 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -8082,6 +8082,11 @@ move_or_literal_pool (int i, enum lit_type t, bfd_boolean mode_3)
 		      inst.instruction |= (imm & 0x0800) << 15;
 		      inst.instruction |= (imm & 0x0700) << 4;
 		      inst.instruction |= (imm & 0x00ff);
+		      /*  In case this replacement is being done on Armv8-M
+			  Baseline we need to make sure to disable the
+			  instruction size check, as otherwise GAS will reject
+			  the use of this T32 instruction.  */
+		      inst.size_req = 0;
 		      return TRUE;
 		    }
 		}
diff --git a/gas/testsuite/gas/arm/load-pseudo.s b/gas/testsuite/gas/arm/load-pseudo.s
new file mode 100644
index 0000000..2102522
--- /dev/null
+++ b/gas/testsuite/gas/arm/load-pseudo.s
@@ -0,0 +1,3 @@
+.syntax unified
+ldr r0, =(0x30)
+ldr r0, =(0x70000000)
diff --git a/gas/testsuite/gas/arm/m0-load-pseudo.d b/gas/testsuite/gas/arm/m0-load-pseudo.d
new file mode 100644
index 0000000..cc7e085
--- /dev/null
+++ b/gas/testsuite/gas/arm/m0-load-pseudo.d
@@ -0,0 +1,12 @@
+# name: Load pseudo-operation for Cortex-M0
+# as: -mcpu=cortex-m0
+# objdump: -dr --prefix-addresses --show-raw-insn -M force-thumb
+# source: load-pseudo.s
+
+.*: +file format .*arm.*
+
+
+Disassembly of section .text:
+[^>]*> 4800      	ldr	r0, \[pc, #0\]	; \(00000004 [^>]*>\)
+[^>]*> 4801      	ldr	r0, \[pc, #4\]	; \(00000008 [^>]*>\)
+#...
diff --git a/gas/testsuite/gas/arm/m23-load-pseudo.d b/gas/testsuite/gas/arm/m23-load-pseudo.d
new file mode 100644
index 0000000..2e0dbe5
--- /dev/null
+++ b/gas/testsuite/gas/arm/m23-load-pseudo.d
@@ -0,0 +1,12 @@
+# name: Load pseudo-operation for Cortex-M23
+# as: -mcpu=cortex-m23
+# objdump: -dr --prefix-addresses --show-raw-insn -M force-thumb
+# source: load-pseudo.s
+
+.*: +file format .*arm.*
+
+
+Disassembly of section .text:
+[^>]*> f240 0030 	movw	r0, #48	; 0x30
+[^>]*> 4800      	ldr	r0, \[pc, #0\]	; \(00000008 [^>]*>\)
+#...
diff --git a/gas/testsuite/gas/arm/m33-load-pseudo.d b/gas/testsuite/gas/arm/m33-load-pseudo.d
new file mode 100644
index 0000000..e77bffd
--- /dev/null
+++ b/gas/testsuite/gas/arm/m33-load-pseudo.d
@@ -0,0 +1,11 @@
+# name: Load pseudo-operation for Cortex-M33
+# as: -mcpu=cortex-m33
+# objdump: -dr --prefix-addresses --show-raw-insn -M force-thumb
+# source: load-pseudo.s
+
+.*: +file format .*arm.*
+
+
+Disassembly of section .text:
+[^>]*> f04f 0030 	mov.w	r0, #48	; 0x30
+[^>]*> f04f 40e0 	mov.w	r0, #1879048192	; 0x70000000


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