diff options
author | Richard Henderson <rth@redhat.com> | 2003-04-09 20:08:14 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2003-04-09 20:08:14 +0000 |
commit | ec1659c846e09371b2de488becf1f8042d10cc5b (patch) | |
tree | 4d7aa41d91988007a6db61bf1a2aee8c6a8fab1a /bfd | |
parent | 90a6fffbda7b597c2ea29b81668218e10a174ff1 (diff) | |
download | gdb-ec1659c846e09371b2de488becf1f8042d10cc5b.zip gdb-ec1659c846e09371b2de488becf1f8042d10cc5b.tar.gz gdb-ec1659c846e09371b2de488becf1f8042d10cc5b.tar.bz2 |
* elf64-alpha.c (elf64_alpha_relocate_section) <R_ALPHA_GPREL32>:
Ignore relocations against r_symndx == 0.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf64-alpha.c | 14 |
2 files changed, 18 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index eb9b28b..2396d5b 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2003-04-09 Richard Henderson <rth@redhat.com> + + * elf64-alpha.c (elf64_alpha_relocate_section) <R_ALPHA_GPREL32>: + Ignore relocations against r_symndx == 0. + 2003-04-09 H.J. Lu <hjl@gnu.org> * elf64-alpha.c (elf64_alpha_relocate_section): Don't return diff --git a/bfd/elf64-alpha.c b/bfd/elf64-alpha.c index ddf7395..bf18e205 100644 --- a/bfd/elf64-alpha.c +++ b/bfd/elf64-alpha.c @@ -4579,8 +4579,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) { |