* config/tc-s390.c (s390_elf_cons): Correct fixups for PLT
[deliverable/binutils-gdb.git] / gas / config / tc-i386.c
index 5c5ce47af8908c46fba9a6214f51d0f67d31a79d..275b3e6c439d6ccef86aa3f5ccc2157d2cc16d6f 100644 (file)
@@ -157,7 +157,7 @@ const char extra_symbol_chars[] = "*%-(";
 
 /* This array holds the chars that always start a comment.  If the
    pre-processor is disabled, these aren't very useful.  */
-#if defined (TE_I386AIX) || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && ! defined (TE_LINUX) && !defined(TE_FreeBSD))
+#if defined (TE_I386AIX) || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && ! defined (TE_LINUX) && !defined(TE_FreeBSD) && !defined(TE_NetBSD))
 /* Putting '/' here makes it impossible to use the divide operator.
    However, we need it for compatibility with SVR4 systems.  */
 const char comment_chars[] = "#/";
@@ -175,7 +175,7 @@ const char comment_chars[] = "#";
    #NO_APP at the beginning of its output.
    Also note that comments started like this one will always work if
    '/' isn't otherwise defined.  */
-#if defined (TE_I386AIX) || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && ! defined (TE_LINUX) && !defined(TE_FreeBSD))
+#if defined (TE_I386AIX) || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && ! defined (TE_LINUX) && !defined(TE_FreeBSD) && !defined(TE_NetBSD))
 const char line_comment_chars[] = "";
 #else
 const char line_comment_chars[] = "/";
@@ -3181,27 +3181,41 @@ lex_got (reloc, adjust)
       int len;
 
       len = strlen (gotrel[j].str);
-      if (strncmp (cp + 1, gotrel[j].str, len) == 0)
+      if (strncasecmp (cp + 1, gotrel[j].str, len) == 0)
        {
          if (gotrel[j].rel[(unsigned int) flag_code] != 0)
            {
-             int first;
-             char *tmpbuf;
+             int first, second;
+             char *tmpbuf, *past_reloc;
 
              *reloc = gotrel[j].rel[(unsigned int) flag_code];
+             if (adjust)
+               *adjust = len;
 
              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;
-             tmpbuf = xmalloc (strlen (input_line_pointer));
+
+             /* The second part goes from after the reloc token until
+                (and including) an end_of_line char.  Don't use strlen
+                here as the end_of_line char may not be a NUL.  */
+             past_reloc = cp + 1 + len;
+             for (cp = past_reloc; !is_end_of_line[(unsigned char) *cp++]; )
+               ;
+             second = cp - past_reloc;
+
+             /* Allocate and copy string.  The trailing NUL shouldn't
+                be necessary, but be safe.  */
+             tmpbuf = xmalloc (first + second + 2);
              memcpy (tmpbuf, input_line_pointer, first);
              tmpbuf[first] = ' ';
-             strcpy (tmpbuf + first + 1, cp + 1 + len);
-             if (adjust)
-               *adjust = len;
+             memcpy (tmpbuf + first + 1, past_reloc, second);
+             tmpbuf[first + second + 1] = '\0';
              return tmpbuf;
            }
 
@@ -4088,15 +4102,6 @@ md_convert_frag (abfd, sec, fragP)
 
   /* Address we want to reach in file space.  */
   target_address = S_GET_VALUE (fragP->fr_symbol) + fragP->fr_offset;
-#ifdef BFD_ASSEMBLER
-  /* Not needed otherwise?  */
-  {
-    /* Local symbols which have already been resolved have a NULL frag.  */
-    fragS *sym_frag = symbol_get_frag (fragP->fr_symbol);
-    if (sym_frag)
-      target_address += sym_frag->fr_address;
-  }
-#endif
 
   /* Address opcode resides at in file space.  */
   opcode_address = fragP->fr_address + fragP->fr_fix;
This page took 0.024999 seconds and 4 git commands to generate.