Re: [RFA/Ada(v2) 1/3] Add command to list Ada exceptions

Joel Brobecker
2013-11-15T06:39:27Z

[-- Attachment #1: Type: text/plain, Size: 1354 bytes --]

> > The new test fails for me like this:
> >
> > (gdb) info exceptions
> > All defined Ada exceptions:
> > const.aint_global_e: 0x608120
> > (gdb) FAIL: gdb.ada/info_exc.exp: info exceptions
> >
> > The test case expects there to be more exceptions:
> >
> > gdb_test "info exceptions" \
> > [multi_line "All defined Ada exceptions:" \
> > "constraint_error: $hex" \
> > "program_error: $hex" \
> > "storage_error: $hex" \
> > "tasking_error: $hex" \
> > "const.aint_global_e: $hex"]
> >
> > Any ideas why this may happen?

I think I have an idea, now. It is similar to what we need to do
in the "catch exception" testcases, where we start the program
in order to be certain that we can find the symbols from the GNAT
runtime. On Fedora, and I suspect may other distros, the default
for gnatmake is to like against the shared libgnat, whereas the
gnatmake I use links against the static libgnat - this is why
I didn't see that omission. Can you try the attached?

gdb/ChangeLog:

* gdb.ada/info_exc.exp: Start inferior before starting
the "info exceptions" tests.
* gdb.ada/mi_exc_info.exp: Start inferior before starting
the "-info-ada-exceptions" tests.

Tested on x86_64-linux.

--
Joel

[-- Attachment #2: 0001-Start-inferior-before-running-test-listing-Ada-excep.patch --]
[-- Type: text/x-diff, Size: 1977 bytes --]

From d0aa384d0eb08c4bf855a967af49ec15bb513d97 Mon Sep 17 00:00:00 2001
From: Joel Brobecker <brobecker@adacore.com>
Date: Fri, 15 Nov 2013 10:30:00 +0400
Subject: [PATCH] Start inferior before running test listing Ada exceptions.

This patch fixes some spurious failures when the inferior is linked
against the shared version of libgnat by default, as appears to be
the case on many GNU/Linux distributions. When that happens, we have
to start the program in order to ensure that the GNAT runtime is
mapped to memory, in order for us to find the standard exceptions
(defined within the runtime). Otherwise, they will not be shown,
as expected, by the debugger.

gdb/ChangeLog:

* gdb.ada/info_exc.exp: Start inferior before starting
the "info exceptions" tests.
* gdb.ada/mi_exc_info.exp: Start inferior before starting
the "-info-ada-exceptions" tests.
---
gdb/testsuite/gdb.ada/info_exc.exp | 5 +++++
gdb/testsuite/gdb.ada/mi_exc_info.exp | 5 +++++
2 files changed, 10 insertions(+)

diff --git a/gdb/testsuite/gdb.ada/info_exc.exp b/gdb/testsuite/gdb.ada/info_exc.exp
index 3ff5180..9637bce 100644
--- a/gdb/testsuite/gdb.ada/info_exc.exp
+++ b/gdb/testsuite/gdb.ada/info_exc.exp
@@ -34,6 +34,11 @@ proc multi_line { args } {

clean_restart ${testfile}

+if ![runto_main] then {
+ fail "Cannot run to main, testcase aborted"
+ return 0
+}
+
gdb_test "info exceptions" \
[multi_line "All defined Ada exceptions:" \
"constraint_error: $hex" \
diff --git a/gdb/testsuite/gdb.ada/mi_exc_info.exp b/gdb/testsuite/gdb.ada/mi_exc_info.exp
index b77ccbc..8325e90 100644
--- a/gdb/testsuite/gdb.ada/mi_exc_info.exp
+++ b/gdb/testsuite/gdb.ada/mi_exc_info.exp
@@ -29,6 +29,11 @@ if [mi_gdb_start] {
continue
}

+if ![mi_run_to_main] then {
+ fail "Cannot run to main, testcase aborted"
+ return 0
+}
+
mi_delete_breakpoints
mi_gdb_reinitialize_dir $srcdir/$subdir
mi_gdb_load ${binfile}
--
1.8.1.2