aboutsummaryrefslogtreecommitdiff
path: root/ld/ldlang.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-05-01 15:23:17 +0930
committerAlan Modra <amodra@gmail.com>2020-05-01 15:32:36 +0930
commita8acd6eeb6dc2cc5460ece90f90ebe36b56b20ba (patch)
treedc423444c9904c1b3b24565174b690cff8e7486e /ld/ldlang.c
parent6b728d3286a6e073e8cbdb63600e421de4f32dad (diff)
downloadbinutils-a8acd6eeb6dc2cc5460ece90f90ebe36b56b20ba.zip
binutils-a8acd6eeb6dc2cc5460ece90f90ebe36b56b20ba.tar.gz
binutils-a8acd6eeb6dc2cc5460ece90f90ebe36b56b20ba.tar.bz2
PR25882, .gnu.attributes are not checked for shared libraries
This allows backend merge_private_bfd_data to examine shared library e_flags and/or .gnu.attributes. ARM and PowerPC have done so when using ld.gold for a long time. (The tic6x change below is dead code due to the earlier FIXME, but this is probably one of the changes needed there.) PR 25882 bfd/ * elf32-tic6x.c (elf32_tic6x_merge_attributes): Don't transfer Tag_ABI_PIC or Tag_ABI_PID from dynamic objects to the output. ld/ * ldlang.c (lang_check): Call bfd_merge_private_bfd_data for shared libraries.
Diffstat (limited to 'ld/ldlang.c')
-rw-r--r--ld/ldlang.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 2ef234f..b2cdb36 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -6938,11 +6938,12 @@ lang_check (void)
bfd_printable_name (input_bfd), input_bfd,
bfd_printable_name (link_info.output_bfd));
}
- else if (bfd_count_sections (input_bfd))
- {
- /* If the input bfd has no contents, it shouldn't set the
- private data of the output bfd. */
+ /* If the input bfd has no contents, it shouldn't set the
+ private data of the output bfd. */
+ else if ((input_bfd->flags & DYNAMIC) != 0
+ || bfd_count_sections (input_bfd) != 0)
+ {
bfd_error_handler_type pfn = NULL;
/* If we aren't supposed to warn about mismatched input