From 0a3137ce4c4b38ee8b26c09824633b827fed4cb1 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sat, 11 Feb 2023 08:36:24 +1030 Subject: objdump -D of bss sections and -s with -j There is some inconsistency between the behaviour of objdump -D and objdump -s, both supposedly operating on all sections by default. objdump -s ignores bss sections, while objdump -D dissassembles the zeros. Fix this by making objdump -D ignore bss sections too. Furthermore, "objdump -s -j .bss" doesn't dump .bss as it should, since the user is specifically asking to look at all those zeros. This change does find some tests that used objdump -D with expected output in bss-style sections. I've updated all the msp430 tests that just wanted to find a non-empty section to look at section headers instead, making the tests slightly more stringent. The ppc xcoff and spu tests are fixed by adding -j options to objdump, which makes the tests somewhat more lenient. binutils/ * objdump.c (disassemble_section): Ignore sections without contents, unless overridden by -j. (dump_section): Allow -j to override the default of not displaying sections without contents. * doc/binutils.texi (objdump options): Update -D, -s and -j description. gas/ * testsuite/gas/ppc/xcoff-tls-32.d: Select wanted objdump sections with -j. * testsuite/gas/ppc/xcoff-tls-64.d: Likewise. ld/ * testsuite/ld-msp430-elf/main-bss-lower.d, * testsuite/ld-msp430-elf/main-bss-upper.d, * testsuite/ld-msp430-elf/main-const-lower.d, * testsuite/ld-msp430-elf/main-const-upper.d, * testsuite/ld-msp430-elf/main-text-lower.d, * testsuite/ld-msp430-elf/main-text-upper.d, * testsuite/ld-msp430-elf/main-var-lower.d, * testsuite/ld-msp430-elf/main-var-upper.d: Expect -wh output. * testsuite/ld-msp430-elf/msp430-elf.exp: Use objdump -wh rather than objdump -D or objdump -d with tests checking for non-empty given sections. * testsuite/ld-spu/ear.d, * testsuite/ld-spu/icache1.d, * testsuite/ld-spu/ovl.d, * testsuite/ld-spu/ovl2.d: Select wanted objdump sections. --- ld/testsuite/ld-msp430-elf/main-bss-lower.d | 2 +- ld/testsuite/ld-msp430-elf/main-bss-upper.d | 2 +- ld/testsuite/ld-msp430-elf/main-const-lower.d | 2 +- ld/testsuite/ld-msp430-elf/main-const-upper.d | 2 +- ld/testsuite/ld-msp430-elf/main-text-lower.d | 2 +- ld/testsuite/ld-msp430-elf/main-text-upper.d | 7 +-- ld/testsuite/ld-msp430-elf/main-var-lower.d | 2 +- ld/testsuite/ld-msp430-elf/main-var-upper.d | 2 +- ld/testsuite/ld-msp430-elf/msp430-elf.exp | 80 +++++++++++++-------------- ld/testsuite/ld-spu/ear.d | 2 +- ld/testsuite/ld-spu/icache1.d | 2 +- ld/testsuite/ld-spu/ovl.d | 2 +- ld/testsuite/ld-spu/ovl2.d | 2 +- 13 files changed, 53 insertions(+), 56 deletions(-) (limited to 'ld') diff --git a/ld/testsuite/ld-msp430-elf/main-bss-lower.d b/ld/testsuite/ld-msp430-elf/main-bss-lower.d index 6007420..489dddb 100644 --- a/ld/testsuite/ld-msp430-elf/main-bss-lower.d +++ b/ld/testsuite/ld-msp430-elf/main-bss-lower.d @@ -1,3 +1,3 @@ #... -Disassembly of section .lower.bss: +.* \.lower\.bss +0+14 .* #pass diff --git a/ld/testsuite/ld-msp430-elf/main-bss-upper.d b/ld/testsuite/ld-msp430-elf/main-bss-upper.d index 2f6376a7..ad410e5 100644 --- a/ld/testsuite/ld-msp430-elf/main-bss-upper.d +++ b/ld/testsuite/ld-msp430-elf/main-bss-upper.d @@ -1,3 +1,3 @@ #... -Disassembly of section .upper.bss: +.* \.upper\.bss +0+14 .* #pass diff --git a/ld/testsuite/ld-msp430-elf/main-const-lower.d b/ld/testsuite/ld-msp430-elf/main-const-lower.d index 8549961..0b639da 100644 --- a/ld/testsuite/ld-msp430-elf/main-const-lower.d +++ b/ld/testsuite/ld-msp430-elf/main-const-lower.d @@ -1,3 +1,3 @@ #... -Disassembly of section .lower.rodata: +.* \.lower\.rodata +0+14 .* #pass diff --git a/ld/testsuite/ld-msp430-elf/main-const-upper.d b/ld/testsuite/ld-msp430-elf/main-const-upper.d index c84d649..7dd078d 100644 --- a/ld/testsuite/ld-msp430-elf/main-const-upper.d +++ b/ld/testsuite/ld-msp430-elf/main-const-upper.d @@ -1,3 +1,3 @@ #... -Disassembly of section .upper.rodata: +.* \.upper\.rodata +0+14 .* #pass diff --git a/ld/testsuite/ld-msp430-elf/main-text-lower.d b/ld/testsuite/ld-msp430-elf/main-text-lower.d index 446a305..9f3442c 100644 --- a/ld/testsuite/ld-msp430-elf/main-text-lower.d +++ b/ld/testsuite/ld-msp430-elf/main-text-lower.d @@ -1,3 +1,3 @@ #... -Disassembly of section .lower.text: +.* \.lower\.text +0+38 .* #pass diff --git a/ld/testsuite/ld-msp430-elf/main-text-upper.d b/ld/testsuite/ld-msp430-elf/main-text-upper.d index f7ae6af..712f548 100644 --- a/ld/testsuite/ld-msp430-elf/main-text-upper.d +++ b/ld/testsuite/ld-msp430-elf/main-text-upper.d @@ -1,6 +1,3 @@ - -.*: file format.*msp430.* - - -Disassembly of section .upper.text: #... +.* \.upper\.text +0+38 .* +#pass diff --git a/ld/testsuite/ld-msp430-elf/main-var-lower.d b/ld/testsuite/ld-msp430-elf/main-var-lower.d index f520cf5..7f214b5 100644 --- a/ld/testsuite/ld-msp430-elf/main-var-lower.d +++ b/ld/testsuite/ld-msp430-elf/main-var-lower.d @@ -1,3 +1,3 @@ #... -Disassembly of section .lower.data: +.* \.lower\.data +0+14 .* #pass diff --git a/ld/testsuite/ld-msp430-elf/main-var-upper.d b/ld/testsuite/ld-msp430-elf/main-var-upper.d index fc3d712..9443f70 100644 --- a/ld/testsuite/ld-msp430-elf/main-var-upper.d +++ b/ld/testsuite/ld-msp430-elf/main-var-upper.d @@ -1,3 +1,3 @@ #... -Disassembly of section .upper.data: +.* \.upper\.data +0+14 .* #pass diff --git a/ld/testsuite/ld-msp430-elf/msp430-elf.exp b/ld/testsuite/ld-msp430-elf/msp430-elf.exp index 89c7f39..0e1a1c9 100644 --- a/ld/testsuite/ld-msp430-elf/msp430-elf.exp +++ b/ld/testsuite/ld-msp430-elf/msp430-elf.exp @@ -49,106 +49,106 @@ if { ![istarget "msp430*elf*"] } { set msp430regionprefixtests { {"Move main() to .upper.text" "-T msp430.ld --code-region=upper" - "" "" {main-with-text-rodata.s} {{objdump -d main-text-upper.d}} "main-upper"} + "" "" {main-with-text-rodata.s} {{objdump -wh main-text-upper.d}} "main-upper"} {"Move main() to .upper.text. No .lower.text in ld script" "-T msp430-no-lower.ld --code-region=upper" - "" "" {main-with-text-rodata.s} {{objdump -d main-text-upper.d}} "main-upper"} + "" "" {main-with-text-rodata.s} {{objdump -wh main-text-upper.d}} "main-upper"} {"Move main() to .lower.text" "-T msp430.ld --code-region=lower" - "" "" {main-with-text-rodata.s} {{objdump -d main-text-lower.d}} "main-lower"} + "" "" {main-with-text-rodata.s} {{objdump -wh main-text-lower.d}} "main-lower"} {"Move \"either\" main() to .lower.text" "-T msp430.ld --code-region=either" - "" "" {main-with-text-rodata.s} {{objdump -d main-text-lower.d}} "main-either"} + "" "" {main-with-text-rodata.s} {{objdump -wh main-text-lower.d}} "main-either"} {"Move glob_var to .upper.data" "-T msp430.ld --data-region=upper" - "" "" {main-with-data-bss.s} {{objdump -D main-var-upper.d}} "main-var-upper"} + "" "" {main-with-data-bss.s} {{objdump -wh main-var-upper.d}} "main-var-upper"} {"Move glob_var to .upper.data. No .lower.data in ld script" "-T msp430-no-lower.ld --data-region=upper" - "" "" {main-with-data-bss.s} {{objdump -D main-var-upper.d}} "main-var-upper"} + "" "" {main-with-data-bss.s} {{objdump -wh main-var-upper.d}} "main-var-upper"} {"Move glob_var to .lower.data" "-T msp430.ld --data-region=lower" - "" "" {main-with-data-bss.s} {{objdump -D main-var-lower.d}} "main-var-lower"} + "" "" {main-with-data-bss.s} {{objdump -wh main-var-lower.d}} "main-var-lower"} {"Move \"either\" glob_var to .lower.data" "-T msp430.ld --data-region=lower" - "" "" {main-with-data-bss.s} {{objdump -D main-var-lower.d}} "main-var-lower"} + "" "" {main-with-data-bss.s} {{objdump -wh main-var-lower.d}} "main-var-lower"} {"Move glob_zero to .upper.bss" "-T msp430.ld --data-region=upper" - "" "" {main-with-data-bss.s} {{objdump -D main-bss-upper.d}} "main-bss-upper"} + "" "" {main-with-data-bss.s} {{objdump -wh main-bss-upper.d}} "main-bss-upper"} {"Move glob_zero to .upper.bss. No .lower.bss in ld script." "-T msp430-no-lower.ld --data-region=upper" - "" "" {main-with-data-bss.s} {{objdump -D main-bss-upper.d}} "main-bss-upper"} + "" "" {main-with-data-bss.s} {{objdump -wh main-bss-upper.d}} "main-bss-upper"} {"Move glob_zero to .lower.bss" "-T msp430.ld --data-region=lower" - "" "" {main-with-data-bss.s} {{objdump -D main-bss-lower.d}} "main-bss-lower"} + "" "" {main-with-data-bss.s} {{objdump -wh main-bss-lower.d}} "main-bss-lower"} {"Move \"either\" glob_zero to .lower.bss" "-T msp430.ld --data-region=lower" - "" "" {main-with-data-bss.s} {{objdump -D main-bss-lower.d}} "main-bss-lower"} + "" "" {main-with-data-bss.s} {{objdump -wh main-bss-lower.d}} "main-bss-lower"} {"Move glob_const to .upper.rodata" "-T msp430.ld --data-region=upper" - "" "" {main-with-text-rodata.s} {{objdump -D main-const-upper.d}} "main-const-upper"} + "" "" {main-with-text-rodata.s} {{objdump -wh main-const-upper.d}} "main-const-upper"} {"Move glob_const to .upper.rodata. No .lower.rodata in ld script." "-T msp430-no-lower.ld --data-region=upper" - "" "" {main-with-text-rodata.s} {{objdump -D main-const-upper.d}} "main-const-upper"} + "" "" {main-with-text-rodata.s} {{objdump -wh main-const-upper.d}} "main-const-upper"} {"Move glob_const to .lower.rodata" "-T msp430.ld --data-region=lower" - "" "" {main-with-text-rodata.s} {{objdump -D main-const-lower.d}} "main-const-lower"} + "" "" {main-with-text-rodata.s} {{objdump -wh main-const-lower.d}} "main-const-lower"} {"Move \"either\" glob_const to .lower.rodata" "-T msp430.ld --data-region=lower" - "" "" {main-with-text-rodata.s} {{objdump -D main-const-lower.d}} "main-const-lower"} + "" "" {main-with-text-rodata.s} {{objdump -wh main-const-lower.d}} "main-const-lower"} } set msp430regionprefixuniquesectiontests { {"Move main() to .upper.text, with -ffunction/data-sections" "-T msp430.ld --code-region=upper" - "" "" {main-with-text-rodata-unique-sec.s} {{objdump -d main-text-upper.d}} "main-upper"} + "" "" {main-with-text-rodata-unique-sec.s} {{objdump -wh main-text-upper.d}} "main-upper"} {"Move main() to .upper.text. No .lower.text in ld script, with -ffunction/data-sections" "-T msp430-no-lower.ld --code-region=upper" - "" "" {main-with-text-rodata-unique-sec.s} {{objdump -d main-text-upper.d}} "main-upper"} + "" "" {main-with-text-rodata-unique-sec.s} {{objdump -wh main-text-upper.d}} "main-upper"} {"Move main() to .lower.text, with -ffunction/data-sections" "-T msp430.ld --code-region=lower" - "" "" {main-with-text-rodata-unique-sec.s} {{objdump -d main-text-lower.d}} "main-lower"} + "" "" {main-with-text-rodata-unique-sec.s} {{objdump -wh main-text-lower.d}} "main-lower"} {"Move \"either\" main() to .lower.text, with -ffunction/data-sections" "-T msp430.ld --code-region=either" - "" "" {main-with-text-rodata-unique-sec.s} {{objdump -d main-text-lower.d}} "main-either"} + "" "" {main-with-text-rodata-unique-sec.s} {{objdump -wh main-text-lower.d}} "main-either"} {"Move glob_var to .upper.data, with -ffunction/data-sections" "-T msp430.ld --data-region=upper" - "" "" {main-with-data-bss-unique-sec.s} {{objdump -D main-var-upper.d}} "main-var-upper"} + "" "" {main-with-data-bss-unique-sec.s} {{objdump -wh main-var-upper.d}} "main-var-upper"} {"Move glob_var to .upper.data. No .lower.data in ld script, with -ffunction/data-sections" "-T msp430-no-lower.ld --data-region=upper" - "" "" {main-with-data-bss-unique-sec.s} {{objdump -D main-var-upper.d}} "main-var-upper"} + "" "" {main-with-data-bss-unique-sec.s} {{objdump -wh main-var-upper.d}} "main-var-upper"} {"Move glob_var to .lower.data, with -ffunction/data-sections" "-T msp430.ld --data-region=lower" - "" "" {main-with-data-bss-unique-sec.s} {{objdump -D main-var-lower.d}} "main-var-lower"} + "" "" {main-with-data-bss-unique-sec.s} {{objdump -wh main-var-lower.d}} "main-var-lower"} {"Move \"either\" glob_var to .lower.data, with -ffunction/data-sections" "-T msp430.ld --data-region=lower" - "" "" {main-with-data-bss-unique-sec.s} {{objdump -D main-var-lower.d}} "main-var-lower"} + "" "" {main-with-data-bss-unique-sec.s} {{objdump -wh main-var-lower.d}} "main-var-lower"} {"Move glob_zero to .upper.bss, with -ffunction/data-sections" "-T msp430.ld --data-region=upper" - "" "" {main-with-data-bss-unique-sec.s} {{objdump -D main-bss-upper.d}} "main-bss-upper"} + "" "" {main-with-data-bss-unique-sec.s} {{objdump -wh main-bss-upper.d}} "main-bss-upper"} {"Move glob_zero to .upper.bss. No .lower.bss in ld script., with -ffunction/data-sections" "-T msp430-no-lower.ld --data-region=upper" - "" "" {main-with-data-bss-unique-sec.s} {{objdump -D main-bss-upper.d}} "main-bss-upper"} + "" "" {main-with-data-bss-unique-sec.s} {{objdump -wh main-bss-upper.d}} "main-bss-upper"} {"Move glob_zero to .lower.bss, with -ffunction/data-sections" "-T msp430.ld --data-region=lower" - "" "" {main-with-data-bss-unique-sec.s} {{objdump -D main-bss-lower.d}} "main-bss-lower"} + "" "" {main-with-data-bss-unique-sec.s} {{objdump -wh main-bss-lower.d}} "main-bss-lower"} {"Move \"either\" glob_zero to .lower.bss, with -ffunction/data-sections" "-T msp430.ld --data-region=lower" - "" "" {main-with-data-bss-unique-sec.s} {{objdump -D main-bss-lower.d}} "main-bss-lower"} + "" "" {main-with-data-bss-unique-sec.s} {{objdump -wh main-bss-lower.d}} "main-bss-lower"} {"Move glob_const to .upper.rodata, with -ffunction/data-sections" "-T msp430.ld --data-region=upper" - "" "" {main-with-text-rodata-unique-sec.s} {{objdump -D main-const-upper.d}} "main-const-upper"} + "" "" {main-with-text-rodata-unique-sec.s} {{objdump -wh main-const-upper.d}} "main-const-upper"} {"Move glob_const to .upper.rodata. No .lower.rodata in ld script., with -ffunction/data-sections" "-T msp430-no-lower.ld --data-region=upper" - "" "" {main-with-text-rodata-unique-sec.s} {{objdump -D main-const-upper.d}} "main-const-upper"} + "" "" {main-with-text-rodata-unique-sec.s} {{objdump -wh main-const-upper.d}} "main-const-upper"} {"Move glob_const to .lower.rodata, with -ffunction/data-sections" "-T msp430.ld --data-region=lower" - "" "" {main-with-text-rodata-unique-sec.s} {{objdump -D main-const-lower.d}} "main-const-lower"} + "" "" {main-with-text-rodata-unique-sec.s} {{objdump -wh main-const-lower.d}} "main-const-lower"} {"Move \"either\" glob_const to .lower.rodata, with -ffunction/data-sections" "-T msp430.ld --data-region=lower" - "" "" {main-with-text-rodata-unique-sec.s} {{objdump -D main-const-lower.d}} "main-const-lower"} + "" "" {main-with-text-rodata-unique-sec.s} {{objdump -wh main-const-lower.d}} "main-const-lower"} } set msp430eithershuffletests { {"Move \"either\" main() to .upper.text when it doesn\'t fit in .lower.text" "-T msp430-tiny-rom.ld --code-region=either --data-region=either" "" "" {main-with-text-rodata.s} - {{objdump -d main-text-upper.d}} "either-to-upper-text"} + {{objdump -wh main-text-upper.d}} "either-to-upper-text"} {"Move \"either\" glob_var_array to .upper.data when it doesn\'t fit in .lower.data" "-T msp430-tiny-ram.ld --data-region=either" "" "" {main-with-data-bss.s} - {{objdump -D main-var-upper.d}} "either-to-upper-data"} + {{objdump -wh main-var-upper.d}} "either-to-upper-data"} {"Move \"either\" glob_bss_array to .upper.bss when it doesn\'t fit in .lower.bss" "-T msp430-tiny-ram.ld --data-region=either" "" "" {main-with-data-bss.s} - {{objdump -D main-bss-upper.d}} "either-to-upper-bss"} + {{objdump -wh main-bss-upper.d}} "either-to-upper-bss"} {"Move \"either\" glob_const_array to .upper.rodata when it doesn\'t fit in .lower.rodata" "-T msp430-tiny-rom.ld --code-region=either --data-region=either" "" "" {main-with-text-rodata.s} - {{objdump -D main-const-upper.d}} "either-to-upper-const"} + {{objdump -wh main-const-upper.d}} "either-to-upper-const"} {"Move \"either\" main() to .upper.text when it doesn\'t fit in .lower.text, with -ffunction/data-sections" "-T msp430-tiny-rom.ld --code-region=either --data-region=either" "" "" {main-with-text-rodata-unique-sec.s} - {{objdump -d main-text-upper.d}} "either-to-upper-text-unique-sec"} + {{objdump -wh main-text-upper.d}} "either-to-upper-text-unique-sec"} {"Move \"either\" glob_var_array to .upper.data when it doesn\'t fit in .lower.data, with -ffunction/data-sections" "-T msp430-tiny-ram.ld --data-region=either" "" "" {main-with-data-bss-unique-sec.s} - {{objdump -D main-var-upper.d}} "either-to-upper-data-unique-sec"} + {{objdump -wh main-var-upper.d}} "either-to-upper-data-unique-sec"} {"Move \"either\" glob_bss_array to .upper.bss when it doesn\'t fit in .lower.bss, with -ffunction/data-sections" "-T msp430-tiny-ram.ld --data-region=either" "" "" {main-with-data-bss-unique-sec.s} - {{objdump -D main-bss-upper.d}} "either-to-upper-bss-unique-sec"} + {{objdump -wh main-bss-upper.d}} "either-to-upper-bss-unique-sec"} {"Move \"either\" glob_const_array to .upper.rodata when it doesn\'t fit in .lower.rodata, with -ffunction/data-sections" "-T msp430-tiny-rom.ld --code-region=either --data-region=either" "" "" {main-with-text-rodata-unique-sec.s} - {{objdump -D main-const-upper.d}} "either-to-upper-const-unique-sec"} + {{objdump -wh main-const-upper.d}} "either-to-upper-const-unique-sec"} } set msp430warntests { diff --git a/ld/testsuite/ld-spu/ear.d b/ld/testsuite/ld-spu/ear.d index df5546f..8c6435e 100644 --- a/ld/testsuite/ld-spu/ear.d +++ b/ld/testsuite/ld-spu/ear.d @@ -1,5 +1,5 @@ #as: -#objdump: -Dr +#objdump: -Dr -j.text -j.data -j.toe -j.data.blah #name: ear .*: +file format .* diff --git a/ld/testsuite/ld-spu/icache1.d b/ld/testsuite/ld-spu/icache1.d index 27dc99e..a4c8c5a 100644 --- a/ld/testsuite/ld-spu/icache1.d +++ b/ld/testsuite/ld-spu/icache1.d @@ -1,6 +1,6 @@ #source: icache1.s #ld: --soft-icache --num-lines=4 --non-ia-text --auto-overlay=tmpdir/icache1.lnk --auto-relink -#objdump: -D +#objdump: -D -j.text -j.data -j.bss -j.ovl.init -j.ovly1 -j.ovly2 -j.ovly3 -j.ovly4 -j.ovly5 -j.ovly6 -j.ovly7 -j.ovly8 .* elf32-spu diff --git a/ld/testsuite/ld-spu/ovl.d b/ld/testsuite/ld-spu/ovl.d index cbf7573..a0372a0 100644 --- a/ld/testsuite/ld-spu/ovl.d +++ b/ld/testsuite/ld-spu/ovl.d @@ -1,6 +1,6 @@ #source: ovl.s #ld: -N -T ovl1.lnk -T ovl.lnk --emit-relocs -#objdump: -D -r +#objdump: -D -r -j.text -j.ov_a1 -j.ov_a2 -j.data -j.toe -j.note.spu_name .*elf32-spu diff --git a/ld/testsuite/ld-spu/ovl2.d b/ld/testsuite/ld-spu/ovl2.d index b1e344c..b8570c0 100644 --- a/ld/testsuite/ld-spu/ovl2.d +++ b/ld/testsuite/ld-spu/ovl2.d @@ -1,6 +1,6 @@ #source: ovl2.s #ld: -N -T ovl2.lnk -T ovl.lnk --emit-relocs -#objdump: -D -r +#objdump: -D -r -j.text -j.ov_a1 -j.ov_a2 -j.data -j.toe -j.nonalloc -j.note.spu_name .*elf32-spu -- cgit v1.1