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.
This commit is contained in:
parent
6b728d3286
commit
a8acd6eeb6
@ -1,3 +1,9 @@
|
||||
2020-05-01 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 25882
|
||||
* elf32-tic6x.c (elf32_tic6x_merge_attributes): Don't transfer
|
||||
Tag_ABI_PIC or Tag_ABI_PID from dynamic objects to the output.
|
||||
|
||||
2020-05-01 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 25882
|
||||
|
@ -3866,6 +3866,9 @@ elf32_tic6x_merge_attributes (bfd *ibfd, struct bfd_link_info *info)
|
||||
|
||||
case Tag_ABI_PIC:
|
||||
case Tag_ABI_PID:
|
||||
/* Don't transfer these tags from dynamic objects. */
|
||||
if ((ibfd->flags & DYNAMIC) != 0)
|
||||
continue;
|
||||
if (out_attr[i].i > in_attr[i].i)
|
||||
out_attr[i].i = in_attr[i].i;
|
||||
break;
|
||||
|
@ -1,3 +1,9 @@
|
||||
2020-05-01 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 25882
|
||||
* ldlang.c (lang_check): Call bfd_merge_private_bfd_data for
|
||||
shared libraries.
|
||||
|
||||
2020-05-01 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* po/BLD-POTFILES.in: Regenerate.
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user