2005-01-16 Andrew Cagney <cagney@gnu.org>

* cli/cli-script.c: Include "exceptions.h".
	(struct wrapped_read_command_file_args): Define.
	(wrapped_read_command_file): New function.
	(script_from_file): Replace direct call to read_command_file by
	one wrapped by an exception handler.
	* exceptions.c (throw_it): Free the old message after creating the
	new.
	* Makefile.in: Update dependencies.

Index: testsuite/ChangeLog
2005-01-16  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/source.exp: Delete KFAIL gdb/1846, simplify.
This commit is contained in:
Andrew Cagney 2005-01-16 21:20:06 +00:00
parent ae03635710
commit 17d92a0219
6 changed files with 64 additions and 21 deletions

View File

@ -1,3 +1,14 @@
2005-01-16 Andrew Cagney <cagney@gnu.org>
* cli/cli-script.c: Include "exceptions.h".
(struct wrapped_read_command_file_args): Define.
(wrapped_read_command_file): New function.
(script_from_file): Replace direct call to read_command_file by
one wrapped by an exception handler.
* exceptions.c (throw_it): Free the old message after creating the
new.
* Makefile.in: Update dependencies.
2005-01-16 Mark Kettenis <kettenis@gnu.org> 2005-01-16 Mark Kettenis <kettenis@gnu.org>
* sparc64fbsd-tdep.c: Update copyright year. * sparc64fbsd-tdep.c: Update copyright year.

View File

@ -2066,7 +2066,8 @@ i387-tdep.o: i387-tdep.c $(defs_h) $(doublest_h) $(floatformat_h) $(frame_h) \
$(gdbcore_h) $(inferior_h) $(language_h) $(regcache_h) $(value_h) \ $(gdbcore_h) $(inferior_h) $(language_h) $(regcache_h) $(value_h) \
$(gdb_assert_h) $(gdb_string_h) $(i386_tdep_h) $(i387_tdep_h) $(gdb_assert_h) $(gdb_string_h) $(i386_tdep_h) $(i387_tdep_h)
ia64-linux-nat.o: ia64-linux-nat.c $(defs_h) $(gdb_string_h) $(inferior_h) \ ia64-linux-nat.o: ia64-linux-nat.c $(defs_h) $(gdb_string_h) $(inferior_h) \
$(target_h) $(gdbcore_h) $(regcache_h) $(gdb_wait_h) $(gregset_h) $(target_h) $(gdbcore_h) $(regcache_h) $(ia64_tdep_h) $(gdb_wait_h) \
$(gregset_h)
ia64-linux-tdep.o: ia64-linux-tdep.c $(defs_h) $(ia64_tdep_h) \ ia64-linux-tdep.o: ia64-linux-tdep.c $(defs_h) $(ia64_tdep_h) \
$(arch_utils_h) $(gdbcore_h) $(regcache_h) $(osabi_h) $(arch_utils_h) $(gdbcore_h) $(regcache_h) $(osabi_h)
ia64-tdep.o: ia64-tdep.c $(defs_h) $(inferior_h) $(gdbcore_h) \ ia64-tdep.o: ia64-tdep.c $(defs_h) $(inferior_h) $(gdbcore_h) \
@ -2140,7 +2141,7 @@ libunwind-frame.o: libunwind-frame.c $(defs_h) $(inferior_h) $(frame_h) \
linespec.o: linespec.c $(defs_h) $(symtab_h) $(frame_h) $(command_h) \ linespec.o: linespec.c $(defs_h) $(symtab_h) $(frame_h) $(command_h) \
$(symfile_h) $(objfiles_h) $(source_h) $(demangle_h) $(value_h) \ $(symfile_h) $(objfiles_h) $(source_h) $(demangle_h) $(value_h) \
$(completer_h) $(cp_abi_h) $(parser_defs_h) $(block_h) \ $(completer_h) $(cp_abi_h) $(parser_defs_h) $(block_h) \
$(objc_lang_h) $(linespec_h) $(objc_lang_h) $(linespec_h) $(exceptions_h)
linux-nat.o: linux-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdb_string_h) \ linux-nat.o: linux-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdb_string_h) \
$(gdb_wait_h) $(gdb_assert_h) $(linux_nat_h) $(gdbthread_h) \ $(gdb_wait_h) $(gdb_assert_h) $(linux_nat_h) $(gdbthread_h) \
$(gdbcmd_h) $(regcache_h) $(elf_bfd_h) $(gregset_h) $(gdbcore_h) \ $(gdbcmd_h) $(regcache_h) $(elf_bfd_h) $(gregset_h) $(gdbcore_h) \
@ -2532,8 +2533,8 @@ source.o: source.c $(defs_h) $(symtab_h) $(expression_h) $(language_h) \
$(gdb_string_h) $(gdb_stat_h) $(gdbcore_h) $(gdb_regex_h) \ $(gdb_string_h) $(gdb_stat_h) $(gdbcore_h) $(gdb_regex_h) \
$(symfile_h) $(objfiles_h) $(annotate_h) $(gdbtypes_h) $(linespec_h) \ $(symfile_h) $(objfiles_h) $(annotate_h) $(gdbtypes_h) $(linespec_h) \
$(filenames_h) $(completer_h) $(ui_out_h) $(readline_h) $(filenames_h) $(completer_h) $(ui_out_h) $(readline_h)
sparc64fbsd-nat.o: sparc64fbsd-nat.c $(defs_h) $(target_h) \ sparc64fbsd-nat.o: sparc64fbsd-nat.c $(defs_h) $(target_h) $(fbsd_nat_h) \
$(fbsd_nat_h) $(sparc64_tdep_h) $(sparc_nat_h) $(sparc64_tdep_h) $(sparc_nat_h)
sparc64fbsd-tdep.o: sparc64fbsd-tdep.c $(defs_h) $(frame_h) \ sparc64fbsd-tdep.o: sparc64fbsd-tdep.c $(defs_h) $(frame_h) \
$(frame_unwind_h) $(gdbcore_h) $(osabi_h) $(regcache_h) $(regset_h) \ $(frame_unwind_h) $(gdbcore_h) $(osabi_h) $(regcache_h) $(regset_h) \
$(target_h) $(trad_frame_h) $(gdb_assert_h) $(gdb_string_h) \ $(target_h) $(trad_frame_h) $(gdb_assert_h) $(gdb_string_h) \
@ -2748,8 +2749,8 @@ cli-logging.o: $(srcdir)/cli/cli-logging.c $(defs_h) $(gdbcmd_h) $(ui_out_h) \
$(gdb_string_h) $(gdb_string_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/cli/cli-logging.c $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/cli/cli-logging.c
cli-script.o: $(srcdir)/cli/cli-script.c $(defs_h) $(value_h) $(language_h) \ cli-script.o: $(srcdir)/cli/cli-script.c $(defs_h) $(value_h) $(language_h) \
$(ui_out_h) $(gdb_string_h) $(top_h) $(cli_cmds_h) $(cli_decode_h) \ $(ui_out_h) $(gdb_string_h) $(exceptions_h) $(top_h) $(cli_cmds_h) \
$(cli_script_h) $(cli_decode_h) $(cli_script_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/cli/cli-script.c $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/cli/cli-script.c
cli-setshow.o: $(srcdir)/cli/cli-setshow.c $(defs_h) $(readline_tilde_h) \ cli-setshow.o: $(srcdir)/cli/cli-setshow.c $(defs_h) $(readline_tilde_h) \
$(value_h) $(gdb_string_h) $(ui_out_h) $(cli_decode_h) $(cli_cmds_h) \ $(value_h) $(gdb_string_h) $(ui_out_h) $(cli_decode_h) $(cli_cmds_h) \

View File

@ -1,8 +1,8 @@
/* GDB CLI command scripting. /* GDB CLI command scripting.
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 Free Software 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005 Free
Foundation, Inc. Software Foundation, Inc.
This file is part of GDB. This file is part of GDB.
@ -28,7 +28,7 @@
#include "ui-out.h" #include "ui-out.h"
#include "gdb_string.h" #include "gdb_string.h"
#include "exceptions.h"
#include "top.h" #include "top.h"
#include "cli/cli-cmds.h" #include "cli/cli-cmds.h"
#include "cli/cli-decode.h" #include "cli/cli-decode.h"
@ -1251,6 +1251,18 @@ do_fclose_cleanup (void *stream)
fclose (stream); fclose (stream);
} }
struct wrapped_read_command_file_args
{
FILE *stream;
};
static void
wrapped_read_command_file (struct ui_out *uiout, void *data)
{
struct wrapped_read_command_file_args *args = data;
read_command_file (args->stream);
}
/* Used to implement source_command */ /* Used to implement source_command */
void void
@ -1293,7 +1305,27 @@ script_from_file (FILE *stream, char *file)
source_error = xrealloc (source_error, source_error_allocated); source_error = xrealloc (source_error, source_error_allocated);
} }
read_command_file (stream); {
struct exception e;
struct wrapped_read_command_file_args args;
args.stream = stream;
e = catch_exception (uiout, wrapped_read_command_file, &args,
RETURN_MASK_ERROR);
switch (e.reason)
{
case 0:
break;
case RETURN_ERROR:
/* Re-throw the error, but with the file name information
prepended. */
throw_error (e.error, "%s%s:%d: Error in sourced command file:\n%s",
source_pre_error, source_file_name,
source_line_number,
e.message);
default:
internal_error (__FILE__, __LINE__, "bad reason");
}
}
do_cleanups (old_cleanups); do_cleanups (old_cleanups);
} }

