2005-01-12 Andrew Cagney <cagney@gnu.org>
authorAndrew Cagney <cagney@redhat.com>
Wed, 12 Jan 2005 18:31:35 +0000 (18:31 +0000)
committerAndrew Cagney <cagney@redhat.com>
Wed, 12 Jan 2005 18:31:35 +0000 (18:31 +0000)
* exceptions.h (enum return_reason, RETURN_MASK)
(RETURN_MASK_QUIT, RETURN_MASK_ERROR, RETURN_MASK_ALL)
(return_mask, throw_exception, catch_exceptions_ftype)
(catch_exceptions_with_msg, catch_errors_ftype, catch_errors)
(catch_command_errors_ftype, catch_command_errors): Move to
exceptions.h.
* exceptions.c, exceptions.h: New files.
* top.c: Do not include <setjmp.h>.
(SIGJMP_BUF, SIGSETJMP, SIGLONGJMP, catch_return)
(throw_exception, catcher, catch_exceptions)
(catch_exceptions_with_msg, struct catch_errors_args)
(do_catch_errors, catch_errors, struct captured_command_args)
(do_captured_command, catch_command_errors): Move to exceptions.c.
* wrapper.c, wince.c, win32-nat.c, utils.c: Include "exceptions.h".
* tui/tui-interp.c, top.c, thread.c, symmisc.c: Ditto.
* symfile-mem.c, stack.c, solib.c, rs6000-nat.c: Ditto.
* remote-sds.c, remote-mips.c, remote-fileio.c: Ditto.
* remote-e7000.c, objc-lang.c, ocd.c: Ditto.
* remote.c, nto-procfs.c, monitor.c, mi/mi-main.c: Ditto.
* main.c, m32r-rom.c, infrun.c, inf-loop.c: Ditto.
* hppa-hpux-tdep.c, frame.c, event-top.c, event-loop.c: Ditto.
* corelow.c, corefile.c, cli/cli-interp.c, breakpoint.c: Ditto.
* ada-valprint.c, ada-lang.c: Ditto.
* Makefile.in (HFILES_NO_SRCDIR, COMMON_OBS): Add exceptions.h and
exceptions.o.  Update all dependencies.

42 files changed:
gdb/ChangeLog
gdb/Makefile.in
gdb/ada-lang.c
gdb/ada-valprint.c
gdb/breakpoint.c
gdb/cli/cli-interp.c
gdb/corefile.c
gdb/corelow.c
gdb/defs.h
gdb/event-loop.c
gdb/event-top.c
gdb/exceptions.c [new file with mode: 0644]
gdb/exceptions.h [new file with mode: 0644]
gdb/frame.c
gdb/hppa-hpux-tdep.c
gdb/inf-loop.c
gdb/infrun.c
gdb/m32r-rom.c
gdb/main.c
gdb/mi/mi-main.c
gdb/monitor.c
gdb/nto-procfs.c
gdb/objc-lang.c
gdb/ocd.c
gdb/remote-e7000.c
gdb/remote-fileio.c
gdb/remote-mips.c
gdb/remote-sds.c
gdb/remote.c
gdb/rs6000-nat.c
gdb/solib.c
gdb/stack.c
gdb/symfile-mem.c
gdb/symmisc.c
gdb/thread.c
gdb/top.c
gdb/tui/tui-interp.c
gdb/utils.c
gdb/win32-nat.c
gdb/wince.c
gdb/windows-nat.c
gdb/wrapper.c

index c47f435d05297c1182f492763df1ac3e508180ed..8fbf8d7ed250ebd6d731bf86355a61848000cc03 100644 (file)
@@ -1,3 +1,31 @@
+2005-01-12  Andrew Cagney  <cagney@gnu.org>
+
+       * exceptions.h (enum return_reason, RETURN_MASK)
+       (RETURN_MASK_QUIT, RETURN_MASK_ERROR, RETURN_MASK_ALL)
+       (return_mask, throw_exception, catch_exceptions_ftype)
+       (catch_exceptions_with_msg, catch_errors_ftype, catch_errors)
+       (catch_command_errors_ftype, catch_command_errors): Move to
+       exceptions.h.
+       * exceptions.c, exceptions.h: New files.
+       * top.c: Do not include <setjmp.h>.
+       (SIGJMP_BUF, SIGSETJMP, SIGLONGJMP, catch_return)
+       (throw_exception, catcher, catch_exceptions)
+       (catch_exceptions_with_msg, struct catch_errors_args)
+       (do_catch_errors, catch_errors, struct captured_command_args)
+       (do_captured_command, catch_command_errors): Move to exceptions.c.
+       * wrapper.c, wince.c, win32-nat.c, utils.c: Include "exceptions.h".
+       * tui/tui-interp.c, top.c, thread.c, symmisc.c: Ditto.
+       * symfile-mem.c, stack.c, solib.c, rs6000-nat.c: Ditto.
+       * remote-sds.c, remote-mips.c, remote-fileio.c: Ditto.
+       * remote-e7000.c, objc-lang.c, ocd.c: Ditto.
+       * remote.c, nto-procfs.c, monitor.c, mi/mi-main.c: Ditto.
+       * main.c, m32r-rom.c, infrun.c, inf-loop.c: Ditto.
+       * hppa-hpux-tdep.c, frame.c, event-top.c, event-loop.c: Ditto.
+       * corelow.c, corefile.c, cli/cli-interp.c, breakpoint.c: Ditto.
+       * ada-valprint.c, ada-lang.c: Ditto.
+       * Makefile.in (HFILES_NO_SRCDIR, COMMON_OBS): Add exceptions.h and
+       exceptions.o.  Update all dependencies.
+       
 2005-01-11  Mark Kettenis  <kettenis@gnu.org>
 
        * config/i386/nm-fbsd.h: Update copyright year.
index 958a4dd0b9b82a6488c246873d7f951b78abc959..71ffbc5ae2ca7b30917765cc1489c669fa97406a 100644 (file)
@@ -667,6 +667,7 @@ dwarf2loc_h = dwarf2loc.h
 environ_h = environ.h
 event_loop_h = event-loop.h
 event_top_h = event-top.h
+exceptions_h = exceptions.h
 exec_h = exec.h $(target_h)
 expression_h = expression.h $(symtab_h) $(doublest_h)
 fbsd_nat_h = fbsd-nat.h
@@ -732,15 +733,15 @@ memattr_h = memattr.h
 mips_mdebug_tdep_h = mips-mdebug-tdep.h
 mipsnbsd_tdep_h = mipsnbsd-tdep.h
 mips_tdep_h = mips-tdep.h
+mn10300_tdep_h = mn10300-tdep.h
 monitor_h = monitor.h
 nbsd_tdep_h = nbsd-tdep.h
-ns32k_tdep_h = ns32k-tdep.h
-nto_tdep_h = nto-tdep.h $(defs_h) $(solist_h)
+nto_tdep_h = nto-tdep.h $(defs_h) $(solist_h) $(osabi_h) $(regset_h)
 objc_lang_h = objc-lang.h
 objfiles_h = objfiles.h $(gdb_obstack_h) $(symfile_h)
 ocd_h = ocd.h
 osabi_h = osabi.h
-solib_pa64_h = solib-pa64.h
+pa64solib_h = pa64solib.h
 parser_defs_h = parser-defs.h $(doublest_h)
 p_lang_h = p-lang.h
 ppcnbsd_tdep_h = ppcnbsd-tdep.h
@@ -763,9 +764,11 @@ shnbsd_tdep_h = shnbsd-tdep.h
 sh_tdep_h = sh-tdep.h
 sim_regno_h = sim-regno.h
 solib_h = solib.h
+solib_pa64_h = solib-pa64.h
+solib_som_h = solib-som.h
 solib_svr4_h = solib-svr4.h
 solist_h = solist.h
-solib_som_h = solib-som.h
+somsolib_h = somsolib.h
 source_h = source.h
 sparc64_tdep_h = sparc64-tdep.h $(sparc_tdep_h)
 sparc_nat_h = sparc-nat.h
@@ -844,6 +847,7 @@ tui_winsource_h = $(srcdir)/tui/tui-winsource.h $(tui_data_h)
 # right, it is probably easiest just to list .h files here directly.
 
 HFILES_NO_SRCDIR = bcache.h buildsym.h call-cmds.h coff-solib.h defs.h \
+       exceptions.h \
        environ.h $(gdbcmd_h) gdb.h gdbcore.h \
        gdb-stabs.h $(inferior_h) language.h minimon.h monitor.h \
        objfiles.h parser-defs.h serial.h solib.h \
@@ -895,6 +899,7 @@ COMMON_OBS = $(DEPFILES) $(YYOBJ) \
        infcall.o \
        infcmd.o infrun.o \
        expprint.o environ.o stack.o thread.o \
+       exceptions.o \
        inf-child.o \
        interps.o \
        main.o \
@@ -1627,14 +1632,15 @@ ada-lang.o: ada-lang.c $(defs_h) $(gdb_string_h) $(demangle_h) \
        $(inferior_h) $(symfile_h) $(objfiles_h) $(breakpoint_h) \
        $(gdbcore_h) $(hashtab_h) $(gdb_obstack_h) $(ada_lang_h) \
        $(completer_h) $(gdb_stat_h) $(ui_out_h) $(block_h) $(infcall_h) \
-       $(dictionary_h)
+       $(dictionary_h) $(exceptions_h)
 ada-typeprint.o: ada-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) \
        $(symtab_h) $(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) \
        $(target_h) $(command_h) $(gdbcmd_h) $(language_h) $(demangle_h) \
        $(c_lang_h) $(typeprint_h) $(ada_lang_h) $(gdb_string_h)
 ada-valprint.o: ada-valprint.c $(defs_h) $(gdb_string_h) $(symtab_h) \
        $(gdbtypes_h) $(expression_h) $(value_h) $(demangle_h) $(valprint_h) \
-       $(language_h) $(annotate_h) $(ada_lang_h) $(c_lang_h) $(infcall_h)
+       $(language_h) $(annotate_h) $(ada_lang_h) $(c_lang_h) $(infcall_h) \
+       $(exceptions_h)
 aix-thread.o: aix-thread.c $(defs_h) $(gdb_assert_h) $(gdbthread_h) \
        $(target_h) $(inferior_h) $(regcache_h) $(gdbcmd_h) $(ppc_tdep_h) \
        $(gdb_string_h)
@@ -1750,7 +1756,7 @@ breakpoint.o: breakpoint.c $(defs_h) $(symtab_h) $(frame_h) $(breakpoint_h) \
        $(gdb_string_h) $(demangle_h) $(annotate_h) $(symfile_h) \
        $(objfiles_h) $(source_h) $(linespec_h) $(completer_h) $(gdb_h) \
        $(ui_out_h) $(cli_script_h) $(gdb_assert_h) $(block_h) $(solist_h) \
-       $(observer_h) $(gdb_events_h)
+       $(observer_h) $(exceptions_h) $(gdb_events_h)
 bsd-kvm.o: bsd-kvm.c $(defs_h) $(cli_cmds_h) $(command_h) $(frame_h) \
        $(regcache_h) $(target_h) $(value_h) $(gdbcore_h) $(gdb_assert_h) \
        $(readline_h) $(bsd_kvm_h)
@@ -1789,11 +1795,12 @@ core-aout.o: core-aout.c $(defs_h) $(gdbcore_h) $(value_h) $(regcache_h) \
        $(gdb_dirent_h) $(gdb_stat_h)
 corefile.o: corefile.c $(defs_h) $(gdb_string_h) $(inferior_h) $(symtab_h) \
        $(command_h) $(gdbcmd_h) $(bfd_h) $(target_h) $(gdbcore_h) \
-       $(dis_asm_h) $(gdb_stat_h) $(completer_h)
+       $(dis_asm_h) $(gdb_stat_h) $(completer_h) $(exceptions_h)
 corelow.o: corelow.c $(defs_h) $(arch_utils_h) $(gdb_string_h) $(frame_h) \
        $(inferior_h) $(symtab_h) $(command_h) $(bfd_h) $(target_h) \
        $(gdbcore_h) $(gdbthread_h) $(regcache_h) $(regset_h) $(symfile_h) \
-       $(exec_h) $(readline_h) $(observer_h) $(gdb_assert_h)
+       $(exec_h) $(readline_h) $(observer_h) $(gdb_assert_h) \
+       $(exceptions_h)
 core-regset.o: core-regset.c $(defs_h) $(command_h) $(gdbcore_h) \
        $(inferior_h) $(target_h) $(gdb_string_h) $(gregset_h)
 cp-abi.o: cp-abi.c $(defs_h) $(value_h) $(cp_abi_h) $(command_h) $(gdbcmd_h) \
