diff options
author | Alan Modra <amodra@gmail.com> | 2020-05-01 15:20:14 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-05-01 15:32:36 +0930 |
commit | 6b728d3286a6e073e8cbdb63600e421de4f32dad (patch) | |
tree | 552cb2248023ea55a56b5ce85a609930f8290020 /bfd/elf32-sh.c | |
parent | 91ed9b71fa737ff4a4519f84c5e0ae0d544514f1 (diff) | |
download | fsf-binutils-gdb-6b728d3286a6e073e8cbdb63600e421de4f32dad.zip fsf-binutils-gdb-6b728d3286a6e073e8cbdb63600e421de4f32dad.tar.gz fsf-binutils-gdb-6b728d3286a6e073e8cbdb63600e421de4f32dad.tar.bz2 |
FIXME for merging of e_flags and .gnu.attributes
Code in the linker, present before the addition of .gnu.attributes
support, results in shared libraries not being considered by BFD when
merging e_flags and .gnu.attributes from input files to the output.
That doesn't seem correct to me, but I don't know enough about all the
various ABIs to change the behaviour with any confidence. So this
patch merely punts on dynamic objects in merge_private_bfd_data target
functions, with a FIXME for maintainer attention.
I haven't excluded shared libraries from being considered where the
target merge_private_bfd_data (a) already has code dealing with shared
libraries, or (b) where that function just sets the output to the most
constraining arch/mach combination and other fairly trivial merges, or
(c) when the target has no shared library linker support.
In (a) are: arc, arm, aarch64, riscv, sparc.
In (b) are: bpf, cris, csky, m32r, m68k, mn10300, nios2, tilegx,
tilepro, vax, visium, xtensa.
In (c) are: bpf, cr16, h8300, iq2000, m32c, m68hc11, m68hc12, mcore,
mep, msp430, mt, rl78, rx, v850.
PR 25882
* elf32-bfin.c (elf32_bfin_merge_private_bfd_data): Add FIXME.
* elf32-frv.c (frv_elf_merge_private_bfd_data): Likewise.
* elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Likewise.
* elf32-nds32.c (nds32_elf_merge_private_bfd_data): Likewise.
* elf32-score.c (s3_elf32_score_merge_private_bfd_data): Likewise.
* elf32-score7.c (s7_elf32_score_merge_private_bfd_data): Likewise.
* elf32-sh.c (sh_elf_merge_private_data): Likewise.
* elf32-tic6x.c (elf32_tic6x_merge_attributes): Likewise.
* elf64-ia64-vms.c (elf64_ia64_merge_private_bfd_data): Likewise.
* elfnn-ia64.c (elfNN_ia64_merge_private_bfd_data): Likewise.
Diffstat (limited to 'bfd/elf32-sh.c')
-rw-r--r-- | bfd/elf32-sh.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c index 24e879e..24203e0 100644 --- a/bfd/elf32-sh.c +++ b/bfd/elf32-sh.c @@ -6028,6 +6028,10 @@ sh_elf_merge_private_data (bfd *ibfd, struct bfd_link_info *info) { bfd *obfd = info->output_bfd; + /* FIXME: What should be checked when linking shared libraries? */ + if ((ibfd->flags & DYNAMIC) != 0) + return TRUE; + if (! is_sh_elf (ibfd) || ! is_sh_elf (obfd)) return TRUE; |