summaryrefslogtreecommitdiffstats
path: root/contrib/binutils/bfd/elf64-alpha.c
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2000-11-15 21:07:32 +0000
committerobrien <obrien@FreeBSD.org>2000-11-15 21:07:32 +0000
commit1f13d4ae78b09786c306c5c3a8ae280cedcbbb22 (patch)
tree4b145d2efc6fbe18c165d6215155ce65ff0c1487 /contrib/binutils/bfd/elf64-alpha.c
parent2cf177a0cc93d62063f8ab428a968e48a9422233 (diff)
downloadFreeBSD-src-1f13d4ae78b09786c306c5c3a8ae280cedcbbb22.zip
FreeBSD-src-1f13d4ae78b09786c306c5c3a8ae280cedcbbb22.tar.gz
Only define "ELF_DYNAMIC_INTERPRETER" if it isn't defined elsewhere.
FreeBSD does not adhear to the System V 64-bit ABI for the dynamic [linker] interpreter, and thus must override this value.
Diffstat (limited to 'contrib/binutils/bfd/elf64-alpha.c')
-rw-r--r--contrib/binutils/bfd/elf64-alpha.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/contrib/binutils/bfd/elf64-alpha.c b/contrib/binutils/bfd/elf64-alpha.c
index 972450b..2347ea7 100644
--- a/contrib/binutils/bfd/elf64-alpha.c
+++ b/contrib/binutils/bfd/elf64-alpha.c
@@ -1673,7 +1673,9 @@ elf64_alpha_relax_section (abfd, sec, link_info, again)
#define MAX_GOT_ENTRIES (64*1024 / 8)
-#define ELF_DYNAMIC_INTERPRETER "/usr/libexec/ld-elf.so.1"
+#ifndef ELF_DYNAMIC_INTERPRETER
+#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so"
+#endif
/* Handle an Alpha specific section when reading an object file. This
is called when elfcode.h finds a section with an unknown type.
@@ -3477,14 +3479,17 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
}
else if (h->root.root.type == bfd_link_hash_undefweak)
relocation = 0;
- else if (info->shared && !info->symbolic && !info->no_undefined)
+ else if (info->shared && !info->symbolic
+ && !info->no_undefined
+ && ELF_ST_VISIBILITY (h->root.other) == STV_DEFAULT)
relocation = 0;
else
{
if (!((*info->callbacks->undefined_symbol)
(info, h->root.root.root.string, input_bfd,
input_section, rel->r_offset,
- (!info->shared || info->no_undefined))))
+ (!info->shared || info->no_undefined
+ || ELF_ST_VISIBILITY (h->root.other)))))
return false;
relocation = 0;
}
OpenPOWER on IntegriCloud