@@ -1880,10 +1887,11 @@ eval.o: eval.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
        $(f_lang_h) $(cp_abi_h) $(infcall_h) $(objc_lang_h) $(block_h) \
        $(parser_defs_h)
 event-loop.o: event-loop.c $(defs_h) $(event_loop_h) $(event_top_h) \
-       $(gdb_string_h)
+       $(gdb_string_h) $(exceptions_h)
 event-top.o: event-top.c $(defs_h) $(top_h) $(inferior_h) $(target_h) \
        $(terminal_h) $(event_loop_h) $(event_top_h) $(interps_h) \
-       $(gdbcmd_h) $(readline_h) $(readline_history_h)
+       $(exceptions_h) $(gdbcmd_h) $(readline_h) $(readline_history_h)
+exceptions.o: exceptions.c
 exec.o: exec.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) $(gdbcmd_h) \
        $(language_h) $(symfile_h) $(objfiles_h) $(completer_h) $(value_h) \
        $(exec_h) $(readline_h) $(gdb_string_h) $(gdbcore_h) $(gdb_stat_h) \
@@ -1913,7 +1921,7 @@ frame.o: frame.c $(defs_h) $(frame_h) $(target_h) $(value_h) $(inferior_h) \
        $(regcache_h) $(gdb_assert_h) $(gdb_string_h) $(user_regs_h) \
        $(gdb_obstack_h) $(dummy_frame_h) $(sentinel_frame_h) $(gdbcore_h) \
        $(annotate_h) $(language_h) $(frame_unwind_h) $(frame_base_h) \
-       $(command_h) $(gdbcmd_h) $(observer_h) $(objfiles_h)
+       $(command_h) $(gdbcmd_h) $(observer_h) $(objfiles_h) $(exceptions_h)
 frame-unwind.o: frame-unwind.c $(defs_h) $(frame_h) $(frame_unwind_h) \
        $(gdb_assert_h) $(dummy_frame_h) $(gdb_obstack_h)
 frv-linux-tdep.o: frv-linux-tdep.c $(defs_h) $(target_h) $(frame_h) \
@@ -1957,9 +1965,6 @@ go32-nat.o: go32-nat.c $(defs_h) $(inferior_h) $(gdb_wait_h) $(gdbcore_h) \
        $(command_h) $(gdbcmd_h) $(floatformat_h) $(buildsym_h) \
        $(i387_tdep_h) $(i386_tdep_h) $(value_h) $(regcache_h) \
        $(gdb_string_h)
-h8300-tdep.o: h8300-tdep.c $(defs_h) $(value_h) $(inferior_h) $(symfile_h) \
-       $(arch_utils_h) $(regcache_h) $(gdbcore_h) $(objfiles_h) $(gdbcmd_h) \
-       $(gdb_assert_h) $(dis_asm_h)
 hpacc-abi.o: hpacc-abi.c $(defs_h) $(value_h) $(gdb_regex_h) $(gdb_string_h) \
        $(gdbtypes_h) $(gdbcore_h) $(cp_abi_h)
 hppabsd-nat.o: hppabsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
@@ -1971,10 +1976,10 @@ hppa-hpux-nat.o: hppa-hpux-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
        $(target_h) $(gdb_assert_h) $(hppa_tdep_h) $(inf_ptrace_h) \
        $(inf_ttrace_h)
 hppa-hpux-tdep.o: hppa-hpux-tdep.c $(defs_h) $(arch_utils_h) $(gdbcore_h) \
-       $(osabi_h) $(gdb_string_h) $(frame_h) $(frame_unwind_h) \
-       $(trad_frame_h) $(tramp_frame_h) $(symtab_h) $(objfiles_h) \
-       $(inferior_h) $(infcall_h) $(observer_h) $(hppa_tdep_h) $(solib_som_h) \
-       $(solib_pa64_h) $(regset_h)
+       $(osabi_h) $(frame_h) $(frame_unwind_h) $(trad_frame_h) $(symtab_h) \
+       $(objfiles_h) $(inferior_h) $(infcall_h) $(observer_h) \
+       $(hppa_tdep_h) $(solib_som_h) $(solib_pa64_h) $(regset_h) \
+       $(exceptions_h) $(gdb_string_h)
 hppa-linux-nat.o: hppa-linux-nat.c $(defs_h) $(gdbcore_h) $(regcache_h) \
        $(gdb_string_h) $(inferior_h) $(hppa_tdep_h) $(gregset_h)
 hppa-linux-tdep.o: hppa-linux-tdep.c $(defs_h) $(gdbcore_h) $(osabi_h) \
@@ -1989,9 +1994,10 @@ hppa-tdep.o: hppa-tdep.c $(defs_h) $(bfd_h) $(inferior_h) $(regcache_h) \
 hpread.o: hpread.c $(defs_h) $(bfd_h) $(gdb_string_h) $(hp_symtab_h) \
        $(syms_h) $(symtab_h) $(symfile_h) $(objfiles_h) $(buildsym_h) \
        $(complaints_h) $(gdb_stabs_h) $(gdbtypes_h) $(demangle_h) \
-       $(solib_som_h) $(gdb_assert_h) $(hppa_tdep_h)
+       $(solib_som_h) $(gdb_assert_h) $(hppa_tdep_h) $(gdb_string_h)
 hpux-thread.o: hpux-thread.c $(defs_h) $(gdbthread_h) $(target_h) \
-       $(inferior_h) $(regcache_h) $(gdb_stat_h) $(gdbcore_h)
+       $(inferior_h) $(regcache_h) $(gdb_stat_h) $(gdbcore_h) \
+       $(hppa_tdep_h)
 i386bsd-nat.o: i386bsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
        $(gdb_assert_h) $(i386_tdep_h) $(i387_tdep_h) $(i386bsd_nat_h) \
        $(inf_ptrace_h)
@@ -2023,9 +2029,9 @@ i386nbsd-tdep.o: i386nbsd-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) \
        $(gdbcore_h) $(regcache_h) $(regset_h) $(osabi_h) $(symtab_h) \
        $(gdb_assert_h) $(gdb_string_h) $(i386_tdep_h) $(i387_tdep_h) \
        $(nbsd_tdep_h) $(solib_svr4_h)
-i386-nto-tdep.o: i386-nto-tdep.c $(gdb_string_h) $(gdb_assert_h) $(defs_h) \
-       $(frame_h) $(target_h) $(regcache_h) $(solib_svr4_h) $(i386_tdep_h) \
-       $(nto_tdep_h) $(osabi_h) $(i387_tdep_h)
+i386-nto-tdep.o: i386-nto-tdep.c $(defs_h) $(frame_h) $(osabi_h) \
+       $(regcache_h) $(target_h) $(gdb_assert_h) $(gdb_string_h) \
+       $(i386_tdep_h) $(i387_tdep_h) $(nto_tdep_h) $(solib_svr4_h)
 i386obsd-nat.o: i386obsd-nat.c $(defs_h) $(i386_tdep_h)
 i386obsd-tdep.o: i386obsd-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) \
        $(gdbcore_h) $(regcache_h) $(regset_h) $(symtab_h) $(objfiles_h) \
@@ -2059,8 +2065,8 @@ ia64-tdep.o: ia64-tdep.c $(defs_h) $(inferior_h) $(gdbcore_h) \
        $(arch_utils_h) $(floatformat_h) $(regcache_h) $(reggroups_h) \
        $(frame_h) $(frame_base_h) $(frame_unwind_h) $(doublest_h) \
        $(value_h) $(gdb_assert_h) $(objfiles_h) $(elf_common_h) \
-       $(elf_bfd_h) $(dis_asm_h) $(infcall_h) $(ia64_tdep_h) $(elf_ia64_h) \
-       $(libunwind_frame_h) $(libunwind_ia64_h) $(osabi_h)
+       $(elf_bfd_h) $(dis_asm_h) $(infcall_h) $(osabi_h) $(ia64_tdep_h) \
+       $(elf_ia64_h) $(libunwind_frame_h) $(libunwind_ia64_h)
 infcall.o: infcall.c $(defs_h) $(breakpoint_h) $(target_h) $(regcache_h) \
        $(inferior_h) $(gdb_assert_h) $(block_h) $(gdbcore_h) $(language_h) \
        $(objfiles_h) $(gdbcmd_h) $(command_h) $(gdb_string_h) $(infcall_h) \
@@ -2074,27 +2080,27 @@ infcmd.o: infcmd.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
        $(parser_defs_h) $(regcache_h) $(reggroups_h) $(block_h) \
        $(gdb_assert_h)
 inf-loop.o: inf-loop.c $(defs_h) $(inferior_h) $(target_h) $(event_loop_h) \
-       $(event_top_h) $(inf_loop_h) $(remote_h)
+       $(event_top_h) $(inf_loop_h) $(remote_h) $(exceptions_h)
 inflow.o: inflow.c $(defs_h) $(frame_h) $(inferior_h) $(command_h) \
        $(serial_h) $(terminal_h) $(target_h) $(gdbthread_h) $(gdb_string_h) \
        $(inflow_h)
 inf-ptrace.o: inf-ptrace.c $(defs_h) $(command_h) $(inferior_h) $(inflow_h) \
        $(gdbcore_h) $(observer_h) $(regcache_h) $(gdb_assert_h) \
        $(gdb_string_h) $(gdb_ptrace_h) $(gdb_wait_h) $(inf_child_h)
-inf-ttrace.o: inf-ttrace.c $(defs_h) $(command_h) $(gdbcore_h) \
-       $(gdbthread_h) $(inferior_h) $(observer_h) $(target_h) \
-       $(gdb_assert_h) $(gdb_string_h) $(inf_child_h) $(inf_ttrace_h)
 infptrace.o: infptrace.c $(defs_h) $(command_h) $(frame_h) $(gdbcore_h) \
        $(inferior_h) $(regcache_h) $(target_h) $(gdb_assert_h) \
        $(gdb_wait_h) $(gdb_string_h) $(gdb_dirent_h) $(gdb_ptrace_h)
 infrun.o: infrun.c $(defs_h) $(gdb_string_h) $(symtab_h) $(frame_h) \
-       $(inferior_h) $(breakpoint_h) $(gdb_wait_h) $(gdbcore_h) $(gdbcmd_h) \
-       $(cli_script_h) $(target_h) $(gdbthread_h) $(annotate_h) \
-       $(symfile_h) $(top_h) $(inf_loop_h) $(regcache_h) $(value_h) \
-       $(observer_h) $(language_h) $(gdb_assert_h)
+       $(inferior_h) $(exceptions_h) $(breakpoint_h) $(gdb_wait_h) \
+       $(gdbcore_h) $(gdbcmd_h) $(cli_script_h) $(target_h) $(gdbthread_h) \
+       $(annotate_h) $(symfile_h) $(top_h) $(inf_loop_h) $(regcache_h) \
+       $(value_h) $(observer_h) $(language_h) $(gdb_assert_h)
 inftarg.o: inftarg.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
        $(gdbcore_h) $(command_h) $(gdb_stat_h) $(observer_h) $(gdb_wait_h) \
        $(inflow_h)
+inf-ttrace.o: inf-ttrace.c $(defs_h) $(command_h) $(gdbcore_h) \
+       $(gdbthread_h) $(inferior_h) $(observer_h) $(target_h) \
+       $(gdb_assert_h) $(gdb_string_h) $(inf_child_h) $(inf_ttrace_h)
 interps.o: interps.c $(defs_h) $(gdbcmd_h) $(ui_out_h) $(event_loop_h) \
        $(event_top_h) $(interps_h) $(completer_h) $(gdb_string_h) \
        $(gdb_events_h) $(gdb_assert_h) $(top_h)
@@ -2131,6 +2137,10 @@ 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) \
        $(gdbcmd_h) $(regcache_h) $(elf_bfd_h) $(gregset_h) $(gdbcore_h) \
        $(gdbthread_h) $(gdb_stat_h)
+linux-thread-db.o: linux-thread-db.c $(defs_h) $(gdb_assert_h) \
+       $(gdb_proc_service_h) $(gdb_thread_db_h) $(bfd_h) $(gdbthread_h) \
+       $(inferior_h) $(symfile_h) $(objfiles_h) $(target_h) $(regcache_h) \
+       $(solib_svr4_h)
 lynx-nat.o: lynx-nat.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
        $(gdbcore_h) $(regcache_h)
 m2-exp.o: m2-exp.c $(defs_h) $(gdb_string_h) $(expression_h) $(language_h) \
@@ -2148,11 +2158,12 @@ m32r-linux-nat.o: m32r-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
        $(gregset_h) $(m32r_tdep_h)
 m32r-linux-tdep.o: m32r-linux-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \
        $(value_h) $(regcache_h) $(inferior_h) $(osabi_h) $(reggroups_h) \
