aboutsummaryrefslogtreecommitdiff
path: root/gdb/cli/cli-cmds.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2013-12-11 09:49:08 +0000
committerPedro Alves <palves@redhat.com>2013-12-12 10:15:48 +0000
commitf23981e9917c0322223aaa8941bd1ca13d1dcc58 (patch)
tree42ce159acdacc4aadf84fbbd04394e89459b70e2 /gdb/cli/cli-cmds.c
parent43942612f4278418e9b6c48c86e4f02798611f74 (diff)
downloadgdb-f23981e9917c0322223aaa8941bd1ca13d1dcc58.zip
gdb-f23981e9917c0322223aaa8941bd1ca13d1dcc58.tar.gz
gdb-f23981e9917c0322223aaa8941bd1ca13d1dcc58.tar.bz2
Eliminate UNSUPPORTED_ERROR.
I have a case that could use an exception for "unsupported feature". I found UNSUPPORTED_ERROR, but looking deeper, I think as is, reusing it for other things would be fragile. E.g., if the Python script sourced by source_script_from_stream triggers any other missing functionality that would result in UNSUPPORTED_ERROR being propagated out to source_script_from_stream, that would confuse the error for Python not being built into GDB. This patch thus redoes things a little. Instead of using an exception for the "No Python" scenario, check whether Python is configured in before actually trying to source the file. It adds a new function instead of using #ifdef HAVE_PYTHON directly, as that is better at avoiding bitrot, as both Python and !Python paths are visible to the compiler this way. Tested on Fedora 17, with and without Python. gdb/ 2013-12-12 Pedro Alves <palves@redhat.com> * cli/cli-cmds.c (source_script_from_stream) Use have_python instead of catching UNSUPPORTED_ERROR. * exceptions.h (UNSUPPORTED_ERROR): Delete. * python/python.c (source_python_script) [!HAVE_PYTHON]: Internal error if called. * python/python.h (have_python): New static inline function.
Diffstat (limited to 'gdb/cli/cli-cmds.c')
-rw-r--r--gdb/cli/cli-cmds.c26
1 files changed, 7 insertions, 19 deletions
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index 52a6bc9..73e03cf 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -525,27 +525,15 @@ source_script_from_stream (FILE *stream, const char *file)
if (script_ext_mode != script_ext_off
&& strlen (file) > 3 && !strcmp (&file[strlen (file) - 3], ".py"))
{
- volatile struct gdb_exception e;
-
- TRY_CATCH (e, RETURN_MASK_ERROR)
+ if (have_python ())
+ source_python_script (stream, file);
+ else if (script_ext_mode == script_ext_soft)
{
- source_python_script (stream, file);
- }
- if (e.reason < 0)
- {
- /* Should we fallback to ye olde GDB script mode? */
- if (script_ext_mode == script_ext_soft
- && e.reason == RETURN_ERROR && e.error == UNSUPPORTED_ERROR)
- {
- fseek (stream, 0, SEEK_SET);
- script_from_file (stream, (char*) file);
- }
- else
- {
- /* Nope, just punt. */
- throw_exception (e);
- }
+ /* Fallback to GDB script mode. */
+ script_from_file (stream, file);
}
+ else
+ error (_("Python scripting is not supported in this copy of GDB."));
}
else
script_from_file (stream, file);