From: Andrew Burgess <andrew.burgess@embecosm.com>
To: gdb-patches@sourceware.org
Subject: [PATCH 1/3] gdb/testsuite: split 'maint info sections' tests to a new file
Date: Fri, 5 Feb 2021 21:29:09 +0000 [thread overview]
Message-ID: <d4718b83886984c13c5c56ff4d6ddc4f90d2a5b5.1612560410.git.andrew.burgess@embecosm.com> (raw)
In-Reply-To: <cover.1612560410.git.andrew.burgess@embecosm.com>
The next couple of patches are going to add more tests for the 'maint
info sections' command. Rather than try to jam these tests into the
already quite long gdb.base/maint.c, this commit moves all of the
tests for 'maint info sections' into a new file.
I've updated the tests to make use of some newer testsuite constructs,
like -wrap and $gdb_test_name for gdb_test_multiple, but otherwise the
tests should not have changed with this commit.
gdb/testsuite/ChangeLog:
* gdb.base/maint-info-sections.exp: New file, content is moved
from gdb.base/maint.exp and cleaned up to use latest testsuite
techniques.
* gdb.base/maint.exp: Tests moved out to
gdb.base/maint-info-sections.exp.
---
gdb/testsuite/ChangeLog | 8 ++
.../gdb.base/maint-info-sections.exp | 127 ++++++++++++++++++
gdb/testsuite/gdb.base/maint.exp | 87 ------------
3 files changed, 135 insertions(+), 87 deletions(-)
create mode 100644 gdb/testsuite/gdb.base/maint-info-sections.exp
diff --git a/gdb/testsuite/gdb.base/maint-info-sections.exp b/gdb/testsuite/gdb.base/maint-info-sections.exp
new file mode 100644
index 00000000000..6c41ff2bd90
--- /dev/null
+++ b/gdb/testsuite/gdb.base/maint-info-sections.exp
@@ -0,0 +1,127 @@
+# Copyright 1998-2021 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Test just for the 'maintenance info sections' command.
+
+standard_testfile break.c break1.c
+
+if {[prepare_for_testing "failed to prepare" $testfile \
+ [list $srcfile $srcfile2] {debug nowarnings}]} {
+ return -1
+}
+
+if ![runto_main] then {
+ untested "maint info sections"
+ return -1
+}
+
+# Check that 'maint info sections' output looks correct. When
+# checking the lines for each section we reject section names starting
+# with a '*' character, the internal *COM*, *UND*, *ABS*, and *IND*
+# sections should not be displayed in this output.
+set seen_header false
+set seen_a_section false
+gdb_test_multiple "maint info sections" "general output check" {
+ -re "Exec file:\r\n\[\t ]+`\[^'\]+', file type \[^.\]+\.\r\n" {
+ set seen_header true
+ exp_continue
+ }
+ -re "^ \\\[\[0-9\]+\\\]\[\t \]+$hex->$hex at $hex: \[^*\r\]+\r\n" {
+ set seen_a_section true
+ exp_continue
+ }
+ -re "^$gdb_prompt $" {
+ gdb_assert { $seen_header && $seen_a_section }
+ pass $gdb_test_name
+ }
+}
+
+# It'd be nice to check for every possible section. However, that's
+# problematic, since the relative ordering wanders from release to
+# release of the compilers. Instead, we'll just check for two
+# sections which appear to always come out in the same relative
+# order. (If that changes, then we should just check for one
+# section.)
+#
+# And by the way: This testpoint will break for PA64, where a.out's
+# are ELF files.
+
+# Standard GNU names.
+set text_section ".text"
+set data_section ".data"
+
+gdb_test_multiple "maint info sections" "" {
+ -re -wrap "Exec file:\r\n.*${binfile}., file type.*ER_RO.*" {
+ # Looks like RealView which uses different section names.
+ set text_section ER_RO
+ set data_section ER_RW
+ pass "maint info sections"
+ }
+ -re -wrap "Exec file:\r\n.*${binfile}., file type.*neardata.*" {
+ # c6x doesn't have .data section. It has .neardata and .fardata section.
+ set data_section ".neardata"
+ pass "maint info sections"
+ }
+ -re -wrap "Exec file:\r\n.*${binfile}., file type.*" {
+ pass "maint info sections"
+ }
+}
+
+# Test for new option: maint info sections <section name>
+# If you don't have a .text section, this will require tweaking.
+
+gdb_test_multiple "maint info sections $text_section" "" {
+ -re -wrap " \\.bss .*" {
+ fail $gdb_test_name
+ }
+ -re -wrap " $data_section .*" {
+ fail $gdb_test_name
+ }
+ -re -wrap " $text_section .*" {
+ pass $gdb_test_name
+ }
+}
+
+# Test for new option: CODE section flag
+# If your data section is tagged CODE, xfail this test.
+
+gdb_test_multiple "maint info sections CODE" "" {
+ -re -wrap " $data_section .*" {
+ fail $gdb_test_name
+ }
+ -re -wrap " $text_section .*" {
+ pass $gdb_test_name
+ }
+}
+
+# Test for new option: DATA section flag
+# If your text section is tagged DATA, xfail this test.
+#
+# The "maint info sections DATA" test is marked for XFAIL on Windows,
+# because Windows has text sections marked DATA.
+setup_xfail "*-*-*cygwin*"
+setup_xfail "*-*-*mingw*"
+
+gdb_test_multiple "maint info sections DATA" "" {
+ -re -wrap " $text_section .*" {
+ fail $gdb_test_name
+ }
+ -re -wrap " $data_section .*" {
+ pass $gdb_test_name
+ }
+ -re -wrap " .rodata .*" {
+ pass $gdb_test_name
+ }
+}
diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp
index 4b5b0391971..b418c023d73 100644
--- a/gdb/testsuite/gdb.base/maint.exp
+++ b/gdb/testsuite/gdb.base/maint.exp
@@ -40,7 +40,6 @@
#maintenance print unwind -- Print unwind table entry at given address
#
#
-#maintenance info sections -- List the BFD sections of the exec and core files
#maintenance info breakpoints -- Status of all breakpoints
#
@@ -118,23 +117,6 @@ if ![runto_main] then {
perror "tests suppressed"
}
-# Check that 'maint info sections' output looks correct. When
-# checking the lines for each section we reject section names starting
-# with a '*' character, the internal *COM*, *UND*, *ABS*, and *IND*
-# sections should not be displayed in this output.
-set test "check maint info sections output"
-gdb_test_multiple "maint info sections" $test {
- -re "Exec file:\r\n\[\t ]+`\[^'\]+', file type \[^.\]+\.\r\n" {
- exp_continue
- }
- -re "^ \\\[\[0-9\]+\\\]\[\t \]+$hex->$hex at $hex: \[^*\r\]+\r\n" {
- exp_continue
- }
- -re "^$gdb_prompt $" {
- pass $test
- }
-}
-
# If we're using .gdb_index or .debug_names there will be no psymtabs.
set have_gdb_index [ exec_has_index_section ${binfile} ]
@@ -417,75 +399,6 @@ if [istarget "hppa*-*-11*"] {
set oldtimeout $timeout
set timeout [expr $timeout + 300]
-# It'd be nice to check for every possible section. However, that's
-# problematic, since the relative ordering wanders from release to
-# release of the compilers. Instead, we'll just check for two
-# sections which appear to always come out in the same relative
-# order. (If that changes, then we should just check for one
-# section.)
-#
-# And by the way: This testpoint will break for PA64, where a.out's
-# are ELF files.
-
-# Standard GNU names.
-set text_section ".text"
-set data_section ".data"
-
-gdb_test_multiple "maint info sections" "maint info sections" {
- -re "Exec file:\r\n.*maint($EXEEXT)?., file type.*ER_RO.*$gdb_prompt $" {
- # Looks like RealView which uses different section names.
- set text_section ER_RO
- set data_section ER_RW
- pass "maint info sections"
- }
- -re "Exec file:\r\n.*maint($EXEEXT)?., file type.*neardata.*$gdb_prompt $" {
- # c6x doesn't have .data section. It has .neardata and .fardata section.
- set data_section ".neardata"
- pass "maint info sections"
- }
- -re "Exec file:\r\n.*maint($EXEEXT)?., file type.*$gdb_prompt $" {
- pass "maint info sections"
- }
-}
-
-# Test for new option: maint info sections <section name>
-# If you don't have a .text section, this will require tweaking.
-
-gdb_test_multiple "maint info sections $text_section" \
- "maint info sections .text" {
- -re ".* \\.bss .*$gdb_prompt $" {
- fail "maint info sections .text"
- }
- -re ".* $data_section .*$gdb_prompt $" {
- fail "maint info sections .text"
- }
- -re ".* $text_section .*$gdb_prompt $" {
- pass "maint info sections .text"
- }
- }
-
-# Test for new option: CODE section flag
-# If your data section is tagged CODE, xfail this test.
-
-gdb_test_multiple "maint info sections CODE" "maint info sections CODE" {
- -re ".* $data_section .*$gdb_prompt $" { fail "maint info sections CODE" }
- -re ".* $text_section .*$gdb_prompt $" { pass "maint info sections CODE" }
-}
-
-# Test for new option: DATA section flag
-# If your text section is tagged DATA, xfail this test.
-#
-# The "maint info sections DATA" test is marked for XFAIL on Windows,
-# because Windows has text sections marked DATA.
-setup_xfail "*-*-*cygwin*"
-setup_xfail "*-*-*mingw*"
-
-gdb_test_multiple "maint info sections DATA" "maint info sections DATA" {
- -re ".* $text_section .*$gdb_prompt $" { fail "maint info sections DATA" }
- -re ".* $data_section .*$gdb_prompt $" { pass "maint info sections DATA" }
- -re ".* .rodata .*$gdb_prompt $" { pass "maint info sections DATA" }
-}
-
set bp_location6 [gdb_get_line_number "set breakpoint 6 here"]
gdb_test_multiple "maint info breakpoints" "maint info breakpoints" {
--
2.25.4
next prev parent reply other threads:[~2021-02-05 21:29 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-05 21:29 [PATCH 0/3] Changes to 'maint info sections' Andrew Burgess
2021-02-05 21:29 ` Andrew Burgess [this message]
2021-02-08 19:28 ` [PATCH 1/3] gdb/testsuite: split 'maint info sections' tests to a new file Tom Tromey
2021-02-05 21:29 ` [PATCH 2/3] gdb: 'maint info sections' - handle the no executable case Andrew Burgess
2021-02-08 19:29 ` Tom Tromey
2021-02-05 21:29 ` [PATCH 3/3] gdb: change 'maint info section' to use command options Andrew Burgess
2021-02-06 7:16 ` Eli Zaretskii via Gdb-patches
2021-02-08 19:32 ` Tom Tromey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d4718b83886984c13c5c56ff4d6ddc4f90d2a5b5.1612560410.git.andrew.burgess@embecosm.com \
--to=andrew.burgess@embecosm.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox