summaryrefslogtreecommitdiff
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
commit81f50d96d9e2f176f7a6cf4273ea7056858d39e1 (patch)
treef651e39390e5dc35d8058078f71d0db43e013fc8 /bfd/elf64-alpha.c
parentaf31125183ba759d4448fdef962e22bbae7b6a07 (diff)
downloadgdb-81f50d96d9e2f176f7a6cf4273ea7056858d39e1.tar.gz
* 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 8efd4ee2cf0..e345b6d9b0f 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;