View File

@ -360,10 +360,13 @@ throw_it (enum return_reason reason, enum errors error, const char *fmt,
va_list ap) va_list ap)
{ {
struct exception e; struct exception e;
char *new_message;
/* Save the message. */ /* Save the message. Create the new message before deleting the
old, the new message may include the old message text. */
new_message = xstrvprintf (fmt, ap);
xfree (last_message); xfree (last_message);
last_message = xstrvprintf (fmt, ap); last_message = new_message;
/* Create the exception. */ /* Create the exception. */
e.reason = reason; e.reason = reason;

View File

@ -1,5 +1,7 @@
2005-01-16 Andrew Cagney <cagney@gnu.org> 2005-01-16 Andrew Cagney <cagney@gnu.org>
* gdb.base/source.exp: Delete KFAIL gdb/1846, simplify.
* gdb.base/source-error.gdb, gdb.base/source.exp: New files. * gdb.base/source-error.gdb, gdb.base/source.exp: New files.
2005-01-14 Andrew Cagney <cagney@gnu.org> 2005-01-14 Andrew Cagney <cagney@gnu.org>

View File

@ -35,14 +35,8 @@ set binfile ${objdir}/${subdir}/${testfile}
gdb_start gdb_start
set test "script contains error" gdb_test "source ${srcdir}/${subdir}/source-error.gdb" \
gdb_test_multiple "source ${srcdir}/${subdir}/source-error.gdb" $test { "source-error.gdb:22: Error in sourced command file:\[\r\n\]*Cannot access memory at address 0x0.*" \
-re "source-error.gdb:22: Error in sourced command file:\[\r\n\]*Cannot access memory at address 0x0.*$gdb_prompt " { "script contains error"
pass $test
}
-re "0x0:\[ \t\]+Cannot access memory at address 0x0.*$gdb_prompt " {
kfail gdb/1846 $test
}
}
gdb_exit gdb_exit