mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-06 23:53:12 +00:00
elf: Clear entsize when clearing SEC_MERGE|SEC_STRINGS
When generating an output from input SEC_MERGE|SEC_STRINGS sections with different entsizes, we clear the SEC_MERGE|SEC_STRINGS bits. We also need to clear entsize. PR ld/33291 * ldlang.c (lang_add_section): Clearing entsize when clearing SEC_MERGE|SEC_STRINGS. * testsuite/ld-elf/pr33291.d: New file. * testsuite/ld-elf/pr33291a.s: Likewise. * testsuite/ld-elf/pr33291b.s: Likewise. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
This commit is contained in:
@@ -2861,6 +2861,7 @@ lang_add_section (lang_statement_list_type *ptr,
|
|||||||
&& output->bfd_section->entsize != section->entsize))
|
&& output->bfd_section->entsize != section->entsize))
|
||||||
{
|
{
|
||||||
output->bfd_section->flags &= ~ (SEC_MERGE | SEC_STRINGS);
|
output->bfd_section->flags &= ~ (SEC_MERGE | SEC_STRINGS);
|
||||||
|
output->bfd_section->entsize = 0;
|
||||||
flags &= ~ (SEC_MERGE | SEC_STRINGS);
|
flags &= ~ (SEC_MERGE | SEC_STRINGS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
9
ld/testsuite/ld-elf/pr33291.d
Normal file
9
ld/testsuite/ld-elf/pr33291.d
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#source: pr33291a.s
|
||||||
|
#source: pr33291b.s
|
||||||
|
#ld: -shared
|
||||||
|
#readelf: -S --wide
|
||||||
|
#xfail: ![check_shared_lib_support]
|
||||||
|
|
||||||
|
#...
|
||||||
|
\[[ 0-9]+\] \.rodata[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ 0+9 00 +A +0 +0 +8
|
||||||
|
#...
|
||||||
8
ld/testsuite/ld-elf/pr33291a.s
Normal file
8
ld/testsuite/ld-elf/pr33291a.s
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
.globl foo
|
||||||
|
.section .rodata.cst8,"aM",%progbits,8
|
||||||
|
.p2align 3
|
||||||
|
.type foo, %object
|
||||||
|
.size foo, 8
|
||||||
|
foo:
|
||||||
|
.quad 131073
|
||||||
|
.section .note.GNU-stack,"",%progbits
|
||||||
7
ld/testsuite/ld-elf/pr33291b.s
Normal file
7
ld/testsuite/ld-elf/pr33291b.s
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
.globl bar
|
||||||
|
.section .rodata.cst1,"aM",%progbits,1
|
||||||
|
.type bar, %object
|
||||||
|
.size bar, 1
|
||||||
|
bar:
|
||||||
|
.byte 1
|
||||||
|
.section .note.GNU-stack,"",%progbits
|
||||||
Reference in New Issue
Block a user