From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15798 invoked by alias); 14 Mar 2008 09:12:45 -0000 Received: (qmail 15786 invoked by uid 22791); 14 Mar 2008 09:12:44 -0000 X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (65.74.133.4) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 14 Mar 2008 09:12:27 +0000 Received: (qmail 31253 invoked from network); 14 Mar 2008 09:12:24 -0000 Received: from unknown (HELO localhost) (vladimir@127.0.0.2) by mail.codesourcery.com with ESMTPA; 14 Mar 2008 09:12:24 -0000 From: Vladimir Prus Date: Fri, 14 Mar 2008 09:12:00 -0000 Subject: [RFA] Remove ignoring leading exec events code. To: gdb-patches@sources.redhat.com X-TUID: 0cb6cd30039ffca8 X-Length: 6736 X-UID: 144 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200803141212.31845.vladimir@codesourcery.com> Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-03/txt/msg00168.txt.bz2 GDB has some code to handle a case where target reports more that one exec event when execing. However, it turns out that all target say that exactly one event is reported, and therefore that code is of no use. The comments for that code is dated 2002-12-05 and mentions HP-UX, which I presume had this bug fixed. Even if some new target appears with the same bug, as the comment say, it's better to handle this in target_wait, not in the generic infrun code. OK? - Volodya * fork-child.c (startup_inferior): Do not set inferior_ignoring_leading_exec_events. * inf-child.c (inf_child_reported_exec_events_per_exec_call): Remove. (inf_child_target): Do not set to_reported_exec_events_per_exec_call. * infrun.c (inferior_ignoring_leading_exec_events): Remove. (handle_inferior_event): Remove code for ignoring leading exec events. * target.c (update_current_target): Do not inherit, or default, to_reported_exec_events_per_exec_call. (debug_to_reported_exec_events_per_exec_call): Remove. (setup_target_debug): Do not set to_reported_exec_events_per_exec_call. * target.h (target_reported_exec_events_per_exec_call): Remove. (struct target): Remove the to_reported_exec_events_per_exec_call field. --- gdb/fork-child.c | 3 --- gdb/inf-child.c | 10 ---------- gdb/infrun.c | 19 ------------------- gdb/target.c | 19 ------------------- gdb/target.h | 7 ------- 5 files changed, 0 insertions(+), 58 deletions(-) diff --git a/gdb/fork-child.c b/gdb/fork-child.c index c8e7683..7aff110 100644 --- a/gdb/fork-child.c +++ b/gdb/fork-child.c @@ -426,9 +426,6 @@ startup_inferior (int ntraps) init_wait_for_inferior (); - inferior_ignoring_leading_exec_events = - target_reported_exec_events_per_exec_call () - 1; - while (1) { /* Make wait_for_inferior be quiet. */ diff --git a/gdb/inf-child.c b/gdb/inf-child.c index ae11871..8da25f4 100644 --- a/gdb/inf-child.c +++ b/gdb/inf-child.c @@ -145,14 +145,6 @@ inf_child_remove_exec_catchpoint (int pid) } static int -inf_child_reported_exec_events_per_exec_call (void) -{ - /* This version of Unix doesn't support notification of exec - events. */ - return 1; -} - -static int inf_child_can_run (void) { return 1; @@ -195,8 +187,6 @@ inf_child_target (void) t->to_follow_fork = inf_child_follow_fork; t->to_insert_exec_catchpoint = inf_child_insert_exec_catchpoint; t->to_remove_exec_catchpoint = inf_child_remove_exec_catchpoint; - t->to_reported_exec_events_per_exec_call = - inf_child_reported_exec_events_per_exec_call; t->to_can_run = inf_child_can_run; t->to_pid_to_exec_file = inf_child_pid_to_exec_file; t->to_stratum = process_stratum; diff --git a/gdb/infrun.c b/gdb/infrun.c index f51a7ad..1ba3e07 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -82,8 +82,6 @@ static int prepare_to_proceed (int); void _initialize_infrun (void); -int inferior_ignoring_leading_exec_events = 0; - /* When set, stop the 'step' command if we enter a function which has no line number information. The normal behavior is that we step over such function. */ @@ -1493,23 +1491,6 @@ handle_inferior_event (struct execution_control_state *ecs) fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_EXECD\n"); stop_signal = TARGET_SIGNAL_TRAP; - /* NOTE drow/2002-12-05: This code should be pushed down into the - target_wait function. Until then following vfork on HP/UX 10.20 - is probably broken by this. Of course, it's broken anyway. */ - /* Is this a target which reports multiple exec events per actual - call to exec()? (HP-UX using ptrace does, for example.) If so, - ignore all but the last one. Just resume the exec'r, and wait - for the next exec event. */ - if (inferior_ignoring_leading_exec_events) - { - inferior_ignoring_leading_exec_events--; - target_resume (ecs->ptid, 0, TARGET_SIGNAL_0); - prepare_to_wait (ecs); - return; - } - inferior_ignoring_leading_exec_events = - target_reported_exec_events_per_exec_call () - 1; - pending_follow.execd_pathname = savestring (ecs->ws.value.execd_pathname, strlen (ecs->ws.value.execd_pathname)); diff --git a/gdb/target.c b/gdb/target.c index 9d2f1fd..4168c05 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -439,7 +439,6 @@ update_current_target (void) /* Do not inherit to_follow_fork. */ INHERIT (to_insert_exec_catchpoint, t); INHERIT (to_remove_exec_catchpoint, t); - INHERIT (to_reported_exec_events_per_exec_call, t); INHERIT (to_has_exited, t); INHERIT (to_mourn_inferior, t); INHERIT (to_can_run, t); @@ -599,9 +598,6 @@ update_current_target (void) de_fault (to_remove_exec_catchpoint, (int (*) (int)) tcomplain); - de_fault (to_reported_exec_events_per_exec_call, - (int (*) (void)) - return_one); de_fault (to_has_exited, (int (*) (int, int, int *)) return_zero); @@ -2636,20 +2632,6 @@ debug_to_remove_exec_catchpoint (int pid) } static int -debug_to_reported_exec_events_per_exec_call (void) -{ - int reported_exec_events; - - reported_exec_events = debug_target.to_reported_exec_events_per_exec_call (); - - fprintf_unfiltered (gdb_stdlog, - "target_reported_exec_events_per_exec_call () = %d\n", - reported_exec_events); - - return reported_exec_events; -} - -static int debug_to_has_exited (int pid, int wait_status, int *exit_status) { int has_exited; @@ -2786,7 +2768,6 @@ setup_target_debug (void) current_target.to_remove_vfork_catchpoint = debug_to_remove_vfork_catchpoint; current_target.to_insert_exec_catchpoint = debug_to_insert_exec_catchpoint; current_target.to_remove_exec_catchpoint = debug_to_remove_exec_catchpoint; - current_target.to_reported_exec_events_per_exec_call = debug_to_reported_exec_events_per_exec_call; current_target.to_has_exited = debug_to_has_exited; current_target.to_mourn_inferior = debug_to_mourn_inferior; current_target.to_can_run = debug_to_can_run; diff --git a/gdb/target.h b/gdb/target.h index 9a34244..5a5acbe 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -841,13 +841,6 @@ int target_follow_fork (int follow_child); #define target_remove_exec_catchpoint(pid) \ (*current_target.to_remove_exec_catchpoint) (pid) -/* Returns the number of exec events that are reported when a process - invokes a flavor of the exec() system call on this target, if exec - events are being reported. */ - -#define target_reported_exec_events_per_exec_call() \ - (*current_target.to_reported_exec_events_per_exec_call) () - /* Returns TRUE if PID has exited. And, also sets EXIT_STATUS to the exit code of PID, if any. */ -- 1.5.3.5