aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf32-score7.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2024-02-14 14:34:47 +1030
committerAlan Modra <amodra@gmail.com>2024-02-15 11:24:13 +1030
commitcf95b909e2c29476525da29bfb4f0d2c8211e8b6 (patch)
treec437c362eb3e94776db9f3dfd40e8d679c5a153b /bfd/elf32-score7.c
parent122d82284483577a388541f7fe2739754d4699b6 (diff)
downloadbinutils-cf95b909e2c29476525da29bfb4f0d2c8211e8b6.zip
binutils-cf95b909e2c29476525da29bfb4f0d2c8211e8b6.tar.gz
binutils-cf95b909e2c29476525da29bfb4f0d2c8211e8b6.tar.bz2
elf_backend_finish_dynamic_symbol returning false
Returning false from elf_backend_finish_dynamic_symbol will not result in an error being printed unless bfd_error is set but will result in the linker exiting with a non-zero status. If just bfd_error is set then a generic "final link failed" will result, which doesn't help a user much. So elf_backend_finish_dynamic_symbol should print its own error message whenever returning false, or use BFD_ASSERT or abort to print assertion failures for conditions that shouldn't occur. This patch does that, and removes unnecessary "htab != NULL" tests in elf_backend_finish_dynamic_symbol. Such tests aren't needed in a function only called via elf_backend_data.
Diffstat (limited to 'bfd/elf32-score7.c')
-rw-r--r--bfd/elf32-score7.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/bfd/elf32-score7.c b/bfd/elf32-score7.c
index c20fa7a..d1155bf 100644
--- a/bfd/elf32-score7.c
+++ b/bfd/elf32-score7.c
@@ -3296,7 +3296,13 @@ s7_bfd_score_elf_finish_dynamic_symbol (bfd *output_bfd,
/* FIXME: Can h->dynindex be more than 64K? */
if (h->dynindx & 0xffff0000)
- return false;
+ {
+ _bfd_error_handler
+ (_("%pB: cannot handle more than %d dynamic symbols"),
+ output_bfd, 0xffff);
+ bfd_set_error (bfd_error_bad_value);
+ return false;
+ }
/* Fill the stub. */
bfd_put_32 (output_bfd, STUB_LW, stub);