From af89796ad5e8a8782a9494ebb1a7376c9bd44ca6 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 15 Jan 2013 20:34:11 +0000 Subject: [PATCH] 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. --- gas/ChangeLog | 10 ++++++++-- gas/config/tc-i386.c | 8 ++++++-- gas/testsuite/ChangeLog | 11 +++++++++++ gas/testsuite/gas/i386/ilp32/reloc64.d | 2 ++ gas/testsuite/gas/i386/ilp32/reloc64.s | 2 ++ gas/testsuite/gas/i386/reloc32.d | 3 +++ gas/testsuite/gas/i386/reloc32.s | 2 ++ gas/testsuite/gas/i386/reloc64.d | 2 ++ gas/testsuite/gas/i386/reloc64.s | 4 ++++ 9 files changed, 40 insertions(+), 4 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index d632dca..8962bbb 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2013-01-15 H.J. Lu + + PR gas/15019 + * config/tc-i386.c (lex_got): Increment length by 1 if the + relocation token is removed. + 2013-01-15 Nick Clifton * config/tc-v850.c (md_assemble): Allow signed values for @@ -6,7 +12,7 @@ 2013-01-11 Sean Keys * config/tc-xgate.c (md_begin): Fix mistake made when going from - git to cvs. + git to cvs. 2013-01-10 Peter Bergner @@ -18,7 +24,7 @@ 2013-01-10 Sean Keys * 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 diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 56c0600..641af39 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 47d6d15..ed473d0 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2013-01-15 H.J. Lu + + 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 * 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 5d3df9a..53083f3 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 4149ec2..77764b3 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 b2cd29c..cbd71d6 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 1a893ff..855dcf5 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 b4780d4..4491982 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 f12271d..7b35a02 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 -- 2.7.4