aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2024-01-05 08:16:30 +0100
committerJan Beulich <jbeulich@suse.com>2024-01-05 08:16:30 +0100
commite2c9acb943f9af1ceb6690264e5a4f3f531c48b6 (patch)
tree977d05439d04b765314b6360a504e9910fa3f94f /gas
parent8fd892f4dd3c0374582a0b8fd6836ce09529b2b5 (diff)
downloadfsf-binutils-gdb-e2c9acb943f9af1ceb6690264e5a4f3f531c48b6.zip
fsf-binutils-gdb-e2c9acb943f9af1ceb6690264e5a4f3f531c48b6.tar.gz
fsf-binutils-gdb-e2c9acb943f9af1ceb6690264e5a4f3f531c48b6.tar.bz2
ELF: test certain .bss usages
Various targets have / had overrides for .bss. Make sure that in such cases - .previous still works correctly (requiring such targets to invoke obj_elf_section_change_hook() from their overriding handlers), - sub-section specifiers are accepted as far as feasible (mandated by the doc).
Diffstat (limited to 'gas')
-rw-r--r--gas/testsuite/gas/elf/bss-prev.d13
-rw-r--r--gas/testsuite/gas/elf/bss-prev.s6
-rw-r--r--gas/testsuite/gas/elf/bss-subsect.d11
-rw-r--r--gas/testsuite/gas/elf/bss-subsect.s10
-rw-r--r--gas/testsuite/gas/elf/elf.exp7
5 files changed, 47 insertions, 0 deletions
diff --git a/gas/testsuite/gas/elf/bss-prev.d b/gas/testsuite/gas/elf/bss-prev.d
new file mode 100644
index 0000000..b7ffac0
--- /dev/null
+++ b/gas/testsuite/gas/elf/bss-prev.d
@@ -0,0 +1,13 @@
+#name: .bss / .previous interaction
+#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 .*
+#...
+ *\[ [1-9]\] *\.text +PROGBITS +0*0 +0[0-9a-f]* 0+ .*
+ *\[ [1-9]\] *\.data +PROGBITS +0*0 +0[0-9a-f]* 0*1 .*
+ *\[ [1-9]\] *\.bss +NOBITS +0*0 +0[0-9a-f]* 0*1 .*
+#pass
diff --git a/gas/testsuite/gas/elf/bss-prev.s b/gas/testsuite/gas/elf/bss-prev.s
new file mode 100644
index 0000000..27564ce
--- /dev/null
+++ b/gas/testsuite/gas/elf/bss-prev.s
@@ -0,0 +1,6 @@
+ .text
+ .data
+ .bss
+ .byte 0
+ .previous
+ .byte 1
diff --git a/gas/testsuite/gas/elf/bss-subsect.d b/gas/testsuite/gas/elf/bss-subsect.d
new file mode 100644
index 0000000..ca59832
--- /dev/null
+++ b/gas/testsuite/gas/elf/bss-subsect.d
@@ -0,0 +1,11 @@
+#name: .bss <subsection>
+#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 .*
+#...
+ *\[ [1-9]\] *\.bss +NOBITS +0*0 +0[0-9a-f]* 0*a .*
+#pass
diff --git a/gas/testsuite/gas/elf/bss-subsect.s b/gas/testsuite/gas/elf/bss-subsect.s
new file mode 100644
index 0000000..b3de5b8d
--- /dev/null
+++ b/gas/testsuite/gas/elf/bss-subsect.s
@@ -0,0 +1,10 @@
+ .bss
+ .byte 0
+
+ .bss 2
+ .balign 2
+ .skip 2
+
+ .bss 1
+ .balign 4
+ .skip 4
diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp
index a21dbcc..88ef09c 100644
--- a/gas/testsuite/gas/elf/elf.exp
+++ b/gas/testsuite/gas/elf/elf.exp
@@ -336,6 +336,13 @@ if { [is_elf_format] } then {
run_dump_test "pr25917"
run_dump_test "bss"
+ # Some targets treat .bss similar to .lcomm.
+ if { ![istarget "csky-*-*"]
+ && ![istarget "mcore-*-*"]
+ && ![istarget "spu-*-*"] } then {
+ run_dump_test "bss-prev" $dump_opts
+ run_dump_test "bss-subsect" $dump_opts
+ }
run_dump_test "bad-bss"
run_dump_test "bad-section-flag"
run_dump_test "bad-size"