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 + + 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 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 + + 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 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