From a8acd6eeb6dc2cc5460ece90f90ebe36b56b20ba Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 1 May 2020 15:23:17 +0930 Subject: 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. --- ld/ldlang.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'ld/ldlang.c') 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 -- cgit v1.1