PATCH: PR gas/15019: [x86] "xtrn@got -1" doesn't work
H.J. Lu
hongjiu.lu@intel.com
Tue Jan 15 20:42:00 GMT 2013
More information about the Binutils mailing list
Tue Jan 15 20:42:00 GMT 2013
- Previous message (by thread): PATCH: Define R_X86_64_standard with R_X86_64_RELATIVE64
- Next message (by thread): [PATCH] Sync configure{,.ac}, Makefile.{def,in} with GCC
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi, For "xtrn@got -1" input, space after @got isn't removed and @got isn't replaced by a space. In this case, we should increment adjust by one. I checked in this patch to fix it. H.J. -- 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. 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/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
- Previous message (by thread): PATCH: Define R_X86_64_standard with R_X86_64_RELATIVE64
- Next message (by thread): [PATCH] Sync configure{,.ac}, Makefile.{def,in} with GCC
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list