* config/tc-arm.c (arm_force_relocation): Return 0 for ARM_IMMEDIATE
authorAlan Modra <amodra@gmail.com>
Tue, 3 Dec 2002 11:27:26 +0000 (11:27 +0000)
committerAlan Modra <amodra@gmail.com>
Tue, 3 Dec 2002 11:27:26 +0000 (11:27 +0000)
and ARM_ADRL_IMMEDIATE.

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

index d74a0c638a9f504fae2f403b8f44e4bf7987cee1..d1694f3be4ed542fcdcdf05068fd683ef15da58b 100644 (file)
@@ -1,3 +1,8 @@
+2002-12-03  Alan Modra  <amodra@bigpond.net.au>
+
+       * config/tc-arm.c (arm_force_relocation): Return 0 for ARM_IMMEDIATE
+       and ARM_ADRL_IMMEDIATE.
+
 2002-12-02  Nick Clifton  <nickc@redhat.com>
 
        * gasp.c: Delete.  It has been deprecated.
index c5f776a658c80bc9bfea1c3377e238a64f307131..f78f10009806086f511991209ad01f9a6d9c81a1 100644 (file)
@@ -2129,7 +2129,7 @@ typedef struct literal_pool
   symbolS *      symbol;
   segT           section;
   subsegT        sub_section;
-  struct literal_pool * next;  
+  struct literal_pool * next;
 } literal_pool;
 
 /* Pointer to a linked list of literal pools.  */
@@ -2196,7 +2196,7 @@ find_or_make_literal_pool ()
 static int
 add_to_lit_pool ()
 {
-  literal_pool * pool;  
+  literal_pool * pool;
   unsigned int entry;
 
   pool = find_or_make_literal_pool ();
@@ -5796,7 +5796,7 @@ do_ldmstm (str)
            as_warn (_("if writeback register is in list, it must be the lowest reg in the list"));
        }
     }
-  
+
   inst.instruction |= range;
   end_of_line (str);
   return;
@@ -10294,7 +10294,7 @@ tc_gen_reloc (section, fixp)
       /* If this is called then the a literal has
         been referenced across a section boundary.  */
       as_bad_where (fixp->fx_file, fixp->fx_line,
-                   _("literal referenced across section boundary"));   
+                   _("literal referenced across section boundary"));
       return NULL;
 
 #ifdef OBJ_ELF
@@ -11526,6 +11526,11 @@ arm_force_relocation (fixp)
       || fixp->fx_r_type == BFD_RELOC_THUMB_PCREL_BRANCH23)
     return 1;
 
+  /* Resolve these relocations even if the symbol is extern or weak.  */
+  if (fixp->fx_r_type == BFD_RELOC_ARM_IMMEDIATE
+      || fixp->fx_r_type == BFD_RELOC_ARM_ADRL_IMMEDIATE)
+    return 0;
+
   return S_FORCE_RELOC (fixp->fx_addsy);
 }