-       $(gdb_string_h) $(glibc_tdep_h) $(solib_svr4_h) $(trad_frame_h) \
-       $(frame_unwind_h) $(regset_h) $(m32r_tdep_h)
-m32r-rom.o: m32r-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
-       $(serial_h) $(symtab_h) $(command_h) $(gdbcmd_h) $(symfile_h) \
-       $(gdb_string_h) $(objfiles_h) $(inferior_h) $(regcache_h)
+       $(regset_h) $(gdb_string_h) $(glibc_tdep_h) $(solib_svr4_h) \
+       $(trad_frame_h) $(frame_unwind_h) $(m32r_tdep_h)
+m32r-rom.o: m32r-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(exceptions_h) \
+       $(monitor_h) $(serial_h) $(symtab_h) $(command_h) $(gdbcmd_h) \
+       $(symfile_h) $(gdb_string_h) $(objfiles_h) $(inferior_h) \
+       $(regcache_h)
 m32r-stub.o: m32r-stub.c $(syscall_h)
 m32r-tdep.o: m32r-tdep.c $(defs_h) $(frame_h) $(frame_unwind_h) \
        $(frame_base_h) $(symtab_h) $(gdbtypes_h) $(gdbcmd_h) $(gdbcore_h) \
@@ -2178,8 +2189,8 @@ m68klinux-nat.o: m68klinux-nat.c $(defs_h) $(frame_h) $(inferior_h) \
 m68klinux-tdep.o: m68klinux-tdep.c $(defs_h) $(gdbcore_h) $(doublest_h) \
        $(floatformat_h) $(frame_h) $(target_h) $(gdb_string_h) \
        $(gdbtypes_h) $(osabi_h) $(regcache_h) $(objfiles_h) $(symtab_h) \
-       $(m68k_tdep_h) $(trad_frame_h) $(frame_unwind_h) $(solib_svr4_h) \
-       $(glibc_tdep_h)
+       $(m68k_tdep_h) $(trad_frame_h) $(frame_unwind_h) $(glibc_tdep_h) \
+       $(solib_svr4_h)
 m68k-stub.o: m68k-stub.c
 m68k-tdep.o: m68k-tdep.c $(defs_h) $(dwarf2_frame_h) $(frame_h) \
        $(frame_base_h) $(frame_unwind_h) $(floatformat_h) $(symtab_h) \
@@ -2202,16 +2213,11 @@ macrotab.o: macrotab.c $(defs_h) $(gdb_obstack_h) $(splay_tree_h) \
        $(symtab_h) $(symfile_h) $(objfiles_h) $(macrotab_h) $(gdb_assert_h) \
        $(bcache_h) $(complaints_h)
 main.o: main.c $(defs_h) $(top_h) $(target_h) $(inferior_h) $(symfile_h) \
-       $(gdbcore_h) $(getopt_h) $(gdb_stat_h) $(gdb_string_h) \
-       $(event_loop_h) $(ui_out_h) $(interps_h) $(main_h)
+       $(gdbcore_h) $(exceptions_h) $(getopt_h) $(gdb_stat_h) \
+       $(gdb_string_h) $(event_loop_h) $(ui_out_h) $(interps_h) $(main_h)
 maint.o: maint.c $(defs_h) $(command_h) $(gdbcmd_h) $(symtab_h) \
        $(gdbtypes_h) $(demangle_h) $(gdbcore_h) $(expression_h) \
        $(language_h) $(symfile_h) $(objfiles_h) $(value_h) $(cli_decode_h)
-mcore-rom.o: mcore-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
-       $(gdb_string_h) $(regcache_h) $(serial_h)
-mcore-tdep.o: mcore-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(value_h) \
-       $(gdbcmd_h) $(regcache_h) $(objfiles_h) $(gdbcore_h) $(inferior_h) \
-       $(arch_utils_h) $(gdb_string_h) $(disasm_h) $(dis_asm_h)
 mdebugread.o: mdebugread.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(gdbcore_h) \
        $(objfiles_h) $(gdb_obstack_h) $(buildsym_h) $(stabsread_h) \
        $(complaints_h) $(demangle_h) $(gdb_assert_h) $(block_h) \
@@ -2262,23 +2268,16 @@ mipsv4-nat.o: mipsv4-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(target_h) \
 mn10300-tdep.o: mn10300-tdep.c $(defs_h) $(arch_utils_h) $(dis_asm_h) \
        $(gdbtypes_h) $(regcache_h) $(gdb_string_h) $(gdb_assert_h) \
        $(frame_h) $(frame_unwind_h) $(frame_base_h) $(trad_frame_h) \
-       $(symtab_h) $(dwarf2_frame_h) $(regcache_h)
-monitor.o: monitor.c $(defs_h) $(gdbcore_h) $(target_h) $(gdb_string_h) \
-       $(command_h) $(serial_h) $(monitor_h) $(gdbcmd_h) $(inferior_h) \
-       $(gdb_regex_h) $(srec_h) $(regcache_h)
+       $(symtab_h) $(dwarf2_frame_h) $(regcache_h) $(mn10300_tdep_h)
+monitor.o: monitor.c $(defs_h) $(gdbcore_h) $(target_h) $(exceptions_h) \
+       $(gdb_string_h) $(command_h) $(serial_h) $(monitor_h) $(gdbcmd_h) \
+       $(inferior_h) $(gdb_regex_h) $(srec_h) $(regcache_h)
 nbsd-tdep.o: nbsd-tdep.c $(defs_h) $(gdb_string_h) $(solib_svr4_h)
 nlmread.o: nlmread.c $(defs_h) $(bfd_h) $(symtab_h) $(symfile_h) \
        $(objfiles_h) $(buildsym_h) $(stabsread_h) $(block_h)
-ns32knbsd-nat.o: ns32knbsd-nat.c $(defs_h) $(inferior_h) $(target_h) \
-       $(gdbcore_h) $(regcache_h)
-ns32knbsd-tdep.o: ns32knbsd-tdep.c $(defs_h) $(osabi_h) $(ns32k_tdep_h) \
-       $(gdb_string_h)
-ns32k-tdep.o: ns32k-tdep.c $(defs_h) $(frame_h) $(gdbtypes_h) $(gdbcore_h) \
-       $(inferior_h) $(regcache_h) $(target_h) $(arch_utils_h) $(osabi_h) \
-       $(dis_asm_h) $(ns32k_tdep_h) $(gdb_string_h)
-nto-procfs.o: nto-procfs.c $(defs_h) $(gdb_dirent_h) $(gdb_string_h) \
-       $(gdbcore_h) $(inferior_h) $(target_h) $(objfiles_h) $(gdbthread_h) \
-       $(nto_tdep_h) $(command_h) $(regcache_h)
+nto-procfs.o: nto-procfs.c $(defs_h) $(gdb_dirent_h) $(exceptions_h) \
+       $(gdb_string_h) $(gdbcore_h) $(inferior_h) $(target_h) $(objfiles_h) \
+       $(gdbthread_h) $(nto_tdep_h) $(command_h) $(regcache_h)
 nto-tdep.o: nto-tdep.c $(gdb_stat_h) $(gdb_string_h) $(nto_tdep_h) $(top_h) \
        $(cli_decode_h) $(cli_cmds_h) $(inferior_h) $(gdbarch_h) $(bfd_h) \
        $(elf_bfd_h) $(solib_svr4_h) $(gdbcore_h)
@@ -2288,10 +2287,10 @@ objc-exp.o: objc-exp.c $(defs_h) $(gdb_string_h) $(expression_h) \
        $(block_h)
 objc-lang.o: objc-lang.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
        $(parser_defs_h) $(language_h) $(c_lang_h) $(objc_lang_h) \
-       $(complaints_h) $(value_h) $(symfile_h) $(objfiles_h) \
-       $(gdb_string_h) $(target_h) $(gdbcore_h) $(gdbcmd_h) $(frame_h) \
-       $(gdb_regex_h) $(regcache_h) $(block_h) $(infcall_h) $(valprint_h) \
-       $(gdb_assert_h)
+       $(exceptions_h) $(complaints_h) $(value_h) $(symfile_h) \
+       $(objfiles_h) $(gdb_string_h) $(target_h) $(gdbcore_h) $(gdbcmd_h) \
+       $(frame_h) $(gdb_regex_h) $(regcache_h) $(block_h) $(infcall_h) \
+       $(valprint_h) $(gdb_assert_h)
 objfiles.o: objfiles.c $(defs_h) $(bfd_h) $(symtab_h) $(symfile_h) \
        $(objfiles_h) $(gdb_stabs_h) $(target_h) $(bcache_h) $(mdebugread_h) \
        $(gdb_assert_h) $(gdb_stat_h) $(gdb_obstack_h) $(gdb_string_h) \
@@ -2299,13 +2298,14 @@ objfiles.o: objfiles.c $(defs_h) $(bfd_h) $(symtab_h) $(symfile_h) \
 observer.o: observer.c $(defs_h) $(observer_h) $(command_h) $(gdbcmd_h) \
        $(observer_inc)
 ocd.o: ocd.c $(defs_h) $(gdbcore_h) $(gdb_string_h) $(frame_h) $(inferior_h) \
-       $(bfd_h) $(symfile_h) $(target_h) $(gdbcmd_h) $(objfiles_h) \
-       $(gdb_stabs_h) $(serial_h) $(ocd_h) $(regcache_h)
+       $(bfd_h) $(symfile_h) $(target_h) $(exceptions_h) $(gdbcmd_h) \
+       $(objfiles_h) $(gdb_stabs_h) $(serial_h) $(ocd_h) $(regcache_h)
 osabi.o: osabi.c $(defs_h) $(gdb_assert_h) $(gdb_string_h) $(osabi_h) \
        $(arch_utils_h) $(gdbcmd_h) $(command_h) $(elf_bfd_h)
-solib-pa64.o: solib-pa64.c $(defs_h) $(symtab_h) $(bfd_h) $(symfile_h) \
-       $(objfiles_h) $(gdbcore_h) $(target_h) $(inferior_h) $(hppa_tdep_h) \
-       $(solist_h) $(solib_pa64_h)
+pa64solib.o: pa64solib.c $(defs_h) $(frame_h) $(bfd_h) $(libhppa_h) \
+       $(gdbcore_h) $(symtab_h) $(breakpoint_h) $(symfile_h) $(objfiles_h) \
+       $(inferior_h) $(gdb_stabs_h) $(gdb_stat_h) $(gdbcmd_h) $(language_h) \
+       $(regcache_h) $(exec_h) $(hppa_tdep_h)
 parse.o: parse.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
        $(frame_h) $(expression_h) $(value_h) $(command_h) $(language_h) \
        $(parser_defs_h) $(gdbcmd_h) $(symfile_h) $(inferior_h) \
@@ -2374,25 +2374,27 @@ reggroups.o: reggroups.c $(defs_h) $(reggroups_h) $(gdbtypes_h) \
        $(gdb_assert_h) $(regcache_h) $(command_h) $(gdbcmd_h)
 regset.o: regset.c $(defs_h) $(regset_h) $(gdb_assert_h)
 remote.o: remote.c $(defs_h) $(gdb_string_h) $(inferior_h) $(bfd_h) \
-       $(symfile_h) $(target_h) $(gdbcmd_h) $(objfiles_h) $(gdb_stabs_h) \
-       $(gdbthread_h) $(remote_h) $(regcache_h) $(value_h) $(gdb_assert_h) \
-       $(event_loop_h) $(event_top_h) $(inf_loop_h) $(serial_h) \
-       $(gdbcore_h) $(remote_fileio_h)
+       $(symfile_h) $(exceptions_h) $(target_h) $(gdbcmd_h) $(objfiles_h) \
+       $(gdb_stabs_h) $(gdbthread_h) $(remote_h) $(regcache_h) $(value_h) \
+       $(gdb_assert_h) $(event_loop_h) $(event_top_h) $(inf_loop_h) \
+       $(serial_h) $(gdbcore_h) $(remote_fileio_h)
 remote-e7000.o: remote-e7000.c $(defs_h) $(gdbcore_h) $(gdbarch_h) \
        $(inferior_h) $(target_h) $(value_h) $(command_h) $(gdb_string_h) \
-       $(gdbcmd_h) $(serial_h) $(remote_utils_h) $(symfile_h) $(regcache_h)
+       $(exceptions_h) $(gdbcmd_h) $(serial_h) $(remote_utils_h) \
+       $(symfile_h) $(regcache_h)
 remote-est.o: remote-est.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
        $(serial_h) $(regcache_h) $(m68k_tdep_h)
 remote-fileio.o: remote-fileio.c $(defs_h) $(gdb_string_h) $(gdbcmd_h) \
        $(remote_h) $(gdb_fileio_h) $(gdb_wait_h) $(gdb_stat_h) \
