2003-04-25 Alan Modra <amodra@bigpond.net.au>
[deliverable/binutils-gdb.git] / bfd / elf64-alpha.c
index ddf739555539b885d70179eecc748e739865d4c1..4a2658abe1f8f4712e8dee3016abf1f2b74ea4ee 100644 (file)
@@ -305,7 +305,9 @@ alpha_elf_dynamic_symbol_p (h, info)
 
   if ((info->shared && !info->symbolic)
       || ((h->elf_link_hash_flags
-          & (ELF_LINK_HASH_DEF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR))
+          & (ELF_LINK_HASH_DEF_DYNAMIC
+             | ELF_LINK_HASH_DEF_REGULAR
+             | ELF_LINK_HASH_REF_REGULAR))
          == (ELF_LINK_HASH_DEF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR)))
     return TRUE;
 
@@ -4579,8 +4581,20 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
          value -= gp;
          goto default_reloc;
 
-       case R_ALPHA_GPREL16:
        case R_ALPHA_GPREL32:
+         /* If the target section was a removed linkonce section,
+            r_symndx will be zero.  In this case, assume that the
+            switch will not be used, so don't fill it in.  If we
+            do nothing here, we'll get relocation truncated messages,
+            due to the placement of the application above 4GB.  */
+         if (r_symndx == 0)
+           {
+             r = bfd_reloc_ok;
+             break;
+           }
+         /* FALLTHRU */
+
+       case R_ALPHA_GPREL16:
        case R_ALPHA_GPRELLOW:
          if (dynamic_symbol_p)
             {
This page took 0.023623 seconds and 4 git commands to generate.