PR gas/4460
authorAlan Modra <amodra@gmail.com>
Fri, 4 May 2007 00:02:47 +0000 (00:02 +0000)
committerAlan Modra <amodra@gmail.com>
Fri, 4 May 2007 00:02:47 +0000 (00:02 +0000)
* config/tc-i386.c (lex_got): Don't replace the reloc token with
a space if we already have a space.

gas/ChangeLog
gas/config/tc-i386.c

index e77aa6c20380f89a1fdecc165ea0b75cbc0a6b88..b08a83672a0775c3cc9f7b7caed4cebb913adfee 100644 (file)
@@ -1,3 +1,9 @@
+2007-05-04  Alan Modra  <amodra@bigpond.net.au>
+
+       PR gas/4460
+       * config/tc-i386.c (lex_got): Don't replace the reloc token with
+       a space if we already have a space.
+
 2007-05-03  H.J. Lu  <hongjiu.lu@intel.com>
 
        * config/tc-i386.c (match_template): Don't explicitly check
index b96871fc2de45cb203734fff9df670582185e34b..af278c0d86da796b0f732a3452504def307aa9db 100644 (file)
@@ -4477,9 +4477,6 @@ lex_got (enum bfd_reloc_code_real *reloc,
              if (GOT_symbol == NULL)
                GOT_symbol = symbol_find_or_make (GLOBAL_OFFSET_TABLE_NAME);
 
-             /* Replace the relocation token with ' ', so that
-                errors like foo@GOTOFF1 will be detected.  */
-
              /* The length of the first part of our input line.  */
              first = cp - input_line_pointer;
 
@@ -4495,9 +4492,12 @@ lex_got (enum bfd_reloc_code_real *reloc,
                 be necessary, but be safe.  */
              tmpbuf = xmalloc (first + second + 2);
              memcpy (tmpbuf, input_line_pointer, first);
-             tmpbuf[first] = ' ';
-             memcpy (tmpbuf + first + 1, past_reloc, second);
-             tmpbuf[first + second + 1] = '\0';
+             if (second != 0 && *past_reloc != ' ')
+               /* Replace the relocation token with ' ', so that
+                  errors like foo@GOTOFF1 will be detected.  */
+               tmpbuf[first++] = ' ';
+             memcpy (tmpbuf + first, past_reloc, second);
+             tmpbuf[first + second] = '\0';
              return tmpbuf;
            }