mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-06 07:33:08 +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->flags &= ~ (SEC_MERGE | SEC_STRINGS);
|
||||
output->bfd_section->entsize = 0;
|
||||
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