Here goes the architecture-independent part of the patch. Regards, -- Sérgio Durigan Júnior Linux on Power Toolchain - Software Engineer Linux Technology Center - LTC IBM Brazil gdb/ChangeLog: 2009-01-25 Sergio Durigan Junior * breakpoint.c (clear_syscall_catchpoints_info): New function. (set_raw_breakpoint_without_location): Setting the parameters for the catch syscall feature. (any_syscall_count, syscall_counts, syscalls_size, total_syscalls_count): New variables to keep track of requested syscall catchpoints. (insert_catch_syscall): New. (remove_catch_syscall): New. (breakpoint_hit_catch_syscall): New. (print_it_catch_syscall): New. (print_one_catch_syscall): New. (print_mention_catch_syscall): New. (syscall_catchpoint_p): New. (create_catchpoint_without_mention): New. (create_catchpoint): Modified in order to use create_catchpoint_without_mention. (create_syscall_event_catchpoint): New. (clean_up_filters): New. (catch_syscall_split_args): New. (catch_syscall_command_1): New. (delete_breakpoint): Add cleanup for catch syscall. (is_syscall_catchpoint_enabled): New. (catch_syscall_enabled): New. (catching_syscall_number): New. (catch_syscall_completer): New completer function. (add_catch_command): Add the completer function for catchpoints. * breakpoint.h (syscall_filter): New. (struct breakpoint): Add field 'syscall_number' (used to know which syscall triggered the catchpoint) and 'syscalls_to_be_caught' (used to know which syscalls we are trying to catch). (clear_syscall_catchpoints_info): New. (catch_syscall_enabled): New. (catching_syscall_number): New. * defs.h (gdb_datadir): New variable. * gdbarch.c: Regenerated. * gdbarch.h: Regenerated. * gdbarch.sh: Add syscall catchpoint functions. (get_syscall_number): New. (get_syscall_by_number): new. (get_syscall_by_name): New. (get_syscalls_names): New. (xml_syscall_filename): New variable. * inf-child.c (inf_child_set_syscall_catchpoint): New. (inf_child_target): Assign default values to target_ops. * inf-ptrace.c (inf_ptrace_resume): Select the proper request to be made for ptrace() considering if we are catching syscalls or not. * infcmd.c (run_command_1): Clean syscall catchpoint info on every run. * infrun.c (resume): Add syscall catchpoint and entry breakpoint. (deal_with_syscall_event): New. (handle_inferior_event): Add syscall entry/return events. Also, add entry breakpoint event. (inferior_has_called_syscall): New. * main.c: Add gdb_datadir variable to store the current GDB datadir. (captured_main): Add the GDB datadir relocatable handler. * linux-nat.c (linux_child_post_attach): Calling linux_enable_tracesysgood. (linux_child_post_startup_inferior): Likewise. (linux_target_install_ops): Setting the default methods. * maint.c: Create the "maintenance set gdb_datadir" command. * target.c (update_current_target): Update/copy functions related to syscall catchpoint and entry breakpoint. (debug_to_wait): Add syscall catchpoint entry/return events. * target.h (struct target_waitstatus): Add syscall number. (struct syscall): New struct to hold information about syscalls in the system. (struct target_ops): Add ops for syscall catchpoint and entry breakpoint. (inferior_has_called_syscall): New. (target_passed_by_entrypoint): New. (target_set_syscall_catchpoint): New. (target_enable_tracesysgood): New.