Make gdb.base/dmsym.exp independent of "set language ada"
authorPedro Alves <palves@redhat.com>
Thu, 20 Jul 2017 16:52:03 +0000 (17:52 +0100)
committerPedro Alves <palves@redhat.com>
Thu, 20 Jul 2017 16:52:03 +0000 (17:52 +0100)
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:
2017-07-20  Pedro Alves  <palves@redhat.com>

* 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/ChangeLog
gdb/testsuite/gdb.base/dmsym.c
gdb/testsuite/gdb.base/dmsym.exp
gdb/testsuite/gdb.base/dmsym_main.c

index 3f0a13e109fba13ec8abdb02b6c83c0d28de1970..ac68fba1bfc999506199532c63636c2183630339 100644 (file)
@@ -1,3 +1,17 @@
+2017-07-20  Pedro Alves  <palves@redhat.com>
+
+       * 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.
+
 2017-07-17  Pedro Alves  <palves@redhat.com>
 
        * gdb.base/completion.exp: Adjust expected output.
index f358b517ab9b1bd39ea9978cce2c823b7506e39f..dccea2373401e6fd5dfad4f138c191b2ceb13f1e 100644 (file)
    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;
 }
index a3180806af63443e9382decc0a18d60e013bfcbc..191a319734e771d3ef784d4f45d08fe9ee009898 100644 (file)
@@ -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" \
index 99589b8bfc83b00b8699f97f910f9d9e7bfb5eeb..0338dc7de981ace51e54fab5810fdcaeacb87f9b 100644 (file)
    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;