-       $(remote_fileio_h)
+       $(exceptions_h) $(remote_fileio_h)
 remote-hms.o: remote-hms.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
        $(serial_h) $(regcache_h)
 remote-m32r-sdi.o: remote-m32r-sdi.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
        $(inferior_h) $(target_h) $(regcache_h) $(gdb_string_h) $(serial_h)
 remote-mips.o: remote-mips.c $(defs_h) $(inferior_h) $(bfd_h) $(symfile_h) \
-       $(gdbcmd_h) $(gdbcore_h) $(serial_h) $(target_h) $(remote_utils_h) \
-       $(gdb_string_h) $(gdb_stat_h) $(regcache_h) $(mips_tdep_h)
+       $(gdbcmd_h) $(gdbcore_h) $(serial_h) $(target_h) $(exceptions_h) \
+       $(remote_utils_h) $(gdb_string_h) $(gdb_stat_h) $(regcache_h) \
+       $(mips_tdep_h)
 remote-rdi.o: remote-rdi.c $(defs_h) $(gdb_string_h) $(frame_h) \
        $(inferior_h) $(bfd_h) $(symfile_h) $(target_h) $(gdbcmd_h) \
        $(objfiles_h) $(gdb_stabs_h) $(gdbthread_h) $(gdbcore_h) \
@@ -2402,8 +2404,8 @@ remote-rdp.o: remote-rdp.c $(defs_h) $(inferior_h) $(value_h) \
        $(gdb_callback_h) $(command_h) $(symfile_h) $(remote_utils_h) \
        $(gdb_string_h) $(gdbcore_h) $(regcache_h) $(serial_h) $(arm_tdep_h)
 remote-sds.o: remote-sds.c $(defs_h) $(gdb_string_h) $(frame_h) \
-       $(inferior_h) $(bfd_h) $(symfile_h) $(target_h) $(gdbcmd_h) \
-       $(objfiles_h) $(gdb_stabs_h) $(gdbthread_h) $(gdbcore_h) \
+       $(inferior_h) $(exceptions_h) $(bfd_h) $(symfile_h) $(target_h) \
+       $(gdbcmd_h) $(objfiles_h) $(gdb_stabs_h) $(gdbthread_h) $(gdbcore_h) \
        $(regcache_h) $(serial_h)
 remote-sim.o: remote-sim.c $(defs_h) $(inferior_h) $(value_h) \
        $(gdb_string_h) $(terminal_h) $(target_h) $(gdbcore_h) \
@@ -2418,8 +2420,8 @@ rom68k-rom.o: rom68k-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
        $(serial_h) $(regcache_h) $(value_h) $(m68k_tdep_h)
 rs6000-nat.o: rs6000-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
        $(xcoffsolib_h) $(symfile_h) $(objfiles_h) $(libbfd_h) $(bfd_h) \
-       $(gdb_stabs_h) $(regcache_h) $(arch_utils_h) $(ppc_tdep_h) $(exec_h) \
-       $(gdb_stat_h)
+       $(exceptions_h) $(gdb_stabs_h) $(regcache_h) $(arch_utils_h) \
+       $(ppc_tdep_h) $(exec_h) $(gdb_stat_h)
 rs6000-tdep.o: rs6000-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(symtab_h) \
        $(target_h) $(gdbcore_h) $(gdbcmd_h) $(objfiles_h) $(arch_utils_h) \
        $(regcache_h) $(regset_h) $(doublest_h) $(value_h) $(parser_defs_h) \
@@ -2480,18 +2482,25 @@ solib-aix5.o: solib-aix5.c $(defs_h) $(gdb_string_h) $(elf_external_h) \
        $(command_h) $(target_h) $(frame_h) $(gdb_regex_h) $(inferior_h) \
        $(environ_h) $(language_h) $(gdbcmd_h) $(solist_h)
 solib.o: solib.c $(defs_h) $(gdb_string_h) $(symtab_h) $(bfd_h) $(symfile_h) \
-       $(objfiles_h) $(gdbcore_h) $(command_h) $(target_h) $(frame_h) \
-       $(gdb_regex_h) $(inferior_h) $(environ_h) $(language_h) $(gdbcmd_h) \
-       $(completer_h) $(filenames_h) $(exec_h) $(solist_h) $(observer_h) \
-       $(readline_h)
+       $(objfiles_h) $(exceptions_h) $(gdbcore_h) $(command_h) $(target_h) \
+       $(frame_h) $(gdb_regex_h) $(inferior_h) $(environ_h) $(language_h) \
+       $(gdbcmd_h) $(completer_h) $(filenames_h) $(exec_h) $(solist_h) \
+       $(observer_h) $(readline_h)
 solib-frv.o: solib-frv.c $(defs_h) $(gdb_string_h) $(inferior_h) \
        $(gdbcore_h) $(solist_h) $(frv_tdep_h) $(objfiles_h) $(symtab_h) \
        $(language_h) $(command_h) $(gdbcmd_h) $(elf_frv_h)
 solib-irix.o: solib-irix.c $(defs_h) $(symtab_h) $(bfd_h) $(symfile_h) \
        $(objfiles_h) $(gdbcore_h) $(target_h) $(inferior_h) $(solist_h)
 solib-legacy.o: solib-legacy.c $(defs_h) $(gdbcore_h) $(solib_svr4_h)
+solib-null.o: solib-null.c $(defs_h) $(solist_h)
 solib-osf.o: solib-osf.c $(defs_h) $(gdb_string_h) $(bfd_h) $(symtab_h) \
        $(symfile_h) $(objfiles_h) $(target_h) $(inferior_h) $(solist_h)
+solib-pa64.o: solib-pa64.c $(defs_h) $(symtab_h) $(bfd_h) $(symfile_h) \
+       $(objfiles_h) $(gdbcore_h) $(target_h) $(inferior_h) $(hppa_tdep_h) \
+       $(solist_h) $(solib_pa64_h)
+solib-som.o: solib-som.c $(defs_h) $(som_h) $(symtab_h) $(bfd_h) \
+       $(symfile_h) $(objfiles_h) $(gdbcore_h) $(target_h) $(inferior_h) \
+       $(hppa_tdep_h) $(solist_h)
 solib-sunos.o: solib-sunos.c $(defs_h) $(gdb_string_h) $(symtab_h) $(bfd_h) \
        $(symfile_h) $(objfiles_h) $(gdbcore_h) $(inferior_h) $(solist_h) \
        $(bcache_h) $(regcache_h)
@@ -2506,9 +2515,10 @@ somread.o: somread.c $(defs_h) $(bfd_h) $(symtab_h) $(symfile_h) \
        $(objfiles_h) $(buildsym_h) $(stabsread_h) $(gdb_stabs_h) \
        $(complaints_h) $(gdb_string_h) $(demangle_h) $(som_h) $(libhppa_h) \
        $(solib_som_h)
-solib-som.o: solib-som.c $(defs_h) $(som_h) $(symtab_h) $(bfd_h) $(symfile_h) \
-       $(objfiles_h) $(gdbcore_h) $(target_h) $(inferior_h) $(hppa_tdep_h) \
-       $(solist_h)
+somsolib.o: somsolib.c $(defs_h) $(frame_h) $(bfd_h) $(som_h) $(libhppa_h) \
+       $(gdbcore_h) $(symtab_h) $(breakpoint_h) $(symfile_h) $(objfiles_h) \
+       $(inferior_h) $(gdb_stabs_h) $(gdb_stat_h) $(gdbcmd_h) $(language_h) \
+       $(regcache_h) $(gdb_assert_h) $(exec_h) $(hppa_tdep_h)
 source.o: source.c $(defs_h) $(symtab_h) $(expression_h) $(language_h) \
        $(command_h) $(source_h) $(gdbcmd_h) $(frame_h) $(value_h) \
        $(gdb_string_h) $(gdb_stat_h) $(gdbcore_h) $(gdb_regex_h) \
@@ -2580,7 +2590,8 @@ stack.o: stack.c $(defs_h) $(gdb_string_h) $(value_h) $(symtab_h) \
        $(gdbtypes_h) $(expression_h) $(language_h) $(frame_h) $(gdbcmd_h) \
        $(gdbcore_h) $(target_h) $(source_h) $(breakpoint_h) $(demangle_h) \
        $(inferior_h) $(annotate_h) $(ui_out_h) $(block_h) $(stack_h) \
-       $(gdb_assert_h) $(dictionary_h) $(reggroups_h) $(regcache_h)
+       $(gdb_assert_h) $(dictionary_h) $(exceptions_h) $(reggroups_h) \
+       $(regcache_h)
 std-regs.o: std-regs.c $(defs_h) $(user_regs_h) $(frame_h) $(gdbtypes_h) \
        $(value_h) $(gdb_string_h)
 stop-gdb.o: stop-gdb.c $(defs_h)
@@ -2592,12 +2603,13 @@ symfile.o: symfile.c $(defs_h) $(bfdlink_h) $(symtab_h) $(gdbtypes_h) \
        $(hashtab_h) $(readline_h) $(gdb_assert_h) $(block_h) \
        $(gdb_string_h) $(gdb_stat_h)
 symfile-mem.o: symfile-mem.c $(defs_h) $(symtab_h) $(gdbcore_h) \
-       $(objfiles_h) $(gdbcmd_h) $(target_h) $(value_h) $(symfile_h) \
-       $(observer_h) $(auxv_h) $(elf_common_h)
+       $(objfiles_h) $(exceptions_h) $(gdbcmd_h) $(target_h) $(value_h) \
+       $(symfile_h) $(observer_h) $(auxv_h) $(elf_common_h)
 symmisc.o: symmisc.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(bfd_h) \
        $(symfile_h) $(objfiles_h) $(breakpoint_h) $(command_h) \
-       $(gdb_obstack_h) $(language_h) $(bcache_h) $(block_h) $(gdb_regex_h) \
-       $(dictionary_h) $(gdb_string_h) $(readline_h)
+       $(gdb_obstack_h) $(exceptions_h) $(language_h) $(bcache_h) \
+       $(block_h) $(gdb_regex_h) $(dictionary_h) $(gdb_string_h) \
+       $(readline_h)
 symtab.o: symtab.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(gdbcore_h) \
        $(frame_h) $(target_h) $(value_h) $(symfile_h) $(objfiles_h) \
        $(gdbcmd_h) $(call_cmds_h) $(gdb_regex_h) $(expression_h) \
@@ -2609,19 +2621,17 @@ target.o: target.c $(defs_h) $(gdb_string_h) $(target_h) $(gdbcmd_h) \
        $(symtab_h) $(inferior_h) $(bfd_h) $(symfile_h) $(objfiles_h) \
        $(gdb_wait_h) $(dcache_h) $(regcache_h) $(gdb_assert_h) $(gdbcore_h)
 thread.o: thread.c $(defs_h) $(symtab_h) $(frame_h) $(inferior_h) \
-       $(environ_h) $(value_h) $(target_h) $(gdbthread_h) $(command_h) \
-       $(gdbcmd_h) $(regcache_h) $(gdb_h) $(gdb_string_h) $(ui_out_h)
-linux-thread-db.o: linux-thread-db.c $(defs_h) $(gdb_assert_h) \
-       $(gdb_proc_service_h) $(gdb_thread_db_h) $(bfd_h) $(gdbthread_h) \
-       $(inferior_h) $(symfile_h) $(objfiles_h) $(target_h) $(regcache_h) \
-       $(solib_svr4_h)
+       $(environ_h) $(value_h) $(target_h) $(gdbthread_h) $(exceptions_h) \
+       $(command_h) $(gdbcmd_h) $(regcache_h) $(gdb_h) $(gdb_string_h) \
+       $(ui_out_h)
 top.o: top.c $(defs_h) $(gdbcmd_h) $(call_cmds_h) $(cli_cmds_h) \
        $(cli_script_h) $(cli_setshow_h) $(cli_decode_h) $(symtab_h) \
-       $(inferior_h) $(target_h) $(breakpoint_h) $(gdbtypes_h) \
-       $(expression_h) $(value_h) $(language_h) $(terminal_h) $(annotate_h) \
-       $(completer_h) $(top_h) $(version_h) $(serial_h) $(doublest_h) \
-       $(gdb_assert_h) $(readline_h) $(readline_history_h) $(event_top_h) \
-       $(gdb_string_h) $(gdb_stat_h) $(ui_out_h) $(cli_out_h)
+       $(inferior_h) $(exceptions_h) $(target_h) $(breakpoint_h) \
+       $(gdbtypes_h) $(expression_h) $(value_h) $(language_h) $(terminal_h) \
+       $(annotate_h) $(completer_h) $(top_h) $(version_h) $(serial_h) \
+       $(doublest_h) $(gdb_assert_h) $(readline_h) $(readline_history_h) \
+       $(event_top_h) $(gdb_string_h) $(gdb_stat_h) $(ui_out_h) \
+       $(cli_out_h)
 tracepoint.o: tracepoint.c $(defs_h) $(symtab_h) $(frame_h) $(gdbtypes_h) \
        $(expression_h) $(gdbcmd_h) $(value_h) $(target_h) $(language_h) \
        $(gdb_string_h) $(inferior_h) $(tracepoint_h) $(remote_h) \
