ld -r: Don't merge with member of output section group
When doing a relocatable link, members of input section group are placed in their own output sections. We need to make sure that no input sections are merged with member of output section group. PR ld/24819 * emultempl/elf32.em (elf_orphan_compatible): Return FALSE for member of output section group when doing a relocatable link. * testsuite/ld-elf/pr24819.d: New file. * testsuite/ld-elf/pr24819.s: Likewise.
This commit is contained in:
parent
71c4e95abe
commit
54d7dae59a
@ -1,3 +1,11 @@
|
||||
2019-07-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/24819
|
||||
* emultempl/elf32.em (elf_orphan_compatible): Return FALSE for
|
||||
member of output section group when doing a relocatable link.
|
||||
* testsuite/ld-elf/pr24819.d: New file.
|
||||
* testsuite/ld-elf/pr24819.s: Likewise.
|
||||
|
||||
2019-07-13 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* testsuite/ld-powerpc/tlsso.r: Update.
|
||||
|
@ -2028,10 +2028,13 @@ elf_orphan_compatible (asection *in, asection *out)
|
||||
if (elf_section_data (out)->this_hdr.sh_info
|
||||
!= elf_section_data (in)->this_hdr.sh_info)
|
||||
return FALSE;
|
||||
/* We can't merge two sections with differing SHF_EXCLUDE when doing
|
||||
a relocatable link. */
|
||||
/* We can't merge with member of output section group nor merge two
|
||||
sections with differing SHF_EXCLUDE when doing a relocatable link.
|
||||
*/
|
||||
if (bfd_link_relocatable (&link_info)
|
||||
&& ((elf_section_flags (out) ^ elf_section_flags (in)) & SHF_EXCLUDE) != 0)
|
||||
&& (elf_next_in_group (out) != NULL
|
||||
|| ((elf_section_flags (out) ^ elf_section_flags (in))
|
||||
& SHF_EXCLUDE) != 0))
|
||||
return FALSE;
|
||||
return _bfd_elf_match_sections_by_type (link_info.output_bfd, out,
|
||||
in->owner, in);
|
||||
|
8
ld/testsuite/ld-elf/pr24819.d
Normal file
8
ld/testsuite/ld-elf/pr24819.d
Normal file
@ -0,0 +1,8 @@
|
||||
#ld: -r
|
||||
#readelf: -S --wide
|
||||
|
||||
#...
|
||||
\[[ 0-9]+\] \.data\.foo[ \t]+PROGBITS[ \t0-9a-f]+WAG .*
|
||||
#...
|
||||
\[[ 0-9]+\] \.data\.foo[ \t]+PROGBITS[ \t0-9a-f]+WA .*
|
||||
#pass
|
4
ld/testsuite/ld-elf/pr24819.s
Normal file
4
ld/testsuite/ld-elf/pr24819.s
Normal file
@ -0,0 +1,4 @@
|
||||
.section .data.foo,"awG",%progbits,.group1,comdat
|
||||
.byte 0
|
||||
.section .data.foo,"aw",%progbits
|
||||
.byte 0
|
Loading…
Reference in New Issue
Block a user