[PATCH 01/40] Make gdb.base/dmsym.exp independent of "set language ada"

Pedro Alves
2017-06-02T12:22:40Z

This test is using "set language ada" expecting that to cause GDB to
do Ada symbol name matching. That won't work when GDB uses the
symbol's language to decide which symbol matching algorithm to use,
because the test's symbols are C symbols.

So generalize the test a bit to not rely on Ada name matching rules.

Confirmed that by undoing the original fix the test was written for,
the test still fails.

gdb/testsuite/ChangeLog:

* gdb.base/dmsym.c (pck__foo__bar__minsym): Rename to ...
(test_minsym): ... this, and make static.
(get_pck__foo__bar__minsym): Rename to ...
(get_test_minsym): ... this.
* gdb.base/dmsym.exp (): Remove "set language ada" call. Adjust
symbol names and comments.
* gdb.base/dmsym_main.c (get_pck__foo__bar__minsym): Rename to ...
(get_test_minsym): ... this.
(pck__foo__bar__minsym__2): Rename to ...
(test_minsym): ... this.
(main): Adjust.
---
gdb/testsuite/gdb.base/dmsym.c | 8 ++++----
gdb/testsuite/gdb.base/dmsym.exp | 39 +++++++++++++------------------------
gdb/testsuite/gdb.base/dmsym_main.c | 10 +++++-----
3 files changed, 23 insertions(+), 34 deletions(-)

diff --git a/gdb/testsuite/gdb.base/dmsym.c b/gdb/testsuite/gdb.base/dmsym.c
index f358b51..dccea23 100644
--- a/gdb/testsuite/gdb.base/dmsym.c
+++ b/gdb/testsuite/gdb.base/dmsym.c
@@ -15,11 +15,11 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */

-int pck__foo__bar__minsym = 123;
+static int test_minsym = 123;

int
-get_pck__foo__bar__minsym (void)
+get_test_minsym (void)
{
- pck__foo__bar__minsym++;
- return pck__foo__bar__minsym;
+ test_minsym++;
+ return test_minsym;
}
diff --git a/gdb/testsuite/gdb.base/dmsym.exp b/gdb/testsuite/gdb.base/dmsym.exp
index a318080..191a319 100644
--- a/gdb/testsuite/gdb.base/dmsym.exp
+++ b/gdb/testsuite/gdb.base/dmsym.exp
@@ -44,42 +44,31 @@ clean_restart ${testfile}
set num "\[0-9\]+"
set addr "0x\[0-9a-zA-Z\]+"

-# Although the test program is written in C, the original problem
-# occurs only when the language is Ada. The use of a C program is
-# only a convenience to be able to exercise the original problem
-# without requiring an Ada compiler. In the meantime, temporarily
-# force the language to Ada.
-
-gdb_test_no_output "set lang ada"
-
-# Verify that setting a breakpoint on `pck__foo__bar__minsym' only
-# results in one location found (function pck__foo__bar__minsym__2).
-# A mistake would be to also insert a breakpoint where
-# pck__foo__bar__minsym is defined. Despite the fact that there is
-# no debugging info available, this is a data symbol and thus should
-# not be used for breakpoint purposes.
-
-gdb_test "break pck__foo__bar__minsym" \
+# Verify that setting a breakpoint on `test_minsym' only results in
+# one location found. A mistake would be to also insert a breakpoint
+# in the test_minsym data symbol in dmsym.c. Despite the fact that
+# there is no debugging info available, this is a data symbol and thus
+# should not be used for breakpoint purposes.
+
+gdb_test "break test_minsym" \
"Breakpoint $num at $addr.: file .*dmsym_main\\.c, line $num\\."

# However, verify that the `info line' command, on the other hand,
# finds both locations.

-gdb_test "info line pck__foo__bar__minsym" \
- "Line $num of \".*dmsym_main\\.c\" .*\r\nNo line number information available for address $addr <pck__foo__bar__minsym>"
-
-gdb_test_no_output "set lang auto"
+gdb_test "info line test_minsym" \
+ "Line $num of \".*dmsym_main\\.c\" .*\r\nNo line number information available for address $addr <test_minsym>"

-# Now, run the program until we get past the call to
-# pck__foo__bar__minsym__2. Except when using hardware breakpoints,
-# inferior behavior is going to be affected if a breakpoint was
-# incorrectly inserted at pck__foo__bar__minsym.
+# Now, run the program until we get past the call to test_minsym.
+# Except when using hardware breakpoints, inferior behavior is going
+# to be affected if a breakpoint was incorrectly inserted at
+# test_minsym.

gdb_breakpoint dmsym_main.c:[gdb_get_line_number "BREAK" dmsym_main.c]

gdb_run_cmd
gdb_test "" \
- "Breakpoint $num, pck__foo__bar__minsym__2 \\(\\) at.*" \
+ "Breakpoint $num, test_minsym \\(\\) at.*" \
"run until breakpoint at BREAK"

gdb_test "continue" \
diff --git a/gdb/testsuite/gdb.base/dmsym_main.c b/gdb/testsuite/gdb.base/dmsym_main.c
index 99589b8..0338dc7 100644
--- a/gdb/testsuite/gdb.base/dmsym_main.c
+++ b/gdb/testsuite/gdb.base/dmsym_main.c
@@ -15,18 +15,18 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */

-extern int get_pck__foo__bar__minsym (void);
+extern int get_test_minsym (void);

-int
-pck__foo__bar__minsym__2 (void)
+static int
+test_minsym (void)
{
- return get_pck__foo__bar__minsym ();
+ return get_test_minsym ();
}

int
main (void)
{
- int val = pck__foo__bar__minsym__2 ();
+ int val = test_minsym ();

if (val != 124) /* BREAK */
return 1;
--
2.5.5