* elf.c (_bfd_elf_make_section_from_shdr): Set SEC_THREAD_LOCAL
[deliverable/binutils-gdb.git] / gas / config / tc-alpha.c
index ae6f76b95006819b092f848bca8fa7be24f8a74a..7746f99d265c55f0c24aaffb40a6b9f450857590 100644 (file)
@@ -1,6 +1,6 @@
 /* tc-alpha.c - Processor-specific code for the DEC Alpha AXP CPU.
-   Copyright 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-   Free Software Foundation, Inc.
+   Copyright 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+   2001, 2002 Free Software Foundation, Inc.
    Contributed by Carnegie Mellon University, 1993.
    Written by Alessandro Forin, based on earlier gas-1.38 target CPU files.
    Modified by Ken Raeburn for gas-2.x and ECOFF support.
@@ -1556,7 +1556,8 @@ tc_gen_reloc (sec, fixp)
        * of thing, and as a result we need to fake it out here.
        */
       if ((S_IS_EXTERN (fixp->fx_addsy) || S_IS_WEAK (fixp->fx_addsy)
-          || (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_MERGE))
+          || (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_MERGE)
+          || (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_THREAD_LOCAL))
          && !S_IS_COMMON (fixp->fx_addsy))
        reloc->addend -= symbol_get_bfdsym (fixp->fx_addsy)->value;
 #endif
@@ -1894,7 +1895,7 @@ tokenize_arguments (str, tok, ntok)
            goto err;
 
          ++input_line_pointer;
-          SKIP_WHITESPACE ();
+         SKIP_WHITESPACE ();
          p = input_line_pointer;
          c = get_symbol_end ();
 
@@ -1917,7 +1918,7 @@ tokenize_arguments (str, tok, ntok)
            }
 
          *input_line_pointer = c;
-          SKIP_WHITESPACE ();
+         SKIP_WHITESPACE ();
          if (*input_line_pointer != '!')
            {
              if (r->require_seq)
@@ -2377,7 +2378,7 @@ assemble_insn (opcode, tok, ntok, insn, reloc)
            abort ();
 
          /* There is one special case for which an insn receives two
-            relocations, and thus the user-supplied reloc does not 
+            relocations, and thus the user-supplied reloc does not
             override the operand reloc.  */
          if (operand->default_reloc == BFD_RELOC_ALPHA_HINT)
            {
@@ -2648,13 +2649,16 @@ assemble_tokens (opname, tok, ntok, local_macros_on)
   int cpumatch = 1;
   bfd_reloc_code_real_type reloc = BFD_RELOC_UNUSED;
 
+#ifdef RELOC_OP_P
   /* If a user-specified relocation is present, this is not a macro.  */
   if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
     {
       reloc = ALPHA_RELOC_TABLE (tok[ntok - 1].X_op)->reloc;
       ntok--;
     }
-  else if (local_macros_on)
+  else
+#endif
+  if (local_macros_on)
     {
       macro = ((const struct alpha_macro *)
               hash_find (alpha_macro_hash, opname));
@@ -4031,7 +4035,11 @@ s_alpha_text (i)
      int i;
 
 {
+#ifdef OBJ_ELF
+  obj_elf_text (i);
+#else
   s_text (i);
+#endif
   alpha_insn_label = NULL;
   alpha_auto_align_on = 1;
   alpha_current_align = 0;
@@ -4044,7 +4052,11 @@ static void
 s_alpha_data (i)
      int i;
 {
+#ifdef OBJ_ELF
+  obj_elf_data (i);
+#else
   s_data (i);
+#endif
   alpha_insn_label = NULL;
   alpha_auto_align_on = 1;
   alpha_current_align = 0;
@@ -5456,7 +5468,7 @@ alpha_elf_section_letter (letter, ptr_msg)
   if (letter == 's')
     return SHF_ALPHA_GPREL;
 
-  *ptr_msg = _("Bad .section directive: want a,s,w,x,M,S in string");
+  *ptr_msg = _("Bad .section directive: want a,s,w,x,M,S,G,T in string");
   return 0;
 }
 
This page took 0.025739 seconds and 4 git commands to generate.