@@ -2643,18 +2653,12 @@ ui-out.o: ui-out.c $(defs_h) $(gdb_string_h) $(expression_h) $(language_h) \
 user-regs.o: user-regs.c $(defs_h) $(user_regs_h) $(gdbtypes_h) \
        $(gdb_string_h) $(gdb_assert_h) $(frame_h)
 utils.o: utils.c $(defs_h) $(gdb_assert_h) $(gdb_string_h) $(event_top_h) \
-       $(tui_h) $(gdbcmd_h) $(serial_h) $(bfd_h) $(target_h) $(demangle_h) \
-       $(expression_h) $(language_h) $(charset_h) $(annotate_h) \
-       $(filenames_h) $(symfile_h) $(inferior_h) $(gdb_curses_h) \
-       $(readline_h)
+       $(exceptions_h) $(tui_h) $(gdbcmd_h) $(serial_h) $(bfd_h) \
+       $(target_h) $(demangle_h) $(expression_h) $(language_h) $(charset_h) \
+       $(annotate_h) $(filenames_h) $(symfile_h) $(inferior_h) \
+       $(gdb_curses_h) $(readline_h)
 uw-thread.o: uw-thread.c $(defs_h) $(gdbthread_h) $(target_h) $(inferior_h) \
        $(regcache_h) $(gregset_h)
-v850ice.o: v850ice.c $(defs_h) $(gdb_string_h) $(frame_h) $(symtab_h) \
-       $(inferior_h) $(breakpoint_h) $(symfile_h) $(target_h) $(objfiles_h) \
-       $(gdbcore_h) $(value_h) $(command_h) $(regcache_h)
-v850-tdep.o: v850-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
-       $(value_h) $(bfd_h) $(gdb_string_h) $(gdbcore_h) $(objfiles_h) \
-       $(arch_utils_h) $(regcache_h) $(symtab_h) $(dis_asm_h)
 valarith.o: valarith.c $(defs_h) $(value_h) $(symtab_h) $(gdbtypes_h) \
        $(expression_h) $(target_h) $(language_h) $(gdb_string_h) \
        $(doublest_h) $(infcall_h)
@@ -2683,15 +2687,16 @@ vax-tdep.o: vax-tdep.c $(defs_h) $(arch_utils_h) $(dis_asm_h) $(frame_h) \
        $(osabi_h) $(regcache_h) $(regset_h) $(trad_frame_h) $(value_h) \
        $(gdb_string_h) $(vax_tdep_h)
 win32-nat.o: win32-nat.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
-       $(gdbcore_h) $(command_h) $(completer_h) $(regcache_h) $(top_h) \
-       $(buildsym_h) $(symfile_h) $(objfiles_h) $(gdb_string_h) \
-       $(gdbthread_h) $(gdbcmd_h) $(exec_h) $(i386_tdep_h) $(i387_tdep_h)
-wince.o: wince.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) $(gdbcore_h) \
-       $(command_h) $(buildsym_h) $(symfile_h) $(objfiles_h) \
-       $(gdb_string_h) $(gdbthread_h) $(gdbcmd_h) $(wince_stub_h) \
-       $(regcache_h) $(mips_tdep_h)
+       $(exceptions_h) $(gdbcore_h) $(command_h) $(completer_h) \
+       $(regcache_h) $(top_h) $(buildsym_h) $(symfile_h) $(objfiles_h) \
+       $(gdb_string_h) $(gdbthread_h) $(gdbcmd_h) $(exec_h) $(i386_tdep_h) \
+       $(i387_tdep_h)
+wince.o: wince.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
+       $(exceptions_h) $(gdbcore_h) $(command_h) $(buildsym_h) $(symfile_h) \
+       $(objfiles_h) $(gdb_string_h) $(gdbthread_h) $(gdbcmd_h) \
+       $(wince_stub_h) $(regcache_h) $(mips_tdep_h)
 wince-stub.o: wince-stub.c $(wince_stub_h)
-wrapper.o: wrapper.c $(defs_h) $(value_h) $(wrapper_h)
+wrapper.o: wrapper.c $(defs_h) $(value_h) $(exceptions_h) $(wrapper_h)
 xcoffread.o: xcoffread.c $(defs_h) $(bfd_h) $(gdb_string_h) $(gdb_stat_h) \
        $(coff_internal_h) $(libcoff_h) $(coff_xcoff_h) $(libxcoff_h) \
        $(coff_rs6000_h) $(symtab_h) $(gdbtypes_h) $(symfile_h) \
@@ -2728,7 +2733,8 @@ cli-dump.o: $(srcdir)/cli/cli-dump.c $(defs_h) $(gdb_string_h) \
        $(cli_dump_h) $(gdb_assert_h) $(target_h) $(readline_h)
        $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/cli/cli-dump.c
 cli-interp.o: $(srcdir)/cli/cli-interp.c $(defs_h) $(interps_h) $(wrapper_h) \
-       $(event_top_h) $(ui_out_h) $(cli_out_h) $(top_h) $(gdb_string_h)
+       $(event_top_h) $(ui_out_h) $(cli_out_h) $(top_h) $(gdb_string_h) \
+       $(exceptions_h)
        $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/cli/cli-interp.c
 cli-logging.o: $(srcdir)/cli/cli-logging.c $(defs_h) $(gdbcmd_h) $(ui_out_h) \
        $(gdb_string_h)
@@ -2936,10 +2942,10 @@ mi-interp.o: $(srcdir)/mi/mi-interp.c $(defs_h) $(gdb_string_h) $(interps_h) \
        $(mi_main_h) $(mi_cmds_h) $(mi_out_h) $(mi_console_h)
        $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-interp.c
 mi-main.o: $(srcdir)/mi/mi-main.c $(defs_h) $(target_h) $(inferior_h) \
-       $(gdb_string_h) $(top_h) $(gdbthread_h) $(mi_cmds_h) $(mi_parse_h) \
-       $(mi_getopt_h) $(mi_console_h) $(ui_out_h) $(mi_out_h) $(interps_h) \
-       $(event_loop_h) $(event_top_h) $(gdbcore_h) $(value_h) $(regcache_h) \
-       $(gdb_h) $(frame_h) $(mi_main_h)
+       $(gdb_string_h) $(exceptions_h) $(top_h) $(gdbthread_h) $(mi_cmds_h) \
+       $(mi_parse_h) $(mi_getopt_h) $(mi_console_h) $(ui_out_h) $(mi_out_h) \
+       $(interps_h) $(event_loop_h) $(event_top_h) $(gdbcore_h) $(value_h) \
+       $(regcache_h) $(gdb_h) $(frame_h) $(mi_main_h)
        $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-main.c
 mi-out.o: $(srcdir)/mi/mi-out.c $(defs_h) $(ui_out_h) $(mi_out_h)
        $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-out.c
index c96a0bf28b6ab9a4cc0c93d4c9ac1a9523c70de9..18776230d0ebadc56f893e57c211959538c7547d 100644 (file)
@@ -50,6 +50,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "block.h"
 #include "infcall.h"
 #include "dictionary.h"
+#include "exceptions.h"
 
 #ifndef ADA_RETAIN_DOTS
 #define ADA_RETAIN_DOTS 0
index da9a6bab3b3a8503d9e95fef239e3a2e8c70de19..481bc703b8090f0466d2d61b534daa90db3d3dab 100644 (file)
@@ -33,6 +33,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "ada-lang.h"
 #include "c-lang.h"
 #include "infcall.h"
+#include "exceptions.h"
 
 /* Encapsulates arguments to ada_val_print.  */
 struct ada_val_print_args
index 20134e579d0ae710034adf3f88587aa6edd54134..77eae5542cff5b11656e02cf20ba1e2da6f97d8e 100644 (file)
@@ -51,6 +51,7 @@
 #include "block.h"
 #include "solist.h"
 #include "observer.h"
+#include "exceptions.h"
 
 #include "gdb-events.h"
 
index 6abb24ddffe100c7147a4d7fd7065829c111eaf2..35b76229dc34f0280303c06500aeeb67eae49319 100644 (file)
@@ -27,6 +27,7 @@
 #include "cli-out.h"
 #include "top.h"               /* for "execute_command" */
 #include "gdb_string.h"
+#include "exceptions.h"
 
 struct ui_out *cli_uiout;
 
index 91519b97f631d22f36880c50939f5fc0ec3fdc3b..d4bb3e0cc9bcf19e841fb6100654e2a137a50747 100644 (file)
@@ -35,6 +35,7 @@
 #include "dis-asm.h"
 #include "gdb_stat.h"
 #include "completer.h"
+#include "exceptions.h"
 
 /* Local function declarations.  */
 
index c130cf8b4c301fa3197589289bfddaa835ffb718..9e052c5fab8be9330a42da1ee7f6a25622232098 100644 (file)
@@ -45,6 +45,7 @@
 #include "readline/readline.h"
 #include "observer.h"
 #include "gdb_assert.h"
+#include "exceptions.h"
 
 #ifndef O_BINARY
 #define O_BINARY 0
index 617af3e8f70ff02e8a179526d3bc5b3b824b4b46..f6efab874d80865603fa766aa93a6d32939f84a1 100644 (file)
@@ -332,6 +332,8 @@ extern char *safe_strerror (int);
 
 extern void request_quit (int);
 
+#define        ALL_CLEANUPS    ((struct cleanup *)0)
+
 extern void do_cleanups (struct cleanup *);
 extern void do_final_cleanups (struct cleanup *);
 extern void do_run_cleanups (struct cleanup *);
