summaryrefslogtreecommitdiff
path: root/recipes/binutils
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2009-07-22 18:36:17 +0200
committerKoen Kooi <koen@openembedded.org>2009-07-22 18:36:17 +0200
commit998d60e2d579563af9236f34b72dd2370a46cf89 (patch)
tree2198fb9e55f6bbe3cc81be4332de04aca550f4ce /recipes/binutils
parent32a67c42a4d24884ab991a2e3e1d72ecf5c41b51 (diff)
binutils 2.18: don't emit symbols for neon registers
* this fixes building in NEON code into binaries that do runtime detection but are compiled for non-NEON platforms (e.g. pixman)
Diffstat (limited to 'recipes/binutils')
-rw-r--r--recipes/binutils/binutils-2.18/parse-neon-vmov.diff41
-rw-r--r--recipes/binutils/binutils_2.18.bb3
2 files changed, 43 insertions, 1 deletions
diff --git a/recipes/binutils/binutils-2.18/parse-neon-vmov.diff b/recipes/binutils/binutils-2.18/parse-neon-vmov.diff
new file mode 100644
index 0000000000..e14b2a70c4
--- /dev/null
+++ b/recipes/binutils/binutils-2.18/parse-neon-vmov.diff
@@ -0,0 +1,41 @@
+===================================================================
+RCS file: /cvs/src/src/gas/config/tc-arm.c,v
+retrieving revision 1.353
+retrieving revision 1.354
+diff -u -r1.353 -r1.354
+--- src/gas/config/tc-arm.c 2008/03/27 14:12:15 1.353
++++ src/gas/config/tc-arm.c 2008/03/28 18:13:52 1.354
+@@ -5209,16 +5209,6 @@
+ inst.operands[i].present = 1;
+ }
+ }
+- else if (parse_qfloat_immediate (&ptr, &inst.operands[i].imm) == SUCCESS)
+- /* Case 2: VMOV<c><q>.<dt> <Qd>, #<float-imm>
+- Case 3: VMOV<c><q>.<dt> <Dd>, #<float-imm>
+- Case 10: VMOV.F32 <Sd>, #<imm>
+- Case 11: VMOV.F64 <Dd>, #<imm> */
+- inst.operands[i].immisfloat = 1;
+- else if (parse_big_immediate (&ptr, i) == SUCCESS)
+- /* Case 2: VMOV<c><q>.<dt> <Qd>, #<imm>
+- Case 3: VMOV<c><q>.<dt> <Dd>, #<imm> */
+- ;
+ else if ((val = arm_typed_reg_parse (&ptr, REG_TYPE_NSDQ, &rtype,
+ &optype)) != FAIL)
+ {
+@@ -5258,6 +5248,16 @@
+ inst.operands[i++].present = 1;
+ }
+ }
++ else if (parse_qfloat_immediate (&ptr, &inst.operands[i].imm) == SUCCESS)
++ /* Case 2: VMOV<c><q>.<dt> <Qd>, #<float-imm>
++ Case 3: VMOV<c><q>.<dt> <Dd>, #<float-imm>
++ Case 10: VMOV.F32 <Sd>, #<imm>
++ Case 11: VMOV.F64 <Dd>, #<imm> */
++ inst.operands[i].immisfloat = 1;
++ else if (parse_big_immediate (&ptr, i) == SUCCESS)
++ /* Case 2: VMOV<c><q>.<dt> <Qd>, #<imm>
++ Case 3: VMOV<c><q>.<dt> <Dd>, #<imm> */
++ ;
+ else
+ {
+ first_error (_("expected <Rm> or <Dm> or <Qm> operand"));
diff --git a/recipes/binutils/binutils_2.18.bb b/recipes/binutils/binutils_2.18.bb
index 159d97f981..b1ae402e29 100644
--- a/recipes/binutils/binutils_2.18.bb
+++ b/recipes/binutils/binutils_2.18.bb
@@ -1,4 +1,4 @@
-INC_PR = "r7"
+INC_PR = "r8"
PR = "${INC_PR}.1"
require binutils.inc
@@ -16,6 +16,7 @@ SRC_URI = "\
file://binutils-uclibc-gas-needs-libm.patch;patch=1 \
file://binutils-x86_64_i386_biarch.patch;patch=1 \
file://binutils-section-in-segment.patch;patch=1;pnum=0 \
+ file://parse-neon-vmov.diff;patch=1 \
"
# powerpc patches