summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2013-01-15 20:34:09 +0000
committerH.J. Lu <hjl.tools@gmail.com>2013-01-15 20:34:09 +0000
commite1f10ba82417195f78cfef785abfad1be70bd7a4 (patch)
tree5d5e476584f37a1dee13a323f0e739c2edacd3e6
parentf8b018a7e13a5086f325f06a34c572b16f2a6987 (diff)
downloadbinutils-redhat-e1f10ba82417195f78cfef785abfad1be70bd7a4.tar.gz
Increment length by 1 if the relocation token is removed
gas/ PR gas/15019 * config/tc-i386.c (lex_got): Increment length by 1 if the relocation token is removed. gas/testsuite/ PR gas/15019 * gas/i386/reloc32.s: Add tests for "xtrn@got -/+ 4". * gas/i386/reloc64.s: Likewise. * gas/i386/ilp32/reloc64.s: Likewise. * gas/i386/reloc32.d: Updated. * gas/i386/reloc64.d: Likewise. * gas/i386/ilp32/reloc64.d: Likewise.
-rw-r--r--gas/ChangeLog10
-rw-r--r--gas/config/tc-i386.c8
-rw-r--r--gas/testsuite/ChangeLog11
-rw-r--r--gas/testsuite/gas/i386/ilp32/reloc64.d2
-rw-r--r--gas/testsuite/gas/i386/ilp32/reloc64.s2
-rw-r--r--gas/testsuite/gas/i386/reloc32.d3
-rw-r--r--gas/testsuite/gas/i386/reloc32.s2
-rw-r--r--gas/testsuite/gas/i386/reloc64.d2
-rw-r--r--gas/testsuite/gas/i386/reloc64.s4
9 files changed, 40 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index d632dcaa2d..8962bbb773 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2013-01-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/15019
+ * config/tc-i386.c (lex_got): Increment length by 1 if the
+ relocation token is removed.
+
2013-01-15 Nick Clifton <nickc@redhat.com>
* config/tc-v850.c (md_assemble): Allow signed values for
@@ -6,7 +12,7 @@
2013-01-11 Sean Keys <skeys@ipdatasys.com>
* config/tc-xgate.c (md_begin): Fix mistake made when going from
- git to cvs.
+ git to cvs.
2013-01-10 Peter Bergner <bergner@vnet.ibm.com>
@@ -18,7 +24,7 @@
2013-01-10 Sean Keys <skeys@ipdatasys.com>
* config/tc-xgate.c (md_begin): Fix the printing of opcodes so
- that the assember exits after the opcodes have been printed.
+ that the assember exits after the opcodes have been printed.
2013-01-10 H.J. Lu <hongjiu.lu@intel.com>
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 56c06005fe..641af39a15 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -6783,8 +6783,6 @@ lex_got (enum bfd_reloc_code_real *rel,
char *tmpbuf, *past_reloc;
*rel = gotrel[j].rel[object_64bit];
- if (adjust)
- *adjust = len;
if (types)
{
@@ -6819,6 +6817,12 @@ lex_got (enum bfd_reloc_code_real *rel,
/* Replace the relocation token with ' ', so that
errors like foo@GOTOFF1 will be detected. */
tmpbuf[first++] = ' ';
+ else
+ /* Increment length by 1 if the relocation token is
+ removed. */
+ len++;
+ if (adjust)
+ *adjust = len;
memcpy (tmpbuf + first, past_reloc, second);
tmpbuf[first + second] = '\0';
return tmpbuf;
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 47d6d15e30..ed473d0540 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,14 @@
+2013-01-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/15019
+ * gas/i386/reloc32.s: Add tests for "xtrn@got -/+ 4".
+ * gas/i386/reloc64.s: Likewise.
+ * gas/i386/ilp32/reloc64.s: Likewise.
+
+ * gas/i386/reloc32.d: Updated.
+ * gas/i386/reloc64.d: Likewise.
+ * gas/i386/ilp32/reloc64.d: Likewise.
+
2013-01-15 Nick Clifton <nickc@redhat.com>
* gas/v850/basic.exp: Allow for variations in reloc names.
diff --git a/gas/testsuite/gas/i386/ilp32/reloc64.d b/gas/testsuite/gas/i386/ilp32/reloc64.d
index 5d3df9a19b..53083f31d2 100644
--- a/gas/testsuite/gas/i386/ilp32/reloc64.d
+++ b/gas/testsuite/gas/i386/ilp32/reloc64.d
@@ -94,3 +94,5 @@ Disassembly of section \.data:
.*[ ]+R_X86_64_64[ ]+xtrn
.*[ ]+R_X86_64_64[ ]+xtrn\+0x7fffffff
.*[ ]+R_X86_64_64[ ]+xtrn\-0x80000000
+.*[ ]+R_X86_64_GOT32[ ]+xtrn-0x4
+.*[ ]+R_X86_64_GOT32[ ]+xtrn\+0x4
diff --git a/gas/testsuite/gas/i386/ilp32/reloc64.s b/gas/testsuite/gas/i386/ilp32/reloc64.s
index 4149ec257d..77764b3c62 100644
--- a/gas/testsuite/gas/i386/ilp32/reloc64.s
+++ b/gas/testsuite/gas/i386/ilp32/reloc64.s
@@ -184,3 +184,5 @@ bad .byte xtrn@tpoff
.quad xtrn
.quad xtrn + 0x7fffffff
.quad xtrn - 0x80000000
+ .long xtrn@got - 4
+ .long xtrn@got + 4
diff --git a/gas/testsuite/gas/i386/reloc32.d b/gas/testsuite/gas/i386/reloc32.d
index b2cd29c514..cbd71d6d81 100644
--- a/gas/testsuite/gas/i386/reloc32.d
+++ b/gas/testsuite/gas/i386/reloc32.d
@@ -65,3 +65,6 @@ Disassembly of section \.data:
.*[ ]+R_386_PC16[ ]+xtrn
.*[ ]+R_386_8[ ]+xtrn
.*[ ]+R_386_PC8[ ]+xtrn
+#...
+.*[ ]+R_386_GOT32[ ]+xtrn
+.*[ ]+R_386_GOT32[ ]+xtrn
diff --git a/gas/testsuite/gas/i386/reloc32.s b/gas/testsuite/gas/i386/reloc32.s
index 1a893ffdb0..855dcf578d 100644
--- a/gas/testsuite/gas/i386/reloc32.s
+++ b/gas/testsuite/gas/i386/reloc32.s
@@ -159,3 +159,5 @@ bad .byte xtrn@tlsldm
bad .byte xtrn@dtpoff
bad .byte xtrn@ntpoff
bad .byte xtrn@tpoff
+ .long xtrn@got + 4
+ .long xtrn@got - 4
diff --git a/gas/testsuite/gas/i386/reloc64.d b/gas/testsuite/gas/i386/reloc64.d
index b4780d4a25..44919825fd 100644
--- a/gas/testsuite/gas/i386/reloc64.d
+++ b/gas/testsuite/gas/i386/reloc64.d
@@ -87,3 +87,5 @@ Disassembly of section \.data:
.*[ ]+R_X86_64_PC16[ ]+xtrn
.*[ ]+R_X86_64_8[ ]+xtrn
.*[ ]+R_X86_64_PC8[ ]+xtrn
+.*[ ]+R_X86_64_GOT32[ ]+xtrn-0x4
+.*[ ]+R_X86_64_GOT32[ ]+xtrn\+0x4
diff --git a/gas/testsuite/gas/i386/reloc64.s b/gas/testsuite/gas/i386/reloc64.s
index f12271d358..7b35a029b1 100644
--- a/gas/testsuite/gas/i386/reloc64.s
+++ b/gas/testsuite/gas/i386/reloc64.s
@@ -198,3 +198,7 @@ bad .byte xtrn@tpoff
.text
mov xtrn@tpoff (%rbx), %eax
+
+ .data
+ .long xtrn@got - 4
+ .long xtrn@got + 4