Treat SHT_FINI_ARRAY and SHT_PREINIT_ARRAY as relocatable sections
Since SHT_FINI_ARRAY and SHT_PREINIT_ARRAY sections are relocatable, this patch fixes readelf and adds a testcase. binutils/ * readelf.c (process_section_headers): Treat SHT_FINI_ARRAY and SHT_PREINIT_ARRAY as relocatable sections. gas/ * testsuite/gas/elf/elf.exp: Run section14. * testsuite/gas/elf/section14.d: New file. * testsuite/gas/elf/section14.s: Likewise.
This commit is contained in:
parent
fdad7678b7
commit
385e5b9039
6 changed files with 42 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2018-08-30 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* readelf.c (process_section_headers): Treat SHT_FINI_ARRAY and
|
||||||
|
SHT_PREINIT_ARRAY as relocatable sections.
|
||||||
|
|
||||||
2018-08-30 Chenghua Xu <paul.hua.gm@gmail.com>
|
2018-08-30 Chenghua Xu <paul.hua.gm@gmail.com>
|
||||||
|
|
||||||
* MAINTAINERS: Add myself as a MIPS port maintainer.
|
* MAINTAINERS: Add myself as a MIPS port maintainer.
|
||||||
|
|
|
@ -6359,6 +6359,8 @@ process_section_headers (Filedata * filedata)
|
||||||
&& filedata->section_headers[section->sh_info].sh_type != SHT_NOBITS
|
&& filedata->section_headers[section->sh_info].sh_type != SHT_NOBITS
|
||||||
&& filedata->section_headers[section->sh_info].sh_type != SHT_NOTE
|
&& filedata->section_headers[section->sh_info].sh_type != SHT_NOTE
|
||||||
&& filedata->section_headers[section->sh_info].sh_type != SHT_INIT_ARRAY
|
&& filedata->section_headers[section->sh_info].sh_type != SHT_INIT_ARRAY
|
||||||
|
&& filedata->section_headers[section->sh_info].sh_type != SHT_FINI_ARRAY
|
||||||
|
&& filedata->section_headers[section->sh_info].sh_type != SHT_PREINIT_ARRAY
|
||||||
/* FIXME: Are other section types valid ? */
|
/* FIXME: Are other section types valid ? */
|
||||||
&& filedata->section_headers[section->sh_info].sh_type < SHT_LOOS))
|
&& filedata->section_headers[section->sh_info].sh_type < SHT_LOOS))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2018-08-30 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* testsuite/gas/elf/elf.exp: Run section14.
|
||||||
|
* testsuite/gas/elf/section14.d: New file.
|
||||||
|
* testsuite/gas/elf/section14.s: Likewise.
|
||||||
|
|
||||||
2018-08-29 Daniel Cederman <cederman@gaisler.com>
|
2018-08-29 Daniel Cederman <cederman@gaisler.com>
|
||||||
|
|
||||||
* testsuite/gas/sparc/leon.d: New test.
|
* testsuite/gas/sparc/leon.d: New test.
|
||||||
|
|
|
@ -219,6 +219,7 @@ if { [is_elf_format] } then {
|
||||||
run_dump_test "section12a"
|
run_dump_test "section12a"
|
||||||
run_dump_test "section12b"
|
run_dump_test "section12b"
|
||||||
run_dump_test "section13"
|
run_dump_test "section13"
|
||||||
|
run_dump_test "section14"
|
||||||
run_dump_test "dwarf2-1"
|
run_dump_test "dwarf2-1"
|
||||||
run_dump_test "dwarf2-2"
|
run_dump_test "dwarf2-2"
|
||||||
run_dump_test "dwarf2-3"
|
run_dump_test "dwarf2-3"
|
||||||
|
|
10
gas/testsuite/gas/elf/section14.d
Normal file
10
gas/testsuite/gas/elf/section14.d
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#name: array sections
|
||||||
|
#as: --no-pad-sections
|
||||||
|
#readelf: -S --wide
|
||||||
|
|
||||||
|
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
|
||||||
|
|
||||||
|
Section Headers:
|
||||||
|
+\[Nr\] Name +Type +Addr(ess|) +Off +Size +ES +Flg +Lk +Inf +Al
|
||||||
|
+\[ 0\] +NULL +0+ +0+ +0+ +0+ +0 +0 +0
|
||||||
|
#pass
|
18
gas/testsuite/gas/elf/section14.s
Normal file
18
gas/testsuite/gas/elf/section14.s
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
.section .init_array
|
||||||
|
.align 4
|
||||||
|
.type init_array, %object
|
||||||
|
.size init_array, 4
|
||||||
|
init_array:
|
||||||
|
.dc.a foo
|
||||||
|
.section .preinit_array
|
||||||
|
.align 4
|
||||||
|
.type preinit_array, %object
|
||||||
|
.size preinit_array, 4
|
||||||
|
preinit_array:
|
||||||
|
.dc.a foo
|
||||||
|
.section .fini_array
|
||||||
|
.align 4
|
||||||
|
.type fini_array, %object
|
||||||
|
.size fini_array, 4
|
||||||
|
fini_array:
|
||||||
|
.dc.a foo
|
Loading…
Add table
Reference in a new issue