diff options
author | Joel Brobecker <brobecker@gnat.com> | 2012-10-24 18:08:04 +0000 |
---|---|---|
committer | Joel Brobecker <brobecker@gnat.com> | 2012-10-24 18:08:04 +0000 |
commit | 31337e61a3a460b806281db79bdf05ad4660e43e (patch) | |
tree | 4cd8b03f17a5851da1e959fe26288be4f6876624 /gdb | |
parent | 997d8e5e5fcaf31fda4d34c5e0facdadf3875208 (diff) | |
download | gdb-31337e61a3a460b806281db79bdf05ad4660e43e.tar.gz |
[Ada] Skip unwind-seh.c when searching first "user" frame
On x86_64-windows with GCC 4.7 (using native SEH info), the debugger
behaves as follow:
(gdb) catch exception unhandled
Catchpoint 1: unhandled Ada exceptions
(gdb) run
Starting program: C:\[...]\b.exe
Catchpoint 1, unhandled CONSTRAINT_ERROR at 0x000000000040cc57 in _GCC_specific_handler ([...]) at ../../../src/libgcc/unwind-seh.c:289
[...]
This is after compiler the following code:
procedure B is
begin
raise Constraint_Error;
end B;
... using the following command:
% gnatmake -g b
When hitting the exception catchpoint, it should have gone up the stack
all the way until finding the frame corresponding to procedure B.
But if stopped short because unwind-seh.c is compiled with debugging
information, and the debugger is also able to locate that source file.
To prevent this from happening, this patch adds unwind-seh.c to the list
of files that should be ignored, regardless of other factors.
gdb/ChangeLog:
* ada-lang.h (ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS): Add entry for
"unwind-seh.c".
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/ada-lang.h | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6f2fb0c1d6d..4d3c3ecb19c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2012-10-24 Joel Brobecker <brobecker@adacore.com> + * ada-lang.h (ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS): Add entry for + "unwind-seh.c". + +2012-10-24 Joel Brobecker <brobecker@adacore.com> + * ada-lang.c (ada_template_to_fixed_record_type_1): Do not strip typedef layer when computing the fixed type's field type, only when computing its size. diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h index 9a93c50dfff..b56d4538188 100644 --- a/gdb/ada-lang.h +++ b/gdb/ada-lang.h @@ -45,6 +45,7 @@ struct inferior; #if !defined (ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS) #define ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS \ + "^unwind-seh.c$", \ "^[agis]-.*\\.ad[bs]$", #endif |