@@ -921,95 +923,6 @@ extern void internal_warning (const char *file, int line,
 
 extern NORETURN void nomem (long) ATTR_NORETURN;
 
-/* Reasons for calling throw_exception().  NOTE: all reason values
-   must be less than zero.  enum value 0 is reserved for internal use
-   as the return value from an initial setjmp().  The function
-   catch_exceptions() reserves values >= 0 as legal results from its
-   wrapped function.  */
-
-enum return_reason
-  {
-    /* User interrupt.  */
-    RETURN_QUIT = -2,
-    /* Any other error.  */
-    RETURN_ERROR
-  };
-
-#define        ALL_CLEANUPS    ((struct cleanup *)0)
-
-#define RETURN_MASK(reason)    (1 << (int)(-reason))
-#define RETURN_MASK_QUIT       RETURN_MASK (RETURN_QUIT)
-#define RETURN_MASK_ERROR      RETURN_MASK (RETURN_ERROR)
-#define RETURN_MASK_ALL                (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
-typedef int return_mask;
-
-/* Throw an exception of type RETURN_REASON.  Will execute a LONG JUMP
-   to the inner most containing exception handler established using
-   catch_exceptions() (or the legacy catch_errors()).
-
-   Code normally throws an exception using error() et.al.  For various
-   reaons, GDB also contains code that throws an exception directly.
-   For instance, the remote*.c targets contain CNTRL-C signal handlers
-   that propogate the QUIT event up the exception chain.  ``This could
-   be a good thing or a dangerous thing.'' -- the Existential Wombat.  */
-
-extern NORETURN void throw_exception (enum return_reason) ATTR_NORETURN;
-
-/* Call FUNC(UIOUT, FUNC_ARGS) but wrapped within an exception
-   handler.  If an exception (enum return_reason) is thrown using
-   throw_exception() than all cleanups installed since
-   catch_exceptions() was entered are invoked, the (-ve) exception
-   value is then returned by catch_exceptions.  If FUNC() returns
-   normally (with a postive or zero return value) then that value is
-   returned by catch_exceptions().  It is an internal_error() for
-   FUNC() to return a negative value.
-
-   For the period of the FUNC() call: UIOUT is installed as the output
-   builder; ERRSTRING is installed as the error/quit message; and a
-   new cleanup_chain is established.  The old values are restored
-   before catch_exceptions() returns.
-
-   The variant catch_exceptions_with_msg() is the same as
-   catch_exceptions() but adds the ability to return an allocated
-   copy of the gdb error message.  This is used when a silent error is 
-   issued and the caller wants to manually issue the error message.
-
-   FIXME; cagney/2001-08-13: The need to override the global UIOUT
-   builder variable should just go away.
-
-   This function superseeds catch_errors().
-
-   This function uses SETJMP() and LONGJUMP().  */
-
-struct ui_out;
-typedef int (catch_exceptions_ftype) (struct ui_out *ui_out, void *args);
-extern int catch_exceptions (struct ui_out *uiout,
-                            catch_exceptions_ftype *func, void *func_args,
-                            char *errstring, return_mask mask);
-extern int catch_exceptions_with_msg (struct ui_out *uiout,
-                                     catch_exceptions_ftype *func, 
-                                     void *func_args,
-                                     char *errstring, char **gdberrmsg,
-                                     return_mask mask);
-
-/* If CATCH_ERRORS_FTYPE throws an error, catch_errors() returns zero
-   otherwize the result from CATCH_ERRORS_FTYPE is returned. It is
-   probably useful for CATCH_ERRORS_FTYPE to always return a non-zero
-   value. It's unfortunate that, catch_errors() does not return an
-   indication of the exact exception that it caught - quit_flag might
-   help.
-
-   This function is superseeded by catch_exceptions().  */
-
-typedef int (catch_errors_ftype) (void *);
-extern int catch_errors (catch_errors_ftype *, void *, char *, return_mask);
-
-/* Template to catch_errors() that wraps calls to command
-   functions. */
-
-typedef void (catch_command_errors_ftype) (char *, int);
-extern int catch_command_errors (catch_command_errors_ftype *func, char *command, int from_tty, return_mask);
-
 extern void warning (const char *, ...) ATTR_FORMAT (printf, 1, 2);
 
 extern void vwarning (const char *, va_list args);
index c8d12f925df3a0925ba3c7ccb974b84d30e73228..5f3d30e87ec7415c4fd874c71fa910ceb7867468 100644 (file)
@@ -35,6 +35,7 @@
 #include "gdb_string.h"
 #include <errno.h>
 #include <sys/time.h>
+#include "exceptions.h"
 
 typedef struct gdb_event gdb_event;
 typedef void (event_handler_func) (int);
index 39d52fe5f58cbda3ff210142f25c7fb2c8328f97..5f7df47ed873a62b20fa56550ed956c88b6fb66c 100644 (file)
@@ -28,6 +28,7 @@
 #include "event-top.h"
 #include "interps.h"
 #include <signal.h>
+#include "exceptions.h"
 
 /* For dont_repeat() */
 #include "gdbcmd.h"
diff --git a/gdb/exceptions.c b/gdb/exceptions.c
new file mode 100644 (file)
index 0000000..bf56eb2
--- /dev/null
@@ -0,0 +1,313 @@
+/* Exception (throw catch) mechanism, for GDB, the GNU debugger.
+
+   Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
+   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+   Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include "defs.h"
+#include "exceptions.h"
+#include <setjmp.h>
+#include "breakpoint.h"
+#include "target.h"
+#include "inferior.h"
+#include "annotate.h"
+#include "ui-out.h"
+#include "gdb_assert.h"
+
+/* One should use catch_errors rather than manipulating these
+   directly.  */
+#if defined(HAVE_SIGSETJMP)
+#define SIGJMP_BUF             sigjmp_buf
+#define SIGSETJMP(buf)         sigsetjmp((buf), 1)
+#define SIGLONGJMP(buf,val)    siglongjmp((buf), (val))
+#else
+#define SIGJMP_BUF             jmp_buf
+#define SIGSETJMP(buf)         setjmp(buf)
+#define SIGLONGJMP(buf,val)    longjmp((buf), (val))
+#endif
+
+/* Where to go for throw_exception().  */
+static SIGJMP_BUF *catch_return;
+
+/* Return for reason REASON to the nearest containing catch_errors().  */
+
+NORETURN void
+throw_exception (enum return_reason reason)
+{
+  quit_flag = 0;
+  immediate_quit = 0;
+
+  /* Perhaps it would be cleaner to do this via the cleanup chain (not sure
+     I can think of a reason why that is vital, though).  */
+  bpstat_clear_actions (stop_bpstat);  /* Clear queued breakpoint commands */
+
+  disable_current_display ();
+  do_cleanups (ALL_CLEANUPS);
+  if (target_can_async_p () && !target_executing)
+    do_exec_cleanups (ALL_CLEANUPS);
+  if (sync_execution)
+    do_exec_error_cleanups (ALL_CLEANUPS);
+
+  if (annotation_level > 1)
+    switch (reason)
+      {
+      case RETURN_QUIT:
+       annotate_quit ();
+       break;
+      case RETURN_ERROR:
+       annotate_error ();
+       break;
+      }
+
+  /* Jump to the containing catch_errors() call, communicating REASON
+     to that call via setjmp's return value.  Note that REASON can't
+     be zero, by definition in defs.h. */
+
+  (NORETURN void) SIGLONGJMP (*catch_return, (int) reason);
+}
+
+/* Call FUNC() with args FUNC_UIOUT and FUNC_ARGS, catching any
+   errors.  Set FUNC_CAUGHT to an ``enum return_reason'' if the
+   function is aborted (using throw_exception() or zero if the
+   function returns normally.  Set FUNC_VAL to the value returned by
+   the function or 0 if the function was aborted.
+
+   Must not be called with immediate_quit in effect (bad things might
+   happen, say we got a signal in the middle of a memcpy to quit_return).
+   This is an OK restriction; with very few exceptions immediate_quit can
+   be replaced by judicious use of QUIT.
+
+   MASK specifies what to catch; it is normally set to
+   RETURN_MASK_ALL, if for no other reason than that the code which
+   calls catch_errors might not be set up to deal with a quit which
+   isn't caught.  But if the code can deal with it, it generally
+   should be RETURN_MASK_ERROR, unless for some reason it is more
+   useful to abort only the portion of the operation inside the
+   catch_errors.  Note that quit should return to the command line
+   fairly quickly, even if some further processing is being done.  */
+
+/* MAYBE: cagney/1999-11-05: catch_errors() in conjunction with
+   error() et.al. could maintain a set of flags that indicate the the
+   current state of each of the longjmp buffers.  This would give the
+   longjmp code the chance to detect a longjmp botch (before it gets
+   to longjmperror()).  Prior to 1999-11-05 this wasn't possible as
+   code also randomly used a SET_TOP_LEVEL macro that directly
+   initialize the longjmp buffers. */
+
+/* MAYBE: cagney/1999-11-05: Should the catch_errors and cleanups code
+   be consolidated into a single file instead of being distributed
+   between utils.c and top.c? */
+
+static void
+catcher (catch_exceptions_ftype *func,
+        struct ui_out *func_uiout,
+        void *func_args,
+        int *func_val,
+        enum return_reason *func_caught,
+        char *errstring,
+        char **gdberrmsg,
+        return_mask mask)
+{
+  SIGJMP_BUF *saved_catch;
+  SIGJMP_BUF catch;
+  struct cleanup *saved_cleanup_chain;
+  char *saved_error_pre_print;
+  char *saved_quit_pre_print;
+  struct ui_out *saved_uiout;
+
+  /* Return value from SIGSETJMP(): enum return_reason if error or
+     quit caught, 0 otherwise. */
+  int caught;
+
+  /* Return value from FUNC(): Hopefully non-zero. Explicitly set to
+     zero if an error quit was caught.  */
+  int val;
+
+  /* Override error/quit messages during FUNC. */
+
+  saved_error_pre_print = error_pre_print;
+  saved_quit_pre_print = quit_pre_print;
+
+  if (mask & RETURN_MASK_ERROR)
+    error_pre_print = errstring;
+  if (mask & RETURN_MASK_QUIT)
+    quit_pre_print = errstring;
+
+  /* Override the global ``struct ui_out'' builder.  */
+
+  saved_uiout = uiout;
+  uiout = func_uiout;
+
+  /* Prevent error/quit during FUNC from calling cleanups established
+     prior to here. */
+
+  saved_cleanup_chain = save_cleanups ();
+
+  /* Call FUNC, catching error/quit events. */
+
+  saved_catch = catch_return;
+  catch_return = &catch;
+  caught = SIGSETJMP (catch);
+  if (!caught)
+    val = (*func) (func_uiout, func_args);
+  else
+    {
+      val = 0;
+      /* If caller wants a copy of the low-level error message, make one.  
+         This is used in the case of a silent error whereby the caller
+         may optionally want to issue the message.  */
+      if (gdberrmsg)
+       *gdberrmsg = error_last_message ();
+    }
+  catch_return = saved_catch;
+
+  /* FIXME: cagney/1999-11-05: A correct FUNC implementation will
+     clean things up (restoring the cleanup chain) to the state they
+     were just prior to the call.  Unfortunately, many FUNC's are not
+     that well behaved.  This could be fixed by adding either a
+     do_cleanups call (to cover the problem) or an assertion check to
+     detect bad FUNCs code. */
+
+  /* Restore the cleanup chain, the error/quit messages, and the uiout
+     builder, to their original states. */
+
+  restore_cleanups (saved_cleanup_chain);
+
+  uiout = saved_uiout;
+
+  if (mask & RETURN_MASK_QUIT)
+    quit_pre_print = saved_quit_pre_print;
+  if (mask & RETURN_MASK_ERROR)
+    error_pre_print = saved_error_pre_print;
+
+  /* Return normally if no error/quit event occurred or this catcher
+     can handle this exception.  The caller analyses the func return
+     values.  */
+
+  if (!caught || (mask & RETURN_MASK (caught)))
+    {
+      *func_val = val;
+      *func_caught = caught;
+      return;
+    }
+
+  /* The caller didn't request that the event be caught, relay the
+     event to the next containing catch_errors(). */
+
+  throw_exception (caught);
+}
+
+int
+catch_exceptions (struct ui_out *uiout,
+                 catch_exceptions_ftype *func,
+                 void *func_args,
+                 char *errstring,
+                 return_mask mask)
+{
+  int val;
+  enum return_reason caught;
+  catcher (func, uiout, func_args, &val, &caught, errstring, NULL, mask);
+  gdb_assert (val >= 0);
+  gdb_assert (caught <= 0);
+  if (caught < 0)
+    return caught;
+  return val;
+}
+
+int
+catch_exceptions_with_msg (struct ui_out *uiout,
+                          catch_exceptions_ftype *func,
+                          void *func_args,
+                          char *errstring,
+                          char **gdberrmsg,
+                          return_mask mask)
+{
+  int val;
+  enum return_reason caught;
+  catcher (func, uiout, func_args, &val, &caught, errstring, gdberrmsg, mask);
+  gdb_assert (val >= 0);
+  gdb_assert (caught <= 0);
+  if (caught < 0)
+    return caught;
+  return val;
+}
+
+struct catch_errors_args
+{
+  catch_errors_ftype *func;
+  void *func_args;
+};
+
+static int
+do_catch_errors (struct ui_out *uiout, void *data)
+{
+  struct catch_errors_args *args = data;
+  return args->func (args->func_args);
+}
+
+int
+catch_errors (catch_errors_ftype *func, void *func_args, char *errstring,
+             return_mask mask)
+{
+  int val;
+  enum return_reason caught;
+  struct catch_errors_args args;
+  args.func = func;
+  args.func_args = func_args;
+  catcher (do_catch_errors, uiout, &args, &val, &caught, errstring, 
+          NULL, mask);
+  if (caught != 0)
+    return 0;
+  return val;
+}
+
+struct captured_command_args
+  {
+    catch_command_errors_ftype *command;
+    char *arg;
+    int from_tty;
+  };
+
+static int
+do_captured_command (void *data)
+{
+  struct captured_command_args *context = data;
+  context->command (context->arg, context->from_tty);
+  /* FIXME: cagney/1999-11-07: Technically this do_cleanups() call
+     isn't needed.  Instead an assertion check could be made that
+     simply confirmed that the called function correctly cleaned up
+     after itself.  Unfortunately, old code (prior to 1999-11-04) in
+     main.c was calling SET_TOP_LEVEL(), calling the command function,
+     and then *always* calling do_cleanups().  For the moment we
+     remain ``bug compatible'' with that old code..  */
+  do_cleanups (ALL_CLEANUPS);
+  return 1;
+}
+
+int
+catch_command_errors (catch_command_errors_ftype * command,
+                     char *arg, int from_tty, return_mask mask)
+{
+  struct captured_command_args args;
+  args.command = command;
+  args.arg = arg;
+  args.from_tty = from_tty;
+  return catch_errors (do_captured_command, &args, "", mask);
+}
diff --git a/gdb/exceptions.h b/gdb/exceptions.h
new file mode 100644 (file)
index 0000000..5ebde66
--- /dev/null
@@ -0,0 +1,114 @@
+/* Exception (throw catch) mechanism, for GDB, the GNU debugger.
+
+   Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
+   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+   Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef EXCEPTIONS_H
+#define EXCEPTIONS_H
+
+/* Reasons for calling throw_exception().  NOTE: all reason values
+   must be less than zero.  enum value 0 is reserved for internal use
+   as the return value from an initial setjmp().  The function
+   catch_exceptions() reserves values >= 0 as legal results from its
+   wrapped function.  */
+
+enum return_reason
+  {
+    /* User interrupt.  */
+    RETURN_QUIT = -2,
+    /* Any other error.  */
+    RETURN_ERROR
+  };
+
+#define RETURN_MASK(reason)    (1 << (int)(-reason))
+#define RETURN_MASK_QUIT       RETURN_MASK (RETURN_QUIT)
+#define RETURN_MASK_ERROR      RETURN_MASK (RETURN_ERROR)
+#define RETURN_MASK_ALL                (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
+typedef int return_mask;
+
+/* Throw an exception of type RETURN_REASON.  Will execute a LONG JUMP
+   to the inner most containing exception handler established using
+   catch_exceptions() (or the legacy catch_errors()).
+
+   Code normally throws an exception using error() et.al.  For various
+   reaons, GDB also contains code that throws an exception directly.
+   For instance, the remote*.c targets contain CNTRL-C signal handlers
+   that propogate the QUIT event up the exception chain.  ``This could
+   be a good thing or a dangerous thing.'' -- the Existential Wombat.  */
+
+extern NORETURN void throw_exception (enum return_reason) ATTR_NORETURN;
+
+/* Call FUNC(UIOUT, FUNC_ARGS) but wrapped within an exception
+   handler.  If an exception (enum return_reason) is thrown using
+   throw_exception() than all cleanups installed since
+   catch_exceptions() was entered are invoked, the (-ve) exception
+   value is then returned by catch_exceptions.  If FUNC() returns
+   normally (with a postive or zero return value) then that value is
+   returned by catch_exceptions().  It is an internal_error() for
+   FUNC() to return a negative value.
+
+   For the period of the FUNC() call: UIOUT is installed as the output
+   builder; ERRSTRING is installed as the error/quit message; and a
+   new cleanup_chain is established.  The old values are restored
+   before catch_exceptions() returns.
+
+   The variant catch_exceptions_with_msg() is the same as
+   catch_exceptions() but adds the ability to return an allocated
+   copy of the gdb error message.  This is used when a silent error is 
+   issued and the caller wants to manually issue the error message.
+
+   FIXME; cagney/2001-08-13: The need to override the global UIOUT
+   builder variable should just go away.
+
+   This function superseeds catch_errors().
+
+   This function uses SETJMP() and LONGJUMP().  */
+
+struct ui_out;
+typedef int (catch_exceptions_ftype) (struct ui_out *ui_out, void *args);
+extern int catch_exceptions (struct ui_out *uiout,
+                            catch_exceptions_ftype *func, void *func_args,
+                            char *errstring, return_mask mask);
+extern int catch_exceptions_with_msg (struct ui_out *uiout,
+                                     catch_exceptions_ftype *func, 
+                                     void *func_args,
+                                     char *errstring, char **gdberrmsg,
+                                     return_mask mask);
+
+/* If CATCH_ERRORS_FTYPE throws an error, catch_errors() returns zero
+   otherwize the result from CATCH_ERRORS_FTYPE is returned. It is
+   probably useful for CATCH_ERRORS_FTYPE to always return a non-zero
+   value. It's unfortunate that, catch_errors() does not return an
+   indication of the exact exception that it caught - quit_flag might
+   help.
+
+   This function is superseeded by catch_exceptions().  */
+
+typedef int (catch_errors_ftype) (void *);
+extern int catch_errors (catch_errors_ftype *, void *, char *, return_mask);
+
+/* Template to catch_errors() that wraps calls to command
+   functions. */
+
+typedef void (catch_command_errors_ftype) (char *, int);
+extern int catch_command_errors (catch_command_errors_ftype *func, char *command, int from_tty, return_mask);
+
+#endif
index 99ad24d1efaffc6bc0810e3f3056042496264886..13a9f1d2734ab3726ca87b627a1624b10f7bd3d3 100644 (file)
@@ -41,6 +41,7 @@
 #include "gdbcmd.h"
 #include "observer.h"
 #include "objfiles.h"
+#include "exceptions.h"
 
 static struct frame_info *get_prev_frame_1 (struct frame_info *this_frame);
 
index f426c178b82aa601c83b8083974317ff6766a706..78d2d3c64e52423b8c262ecd7674b095d637d8a0 100644 (file)
@@ -35,6 +35,7 @@
 #include "solib-som.h"
 #include "solib-pa64.h"
 #include "regset.h"
+#include "exceptions.h"
 
 #include "gdb_string.h"
 
index ed60cc323015ab8dfa0f76c18d574f08da8d01ea..b738cfc4ccdbb9fa5be628e6ddd046eae66fc632 100644 (file)
@@ -26,6 +26,7 @@
 #include "event-top.h"
 #include "inf-loop.h"
 #include "remote.h"
+#include "exceptions.h"
 
 static int fetch_inferior_event_wrapper (gdb_client_data client_data);
 static void complete_execution (void);
index a425b6708e43ca15ff43227fd59c978a96eb4868..d68ab16dfc50a150f73267e73a53c3095ad6fca4 100644 (file)
@@ -28,6 +28,7 @@
 #include "symtab.h"
 #include "frame.h"
 #include "inferior.h"
+#include "exceptions.h"
 #include "breakpoint.h"
 #include "gdb_wait.h"
 #include "gdbcore.h"
index 403d7535a44daf6f68dac6b84f7695da77470a13..3361c3c51a483052abb2e99031334a5a2587e9dc 100644 (file)
@@ -28,6 +28,7 @@
 #include "defs.h"
 #include "gdbcore.h"
 #include "target.h"
+#include "exceptions.h"
 #include "monitor.h"
 #include "serial.h"
 #include "symtab.h"
index 5e8b2acbbb68d258e8b98353f438bf156bf1266c..f41410afb410cba69cf754de8e17947fb0b79f2f 100644 (file)
@@ -28,6 +28,7 @@
 #include "symfile.h"
 #include "gdbcore.h"
 
+#include "exceptions.h"
 #include "getopt.h"
 
 #include <sys/types.h>
index e7c5701b869023bb60dde949b412a72521f9928c..a593ed47ce5f4ca744f6db9a73154b47253e67b0 100644 (file)
@@ -28,6 +28,7 @@
 #include "target.h"
 #include "inferior.h"
 #include "gdb_string.h"
+#include "exceptions.h"
 #include "top.h"
 #include "gdbthread.h"
 #include "mi-cmds.h"
index 5e50713ed839104b758ac1dd0aef13f1b53ea1de..8bb3bb9b891ac5d4a49717708ca6a7bad8a7da8c 100644 (file)
@@ -43,6 +43,7 @@
 #include "defs.h"
 #include "gdbcore.h"
 #include "target.h"
+#include "exceptions.h"
 #include <signal.h>
 #include <ctype.h>
 #include "gdb_string.h"
index 0b13d352ba0e1ba340557c0796b28e123298cb4f..cf01d2fec82c52c66c97bf875b29d52ef63654ad 100644 (file)
@@ -33,6 +33,7 @@
 #include "gdb_dirent.h"
 #include <sys/netmgr.h>
 
+#include "exceptions.h"
 #include "gdb_string.h"
 #include "gdbcore.h"
 #include "inferior.h"
index 92523124a6b844d0359f37bd704f116b75244a45..f0d3b784a439287c406f7625b941cf5f2702445b 100644 (file)
@@ -30,6 +30,7 @@
 #include "language.h"
 #include "c-lang.h"
 #include "objc-lang.h"
+#include "exceptions.h"
 #include "complaints.h"
 #include "value.h"
 #include "symfile.h"
index 320f06a7f8b0ce79cabf6c826e26fafb59de9617..a0179090e8ef06a5a71c59fdece31e1aa1682230 100644 (file)
--- a/gdb/ocd.c
+++ b/gdb/ocd.c
@@ -29,6 +29,7 @@
 #include "bfd.h"
 #include "symfile.h"
 #include "target.h"
+#include "exceptions.h"
 #include "gdbcmd.h"
 #include "objfiles.h"
 #include "gdb-stabs.h"
index e223c2cbdc46ab735808a0c4fb5bb5022597291a..06b73f56925f5ca7911548179d3309f3a12dd6f8 100644 (file)
@@ -43,6 +43,7 @@
 #include "value.h"
 #include "command.h"
 #include "gdb_string.h"
+#include "exceptions.h"
 #include "gdbcmd.h"
 #include <sys/types.h>
 #include "serial.h"
index 281872ec6c0900e0dee1260ec497a12a5890d0e3..3d35f5628ade75b27e949b961a9b81d6326e6862 100644 (file)
@@ -28,6 +28,7 @@
 #include "gdb/fileio.h"
 #include "gdb_wait.h"
 #include "gdb_stat.h"
+#include "exceptions.h"
 #include "remote-fileio.h"
 
 #include <fcntl.h>
index 971da6d5dda639e3a4741a66976b57ff62162fb2..29aea1cfbe2e13a1556cdfe37fbd22b98464d5e6 100644 (file)
@@ -31,6 +31,7 @@
 #include "gdbcore.h"
 #include "serial.h"
 #include "target.h"
+#include "exceptions.h"
 #include "remote-utils.h"
 #include "gdb_string.h"
 #include "gdb_stat.h"
index 0bf1c01c82af7c0e6c05f690aba6f27c51988694..3ad9c108beac1f7462b97897c4011422c33f8382 100644 (file)
@@ -30,6 +30,7 @@
 #include <fcntl.h>
 #include "frame.h"
 #include "inferior.h"
+#include "exceptions.h"
 #include "bfd.h"
 #include "symfile.h"
 #include "target.h"
index 2ab1c2f467fcd9e1213f2fe3d9dac4e509ca0659..1a6f8b55b7f627542ee676d09c7408b560f25b14 100644 (file)
@@ -30,6 +30,7 @@
 #include "inferior.h"
 #include "bfd.h"
 #include "symfile.h"
+#include "exceptions.h"
 #include "target.h"
 /*#include "terminal.h" */
 #include "gdbcmd.h"
index df360763f42edc01f5ac0ae4f7bb0f3630a04a23..29ef8ac2ca266bd204fcf9ad5b8bd287c0d7c889 100644 (file)
@@ -30,6 +30,7 @@
 #include "objfiles.h"
 #include "libbfd.h"            /* For bfd_default_set_arch_mach (FIXME) */
 #include "bfd.h"
+#include "exceptions.h"
 #include "gdb-stabs.h"
 #include "regcache.h"
 #include "arch-utils.h"
index 35480bfbbb98b4140e34dcd14d9441b779cc3eb1..df59835b7563472af4a8855ed1e52d7c5db7138c 100644 (file)
@@ -29,6 +29,7 @@
 #include "bfd.h"
 #include "symfile.h"
 #include "objfiles.h"
+#include "exceptions.h"
 #include "gdbcore.h"
 #include "command.h"
 #include "target.h"
index 06a59cb01f4eba7ac8ae829f52da0b3e3fa9f534..d37294dba1d0d0ccd06ce35c130e96fd36965f93 100644 (file)
@@ -43,6 +43,7 @@
 #include "stack.h"
 #include "gdb_assert.h"
 #include "dictionary.h"
+#include "exceptions.h"
 #include "reggroups.h"
 #include "regcache.h"
 
index 29ef92688e0f9edca326c81e18073de8b802ca4a..7a4549f1eeaed0689bfb16748b090b4ac25c5c2d 100644 (file)
@@ -48,6 +48,7 @@
 #include "symtab.h"
 #include "gdbcore.h"
 #include "objfiles.h"
+#include "exceptions.h"
 #include "gdbcmd.h"
 #include "target.h"
 #include "value.h"
index 45e2a44ecd7eed3df325f602ebcd9f305931eeb0..d3fb7ba53a63bf8136bc998d42126abc051625c5 100644 (file)
@@ -30,6 +30,7 @@
 #include "breakpoint.h"
 #include "command.h"
 #include "gdb_obstack.h"
+#include "exceptions.h"
 #include "language.h"
 #include "bcache.h"
 #include "block.h"
index c77585e3fc0029b571f8af8fa22278f060ff45c5..8a749011ac1c904fe26ff773d28d42200f93f87d 100644 (file)
@@ -30,6 +30,7 @@
 #include "value.h"
 #include "target.h"
 #include "gdbthread.h"
+#include "exceptions.h"
 #include "command.h"
 #include "gdbcmd.h"
 #include "regcache.h"
index 618dc86ecb27438bbe3eb4ebcbb7d58585e24f90..b4475214d42e37ce3752ab1592d559c1c5f58516 100644 (file)
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -30,6 +30,7 @@
 #include "cli/cli-decode.h"
 #include "symtab.h"
 #include "inferior.h"
+#include "exceptions.h"
 #include <signal.h>
 #include "target.h"
 #include "breakpoint.h"
@@ -55,8 +56,6 @@
 
 #include <sys/types.h>
 
-#include <setjmp.h>
-
 #include "event-top.h"
 #include "gdb_string.h"
 #include "gdb_stat.h"
@@ -291,289 +290,6 @@ void (*deprecated_context_hook) (int id);
    middle of the GUI.  Usually used in conjunction with a catch routine.  */
 
 void (*deprecated_error_hook) (void);
-\f
-
-/* One should use catch_errors rather than manipulating these
-   directly.  */
-#if defined(HAVE_SIGSETJMP)
-#define SIGJMP_BUF             sigjmp_buf
-#define SIGSETJMP(buf)         sigsetjmp((buf), 1)
-#define SIGLONGJMP(buf,val)    siglongjmp((buf), (val))
-#else
-#define SIGJMP_BUF             jmp_buf
-#define SIGSETJMP(buf)         setjmp(buf)
-#define SIGLONGJMP(buf,val)    longjmp((buf), (val))
-#endif
-
-/* Where to go for throw_exception().  */
-static SIGJMP_BUF *catch_return;
-
-/* Return for reason REASON to the nearest containing catch_errors().  */
-
-NORETURN void
-throw_exception (enum return_reason reason)
-{
-  quit_flag = 0;
-  immediate_quit = 0;
-
-  /* Perhaps it would be cleaner to do this via the cleanup chain (not sure
-     I can think of a reason why that is vital, though).  */
-  bpstat_clear_actions (stop_bpstat);  /* Clear queued breakpoint commands */
-
-  disable_current_display ();
-  do_cleanups (ALL_CLEANUPS);
-  if (target_can_async_p () && !target_executing)
-    do_exec_cleanups (ALL_CLEANUPS);
-  if (sync_execution)
-    do_exec_error_cleanups (ALL_CLEANUPS);
-
-  if (annotation_level > 1)
-    switch (reason)
-      {
-      case RETURN_QUIT:
-       annotate_quit ();
-       break;
-      case RETURN_ERROR:
-       annotate_error ();
-       break;
-      }
-
-  /* Jump to the containing catch_errors() call, communicating REASON
-     to that call via setjmp's return value.  Note that REASON can't
-     be zero, by definition in defs.h. */
-
-  (NORETURN void) SIGLONGJMP (*catch_return, (int) reason);
-}
-
-/* Call FUNC() with args FUNC_UIOUT and FUNC_ARGS, catching any
-   errors.  Set FUNC_CAUGHT to an ``enum return_reason'' if the
-   function is aborted (using throw_exception() or zero if the
-   function returns normally.  Set FUNC_VAL to the value returned by
-   the function or 0 if the function was aborted.
-
-   Must not be called with immediate_quit in effect (bad things might
-   happen, say we got a signal in the middle of a memcpy to quit_return).
-   This is an OK restriction; with very few exceptions immediate_quit can
-   be replaced by judicious use of QUIT.
-
-   MASK specifies what to catch; it is normally set to
-   RETURN_MASK_ALL, if for no other reason than that the code which
-   calls catch_errors might not be set up to deal with a quit which
-   isn't caught.  But if the code can deal with it, it generally
-   should be RETURN_MASK_ERROR, unless for some reason it is more
-   useful to abort only the portion of the operation inside the
-   catch_errors.  Note that quit should return to the command line
-   fairly quickly, even if some further processing is being done.  */
-
-/* MAYBE: cagney/1999-11-05: catch_errors() in conjunction with
-   error() et.al. could maintain a set of flags that indicate the the
-   current state of each of the longjmp buffers.  This would give the
-   longjmp code the chance to detect a longjmp botch (before it gets
-   to longjmperror()).  Prior to 1999-11-05 this wasn't possible as
-   code also randomly used a SET_TOP_LEVEL macro that directly
-   initialize the longjmp buffers. */
-
-/* MAYBE: cagney/1999-11-05: Should the catch_errors and cleanups code
-   be consolidated into a single file instead of being distributed
-   between utils.c and top.c? */
-
-static void
-catcher (catch_exceptions_ftype *func,
-        struct ui_out *func_uiout,
-        void *func_args,
-        int *func_val,
-        enum return_reason *func_caught,
-        char *errstring,
-        char **gdberrmsg,
-        return_mask mask)
-{
-  SIGJMP_BUF *saved_catch;
-  SIGJMP_BUF catch;
-  struct cleanup *saved_cleanup_chain;
-  char *saved_error_pre_print;
-  char *saved_quit_pre_print;
-  struct ui_out *saved_uiout;
-
-  /* Return value from SIGSETJMP(): enum return_reason if error or
-     quit caught, 0 otherwise. */
-  int caught;
-
-  /* Return value from FUNC(): Hopefully non-zero. Explicitly set to
-     zero if an error quit was caught.  */
-  int val;
-
-  /* Override error/quit messages during FUNC. */
-
-  saved_error_pre_print = error_pre_print;
-  saved_quit_pre_print = quit_pre_print;
-
-  if (mask & RETURN_MASK_ERROR)
-    error_pre_print = errstring;
-  if (mask & RETURN_MASK_QUIT)
-    quit_pre_print = errstring;
-
-  /* Override the global ``struct ui_out'' builder.  */
-
-  saved_uiout = uiout;
-  uiout = func_uiout;
-
-  /* Prevent error/quit during FUNC from calling cleanups established
-     prior to here. */
-
-  saved_cleanup_chain = save_cleanups ();
-
-  /* Call FUNC, catching error/quit events. */
-
-  saved_catch = catch_return;
-  catch_return = &catch;
-  caught = SIGSETJMP (catch);
-  if (!caught)
-    val = (*func) (func_uiout, func_args);
-  else
-    {
-      val = 0;
-      /* If caller wants a copy of the low-level error message, make one.  
-         This is used in the case of a silent error whereby the caller
-         may optionally want to issue the message.  */
-      if (gdberrmsg)
-       *gdberrmsg = error_last_message ();
-    }
-  catch_return = saved_catch;
-
-  /* FIXME: cagney/1999-11-05: A correct FUNC implementation will
-     clean things up (restoring the cleanup chain) to the state they
-     were just prior to the call.  Unfortunately, many FUNC's are not
-     that well behaved.  This could be fixed by adding either a
-     do_cleanups call (to cover the problem) or an assertion check to
-     detect bad FUNCs code. */
-
-  /* Restore the cleanup chain, the error/quit messages, and the uiout
-     builder, to their original states. */
-
-  restore_cleanups (saved_cleanup_chain);
-
-  uiout = saved_uiout;
-
-  if (mask & RETURN_MASK_QUIT)
-    quit_pre_print = saved_quit_pre_print;
-  if (mask & RETURN_MASK_ERROR)
-    error_pre_print = saved_error_pre_print;
-
-  /* Return normally if no error/quit event occurred or this catcher
-     can handle this exception.  The caller analyses the func return
-     values.  */
-
-  if (!caught || (mask & RETURN_MASK (caught)))
-    {
-      *func_val = val;
-      *func_caught = caught;
-      return;
-    }
-
-  /* The caller didn't request that the event be caught, relay the
-     event to the next containing catch_errors(). */
-
-  throw_exception (caught);
-}
-
-int
-catch_exceptions (struct ui_out *uiout,
-                 catch_exceptions_ftype *func,
-                 void *func_args,
-                 char *errstring,
-                 return_mask mask)
-{
-  int val;
-  enum return_reason caught;
-  catcher (func, uiout, func_args, &val, &caught, errstring, NULL, mask);
-  gdb_assert (val >= 0);
-  gdb_assert (caught <= 0);
-  if (caught < 0)
-    return caught;
-  return val;
-}
-
-int
-catch_exceptions_with_msg (struct ui_out *uiout,
-                          catch_exceptions_ftype *func,
-                          void *func_args,
-                          char *errstring,
-                          char **gdberrmsg,
-                          return_mask mask)
-{
-  int val;
-  enum return_reason caught;
-  catcher (func, uiout, func_args, &val, &caught, errstring, gdberrmsg, mask);
-  gdb_assert (val >= 0);
-  gdb_assert (caught <= 0);
-  if (caught < 0)
-    return caught;
-  return val;
-}
-
-struct catch_errors_args
-{
-  catch_errors_ftype *func;
-  void *func_args;
-};
-
-static int
-do_catch_errors (struct ui_out *uiout, void *data)
-{
-  struct catch_errors_args *args = data;
-  return args->func (args->func_args);
-}
-
-int
-catch_errors (catch_errors_ftype *func, void *func_args, char *errstring,
-             return_mask mask)
-{
-  int val;
-  enum return_reason caught;
-  struct catch_errors_args args;
-  args.func = func;
-  args.func_args = func_args;
-  catcher (do_catch_errors, uiout, &args, &val, &caught, errstring, 
-          NULL, mask);
-  if (caught != 0)
-    return 0;
-  return val;
-}
-
-struct captured_command_args
-  {
-    catch_command_errors_ftype *command;
-    char *arg;
-    int from_tty;
-  };
-
-static int
-do_captured_command (void *data)
-{
-  struct captured_command_args *context = data;
-  context->command (context->arg, context->from_tty);
-  /* FIXME: cagney/1999-11-07: Technically this do_cleanups() call
-     isn't needed.  Instead an assertion check could be made that
-     simply confirmed that the called function correctly cleaned up
-     after itself.  Unfortunately, old code (prior to 1999-11-04) in
-     main.c was calling SET_TOP_LEVEL(), calling the command function,
-     and then *always* calling do_cleanups().  For the moment we
-     remain ``bug compatible'' with that old code..  */
-  do_cleanups (ALL_CLEANUPS);
-  return 1;
-}
-
-int
-catch_command_errors (catch_command_errors_ftype * command,
-                     char *arg, int from_tty, return_mask mask)
-{
-  struct captured_command_args args;
-  args.command = command;
-  args.arg = arg;
-  args.from_tty = from_tty;
-  return catch_errors (do_captured_command, &args, "", mask);
-}
-
 
 /* Handler for SIGHUP.  */
 
index 1e1d64323213ebcd3a4518b33beda780f137e33f..b5c3b4019629927b9a56de969fd1432fe71b0101 100644 (file)
@@ -31,6 +31,7 @@
 #include "tui/tui-win.h"
 #include "tui/tui.h"
 #include "tui/tui-io.h"
+#include "exceptions.h"
 
 /* Set to 1 when the TUI mode must be activated when we first start gdb.  */
 static int tui_start_enabled = 0;
index 673dc331e9fae4793544434c0dc33d43f08aa333..17c2e5e6bf37cab5ddcd0383202463f0d5c6ade3 100644 (file)
@@ -26,6 +26,7 @@
 #include <ctype.h>
 #include "gdb_string.h"
 #include "event-top.h"
+#include "exceptions.h"
 
 #ifdef TUI
 #include "tui/tui.h"           /* For tui_get_command_dimension.   */
index 9845d46192d713e8e82390e34c1b69cea9be62a3..62a3e7cda1acb68695b8c2500151c3a4d67f4311 100644 (file)
@@ -30,6 +30,7 @@
 #include "frame.h"             /* required by inferior.h */
 #include "inferior.h"
 #include "target.h"
+#include "exceptions.h"
 #include "gdbcore.h"
 #include "command.h"
 #include "completer.h"
index 0397bd45c013fec2e2e7cc55aee4dd66e51f992b..34f10dc3857e3135c59caa596ce425be4ec082e3 100644 (file)
@@ -34,6 +34,7 @@
 #include "frame.h"             /* required by inferior.h */
 #include "inferior.h"
 #include "target.h"
+#include "exceptions.h"
 #include "gdbcore.h"
 #include "command.h"
 #include <signal.h>
index 9845d46192d713e8e82390e34c1b69cea9be62a3..62a3e7cda1acb68695b8c2500151c3a4d67f4311 100644 (file)
@@ -30,6 +30,7 @@
 #include "frame.h"             /* required by inferior.h */
 #include "inferior.h"
 #include "target.h"
+#include "exceptions.h"
 #include "gdbcore.h"
 #include "command.h"
 #include "completer.h"
index 6c9c6d60cefe378d1c05710db66ffa243c328cbe..0e4714e5d070fb45be802d512bd4768d09b5452e 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "defs.h"
 #include "value.h"
+#include "exceptions.h"
 #include "wrapper.h"
 
 /* Use this struct to pass arguments to wrapper routines. We assume