Skip to contentSkip to conversation

binutils: fix .loc processing in xtensa gas

PATCH New Max Filippov 2 participants 2 messages Feb 3, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 binutils: fix .loc processing in xtensa gas

Fixes:
http://autobuild.buildroot.net/results/bff7436a800eeea92c0c92bd2846b0f2b31947fd/

---
Upstream status: patch submitted.

 ...-xtensa-fix-signedness-of-gas-relocations.patch |   47 +++++++++
 ...-xtensa-fix-signedness-of-gas-relocations.patch |   99 ++++++++++++++++++++
 ...-xtensa-fix-signedness-of-gas-relocations.patch |   99 ++++++++++++++++++++
 3 files changed, 245 insertions(+), 0 deletions(-)
 create mode 100644 package/binutils/2.23.2/914-xtensa-fix-signedness-of-gas-relocations.patch
 create mode 100644 package/binutils/2.24/914-xtensa-fix-signedness-of-gas-relocations.patch
 create mode 100644 package/binutils/2.25.1/914-xtensa-fix-signedness-of-gas-relocations.patch
package/binutils/2.23.2/914-xtensa-fix-signedness-of-gas-relocations.patch new file +47 -0
new file mode 100644
index 0000000..2955e11
@@ -0,0 +1,47 @@
+From 6c7c5c477ef9ccf2d2548cf2ac3cec9bd3c9c5b6 Mon Sep 17 00:00:00 2001
+From: Max Filippov <[email protected]>
+Date: Tue, 2 Feb 2016 17:11:38 +0300
+Subject: [PATCH] xtensa: fix signedness of gas relocations
+
+Change 1058c7532d0b "Use signed data type for R_XTENSA_DIFF* relocation
+offsets." changed signedness of BFD_RELOC_XTENSA_DIFF* relocations
+substituted for BFD_RELOC_*. This made it impossible to encode arbitrary
+8-, 16- and 32-bit values, which broke e.g. debug info encoding by .loc
+directive. Revert this part and add test.
+
+gas/
+2016-02-03  Max Filippov  <[email protected]>
+	* config/tc-xtensa.c (md_apply_fix): Mark BFD_RELOC_XTENSA_DIFF*
+	substitutions for BFD_RELOC_* as unsigned.
+
+Signed-off-by: Max Filippov <[email protected]>
+---
+ gas/config/tc-xtensa.c           |  6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
+index a119871..36a06cc 100644
+--- a/gas/config/tc-xtensa.c
++++ b/gas/config/tc-xtensa.c
+@@ -5961,15 +5961,15 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg)
+ 	    {
+ 	    case BFD_RELOC_8:
+ 	      fixP->fx_r_type = BFD_RELOC_XTENSA_DIFF8;
+-	      fixP->fx_signed = 1;
++	      fixP->fx_signed = 0;
+ 	      break;
+ 	    case BFD_RELOC_16:
+ 	      fixP->fx_r_type = BFD_RELOC_XTENSA_DIFF16;
+-	      fixP->fx_signed = 1;
++	      fixP->fx_signed = 0;
+ 	      break;
+ 	    case BFD_RELOC_32:
+ 	      fixP->fx_r_type = BFD_RELOC_XTENSA_DIFF32;
+-	      fixP->fx_signed = 1;
++	      fixP->fx_signed = 0;
+ 	      break;
+ 	    default:
+ 	      break;
+-- 
+2.1.4
+
package/binutils/2.24/914-xtensa-fix-signedness-of-gas-relocations.patch new file +99 -0

99 lines not on this page · raw message

package/binutils/2.25.1/914-xtensa-fix-signedness-of-gas-relocations.patch new file +99 -0

99 lines not on this page · raw message

Signature · 1 line
1.7.7.6