bfd/
2009-01-14 H.J. Lu <hongjiu.lu@intel.com> PR ld/9727 * elflink.c (elf_gc_sweep): Exclude the group section if the first member of the section group is excluded. ld/testsuite/ 2009-01-14 H.J. Lu <hongjiu.lu@intel.com> PR ld/9727 * ld-elf/group8.s: New. * ld-elf/group8a.d: Likewise. * ld-elf/group8b.d: Likewise. * ld-elf/group9.s: Likewise. * ld-elf/group9a.d: Likewise. * ld-elf/group9b.d: Likewise.
This commit is contained in:
parent
adb483feb8
commit
a33dafc30d
@ -1,3 +1,9 @@
|
||||
2009-01-14 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/9727
|
||||
* elflink.c (elf_gc_sweep): Exclude the group section if the
|
||||
first member of the section group is excluded.
|
||||
|
||||
2009-01-14 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
PR 9735
|
||||
|
@ -11397,10 +11397,21 @@ elf_gc_sweep (bfd *abfd, struct bfd_link_info *info)
|
||||
|
||||
for (o = sub->sections; o != NULL; o = o->next)
|
||||
{
|
||||
/* Keep debug and special sections. */
|
||||
if ((o->flags & (SEC_DEBUGGING | SEC_LINKER_CREATED)) != 0
|
||||
|| (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0)
|
||||
o->gc_mark = 1;
|
||||
/* When any section in a section group is kept, we keep all
|
||||
sections in the section group. If the first member of
|
||||
the section group is excluded, we will also exclude the
|
||||
group section. */
|
||||
if (o->flags & SEC_GROUP)
|
||||
{
|
||||
asection *first = elf_next_in_group (o);
|
||||
o->gc_mark = first->gc_mark;
|
||||
}
|
||||
else if ((o->flags & (SEC_DEBUGGING | SEC_LINKER_CREATED)) != 0
|
||||
|| (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0)
|
||||
{
|
||||
/* Keep debug and special sections. */
|
||||
o->gc_mark = 1;
|
||||
}
|
||||
|
||||
if (o->gc_mark)
|
||||
continue;
|
||||
|
@ -1,3 +1,13 @@
|
||||
2009-01-14 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/9727
|
||||
* ld-elf/group8.s: New.
|
||||
* ld-elf/group8a.d: Likewise.
|
||||
* ld-elf/group8b.d: Likewise.
|
||||
* ld-elf/group9.s: Likewise.
|
||||
* ld-elf/group9a.d: Likewise.
|
||||
* ld-elf/group9b.d: Likewise.
|
||||
|
||||
2009-01-13 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* ld-spu/icache1.s: New file.
|
||||
|
10
ld/testsuite/ld-elf/group8.s
Normal file
10
ld/testsuite/ld-elf/group8.s
Normal file
@ -0,0 +1,10 @@
|
||||
.section .text.foo,"axG",%progbits,foo,comdat
|
||||
.globl foo
|
||||
.type foo,%function
|
||||
foo:
|
||||
.byte 0
|
||||
.section .text.bar,"axG",%progbits,bar,comdat
|
||||
.globl bar
|
||||
.type bar,%function
|
||||
bar:
|
||||
.byte 0
|
8
ld/testsuite/ld-elf/group8a.d
Normal file
8
ld/testsuite/ld-elf/group8a.d
Normal file
@ -0,0 +1,8 @@
|
||||
#source: group8.s
|
||||
#ld: -r --gc-sections --entry foo
|
||||
#readelf: -g --wide
|
||||
#notarget: ia64-*-*
|
||||
|
||||
COMDAT group section \[[ 0-9]+\] `.group' \[foo\] contains 1 sections:
|
||||
\[Index\] Name
|
||||
\[[ 0-9]+\] .text.foo
|
8
ld/testsuite/ld-elf/group8b.d
Normal file
8
ld/testsuite/ld-elf/group8b.d
Normal file
@ -0,0 +1,8 @@
|
||||
#source: group8.s
|
||||
#ld: -r --gc-sections --entry bar
|
||||
#readelf: -g --wide
|
||||
#notarget: ia64-*-*
|
||||
|
||||
COMDAT group section \[[ 0-9]+\] `.group' \[bar\] contains 1 sections:
|
||||
\[Index\] Name
|
||||
\[[ 0-9]+\] .text.bar
|
15
ld/testsuite/ld-elf/group9.s
Normal file
15
ld/testsuite/ld-elf/group9.s
Normal file
@ -0,0 +1,15 @@
|
||||
.section .text.foo,"axG",%progbits,foo,comdat
|
||||
.globl foo
|
||||
.type foo,%function
|
||||
foo:
|
||||
.byte 0
|
||||
.section .data.foo,"axG",%progbits,foo,comdat
|
||||
.globl foo.data
|
||||
.type foo,%object
|
||||
foo.data:
|
||||
.byte 0
|
||||
.section .text.bar,"axG",%progbits,bar,comdat
|
||||
.globl bar
|
||||
.type bar,%function
|
||||
bar:
|
||||
.byte foo.data
|
9
ld/testsuite/ld-elf/group9a.d
Normal file
9
ld/testsuite/ld-elf/group9a.d
Normal file
@ -0,0 +1,9 @@
|
||||
#source: group9.s
|
||||
#ld: -r --gc-sections --entry foo
|
||||
#readelf: -g --wide
|
||||
#notarget: ia64-*-*
|
||||
|
||||
COMDAT group section \[[ 0-9]+\] `.group' \[foo\] contains 2 sections:
|
||||
\[Index\] Name
|
||||
\[[ 0-9]+\] .text.foo
|
||||
\[[ 0-9]+\] .data.foo
|
13
ld/testsuite/ld-elf/group9b.d
Normal file
13
ld/testsuite/ld-elf/group9b.d
Normal file
@ -0,0 +1,13 @@
|
||||
#source: group9.s
|
||||
#ld: -r --gc-sections --entry bar
|
||||
#readelf: -g --wide
|
||||
#notarget: ia64-*-*
|
||||
|
||||
COMDAT group section \[[ 0-9]+\] `.group' \[foo\] contains 2 sections:
|
||||
\[Index\] Name
|
||||
\[[ 0-9]+\] .text.foo
|
||||
\[[ 0-9]+\] .data.foo
|
||||
|
||||
COMDAT group section \[[ 0-9]+\] `.group' \[bar\] contains 1 sections:
|
||||
\[Index\] Name
|
||||
\[[ 0-9]+\] .text.bar
|
Loading…
x
Reference in New Issue
Block a user