aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf64-alpha.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2001-09-11 18:21:11 +0000
committerRichard Henderson <rth@redhat.com>2001-09-11 18:21:11 +0000
commitf94952df275cf6c0435a486a654476b0dac3f632 (patch)
treef73d8db6062418b8224f1af999039fcfad0f73b2 /bfd/elf64-alpha.c
parent146f1a875ae6cf47c559826dde490ef8b73c135b (diff)
downloadfsf-binutils-gdb-f94952df275cf6c0435a486a654476b0dac3f632.zip
fsf-binutils-gdb-f94952df275cf6c0435a486a654476b0dac3f632.tar.gz
fsf-binutils-gdb-f94952df275cf6c0435a486a654476b0dac3f632.tar.bz2
* elf64-alpha.c (elf64_alpha_relocate_section): Do not
apply HINT relocations against dynamic symbols.
Diffstat (limited to 'bfd/elf64-alpha.c')
-rw-r--r--bfd/elf64-alpha.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/bfd/elf64-alpha.c b/bfd/elf64-alpha.c
index 8efd4ee..e345b6d 100644
--- a/bfd/elf64-alpha.c
+++ b/bfd/elf64-alpha.c
@@ -3462,8 +3462,17 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
+ ((relocation >> 15) & 1));
goto default_reloc;
- case R_ALPHA_BRADDR:
case R_ALPHA_HINT:
+ /* A call to a dynamic symbol is definitely out of range of
+ the 16-bit displacement. Don't bother writing anything. */
+ if (h && alpha_elf_dynamic_symbol_p (&h->root, info))
+ {
+ r = bfd_reloc_ok;
+ break;
+ }
+ /* FALLTHRU */
+
+ case R_ALPHA_BRADDR:
/* The regular PC-relative stuff measures from the start of
the instruction rather than the end. */
addend -= 4;