diff options
author | Joel Brobecker <brobecker@adacore.com> | 2015-03-26 19:14:03 +0100 |
---|---|---|
committer | Joel Brobecker <brobecker@adacore.com> | 2015-03-26 13:56:51 -0700 |
commit | 429e1e811b400f07b5a514ea6b8a70b28e2d7ee9 (patch) | |
tree | 639c6a7f54874d5b4e9bf2142a6b55f9b8209104 /gdb/expression.h | |
parent | 4593441bc5bcb7ec2e04b28591707cdebedd2e85 (diff) | |
download | gdb-429e1e811b400f07b5a514ea6b8a70b28e2d7ee9.zip gdb-429e1e811b400f07b5a514ea6b8a70b28e2d7ee9.tar.gz gdb-429e1e811b400f07b5a514ea6b8a70b28e2d7ee9.tar.bz2 |
dtrace-probe: Handle error while parsing probe argument.
The debugger on Solaris has been broken since the introduction of
DTrace probe support:
(gdb) start
Temporary breakpoint 1 at 0x80593bc: file simple_main.adb, line 4.
Starting program: /[...]/simple_main
[Thread debugging using libthread_db enabled]
No definition of "mutex_t" in current context.
The problem occurs while trying to parse a probe's argument,
and the exception propagates all the way to the top. This patch
fixes the issue by containing the exception and falling back on
using the "long" builtin type if the argument's type could not
be determined.
Also, the parsing should be done using the C language parser.
gdb/ChangeLog:
* dtrace-probe.c (dtrace_process_dof_probe): Contain any
exception raised while parsing the probe arguments.
Force parsing to be done using the C language parser.
* expression.h (parse_expression_with_language): Declare.
* parse.c (parse_expression_with_language): New function.
Diffstat (limited to 'gdb/expression.h')
-rw-r--r-- | gdb/expression.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gdb/expression.h b/gdb/expression.h index 15ed354..6af8331 100644 --- a/gdb/expression.h +++ b/gdb/expression.h @@ -97,6 +97,9 @@ struct expression extern struct expression *parse_expression (const char *); +extern struct expression *parse_expression_with_language (const char *string, + enum language lang); + extern struct type *parse_expression_for_completion (const char *, char **, enum type_code *); |