1 /* Target-struct-independent code to start (run) and stop an inferior 2 process. 3 4 Copyright (C) 1986-2017 Free Software Foundation, Inc. 5 6 This file is part of GDB. 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 3 of the License, or 11 (at your option) any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 20 21 #include "defs.h" 22 #include "infrun.h" 23 #include <ctype.h> 24 #include "symtab.h" 25 #include "frame.h" 26 #include "inferior.h" 27 #include "breakpoint.h" 28 #include "gdb_wait.h" 29 #include "gdbcore.h" 30 #include "gdbcmd.h" 31 #include "cli/cli-script.h" 32 #include "target.h" 33 #include "gdbthread.h" 34 #include "annotate.h" 35 #include "symfile.h" 36 #include "top.h" 37 #include <signal.h> 38 #include "inf-loop.h" 39 #include "regcache.h" 40 #include "value.h" 41 #include "observer.h" 42 #include "language.h" 43 #include "solib.h" 44 #include "main.h" 45 #include "dictionary.h" 46 #include "block.h" 47 #include "mi/mi-common.h" 48 #include "event-top.h" 49 #include "record.h" 50 #include "record-full.h" 51 #include "inline-frame.h" 52 #include "jit.h" 53 #include "tracepoint.h" 54 #include "continuations.h" 55 #include "interps.h" 56 #include "skip.h" 57 #include "probe.h" 58 #include "objfiles.h" 59 #include "completer.h" 60 #include "target-descriptions.h" 61 #include "target-dcache.h" 62 #include "terminal.h" 63 #include "solist.h" 64 #include "event-loop.h" 65 #include "thread-fsm.h" 66 #include "common/enum-flags.h" 67 #include "arch-utils.h" 68 69 /* Prototypes for local functions */ 70 71 static void signals_info (char *, int); 72 73 static void handle_command (char *, int); 74 75 static void sig_print_info (enum gdb_signal); 76 77 static void sig_print_header (void); 78 79 static void resume_cleanups (void *); 80 81 static int hook_stop_stub (void *); 82 83 static int restore_selected_frame (void *); 84 85 static int follow_fork (void); 86 87 static int follow_fork_inferior (int follow_child, int detach_fork); 88 89 static void follow_inferior_reset_breakpoints (void); 90 91 static void set_schedlock_func (char *args, int from_tty, 92 struct cmd_list_element *c); 93 94 static int currently_stepping (struct thread_info *tp); 95 96 void _initialize_infrun (void); 97 98 void nullify_last_target_wait_ptid (void); 99 100 static void insert_hp_step_resume_breakpoint_at_frame (struct frame_info *); 101 102 static void insert_step_resume_breakpoint_at_caller (struct frame_info *); 103 104 static void insert_longjmp_resume_breakpoint (struct gdbarch *, CORE_ADDR); 105 106 static int maybe_software_singlestep (struct gdbarch *gdbarch, CORE_ADDR pc); 107 108 /* Asynchronous signal handler registered as event loop source for 109 when we have pending events ready to be passed to the core. */ 110 static struct async_event_handler *infrun_async_inferior_event_token; 111 112 /* Stores whether infrun_async was previously enabled or disabled. 113 Starts off as -1, indicating "never enabled/disabled". */ 114 static int infrun_is_async = -1; 115 116 /* See infrun.h. */ 117 118 void 119 infrun_async (int enable) 120 { 121 if (infrun_is_async != enable) 122 { 123 infrun_is_async = enable; 124 125 if (debug_infrun) 126 fprintf_unfiltered (gdb_stdlog, 127 "infrun: infrun_async(%d)\n", 128 enable); 129 130 if (enable) 131 mark_async_event_handler (infrun_async_inferior_event_token); 132 else 133 clear_async_event_handler (infrun_async_inferior_event_token); 134 } 135 } 136 137 /* See infrun.h. */ 138 139 void 140 mark_infrun_async_event_handler (void) 141 { 142 mark_async_event_handler (infrun_async_inferior_event_token); 143 } 144 145 /* When set, stop the 'step' command if we enter a function which has 146 no line number information. The normal behavior is that we step 147 over such function. */ 148 int step_stop_if_no_debug = 0; 149 static void 150 show_step_stop_if_no_debug (struct ui_file *file, int from_tty, 151 struct cmd_list_element *c, const char *value) 152 { 153 fprintf_filtered (file, _("Mode of the step operation is %s.\n"), value); 154 } 155 156 /* proceed and normal_stop use this to notify the user when the 157 inferior stopped in a different thread than it had been running 158 in. */ 159 160 static ptid_t previous_inferior_ptid; 161 162 /* If set (default for legacy reasons), when following a fork, GDB 163 will detach from one of the fork branches, child or parent. 164 Exactly which branch is detached depends on 'set follow-fork-mode' 165 setting. */ 166 167 static int detach_fork = 1; 168 169 int debug_displaced = 0; 170 static void 171 show_debug_displaced (struct ui_file *file, int from_tty, 172 struct cmd_list_element *c, const char *value) 173 { 174 fprintf_filtered (file, _("Displace stepping debugging is %s.\n"), value); 175 } 176 177 unsigned int debug_infrun = 0; 178 static void 179 show_debug_infrun (struct ui_file *file, int from_tty, 180 struct cmd_list_element *c, const char *value) 181 { 182 fprintf_filtered (file, _("Inferior debugging is %s.\n"), value); 183 } 184 185 186 /* Support for disabling address space randomization. */ 187 188 int disable_randomization = 1; 189 190 static void 191 show_disable_randomization (struct ui_file *file, int from_tty, 192 struct cmd_list_element *c, const char *value) 193 { 194 if (target_supports_disable_randomization ()) 195 fprintf_filtered (file, 196 _("Disabling randomization of debuggee's " 197 "virtual address space is %s.\n"), 198 value); 199 else 200 fputs_filtered (_("Disabling randomization of debuggee's " 201 "virtual address space is unsupported on\n" 202 "this platform.\n"), file); 203 } 204 205 static void 206 set_disable_randomization (char *args, int from_tty, 207 struct cmd_list_element *c) 208 { 209 if (!target_supports_disable_randomization ()) 210 error (_("Disabling randomization of debuggee's " 211 "virtual address space is unsupported on\n" 212 "this platform.")); 213 } 214 215 /* User interface for non-stop mode. */ 216 217 int non_stop = 0; 218 static int non_stop_1 = 0; 219 220 static void 221 set_non_stop (char *args, int from_tty, 222 struct cmd_list_element *c) 223 { 224 if (target_has_execution) 225 { 226 non_stop_1 = non_stop; 227 error (_("Cannot change this setting while the inferior is running.")); 228 } 229 230 non_stop = non_stop_1; 231 } 232 233 static void 234 show_non_stop (struct ui_file *file, int from_tty, 235 struct cmd_list_element *c, const char *value) 236 { 237 fprintf_filtered (file, 238 _("Controlling the inferior in non-stop mode is %s.\n"), 239 value); 240 } 241 242 /* "Observer mode" is somewhat like a more extreme version of 243 non-stop, in which all GDB operations that might affect the 244 target's execution have been disabled. */ 245 246 int observer_mode = 0; 247 static int observer_mode_1 = 0; 248 249 static void 250 set_observer_mode (char *args, int from_tty, 251 struct cmd_list_element *c) 252 { 253 if (target_has_execution) 254 { 255 observer_mode_1 = observer_mode; 256 error (_("Cannot change this setting while the inferior is running.")); 257 } 258 259 observer_mode = observer_mode_1; 260 261 may_write_registers = !observer_mode; 262 may_write_memory = !observer_mode; 263 may_insert_breakpoints = !observer_mode; 264 may_insert_tracepoints = !observer_mode; 265 /* We can insert fast tracepoints in or out of observer mode, 266 but enable them if we're going into this mode. */ 267 if (observer_mode) 268 may_insert_fast_tracepoints = 1; 269 may_stop = !observer_mode; 270 update_target_permissions (); 271 272 /* Going *into* observer mode we must force non-stop, then 273 going out we leave it that way. */ 274 if (observer_mode) 275 { 276 pagination_enabled = 0; 277 non_stop = non_stop_1 = 1; 278 } 279 280 if (from_tty) 281 printf_filtered (_("Observer mode is now %s.\n"), 282 (observer_mode ? "on" : "off")); 283 } 284 285 static void 286 show_observer_mode (struct ui_file *file, int from_tty, 287 struct cmd_list_element *c, const char *value) 288 { 289 fprintf_filtered (file, _("Observer mode is %s.\n"), value); 290 } 291 292 /* This updates the value of observer mode based on changes in 293 permissions. Note that we are deliberately ignoring the values of 294 may-write-registers and may-write-memory, since the user may have 295 reason to enable these during a session, for instance to turn on a 296 debugging-related global. */ 297 298 void 299 update_observer_mode (void) 300 { 301 int newval; 302 303 newval = (!may_insert_breakpoints 304 && !may_insert_tracepoints 305 && may_insert_fast_tracepoints 306 && !may_stop 307 && non_stop); 308 309 /* Let the user know if things change. */ 310 if (newval != observer_mode) 311 printf_filtered (_("Observer mode is now %s.\n"), 312 (newval ? "on" : "off")); 313 314 observer_mode = observer_mode_1 = newval; 315 } 316 317 /* Tables of how to react to signals; the user sets them. */ 318 319 static unsigned char *signal_stop; 320 static unsigned char *signal_print; 321 static unsigned char *signal_program; 322 323 /* Table of signals that are registered with "catch signal". A 324 non-zero entry indicates that the signal is caught by some "catch 325 signal" command. This has size GDB_SIGNAL_LAST, to accommodate all 326 signals. */ 327 static unsigned char *signal_catch; 328 329 /* Table of signals that the target may silently handle. 330 This is automatically determined from the flags above, 331 and simply cached here. */ 332 static unsigned char *signal_pass; 333 334 #define SET_SIGS(nsigs,sigs,flags) \ 335 do { \ 336 int signum = (nsigs); \ 337 while (signum-- > 0) \ 338 if ((sigs)[signum]) \ 339 (flags)[signum] = 1; \ 340 } while (0) 341 342 #define UNSET_SIGS(nsigs,sigs,flags) \ 343 do { \ 344 int signum = (nsigs); \ 345 while (signum-- > 0) \ 346 if ((sigs)[signum]) \ 347 (flags)[signum] = 0; \ 348 } while (0) 349 350 /* Update the target's copy of SIGNAL_PROGRAM. The sole purpose of 351 this function is to avoid exporting `signal_program'. */ 352 353 void 354 update_signals_program_target (void) 355 { 356 target_program_signals ((int) GDB_SIGNAL_LAST, signal_program); 357 } 358 359 /* Value to pass to target_resume() to cause all threads to resume. */ 360 361 #define RESUME_ALL minus_one_ptid 362 363 /* Command list pointer for the "stop" placeholder. */ 364 365 static struct cmd_list_element *stop_command; 366 367 /* Nonzero if we want to give control to the user when we're notified 368 of shared library events by the dynamic linker. */ 369 int stop_on_solib_events; 370 371 /* Enable or disable optional shared library event breakpoints 372 as appropriate when the above flag is changed. */ 373 374 static void 375 set_stop_on_solib_events (char *args, int from_tty, struct cmd_list_element *c) 376 { 377 update_solib_breakpoints (); 378 } 379 380 static void 381 show_stop_on_solib_events (struct ui_file *file, int from_tty, 382 struct cmd_list_element *c, const char *value) 383 { 384 fprintf_filtered (file, _("Stopping for shared library events is %s.\n"), 385 value); 386 } 387 388 /* Nonzero after stop if current stack frame should be printed. */ 389 390 static int stop_print_frame; 391 392 /* This is a cached copy of the pid/waitstatus of the last event 393 returned by target_wait()/deprecated_target_wait_hook(). This 394 information is returned by get_last_target_status(). */ 395 static ptid_t target_last_wait_ptid; 396 static struct target_waitstatus target_last_waitstatus; 397 398 static void context_switch (ptid_t ptid); 399 400 void init_thread_stepping_state (struct thread_info *tss); 401 402 static const char follow_fork_mode_child[] = "child"; 403 static const char follow_fork_mode_parent[] = "parent"; 404 405 static const char *const follow_fork_mode_kind_names[] = { 406 follow_fork_mode_child, 407 follow_fork_mode_parent, 408 NULL 409 }; 410 411 static const char *follow_fork_mode_string = follow_fork_mode_parent; 412 static void 413 show_follow_fork_mode_string (struct ui_file *file, int from_tty, 414 struct cmd_list_element *c, const char *value) 415 { 416 fprintf_filtered (file, 417 _("Debugger response to a program " 418 "call of fork or vfork is \"%s\".\n"), 419 value); 420 } 421 422 423 /* Handle changes to the inferior list based on the type of fork, 424 which process is being followed, and whether the other process 425 should be detached. On entry inferior_ptid must be the ptid of 426 the fork parent. At return inferior_ptid is the ptid of the 427 followed inferior. */ 428 429 static int 430 follow_fork_inferior (int follow_child, int detach_fork) 431 { 432 int has_vforked; 433 ptid_t parent_ptid, child_ptid; 434 435 has_vforked = (inferior_thread ()->pending_follow.kind 436 == TARGET_WAITKIND_VFORKED); 437 parent_ptid = inferior_ptid; 438 child_ptid = inferior_thread ()->pending_follow.value.related_pid; 439 440 if (has_vforked 441 && !non_stop /* Non-stop always resumes both branches. */ 442 && current_ui->prompt_state == PROMPT_BLOCKED 443 && !(follow_child || detach_fork || sched_multi)) 444 { 445 /* The parent stays blocked inside the vfork syscall until the 446 child execs or exits. If we don't let the child run, then 447 the parent stays blocked. If we're telling the parent to run 448 in the foreground, the user will not be able to ctrl-c to get 449 back the terminal, effectively hanging the debug session. */ 450 fprintf_filtered (gdb_stderr, _("\ 451 Can not resume the parent process over vfork in the foreground while\n\ 452 holding the child stopped. Try \"set detach-on-fork\" or \ 453 \"set schedule-multiple\".\n")); 454 /* FIXME output string > 80 columns. */ 455 return 1; 456 } 457 458 if (!follow_child) 459 { 460 /* Detach new forked process? */ 461 if (detach_fork) 462 { 463 /* Before detaching from the child, remove all breakpoints 464 from it. If we forked, then this has already been taken 465 care of by infrun.c. If we vforked however, any 466 breakpoint inserted in the parent is visible in the 467 child, even those added while stopped in a vfork 468 catchpoint. This will remove the breakpoints from the 469 parent also, but they'll be reinserted below. */ 470 if (has_vforked) 471 { 472 /* Keep breakpoints list in sync. */ 473 remove_breakpoints_pid (ptid_get_pid (inferior_ptid)); 474 } 475 476 if (info_verbose || debug_infrun) 477 { 478 /* Ensure that we have a process ptid. */ 479 ptid_t process_ptid = pid_to_ptid (ptid_get_pid (child_ptid)); 480 481 target_terminal_ours_for_output (); 482 fprintf_filtered (gdb_stdlog, 483 _("Detaching after %s from child %s.\n"), 484 has_vforked ? "vfork" : "fork", 485 target_pid_to_str (process_ptid)); 486 } 487 } 488 else 489 { 490 struct inferior *parent_inf, *child_inf; 491 struct cleanup *old_chain; 492 493 /* Add process to GDB's tables. */ 494 child_inf = add_inferior (ptid_get_pid (child_ptid)); 495 496 parent_inf = current_inferior (); 497 child_inf->attach_flag = parent_inf->attach_flag; 498 copy_terminal_info (child_inf, parent_inf); 499 child_inf->gdbarch = parent_inf->gdbarch; 500 copy_inferior_target_desc_info (child_inf, parent_inf); 501 502 old_chain = save_current_space_and_thread (); 503 504 inferior_ptid = child_ptid; 505 add_thread (inferior_ptid); 506 set_current_inferior (child_inf); 507 child_inf->symfile_flags = SYMFILE_NO_READ; 508 509 /* If this is a vfork child, then the address-space is 510 shared with the parent. */ 511 if (has_vforked) 512 { 513 child_inf->pspace = parent_inf->pspace; 514 child_inf->aspace = parent_inf->aspace; 515 516 /* The parent will be frozen until the child is done 517 with the shared region. Keep track of the 518 parent. */ 519 child_inf->vfork_parent = parent_inf; 520 child_inf->pending_detach = 0; 521 parent_inf->vfork_child = child_inf; 522 parent_inf->pending_detach = 0; 523 } 524 else 525 { 526 child_inf->aspace = new_address_space (); 527 child_inf->pspace = add_program_space (child_inf->aspace); 528 child_inf->removable = 1; 529 set_current_program_space (child_inf->pspace); 530 clone_program_space (child_inf->pspace, parent_inf->pspace); 531 532 /* Let the shared library layer (e.g., solib-svr4) learn 533 about this new process, relocate the cloned exec, pull 534 in shared libraries, and install the solib event 535 breakpoint. If a "cloned-VM" event was propagated 536 better throughout the core, this wouldn't be 537 required. */ 538 solib_create_inferior_hook (0); 539 } 540 541 do_cleanups (old_chain); 542 } 543 544 if (has_vforked) 545 { 546 struct inferior *parent_inf; 547 548 parent_inf = current_inferior (); 549 550 /* If we detached from the child, then we have to be careful 551 to not insert breakpoints in the parent until the child 552 is done with the shared memory region. However, if we're 553 staying attached to the child, then we can and should 554 insert breakpoints, so that we can debug it. A 555 subsequent child exec or exit is enough to know when does 556 the child stops using the parent's address space. */ 557 parent_inf->waiting_for_vfork_done = detach_fork; 558 parent_inf->pspace->breakpoints_not_allowed = detach_fork; 559 } 560 } 561 else 562 { 563 /* Follow the child. */ 564 struct inferior *parent_inf, *child_inf; 565 struct program_space *parent_pspace; 566 567 if (info_verbose || debug_infrun) 568 { 569 target_terminal_ours_for_output (); 570 fprintf_filtered (gdb_stdlog, 571 _("Attaching after %s %s to child %s.\n"), 572 target_pid_to_str (parent_ptid), 573 has_vforked ? "vfork" : "fork", 574 target_pid_to_str (child_ptid)); 575 } 576 577 /* Add the new inferior first, so that the target_detach below 578 doesn't unpush the target. */ 579 580 child_inf = add_inferior (ptid_get_pid (child_ptid)); 581 582 parent_inf = current_inferior (); 583 child_inf->attach_flag = parent_inf->attach_flag; 584 copy_terminal_info (child_inf, parent_inf); 585 child_inf->gdbarch = parent_inf->gdbarch; 586 copy_inferior_target_desc_info (child_inf, parent_inf); 587 588 parent_pspace = parent_inf->pspace; 589 590 /* If we're vforking, we want to hold on to the parent until the 591 child exits or execs. At child exec or exit time we can 592 remove the old breakpoints from the parent and detach or 593 resume debugging it. Otherwise, detach the parent now; we'll 594 want to reuse it's program/address spaces, but we can't set 595 them to the child before removing breakpoints from the 596 parent, otherwise, the breakpoints module could decide to 597 remove breakpoints from the wrong process (since they'd be 598 assigned to the same address space). */ 599 600 if (has_vforked) 601 { 602 gdb_assert (child_inf->vfork_parent == NULL); 603 gdb_assert (parent_inf->vfork_child == NULL); 604 child_inf->vfork_parent = parent_inf; 605 child_inf->pending_detach = 0; 606 parent_inf->vfork_child = child_inf; 607 parent_inf->pending_detach = detach_fork; 608 parent_inf->waiting_for_vfork_done = 0; 609 } 610 else if (detach_fork) 611 { 612 if (info_verbose || debug_infrun) 613 { 614 /* Ensure that we have a process ptid. */ 615 ptid_t process_ptid = pid_to_ptid (ptid_get_pid (child_ptid)); 616 617 target_terminal_ours_for_output (); 618 fprintf_filtered (gdb_stdlog, 619 _("Detaching after fork from " 620 "child %s.\n"), 621 target_pid_to_str (process_ptid)); 622 } 623 624 target_detach (NULL, 0); 625 } 626 627 /* Note that the detach above makes PARENT_INF dangling. */ 628 629 /* Add the child thread to the appropriate lists, and switch to 630 this new thread, before cloning the program space, and 631 informing the solib layer about this new process. */ 632 633 inferior_ptid = child_ptid; 634 add_thread (inferior_ptid); 635 set_current_inferior (child_inf); 636 637 /* If this is a vfork child, then the address-space is shared 638 with the parent. If we detached from the parent, then we can 639 reuse the parent's program/address spaces. */ 640 if (has_vforked || detach_fork) 641 { 642 child_inf->pspace = parent_pspace; 643 child_inf->aspace = child_inf->pspace->aspace; 644 } 645 else 646 { 647 child_inf->aspace = new_address_space (); 648 child_inf->pspace = add_program_space (child_inf->aspace); 649 child_inf->removable = 1; 650 child_inf->symfile_flags = SYMFILE_NO_READ; 651 set_current_program_space (child_inf->pspace); 652 clone_program_space (child_inf->pspace, parent_pspace); 653 654 /* Let the shared library layer (e.g., solib-svr4) learn 655 about this new process, relocate the cloned exec, pull in 656 shared libraries, and install the solib event breakpoint. 657 If a "cloned-VM" event was propagated better throughout 658 the core, this wouldn't be required. */ 659 solib_create_inferior_hook (0); 660 } 661 } 662 663 return target_follow_fork (follow_child, detach_fork); 664 } 665 666 /* Tell the target to follow the fork we're stopped at. Returns true 667 if the inferior should be resumed; false, if the target for some 668 reason decided it's best not to resume. */ 669 670 static int 671 follow_fork (void) 672 { 673 int follow_child = (follow_fork_mode_string == follow_fork_mode_child); 674 int should_resume = 1; 675 struct thread_info *tp; 676 677 /* Copy user stepping state to the new inferior thread. FIXME: the 678 followed fork child thread should have a copy of most of the 679 parent thread structure's run control related fields, not just these. 680 Initialized to avoid "may be used uninitialized" warnings from gcc. */ 681 struct breakpoint *step_resume_breakpoint = NULL; 682 struct breakpoint *exception_resume_breakpoint = NULL; 683 CORE_ADDR step_range_start = 0; 684 CORE_ADDR step_range_end = 0; 685 struct frame_id step_frame_id = { 0 }; 686 struct thread_fsm *thread_fsm = NULL; 687 688 if (!non_stop) 689 { 690 ptid_t wait_ptid; 691 struct target_waitstatus wait_status; 692 693 /* Get the last target status returned by target_wait(). */ 694 get_last_target_status (&wait_ptid, &wait_status); 695 696 /* If not stopped at a fork event, then there's nothing else to 697 do. */ 698 if (wait_status.kind != TARGET_WAITKIND_FORKED 699 && wait_status.kind != TARGET_WAITKIND_VFORKED) 700 return 1; 701 702 /* Check if we switched over from WAIT_PTID, since the event was 703 reported. */ 704 if (!ptid_equal (wait_ptid, minus_one_ptid) 705 && !ptid_equal (inferior_ptid, wait_ptid)) 706 { 707 /* We did. Switch back to WAIT_PTID thread, to tell the 708 target to follow it (in either direction). We'll 709 afterwards refuse to resume, and inform the user what 710 happened. */ 711 switch_to_thread (wait_ptid); 712 should_resume = 0; 713 } 714 } 715 716 tp = inferior_thread (); 717 718 /* If there were any forks/vforks that were caught and are now to be 719 followed, then do so now. */ 720 switch (tp->pending_follow.kind) 721 { 722 case TARGET_WAITKIND_FORKED: 723 case TARGET_WAITKIND_VFORKED: 724 { 725 ptid_t parent, child; 726 727 /* If the user did a next/step, etc, over a fork call, 728 preserve the stepping state in the fork child. */ 729 if (follow_child && should_resume) 730 { 731 step_resume_breakpoint = clone_momentary_breakpoint 732 (tp->control.step_resume_breakpoint); 733 step_range_start = tp->control.step_range_start; 734 step_range_end = tp->control.step_range_end; 735 step_frame_id = tp->control.step_frame_id; 736 exception_resume_breakpoint 737 = clone_momentary_breakpoint (tp->control.exception_resume_breakpoint); 738 thread_fsm = tp->thread_fsm; 739 740 /* For now, delete the parent's sr breakpoint, otherwise, 741 parent/child sr breakpoints are considered duplicates, 742 and the child version will not be installed. Remove 743 this when the breakpoints module becomes aware of 744 inferiors and address spaces. */ 745 delete_step_resume_breakpoint (tp); 746 tp->control.step_range_start = 0; 747 tp->control.step_range_end = 0; 748 tp->control.step_frame_id = null_frame_id; 749 delete_exception_resume_breakpoint (tp); 750 tp->thread_fsm = NULL; 751 } 752 753 parent = inferior_ptid; 754 child = tp->pending_follow.value.related_pid; 755 756 /* Set up inferior(s) as specified by the caller, and tell the 757 target to do whatever is necessary to follow either parent 758 or child. */ 759 if (follow_fork_inferior (follow_child, detach_fork)) 760 { 761 /* Target refused to follow, or there's some other reason 762 we shouldn't resume. */ 763 should_resume = 0; 764 } 765 else 766 { 767 /* This pending follow fork event is now handled, one way 768 or another. The previous selected thread may be gone 769 from the lists by now, but if it is still around, need 770 to clear the pending follow request. */ 771 tp = find_thread_ptid (parent); 772 if (tp) 773 tp->pending_follow.kind = TARGET_WAITKIND_SPURIOUS; 774 775 /* This makes sure we don't try to apply the "Switched 776 over from WAIT_PID" logic above. */ 777 nullify_last_target_wait_ptid (); 778 779 /* If we followed the child, switch to it... */ 780 if (follow_child) 781 { 782 switch_to_thread (child); 783 784 /* ... and preserve the stepping state, in case the 785 user was stepping over the fork call. */ 786 if (should_resume) 787 { 788 tp = inferior_thread (); 789 tp->control.step_resume_breakpoint 790 = step_resume_breakpoint; 791 tp->control.step_range_start = step_range_start; 792 tp->control.step_range_end = step_range_end; 793 tp->control.step_frame_id = step_frame_id; 794 tp->control.exception_resume_breakpoint 795 = exception_resume_breakpoint; 796 tp->thread_fsm = thread_fsm; 797 } 798 else 799 { 800 /* If we get here, it was because we're trying to 801 resume from a fork catchpoint, but, the user 802 has switched threads away from the thread that 803 forked. In that case, the resume command 804 issued is most likely not applicable to the 805 child, so just warn, and refuse to resume. */ 806 warning (_("Not resuming: switched threads " 807 "before following fork child.")); 808 } 809 810 /* Reset breakpoints in the child as appropriate. */ 811 follow_inferior_reset_breakpoints (); 812 } 813 else 814 switch_to_thread (parent); 815 } 816 } 817 break; 818 case TARGET_WAITKIND_SPURIOUS: 819 /* Nothing to follow. */ 820 break; 821 default: 822 internal_error (__FILE__, __LINE__, 823 "Unexpected pending_follow.kind %d\n", 824 tp->pending_follow.kind); 825 break; 826 } 827 828 return should_resume; 829 } 830 831 static void 832 follow_inferior_reset_breakpoints (void) 833 { 834 struct thread_info *tp = inferior_thread (); 835 836 /* Was there a step_resume breakpoint? (There was if the user 837 did a "next" at the fork() call.) If so, explicitly reset its 838 thread number. Cloned step_resume breakpoints are disabled on 839 creation, so enable it here now that it is associated with the 840 correct thread. 841 842 step_resumes are a form of bp that are made to be per-thread. 843 Since we created the step_resume bp when the parent process 844 was being debugged, and now are switching to the child process, 845 from the breakpoint package's viewpoint, that's a switch of 846 "threads". We must update the bp's notion of which thread 847 it is for, or it'll be ignored when it triggers. */ 848 849 if (tp->control.step_resume_breakpoint) 850 { 851 breakpoint_re_set_thread (tp->control.step_resume_breakpoint); 852 tp->control.step_resume_breakpoint->loc->enabled = 1; 853 } 854 855 /* Treat exception_resume breakpoints like step_resume breakpoints. */ 856 if (tp->control.exception_resume_breakpoint) 857 { 858 breakpoint_re_set_thread (tp->control.exception_resume_breakpoint); 859 tp->control.exception_resume_breakpoint->loc->enabled = 1; 860 } 861 862 /* Reinsert all breakpoints in the child. The user may have set 863 breakpoints after catching the fork, in which case those 864 were never set in the child, but only in the parent. This makes 865 sure the inserted breakpoints match the breakpoint list. */ 866 867 breakpoint_re_set (); 868 insert_breakpoints (); 869 } 870 871 /* The child has exited or execed: resume threads of the parent the 872 user wanted to be executing. */ 873 874 static int 875 proceed_after_vfork_done (struct thread_info *thread, 876 void *arg) 877 { 878 int pid = * (int *) arg; 879 880 if (ptid_get_pid (thread->ptid) == pid 881 && is_running (thread->ptid) 882 && !is_executing (thread->ptid) 883 && !thread->stop_requested 884 && thread->suspend.stop_signal == GDB_SIGNAL_0) 885 { 886 if (debug_infrun) 887 fprintf_unfiltered (gdb_stdlog, 888 "infrun: resuming vfork parent thread %s\n", 889 target_pid_to_str (thread->ptid)); 890 891 switch_to_thread (thread->ptid); 892 clear_proceed_status (0); 893 proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT); 894 } 895 896 return 0; 897 } 898 899 /* Called whenever we notice an exec or exit event, to handle 900 detaching or resuming a vfork parent. */ 901 902 static void 903 handle_vfork_child_exec_or_exit (int exec) 904 { 905 struct inferior *inf = current_inferior (); 906 907 if (inf->vfork_parent) 908 { 909 int resume_parent = -1; 910 911 /* This exec or exit marks the end of the shared memory region 912 between the parent and the child. If the user wanted to 913 detach from the parent, now is the time. */ 914 915 if (inf->vfork_parent->pending_detach) 916 { 917 struct thread_info *tp; 918 struct cleanup *old_chain; 919 struct program_space *pspace; 920 struct address_space *aspace; 921 922 /* follow-fork child, detach-on-fork on. */ 923 924 inf->vfork_parent->pending_detach = 0; 925 926 if (!exec) 927 { 928 /* If we're handling a child exit, then inferior_ptid 929 points at the inferior's pid, not to a thread. */ 930 old_chain = save_inferior_ptid (); 931 save_current_program_space (); 932 save_current_inferior (); 933 } 934 else 935 old_chain = save_current_space_and_thread (); 936 937 /* We're letting loose of the parent. */ 938 tp = any_live_thread_of_process (inf->vfork_parent->pid); 939 switch_to_thread (tp->ptid); 940 941 /* We're about to detach from the parent, which implicitly 942 removes breakpoints from its address space. There's a 943 catch here: we want to reuse the spaces for the child, 944 but, parent/child are still sharing the pspace at this 945 point, although the exec in reality makes the kernel give 946 the child a fresh set of new pages. The problem here is 947 that the breakpoints module being unaware of this, would 948 likely chose the child process to write to the parent 949 address space. Swapping the child temporarily away from 950 the spaces has the desired effect. Yes, this is "sort 951 of" a hack. */ 952 953 pspace = inf->pspace; 954 aspace = inf->aspace; 955 inf->aspace = NULL; 956 inf->pspace = NULL; 957 958 if (debug_infrun || info_verbose) 959 { 960 target_terminal_ours_for_output (); 961 962 if (exec) 963 { 964 fprintf_filtered (gdb_stdlog, 965 _("Detaching vfork parent process " 966 "%d after child exec.\n"), 967 inf->vfork_parent->pid); 968 } 969 else 970 { 971 fprintf_filtered (gdb_stdlog, 972 _("Detaching vfork parent process " 973 "%d after child exit.\n"), 974 inf->vfork_parent->pid); 975 } 976 } 977 978 target_detach (NULL, 0); 979 980 /* Put it back. */ 981 inf->pspace = pspace; 982 inf->aspace = aspace; 983 984 do_cleanups (old_chain); 985 } 986 else if (exec) 987 { 988 /* We're staying attached to the parent, so, really give the 989 child a new address space. */ 990 inf->pspace = add_program_space (maybe_new_address_space ()); 991 inf->aspace = inf->pspace->aspace; 992 inf->removable = 1; 993 set_current_program_space (inf->pspace); 994 995 resume_parent = inf->vfork_parent->pid; 996 997 /* Break the bonds. */ 998 inf->vfork_parent->vfork_child = NULL; 999 } 1000 else 1001 { 1002 struct cleanup *old_chain; 1003 struct program_space *pspace; 1004 1005 /* If this is a vfork child exiting, then the pspace and 1006 aspaces were shared with the parent. Since we're 1007 reporting the process exit, we'll be mourning all that is 1008 found in the address space, and switching to null_ptid, 1009 preparing to start a new inferior. But, since we don't 1010 want to clobber the parent's address/program spaces, we 1011 go ahead and create a new one for this exiting 1012 inferior. */ 1013 1014 /* Switch to null_ptid, so that clone_program_space doesn't want 1015 to read the selected frame of a dead process. */ 1016 old_chain = save_inferior_ptid (); 1017 inferior_ptid = null_ptid; 1018 1019 /* This inferior is dead, so avoid giving the breakpoints 1020 module the option to write through to it (cloning a 1021 program space resets breakpoints). */ 1022 inf->aspace = NULL; 1023 inf->pspace = NULL; 1024 pspace = add_program_space (maybe_new_address_space ()); 1025 set_current_program_space (pspace); 1026 inf->removable = 1; 1027 inf->symfile_flags = SYMFILE_NO_READ; 1028 clone_program_space (pspace, inf->vfork_parent->pspace); 1029 inf->pspace = pspace; 1030 inf->aspace = pspace->aspace; 1031 1032 /* Put back inferior_ptid. We'll continue mourning this 1033 inferior. */ 1034 do_cleanups (old_chain); 1035 1036 resume_parent = inf->vfork_parent->pid; 1037 /* Break the bonds. */ 1038 inf->vfork_parent->vfork_child = NULL; 1039 } 1040 1041 inf->vfork_parent = NULL; 1042 1043 gdb_assert (current_program_space == inf->pspace); 1044 1045 if (non_stop && resume_parent != -1) 1046 { 1047 /* If the user wanted the parent to be running, let it go 1048 free now. */ 1049 struct cleanup *old_chain = make_cleanup_restore_current_thread (); 1050 1051 if (debug_infrun) 1052 fprintf_unfiltered (gdb_stdlog, 1053 "infrun: resuming vfork parent process %d\n", 1054 resume_parent); 1055 1056 iterate_over_threads (proceed_after_vfork_done, &resume_parent); 1057 1058 do_cleanups (old_chain); 1059 } 1060 } 1061 } 1062 1063 /* Enum strings for "set|show follow-exec-mode". */ 1064 1065 static const char follow_exec_mode_new[] = "new"; 1066 static const char follow_exec_mode_same[] = "same"; 1067 static const char *const follow_exec_mode_names[] = 1068 { 1069 follow_exec_mode_new, 1070 follow_exec_mode_same, 1071 NULL, 1072 }; 1073 1074 static const char *follow_exec_mode_string = follow_exec_mode_same; 1075 static void 1076 show_follow_exec_mode_string (struct ui_file *file, int from_tty, 1077 struct cmd_list_element *c, const char *value) 1078 { 1079 fprintf_filtered (file, _("Follow exec mode is \"%s\".\n"), value); 1080 } 1081 1082 /* EXEC_FILE_TARGET is assumed to be non-NULL. */ 1083 1084 static void 1085 follow_exec (ptid_t ptid, char *exec_file_target) 1086 { 1087 struct thread_info *th, *tmp; 1088 struct inferior *inf = current_inferior (); 1089 int pid = ptid_get_pid (ptid); 1090 ptid_t process_ptid; 1091 char *exec_file_host; 1092 struct cleanup *old_chain; 1093 1094 /* This is an exec event that we actually wish to pay attention to. 1095 Refresh our symbol table to the newly exec'd program, remove any 1096 momentary bp's, etc. 1097 1098 If there are breakpoints, they aren't really inserted now, 1099 since the exec() transformed our inferior into a fresh set 1100 of instructions. 1101 1102 We want to preserve symbolic breakpoints on the list, since 1103 we have hopes that they can be reset after the new a.out's 1104 symbol table is read. 1105 1106 However, any "raw" breakpoints must be removed from the list 1107 (e.g., the solib bp's), since their address is probably invalid 1108 now. 1109 1110 And, we DON'T want to call delete_breakpoints() here, since 1111 that may write the bp's "shadow contents" (the instruction 1112 value that was overwritten witha TRAP instruction). Since 1113 we now have a new a.out, those shadow contents aren't valid. */ 1114 1115 mark_breakpoints_out (); 1116 1117 /* The target reports the exec event to the main thread, even if 1118 some other thread does the exec, and even if the main thread was 1119 stopped or already gone. We may still have non-leader threads of 1120 the process on our list. E.g., on targets that don't have thread 1121 exit events (like remote); or on native Linux in non-stop mode if 1122 there were only two threads in the inferior and the non-leader 1123 one is the one that execs (and nothing forces an update of the 1124 thread list up to here). When debugging remotely, it's best to 1125 avoid extra traffic, when possible, so avoid syncing the thread 1126 list with the target, and instead go ahead and delete all threads 1127 of the process but one that reported the event. Note this must 1128 be done before calling update_breakpoints_after_exec, as 1129 otherwise clearing the threads' resources would reference stale 1130 thread breakpoints -- it may have been one of these threads that 1131 stepped across the exec. We could just clear their stepping 1132 states, but as long as we're iterating, might as well delete 1133 them. Deleting them now rather than at the next user-visible 1134 stop provides a nicer sequence of events for user and MI 1135 notifications. */ 1136 ALL_THREADS_SAFE (th, tmp) 1137 if (ptid_get_pid (th->ptid) == pid && !ptid_equal (th->ptid, ptid)) 1138 delete_thread (th->ptid); 1139 1140 /* We also need to clear any left over stale state for the 1141 leader/event thread. E.g., if there was any step-resume 1142 breakpoint or similar, it's gone now. We cannot truly 1143 step-to-next statement through an exec(). */ 1144 th = inferior_thread (); 1145 th->control.step_resume_breakpoint = NULL; 1146 th->control.exception_resume_breakpoint = NULL; 1147 th->control.single_step_breakpoints = NULL; 1148 th->control.step_range_start = 0; 1149 th->control.step_range_end = 0; 1150 1151 /* The user may have had the main thread held stopped in the 1152 previous image (e.g., schedlock on, or non-stop). Release 1153 it now. */ 1154 th->stop_requested = 0; 1155 1156 update_breakpoints_after_exec (); 1157 1158 /* What is this a.out's name? */ 1159 process_ptid = pid_to_ptid (pid); 1160 printf_unfiltered (_("%s is executing new program: %s\n"), 1161 target_pid_to_str (process_ptid), 1162 exec_file_target); 1163 1164 /* We've followed the inferior through an exec. Therefore, the 1165 inferior has essentially been killed & reborn. */ 1166 1167 gdb_flush (gdb_stdout); 1168 1169 breakpoint_init_inferior (inf_execd); 1170 1171 exec_file_host = exec_file_find (exec_file_target, NULL); 1172 old_chain = make_cleanup (xfree, exec_file_host); 1173 1174 /* If we were unable to map the executable target pathname onto a host 1175 pathname, tell the user that. Otherwise GDB's subsequent behavior 1176 is confusing. Maybe it would even be better to stop at this point 1177 so that the user can specify a file manually before continuing. */ 1178 if (exec_file_host == NULL) 1179 warning (_("Could not load symbols for executable %s.\n" 1180 "Do you need \"set sysroot\"?"), 1181 exec_file_target); 1182 1183 /* Reset the shared library package. This ensures that we get a 1184 shlib event when the child reaches "_start", at which point the 1185 dld will have had a chance to initialize the child. */ 1186 /* Also, loading a symbol file below may trigger symbol lookups, and 1187 we don't want those to be satisfied by the libraries of the 1188 previous incarnation of this process. */ 1189 no_shared_libraries (NULL, 0); 1190 1191 if (follow_exec_mode_string == follow_exec_mode_new) 1192 { 1193 /* The user wants to keep the old inferior and program spaces 1194 around. Create a new fresh one, and switch to it. */ 1195 1196 /* Do exit processing for the original inferior before adding 1197 the new inferior so we don't have two active inferiors with 1198 the same ptid, which can confuse find_inferior_ptid. */ 1199 exit_inferior_num_silent (current_inferior ()->num); 1200 1201 inf = add_inferior_with_spaces (); 1202 inf->pid = pid; 1203 target_follow_exec (inf, exec_file_target); 1204 1205 set_current_inferior (inf); 1206 set_current_program_space (inf->pspace); 1207 } 1208 else 1209 { 1210 /* The old description may no longer be fit for the new image. 1211 E.g, a 64-bit process exec'ed a 32-bit process. Clear the 1212 old description; we'll read a new one below. No need to do 1213 this on "follow-exec-mode new", as the old inferior stays 1214 around (its description is later cleared/refetched on 1215 restart). */ 1216 target_clear_description (); 1217 } 1218 1219 gdb_assert (current_program_space == inf->pspace); 1220 1221 /* Attempt to open the exec file. SYMFILE_DEFER_BP_RESET is used 1222 because the proper displacement for a PIE (Position Independent 1223 Executable) main symbol file will only be computed by 1224 solib_create_inferior_hook below. breakpoint_re_set would fail 1225 to insert the breakpoints with the zero displacement. */ 1226 try_open_exec_file (exec_file_host, inf, SYMFILE_DEFER_BP_RESET); 1227 1228 do_cleanups (old_chain); 1229 1230 /* If the target can specify a description, read it. Must do this 1231 after flipping to the new executable (because the target supplied 1232 description must be compatible with the executable's 1233 architecture, and the old executable may e.g., be 32-bit, while 1234 the new one 64-bit), and before anything involving memory or 1235 registers. */ 1236 target_find_description (); 1237 1238 /* The add_thread call ends up reading registers, so do it after updating the 1239 target description. */ 1240 if (follow_exec_mode_string == follow_exec_mode_new) 1241 add_thread (ptid); 1242 1243 solib_create_inferior_hook (0); 1244 1245 jit_inferior_created_hook (); 1246 1247 breakpoint_re_set (); 1248 1249 /* Reinsert all breakpoints. (Those which were symbolic have 1250 been reset to the proper address in the new a.out, thanks 1251 to symbol_file_command...). */ 1252 insert_breakpoints (); 1253 1254 /* The next resume of this inferior should bring it to the shlib 1255 startup breakpoints. (If the user had also set bp's on 1256 "main" from the old (parent) process, then they'll auto- 1257 matically get reset there in the new process.). */ 1258 } 1259 1260 /* The queue of threads that need to do a step-over operation to get 1261 past e.g., a breakpoint. What technique is used to step over the 1262 breakpoint/watchpoint does not matter -- all threads end up in the 1263 same queue, to maintain rough temporal order of execution, in order 1264 to avoid starvation, otherwise, we could e.g., find ourselves 1265 constantly stepping the same couple threads past their breakpoints 1266 over and over, if the single-step finish fast enough. */ 1267 struct thread_info *step_over_queue_head; 1268 1269 /* Bit flags indicating what the thread needs to step over. */ 1270 1271 enum step_over_what_flag 1272 { 1273 /* Step over a breakpoint. */ 1274 STEP_OVER_BREAKPOINT = 1, 1275 1276 /* Step past a non-continuable watchpoint, in order to let the 1277 instruction execute so we can evaluate the watchpoint 1278 expression. */ 1279 STEP_OVER_WATCHPOINT = 2 1280 }; 1281 DEF_ENUM_FLAGS_TYPE (enum step_over_what_flag, step_over_what); 1282 1283 /* Info about an instruction that is being stepped over. */ 1284 1285 struct step_over_info 1286 { 1287 /* If we're stepping past a breakpoint, this is the address space 1288 and address of the instruction the breakpoint is set at. We'll 1289 skip inserting all breakpoints here. Valid iff ASPACE is 1290 non-NULL. */ 1291 struct address_space *aspace; 1292 CORE_ADDR address; 1293 1294 /* The instruction being stepped over triggers a nonsteppable 1295 watchpoint. If true, we'll skip inserting watchpoints. */ 1296 int nonsteppable_watchpoint_p; 1297 1298 /* The thread's global number. */ 1299 int thread; 1300 }; 1301 1302 /* The step-over info of the location that is being stepped over. 1303 1304 Note that with async/breakpoint always-inserted mode, a user might 1305 set a new breakpoint/watchpoint/etc. exactly while a breakpoint is 1306 being stepped over. As setting a new breakpoint inserts all 1307 breakpoints, we need to make sure the breakpoint being stepped over 1308 isn't inserted then. We do that by only clearing the step-over 1309 info when the step-over is actually finished (or aborted). 1310 1311 Presently GDB can only step over one breakpoint at any given time. 1312 Given threads that can't run code in the same address space as the 1313 breakpoint's can't really miss the breakpoint, GDB could be taught 1314 to step-over at most one breakpoint per address space (so this info 1315 could move to the address space object if/when GDB is extended). 1316 The set of breakpoints being stepped over will normally be much 1317 smaller than the set of all breakpoints, so a flag in the 1318 breakpoint location structure would be wasteful. A separate list 1319 also saves complexity and run-time, as otherwise we'd have to go 1320 through all breakpoint locations clearing their flag whenever we 1321 start a new sequence. Similar considerations weigh against storing 1322 this info in the thread object. Plus, not all step overs actually 1323 have breakpoint locations -- e.g., stepping past a single-step 1324 breakpoint, or stepping to complete a non-continuable 1325 watchpoint. */ 1326 static struct step_over_info step_over_info; 1327 1328 /* Record the address of the breakpoint/instruction we're currently 1329 stepping over. 1330 N.B. We record the aspace and address now, instead of say just the thread, 1331 because when we need the info later the thread may be running. */ 1332 1333 static void 1334 set_step_over_info (struct address_space *aspace, CORE_ADDR address, 1335 int nonsteppable_watchpoint_p, 1336 int thread) 1337 { 1338 step_over_info.aspace = aspace; 1339 step_over_info.address = address; 1340 step_over_info.nonsteppable_watchpoint_p = nonsteppable_watchpoint_p; 1341 step_over_info.thread = thread; 1342 } 1343 1344 /* Called when we're not longer stepping over a breakpoint / an 1345 instruction, so all breakpoints are free to be (re)inserted. */ 1346 1347 static void 1348 clear_step_over_info (void) 1349 { 1350 if (debug_infrun) 1351 fprintf_unfiltered (gdb_stdlog, 1352 "infrun: clear_step_over_info\n"); 1353 step_over_info.aspace = NULL; 1354 step_over_info.address = 0; 1355 step_over_info.nonsteppable_watchpoint_p = 0; 1356 step_over_info.thread = -1; 1357 } 1358 1359 /* See infrun.h. */ 1360 1361 int 1362 stepping_past_instruction_at (struct address_space *aspace, 1363 CORE_ADDR address) 1364 { 1365 return (step_over_info.aspace != NULL 1366 && breakpoint_address_match (aspace, address, 1367 step_over_info.aspace, 1368 step_over_info.address)); 1369 } 1370 1371 /* See infrun.h. */ 1372 1373 int 1374 thread_is_stepping_over_breakpoint (int thread) 1375 { 1376 return (step_over_info.thread != -1 1377 && thread == step_over_info.thread); 1378 } 1379 1380 /* See infrun.h. */ 1381 1382 int 1383 stepping_past_nonsteppable_watchpoint (void) 1384 { 1385 return step_over_info.nonsteppable_watchpoint_p; 1386 } 1387 1388 /* Returns true if step-over info is valid. */ 1389 1390 static int 1391 step_over_info_valid_p (void) 1392 { 1393 return (step_over_info.aspace != NULL 1394 || stepping_past_nonsteppable_watchpoint ()); 1395 } 1396 1397 1398 /* Displaced stepping. */ 1399 1400 /* In non-stop debugging mode, we must take special care to manage 1401 breakpoints properly; in particular, the traditional strategy for 1402 stepping a thread past a breakpoint it has hit is unsuitable. 1403 'Displaced stepping' is a tactic for stepping one thread past a 1404 breakpoint it has hit while ensuring that other threads running 1405 concurrently will hit the breakpoint as they should. 1406 1407 The traditional way to step a thread T off a breakpoint in a 1408 multi-threaded program in all-stop mode is as follows: 1409 1410 a0) Initially, all threads are stopped, and breakpoints are not 1411 inserted. 1412 a1) We single-step T, leaving breakpoints uninserted. 1413 a2) We insert breakpoints, and resume all threads. 1414 1415 In non-stop debugging, however, this strategy is unsuitable: we 1416 don't want to have to stop all threads in the system in order to 1417 continue or step T past a breakpoint. Instead, we use displaced 1418 stepping: 1419 1420 n0) Initially, T is stopped, other threads are running, and 1421 breakpoints are inserted. 1422 n1) We copy the instruction "under" the breakpoint to a separate 1423 location, outside the main code stream, making any adjustments 1424 to the instruction, register, and memory state as directed by 1425 T's architecture. 1426 n2) We single-step T over the instruction at its new location. 1427 n3) We adjust the resulting register and memory state as directed 1428 by T's architecture. This includes resetting T's PC to point 1429 back into the main instruction stream. 1430 n4) We resume T. 1431 1432 This approach depends on the following gdbarch methods: 1433 1434 - gdbarch_max_insn_length and gdbarch_displaced_step_location 1435 indicate where to copy the instruction, and how much space must 1436 be reserved there. We use these in step n1. 1437 1438 - gdbarch_displaced_step_copy_insn copies a instruction to a new 1439 address, and makes any necessary adjustments to the instruction, 1440 register contents, and memory. We use this in step n1. 1441 1442 - gdbarch_displaced_step_fixup adjusts registers and memory after 1443 we have successfuly single-stepped the instruction, to yield the 1444 same effect the instruction would have had if we had executed it 1445 at its original address. We use this in step n3. 1446 1447 - gdbarch_displaced_step_free_closure provides cleanup. 1448 1449 The gdbarch_displaced_step_copy_insn and 1450 gdbarch_displaced_step_fixup functions must be written so that 1451 copying an instruction with gdbarch_displaced_step_copy_insn, 1452 single-stepping across the copied instruction, and then applying 1453 gdbarch_displaced_insn_fixup should have the same effects on the 1454 thread's memory and registers as stepping the instruction in place 1455 would have. Exactly which responsibilities fall to the copy and 1456 which fall to the fixup is up to the author of those functions. 1457 1458 See the comments in gdbarch.sh for details. 1459 1460 Note that displaced stepping and software single-step cannot 1461 currently be used in combination, although with some care I think 1462 they could be made to. Software single-step works by placing 1463 breakpoints on all possible subsequent instructions; if the 1464 displaced instruction is a PC-relative jump, those breakpoints 1465 could fall in very strange places --- on pages that aren't 1466 executable, or at addresses that are not proper instruction 1467 boundaries. (We do generally let other threads run while we wait 1468 to hit the software single-step breakpoint, and they might 1469 encounter such a corrupted instruction.) One way to work around 1470 this would be to have gdbarch_displaced_step_copy_insn fully 1471 simulate the effect of PC-relative instructions (and return NULL) 1472 on architectures that use software single-stepping. 1473 1474 In non-stop mode, we can have independent and simultaneous step 1475 requests, so more than one thread may need to simultaneously step 1476 over a breakpoint. The current implementation assumes there is 1477 only one scratch space per process. In this case, we have to 1478 serialize access to the scratch space. If thread A wants to step 1479 over a breakpoint, but we are currently waiting for some other 1480 thread to complete a displaced step, we leave thread A stopped and 1481 place it in the displaced_step_request_queue. Whenever a displaced 1482 step finishes, we pick the next thread in the queue and start a new 1483 displaced step operation on it. See displaced_step_prepare and 1484 displaced_step_fixup for details. */ 1485 1486 /* Per-inferior displaced stepping state. */ 1487 struct displaced_step_inferior_state 1488 { 1489 /* Pointer to next in linked list. */ 1490 struct displaced_step_inferior_state *next; 1491 1492 /* The process this displaced step state refers to. */ 1493 int pid; 1494 1495 /* True if preparing a displaced step ever failed. If so, we won't 1496 try displaced stepping for this inferior again. */ 1497 int failed_before; 1498 1499 /* If this is not null_ptid, this is the thread carrying out a 1500 displaced single-step in process PID. This thread's state will 1501 require fixing up once it has completed its step. */ 1502 ptid_t step_ptid; 1503 1504 /* The architecture the thread had when we stepped it. */ 1505 struct gdbarch *step_gdbarch; 1506 1507 /* The closure provided gdbarch_displaced_step_copy_insn, to be used 1508 for post-step cleanup. */ 1509 struct displaced_step_closure *step_closure; 1510 1511 /* The address of the original instruction, and the copy we 1512 made. */ 1513 CORE_ADDR step_original, step_copy; 1514 1515 /* Saved contents of copy area. */ 1516 gdb_byte *step_saved_copy; 1517 }; 1518 1519 /* The list of states of processes involved in displaced stepping 1520 presently. */ 1521 static struct displaced_step_inferior_state *displaced_step_inferior_states; 1522 1523 /* Get the displaced stepping state of process PID. */ 1524 1525 static struct displaced_step_inferior_state * 1526 get_displaced_stepping_state (int pid) 1527 { 1528 struct displaced_step_inferior_state *state; 1529 1530 for (state = displaced_step_inferior_states; 1531 state != NULL; 1532 state = state->next) 1533 if (state->pid == pid) 1534 return state; 1535 1536 return NULL; 1537 } 1538 1539 /* Returns true if any inferior has a thread doing a displaced 1540 step. */ 1541 1542 static int 1543 displaced_step_in_progress_any_inferior (void) 1544 { 1545 struct displaced_step_inferior_state *state; 1546 1547 for (state = displaced_step_inferior_states; 1548 state != NULL; 1549 state = state->next) 1550 if (!ptid_equal (state->step_ptid, null_ptid)) 1551 return 1; 1552 1553 return 0; 1554 } 1555 1556 /* Return true if thread represented by PTID is doing a displaced 1557 step. */ 1558 1559 static int 1560 displaced_step_in_progress_thread (ptid_t ptid) 1561 { 1562 struct displaced_step_inferior_state *displaced; 1563 1564 gdb_assert (!ptid_equal (ptid, null_ptid)); 1565 1566 displaced = get_displaced_stepping_state (ptid_get_pid (ptid)); 1567 1568 return (displaced != NULL && ptid_equal (displaced->step_ptid, ptid)); 1569 } 1570 1571 /* Return true if process PID has a thread doing a displaced step. */ 1572 1573 static int 1574 displaced_step_in_progress (int pid) 1575 { 1576 struct displaced_step_inferior_state *displaced; 1577 1578 displaced = get_displaced_stepping_state (pid); 1579 if (displaced != NULL && !ptid_equal (displaced->step_ptid, null_ptid)) 1580 return 1; 1581 1582 return 0; 1583 } 1584 1585 /* Add a new displaced stepping state for process PID to the displaced 1586 stepping state list, or return a pointer to an already existing 1587 entry, if it already exists. Never returns NULL. */ 1588 1589 static struct displaced_step_inferior_state * 1590 add_displaced_stepping_state (int pid) 1591 { 1592 struct displaced_step_inferior_state *state; 1593 1594 for (state = displaced_step_inferior_states; 1595 state != NULL; 1596 state = state->next) 1597 if (state->pid == pid) 1598 return state; 1599 1600 state = XCNEW (struct displaced_step_inferior_state); 1601 state->pid = pid; 1602 state->next = displaced_step_inferior_states; 1603 displaced_step_inferior_states = state; 1604 1605 return state; 1606 } 1607 1608 /* If inferior is in displaced stepping, and ADDR equals to starting address 1609 of copy area, return corresponding displaced_step_closure. Otherwise, 1610 return NULL. */ 1611 1612 struct displaced_step_closure* 1613 get_displaced_step_closure_by_addr (CORE_ADDR addr) 1614 { 1615 struct displaced_step_inferior_state *displaced 1616 = get_displaced_stepping_state (ptid_get_pid (inferior_ptid)); 1617 1618 /* If checking the mode of displaced instruction in copy area. */ 1619 if (displaced && !ptid_equal (displaced->step_ptid, null_ptid) 1620 && (displaced->step_copy == addr)) 1621 return displaced->step_closure; 1622 1623 return NULL; 1624 } 1625 1626 /* Remove the displaced stepping state of process PID. */ 1627 1628 static void 1629 remove_displaced_stepping_state (int pid) 1630 { 1631 struct displaced_step_inferior_state *it, **prev_next_p; 1632 1633 gdb_assert (pid != 0); 1634 1635 it = displaced_step_inferior_states; 1636 prev_next_p = &displaced_step_inferior_states; 1637 while (it) 1638 { 1639 if (it->pid == pid) 1640 { 1641 *prev_next_p = it->next; 1642 xfree (it); 1643 return; 1644 } 1645 1646 prev_next_p = &it->next; 1647 it = *prev_next_p; 1648 } 1649 } 1650 1651 static void 1652 infrun_inferior_exit (struct inferior *inf) 1653 { 1654 remove_displaced_stepping_state (inf->pid); 1655 } 1656 1657 /* If ON, and the architecture supports it, GDB will use displaced 1658 stepping to step over breakpoints. If OFF, or if the architecture 1659 doesn't support it, GDB will instead use the traditional 1660 hold-and-step approach. If AUTO (which is the default), GDB will 1661 decide which technique to use to step over breakpoints depending on 1662 which of all-stop or non-stop mode is active --- displaced stepping 1663 in non-stop mode; hold-and-step in all-stop mode. */ 1664 1665 static enum auto_boolean can_use_displaced_stepping = AUTO_BOOLEAN_AUTO; 1666 1667 static void 1668 show_can_use_displaced_stepping (struct ui_file *file, int from_tty, 1669 struct cmd_list_element *c, 1670 const char *value) 1671 { 1672 if (can_use_displaced_stepping == AUTO_BOOLEAN_AUTO) 1673 fprintf_filtered (file, 1674 _("Debugger's willingness to use displaced stepping " 1675 "to step over breakpoints is %s (currently %s).\n"), 1676 value, target_is_non_stop_p () ? "on" : "off"); 1677 else 1678 fprintf_filtered (file, 1679 _("Debugger's willingness to use displaced stepping " 1680 "to step over breakpoints is %s.\n"), value); 1681 } 1682 1683 /* Return non-zero if displaced stepping can/should be used to step 1684 over breakpoints of thread TP. */ 1685 1686 static int 1687 use_displaced_stepping (struct thread_info *tp) 1688 { 1689 struct regcache *regcache = get_thread_regcache (tp->ptid); 1690 struct gdbarch *gdbarch = get_regcache_arch (regcache); 1691 struct displaced_step_inferior_state *displaced_state; 1692 1693 displaced_state = get_displaced_stepping_state (ptid_get_pid (tp->ptid)); 1694 1695 return (((can_use_displaced_stepping == AUTO_BOOLEAN_AUTO 1696 && target_is_non_stop_p ()) 1697 || can_use_displaced_stepping == AUTO_BOOLEAN_TRUE) 1698 && gdbarch_displaced_step_copy_insn_p (gdbarch) 1699 && find_record_target () == NULL 1700 && (displaced_state == NULL 1701 || !displaced_state->failed_before)); 1702 } 1703 1704 /* Clean out any stray displaced stepping state. */ 1705 static void 1706 displaced_step_clear (struct displaced_step_inferior_state *displaced) 1707 { 1708 /* Indicate that there is no cleanup pending. */ 1709 displaced->step_ptid = null_ptid; 1710 1711 if (displaced->step_closure) 1712 { 1713 gdbarch_displaced_step_free_closure (displaced->step_gdbarch, 1714 displaced->step_closure); 1715 displaced->step_closure = NULL; 1716 } 1717 } 1718 1719 static void 1720 displaced_step_clear_cleanup (void *arg) 1721 { 1722 struct displaced_step_inferior_state *state 1723 = (struct displaced_step_inferior_state *) arg; 1724 1725 displaced_step_clear (state); 1726 } 1727 1728 /* Dump LEN bytes at BUF in hex to FILE, followed by a newline. */ 1729 void 1730 displaced_step_dump_bytes (struct ui_file *file, 1731 const gdb_byte *buf, 1732 size_t len) 1733 { 1734 int i; 1735 1736 for (i = 0; i < len; i++) 1737 fprintf_unfiltered (file, "%02x ", buf[i]); 1738 fputs_unfiltered ("\n", file); 1739 } 1740 1741 /* Prepare to single-step, using displaced stepping. 1742 1743 Note that we cannot use displaced stepping when we have a signal to 1744 deliver. If we have a signal to deliver and an instruction to step 1745 over, then after the step, there will be no indication from the 1746 target whether the thread entered a signal handler or ignored the 1747 signal and stepped over the instruction successfully --- both cases 1748 result in a simple SIGTRAP. In the first case we mustn't do a 1749 fixup, and in the second case we must --- but we can't tell which. 1750 Comments in the code for 'random signals' in handle_inferior_event 1751 explain how we handle this case instead. 1752 1753 Returns 1 if preparing was successful -- this thread is going to be 1754 stepped now; 0 if displaced stepping this thread got queued; or -1 1755 if this instruction can't be displaced stepped. */ 1756 1757 static int 1758 displaced_step_prepare_throw (ptid_t ptid) 1759 { 1760 struct cleanup *old_cleanups, *ignore_cleanups; 1761 struct thread_info *tp = find_thread_ptid (ptid); 1762 struct regcache *regcache = get_thread_regcache (ptid); 1763 struct gdbarch *gdbarch = get_regcache_arch (regcache); 1764 struct address_space *aspace = get_regcache_aspace (regcache); 1765 CORE_ADDR original, copy; 1766 ULONGEST len; 1767 struct displaced_step_closure *closure; 1768 struct displaced_step_inferior_state *displaced; 1769 int status; 1770 1771 /* We should never reach this function if the architecture does not 1772 support displaced stepping. */ 1773 gdb_assert (gdbarch_displaced_step_copy_insn_p (gdbarch)); 1774 1775 /* Nor if the thread isn't meant to step over a breakpoint. */ 1776 gdb_assert (tp->control.trap_expected); 1777 1778 /* Disable range stepping while executing in the scratch pad. We 1779 want a single-step even if executing the displaced instruction in 1780 the scratch buffer lands within the stepping range (e.g., a 1781 jump/branch). */ 1782 tp->control.may_range_step = 0; 1783 1784 /* We have to displaced step one thread at a time, as we only have 1785 access to a single scratch space per inferior. */ 1786 1787 displaced = add_displaced_stepping_state (ptid_get_pid (ptid)); 1788 1789 if (!ptid_equal (displaced->step_ptid, null_ptid)) 1790 { 1791 /* Already waiting for a displaced step to finish. Defer this 1792 request and place in queue. */ 1793 1794 if (debug_displaced) 1795 fprintf_unfiltered (gdb_stdlog, 1796 "displaced: deferring step of %s\n", 1797 target_pid_to_str (ptid)); 1798 1799 thread_step_over_chain_enqueue (tp); 1800 return 0; 1801 } 1802 else 1803 { 1804 if (debug_displaced) 1805 fprintf_unfiltered (gdb_stdlog, 1806 "displaced: stepping %s now\n", 1807 target_pid_to_str (ptid)); 1808 } 1809 1810 displaced_step_clear (displaced); 1811 1812 old_cleanups = save_inferior_ptid (); 1813 inferior_ptid = ptid; 1814 1815 original = regcache_read_pc (regcache); 1816 1817 copy = gdbarch_displaced_step_location (gdbarch); 1818 len = gdbarch_max_insn_length (gdbarch); 1819 1820 if (breakpoint_in_range_p (aspace, copy, len)) 1821 { 1822 /* There's a breakpoint set in the scratch pad location range 1823 (which is usually around the entry point). We'd either 1824 install it before resuming, which would overwrite/corrupt the 1825 scratch pad, or if it was already inserted, this displaced 1826 step would overwrite it. The latter is OK in the sense that 1827 we already assume that no thread is going to execute the code 1828 in the scratch pad range (after initial startup) anyway, but 1829 the former is unacceptable. Simply punt and fallback to 1830 stepping over this breakpoint in-line. */ 1831 if (debug_displaced) 1832 { 1833 fprintf_unfiltered (gdb_stdlog, 1834 "displaced: breakpoint set in scratch pad. " 1835 "Stepping over breakpoint in-line instead.\n"); 1836 } 1837 1838 do_cleanups (old_cleanups); 1839 return -1; 1840 } 1841 1842 /* Save the original contents of the copy area. */ 1843 displaced->step_saved_copy = (gdb_byte *) xmalloc (len); 1844 ignore_cleanups = make_cleanup (free_current_contents, 1845 &displaced->step_saved_copy); 1846 status = target_read_memory (copy, displaced->step_saved_copy, len); 1847 if (status != 0) 1848 throw_error (MEMORY_ERROR, 1849 _("Error accessing memory address %s (%s) for " 1850 "displaced-stepping scratch space."), 1851 paddress (gdbarch, copy), safe_strerror (status)); 1852 if (debug_displaced) 1853 { 1854 fprintf_unfiltered (gdb_stdlog, "displaced: saved %s: ", 1855 paddress (gdbarch, copy)); 1856 displaced_step_dump_bytes (gdb_stdlog, 1857 displaced->step_saved_copy, 1858 len); 1859 }; 1860 1861 closure = gdbarch_displaced_step_copy_insn (gdbarch, 1862 original, copy, regcache); 1863 if (closure == NULL) 1864 { 1865 /* The architecture doesn't know how or want to displaced step 1866 this instruction or instruction sequence. Fallback to 1867 stepping over the breakpoint in-line. */ 1868 do_cleanups (old_cleanups); 1869 return -1; 1870 } 1871 1872 /* Save the information we need to fix things up if the step 1873 succeeds. */ 1874 displaced->step_ptid = ptid; 1875 displaced->step_gdbarch = gdbarch; 1876 displaced->step_closure = closure; 1877 displaced->step_original = original; 1878 displaced->step_copy = copy; 1879 1880 make_cleanup (displaced_step_clear_cleanup, displaced); 1881 1882 /* Resume execution at the copy. */ 1883 regcache_write_pc (regcache, copy); 1884 1885 discard_cleanups (ignore_cleanups); 1886 1887 do_cleanups (old_cleanups); 1888 1889 if (debug_displaced) 1890 fprintf_unfiltered (gdb_stdlog, "displaced: displaced pc to %s\n", 1891 paddress (gdbarch, copy)); 1892 1893 return 1; 1894 } 1895 1896 /* Wrapper for displaced_step_prepare_throw that disabled further 1897 attempts at displaced stepping if we get a memory error. */ 1898 1899 static int 1900 displaced_step_prepare (ptid_t ptid) 1901 { 1902 int prepared = -1; 1903 1904 TRY 1905 { 1906 prepared = displaced_step_prepare_throw (ptid); 1907 } 1908 CATCH (ex, RETURN_MASK_ERROR) 1909 { 1910 struct displaced_step_inferior_state *displaced_state; 1911 1912 if (ex.error != MEMORY_ERROR 1913 && ex.error != NOT_SUPPORTED_ERROR) 1914 throw_exception (ex); 1915 1916 if (debug_infrun) 1917 { 1918 fprintf_unfiltered (gdb_stdlog, 1919 "infrun: disabling displaced stepping: %s\n", 1920 ex.message); 1921 } 1922 1923 /* Be verbose if "set displaced-stepping" is "on", silent if 1924 "auto". */ 1925 if (can_use_displaced_stepping == AUTO_BOOLEAN_TRUE) 1926 { 1927 warning (_("disabling displaced stepping: %s"), 1928 ex.message); 1929 } 1930 1931 /* Disable further displaced stepping attempts. */ 1932 displaced_state 1933 = get_displaced_stepping_state (ptid_get_pid (ptid)); 1934 displaced_state->failed_before = 1; 1935 } 1936 END_CATCH 1937 1938 return prepared; 1939 } 1940 1941 static void 1942 write_memory_ptid (ptid_t ptid, CORE_ADDR memaddr, 1943 const gdb_byte *myaddr, int len) 1944 { 1945 struct cleanup *ptid_cleanup = save_inferior_ptid (); 1946 1947 inferior_ptid = ptid; 1948 write_memory (memaddr, myaddr, len); 1949 do_cleanups (ptid_cleanup); 1950 } 1951 1952 /* Restore the contents of the copy area for thread PTID. */ 1953 1954 static void 1955 displaced_step_restore (struct displaced_step_inferior_state *displaced, 1956 ptid_t ptid) 1957 { 1958 ULONGEST len = gdbarch_max_insn_length (displaced->step_gdbarch); 1959 1960 write_memory_ptid (ptid, displaced->step_copy, 1961 displaced->step_saved_copy, len); 1962 if (debug_displaced) 1963 fprintf_unfiltered (gdb_stdlog, "displaced: restored %s %s\n", 1964 target_pid_to_str (ptid), 1965 paddress (displaced->step_gdbarch, 1966 displaced->step_copy)); 1967 } 1968 1969 /* If we displaced stepped an instruction successfully, adjust 1970 registers and memory to yield the same effect the instruction would 1971 have had if we had executed it at its original address, and return 1972 1. If the instruction didn't complete, relocate the PC and return 1973 -1. If the thread wasn't displaced stepping, return 0. */ 1974 1975 static int 1976 displaced_step_fixup (ptid_t event_ptid, enum gdb_signal signal) 1977 { 1978 struct cleanup *old_cleanups; 1979 struct displaced_step_inferior_state *displaced 1980 = get_displaced_stepping_state (ptid_get_pid (event_ptid)); 1981 int ret; 1982 1983 /* Was any thread of this process doing a displaced step? */ 1984 if (displaced == NULL) 1985 return 0; 1986 1987 /* Was this event for the pid we displaced? */ 1988 if (ptid_equal (displaced->step_ptid, null_ptid) 1989 || ! ptid_equal (displaced->step_ptid, event_ptid)) 1990 return 0; 1991 1992 old_cleanups = make_cleanup (displaced_step_clear_cleanup, displaced); 1993 1994 displaced_step_restore (displaced, displaced->step_ptid); 1995 1996 /* Fixup may need to read memory/registers. Switch to the thread 1997 that we're fixing up. Also, target_stopped_by_watchpoint checks 1998 the current thread. */ 1999 switch_to_thread (event_ptid); 2000 2001 /* Did the instruction complete successfully? */ 2002 if (signal == GDB_SIGNAL_TRAP 2003 && !(target_stopped_by_watchpoint () 2004 && (gdbarch_have_nonsteppable_watchpoint (displaced->step_gdbarch) 2005 || target_have_steppable_watchpoint))) 2006 { 2007 /* Fix up the resulting state. */ 2008 gdbarch_displaced_step_fixup (displaced->step_gdbarch, 2009 displaced->step_closure, 2010 displaced->step_original, 2011 displaced->step_copy, 2012 get_thread_regcache (displaced->step_ptid)); 2013 ret = 1; 2014 } 2015 else 2016 { 2017 /* Since the instruction didn't complete, all we can do is 2018 relocate the PC. */ 2019 struct regcache *regcache = get_thread_regcache (event_ptid); 2020 CORE_ADDR pc = regcache_read_pc (regcache); 2021 2022 pc = displaced->step_original + (pc - displaced->step_copy); 2023 regcache_write_pc (regcache, pc); 2024 ret = -1; 2025 } 2026 2027 do_cleanups (old_cleanups); 2028 2029 displaced->step_ptid = null_ptid; 2030 2031 return ret; 2032 } 2033 2034 /* Data to be passed around while handling an event. This data is 2035 discarded between events. */ 2036 struct execution_control_state 2037 { 2038 ptid_t ptid; 2039 /* The thread that got the event, if this was a thread event; NULL 2040 otherwise. */ 2041 struct thread_info *event_thread; 2042 2043 struct target_waitstatus ws; 2044 int stop_func_filled_in; 2045 CORE_ADDR stop_func_start; 2046 CORE_ADDR stop_func_end; 2047 const char *stop_func_name; 2048 int wait_some_more; 2049 2050 /* True if the event thread hit the single-step breakpoint of 2051 another thread. Thus the event doesn't cause a stop, the thread 2052 needs to be single-stepped past the single-step breakpoint before 2053 we can switch back to the original stepping thread. */ 2054 int hit_singlestep_breakpoint; 2055 }; 2056 2057 /* Clear ECS and set it to point at TP. */ 2058 2059 static void 2060 reset_ecs (struct execution_control_state *ecs, struct thread_info *tp) 2061 { 2062 memset (ecs, 0, sizeof (*ecs)); 2063 ecs->event_thread = tp; 2064 ecs->ptid = tp->ptid; 2065 } 2066 2067 static void keep_going_pass_signal (struct execution_control_state *ecs); 2068 static void prepare_to_wait (struct execution_control_state *ecs); 2069 static int keep_going_stepped_thread (struct thread_info *tp); 2070 static step_over_what thread_still_needs_step_over (struct thread_info *tp); 2071 2072 /* Are there any pending step-over requests? If so, run all we can 2073 now and return true. Otherwise, return false. */ 2074 2075 static int 2076 start_step_over (void) 2077 { 2078 struct thread_info *tp, *next; 2079 2080 /* Don't start a new step-over if we already have an in-line 2081 step-over operation ongoing. */ 2082 if (step_over_info_valid_p ()) 2083 return 0; 2084 2085 for (tp = step_over_queue_head; tp != NULL; tp = next) 2086 { 2087 struct execution_control_state ecss; 2088 struct execution_control_state *ecs = &ecss; 2089 step_over_what step_what; 2090 int must_be_in_line; 2091 2092 gdb_assert (!tp->stop_requested); 2093 2094 next = thread_step_over_chain_next (tp); 2095 2096 /* If this inferior already has a displaced step in process, 2097 don't start a new one. */ 2098 if (displaced_step_in_progress (ptid_get_pid (tp->ptid))) 2099 continue; 2100 2101 step_what = thread_still_needs_step_over (tp); 2102 must_be_in_line = ((step_what & STEP_OVER_WATCHPOINT) 2103 || ((step_what & STEP_OVER_BREAKPOINT) 2104 && !use_displaced_stepping (tp))); 2105 2106 /* We currently stop all threads of all processes to step-over 2107 in-line. If we need to start a new in-line step-over, let 2108 any pending displaced steps finish first. */ 2109 if (must_be_in_line && displaced_step_in_progress_any_inferior ()) 2110 return 0; 2111 2112 thread_step_over_chain_remove (tp); 2113 2114 if (step_over_queue_head == NULL) 2115 { 2116 if (debug_infrun) 2117 fprintf_unfiltered (gdb_stdlog, 2118 "infrun: step-over queue now empty\n"); 2119 } 2120 2121 if (tp->control.trap_expected 2122 || tp->resumed 2123 || tp->executing) 2124 { 2125 internal_error (__FILE__, __LINE__, 2126 "[%s] has inconsistent state: " 2127 "trap_expected=%d, resumed=%d, executing=%d\n", 2128 target_pid_to_str (tp->ptid), 2129 tp->control.trap_expected, 2130 tp->resumed, 2131 tp->executing); 2132 } 2133 2134 if (debug_infrun) 2135 fprintf_unfiltered (gdb_stdlog, 2136 "infrun: resuming [%s] for step-over\n", 2137 target_pid_to_str (tp->ptid)); 2138 2139 /* keep_going_pass_signal skips the step-over if the breakpoint 2140 is no longer inserted. In all-stop, we want to keep looking 2141 for a thread that needs a step-over instead of resuming TP, 2142 because we wouldn't be able to resume anything else until the 2143 target stops again. In non-stop, the resume always resumes 2144 only TP, so it's OK to let the thread resume freely. */ 2145 if (!target_is_non_stop_p () && !step_what) 2146 continue; 2147 2148 switch_to_thread (tp->ptid); 2149 reset_ecs (ecs, tp); 2150 keep_going_pass_signal (ecs); 2151 2152 if (!ecs->wait_some_more) 2153 error (_("Command aborted.")); 2154 2155 gdb_assert (tp->resumed); 2156 2157 /* If we started a new in-line step-over, we're done. */ 2158 if (step_over_info_valid_p ()) 2159 { 2160 gdb_assert (tp->control.trap_expected); 2161 return 1; 2162 } 2163 2164 if (!target_is_non_stop_p ()) 2165 { 2166 /* On all-stop, shouldn't have resumed unless we needed a 2167 step over. */ 2168 gdb_assert (tp->control.trap_expected 2169 || tp->step_after_step_resume_breakpoint); 2170 2171 /* With remote targets (at least), in all-stop, we can't 2172 issue any further remote commands until the program stops 2173 again. */ 2174 return 1; 2175 } 2176 2177 /* Either the thread no longer needed a step-over, or a new 2178 displaced stepping sequence started. Even in the latter 2179 case, continue looking. Maybe we can also start another 2180 displaced step on a thread of other process. */ 2181 } 2182 2183 return 0; 2184 } 2185 2186 /* Update global variables holding ptids to hold NEW_PTID if they were 2187 holding OLD_PTID. */ 2188 static void 2189 infrun_thread_ptid_changed (ptid_t old_ptid, ptid_t new_ptid) 2190 { 2191 struct displaced_step_inferior_state *displaced; 2192 2193 if (ptid_equal (inferior_ptid, old_ptid)) 2194 inferior_ptid = new_ptid; 2195 2196 for (displaced = displaced_step_inferior_states; 2197 displaced; 2198 displaced = displaced->next) 2199 { 2200 if (ptid_equal (displaced->step_ptid, old_ptid)) 2201 displaced->step_ptid = new_ptid; 2202 } 2203 } 2204 2205 2206 /* Resuming. */ 2207 2208 /* Things to clean up if we QUIT out of resume (). */ 2209 static void 2210 resume_cleanups (void *ignore) 2211 { 2212 if (!ptid_equal (inferior_ptid, null_ptid)) 2213 delete_single_step_breakpoints (inferior_thread ()); 2214 2215 normal_stop (); 2216 } 2217 2218 static const char schedlock_off[] = "off"; 2219 static const char schedlock_on[] = "on"; 2220 static const char schedlock_step[] = "step"; 2221 static const char schedlock_replay[] = "replay"; 2222 static const char *const scheduler_enums[] = { 2223 schedlock_off, 2224 schedlock_on, 2225 schedlock_step, 2226 schedlock_replay, 2227 NULL 2228 }; 2229 static const char *scheduler_mode = schedlock_replay; 2230 static void 2231 show_scheduler_mode (struct ui_file *file, int from_tty, 2232 struct cmd_list_element *c, const char *value) 2233 { 2234 fprintf_filtered (file, 2235 _("Mode for locking scheduler " 2236 "during execution is \"%s\".\n"), 2237 value); 2238 } 2239 2240 static void 2241 set_schedlock_func (char *args, int from_tty, struct cmd_list_element *c) 2242 { 2243 if (!target_can_lock_scheduler) 2244 { 2245 scheduler_mode = schedlock_off; 2246 error (_("Target '%s' cannot support this command."), target_shortname); 2247 } 2248 } 2249 2250 /* True if execution commands resume all threads of all processes by 2251 default; otherwise, resume only threads of the current inferior 2252 process. */ 2253 int sched_multi = 0; 2254 2255 /* Try to setup for software single stepping over the specified location. 2256 Return 1 if target_resume() should use hardware single step. 2257 2258 GDBARCH the current gdbarch. 2259 PC the location to step over. */ 2260 2261 static int 2262 maybe_software_singlestep (struct gdbarch *gdbarch, CORE_ADDR pc) 2263 { 2264 int hw_step = 1; 2265 2266 if (execution_direction == EXEC_FORWARD 2267 && gdbarch_software_single_step_p (gdbarch)) 2268 hw_step = !insert_single_step_breakpoints (gdbarch); 2269 2270 return hw_step; 2271 } 2272 2273 /* See infrun.h. */ 2274 2275 ptid_t 2276 user_visible_resume_ptid (int step) 2277 { 2278 ptid_t resume_ptid; 2279 2280 if (non_stop) 2281 { 2282 /* With non-stop mode on, threads are always handled 2283 individually. */ 2284 resume_ptid = inferior_ptid; 2285 } 2286 else if ((scheduler_mode == schedlock_on) 2287 || (scheduler_mode == schedlock_step && step)) 2288 { 2289 /* User-settable 'scheduler' mode requires solo thread 2290 resume. */ 2291 resume_ptid = inferior_ptid; 2292 } 2293 else if ((scheduler_mode == schedlock_replay) 2294 && target_record_will_replay (minus_one_ptid, execution_direction)) 2295 { 2296 /* User-settable 'scheduler' mode requires solo thread resume in replay 2297 mode. */ 2298 resume_ptid = inferior_ptid; 2299 } 2300 else if (!sched_multi && target_supports_multi_process ()) 2301 { 2302 /* Resume all threads of the current process (and none of other 2303 processes). */ 2304 resume_ptid = pid_to_ptid (ptid_get_pid (inferior_ptid)); 2305 } 2306 else 2307 { 2308 /* Resume all threads of all processes. */ 2309 resume_ptid = RESUME_ALL; 2310 } 2311 2312 return resume_ptid; 2313 } 2314 2315 /* Return a ptid representing the set of threads that we will resume, 2316 in the perspective of the target, assuming run control handling 2317 does not require leaving some threads stopped (e.g., stepping past 2318 breakpoint). USER_STEP indicates whether we're about to start the 2319 target for a stepping command. */ 2320 2321 static ptid_t 2322 internal_resume_ptid (int user_step) 2323 { 2324 /* In non-stop, we always control threads individually. Note that 2325 the target may always work in non-stop mode even with "set 2326 non-stop off", in which case user_visible_resume_ptid could 2327 return a wildcard ptid. */ 2328 if (target_is_non_stop_p ()) 2329 return inferior_ptid; 2330 else 2331 return user_visible_resume_ptid (user_step); 2332 } 2333 2334 /* Wrapper for target_resume, that handles infrun-specific 2335 bookkeeping. */ 2336 2337 static void 2338 do_target_resume (ptid_t resume_ptid, int step, enum gdb_signal sig) 2339 { 2340 struct thread_info *tp = inferior_thread (); 2341 2342 gdb_assert (!tp->stop_requested); 2343 2344 /* Install inferior's terminal modes. */ 2345 target_terminal_inferior (); 2346 2347 /* Avoid confusing the next resume, if the next stop/resume 2348 happens to apply to another thread. */ 2349 tp->suspend.stop_signal = GDB_SIGNAL_0; 2350 2351 /* Advise target which signals may be handled silently. 2352 2353 If we have removed breakpoints because we are stepping over one 2354 in-line (in any thread), we need to receive all signals to avoid 2355 accidentally skipping a breakpoint during execution of a signal 2356 handler. 2357 2358 Likewise if we're displaced stepping, otherwise a trap for a 2359 breakpoint in a signal handler might be confused with the 2360 displaced step finishing. We don't make the displaced_step_fixup 2361 step distinguish the cases instead, because: 2362 2363 - a backtrace while stopped in the signal handler would show the 2364 scratch pad as frame older than the signal handler, instead of 2365 the real mainline code. 2366 2367 - when the thread is later resumed, the signal handler would 2368 return to the scratch pad area, which would no longer be 2369 valid. */ 2370 if (step_over_info_valid_p () 2371 || displaced_step_in_progress (ptid_get_pid (tp->ptid))) 2372 target_pass_signals (0, NULL); 2373 else 2374 target_pass_signals ((int) GDB_SIGNAL_LAST, signal_pass); 2375 2376 target_resume (resume_ptid, step, sig); 2377 2378 target_commit_resume (); 2379 } 2380 2381 /* Resume the inferior, but allow a QUIT. This is useful if the user 2382 wants to interrupt some lengthy single-stepping operation 2383 (for child processes, the SIGINT goes to the inferior, and so 2384 we get a SIGINT random_signal, but for remote debugging and perhaps 2385 other targets, that's not true). 2386 2387 SIG is the signal to give the inferior (zero for none). */ 2388 void 2389 resume (enum gdb_signal sig) 2390 { 2391 struct cleanup *old_cleanups = make_cleanup (resume_cleanups, 0); 2392 struct regcache *regcache = get_current_regcache (); 2393 struct gdbarch *gdbarch = get_regcache_arch (regcache); 2394 struct thread_info *tp = inferior_thread (); 2395 CORE_ADDR pc = regcache_read_pc (regcache); 2396 struct address_space *aspace = get_regcache_aspace (regcache); 2397 ptid_t resume_ptid; 2398 /* This represents the user's step vs continue request. When 2399 deciding whether "set scheduler-locking step" applies, it's the 2400 user's intention that counts. */ 2401 const int user_step = tp->control.stepping_command; 2402 /* This represents what we'll actually request the target to do. 2403 This can decay from a step to a continue, if e.g., we need to 2404 implement single-stepping with breakpoints (software 2405 single-step). */ 2406 int step; 2407 2408 gdb_assert (!tp->stop_requested); 2409 gdb_assert (!thread_is_in_step_over_chain (tp)); 2410 2411 QUIT; 2412 2413 if (tp->suspend.waitstatus_pending_p) 2414 { 2415 if (debug_infrun) 2416 { 2417 char *statstr; 2418 2419 statstr = target_waitstatus_to_string (&tp->suspend.waitstatus); 2420 fprintf_unfiltered (gdb_stdlog, 2421 "infrun: resume: thread %s has pending wait status %s " 2422 "(currently_stepping=%d).\n", 2423 target_pid_to_str (tp->ptid), statstr, 2424 currently_stepping (tp)); 2425 xfree (statstr); 2426 } 2427 2428 tp->resumed = 1; 2429 2430 /* FIXME: What should we do if we are supposed to resume this 2431 thread with a signal? Maybe we should maintain a queue of 2432 pending signals to deliver. */ 2433 if (sig != GDB_SIGNAL_0) 2434 { 2435 warning (_("Couldn't deliver signal %s to %s."), 2436 gdb_signal_to_name (sig), target_pid_to_str (tp->ptid)); 2437 } 2438 2439 tp->suspend.stop_signal = GDB_SIGNAL_0; 2440 discard_cleanups (old_cleanups); 2441 2442 if (target_can_async_p ()) 2443 target_async (1); 2444 return; 2445 } 2446 2447 tp->stepped_breakpoint = 0; 2448 2449 /* Depends on stepped_breakpoint. */ 2450 step = currently_stepping (tp); 2451 2452 if (current_inferior ()->waiting_for_vfork_done) 2453 { 2454 /* Don't try to single-step a vfork parent that is waiting for 2455 the child to get out of the shared memory region (by exec'ing 2456 or exiting). This is particularly important on software 2457 single-step archs, as the child process would trip on the 2458 software single step breakpoint inserted for the parent 2459 process. Since the parent will not actually execute any 2460 instruction until the child is out of the shared region (such 2461 are vfork's semantics), it is safe to simply continue it. 2462 Eventually, we'll see a TARGET_WAITKIND_VFORK_DONE event for 2463 the parent, and tell it to `keep_going', which automatically 2464 re-sets it stepping. */ 2465 if (debug_infrun) 2466 fprintf_unfiltered (gdb_stdlog, 2467 "infrun: resume : clear step\n"); 2468 step = 0; 2469 } 2470 2471 if (debug_infrun) 2472 fprintf_unfiltered (gdb_stdlog, 2473 "infrun: resume (step=%d, signal=%s), " 2474 "trap_expected=%d, current thread [%s] at %s\n", 2475 step, gdb_signal_to_symbol_string (sig), 2476 tp->control.trap_expected, 2477 target_pid_to_str (inferior_ptid), 2478 paddress (gdbarch, pc)); 2479 2480 /* Normally, by the time we reach `resume', the breakpoints are either 2481 removed or inserted, as appropriate. The exception is if we're sitting 2482 at a permanent breakpoint; we need to step over it, but permanent 2483 breakpoints can't be removed. So we have to test for it here. */ 2484 if (breakpoint_here_p (aspace, pc) == permanent_breakpoint_here) 2485 { 2486 if (sig != GDB_SIGNAL_0) 2487 { 2488 /* We have a signal to pass to the inferior. The resume 2489 may, or may not take us to the signal handler. If this 2490 is a step, we'll need to stop in the signal handler, if 2491 there's one, (if the target supports stepping into 2492 handlers), or in the next mainline instruction, if 2493 there's no handler. If this is a continue, we need to be 2494 sure to run the handler with all breakpoints inserted. 2495 In all cases, set a breakpoint at the current address 2496 (where the handler returns to), and once that breakpoint 2497 is hit, resume skipping the permanent breakpoint. If 2498 that breakpoint isn't hit, then we've stepped into the 2499 signal handler (or hit some other event). We'll delete 2500 the step-resume breakpoint then. */ 2501 2502 if (debug_infrun) 2503 fprintf_unfiltered (gdb_stdlog, 2504 "infrun: resume: skipping permanent breakpoint, " 2505 "deliver signal first\n"); 2506 2507 clear_step_over_info (); 2508 tp->control.trap_expected = 0; 2509 2510 if (tp->control.step_resume_breakpoint == NULL) 2511 { 2512 /* Set a "high-priority" step-resume, as we don't want 2513 user breakpoints at PC to trigger (again) when this 2514 hits. */ 2515 insert_hp_step_resume_breakpoint_at_frame (get_current_frame ()); 2516 gdb_assert (tp->control.step_resume_breakpoint->loc->permanent); 2517 2518 tp->step_after_step_resume_breakpoint = step; 2519 } 2520 2521 insert_breakpoints (); 2522 } 2523 else 2524 { 2525 /* There's no signal to pass, we can go ahead and skip the 2526 permanent breakpoint manually. */ 2527 if (debug_infrun) 2528 fprintf_unfiltered (gdb_stdlog, 2529 "infrun: resume: skipping permanent breakpoint\n"); 2530 gdbarch_skip_permanent_breakpoint (gdbarch, regcache); 2531 /* Update pc to reflect the new address from which we will 2532 execute instructions. */ 2533 pc = regcache_read_pc (regcache); 2534 2535 if (step) 2536 { 2537 /* We've already advanced the PC, so the stepping part 2538 is done. Now we need to arrange for a trap to be 2539 reported to handle_inferior_event. Set a breakpoint 2540 at the current PC, and run to it. Don't update 2541 prev_pc, because if we end in 2542 switch_back_to_stepped_thread, we want the "expected 2543 thread advanced also" branch to be taken. IOW, we 2544 don't want this thread to step further from PC 2545 (overstep). */ 2546 gdb_assert (!step_over_info_valid_p ()); 2547 insert_single_step_breakpoint (gdbarch, aspace, pc); 2548 insert_breakpoints (); 2549 2550 resume_ptid = internal_resume_ptid (user_step); 2551 do_target_resume (resume_ptid, 0, GDB_SIGNAL_0); 2552 discard_cleanups (old_cleanups); 2553 tp->resumed = 1; 2554 return; 2555 } 2556 } 2557 } 2558 2559 /* If we have a breakpoint to step over, make sure to do a single 2560 step only. Same if we have software watchpoints. */ 2561 if (tp->control.trap_expected || bpstat_should_step ()) 2562 tp->control.may_range_step = 0; 2563 2564 /* If enabled, step over breakpoints by executing a copy of the 2565 instruction at a different address. 2566 2567 We can't use displaced stepping when we have a signal to deliver; 2568 the comments for displaced_step_prepare explain why. The 2569 comments in the handle_inferior event for dealing with 'random 2570 signals' explain what we do instead. 2571 2572 We can't use displaced stepping when we are waiting for vfork_done 2573 event, displaced stepping breaks the vfork child similarly as single 2574 step software breakpoint. */ 2575 if (tp->control.trap_expected 2576 && use_displaced_stepping (tp) 2577 && !step_over_info_valid_p () 2578 && sig == GDB_SIGNAL_0 2579 && !current_inferior ()->waiting_for_vfork_done) 2580 { 2581 int prepared = displaced_step_prepare (inferior_ptid); 2582 2583 if (prepared == 0) 2584 { 2585 if (debug_infrun) 2586 fprintf_unfiltered (gdb_stdlog, 2587 "Got placed in step-over queue\n"); 2588 2589 tp->control.trap_expected = 0; 2590 discard_cleanups (old_cleanups); 2591 return; 2592 } 2593 else if (prepared < 0) 2594 { 2595 /* Fallback to stepping over the breakpoint in-line. */ 2596 2597 if (target_is_non_stop_p ()) 2598 stop_all_threads (); 2599 2600 set_step_over_info (get_regcache_aspace (regcache), 2601 regcache_read_pc (regcache), 0, tp->global_num); 2602 2603 step = maybe_software_singlestep (gdbarch, pc); 2604 2605 insert_breakpoints (); 2606 } 2607 else if (prepared > 0) 2608 { 2609 struct displaced_step_inferior_state *displaced; 2610 2611 /* Update pc to reflect the new address from which we will 2612 execute instructions due to displaced stepping. */ 2613 pc = regcache_read_pc (get_thread_regcache (inferior_ptid)); 2614 2615 displaced = get_displaced_stepping_state (ptid_get_pid (inferior_ptid)); 2616 step = gdbarch_displaced_step_hw_singlestep (gdbarch, 2617 displaced->step_closure); 2618 } 2619 } 2620 2621 /* Do we need to do it the hard way, w/temp breakpoints? */ 2622 else if (step) 2623 step = maybe_software_singlestep (gdbarch, pc); 2624 2625 /* Currently, our software single-step implementation leads to different 2626 results than hardware single-stepping in one situation: when stepping 2627 into delivering a signal which has an associated signal handler, 2628 hardware single-step will stop at the first instruction of the handler, 2629 while software single-step will simply skip execution of the handler. 2630 2631 For now, this difference in behavior is accepted since there is no 2632 easy way to actually implement single-stepping into a signal handler 2633 without kernel support. 2634 2635 However, there is one scenario where this difference leads to follow-on 2636 problems: if we're stepping off a breakpoint by removing all breakpoints 2637 and then single-stepping. In this case, the software single-step 2638 behavior means that even if there is a *breakpoint* in the signal 2639 handler, GDB still would not stop. 2640 2641 Fortunately, we can at least fix this particular issue. We detect 2642 here the case where we are about to deliver a signal while software 2643 single-stepping with breakpoints removed. In this situation, we 2644 revert the decisions to remove all breakpoints and insert single- 2645 step breakpoints, and instead we install a step-resume breakpoint 2646 at the current address, deliver the signal without stepping, and 2647 once we arrive back at the step-resume breakpoint, actually step 2648 over the breakpoint we originally wanted to step over. */ 2649 if (thread_has_single_step_breakpoints_set (tp) 2650 && sig != GDB_SIGNAL_0 2651 && step_over_info_valid_p ()) 2652 { 2653 /* If we have nested signals or a pending signal is delivered 2654 immediately after a handler returns, might might already have 2655 a step-resume breakpoint set on the earlier handler. We cannot 2656 set another step-resume breakpoint; just continue on until the 2657 original breakpoint is hit. */ 2658 if (tp->control.step_resume_breakpoint == NULL) 2659 { 2660 insert_hp_step_resume_breakpoint_at_frame (get_current_frame ()); 2661 tp->step_after_step_resume_breakpoint = 1; 2662 } 2663 2664 delete_single_step_breakpoints (tp); 2665 2666 clear_step_over_info (); 2667 tp->control.trap_expected = 0; 2668 2669 insert_breakpoints (); 2670 } 2671 2672 /* If STEP is set, it's a request to use hardware stepping 2673 facilities. But in that case, we should never 2674 use singlestep breakpoint. */ 2675 gdb_assert (!(thread_has_single_step_breakpoints_set (tp) && step)); 2676 2677 /* Decide the set of threads to ask the target to resume. */ 2678 if (tp->control.trap_expected) 2679 { 2680 /* We're allowing a thread to run past a breakpoint it has 2681 hit, either by single-stepping the thread with the breakpoint 2682 removed, or by displaced stepping, with the breakpoint inserted. 2683 In the former case, we need to single-step only this thread, 2684 and keep others stopped, as they can miss this breakpoint if 2685 allowed to run. That's not really a problem for displaced 2686 stepping, but, we still keep other threads stopped, in case 2687 another thread is also stopped for a breakpoint waiting for 2688 its turn in the displaced stepping queue. */ 2689 resume_ptid = inferior_ptid; 2690 } 2691 else 2692 resume_ptid = internal_resume_ptid (user_step); 2693 2694 if (execution_direction != EXEC_REVERSE 2695 && step && breakpoint_inserted_here_p (aspace, pc)) 2696 { 2697 /* There are two cases where we currently need to step a 2698 breakpoint instruction when we have a signal to deliver: 2699 2700 - See handle_signal_stop where we handle random signals that 2701 could take out us out of the stepping range. Normally, in 2702 that case we end up continuing (instead of stepping) over the 2703 signal handler with a breakpoint at PC, but there are cases 2704 where we should _always_ single-step, even if we have a 2705 step-resume breakpoint, like when a software watchpoint is 2706 set. Assuming single-stepping and delivering a signal at the 2707 same time would takes us to the signal handler, then we could 2708 have removed the breakpoint at PC to step over it. However, 2709 some hardware step targets (like e.g., Mac OS) can't step 2710 into signal handlers, and for those, we need to leave the 2711 breakpoint at PC inserted, as otherwise if the handler 2712 recurses and executes PC again, it'll miss the breakpoint. 2713 So we leave the breakpoint inserted anyway, but we need to 2714 record that we tried to step a breakpoint instruction, so 2715 that adjust_pc_after_break doesn't end up confused. 2716 2717 - In non-stop if we insert a breakpoint (e.g., a step-resume) 2718 in one thread after another thread that was stepping had been 2719 momentarily paused for a step-over. When we re-resume the 2720 stepping thread, it may be resumed from that address with a 2721 breakpoint that hasn't trapped yet. Seen with 2722 gdb.threads/non-stop-fair-events.exp, on targets that don't 2723 do displaced stepping. */ 2724 2725 if (debug_infrun) 2726 fprintf_unfiltered (gdb_stdlog, 2727 "infrun: resume: [%s] stepped breakpoint\n", 2728 target_pid_to_str (tp->ptid)); 2729 2730 tp->stepped_breakpoint = 1; 2731 2732 /* Most targets can step a breakpoint instruction, thus 2733 executing it normally. But if this one cannot, just 2734 continue and we will hit it anyway. */ 2735 if (gdbarch_cannot_step_breakpoint (gdbarch)) 2736 step = 0; 2737 } 2738 2739 if (debug_displaced 2740 && tp->control.trap_expected 2741 && use_displaced_stepping (tp) 2742 && !step_over_info_valid_p ()) 2743 { 2744 struct regcache *resume_regcache = get_thread_regcache (tp->ptid); 2745 struct gdbarch *resume_gdbarch = get_regcache_arch (resume_regcache); 2746 CORE_ADDR actual_pc = regcache_read_pc (resume_regcache); 2747 gdb_byte buf[4]; 2748 2749 fprintf_unfiltered (gdb_stdlog, "displaced: run %s: ", 2750 paddress (resume_gdbarch, actual_pc)); 2751 read_memory (actual_pc, buf, sizeof (buf)); 2752 displaced_step_dump_bytes (gdb_stdlog, buf, sizeof (buf)); 2753 } 2754 2755 if (tp->control.may_range_step) 2756 { 2757 /* If we're resuming a thread with the PC out of the step 2758 range, then we're doing some nested/finer run control 2759 operation, like stepping the thread out of the dynamic 2760 linker or the displaced stepping scratch pad. We 2761 shouldn't have allowed a range step then. */ 2762 gdb_assert (pc_in_thread_step_range (pc, tp)); 2763 } 2764 2765 do_target_resume (resume_ptid, step, sig); 2766 tp->resumed = 1; 2767 discard_cleanups (old_cleanups); 2768 } 2769 2770 /* Proceeding. */ 2771 2772 /* See infrun.h. */ 2773 2774 /* Counter that tracks number of user visible stops. This can be used 2775 to tell whether a command has proceeded the inferior past the 2776 current location. This allows e.g., inferior function calls in 2777 breakpoint commands to not interrupt the command list. When the 2778 call finishes successfully, the inferior is standing at the same 2779 breakpoint as if nothing happened (and so we don't call 2780 normal_stop). */ 2781 static ULONGEST current_stop_id; 2782 2783 /* See infrun.h. */ 2784 2785 ULONGEST 2786 get_stop_id (void) 2787 { 2788 return current_stop_id; 2789 } 2790 2791 /* Called when we report a user visible stop. */ 2792 2793 static void 2794 new_stop_id (void) 2795 { 2796 current_stop_id++; 2797 } 2798 2799 /* Clear out all variables saying what to do when inferior is continued. 2800 First do this, then set the ones you want, then call `proceed'. */ 2801 2802 static void 2803 clear_proceed_status_thread (struct thread_info *tp) 2804 { 2805 if (debug_infrun) 2806 fprintf_unfiltered (gdb_stdlog, 2807 "infrun: clear_proceed_status_thread (%s)\n", 2808 target_pid_to_str (tp->ptid)); 2809 2810 /* If we're starting a new sequence, then the previous finished 2811 single-step is no longer relevant. */ 2812 if (tp->suspend.waitstatus_pending_p) 2813 { 2814 if (tp->suspend.stop_reason == TARGET_STOPPED_BY_SINGLE_STEP) 2815 { 2816 if (debug_infrun) 2817 fprintf_unfiltered (gdb_stdlog, 2818 "infrun: clear_proceed_status: pending " 2819 "event of %s was a finished step. " 2820 "Discarding.\n", 2821 target_pid_to_str (tp->ptid)); 2822 2823 tp->suspend.waitstatus_pending_p = 0; 2824 tp->suspend.stop_reason = TARGET_STOPPED_BY_NO_REASON; 2825 } 2826 else if (debug_infrun) 2827 { 2828 char *statstr; 2829 2830 statstr = target_waitstatus_to_string (&tp->suspend.waitstatus); 2831 fprintf_unfiltered (gdb_stdlog, 2832 "infrun: clear_proceed_status_thread: thread %s " 2833 "has pending wait status %s " 2834 "(currently_stepping=%d).\n", 2835 target_pid_to_str (tp->ptid), statstr, 2836 currently_stepping (tp)); 2837 xfree (statstr); 2838 } 2839 } 2840 2841 /* If this signal should not be seen by program, give it zero. 2842 Used for debugging signals. */ 2843 if (!signal_pass_state (tp->suspend.stop_signal)) 2844 tp->suspend.stop_signal = GDB_SIGNAL_0; 2845 2846 thread_fsm_delete (tp->thread_fsm); 2847 tp->thread_fsm = NULL; 2848 2849 tp->control.trap_expected = 0; 2850 tp->control.step_range_start = 0; 2851 tp->control.step_range_end = 0; 2852 tp->control.may_range_step = 0; 2853 tp->control.step_frame_id = null_frame_id; 2854 tp->control.step_stack_frame_id = null_frame_id; 2855 tp->control.step_over_calls = STEP_OVER_UNDEBUGGABLE; 2856 tp->control.step_start_function = NULL; 2857 tp->stop_requested = 0; 2858 2859 tp->control.stop_step = 0; 2860 2861 tp->control.proceed_to_finish = 0; 2862 2863 tp->control.stepping_command = 0; 2864 2865 /* Discard any remaining commands or status from previous stop. */ 2866 bpstat_clear (&tp->control.stop_bpstat); 2867 } 2868 2869 void 2870 clear_proceed_status (int step) 2871 { 2872 /* With scheduler-locking replay, stop replaying other threads if we're 2873 not replaying the user-visible resume ptid. 2874 2875 This is a convenience feature to not require the user to explicitly 2876 stop replaying the other threads. We're assuming that the user's 2877 intent is to resume tracing the recorded process. */ 2878 if (!non_stop && scheduler_mode == schedlock_replay 2879 && target_record_is_replaying (minus_one_ptid) 2880 && !target_record_will_replay (user_visible_resume_ptid (step), 2881 execution_direction)) 2882 target_record_stop_replaying (); 2883 2884 if (!non_stop) 2885 { 2886 struct thread_info *tp; 2887 ptid_t resume_ptid; 2888 2889 resume_ptid = user_visible_resume_ptid (step); 2890 2891 /* In all-stop mode, delete the per-thread status of all threads 2892 we're about to resume, implicitly and explicitly. */ 2893 ALL_NON_EXITED_THREADS (tp) 2894 { 2895 if (!ptid_match (tp->ptid, resume_ptid)) 2896 continue; 2897 clear_proceed_status_thread (tp); 2898 } 2899 } 2900 2901 if (!ptid_equal (inferior_ptid, null_ptid)) 2902 { 2903 struct inferior *inferior; 2904 2905 if (non_stop) 2906 { 2907 /* If in non-stop mode, only delete the per-thread status of 2908 the current thread. */ 2909 clear_proceed_status_thread (inferior_thread ()); 2910 } 2911 2912 inferior = current_inferior (); 2913 inferior->control.stop_soon = NO_STOP_QUIETLY; 2914 } 2915 2916 observer_notify_about_to_proceed (); 2917 } 2918 2919 /* Returns true if TP is still stopped at a breakpoint that needs 2920 stepping-over in order to make progress. If the breakpoint is gone 2921 meanwhile, we can skip the whole step-over dance. */ 2922 2923 static int 2924 thread_still_needs_step_over_bp (struct thread_info *tp) 2925 { 2926 if (tp->stepping_over_breakpoint) 2927 { 2928 struct regcache *regcache = get_thread_regcache (tp->ptid); 2929 2930 if (breakpoint_here_p (get_regcache_aspace (regcache), 2931 regcache_read_pc (regcache)) 2932 == ordinary_breakpoint_here) 2933 return 1; 2934 2935 tp->stepping_over_breakpoint = 0; 2936 } 2937 2938 return 0; 2939 } 2940 2941 /* Check whether thread TP still needs to start a step-over in order 2942 to make progress when resumed. Returns an bitwise or of enum 2943 step_over_what bits, indicating what needs to be stepped over. */ 2944 2945 static step_over_what 2946 thread_still_needs_step_over (struct thread_info *tp) 2947 { 2948 step_over_what what = 0; 2949 2950 if (thread_still_needs_step_over_bp (tp)) 2951 what |= STEP_OVER_BREAKPOINT; 2952 2953 if (tp->stepping_over_watchpoint 2954 && !target_have_steppable_watchpoint) 2955 what |= STEP_OVER_WATCHPOINT; 2956 2957 return what; 2958 } 2959 2960 /* Returns true if scheduler locking applies. STEP indicates whether 2961 we're about to do a step/next-like command to a thread. */ 2962 2963 static int 2964 schedlock_applies (struct thread_info *tp) 2965 { 2966 return (scheduler_mode == schedlock_on 2967 || (scheduler_mode == schedlock_step 2968 && tp->control.stepping_command) 2969 || (scheduler_mode == schedlock_replay 2970 && target_record_will_replay (minus_one_ptid, 2971 execution_direction))); 2972 } 2973 2974 /* Basic routine for continuing the program in various fashions. 2975 2976 ADDR is the address to resume at, or -1 for resume where stopped. 2977 SIGGNAL is the signal to give it, or 0 for none, 2978 or -1 for act according to how it stopped. 2979 STEP is nonzero if should trap after one instruction. 2980 -1 means return after that and print nothing. 2981 You should probably set various step_... variables 2982 before calling here, if you are stepping. 2983 2984 You should call clear_proceed_status before calling proceed. */ 2985 2986 void 2987 proceed (CORE_ADDR addr, enum gdb_signal siggnal) 2988 { 2989 struct regcache *regcache; 2990 struct gdbarch *gdbarch; 2991 struct thread_info *tp; 2992 CORE_ADDR pc; 2993 struct address_space *aspace; 2994 ptid_t resume_ptid; 2995 struct execution_control_state ecss; 2996 struct execution_control_state *ecs = &ecss; 2997 struct cleanup *old_chain; 2998 struct cleanup *defer_resume_cleanup; 2999 int started; 3000 3001 /* If we're stopped at a fork/vfork, follow the branch set by the 3002 "set follow-fork-mode" command; otherwise, we'll just proceed 3003 resuming the current thread. */ 3004 if (!follow_fork ()) 3005 { 3006 /* The target for some reason decided not to resume. */ 3007 normal_stop (); 3008 if (target_can_async_p ()) 3009 inferior_event_handler (INF_EXEC_COMPLETE, NULL); 3010 return; 3011 } 3012 3013 /* We'll update this if & when we switch to a new thread. */ 3014 previous_inferior_ptid = inferior_ptid; 3015 3016 regcache = get_current_regcache (); 3017 gdbarch = get_regcache_arch (regcache); 3018 aspace = get_regcache_aspace (regcache); 3019 pc = regcache_read_pc (regcache); 3020 tp = inferior_thread (); 3021 3022 /* Fill in with reasonable starting values. */ 3023 init_thread_stepping_state (tp); 3024 3025 gdb_assert (!thread_is_in_step_over_chain (tp)); 3026 3027 if (addr == (CORE_ADDR) -1) 3028 { 3029 if (pc == stop_pc 3030 && breakpoint_here_p (aspace, pc) == ordinary_breakpoint_here 3031 && execution_direction != EXEC_REVERSE) 3032 /* There is a breakpoint at the address we will resume at, 3033 step one instruction before inserting breakpoints so that 3034 we do not stop right away (and report a second hit at this 3035 breakpoint). 3036 3037 Note, we don't do this in reverse, because we won't 3038 actually be executing the breakpoint insn anyway. 3039 We'll be (un-)executing the previous instruction. */ 3040 tp->stepping_over_breakpoint = 1; 3041 else if (gdbarch_single_step_through_delay_p (gdbarch) 3042 && gdbarch_single_step_through_delay (gdbarch, 3043 get_current_frame ())) 3044 /* We stepped onto an instruction that needs to be stepped 3045 again before re-inserting the breakpoint, do so. */ 3046 tp->stepping_over_breakpoint = 1; 3047 } 3048 else 3049 { 3050 regcache_write_pc (regcache, addr); 3051 } 3052 3053 if (siggnal != GDB_SIGNAL_DEFAULT) 3054 tp->suspend.stop_signal = siggnal; 3055 3056 resume_ptid = user_visible_resume_ptid (tp->control.stepping_command); 3057 3058 /* If an exception is thrown from this point on, make sure to 3059 propagate GDB's knowledge of the executing state to the 3060 frontend/user running state. */ 3061 old_chain = make_cleanup (finish_thread_state_cleanup, &resume_ptid); 3062 3063 /* Even if RESUME_PTID is a wildcard, and we end up resuming fewer 3064 threads (e.g., we might need to set threads stepping over 3065 breakpoints first), from the user/frontend's point of view, all 3066 threads in RESUME_PTID are now running. Unless we're calling an 3067 inferior function, as in that case we pretend the inferior 3068 doesn't run at all. */ 3069 if (!tp->control.in_infcall) 3070 set_running (resume_ptid, 1); 3071 3072 if (debug_infrun) 3073 fprintf_unfiltered (gdb_stdlog, 3074 "infrun: proceed (addr=%s, signal=%s)\n", 3075 paddress (gdbarch, addr), 3076 gdb_signal_to_symbol_string (siggnal)); 3077 3078 annotate_starting (); 3079 3080 /* Make sure that output from GDB appears before output from the 3081 inferior. */ 3082 gdb_flush (gdb_stdout); 3083 3084 /* In a multi-threaded task we may select another thread and 3085 then continue or step. 3086 3087 But if a thread that we're resuming had stopped at a breakpoint, 3088 it will immediately cause another breakpoint stop without any 3089 execution (i.e. it will report a breakpoint hit incorrectly). So 3090 we must step over it first. 3091 3092 Look for threads other than the current (TP) that reported a 3093 breakpoint hit and haven't been resumed yet since. */ 3094 3095 /* If scheduler locking applies, we can avoid iterating over all 3096 threads. */ 3097 if (!non_stop && !schedlock_applies (tp)) 3098 { 3099 struct thread_info *current = tp; 3100 3101 ALL_NON_EXITED_THREADS (tp) 3102 { 3103 /* Ignore the current thread here. It's handled 3104 afterwards. */ 3105 if (tp == current) 3106 continue; 3107 3108 /* Ignore threads of processes we're not resuming. */ 3109 if (!ptid_match (tp->ptid, resume_ptid)) 3110 continue; 3111 3112 if (!thread_still_needs_step_over (tp)) 3113 continue; 3114 3115 gdb_assert (!thread_is_in_step_over_chain (tp)); 3116 3117 if (debug_infrun) 3118 fprintf_unfiltered (gdb_stdlog, 3119 "infrun: need to step-over [%s] first\n", 3120 target_pid_to_str (tp->ptid)); 3121 3122 thread_step_over_chain_enqueue (tp); 3123 } 3124 3125 tp = current; 3126 } 3127 3128 /* Enqueue the current thread last, so that we move all other 3129 threads over their breakpoints first. */ 3130 if (tp->stepping_over_breakpoint) 3131 thread_step_over_chain_enqueue (tp); 3132 3133 /* If the thread isn't started, we'll still need to set its prev_pc, 3134 so that switch_back_to_stepped_thread knows the thread hasn't 3135 advanced. Must do this before resuming any thread, as in 3136 all-stop/remote, once we resume we can't send any other packet 3137 until the target stops again. */ 3138 tp->prev_pc = regcache_read_pc (regcache); 3139 3140 defer_resume_cleanup = make_cleanup_defer_target_commit_resume (); 3141 3142 started = start_step_over (); 3143 3144 if (step_over_info_valid_p ()) 3145 { 3146 /* Either this thread started a new in-line step over, or some 3147 other thread was already doing one. In either case, don't 3148 resume anything else until the step-over is finished. */ 3149 } 3150 else if (started && !target_is_non_stop_p ()) 3151 { 3152 /* A new displaced stepping sequence was started. In all-stop, 3153 we can't talk to the target anymore until it next stops. */ 3154 } 3155 else if (!non_stop && target_is_non_stop_p ()) 3156 { 3157 /* In all-stop, but the target is always in non-stop mode. 3158 Start all other threads that are implicitly resumed too. */ 3159 ALL_NON_EXITED_THREADS (tp) 3160 { 3161 /* Ignore threads of processes we're not resuming. */ 3162 if (!ptid_match (tp->ptid, resume_ptid)) 3163 continue; 3164 3165 if (tp->resumed) 3166 { 3167 if (debug_infrun) 3168 fprintf_unfiltered (gdb_stdlog, 3169 "infrun: proceed: [%s] resumed\n", 3170 target_pid_to_str (tp->ptid)); 3171 gdb_assert (tp->executing || tp->suspend.waitstatus_pending_p); 3172 continue; 3173 } 3174 3175 if (thread_is_in_step_over_chain (tp)) 3176 { 3177 if (debug_infrun) 3178 fprintf_unfiltered (gdb_stdlog, 3179 "infrun: proceed: [%s] needs step-over\n", 3180 target_pid_to_str (tp->ptid)); 3181 continue; 3182 } 3183 3184 if (debug_infrun) 3185 fprintf_unfiltered (gdb_stdlog, 3186 "infrun: proceed: resuming %s\n", 3187 target_pid_to_str (tp->ptid)); 3188 3189 reset_ecs (ecs, tp); 3190 switch_to_thread (tp->ptid); 3191 keep_going_pass_signal (ecs); 3192 if (!ecs->wait_some_more) 3193 error (_("Command aborted.")); 3194 } 3195 } 3196 else if (!tp->resumed && !thread_is_in_step_over_chain (tp)) 3197 { 3198 /* The thread wasn't started, and isn't queued, run it now. */ 3199 reset_ecs (ecs, tp); 3200 switch_to_thread (tp->ptid); 3201 keep_going_pass_signal (ecs); 3202 if (!ecs->wait_some_more) 3203 error (_("Command aborted.")); 3204 } 3205 3206 do_cleanups (defer_resume_cleanup); 3207 target_commit_resume (); 3208 3209 discard_cleanups (old_chain); 3210 3211 /* Tell the event loop to wait for it to stop. If the target 3212 supports asynchronous execution, it'll do this from within 3213 target_resume. */ 3214 if (!target_can_async_p ()) 3215 mark_async_event_handler (infrun_async_inferior_event_token); 3216 } 3217 3218 3219 /* Start remote-debugging of a machine over a serial link. */ 3220 3221 void 3222 start_remote (int from_tty) 3223 { 3224 struct inferior *inferior; 3225 3226 inferior = current_inferior (); 3227 inferior->control.stop_soon = STOP_QUIETLY_REMOTE; 3228 3229 /* Always go on waiting for the target, regardless of the mode. */ 3230 /* FIXME: cagney/1999-09-23: At present it isn't possible to 3231 indicate to wait_for_inferior that a target should timeout if 3232 nothing is returned (instead of just blocking). Because of this, 3233 targets expecting an immediate response need to, internally, set 3234 things up so that the target_wait() is forced to eventually 3235 timeout. */ 3236 /* FIXME: cagney/1999-09-24: It isn't possible for target_open() to 3237 differentiate to its caller what the state of the target is after 3238 the initial open has been performed. Here we're assuming that 3239 the target has stopped. It should be possible to eventually have 3240 target_open() return to the caller an indication that the target 3241 is currently running and GDB state should be set to the same as 3242 for an async run. */ 3243 wait_for_inferior (); 3244 3245 /* Now that the inferior has stopped, do any bookkeeping like 3246 loading shared libraries. We want to do this before normal_stop, 3247 so that the displayed frame is up to date. */ 3248 post_create_inferior (¤t_target, from_tty); 3249 3250 normal_stop (); 3251 } 3252 3253 /* Initialize static vars when a new inferior begins. */ 3254 3255 void 3256 init_wait_for_inferior (void) 3257 { 3258 /* These are meaningless until the first time through wait_for_inferior. */ 3259 3260 breakpoint_init_inferior (inf_starting); 3261 3262 clear_proceed_status (0); 3263 3264 target_last_wait_ptid = minus_one_ptid; 3265 3266 previous_inferior_ptid = inferior_ptid; 3267 3268 /* Discard any skipped inlined frames. */ 3269 clear_inline_frame_state (minus_one_ptid); 3270 } 3271 3272 3273 3274 static void handle_inferior_event (struct execution_control_state *ecs); 3275 3276 static void handle_step_into_function (struct gdbarch *gdbarch, 3277 struct execution_control_state *ecs); 3278 static void handle_step_into_function_backward (struct gdbarch *gdbarch, 3279 struct execution_control_state *ecs); 3280 static void handle_signal_stop (struct execution_control_state *ecs); 3281 static void check_exception_resume (struct execution_control_state *, 3282 struct frame_info *); 3283 3284 static void end_stepping_range (struct execution_control_state *ecs); 3285 static void stop_waiting (struct execution_control_state *ecs); 3286 static void keep_going (struct execution_control_state *ecs); 3287 static void process_event_stop_test (struct execution_control_state *ecs); 3288 static int switch_back_to_stepped_thread (struct execution_control_state *ecs); 3289 3290 /* This function is attached as a "thread_stop_requested" observer. 3291 Cleanup local state that assumed the PTID was to be resumed, and 3292 report the stop to the frontend. */ 3293 3294 static void 3295 infrun_thread_stop_requested (ptid_t ptid) 3296 { 3297 struct thread_info *tp; 3298 3299 /* PTID was requested to stop. If the thread was already stopped, 3300 but the user/frontend doesn't know about that yet (e.g., the 3301 thread had been temporarily paused for some step-over), set up 3302 for reporting the stop now. */ 3303 ALL_NON_EXITED_THREADS (tp) 3304 if (ptid_match (tp->ptid, ptid)) 3305 { 3306 if (tp->state != THREAD_RUNNING) 3307 continue; 3308 if (tp->executing) 3309 continue; 3310 3311 /* Remove matching threads from the step-over queue, so 3312 start_step_over doesn't try to resume them 3313 automatically. */ 3314 if (thread_is_in_step_over_chain (tp)) 3315 thread_step_over_chain_remove (tp); 3316 3317 /* If the thread is stopped, but the user/frontend doesn't 3318 know about that yet, queue a pending event, as if the 3319 thread had just stopped now. Unless the thread already had 3320 a pending event. */ 3321 if (!tp->suspend.waitstatus_pending_p) 3322 { 3323 tp->suspend.waitstatus_pending_p = 1; 3324 tp->suspend.waitstatus.kind = TARGET_WAITKIND_STOPPED; 3325 tp->suspend.waitstatus.value.sig = GDB_SIGNAL_0; 3326 } 3327 3328 /* Clear the inline-frame state, since we're re-processing the 3329 stop. */ 3330 clear_inline_frame_state (tp->ptid); 3331 3332 /* If this thread was paused because some other thread was 3333 doing an inline-step over, let that finish first. Once 3334 that happens, we'll restart all threads and consume pending 3335 stop events then. */ 3336 if (step_over_info_valid_p ()) 3337 continue; 3338 3339 /* Otherwise we can process the (new) pending event now. Set 3340 it so this pending event is considered by 3341 do_target_wait. */ 3342 tp->resumed = 1; 3343 } 3344 } 3345 3346 static void 3347 infrun_thread_thread_exit (struct thread_info *tp, int silent) 3348 { 3349 if (ptid_equal (target_last_wait_ptid, tp->ptid)) 3350 nullify_last_target_wait_ptid (); 3351 } 3352 3353 /* Delete the step resume, single-step and longjmp/exception resume 3354 breakpoints of TP. */ 3355 3356 static void 3357 delete_thread_infrun_breakpoints (struct thread_info *tp) 3358 { 3359 delete_step_resume_breakpoint (tp); 3360 delete_exception_resume_breakpoint (tp); 3361 delete_single_step_breakpoints (tp); 3362 } 3363 3364 /* If the target still has execution, call FUNC for each thread that 3365 just stopped. In all-stop, that's all the non-exited threads; in 3366 non-stop, that's the current thread, only. */ 3367 3368 typedef void (*for_each_just_stopped_thread_callback_func) 3369 (struct thread_info *tp); 3370 3371 static void 3372 for_each_just_stopped_thread (for_each_just_stopped_thread_callback_func func) 3373 { 3374 if (!target_has_execution || ptid_equal (inferior_ptid, null_ptid)) 3375 return; 3376 3377 if (target_is_non_stop_p ()) 3378 { 3379 /* If in non-stop mode, only the current thread stopped. */ 3380 func (inferior_thread ()); 3381 } 3382 else 3383 { 3384 struct thread_info *tp; 3385 3386 /* In all-stop mode, all threads have stopped. */ 3387 ALL_NON_EXITED_THREADS (tp) 3388 { 3389 func (tp); 3390 } 3391 } 3392 } 3393 3394 /* Delete the step resume and longjmp/exception resume breakpoints of 3395 the threads that just stopped. */ 3396 3397 static void 3398 delete_just_stopped_threads_infrun_breakpoints (void) 3399 { 3400 for_each_just_stopped_thread (delete_thread_infrun_breakpoints); 3401 } 3402 3403 /* Delete the single-step breakpoints of the threads that just 3404 stopped. */ 3405 3406 static void 3407 delete_just_stopped_threads_single_step_breakpoints (void) 3408 { 3409 for_each_just_stopped_thread (delete_single_step_breakpoints); 3410 } 3411 3412 /* A cleanup wrapper. */ 3413 3414 static void 3415 delete_just_stopped_threads_infrun_breakpoints_cleanup (void *arg) 3416 { 3417 delete_just_stopped_threads_infrun_breakpoints (); 3418 } 3419 3420 /* See infrun.h. */ 3421 3422 void 3423 print_target_wait_results (ptid_t waiton_ptid, ptid_t result_ptid, 3424 const struct target_waitstatus *ws) 3425 { 3426 char *status_string = target_waitstatus_to_string (ws); 3427 string_file stb; 3428 3429 /* The text is split over several lines because it was getting too long. 3430 Call fprintf_unfiltered (gdb_stdlog) once so that the text is still 3431 output as a unit; we want only one timestamp printed if debug_timestamp 3432 is set. */ 3433 3434 stb.printf ("infrun: target_wait (%d.%ld.%ld", 3435 ptid_get_pid (waiton_ptid), 3436 ptid_get_lwp (waiton_ptid), 3437 ptid_get_tid (waiton_ptid)); 3438 if (ptid_get_pid (waiton_ptid) != -1) 3439 stb.printf (" [%s]", target_pid_to_str (waiton_ptid)); 3440 stb.printf (", status) =\n"); 3441 stb.printf ("infrun: %d.%ld.%ld [%s],\n", 3442 ptid_get_pid (result_ptid), 3443 ptid_get_lwp (result_ptid), 3444 ptid_get_tid (result_ptid), 3445 target_pid_to_str (result_ptid)); 3446 stb.printf ("infrun: %s\n", status_string); 3447 3448 /* This uses %s in part to handle %'s in the text, but also to avoid 3449 a gcc error: the format attribute requires a string literal. */ 3450 fprintf_unfiltered (gdb_stdlog, "%s", stb.c_str ()); 3451 3452 xfree (status_string); 3453 } 3454 3455 /* Select a thread at random, out of those which are resumed and have 3456 had events. */ 3457 3458 static struct thread_info * 3459 random_pending_event_thread (ptid_t waiton_ptid) 3460 { 3461 struct thread_info *event_tp; 3462 int num_events = 0; 3463 int random_selector; 3464 3465 /* First see how many events we have. Count only resumed threads 3466 that have an event pending. */ 3467 ALL_NON_EXITED_THREADS (event_tp) 3468 if (ptid_match (event_tp->ptid, waiton_ptid) 3469 && event_tp->resumed 3470 && event_tp->suspend.waitstatus_pending_p) 3471 num_events++; 3472 3473 if (num_events == 0) 3474 return NULL; 3475 3476 /* Now randomly pick a thread out of those that have had events. */ 3477 random_selector = (int) 3478 ((num_events * (double) rand ()) / (RAND_MAX + 1.0)); 3479 3480 if (debug_infrun && num_events > 1) 3481 fprintf_unfiltered (gdb_stdlog, 3482 "infrun: Found %d events, selecting #%d\n", 3483 num_events, random_selector); 3484 3485 /* Select the Nth thread that has had an event. */ 3486 ALL_NON_EXITED_THREADS (event_tp) 3487 if (ptid_match (event_tp->ptid, waiton_ptid) 3488 && event_tp->resumed 3489 && event_tp->suspend.waitstatus_pending_p) 3490 if (random_selector-- == 0) 3491 break; 3492 3493 return event_tp; 3494 } 3495 3496 /* Wrapper for target_wait that first checks whether threads have 3497 pending statuses to report before actually asking the target for 3498 more events. */ 3499 3500 static ptid_t 3501 do_target_wait (ptid_t ptid, struct target_waitstatus *status, int options) 3502 { 3503 ptid_t event_ptid; 3504 struct thread_info *tp; 3505 3506 /* First check if there is a resumed thread with a wait status 3507 pending. */ 3508 if (ptid_equal (ptid, minus_one_ptid) || ptid_is_pid (ptid)) 3509 { 3510 tp = random_pending_event_thread (ptid); 3511 } 3512 else 3513 { 3514 if (debug_infrun) 3515 fprintf_unfiltered (gdb_stdlog, 3516 "infrun: Waiting for specific thread %s.\n", 3517 target_pid_to_str (ptid)); 3518 3519 /* We have a specific thread to check. */ 3520 tp = find_thread_ptid (ptid); 3521 gdb_assert (tp != NULL); 3522 if (!tp->suspend.waitstatus_pending_p) 3523 tp = NULL; 3524 } 3525 3526 if (tp != NULL 3527 && (tp->suspend.stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT 3528 || tp->suspend.stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT)) 3529 { 3530 struct regcache *regcache = get_thread_regcache (tp->ptid); 3531 struct gdbarch *gdbarch = get_regcache_arch (regcache); 3532 CORE_ADDR pc; 3533 int discard = 0; 3534 3535 pc = regcache_read_pc (regcache); 3536 3537 if (pc != tp->suspend.stop_pc) 3538 { 3539 if (debug_infrun) 3540 fprintf_unfiltered (gdb_stdlog, 3541 "infrun: PC of %s changed. was=%s, now=%s\n", 3542 target_pid_to_str (tp->ptid), 3543 paddress (gdbarch, tp->prev_pc), 3544 paddress (gdbarch, pc)); 3545 discard = 1; 3546 } 3547 else if (!breakpoint_inserted_here_p (get_regcache_aspace (regcache), pc)) 3548 { 3549 if (debug_infrun) 3550 fprintf_unfiltered (gdb_stdlog, 3551 "infrun: previous breakpoint of %s, at %s gone\n", 3552 target_pid_to_str (tp->ptid), 3553 paddress (gdbarch, pc)); 3554 3555 discard = 1; 3556 } 3557 3558 if (discard) 3559 { 3560 if (debug_infrun) 3561 fprintf_unfiltered (gdb_stdlog, 3562 "infrun: pending event of %s cancelled.\n", 3563 target_pid_to_str (tp->ptid)); 3564 3565 tp->suspend.waitstatus.kind = TARGET_WAITKIND_SPURIOUS; 3566 tp->suspend.stop_reason = TARGET_STOPPED_BY_NO_REASON; 3567 } 3568 } 3569 3570 if (tp != NULL) 3571 { 3572 if (debug_infrun) 3573 { 3574 char *statstr; 3575 3576 statstr = target_waitstatus_to_string (&tp->suspend.waitstatus); 3577 fprintf_unfiltered (gdb_stdlog, 3578 "infrun: Using pending wait status %s for %s.\n", 3579 statstr, 3580 target_pid_to_str (tp->ptid)); 3581 xfree (statstr); 3582 } 3583 3584 /* Now that we've selected our final event LWP, un-adjust its PC 3585 if it was a software breakpoint (and the target doesn't 3586 always adjust the PC itself). */ 3587 if (tp->suspend.stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT 3588 && !target_supports_stopped_by_sw_breakpoint ()) 3589 { 3590 struct regcache *regcache; 3591 struct gdbarch *gdbarch; 3592 int decr_pc; 3593 3594 regcache = get_thread_regcache (tp->ptid); 3595 gdbarch = get_regcache_arch (regcache); 3596 3597 decr_pc = gdbarch_decr_pc_after_break (gdbarch); 3598 if (decr_pc != 0) 3599 { 3600 CORE_ADDR pc; 3601 3602 pc = regcache_read_pc (regcache); 3603 regcache_write_pc (regcache, pc + decr_pc); 3604 } 3605 } 3606 3607 tp->suspend.stop_reason = TARGET_STOPPED_BY_NO_REASON; 3608 *status = tp->suspend.waitstatus; 3609 tp->suspend.waitstatus_pending_p = 0; 3610 3611 /* Wake up the event loop again, until all pending events are 3612 processed. */ 3613 if (target_is_async_p ()) 3614 mark_async_event_handler (infrun_async_inferior_event_token); 3615 return tp->ptid; 3616 } 3617 3618 /* But if we don't find one, we'll have to wait. */ 3619 3620 if (deprecated_target_wait_hook) 3621 event_ptid = deprecated_target_wait_hook (ptid, status, options); 3622 else 3623 event_ptid = target_wait (ptid, status, options); 3624 3625 return event_ptid; 3626 } 3627 3628 /* Prepare and stabilize the inferior for detaching it. E.g., 3629 detaching while a thread is displaced stepping is a recipe for 3630 crashing it, as nothing would readjust the PC out of the scratch 3631 pad. */ 3632 3633 void 3634 prepare_for_detach (void) 3635 { 3636 struct inferior *inf = current_inferior (); 3637 ptid_t pid_ptid = pid_to_ptid (inf->pid); 3638 struct cleanup *old_chain_1; 3639 struct displaced_step_inferior_state *displaced; 3640 3641 displaced = get_displaced_stepping_state (inf->pid); 3642 3643 /* Is any thread of this process displaced stepping? If not, 3644 there's nothing else to do. */ 3645 if (displaced == NULL || ptid_equal (displaced->step_ptid, null_ptid)) 3646 return; 3647 3648 if (debug_infrun) 3649 fprintf_unfiltered (gdb_stdlog, 3650 "displaced-stepping in-process while detaching"); 3651 3652 old_chain_1 = make_cleanup_restore_integer (&inf->detaching); 3653 inf->detaching = 1; 3654 3655 while (!ptid_equal (displaced->step_ptid, null_ptid)) 3656 { 3657 struct cleanup *old_chain_2; 3658 struct execution_control_state ecss; 3659 struct execution_control_state *ecs; 3660 3661 ecs = &ecss; 3662 memset (ecs, 0, sizeof (*ecs)); 3663 3664 overlay_cache_invalid = 1; 3665 /* Flush target cache before starting to handle each event. 3666 Target was running and cache could be stale. This is just a 3667 heuristic. Running threads may modify target memory, but we 3668 don't get any event. */ 3669 target_dcache_invalidate (); 3670 3671 ecs->ptid = do_target_wait (pid_ptid, &ecs->ws, 0); 3672 3673 if (debug_infrun) 3674 print_target_wait_results (pid_ptid, ecs->ptid, &ecs->ws); 3675 3676 /* If an error happens while handling the event, propagate GDB's 3677 knowledge of the executing state to the frontend/user running 3678 state. */ 3679 old_chain_2 = make_cleanup (finish_thread_state_cleanup, 3680 &minus_one_ptid); 3681 3682 /* Now figure out what to do with the result of the result. */ 3683 handle_inferior_event (ecs); 3684 3685 /* No error, don't finish the state yet. */ 3686 discard_cleanups (old_chain_2); 3687 3688 /* Breakpoints and watchpoints are not installed on the target 3689 at this point, and signals are passed directly to the 3690 inferior, so this must mean the process is gone. */ 3691 if (!ecs->wait_some_more) 3692 { 3693 discard_cleanups (old_chain_1); 3694 error (_("Program exited while detaching")); 3695 } 3696 } 3697 3698 discard_cleanups (old_chain_1); 3699 } 3700 3701 /* Wait for control to return from inferior to debugger. 3702 3703 If inferior gets a signal, we may decide to start it up again 3704 instead of returning. That is why there is a loop in this function. 3705 When this function actually returns it means the inferior 3706 should be left stopped and GDB should read more commands. */ 3707 3708 void 3709 wait_for_inferior (void) 3710 { 3711 struct cleanup *old_cleanups; 3712 struct cleanup *thread_state_chain; 3713 3714 if (debug_infrun) 3715 fprintf_unfiltered 3716 (gdb_stdlog, "infrun: wait_for_inferior ()\n"); 3717 3718 old_cleanups 3719 = make_cleanup (delete_just_stopped_threads_infrun_breakpoints_cleanup, 3720 NULL); 3721 3722 /* If an error happens while handling the event, propagate GDB's 3723 knowledge of the executing state to the frontend/user running 3724 state. */ 3725 thread_state_chain = make_cleanup (finish_thread_state_cleanup, &minus_one_ptid); 3726 3727 while (1) 3728 { 3729 struct execution_control_state ecss; 3730 struct execution_control_state *ecs = &ecss; 3731 ptid_t waiton_ptid = minus_one_ptid; 3732 3733 memset (ecs, 0, sizeof (*ecs)); 3734 3735 overlay_cache_invalid = 1; 3736 3737 /* Flush target cache before starting to handle each event. 3738 Target was running and cache could be stale. This is just a 3739 heuristic. Running threads may modify target memory, but we 3740 don't get any event. */ 3741 target_dcache_invalidate (); 3742 3743 ecs->ptid = do_target_wait (waiton_ptid, &ecs->ws, 0); 3744 3745 if (debug_infrun) 3746 print_target_wait_results (waiton_ptid, ecs->ptid, &ecs->ws); 3747 3748 /* Now figure out what to do with the result of the result. */ 3749 handle_inferior_event (ecs); 3750 3751 if (!ecs->wait_some_more) 3752 break; 3753 } 3754 3755 /* No error, don't finish the state yet. */ 3756 discard_cleanups (thread_state_chain); 3757 3758 do_cleanups (old_cleanups); 3759 } 3760 3761 /* Cleanup that reinstalls the readline callback handler, if the 3762 target is running in the background. If while handling the target 3763 event something triggered a secondary prompt, like e.g., a 3764 pagination prompt, we'll have removed the callback handler (see 3765 gdb_readline_wrapper_line). Need to do this as we go back to the 3766 event loop, ready to process further input. Note this has no 3767 effect if the handler hasn't actually been removed, because calling 3768 rl_callback_handler_install resets the line buffer, thus losing 3769 input. */ 3770 3771 static void 3772 reinstall_readline_callback_handler_cleanup (void *arg) 3773 { 3774 struct ui *ui = current_ui; 3775 3776 if (!ui->async) 3777 { 3778 /* We're not going back to the top level event loop yet. Don't 3779 install the readline callback, as it'd prep the terminal, 3780 readline-style (raw, noecho) (e.g., --batch). We'll install 3781 it the next time the prompt is displayed, when we're ready 3782 for input. */ 3783 return; 3784 } 3785 3786 if (ui->command_editing && ui->prompt_state != PROMPT_BLOCKED) 3787 gdb_rl_callback_handler_reinstall (); 3788 } 3789 3790 /* Clean up the FSMs of threads that are now stopped. In non-stop, 3791 that's just the event thread. In all-stop, that's all threads. */ 3792 3793 static void 3794 clean_up_just_stopped_threads_fsms (struct execution_control_state *ecs) 3795 { 3796 struct thread_info *thr = ecs->event_thread; 3797 3798 if (thr != NULL && thr->thread_fsm != NULL) 3799 thread_fsm_clean_up (thr->thread_fsm, thr); 3800 3801 if (!non_stop) 3802 { 3803 ALL_NON_EXITED_THREADS (thr) 3804 { 3805 if (thr->thread_fsm == NULL) 3806 continue; 3807 if (thr == ecs->event_thread) 3808 continue; 3809 3810 switch_to_thread (thr->ptid); 3811 thread_fsm_clean_up (thr->thread_fsm, thr); 3812 } 3813 3814 if (ecs->event_thread != NULL) 3815 switch_to_thread (ecs->event_thread->ptid); 3816 } 3817 } 3818 3819 /* Helper for all_uis_check_sync_execution_done that works on the 3820 current UI. */ 3821 3822 static void 3823 check_curr_ui_sync_execution_done (void) 3824 { 3825 struct ui *ui = current_ui; 3826 3827 if (ui->prompt_state == PROMPT_NEEDED 3828 && ui->async 3829 && !gdb_in_secondary_prompt_p (ui)) 3830 { 3831 target_terminal_ours (); 3832 observer_notify_sync_execution_done (); 3833 ui_register_input_event_handler (ui); 3834 } 3835 } 3836 3837 /* See infrun.h. */ 3838 3839 void 3840 all_uis_check_sync_execution_done (void) 3841 { 3842 SWITCH_THRU_ALL_UIS () 3843 { 3844 check_curr_ui_sync_execution_done (); 3845 } 3846 } 3847 3848 /* See infrun.h. */ 3849 3850 void 3851 all_uis_on_sync_execution_starting (void) 3852 { 3853 SWITCH_THRU_ALL_UIS () 3854 { 3855 if (current_ui->prompt_state == PROMPT_NEEDED) 3856 async_disable_stdin (); 3857 } 3858 } 3859 3860 /* Asynchronous version of wait_for_inferior. It is called by the 3861 event loop whenever a change of state is detected on the file 3862 descriptor corresponding to the target. It can be called more than 3863 once to complete a single execution command. In such cases we need 3864 to keep the state in a global variable ECSS. If it is the last time 3865 that this function is called for a single execution command, then 3866 report to the user that the inferior has stopped, and do the 3867 necessary cleanups. */ 3868 3869 void 3870 fetch_inferior_event (void *client_data) 3871 { 3872 struct execution_control_state ecss; 3873 struct execution_control_state *ecs = &ecss; 3874 struct cleanup *old_chain = make_cleanup (null_cleanup, NULL); 3875 struct cleanup *ts_old_chain; 3876 int cmd_done = 0; 3877 ptid_t waiton_ptid = minus_one_ptid; 3878 3879 memset (ecs, 0, sizeof (*ecs)); 3880 3881 /* Events are always processed with the main UI as current UI. This 3882 way, warnings, debug output, etc. are always consistently sent to 3883 the main console. */ 3884 scoped_restore save_ui = make_scoped_restore (¤t_ui, main_ui); 3885 3886 /* End up with readline processing input, if necessary. */ 3887 make_cleanup (reinstall_readline_callback_handler_cleanup, NULL); 3888 3889 /* We're handling a live event, so make sure we're doing live 3890 debugging. If we're looking at traceframes while the target is 3891 running, we're going to need to get back to that mode after 3892 handling the event. */ 3893 if (non_stop) 3894 { 3895 make_cleanup_restore_current_traceframe (); 3896 set_current_traceframe (-1); 3897 } 3898 3899 if (non_stop) 3900 /* In non-stop mode, the user/frontend should not notice a thread 3901 switch due to internal events. Make sure we reverse to the 3902 user selected thread and frame after handling the event and 3903 running any breakpoint commands. */ 3904 make_cleanup_restore_current_thread (); 3905 3906 overlay_cache_invalid = 1; 3907 /* Flush target cache before starting to handle each event. Target 3908 was running and cache could be stale. This is just a heuristic. 3909 Running threads may modify target memory, but we don't get any 3910 event. */ 3911 target_dcache_invalidate (); 3912 3913 scoped_restore save_exec_dir 3914 = make_scoped_restore (&execution_direction, target_execution_direction ()); 3915 3916 ecs->ptid = do_target_wait (waiton_ptid, &ecs->ws, 3917 target_can_async_p () ? TARGET_WNOHANG : 0); 3918 3919 if (debug_infrun) 3920 print_target_wait_results (waiton_ptid, ecs->ptid, &ecs->ws); 3921 3922 /* If an error happens while handling the event, propagate GDB's 3923 knowledge of the executing state to the frontend/user running 3924 state. */ 3925 if (!target_is_non_stop_p ()) 3926 ts_old_chain = make_cleanup (finish_thread_state_cleanup, &minus_one_ptid); 3927 else 3928 ts_old_chain = make_cleanup (finish_thread_state_cleanup, &ecs->ptid); 3929 3930 /* Get executed before make_cleanup_restore_current_thread above to apply 3931 still for the thread which has thrown the exception. */ 3932 make_bpstat_clear_actions_cleanup (); 3933 3934 make_cleanup (delete_just_stopped_threads_infrun_breakpoints_cleanup, NULL); 3935 3936 /* Now figure out what to do with the result of the result. */ 3937 handle_inferior_event (ecs); 3938 3939 if (!ecs->wait_some_more) 3940 { 3941 struct inferior *inf = find_inferior_ptid (ecs->ptid); 3942 int should_stop = 1; 3943 struct thread_info *thr = ecs->event_thread; 3944 int should_notify_stop = 1; 3945 3946 delete_just_stopped_threads_infrun_breakpoints (); 3947 3948 if (thr != NULL) 3949 { 3950 struct thread_fsm *thread_fsm = thr->thread_fsm; 3951 3952 if (thread_fsm != NULL) 3953 should_stop = thread_fsm_should_stop (thread_fsm, thr); 3954 } 3955 3956 if (!should_stop) 3957 { 3958 keep_going (ecs); 3959 } 3960 else 3961 { 3962 clean_up_just_stopped_threads_fsms (ecs); 3963 3964 if (thr != NULL && thr->thread_fsm != NULL) 3965 { 3966 should_notify_stop 3967 = thread_fsm_should_notify_stop (thr->thread_fsm); 3968 } 3969 3970 if (should_notify_stop) 3971 { 3972 int proceeded = 0; 3973 3974 /* We may not find an inferior if this was a process exit. */ 3975 if (inf == NULL || inf->control.stop_soon == NO_STOP_QUIETLY) 3976 proceeded = normal_stop (); 3977 3978 if (!proceeded) 3979 { 3980 inferior_event_handler (INF_EXEC_COMPLETE, NULL); 3981 cmd_done = 1; 3982 } 3983 } 3984 } 3985 } 3986 3987 /* No error, don't finish the thread states yet. */ 3988 discard_cleanups (ts_old_chain); 3989 3990 /* Revert thread and frame. */ 3991 do_cleanups (old_chain); 3992 3993 /* If a UI was in sync execution mode, and now isn't, restore its 3994 prompt (a synchronous execution command has finished, and we're 3995 ready for input). */ 3996 all_uis_check_sync_execution_done (); 3997 3998 if (cmd_done 3999 && exec_done_display_p 4000 && (ptid_equal (inferior_ptid, null_ptid) 4001 || !is_running (inferior_ptid))) 4002 printf_unfiltered (_("completed.\n")); 4003 } 4004 4005 /* Record the frame and location we're currently stepping through. */ 4006 void 4007 set_step_info (struct frame_info *frame, struct symtab_and_line sal) 4008 { 4009 struct thread_info *tp = inferior_thread (); 4010 4011 tp->control.step_frame_id = get_frame_id (frame); 4012 tp->control.step_stack_frame_id = get_stack_frame_id (frame); 4013 4014 tp->current_symtab = sal.symtab; 4015 tp->current_line = sal.line; 4016 } 4017 4018 /* Clear context switchable stepping state. */ 4019 4020 void 4021 init_thread_stepping_state (struct thread_info *tss) 4022 { 4023 tss->stepped_breakpoint = 0; 4024 tss->stepping_over_breakpoint = 0; 4025 tss->stepping_over_watchpoint = 0; 4026 tss->step_after_step_resume_breakpoint = 0; 4027 } 4028 4029 /* Set the cached copy of the last ptid/waitstatus. */ 4030 4031 void 4032 set_last_target_status (ptid_t ptid, struct target_waitstatus status) 4033 { 4034 target_last_wait_ptid = ptid; 4035 target_last_waitstatus = status; 4036 } 4037 4038 /* Return the cached copy of the last pid/waitstatus returned by 4039 target_wait()/deprecated_target_wait_hook(). The data is actually 4040 cached by handle_inferior_event(), which gets called immediately 4041 after target_wait()/deprecated_target_wait_hook(). */ 4042 4043 void 4044 get_last_target_status (ptid_t *ptidp, struct target_waitstatus *status) 4045 { 4046 *ptidp = target_last_wait_ptid; 4047 *status = target_last_waitstatus; 4048 } 4049 4050 void 4051 nullify_last_target_wait_ptid (void) 4052 { 4053 target_last_wait_ptid = minus_one_ptid; 4054 } 4055 4056 /* Switch thread contexts. */ 4057 4058 static void 4059 context_switch (ptid_t ptid) 4060 { 4061 if (debug_infrun && !ptid_equal (ptid, inferior_ptid)) 4062 { 4063 fprintf_unfiltered (gdb_stdlog, "infrun: Switching context from %s ", 4064 target_pid_to_str (inferior_ptid)); 4065 fprintf_unfiltered (gdb_stdlog, "to %s\n", 4066 target_pid_to_str (ptid)); 4067 } 4068 4069 switch_to_thread (ptid); 4070 } 4071 4072 /* If the target can't tell whether we've hit breakpoints 4073 (target_supports_stopped_by_sw_breakpoint), and we got a SIGTRAP, 4074 check whether that could have been caused by a breakpoint. If so, 4075 adjust the PC, per gdbarch_decr_pc_after_break. */ 4076 4077 static void 4078 adjust_pc_after_break (struct thread_info *thread, 4079 struct target_waitstatus *ws) 4080 { 4081 struct regcache *regcache; 4082 struct gdbarch *gdbarch; 4083 struct address_space *aspace; 4084 CORE_ADDR breakpoint_pc, decr_pc; 4085 4086 /* If we've hit a breakpoint, we'll normally be stopped with SIGTRAP. If 4087 we aren't, just return. 4088 4089 We assume that waitkinds other than TARGET_WAITKIND_STOPPED are not 4090 affected by gdbarch_decr_pc_after_break. Other waitkinds which are 4091 implemented by software breakpoints should be handled through the normal 4092 breakpoint layer. 4093 4094 NOTE drow/2004-01-31: On some targets, breakpoints may generate 4095 different signals (SIGILL or SIGEMT for instance), but it is less 4096 clear where the PC is pointing afterwards. It may not match 4097 gdbarch_decr_pc_after_break. I don't know any specific target that 4098 generates these signals at breakpoints (the code has been in GDB since at 4099 least 1992) so I can not guess how to handle them here. 4100 4101 In earlier versions of GDB, a target with 4102 gdbarch_have_nonsteppable_watchpoint would have the PC after hitting a 4103 watchpoint affected by gdbarch_decr_pc_after_break. I haven't found any 4104 target with both of these set in GDB history, and it seems unlikely to be 4105 correct, so gdbarch_have_nonsteppable_watchpoint is not checked here. */ 4106 4107 if (ws->kind != TARGET_WAITKIND_STOPPED) 4108 return; 4109 4110 if (ws->value.sig != GDB_SIGNAL_TRAP) 4111 return; 4112 4113 /* In reverse execution, when a breakpoint is hit, the instruction 4114 under it has already been de-executed. The reported PC always 4115 points at the breakpoint address, so adjusting it further would 4116 be wrong. E.g., consider this case on a decr_pc_after_break == 1 4117 architecture: 4118 4119 B1 0x08000000 : INSN1 4120 B2 0x08000001 : INSN2 4121 0x08000002 : INSN3 4122 PC -> 0x08000003 : INSN4 4123 4124 Say you're stopped at 0x08000003 as above. Reverse continuing 4125 from that point should hit B2 as below. Reading the PC when the 4126 SIGTRAP is reported should read 0x08000001 and INSN2 should have 4127 been de-executed already. 4128 4129 B1 0x08000000 : INSN1 4130 B2 PC -> 0x08000001 : INSN2 4131 0x08000002 : INSN3 4132 0x08000003 : INSN4 4133 4134 We can't apply the same logic as for forward execution, because 4135 we would wrongly adjust the PC to 0x08000000, since there's a 4136 breakpoint at PC - 1. We'd then report a hit on B1, although 4137 INSN1 hadn't been de-executed yet. Doing nothing is the correct 4138 behaviour. */ 4139 if (execution_direction == EXEC_REVERSE) 4140 return; 4141 4142 /* If the target can tell whether the thread hit a SW breakpoint, 4143 trust it. Targets that can tell also adjust the PC 4144 themselves. */ 4145 if (target_supports_stopped_by_sw_breakpoint ()) 4146 return; 4147 4148 /* Note that relying on whether a breakpoint is planted in memory to 4149 determine this can fail. E.g,. the breakpoint could have been 4150 removed since. Or the thread could have been told to step an 4151 instruction the size of a breakpoint instruction, and only 4152 _after_ was a breakpoint inserted at its address. */ 4153 4154 /* If this target does not decrement the PC after breakpoints, then 4155 we have nothing to do. */ 4156 regcache = get_thread_regcache (thread->ptid); 4157 gdbarch = get_regcache_arch (regcache); 4158 4159 decr_pc = gdbarch_decr_pc_after_break (gdbarch); 4160 if (decr_pc == 0) 4161 return; 4162 4163 aspace = get_regcache_aspace (regcache); 4164 4165 /* Find the location where (if we've hit a breakpoint) the 4166 breakpoint would be. */ 4167 breakpoint_pc = regcache_read_pc (regcache) - decr_pc; 4168 4169 /* If the target can't tell whether a software breakpoint triggered, 4170 fallback to figuring it out based on breakpoints we think were 4171 inserted in the target, and on whether the thread was stepped or 4172 continued. */ 4173 4174 /* Check whether there actually is a software breakpoint inserted at 4175 that location. 4176 4177 If in non-stop mode, a race condition is possible where we've 4178 removed a breakpoint, but stop events for that breakpoint were 4179 already queued and arrive later. To suppress those spurious 4180 SIGTRAPs, we keep a list of such breakpoint locations for a bit, 4181 and retire them after a number of stop events are reported. Note 4182 this is an heuristic and can thus get confused. The real fix is 4183 to get the "stopped by SW BP and needs adjustment" info out of 4184 the target/kernel (and thus never reach here; see above). */ 4185 if (software_breakpoint_inserted_here_p (aspace, breakpoint_pc) 4186 || (target_is_non_stop_p () 4187 && moribund_breakpoint_here_p (aspace, breakpoint_pc))) 4188 { 4189 struct cleanup *old_cleanups = make_cleanup (null_cleanup, NULL); 4190 4191 if (record_full_is_used ()) 4192 record_full_gdb_operation_disable_set (); 4193 4194 /* When using hardware single-step, a SIGTRAP is reported for both 4195 a completed single-step and a software breakpoint. Need to 4196 differentiate between the two, as the latter needs adjusting 4197 but the former does not. 4198 4199 The SIGTRAP can be due to a completed hardware single-step only if 4200 - we didn't insert software single-step breakpoints 4201 - this thread is currently being stepped 4202 4203 If any of these events did not occur, we must have stopped due 4204 to hitting a software breakpoint, and have to back up to the 4205 breakpoint address. 4206 4207 As a special case, we could have hardware single-stepped a 4208 software breakpoint. In this case (prev_pc == breakpoint_pc), 4209 we also need to back up to the breakpoint address. */ 4210 4211 if (thread_has_single_step_breakpoints_set (thread) 4212 || !currently_stepping (thread) 4213 || (thread->stepped_breakpoint 4214 && thread->prev_pc == breakpoint_pc)) 4215 regcache_write_pc (regcache, breakpoint_pc); 4216 4217 do_cleanups (old_cleanups); 4218 } 4219 } 4220 4221 static int 4222 stepped_in_from (struct frame_info *frame, struct frame_id step_frame_id) 4223 { 4224 for (frame = get_prev_frame (frame); 4225 frame != NULL; 4226 frame = get_prev_frame (frame)) 4227 { 4228 if (frame_id_eq (get_frame_id (frame), step_frame_id)) 4229 return 1; 4230 if (get_frame_type (frame) != INLINE_FRAME) 4231 break; 4232 } 4233 4234 return 0; 4235 } 4236 4237 /* If the event thread has the stop requested flag set, pretend it 4238 stopped for a GDB_SIGNAL_0 (i.e., as if it stopped due to 4239 target_stop). */ 4240 4241 static bool 4242 handle_stop_requested (struct execution_control_state *ecs) 4243 { 4244 if (ecs->event_thread->stop_requested) 4245 { 4246 ecs->ws.kind = TARGET_WAITKIND_STOPPED; 4247 ecs->ws.value.sig = GDB_SIGNAL_0; 4248 handle_signal_stop (ecs); 4249 return true; 4250 } 4251 return false; 4252 } 4253 4254 /* Auxiliary function that handles syscall entry/return events. 4255 It returns 1 if the inferior should keep going (and GDB 4256 should ignore the event), or 0 if the event deserves to be 4257 processed. */ 4258 4259 static int 4260 handle_syscall_event (struct execution_control_state *ecs) 4261 { 4262 struct regcache *regcache; 4263 int syscall_number; 4264 4265 if (!ptid_equal (ecs->ptid, inferior_ptid)) 4266 context_switch (ecs->ptid); 4267 4268 regcache = get_thread_regcache (ecs->ptid); 4269 syscall_number = ecs->ws.value.syscall_number; 4270 stop_pc = regcache_read_pc (regcache); 4271 4272 if (catch_syscall_enabled () > 0 4273 && catching_syscall_number (syscall_number) > 0) 4274 { 4275 if (debug_infrun) 4276 fprintf_unfiltered (gdb_stdlog, "infrun: syscall number = '%d'\n", 4277 syscall_number); 4278 4279 ecs->event_thread->control.stop_bpstat 4280 = bpstat_stop_status (get_regcache_aspace (regcache), 4281 stop_pc, ecs->ptid, &ecs->ws); 4282 4283 if (handle_stop_requested (ecs)) 4284 return 0; 4285 4286 if (bpstat_causes_stop (ecs->event_thread->control.stop_bpstat)) 4287 { 4288 /* Catchpoint hit. */ 4289 return 0; 4290 } 4291 } 4292 4293 if (handle_stop_requested (ecs)) 4294 return 0; 4295 4296 /* If no catchpoint triggered for this, then keep going. */ 4297 keep_going (ecs); 4298 return 1; 4299 } 4300 4301 /* Lazily fill in the execution_control_state's stop_func_* fields. */ 4302 4303 static void 4304 fill_in_stop_func (struct gdbarch *gdbarch, 4305 struct execution_control_state *ecs) 4306 { 4307 if (!ecs->stop_func_filled_in) 4308 { 4309 /* Don't care about return value; stop_func_start and stop_func_name 4310 will both be 0 if it doesn't work. */ 4311 find_pc_partial_function (stop_pc, &ecs->stop_func_name, 4312 &ecs->stop_func_start, &ecs->stop_func_end); 4313 ecs->stop_func_start 4314 += gdbarch_deprecated_function_start_offset (gdbarch); 4315 4316 if (gdbarch_skip_entrypoint_p (gdbarch)) 4317 ecs->stop_func_start = gdbarch_skip_entrypoint (gdbarch, 4318 ecs->stop_func_start); 4319 4320 ecs->stop_func_filled_in = 1; 4321 } 4322 } 4323 4324 4325 /* Return the STOP_SOON field of the inferior pointed at by PTID. */ 4326 4327 static enum stop_kind 4328 get_inferior_stop_soon (ptid_t ptid) 4329 { 4330 struct inferior *inf = find_inferior_ptid (ptid); 4331 4332 gdb_assert (inf != NULL); 4333 return inf->control.stop_soon; 4334 } 4335 4336 /* Wait for one event. Store the resulting waitstatus in WS, and 4337 return the event ptid. */ 4338 4339 static ptid_t 4340 wait_one (struct target_waitstatus *ws) 4341 { 4342 ptid_t event_ptid; 4343 ptid_t wait_ptid = minus_one_ptid; 4344 4345 overlay_cache_invalid = 1; 4346 4347 /* Flush target cache before starting to handle each event. 4348 Target was running and cache could be stale. This is just a 4349 heuristic. Running threads may modify target memory, but we 4350 don't get any event. */ 4351 target_dcache_invalidate (); 4352 4353 if (deprecated_target_wait_hook) 4354 event_ptid = deprecated_target_wait_hook (wait_ptid, ws, 0); 4355 else 4356 event_ptid = target_wait (wait_ptid, ws, 0); 4357 4358 if (debug_infrun) 4359 print_target_wait_results (wait_ptid, event_ptid, ws); 4360 4361 return event_ptid; 4362 } 4363 4364 /* Generate a wrapper for target_stopped_by_REASON that works on PTID 4365 instead of the current thread. */ 4366 #define THREAD_STOPPED_BY(REASON) \ 4367 static int \ 4368 thread_stopped_by_ ## REASON (ptid_t ptid) \ 4369 { \ 4370 struct cleanup *old_chain; \ 4371 int res; \ 4372 \ 4373 old_chain = save_inferior_ptid (); \ 4374 inferior_ptid = ptid; \ 4375 \ 4376 res = target_stopped_by_ ## REASON (); \ 4377 \ 4378 do_cleanups (old_chain); \ 4379 \ 4380 return res; \ 4381 } 4382 4383 /* Generate thread_stopped_by_watchpoint. */ 4384 THREAD_STOPPED_BY (watchpoint) 4385 /* Generate thread_stopped_by_sw_breakpoint. */ 4386 THREAD_STOPPED_BY (sw_breakpoint) 4387 /* Generate thread_stopped_by_hw_breakpoint. */ 4388 THREAD_STOPPED_BY (hw_breakpoint) 4389 4390 /* Cleanups that switches to the PTID pointed at by PTID_P. */ 4391 4392 static void 4393 switch_to_thread_cleanup (void *ptid_p) 4394 { 4395 ptid_t ptid = *(ptid_t *) ptid_p; 4396 4397 switch_to_thread (ptid); 4398 } 4399 4400 /* Save the thread's event and stop reason to process it later. */ 4401 4402 static void 4403 save_waitstatus (struct thread_info *tp, struct target_waitstatus *ws) 4404 { 4405 struct regcache *regcache; 4406 struct address_space *aspace; 4407 4408 if (debug_infrun) 4409 { 4410 char *statstr; 4411 4412 statstr = target_waitstatus_to_string (ws); 4413 fprintf_unfiltered (gdb_stdlog, 4414 "infrun: saving status %s for %d.%ld.%ld\n", 4415 statstr, 4416 ptid_get_pid (tp->ptid), 4417 ptid_get_lwp (tp->ptid), 4418 ptid_get_tid (tp->ptid)); 4419 xfree (statstr); 4420 } 4421 4422 /* Record for later. */ 4423 tp->suspend.waitstatus = *ws; 4424 tp->suspend.waitstatus_pending_p = 1; 4425 4426 regcache = get_thread_regcache (tp->ptid); 4427 aspace = get_regcache_aspace (regcache); 4428 4429 if (ws->kind == TARGET_WAITKIND_STOPPED 4430 && ws->value.sig == GDB_SIGNAL_TRAP) 4431 { 4432 CORE_ADDR pc = regcache_read_pc (regcache); 4433 4434 adjust_pc_after_break (tp, &tp->suspend.waitstatus); 4435 4436 if (thread_stopped_by_watchpoint (tp->ptid)) 4437 { 4438 tp->suspend.stop_reason 4439 = TARGET_STOPPED_BY_WATCHPOINT; 4440 } 4441 else if (target_supports_stopped_by_sw_breakpoint () 4442 && thread_stopped_by_sw_breakpoint (tp->ptid)) 4443 { 4444 tp->suspend.stop_reason 4445 = TARGET_STOPPED_BY_SW_BREAKPOINT; 4446 } 4447 else if (target_supports_stopped_by_hw_breakpoint () 4448 && thread_stopped_by_hw_breakpoint (tp->ptid)) 4449 { 4450 tp->suspend.stop_reason 4451 = TARGET_STOPPED_BY_HW_BREAKPOINT; 4452 } 4453 else if (!target_supports_stopped_by_hw_breakpoint () 4454 && hardware_breakpoint_inserted_here_p (aspace, 4455 pc)) 4456 { 4457 tp->suspend.stop_reason 4458 = TARGET_STOPPED_BY_HW_BREAKPOINT; 4459 } 4460 else if (!target_supports_stopped_by_sw_breakpoint () 4461 && software_breakpoint_inserted_here_p (aspace, 4462 pc)) 4463 { 4464 tp->suspend.stop_reason 4465 = TARGET_STOPPED_BY_SW_BREAKPOINT; 4466 } 4467 else if (!thread_has_single_step_breakpoints_set (tp) 4468 && currently_stepping (tp)) 4469 { 4470 tp->suspend.stop_reason 4471 = TARGET_STOPPED_BY_SINGLE_STEP; 4472 } 4473 } 4474 } 4475 4476 /* A cleanup that disables thread create/exit events. */ 4477 4478 static void 4479 disable_thread_events (void *arg) 4480 { 4481 target_thread_events (0); 4482 } 4483 4484 /* See infrun.h. */ 4485 4486 void 4487 stop_all_threads (void) 4488 { 4489 /* We may need multiple passes to discover all threads. */ 4490 int pass; 4491 int iterations = 0; 4492 ptid_t entry_ptid; 4493 struct cleanup *old_chain; 4494 4495 gdb_assert (target_is_non_stop_p ()); 4496 4497 if (debug_infrun) 4498 fprintf_unfiltered (gdb_stdlog, "infrun: stop_all_threads\n"); 4499 4500 entry_ptid = inferior_ptid; 4501 old_chain = make_cleanup (switch_to_thread_cleanup, &entry_ptid); 4502 4503 target_thread_events (1); 4504 make_cleanup (disable_thread_events, NULL); 4505 4506 /* Request threads to stop, and then wait for the stops. Because 4507 threads we already know about can spawn more threads while we're 4508 trying to stop them, and we only learn about new threads when we 4509 update the thread list, do this in a loop, and keep iterating 4510 until two passes find no threads that need to be stopped. */ 4511 for (pass = 0; pass < 2; pass++, iterations++) 4512 { 4513 if (debug_infrun) 4514 fprintf_unfiltered (gdb_stdlog, 4515 "infrun: stop_all_threads, pass=%d, " 4516 "iterations=%d\n", pass, iterations); 4517 while (1) 4518 { 4519 ptid_t event_ptid; 4520 struct target_waitstatus ws; 4521 int need_wait = 0; 4522 struct thread_info *t; 4523 4524 update_thread_list (); 4525 4526 /* Go through all threads looking for threads that we need 4527 to tell the target to stop. */ 4528 ALL_NON_EXITED_THREADS (t) 4529 { 4530 if (t->executing) 4531 { 4532 /* If already stopping, don't request a stop again. 4533 We just haven't seen the notification yet. */ 4534 if (!t->stop_requested) 4535 { 4536 if (debug_infrun) 4537 fprintf_unfiltered (gdb_stdlog, 4538 "infrun: %s executing, " 4539 "need stop\n", 4540 target_pid_to_str (t->ptid)); 4541 target_stop (t->ptid); 4542 t->stop_requested = 1; 4543 } 4544 else 4545 { 4546 if (debug_infrun) 4547 fprintf_unfiltered (gdb_stdlog, 4548 "infrun: %s executing, " 4549 "already stopping\n", 4550 target_pid_to_str (t->ptid)); 4551 } 4552 4553 if (t->stop_requested) 4554 need_wait = 1; 4555 } 4556 else 4557 { 4558 if (debug_infrun) 4559 fprintf_unfiltered (gdb_stdlog, 4560 "infrun: %s not executing\n", 4561 target_pid_to_str (t->ptid)); 4562 4563 /* The thread may be not executing, but still be 4564 resumed with a pending status to process. */ 4565 t->resumed = 0; 4566 } 4567 } 4568 4569 if (!need_wait) 4570 break; 4571 4572 /* If we find new threads on the second iteration, restart 4573 over. We want to see two iterations in a row with all 4574 threads stopped. */ 4575 if (pass > 0) 4576 pass = -1; 4577 4578 event_ptid = wait_one (&ws); 4579 if (ws.kind == TARGET_WAITKIND_NO_RESUMED) 4580 { 4581 /* All resumed threads exited. */ 4582 } 4583 else if (ws.kind == TARGET_WAITKIND_THREAD_EXITED 4584 || ws.kind == TARGET_WAITKIND_EXITED 4585 || ws.kind == TARGET_WAITKIND_SIGNALLED) 4586 { 4587 if (debug_infrun) 4588 { 4589 ptid_t ptid = pid_to_ptid (ws.value.integer); 4590 4591 fprintf_unfiltered (gdb_stdlog, 4592 "infrun: %s exited while " 4593 "stopping threads\n", 4594 target_pid_to_str (ptid)); 4595 } 4596 } 4597 else 4598 { 4599 struct inferior *inf; 4600 4601 t = find_thread_ptid (event_ptid); 4602 if (t == NULL) 4603 t = add_thread (event_ptid); 4604 4605 t->stop_requested = 0; 4606 t->executing = 0; 4607 t->resumed = 0; 4608 t->control.may_range_step = 0; 4609 4610 /* This may be the first time we see the inferior report 4611 a stop. */ 4612 inf = find_inferior_ptid (event_ptid); 4613 if (inf->needs_setup) 4614 { 4615 switch_to_thread_no_regs (t); 4616 setup_inferior (0); 4617 } 4618 4619 if (ws.kind == TARGET_WAITKIND_STOPPED 4620 && ws.value.sig == GDB_SIGNAL_0) 4621 { 4622 /* We caught the event that we intended to catch, so 4623 there's no event pending. */ 4624 t->suspend.waitstatus.kind = TARGET_WAITKIND_IGNORE; 4625 t->suspend.waitstatus_pending_p = 0; 4626 4627 if (displaced_step_fixup (t->ptid, GDB_SIGNAL_0) < 0) 4628 { 4629 /* Add it back to the step-over queue. */ 4630 if (debug_infrun) 4631 { 4632 fprintf_unfiltered (gdb_stdlog, 4633 "infrun: displaced-step of %s " 4634 "canceled: adding back to the " 4635 "step-over queue\n", 4636 target_pid_to_str (t->ptid)); 4637 } 4638 t->control.trap_expected = 0; 4639 thread_step_over_chain_enqueue (t); 4640 } 4641 } 4642 else 4643 { 4644 enum gdb_signal sig; 4645 struct regcache *regcache; 4646 4647 if (debug_infrun) 4648 { 4649 char *statstr; 4650 4651 statstr = target_waitstatus_to_string (&ws); 4652 fprintf_unfiltered (gdb_stdlog, 4653 "infrun: target_wait %s, saving " 4654 "status for %d.%ld.%ld\n", 4655 statstr, 4656 ptid_get_pid (t->ptid), 4657 ptid_get_lwp (t->ptid), 4658 ptid_get_tid (t->ptid)); 4659 xfree (statstr); 4660 } 4661 4662 /* Record for later. */ 4663 save_waitstatus (t, &ws); 4664 4665 sig = (ws.kind == TARGET_WAITKIND_STOPPED 4666 ? ws.value.sig : GDB_SIGNAL_0); 4667 4668 if (displaced_step_fixup (t->ptid, sig) < 0) 4669 { 4670 /* Add it back to the step-over queue. */ 4671 t->control.trap_expected = 0; 4672 thread_step_over_chain_enqueue (t); 4673 } 4674 4675 regcache = get_thread_regcache (t->ptid); 4676 t->suspend.stop_pc = regcache_read_pc (regcache); 4677 4678 if (debug_infrun) 4679 { 4680 fprintf_unfiltered (gdb_stdlog, 4681 "infrun: saved stop_pc=%s for %s " 4682 "(currently_stepping=%d)\n", 4683 paddress (target_gdbarch (), 4684 t->suspend.stop_pc), 4685 target_pid_to_str (t->ptid), 4686 currently_stepping (t)); 4687 } 4688 } 4689 } 4690 } 4691 } 4692 4693 do_cleanups (old_chain); 4694 4695 if (debug_infrun) 4696 fprintf_unfiltered (gdb_stdlog, "infrun: stop_all_threads done\n"); 4697 } 4698 4699 /* Handle a TARGET_WAITKIND_NO_RESUMED event. */ 4700 4701 static int 4702 handle_no_resumed (struct execution_control_state *ecs) 4703 { 4704 struct inferior *inf; 4705 struct thread_info *thread; 4706 4707 if (target_can_async_p ()) 4708 { 4709 struct ui *ui; 4710 int any_sync = 0; 4711 4712 ALL_UIS (ui) 4713 { 4714 if (ui->prompt_state == PROMPT_BLOCKED) 4715 { 4716 any_sync = 1; 4717 break; 4718 } 4719 } 4720 if (!any_sync) 4721 { 4722 /* There were no unwaited-for children left in the target, but, 4723 we're not synchronously waiting for events either. Just 4724 ignore. */ 4725 4726 if (debug_infrun) 4727 fprintf_unfiltered (gdb_stdlog, 4728 "infrun: TARGET_WAITKIND_NO_RESUMED " 4729 "(ignoring: bg)\n"); 4730 prepare_to_wait (ecs); 4731 return 1; 4732 } 4733 } 4734 4735 /* Otherwise, if we were running a synchronous execution command, we 4736 may need to cancel it and give the user back the terminal. 4737 4738 In non-stop mode, the target can't tell whether we've already 4739 consumed previous stop events, so it can end up sending us a 4740 no-resumed event like so: 4741 4742 #0 - thread 1 is left stopped 4743 4744 #1 - thread 2 is resumed and hits breakpoint 4745 -> TARGET_WAITKIND_STOPPED 4746 4747 #2 - thread 3 is resumed and exits 4748 this is the last resumed thread, so 4749 -> TARGET_WAITKIND_NO_RESUMED 4750 4751 #3 - gdb processes stop for thread 2 and decides to re-resume 4752 it. 4753 4754 #4 - gdb processes the TARGET_WAITKIND_NO_RESUMED event. 4755 thread 2 is now resumed, so the event should be ignored. 4756 4757 IOW, if the stop for thread 2 doesn't end a foreground command, 4758 then we need to ignore the following TARGET_WAITKIND_NO_RESUMED 4759 event. But it could be that the event meant that thread 2 itself 4760 (or whatever other thread was the last resumed thread) exited. 4761 4762 To address this we refresh the thread list and check whether we 4763 have resumed threads _now_. In the example above, this removes 4764 thread 3 from the thread list. If thread 2 was re-resumed, we 4765 ignore this event. If we find no thread resumed, then we cancel 4766 the synchronous command show "no unwaited-for " to the user. */ 4767 update_thread_list (); 4768 4769 ALL_NON_EXITED_THREADS (thread) 4770 { 4771 if (thread->executing 4772 || thread->suspend.waitstatus_pending_p) 4773 { 4774 /* There were no unwaited-for children left in the target at 4775 some point, but there are now. Just ignore. */ 4776 if (debug_infrun) 4777 fprintf_unfiltered (gdb_stdlog, 4778 "infrun: TARGET_WAITKIND_NO_RESUMED " 4779 "(ignoring: found resumed)\n"); 4780 prepare_to_wait (ecs); 4781 return 1; 4782 } 4783 } 4784 4785 /* Note however that we may find no resumed thread because the whole 4786 process exited meanwhile (thus updating the thread list results 4787 in an empty thread list). In this case we know we'll be getting 4788 a process exit event shortly. */ 4789 ALL_INFERIORS (inf) 4790 { 4791 if (inf->pid == 0) 4792 continue; 4793 4794 thread = any_live_thread_of_process (inf->pid); 4795 if (thread == NULL) 4796 { 4797 if (debug_infrun) 4798 fprintf_unfiltered (gdb_stdlog, 4799 "infrun: TARGET_WAITKIND_NO_RESUMED " 4800 "(expect process exit)\n"); 4801 prepare_to_wait (ecs); 4802 return 1; 4803 } 4804 } 4805 4806 /* Go ahead and report the event. */ 4807 return 0; 4808 } 4809 4810 /* Given an execution control state that has been freshly filled in by 4811 an event from the inferior, figure out what it means and take 4812 appropriate action. 4813 4814 The alternatives are: 4815 4816 1) stop_waiting and return; to really stop and return to the 4817 debugger. 4818 4819 2) keep_going and return; to wait for the next event (set 4820 ecs->event_thread->stepping_over_breakpoint to 1 to single step 4821 once). */ 4822 4823 static void 4824 handle_inferior_event_1 (struct execution_control_state *ecs) 4825 { 4826 enum stop_kind stop_soon; 4827 4828 if (ecs->ws.kind == TARGET_WAITKIND_IGNORE) 4829 { 4830 /* We had an event in the inferior, but we are not interested in 4831 handling it at this level. The lower layers have already 4832 done what needs to be done, if anything. 4833 4834 One of the possible circumstances for this is when the 4835 inferior produces output for the console. The inferior has 4836 not stopped, and we are ignoring the event. Another possible 4837 circumstance is any event which the lower level knows will be 4838 reported multiple times without an intervening resume. */ 4839 if (debug_infrun) 4840 fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_IGNORE\n"); 4841 prepare_to_wait (ecs); 4842 return; 4843 } 4844 4845 if (ecs->ws.kind == TARGET_WAITKIND_THREAD_EXITED) 4846 { 4847 if (debug_infrun) 4848 fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_THREAD_EXITED\n"); 4849 prepare_to_wait (ecs); 4850 return; 4851 } 4852 4853 if (ecs->ws.kind == TARGET_WAITKIND_NO_RESUMED 4854 && handle_no_resumed (ecs)) 4855 return; 4856 4857 /* Cache the last pid/waitstatus. */ 4858 set_last_target_status (ecs->ptid, ecs->ws); 4859 4860 /* Always clear state belonging to the previous time we stopped. */ 4861 stop_stack_dummy = STOP_NONE; 4862 4863 if (ecs->ws.kind == TARGET_WAITKIND_NO_RESUMED) 4864 { 4865 /* No unwaited-for children left. IOW, all resumed children 4866 have exited. */ 4867 if (debug_infrun) 4868 fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_NO_RESUMED\n"); 4869 4870 stop_print_frame = 0; 4871 stop_waiting (ecs); 4872 return; 4873 } 4874 4875 if (ecs->ws.kind != TARGET_WAITKIND_EXITED 4876 && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED) 4877 { 4878 ecs->event_thread = find_thread_ptid (ecs->ptid); 4879 /* If it's a new thread, add it to the thread database. */ 4880 if (ecs->event_thread == NULL) 4881 ecs->event_thread = add_thread (ecs->ptid); 4882 4883 /* Disable range stepping. If the next step request could use a 4884 range, this will be end up re-enabled then. */ 4885 ecs->event_thread->control.may_range_step = 0; 4886 } 4887 4888 /* Dependent on valid ECS->EVENT_THREAD. */ 4889 adjust_pc_after_break (ecs->event_thread, &ecs->ws); 4890 4891 /* Dependent on the current PC value modified by adjust_pc_after_break. */ 4892 reinit_frame_cache (); 4893 4894 breakpoint_retire_moribund (); 4895 4896 /* First, distinguish signals caused by the debugger from signals 4897 that have to do with the program's own actions. Note that 4898 breakpoint insns may cause SIGTRAP or SIGILL or SIGEMT, depending 4899 on the operating system version. Here we detect when a SIGILL or 4900 SIGEMT is really a breakpoint and change it to SIGTRAP. We do 4901 something similar for SIGSEGV, since a SIGSEGV will be generated 4902 when we're trying to execute a breakpoint instruction on a 4903 non-executable stack. This happens for call dummy breakpoints 4904 for architectures like SPARC that place call dummies on the 4905 stack. */ 4906 if (ecs->ws.kind == TARGET_WAITKIND_STOPPED 4907 && (ecs->ws.value.sig == GDB_SIGNAL_ILL 4908 || ecs->ws.value.sig == GDB_SIGNAL_SEGV 4909 || ecs->ws.value.sig == GDB_SIGNAL_EMT)) 4910 { 4911 struct regcache *regcache = get_thread_regcache (ecs->ptid); 4912 4913 if (breakpoint_inserted_here_p (get_regcache_aspace (regcache), 4914 regcache_read_pc (regcache))) 4915 { 4916 if (debug_infrun) 4917 fprintf_unfiltered (gdb_stdlog, 4918 "infrun: Treating signal as SIGTRAP\n"); 4919 ecs->ws.value.sig = GDB_SIGNAL_TRAP; 4920 } 4921 } 4922 4923 /* Mark the non-executing threads accordingly. In all-stop, all 4924 threads of all processes are stopped when we get any event 4925 reported. In non-stop mode, only the event thread stops. */ 4926 { 4927 ptid_t mark_ptid; 4928 4929 if (!target_is_non_stop_p ()) 4930 mark_ptid = minus_one_ptid; 4931 else if (ecs->ws.kind == TARGET_WAITKIND_SIGNALLED 4932 || ecs->ws.kind == TARGET_WAITKIND_EXITED) 4933 { 4934 /* If we're handling a process exit in non-stop mode, even 4935 though threads haven't been deleted yet, one would think 4936 that there is nothing to do, as threads of the dead process 4937 will be soon deleted, and threads of any other process were 4938 left running. However, on some targets, threads survive a 4939 process exit event. E.g., for the "checkpoint" command, 4940 when the current checkpoint/fork exits, linux-fork.c 4941 automatically switches to another fork from within 4942 target_mourn_inferior, by associating the same 4943 inferior/thread to another fork. We haven't mourned yet at 4944 this point, but we must mark any threads left in the 4945 process as not-executing so that finish_thread_state marks 4946 them stopped (in the user's perspective) if/when we present 4947 the stop to the user. */ 4948 mark_ptid = pid_to_ptid (ptid_get_pid (ecs->ptid)); 4949 } 4950 else 4951 mark_ptid = ecs->ptid; 4952 4953 set_executing (mark_ptid, 0); 4954 4955 /* Likewise the resumed flag. */ 4956 set_resumed (mark_ptid, 0); 4957 } 4958 4959 switch (ecs->ws.kind) 4960 { 4961 case TARGET_WAITKIND_LOADED: 4962 if (debug_infrun) 4963 fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_LOADED\n"); 4964 if (!ptid_equal (ecs->ptid, inferior_ptid)) 4965 context_switch (ecs->ptid); 4966 /* Ignore gracefully during startup of the inferior, as it might 4967 be the shell which has just loaded some objects, otherwise 4968 add the symbols for the newly loaded objects. Also ignore at 4969 the beginning of an attach or remote session; we will query 4970 the full list of libraries once the connection is 4971 established. */ 4972 4973 stop_soon = get_inferior_stop_soon (ecs->ptid); 4974 if (stop_soon == NO_STOP_QUIETLY) 4975 { 4976 struct regcache *regcache; 4977 4978 regcache = get_thread_regcache (ecs->ptid); 4979 4980 handle_solib_event (); 4981 4982 ecs->event_thread->control.stop_bpstat 4983 = bpstat_stop_status (get_regcache_aspace (regcache), 4984 stop_pc, ecs->ptid, &ecs->ws); 4985 4986 if (handle_stop_requested (ecs)) 4987 return; 4988 4989 if (bpstat_causes_stop (ecs->event_thread->control.stop_bpstat)) 4990 { 4991 /* A catchpoint triggered. */ 4992 process_event_stop_test (ecs); 4993 return; 4994 } 4995 4996 /* If requested, stop when the dynamic linker notifies 4997 gdb of events. This allows the user to get control 4998 and place breakpoints in initializer routines for 4999 dynamically loaded objects (among other things). */ 5000 ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0; 5001 if (stop_on_solib_events) 5002 { 5003 /* Make sure we print "Stopped due to solib-event" in 5004 normal_stop. */ 5005 stop_print_frame = 1; 5006 5007 stop_waiting (ecs); 5008 return; 5009 } 5010 } 5011 5012 /* If we are skipping through a shell, or through shared library 5013 loading that we aren't interested in, resume the program. If 5014 we're running the program normally, also resume. */ 5015 if (stop_soon == STOP_QUIETLY || stop_soon == NO_STOP_QUIETLY) 5016 { 5017 /* Loading of shared libraries might have changed breakpoint 5018 addresses. Make sure new breakpoints are inserted. */ 5019 if (stop_soon == NO_STOP_QUIETLY) 5020 insert_breakpoints (); 5021 resume (GDB_SIGNAL_0); 5022 prepare_to_wait (ecs); 5023 return; 5024 } 5025 5026 /* But stop if we're attaching or setting up a remote 5027 connection. */ 5028 if (stop_soon == STOP_QUIETLY_NO_SIGSTOP 5029 || stop_soon == STOP_QUIETLY_REMOTE) 5030 { 5031 if (debug_infrun) 5032 fprintf_unfiltered (gdb_stdlog, "infrun: quietly stopped\n"); 5033 stop_waiting (ecs); 5034 return; 5035 } 5036 5037 internal_error (__FILE__, __LINE__, 5038 _("unhandled stop_soon: %d"), (int) stop_soon); 5039 5040 case TARGET_WAITKIND_SPURIOUS: 5041 if (debug_infrun) 5042 fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SPURIOUS\n"); 5043 if (handle_stop_requested (ecs)) 5044 return; 5045 if (!ptid_equal (ecs->ptid, inferior_ptid)) 5046 context_switch (ecs->ptid); 5047 resume (GDB_SIGNAL_0); 5048 prepare_to_wait (ecs); 5049 return; 5050 5051 case TARGET_WAITKIND_THREAD_CREATED: 5052 if (debug_infrun) 5053 fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_THREAD_CREATED\n"); 5054 if (handle_stop_requested (ecs)) 5055 return; 5056 if (!ptid_equal (ecs->ptid, inferior_ptid)) 5057 context_switch (ecs->ptid); 5058 if (!switch_back_to_stepped_thread (ecs)) 5059 keep_going (ecs); 5060 return; 5061 5062 case TARGET_WAITKIND_EXITED: 5063 case TARGET_WAITKIND_SIGNALLED: 5064 if (debug_infrun) 5065 { 5066 if (ecs->ws.kind == TARGET_WAITKIND_EXITED) 5067 fprintf_unfiltered (gdb_stdlog, 5068 "infrun: TARGET_WAITKIND_EXITED\n"); 5069 else 5070 fprintf_unfiltered (gdb_stdlog, 5071 "infrun: TARGET_WAITKIND_SIGNALLED\n"); 5072 } 5073 5074 inferior_ptid = ecs->ptid; 5075 set_current_inferior (find_inferior_ptid (ecs->ptid)); 5076 set_current_program_space (current_inferior ()->pspace); 5077 handle_vfork_child_exec_or_exit (0); 5078 target_terminal_ours (); /* Must do this before mourn anyway. */ 5079 5080 /* Clearing any previous state of convenience variables. */ 5081 clear_exit_convenience_vars (); 5082 5083 if (ecs->ws.kind == TARGET_WAITKIND_EXITED) 5084 { 5085 /* Record the exit code in the convenience variable $_exitcode, so 5086 that the user can inspect this again later. */ 5087 set_internalvar_integer (lookup_internalvar ("_exitcode"), 5088 (LONGEST) ecs->ws.value.integer); 5089 5090 /* Also record this in the inferior itself. */ 5091 current_inferior ()->has_exit_code = 1; 5092 current_inferior ()->exit_code = (LONGEST) ecs->ws.value.integer; 5093 5094 /* Support the --return-child-result option. */ 5095 return_child_result_value = ecs->ws.value.integer; 5096 5097 observer_notify_exited (ecs->ws.value.integer); 5098 } 5099 else 5100 { 5101 struct regcache *regcache = get_thread_regcache (ecs->ptid); 5102 struct gdbarch *gdbarch = get_regcache_arch (regcache); 5103 5104 if (gdbarch_gdb_signal_to_target_p (gdbarch)) 5105 { 5106 /* Set the value of the internal variable $_exitsignal, 5107 which holds the signal uncaught by the inferior. */ 5108 set_internalvar_integer (lookup_internalvar ("_exitsignal"), 5109 gdbarch_gdb_signal_to_target (gdbarch, 5110 ecs->ws.value.sig)); 5111 } 5112 else 5113 { 5114 /* We don't have access to the target's method used for 5115 converting between signal numbers (GDB's internal 5116 representation <-> target's representation). 5117 Therefore, we cannot do a good job at displaying this 5118 information to the user. It's better to just warn 5119 her about it (if infrun debugging is enabled), and 5120 give up. */ 5121 if (debug_infrun) 5122 fprintf_filtered (gdb_stdlog, _("\ 5123 Cannot fill $_exitsignal with the correct signal number.\n")); 5124 } 5125 5126 observer_notify_signal_exited (ecs->ws.value.sig); 5127 } 5128 5129 gdb_flush (gdb_stdout); 5130 target_mourn_inferior (inferior_ptid); 5131 stop_print_frame = 0; 5132 stop_waiting (ecs); 5133 return; 5134 5135 /* The following are the only cases in which we keep going; 5136 the above cases end in a continue or goto. */ 5137 case TARGET_WAITKIND_FORKED: 5138 case TARGET_WAITKIND_VFORKED: 5139 if (debug_infrun) 5140 { 5141 if (ecs->ws.kind == TARGET_WAITKIND_FORKED) 5142 fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_FORKED\n"); 5143 else 5144 fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_VFORKED\n"); 5145 } 5146 5147 /* Check whether the inferior is displaced stepping. */ 5148 { 5149 struct regcache *regcache = get_thread_regcache (ecs->ptid); 5150 struct gdbarch *gdbarch = get_regcache_arch (regcache); 5151 5152 /* If checking displaced stepping is supported, and thread 5153 ecs->ptid is displaced stepping. */ 5154 if (displaced_step_in_progress_thread (ecs->ptid)) 5155 { 5156 struct inferior *parent_inf 5157 = find_inferior_ptid (ecs->ptid); 5158 struct regcache *child_regcache; 5159 CORE_ADDR parent_pc; 5160 5161 /* GDB has got TARGET_WAITKIND_FORKED or TARGET_WAITKIND_VFORKED, 5162 indicating that the displaced stepping of syscall instruction 5163 has been done. Perform cleanup for parent process here. Note 5164 that this operation also cleans up the child process for vfork, 5165 because their pages are shared. */ 5166 displaced_step_fixup (ecs->ptid, GDB_SIGNAL_TRAP); 5167 /* Start a new step-over in another thread if there's one 5168 that needs it. */ 5169 start_step_over (); 5170 5171 if (ecs->ws.kind == TARGET_WAITKIND_FORKED) 5172 { 5173 struct displaced_step_inferior_state *displaced 5174 = get_displaced_stepping_state (ptid_get_pid (ecs->ptid)); 5175 5176 /* Restore scratch pad for child process. */ 5177 displaced_step_restore (displaced, ecs->ws.value.related_pid); 5178 } 5179 5180 /* Since the vfork/fork syscall instruction was executed in the scratchpad, 5181 the child's PC is also within the scratchpad. Set the child's PC 5182 to the parent's PC value, which has already been fixed up. 5183 FIXME: we use the parent's aspace here, although we're touching 5184 the child, because the child hasn't been added to the inferior 5185 list yet at this point. */ 5186 5187 child_regcache 5188 = get_thread_arch_aspace_regcache (ecs->ws.value.related_pid, 5189 gdbarch, 5190 parent_inf->aspace); 5191 /* Read PC value of parent process. */ 5192 parent_pc = regcache_read_pc (regcache); 5193 5194 if (debug_displaced) 5195 fprintf_unfiltered (gdb_stdlog, 5196 "displaced: write child pc from %s to %s\n", 5197 paddress (gdbarch, 5198 regcache_read_pc (child_regcache)), 5199 paddress (gdbarch, parent_pc)); 5200 5201 regcache_write_pc (child_regcache, parent_pc); 5202 } 5203 } 5204 5205 if (!ptid_equal (ecs->ptid, inferior_ptid)) 5206 context_switch (ecs->ptid); 5207 5208 /* Immediately detach breakpoints from the child before there's 5209 any chance of letting the user delete breakpoints from the 5210 breakpoint lists. If we don't do this early, it's easy to 5211 leave left over traps in the child, vis: "break foo; catch 5212 fork; c; <fork>; del; c; <child calls foo>". We only follow 5213 the fork on the last `continue', and by that time the 5214 breakpoint at "foo" is long gone from the breakpoint table. 5215 If we vforked, then we don't need to unpatch here, since both 5216 parent and child are sharing the same memory pages; we'll 5217 need to unpatch at follow/detach time instead to be certain 5218 that new breakpoints added between catchpoint hit time and 5219 vfork follow are detached. */ 5220 if (ecs->ws.kind != TARGET_WAITKIND_VFORKED) 5221 { 5222 /* This won't actually modify the breakpoint list, but will 5223 physically remove the breakpoints from the child. */ 5224 detach_breakpoints (ecs->ws.value.related_pid); 5225 } 5226 5227 delete_just_stopped_threads_single_step_breakpoints (); 5228 5229 /* In case the event is caught by a catchpoint, remember that 5230 the event is to be followed at the next resume of the thread, 5231 and not immediately. */ 5232 ecs->event_thread->pending_follow = ecs->ws; 5233 5234 stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid)); 5235 5236 ecs->event_thread->control.stop_bpstat 5237 = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()), 5238 stop_pc, ecs->ptid, &ecs->ws); 5239 5240 if (handle_stop_requested (ecs)) 5241 return; 5242 5243 /* If no catchpoint triggered for this, then keep going. Note 5244 that we're interested in knowing the bpstat actually causes a 5245 stop, not just if it may explain the signal. Software 5246 watchpoints, for example, always appear in the bpstat. */ 5247 if (!bpstat_causes_stop (ecs->event_thread->control.stop_bpstat)) 5248 { 5249 ptid_t parent; 5250 ptid_t child; 5251 int should_resume; 5252 int follow_child 5253 = (follow_fork_mode_string == follow_fork_mode_child); 5254 5255 ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0; 5256 5257 should_resume = follow_fork (); 5258 5259 parent = ecs->ptid; 5260 child = ecs->ws.value.related_pid; 5261 5262 /* At this point, the parent is marked running, and the 5263 child is marked stopped. */ 5264 5265 /* If not resuming the parent, mark it stopped. */ 5266 if (follow_child && !detach_fork && !non_stop && !sched_multi) 5267 set_running (parent, 0); 5268 5269 /* If resuming the child, mark it running. */ 5270 if (follow_child || (!detach_fork && (non_stop || sched_multi))) 5271 set_running (child, 1); 5272 5273 /* In non-stop mode, also resume the other branch. */ 5274 if (!detach_fork && (non_stop 5275 || (sched_multi && target_is_non_stop_p ()))) 5276 { 5277 if (follow_child) 5278 switch_to_thread (parent); 5279 else 5280 switch_to_thread (child); 5281 5282 ecs->event_thread = inferior_thread (); 5283 ecs->ptid = inferior_ptid; 5284 keep_going (ecs); 5285 } 5286 5287 if (follow_child) 5288 switch_to_thread (child); 5289 else 5290 switch_to_thread (parent); 5291 5292 ecs->event_thread = inferior_thread (); 5293 ecs->ptid = inferior_ptid; 5294 5295 if (should_resume) 5296 keep_going (ecs); 5297 else 5298 stop_waiting (ecs); 5299 return; 5300 } 5301 process_event_stop_test (ecs); 5302 return; 5303 5304 case TARGET_WAITKIND_VFORK_DONE: 5305 /* Done with the shared memory region. Re-insert breakpoints in 5306 the parent, and keep going. */ 5307 5308 if (debug_infrun) 5309 fprintf_unfiltered (gdb_stdlog, 5310 "infrun: TARGET_WAITKIND_VFORK_DONE\n"); 5311 5312 if (!ptid_equal (ecs->ptid, inferior_ptid)) 5313 context_switch (ecs->ptid); 5314 5315 current_inferior ()->waiting_for_vfork_done = 0; 5316 current_inferior ()->pspace->breakpoints_not_allowed = 0; 5317 5318 if (handle_stop_requested (ecs)) 5319 return; 5320 5321 /* This also takes care of reinserting breakpoints in the 5322 previously locked inferior. */ 5323 keep_going (ecs); 5324 return; 5325 5326 case TARGET_WAITKIND_EXECD: 5327 if (debug_infrun) 5328 fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_EXECD\n"); 5329 5330 if (!ptid_equal (ecs->ptid, inferior_ptid)) 5331 context_switch (ecs->ptid); 5332 5333 /* Do whatever is necessary to the parent branch of the vfork. */ 5334 handle_vfork_child_exec_or_exit (1); 5335 5336 /* This causes the eventpoints and symbol table to be reset. 5337 Must do this now, before trying to determine whether to 5338 stop. */ 5339 follow_exec (inferior_ptid, ecs->ws.value.execd_pathname); 5340 5341 stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid)); 5342 5343 /* In follow_exec we may have deleted the original thread and 5344 created a new one. Make sure that the event thread is the 5345 execd thread for that case (this is a nop otherwise). */ 5346 ecs->event_thread = inferior_thread (); 5347 5348 ecs->event_thread->control.stop_bpstat 5349 = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()), 5350 stop_pc, ecs->ptid, &ecs->ws); 5351 5352 /* Note that this may be referenced from inside 5353 bpstat_stop_status above, through inferior_has_execd. */ 5354 xfree (ecs->ws.value.execd_pathname); 5355 ecs->ws.value.execd_pathname = NULL; 5356 5357 if (handle_stop_requested (ecs)) 5358 return; 5359 5360 /* If no catchpoint triggered for this, then keep going. */ 5361 if (!bpstat_causes_stop (ecs->event_thread->control.stop_bpstat)) 5362 { 5363 ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0; 5364 keep_going (ecs); 5365 return; 5366 } 5367 process_event_stop_test (ecs); 5368 return; 5369 5370 /* Be careful not to try to gather much state about a thread 5371 that's in a syscall. It's frequently a losing proposition. */ 5372 case TARGET_WAITKIND_SYSCALL_ENTRY: 5373 if (debug_infrun) 5374 fprintf_unfiltered (gdb_stdlog, 5375 "infrun: TARGET_WAITKIND_SYSCALL_ENTRY\n"); 5376 /* Getting the current syscall number. */ 5377 if (handle_syscall_event (ecs) == 0) 5378 process_event_stop_test (ecs); 5379 return; 5380 5381 /* Before examining the threads further, step this thread to 5382 get it entirely out of the syscall. (We get notice of the 5383 event when the thread is just on the verge of exiting a 5384 syscall. Stepping one instruction seems to get it back 5385 into user code.) */ 5386 case TARGET_WAITKIND_SYSCALL_RETURN: 5387 if (debug_infrun) 5388 fprintf_unfiltered (gdb_stdlog, 5389 "infrun: TARGET_WAITKIND_SYSCALL_RETURN\n"); 5390 if (handle_syscall_event (ecs) == 0) 5391 process_event_stop_test (ecs); 5392 return; 5393 5394 case TARGET_WAITKIND_STOPPED: 5395 if (debug_infrun) 5396 fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_STOPPED\n"); 5397 handle_signal_stop (ecs); 5398 return; 5399 5400 case TARGET_WAITKIND_NO_HISTORY: 5401 if (debug_infrun) 5402 fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_NO_HISTORY\n"); 5403 /* Reverse execution: target ran out of history info. */ 5404 5405 /* Switch to the stopped thread. */ 5406 if (!ptid_equal (ecs->ptid, inferior_ptid)) 5407 context_switch (ecs->ptid); 5408 if (debug_infrun) 5409 fprintf_unfiltered (gdb_stdlog, "infrun: stopped\n"); 5410 5411 delete_just_stopped_threads_single_step_breakpoints (); 5412 stop_pc = regcache_read_pc (get_thread_regcache (inferior_ptid)); 5413 5414 if (handle_stop_requested (ecs)) 5415 return; 5416 5417 observer_notify_no_history (); 5418 stop_waiting (ecs); 5419 return; 5420 } 5421 } 5422 5423 /* A wrapper around handle_inferior_event_1, which also makes sure 5424 that all temporary struct value objects that were created during 5425 the handling of the event get deleted at the end. */ 5426 5427 static void 5428 handle_inferior_event (struct execution_control_state *ecs) 5429 { 5430 struct value *mark = value_mark (); 5431 5432 handle_inferior_event_1 (ecs); 5433 /* Purge all temporary values created during the event handling, 5434 as it could be a long time before we return to the command level 5435 where such values would otherwise be purged. */ 5436 value_free_to_mark (mark); 5437 } 5438 5439 /* Restart threads back to what they were trying to do back when we 5440 paused them for an in-line step-over. The EVENT_THREAD thread is 5441 ignored. */ 5442 5443 static void 5444 restart_threads (struct thread_info *event_thread) 5445 { 5446 struct thread_info *tp; 5447 5448 /* In case the instruction just stepped spawned a new thread. */ 5449 update_thread_list (); 5450 5451 ALL_NON_EXITED_THREADS (tp) 5452 { 5453 if (tp == event_thread) 5454 { 5455 if (debug_infrun) 5456 fprintf_unfiltered (gdb_stdlog, 5457 "infrun: restart threads: " 5458 "[%s] is event thread\n", 5459 target_pid_to_str (tp->ptid)); 5460 continue; 5461 } 5462 5463 if (!(tp->state == THREAD_RUNNING || tp->control.in_infcall)) 5464 { 5465 if (debug_infrun) 5466 fprintf_unfiltered (gdb_stdlog, 5467 "infrun: restart threads: " 5468 "[%s] not meant to be running\n", 5469 target_pid_to_str (tp->ptid)); 5470 continue; 5471 } 5472 5473 if (tp->resumed) 5474 { 5475 if (debug_infrun) 5476 fprintf_unfiltered (gdb_stdlog, 5477 "infrun: restart threads: [%s] resumed\n", 5478 target_pid_to_str (tp->ptid)); 5479 gdb_assert (tp->executing || tp->suspend.waitstatus_pending_p); 5480 continue; 5481 } 5482 5483 if (thread_is_in_step_over_chain (tp)) 5484 { 5485 if (debug_infrun) 5486 fprintf_unfiltered (gdb_stdlog, 5487 "infrun: restart threads: " 5488 "[%s] needs step-over\n", 5489 target_pid_to_str (tp->ptid)); 5490 gdb_assert (!tp->resumed); 5491 continue; 5492 } 5493 5494 5495 if (tp->suspend.waitstatus_pending_p) 5496 { 5497 if (debug_infrun) 5498 fprintf_unfiltered (gdb_stdlog, 5499 "infrun: restart threads: " 5500 "[%s] has pending status\n", 5501 target_pid_to_str (tp->ptid)); 5502 tp->resumed = 1; 5503 continue; 5504 } 5505 5506 gdb_assert (!tp->stop_requested); 5507 5508 /* If some thread needs to start a step-over at this point, it 5509 should still be in the step-over queue, and thus skipped 5510 above. */ 5511 if (thread_still_needs_step_over (tp)) 5512 { 5513 internal_error (__FILE__, __LINE__, 5514 "thread [%s] needs a step-over, but not in " 5515 "step-over queue\n", 5516 target_pid_to_str (tp->ptid)); 5517 } 5518 5519 if (currently_stepping (tp)) 5520 { 5521 if (debug_infrun) 5522 fprintf_unfiltered (gdb_stdlog, 5523 "infrun: restart threads: [%s] was stepping\n", 5524 target_pid_to_str (tp->ptid)); 5525 keep_going_stepped_thread (tp); 5526 } 5527 else 5528 { 5529 struct execution_control_state ecss; 5530 struct execution_control_state *ecs = &ecss; 5531 5532 if (debug_infrun) 5533 fprintf_unfiltered (gdb_stdlog, 5534 "infrun: restart threads: [%s] continuing\n", 5535 target_pid_to_str (tp->ptid)); 5536 reset_ecs (ecs, tp); 5537 switch_to_thread (tp->ptid); 5538 keep_going_pass_signal (ecs); 5539 } 5540 } 5541 } 5542 5543 /* Callback for iterate_over_threads. Find a resumed thread that has 5544 a pending waitstatus. */ 5545 5546 static int 5547 resumed_thread_with_pending_status (struct thread_info *tp, 5548 void *arg) 5549 { 5550 return (tp->resumed 5551 && tp->suspend.waitstatus_pending_p); 5552 } 5553 5554 /* Called when we get an event that may finish an in-line or 5555 out-of-line (displaced stepping) step-over started previously. 5556 Return true if the event is processed and we should go back to the 5557 event loop; false if the caller should continue processing the 5558 event. */ 5559 5560 static int 5561 finish_step_over (struct execution_control_state *ecs) 5562 { 5563 int had_step_over_info; 5564 5565 displaced_step_fixup (ecs->ptid, 5566 ecs->event_thread->suspend.stop_signal); 5567 5568 had_step_over_info = step_over_info_valid_p (); 5569 5570 if (had_step_over_info) 5571 { 5572 /* If we're stepping over a breakpoint with all threads locked, 5573 then only the thread that was stepped should be reporting 5574 back an event. */ 5575 gdb_assert (ecs->event_thread->control.trap_expected); 5576 5577 clear_step_over_info (); 5578 } 5579 5580 if (!target_is_non_stop_p ()) 5581 return 0; 5582 5583 /* Start a new step-over in another thread if there's one that 5584 needs it. */ 5585 start_step_over (); 5586 5587 /* If we were stepping over a breakpoint before, and haven't started 5588 a new in-line step-over sequence, then restart all other threads 5589 (except the event thread). We can't do this in all-stop, as then 5590 e.g., we wouldn't be able to issue any other remote packet until 5591 these other threads stop. */ 5592 if (had_step_over_info && !step_over_info_valid_p ()) 5593 { 5594 struct thread_info *pending; 5595 5596 /* If we only have threads with pending statuses, the restart 5597 below won't restart any thread and so nothing re-inserts the 5598 breakpoint we just stepped over. But we need it inserted 5599 when we later process the pending events, otherwise if 5600 another thread has a pending event for this breakpoint too, 5601 we'd discard its event (because the breakpoint that 5602 originally caused the event was no longer inserted). */ 5603 context_switch (ecs->ptid); 5604 insert_breakpoints (); 5605 5606 restart_threads (ecs->event_thread); 5607 5608 /* If we have events pending, go through handle_inferior_event 5609 again, picking up a pending event at random. This avoids 5610 thread starvation. */ 5611 5612 /* But not if we just stepped over a watchpoint in order to let 5613 the instruction execute so we can evaluate its expression. 5614 The set of watchpoints that triggered is recorded in the 5615 breakpoint objects themselves (see bp->watchpoint_triggered). 5616 If we processed another event first, that other event could 5617 clobber this info. */ 5618 if (ecs->event_thread->stepping_over_watchpoint) 5619 return 0; 5620 5621 pending = iterate_over_threads (resumed_thread_with_pending_status, 5622 NULL); 5623 if (pending != NULL) 5624 { 5625 struct thread_info *tp = ecs->event_thread; 5626 struct regcache *regcache; 5627 5628 if (debug_infrun) 5629 { 5630 fprintf_unfiltered (gdb_stdlog, 5631 "infrun: found resumed threads with " 5632 "pending events, saving status\n"); 5633 } 5634 5635 gdb_assert (pending != tp); 5636 5637 /* Record the event thread's event for later. */ 5638 save_waitstatus (tp, &ecs->ws); 5639 /* This was cleared early, by handle_inferior_event. Set it 5640 so this pending event is considered by 5641 do_target_wait. */ 5642 tp->resumed = 1; 5643 5644 gdb_assert (!tp->executing); 5645 5646 regcache = get_thread_regcache (tp->ptid); 5647 tp->suspend.stop_pc = regcache_read_pc (regcache); 5648 5649 if (debug_infrun) 5650 { 5651 fprintf_unfiltered (gdb_stdlog, 5652 "infrun: saved stop_pc=%s for %s " 5653 "(currently_stepping=%d)\n", 5654 paddress (target_gdbarch (), 5655 tp->suspend.stop_pc), 5656 target_pid_to_str (tp->ptid), 5657 currently_stepping (tp)); 5658 } 5659 5660 /* This in-line step-over finished; clear this so we won't 5661 start a new one. This is what handle_signal_stop would 5662 do, if we returned false. */ 5663 tp->stepping_over_breakpoint = 0; 5664 5665 /* Wake up the event loop again. */ 5666 mark_async_event_handler (infrun_async_inferior_event_token); 5667 5668 prepare_to_wait (ecs); 5669 return 1; 5670 } 5671 } 5672 5673 return 0; 5674 } 5675 5676 /* Come here when the program has stopped with a signal. */ 5677 5678 static void 5679 handle_signal_stop (struct execution_control_state *ecs) 5680 { 5681 struct frame_info *frame; 5682 struct gdbarch *gdbarch; 5683 int stopped_by_watchpoint; 5684 enum stop_kind stop_soon; 5685 int random_signal; 5686 5687 gdb_assert (ecs->ws.kind == TARGET_WAITKIND_STOPPED); 5688 5689 ecs->event_thread->suspend.stop_signal = ecs->ws.value.sig; 5690 5691 /* Do we need to clean up the state of a thread that has 5692 completed a displaced single-step? (Doing so usually affects 5693 the PC, so do it here, before we set stop_pc.) */ 5694 if (finish_step_over (ecs)) 5695 return; 5696 5697 /* If we either finished a single-step or hit a breakpoint, but 5698 the user wanted this thread to be stopped, pretend we got a 5699 SIG0 (generic unsignaled stop). */ 5700 if (ecs->event_thread->stop_requested 5701 && ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP) 5702 ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0; 5703 5704 stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid)); 5705 5706 if (debug_infrun) 5707 { 5708 struct regcache *regcache = get_thread_regcache (ecs->ptid); 5709 struct gdbarch *gdbarch = get_regcache_arch (regcache); 5710 struct cleanup *old_chain = save_inferior_ptid (); 5711 5712 inferior_ptid = ecs->ptid; 5713 5714 fprintf_unfiltered (gdb_stdlog, "infrun: stop_pc = %s\n", 5715 paddress (gdbarch, stop_pc)); 5716 if (target_stopped_by_watchpoint ()) 5717 { 5718 CORE_ADDR addr; 5719 5720 fprintf_unfiltered (gdb_stdlog, "infrun: stopped by watchpoint\n"); 5721 5722 if (target_stopped_data_address (¤t_target, &addr)) 5723 fprintf_unfiltered (gdb_stdlog, 5724 "infrun: stopped data address = %s\n", 5725 paddress (gdbarch, addr)); 5726 else 5727 fprintf_unfiltered (gdb_stdlog, 5728 "infrun: (no data address available)\n"); 5729 } 5730 5731 do_cleanups (old_chain); 5732 } 5733 5734 /* This is originated from start_remote(), start_inferior() and 5735 shared libraries hook functions. */ 5736 stop_soon = get_inferior_stop_soon (ecs->ptid); 5737 if (stop_soon == STOP_QUIETLY || stop_soon == STOP_QUIETLY_REMOTE) 5738 { 5739 if (!ptid_equal (ecs->ptid, inferior_ptid)) 5740 context_switch (ecs->ptid); 5741 if (debug_infrun) 5742 fprintf_unfiltered (gdb_stdlog, "infrun: quietly stopped\n"); 5743 stop_print_frame = 1; 5744 stop_waiting (ecs); 5745 return; 5746 } 5747 5748 /* This originates from attach_command(). We need to overwrite 5749 the stop_signal here, because some kernels don't ignore a 5750 SIGSTOP in a subsequent ptrace(PTRACE_CONT,SIGSTOP) call. 5751 See more comments in inferior.h. On the other hand, if we 5752 get a non-SIGSTOP, report it to the user - assume the backend 5753 will handle the SIGSTOP if it should show up later. 5754 5755 Also consider that the attach is complete when we see a 5756 SIGTRAP. Some systems (e.g. Windows), and stubs supporting 5757 target extended-remote report it instead of a SIGSTOP 5758 (e.g. gdbserver). We already rely on SIGTRAP being our 5759 signal, so this is no exception. 5760 5761 Also consider that the attach is complete when we see a 5762 GDB_SIGNAL_0. In non-stop mode, GDB will explicitly tell 5763 the target to stop all threads of the inferior, in case the 5764 low level attach operation doesn't stop them implicitly. If 5765 they weren't stopped implicitly, then the stub will report a 5766 GDB_SIGNAL_0, meaning: stopped for no particular reason 5767 other than GDB's request. */ 5768 if (stop_soon == STOP_QUIETLY_NO_SIGSTOP 5769 && (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_STOP 5770 || ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP 5771 || ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_0)) 5772 { 5773 stop_print_frame = 1; 5774 stop_waiting (ecs); 5775 ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0; 5776 return; 5777 } 5778 5779 /* See if something interesting happened to the non-current thread. If 5780 so, then switch to that thread. */ 5781 if (!ptid_equal (ecs->ptid, inferior_ptid)) 5782 { 5783 if (debug_infrun) 5784 fprintf_unfiltered (gdb_stdlog, "infrun: context switch\n"); 5785 5786 context_switch (ecs->ptid); 5787 5788 if (deprecated_context_hook) 5789 deprecated_context_hook (ptid_to_global_thread_id (ecs->ptid)); 5790 } 5791 5792 /* At this point, get hold of the now-current thread's frame. */ 5793 frame = get_current_frame (); 5794 gdbarch = get_frame_arch (frame); 5795 5796 /* Pull the single step breakpoints out of the target. */ 5797 if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP) 5798 { 5799 struct regcache *regcache; 5800 struct address_space *aspace; 5801 CORE_ADDR pc; 5802 5803 regcache = get_thread_regcache (ecs->ptid); 5804 aspace = get_regcache_aspace (regcache); 5805 pc = regcache_read_pc (regcache); 5806 5807 /* However, before doing so, if this single-step breakpoint was 5808 actually for another thread, set this thread up for moving 5809 past it. */ 5810 if (!thread_has_single_step_breakpoint_here (ecs->event_thread, 5811 aspace, pc)) 5812 { 5813 if (single_step_breakpoint_inserted_here_p (aspace, pc)) 5814 { 5815 if (debug_infrun) 5816 { 5817 fprintf_unfiltered (gdb_stdlog, 5818 "infrun: [%s] hit another thread's " 5819 "single-step breakpoint\n", 5820 target_pid_to_str (ecs->ptid)); 5821 } 5822 ecs->hit_singlestep_breakpoint = 1; 5823 } 5824 } 5825 else 5826 { 5827 if (debug_infrun) 5828 { 5829 fprintf_unfiltered (gdb_stdlog, 5830 "infrun: [%s] hit its " 5831 "single-step breakpoint\n", 5832 target_pid_to_str (ecs->ptid)); 5833 } 5834 } 5835 } 5836 delete_just_stopped_threads_single_step_breakpoints (); 5837 5838 if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP 5839 && ecs->event_thread->control.trap_expected 5840 && ecs->event_thread->stepping_over_watchpoint) 5841 stopped_by_watchpoint = 0; 5842 else 5843 stopped_by_watchpoint = watchpoints_triggered (&ecs->ws); 5844 5845 /* If necessary, step over this watchpoint. We'll be back to display 5846 it in a moment. */ 5847 if (stopped_by_watchpoint 5848 && (target_have_steppable_watchpoint 5849 || gdbarch_have_nonsteppable_watchpoint (gdbarch))) 5850 { 5851 /* At this point, we are stopped at an instruction which has 5852 attempted to write to a piece of memory under control of 5853 a watchpoint. The instruction hasn't actually executed 5854 yet. If we were to evaluate the watchpoint expression 5855 now, we would get the old value, and therefore no change 5856 would seem to have occurred. 5857 5858 In order to make watchpoints work `right', we really need 5859 to complete the memory write, and then evaluate the 5860 watchpoint expression. We do this by single-stepping the 5861 target. 5862 5863 It may not be necessary to disable the watchpoint to step over 5864 it. For example, the PA can (with some kernel cooperation) 5865 single step over a watchpoint without disabling the watchpoint. 5866 5867 It is far more common to need to disable a watchpoint to step 5868 the inferior over it. If we have non-steppable watchpoints, 5869 we must disable the current watchpoint; it's simplest to 5870 disable all watchpoints. 5871 5872 Any breakpoint at PC must also be stepped over -- if there's 5873 one, it will have already triggered before the watchpoint 5874 triggered, and we either already reported it to the user, or 5875 it didn't cause a stop and we called keep_going. In either 5876 case, if there was a breakpoint at PC, we must be trying to 5877 step past it. */ 5878 ecs->event_thread->stepping_over_watchpoint = 1; 5879 keep_going (ecs); 5880 return; 5881 } 5882 5883 ecs->event_thread->stepping_over_breakpoint = 0; 5884 ecs->event_thread->stepping_over_watchpoint = 0; 5885 bpstat_clear (&ecs->event_thread->control.stop_bpstat); 5886 ecs->event_thread->control.stop_step = 0; 5887 stop_print_frame = 1; 5888 stopped_by_random_signal = 0; 5889 5890 /* Hide inlined functions starting here, unless we just performed stepi or 5891 nexti. After stepi and nexti, always show the innermost frame (not any 5892 inline function call sites). */ 5893 if (ecs->event_thread->control.step_range_end != 1) 5894 { 5895 struct address_space *aspace = 5896 get_regcache_aspace (get_thread_regcache (ecs->ptid)); 5897 5898 /* skip_inline_frames is expensive, so we avoid it if we can 5899 determine that the address is one where functions cannot have 5900 been inlined. This improves performance with inferiors that 5901 load a lot of shared libraries, because the solib event 5902 breakpoint is defined as the address of a function (i.e. not 5903 inline). Note that we have to check the previous PC as well 5904 as the current one to catch cases when we have just 5905 single-stepped off a breakpoint prior to reinstating it. 5906 Note that we're assuming that the code we single-step to is 5907 not inline, but that's not definitive: there's nothing 5908 preventing the event breakpoint function from containing 5909 inlined code, and the single-step ending up there. If the 5910 user had set a breakpoint on that inlined code, the missing 5911 skip_inline_frames call would break things. Fortunately 5912 that's an extremely unlikely scenario. */ 5913 if (!pc_at_non_inline_function (aspace, stop_pc, &ecs->ws) 5914 && !(ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP 5915 && ecs->event_thread->control.trap_expected 5916 && pc_at_non_inline_function (aspace, 5917 ecs->event_thread->prev_pc, 5918 &ecs->ws))) 5919 { 5920 skip_inline_frames (ecs->ptid); 5921 5922 /* Re-fetch current thread's frame in case that invalidated 5923 the frame cache. */ 5924 frame = get_current_frame (); 5925 gdbarch = get_frame_arch (frame); 5926 } 5927 } 5928 5929 if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP 5930 && ecs->event_thread->control.trap_expected 5931 && gdbarch_single_step_through_delay_p (gdbarch) 5932 && currently_stepping (ecs->event_thread)) 5933 { 5934 /* We're trying to step off a breakpoint. Turns out that we're 5935 also on an instruction that needs to be stepped multiple 5936 times before it's been fully executing. E.g., architectures 5937 with a delay slot. It needs to be stepped twice, once for 5938 the instruction and once for the delay slot. */ 5939 int step_through_delay 5940 = gdbarch_single_step_through_delay (gdbarch, frame); 5941 5942 if (debug_infrun && step_through_delay) 5943 fprintf_unfiltered (gdb_stdlog, "infrun: step through delay\n"); 5944 if (ecs->event_thread->control.step_range_end == 0 5945 && step_through_delay) 5946 { 5947 /* The user issued a continue when stopped at a breakpoint. 5948 Set up for another trap and get out of here. */ 5949 ecs->event_thread->stepping_over_breakpoint = 1; 5950 keep_going (ecs); 5951 return; 5952 } 5953 else if (step_through_delay) 5954 { 5955 /* The user issued a step when stopped at a breakpoint. 5956 Maybe we should stop, maybe we should not - the delay 5957 slot *might* correspond to a line of source. In any 5958 case, don't decide that here, just set 5959 ecs->stepping_over_breakpoint, making sure we 5960 single-step again before breakpoints are re-inserted. */ 5961 ecs->event_thread->stepping_over_breakpoint = 1; 5962 } 5963 } 5964 5965 /* See if there is a breakpoint/watchpoint/catchpoint/etc. that 5966 handles this event. */ 5967 ecs->event_thread->control.stop_bpstat 5968 = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()), 5969 stop_pc, ecs->ptid, &ecs->ws); 5970 5971 /* Following in case break condition called a 5972 function. */ 5973 stop_print_frame = 1; 5974 5975 /* This is where we handle "moribund" watchpoints. Unlike 5976 software breakpoints traps, hardware watchpoint traps are 5977 always distinguishable from random traps. If no high-level 5978 watchpoint is associated with the reported stop data address 5979 anymore, then the bpstat does not explain the signal --- 5980 simply make sure to ignore it if `stopped_by_watchpoint' is 5981 set. */ 5982 5983 if (debug_infrun 5984 && ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP 5985 && !bpstat_explains_signal (ecs->event_thread->control.stop_bpstat, 5986 GDB_SIGNAL_TRAP) 5987 && stopped_by_watchpoint) 5988 fprintf_unfiltered (gdb_stdlog, 5989 "infrun: no user watchpoint explains " 5990 "watchpoint SIGTRAP, ignoring\n"); 5991 5992 /* NOTE: cagney/2003-03-29: These checks for a random signal 5993 at one stage in the past included checks for an inferior 5994 function call's call dummy's return breakpoint. The original 5995 comment, that went with the test, read: 5996 5997 ``End of a stack dummy. Some systems (e.g. Sony news) give 5998 another signal besides SIGTRAP, so check here as well as 5999 above.'' 6000 6001 If someone ever tries to get call dummys on a 6002 non-executable stack to work (where the target would stop 6003 with something like a SIGSEGV), then those tests might need 6004 to be re-instated. Given, however, that the tests were only 6005 enabled when momentary breakpoints were not being used, I 6006 suspect that it won't be the case. 6007 6008 NOTE: kettenis/2004-02-05: Indeed such checks don't seem to 6009 be necessary for call dummies on a non-executable stack on 6010 SPARC. */ 6011 6012 /* See if the breakpoints module can explain the signal. */ 6013 random_signal 6014 = !bpstat_explains_signal (ecs->event_thread->control.stop_bpstat, 6015 ecs->event_thread->suspend.stop_signal); 6016 6017 /* Maybe this was a trap for a software breakpoint that has since 6018 been removed. */ 6019 if (random_signal && target_stopped_by_sw_breakpoint ()) 6020 { 6021 if (program_breakpoint_here_p (gdbarch, stop_pc)) 6022 { 6023 struct regcache *regcache; 6024 int decr_pc; 6025 6026 /* Re-adjust PC to what the program would see if GDB was not 6027 debugging it. */ 6028 regcache = get_thread_regcache (ecs->event_thread->ptid); 6029 decr_pc = gdbarch_decr_pc_after_break (gdbarch); 6030 if (decr_pc != 0) 6031 { 6032 struct cleanup *old_cleanups = make_cleanup (null_cleanup, NULL); 6033 6034 if (record_full_is_used ()) 6035 record_full_gdb_operation_disable_set (); 6036 6037 regcache_write_pc (regcache, stop_pc + decr_pc); 6038 6039 do_cleanups (old_cleanups); 6040 } 6041 } 6042 else 6043 { 6044 /* A delayed software breakpoint event. Ignore the trap. */ 6045 if (debug_infrun) 6046 fprintf_unfiltered (gdb_stdlog, 6047 "infrun: delayed software breakpoint " 6048 "trap, ignoring\n"); 6049 random_signal = 0; 6050 } 6051 } 6052 6053 /* Maybe this was a trap for a hardware breakpoint/watchpoint that 6054 has since been removed. */ 6055 if (random_signal && target_stopped_by_hw_breakpoint ()) 6056 { 6057 /* A delayed hardware breakpoint event. Ignore the trap. */ 6058 if (debug_infrun) 6059 fprintf_unfiltered (gdb_stdlog, 6060 "infrun: delayed hardware breakpoint/watchpoint " 6061 "trap, ignoring\n"); 6062 random_signal = 0; 6063 } 6064 6065 /* If not, perhaps stepping/nexting can. */ 6066 if (random_signal) 6067 random_signal = !(ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP 6068 && currently_stepping (ecs->event_thread)); 6069 6070 /* Perhaps the thread hit a single-step breakpoint of _another_ 6071 thread. Single-step breakpoints are transparent to the 6072 breakpoints module. */ 6073 if (random_signal) 6074 random_signal = !ecs->hit_singlestep_breakpoint; 6075 6076 /* No? Perhaps we got a moribund watchpoint. */ 6077 if (random_signal) 6078 random_signal = !stopped_by_watchpoint; 6079 6080 /* Always stop if the user explicitly requested this thread to 6081 remain stopped. */ 6082 if (ecs->event_thread->stop_requested) 6083 { 6084 random_signal = 1; 6085 if (debug_infrun) 6086 fprintf_unfiltered (gdb_stdlog, "infrun: user-requested stop\n"); 6087 } 6088 6089 /* For the program's own signals, act according to 6090 the signal handling tables. */ 6091 6092 if (random_signal) 6093 { 6094 /* Signal not for debugging purposes. */ 6095 struct inferior *inf = find_inferior_ptid (ecs->ptid); 6096 enum gdb_signal stop_signal = ecs->event_thread->suspend.stop_signal; 6097 6098 if (debug_infrun) 6099 fprintf_unfiltered (gdb_stdlog, "infrun: random signal (%s)\n", 6100 gdb_signal_to_symbol_string (stop_signal)); 6101 6102 stopped_by_random_signal = 1; 6103 6104 /* Always stop on signals if we're either just gaining control 6105 of the program, or the user explicitly requested this thread 6106 to remain stopped. */ 6107 if (stop_soon != NO_STOP_QUIETLY 6108 || ecs->event_thread->stop_requested 6109 || (!inf->detaching 6110 && signal_stop_state (ecs->event_thread->suspend.stop_signal))) 6111 { 6112 stop_waiting (ecs); 6113 return; 6114 } 6115 6116 /* Notify observers the signal has "handle print" set. Note we 6117 returned early above if stopping; normal_stop handles the 6118 printing in that case. */ 6119 if (signal_print[ecs->event_thread->suspend.stop_signal]) 6120 { 6121 /* The signal table tells us to print about this signal. */ 6122 target_terminal_ours_for_output (); 6123 observer_notify_signal_received (ecs->event_thread->suspend.stop_signal); 6124 target_terminal_inferior (); 6125 } 6126 6127 /* Clear the signal if it should not be passed. */ 6128 if (signal_program[ecs->event_thread->suspend.stop_signal] == 0) 6129 ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0; 6130 6131 if (ecs->event_thread->prev_pc == stop_pc 6132 && ecs->event_thread->control.trap_expected 6133 && ecs->event_thread->control.step_resume_breakpoint == NULL) 6134 { 6135 /* We were just starting a new sequence, attempting to 6136 single-step off of a breakpoint and expecting a SIGTRAP. 6137 Instead this signal arrives. This signal will take us out 6138 of the stepping range so GDB needs to remember to, when 6139 the signal handler returns, resume stepping off that 6140 breakpoint. */ 6141 /* To simplify things, "continue" is forced to use the same 6142 code paths as single-step - set a breakpoint at the 6143 signal return address and then, once hit, step off that 6144 breakpoint. */ 6145 if (debug_infrun) 6146 fprintf_unfiltered (gdb_stdlog, 6147 "infrun: signal arrived while stepping over " 6148 "breakpoint\n"); 6149 6150 insert_hp_step_resume_breakpoint_at_frame (frame); 6151 ecs->event_thread->step_after_step_resume_breakpoint = 1; 6152 /* Reset trap_expected to ensure breakpoints are re-inserted. */ 6153 ecs->event_thread->control.trap_expected = 0; 6154 6155 /* If we were nexting/stepping some other thread, switch to 6156 it, so that we don't continue it, losing control. */ 6157 if (!switch_back_to_stepped_thread (ecs)) 6158 keep_going (ecs); 6159 return; 6160 } 6161 6162 if (ecs->event_thread->suspend.stop_signal != GDB_SIGNAL_0 6163 && (pc_in_thread_step_range (stop_pc, ecs->event_thread) 6164 || ecs->event_thread->control.step_range_end == 1) 6165 && frame_id_eq (get_stack_frame_id (frame), 6166 ecs->event_thread->control.step_stack_frame_id) 6167 && ecs->event_thread->control.step_resume_breakpoint == NULL) 6168 { 6169 /* The inferior is about to take a signal that will take it 6170 out of the single step range. Set a breakpoint at the 6171 current PC (which is presumably where the signal handler 6172 will eventually return) and then allow the inferior to 6173 run free. 6174 6175 Note that this is only needed for a signal delivered 6176 while in the single-step range. Nested signals aren't a 6177 problem as they eventually all return. */ 6178 if (debug_infrun) 6179 fprintf_unfiltered (gdb_stdlog, 6180 "infrun: signal may take us out of " 6181 "single-step range\n"); 6182 6183 clear_step_over_info (); 6184 insert_hp_step_resume_breakpoint_at_frame (frame); 6185 ecs->event_thread->step_after_step_resume_breakpoint = 1; 6186 /* Reset trap_expected to ensure breakpoints are re-inserted. */ 6187 ecs->event_thread->control.trap_expected = 0; 6188 keep_going (ecs); 6189 return; 6190 } 6191 6192 /* Note: step_resume_breakpoint may be non-NULL. This occures 6193 when either there's a nested signal, or when there's a 6194 pending signal enabled just as the signal handler returns 6195 (leaving the inferior at the step-resume-breakpoint without 6196 actually executing it). Either way continue until the 6197 breakpoint is really hit. */ 6198 6199 if (!switch_back_to_stepped_thread (ecs)) 6200 { 6201 if (debug_infrun) 6202 fprintf_unfiltered (gdb_stdlog, 6203 "infrun: random signal, keep going\n"); 6204 6205 keep_going (ecs); 6206 } 6207 return; 6208 } 6209 6210 process_event_stop_test (ecs); 6211 } 6212 6213 /* Come here when we've got some debug event / signal we can explain 6214 (IOW, not a random signal), and test whether it should cause a 6215 stop, or whether we should resume the inferior (transparently). 6216 E.g., could be a breakpoint whose condition evaluates false; we 6217 could be still stepping within the line; etc. */ 6218 6219 static void 6220 process_event_stop_test (struct execution_control_state *ecs) 6221 { 6222 struct symtab_and_line stop_pc_sal; 6223 struct frame_info *frame; 6224 struct gdbarch *gdbarch; 6225 CORE_ADDR jmp_buf_pc; 6226 struct bpstat_what what; 6227 6228 /* Handle cases caused by hitting a breakpoint. */ 6229 6230 frame = get_current_frame (); 6231 gdbarch = get_frame_arch (frame); 6232 6233 what = bpstat_what (ecs->event_thread->control.stop_bpstat); 6234 6235 if (what.call_dummy) 6236 { 6237 stop_stack_dummy = what.call_dummy; 6238 } 6239 6240 /* A few breakpoint types have callbacks associated (e.g., 6241 bp_jit_event). Run them now. */ 6242 bpstat_run_callbacks (ecs->event_thread->control.stop_bpstat); 6243 6244 /* If we hit an internal event that triggers symbol changes, the 6245 current frame will be invalidated within bpstat_what (e.g., if we 6246 hit an internal solib event). Re-fetch it. */ 6247 frame = get_current_frame (); 6248 gdbarch = get_frame_arch (frame); 6249 6250 switch (what.main_action) 6251 { 6252 case BPSTAT_WHAT_SET_LONGJMP_RESUME: 6253 /* If we hit the breakpoint at longjmp while stepping, we 6254 install a momentary breakpoint at the target of the 6255 jmp_buf. */ 6256 6257 if (debug_infrun) 6258 fprintf_unfiltered (gdb_stdlog, 6259 "infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME\n"); 6260 6261 ecs->event_thread->stepping_over_breakpoint = 1; 6262 6263 if (what.is_longjmp) 6264 { 6265 struct value *arg_value; 6266 6267 /* If we set the longjmp breakpoint via a SystemTap probe, 6268 then use it to extract the arguments. The destination PC 6269 is the third argument to the probe. */ 6270 arg_value = probe_safe_evaluate_at_pc (frame, 2); 6271 if (arg_value) 6272 { 6273 jmp_buf_pc = value_as_address (arg_value); 6274 jmp_buf_pc = gdbarch_addr_bits_remove (gdbarch, jmp_buf_pc); 6275 } 6276 else if (!gdbarch_get_longjmp_target_p (gdbarch) 6277 || !gdbarch_get_longjmp_target (gdbarch, 6278 frame, &jmp_buf_pc)) 6279 { 6280 if (debug_infrun) 6281 fprintf_unfiltered (gdb_stdlog, 6282 "infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME " 6283 "(!gdbarch_get_longjmp_target)\n"); 6284 keep_going (ecs); 6285 return; 6286 } 6287 6288 /* Insert a breakpoint at resume address. */ 6289 insert_longjmp_resume_breakpoint (gdbarch, jmp_buf_pc); 6290 } 6291 else 6292 check_exception_resume (ecs, frame); 6293 keep_going (ecs); 6294 return; 6295 6296 case BPSTAT_WHAT_CLEAR_LONGJMP_RESUME: 6297 { 6298 struct frame_info *init_frame; 6299 6300 /* There are several cases to consider. 6301 6302 1. The initiating frame no longer exists. In this case we 6303 must stop, because the exception or longjmp has gone too 6304 far. 6305 6306 2. The initiating frame exists, and is the same as the 6307 current frame. We stop, because the exception or longjmp 6308 has been caught. 6309 6310 3. The initiating frame exists and is different from the 6311 current frame. This means the exception or longjmp has 6312 been caught beneath the initiating frame, so keep going. 6313 6314 4. longjmp breakpoint has been placed just to protect 6315 against stale dummy frames and user is not interested in 6316 stopping around longjmps. */ 6317 6318 if (debug_infrun) 6319 fprintf_unfiltered (gdb_stdlog, 6320 "infrun: BPSTAT_WHAT_CLEAR_LONGJMP_RESUME\n"); 6321 6322 gdb_assert (ecs->event_thread->control.exception_resume_breakpoint 6323 != NULL); 6324 delete_exception_resume_breakpoint (ecs->event_thread); 6325 6326 if (what.is_longjmp) 6327 { 6328 check_longjmp_breakpoint_for_call_dummy (ecs->event_thread); 6329 6330 if (!frame_id_p (ecs->event_thread->initiating_frame)) 6331 { 6332 /* Case 4. */ 6333 keep_going (ecs); 6334 return; 6335 } 6336 } 6337 6338 init_frame = frame_find_by_id (ecs->event_thread->initiating_frame); 6339 6340 if (init_frame) 6341 { 6342 struct frame_id current_id 6343 = get_frame_id (get_current_frame ()); 6344 if (frame_id_eq (current_id, 6345 ecs->event_thread->initiating_frame)) 6346 { 6347 /* Case 2. Fall through. */ 6348 } 6349 else 6350 { 6351 /* Case 3. */ 6352 keep_going (ecs); 6353 return; 6354 } 6355 } 6356 6357 /* For Cases 1 and 2, remove the step-resume breakpoint, if it 6358 exists. */ 6359 delete_step_resume_breakpoint (ecs->event_thread); 6360 6361 end_stepping_range (ecs); 6362 } 6363 return; 6364 6365 case BPSTAT_WHAT_SINGLE: 6366 if (debug_infrun) 6367 fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_SINGLE\n"); 6368 ecs->event_thread->stepping_over_breakpoint = 1; 6369 /* Still need to check other stuff, at least the case where we 6370 are stepping and step out of the right range. */ 6371 break; 6372 6373 case BPSTAT_WHAT_STEP_RESUME: 6374 if (debug_infrun) 6375 fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STEP_RESUME\n"); 6376 6377 delete_step_resume_breakpoint (ecs->event_thread); 6378 if (ecs->event_thread->control.proceed_to_finish 6379 && execution_direction == EXEC_REVERSE) 6380 { 6381 struct thread_info *tp = ecs->event_thread; 6382 6383 /* We are finishing a function in reverse, and just hit the 6384 step-resume breakpoint at the start address of the 6385 function, and we're almost there -- just need to back up 6386 by one more single-step, which should take us back to the 6387 function call. */ 6388 tp->control.step_range_start = tp->control.step_range_end = 1; 6389 keep_going (ecs); 6390 return; 6391 } 6392 fill_in_stop_func (gdbarch, ecs); 6393 if (stop_pc == ecs->stop_func_start 6394 && execution_direction == EXEC_REVERSE) 6395 { 6396 /* We are stepping over a function call in reverse, and just 6397 hit the step-resume breakpoint at the start address of 6398 the function. Go back to single-stepping, which should 6399 take us back to the function call. */ 6400 ecs->event_thread->stepping_over_breakpoint = 1; 6401 keep_going (ecs); 6402 return; 6403 } 6404 break; 6405 6406 case BPSTAT_WHAT_STOP_NOISY: 6407 if (debug_infrun) 6408 fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STOP_NOISY\n"); 6409 stop_print_frame = 1; 6410 6411 /* Assume the thread stopped for a breapoint. We'll still check 6412 whether a/the breakpoint is there when the thread is next 6413 resumed. */ 6414 ecs->event_thread->stepping_over_breakpoint = 1; 6415 6416 stop_waiting (ecs); 6417 return; 6418 6419 case BPSTAT_WHAT_STOP_SILENT: 6420 if (debug_infrun) 6421 fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STOP_SILENT\n"); 6422 stop_print_frame = 0; 6423 6424 /* Assume the thread stopped for a breapoint. We'll still check 6425 whether a/the breakpoint is there when the thread is next 6426 resumed. */ 6427 ecs->event_thread->stepping_over_breakpoint = 1; 6428 stop_waiting (ecs); 6429 return; 6430 6431 case BPSTAT_WHAT_HP_STEP_RESUME: 6432 if (debug_infrun) 6433 fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_HP_STEP_RESUME\n"); 6434 6435 delete_step_resume_breakpoint (ecs->event_thread); 6436 if (ecs->event_thread->step_after_step_resume_breakpoint) 6437 { 6438 /* Back when the step-resume breakpoint was inserted, we 6439 were trying to single-step off a breakpoint. Go back to 6440 doing that. */ 6441 ecs->event_thread->step_after_step_resume_breakpoint = 0; 6442 ecs->event_thread->stepping_over_breakpoint = 1; 6443 keep_going (ecs); 6444 return; 6445 } 6446 break; 6447 6448 case BPSTAT_WHAT_KEEP_CHECKING: 6449 break; 6450 } 6451 6452 /* If we stepped a permanent breakpoint and we had a high priority 6453 step-resume breakpoint for the address we stepped, but we didn't 6454 hit it, then we must have stepped into the signal handler. The 6455 step-resume was only necessary to catch the case of _not_ 6456 stepping into the handler, so delete it, and fall through to 6457 checking whether the step finished. */ 6458 if (ecs->event_thread->stepped_breakpoint) 6459 { 6460 struct breakpoint *sr_bp 6461 = ecs->event_thread->control.step_resume_breakpoint; 6462 6463 if (sr_bp != NULL 6464 && sr_bp->loc->permanent 6465 && sr_bp->type == bp_hp_step_resume 6466 && sr_bp->loc->address == ecs->event_thread->prev_pc) 6467 { 6468 if (debug_infrun) 6469 fprintf_unfiltered (gdb_stdlog, 6470 "infrun: stepped permanent breakpoint, stopped in " 6471 "handler\n"); 6472 delete_step_resume_breakpoint (ecs->event_thread); 6473 ecs->event_thread->step_after_step_resume_breakpoint = 0; 6474 } 6475 } 6476 6477 /* We come here if we hit a breakpoint but should not stop for it. 6478 Possibly we also were stepping and should stop for that. So fall 6479 through and test for stepping. But, if not stepping, do not 6480 stop. */ 6481 6482 /* In all-stop mode, if we're currently stepping but have stopped in 6483 some other thread, we need to switch back to the stepped thread. */ 6484 if (switch_back_to_stepped_thread (ecs)) 6485 return; 6486 6487 if (ecs->event_thread->control.step_resume_breakpoint) 6488 { 6489 if (debug_infrun) 6490 fprintf_unfiltered (gdb_stdlog, 6491 "infrun: step-resume breakpoint is inserted\n"); 6492 6493 /* Having a step-resume breakpoint overrides anything 6494 else having to do with stepping commands until 6495 that breakpoint is reached. */ 6496 keep_going (ecs); 6497 return; 6498 } 6499 6500 if (ecs->event_thread->control.step_range_end == 0) 6501 { 6502 if (debug_infrun) 6503 fprintf_unfiltered (gdb_stdlog, "infrun: no stepping, continue\n"); 6504 /* Likewise if we aren't even stepping. */ 6505 keep_going (ecs); 6506 return; 6507 } 6508 6509 /* Re-fetch current thread's frame in case the code above caused 6510 the frame cache to be re-initialized, making our FRAME variable 6511 a dangling pointer. */ 6512 frame = get_current_frame (); 6513 gdbarch = get_frame_arch (frame); 6514 fill_in_stop_func (gdbarch, ecs); 6515 6516 /* If stepping through a line, keep going if still within it. 6517 6518 Note that step_range_end is the address of the first instruction 6519 beyond the step range, and NOT the address of the last instruction 6520 within it! 6521 6522 Note also that during reverse execution, we may be stepping 6523 through a function epilogue and therefore must detect when 6524 the current-frame changes in the middle of a line. */ 6525 6526 if (pc_in_thread_step_range (stop_pc, ecs->event_thread) 6527 && (execution_direction != EXEC_REVERSE 6528 || frame_id_eq (get_frame_id (frame), 6529 ecs->event_thread->control.step_frame_id))) 6530 { 6531 if (debug_infrun) 6532 fprintf_unfiltered 6533 (gdb_stdlog, "infrun: stepping inside range [%s-%s]\n", 6534 paddress (gdbarch, ecs->event_thread->control.step_range_start), 6535 paddress (gdbarch, ecs->event_thread->control.step_range_end)); 6536 6537 /* Tentatively re-enable range stepping; `resume' disables it if 6538 necessary (e.g., if we're stepping over a breakpoint or we 6539 have software watchpoints). */ 6540 ecs->event_thread->control.may_range_step = 1; 6541 6542 /* When stepping backward, stop at beginning of line range 6543 (unless it's the function entry point, in which case 6544 keep going back to the call point). */ 6545 if (stop_pc == ecs->event_thread->control.step_range_start 6546 && stop_pc != ecs->stop_func_start 6547 && execution_direction == EXEC_REVERSE) 6548 end_stepping_range (ecs); 6549 else 6550 keep_going (ecs); 6551 6552 return; 6553 } 6554 6555 /* We stepped out of the stepping range. */ 6556 6557 /* If we are stepping at the source level and entered the runtime 6558 loader dynamic symbol resolution code... 6559 6560 EXEC_FORWARD: we keep on single stepping until we exit the run 6561 time loader code and reach the callee's address. 6562 6563 EXEC_REVERSE: we've already executed the callee (backward), and 6564 the runtime loader code is handled just like any other 6565 undebuggable function call. Now we need only keep stepping 6566 backward through the trampoline code, and that's handled further 6567 down, so there is nothing for us to do here. */ 6568 6569 if (execution_direction != EXEC_REVERSE 6570 && ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE 6571 && in_solib_dynsym_resolve_code (stop_pc)) 6572 { 6573 CORE_ADDR pc_after_resolver = 6574 gdbarch_skip_solib_resolver (gdbarch, stop_pc); 6575 6576 if (debug_infrun) 6577 fprintf_unfiltered (gdb_stdlog, 6578 "infrun: stepped into dynsym resolve code\n"); 6579 6580 if (pc_after_resolver) 6581 { 6582 /* Set up a step-resume breakpoint at the address 6583 indicated by SKIP_SOLIB_RESOLVER. */ 6584 struct symtab_and_line sr_sal; 6585 6586 init_sal (&sr_sal); 6587 sr_sal.pc = pc_after_resolver; 6588 sr_sal.pspace = get_frame_program_space (frame); 6589 6590 insert_step_resume_breakpoint_at_sal (gdbarch, 6591 sr_sal, null_frame_id); 6592 } 6593 6594 keep_going (ecs); 6595 return; 6596 } 6597 6598 if (ecs->event_thread->control.step_range_end != 1 6599 && (ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE 6600 || ecs->event_thread->control.step_over_calls == STEP_OVER_ALL) 6601 && get_frame_type (frame) == SIGTRAMP_FRAME) 6602 { 6603 if (debug_infrun) 6604 fprintf_unfiltered (gdb_stdlog, 6605 "infrun: stepped into signal trampoline\n"); 6606 /* The inferior, while doing a "step" or "next", has ended up in 6607 a signal trampoline (either by a signal being delivered or by 6608 the signal handler returning). Just single-step until the 6609 inferior leaves the trampoline (either by calling the handler 6610 or returning). */ 6611 keep_going (ecs); 6612 return; 6613 } 6614 6615 /* If we're in the return path from a shared library trampoline, 6616 we want to proceed through the trampoline when stepping. */ 6617 /* macro/2012-04-25: This needs to come before the subroutine 6618 call check below as on some targets return trampolines look 6619 like subroutine calls (MIPS16 return thunks). */ 6620 if (gdbarch_in_solib_return_trampoline (gdbarch, 6621 stop_pc, ecs->stop_func_name) 6622 && ecs->event_thread->control.step_over_calls != STEP_OVER_NONE) 6623 { 6624 /* Determine where this trampoline returns. */ 6625 CORE_ADDR real_stop_pc; 6626 6627 real_stop_pc = gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc); 6628 6629 if (debug_infrun) 6630 fprintf_unfiltered (gdb_stdlog, 6631 "infrun: stepped into solib return tramp\n"); 6632 6633 /* Only proceed through if we know where it's going. */ 6634 if (real_stop_pc) 6635 { 6636 /* And put the step-breakpoint there and go until there. */ 6637 struct symtab_and_line sr_sal; 6638 6639 init_sal (&sr_sal); /* initialize to zeroes */ 6640 sr_sal.pc = real_stop_pc; 6641 sr_sal.section = find_pc_overlay (sr_sal.pc); 6642 sr_sal.pspace = get_frame_program_space (frame); 6643 6644 /* Do not specify what the fp should be when we stop since 6645 on some machines the prologue is where the new fp value 6646 is established. */ 6647 insert_step_resume_breakpoint_at_sal (gdbarch, 6648 sr_sal, null_frame_id); 6649 6650 /* Restart without fiddling with the step ranges or 6651 other state. */ 6652 keep_going (ecs); 6653 return; 6654 } 6655 } 6656 6657 /* Check for subroutine calls. The check for the current frame 6658 equalling the step ID is not necessary - the check of the 6659 previous frame's ID is sufficient - but it is a common case and 6660 cheaper than checking the previous frame's ID. 6661 6662 NOTE: frame_id_eq will never report two invalid frame IDs as 6663 being equal, so to get into this block, both the current and 6664 previous frame must have valid frame IDs. */ 6665 /* The outer_frame_id check is a heuristic to detect stepping 6666 through startup code. If we step over an instruction which 6667 sets the stack pointer from an invalid value to a valid value, 6668 we may detect that as a subroutine call from the mythical 6669 "outermost" function. This could be fixed by marking 6670 outermost frames as !stack_p,code_p,special_p. Then the 6671 initial outermost frame, before sp was valid, would 6672 have code_addr == &_start. See the comment in frame_id_eq 6673 for more. */ 6674 if (!frame_id_eq (get_stack_frame_id (frame), 6675 ecs->event_thread->control.step_stack_frame_id) 6676 && (frame_id_eq (frame_unwind_caller_id (get_current_frame ()), 6677 ecs->event_thread->control.step_stack_frame_id) 6678 && (!frame_id_eq (ecs->event_thread->control.step_stack_frame_id, 6679 outer_frame_id) 6680 || (ecs->event_thread->control.step_start_function 6681 != find_pc_function (stop_pc))))) 6682 { 6683 CORE_ADDR real_stop_pc; 6684 6685 if (debug_infrun) 6686 fprintf_unfiltered (gdb_stdlog, "infrun: stepped into subroutine\n"); 6687 6688 if (ecs->event_thread->control.step_over_calls == STEP_OVER_NONE) 6689 { 6690 /* I presume that step_over_calls is only 0 when we're 6691 supposed to be stepping at the assembly language level 6692 ("stepi"). Just stop. */ 6693 /* And this works the same backward as frontward. MVS */ 6694 end_stepping_range (ecs); 6695 return; 6696 } 6697 6698 /* Reverse stepping through solib trampolines. */ 6699 6700 if (execution_direction == EXEC_REVERSE 6701 && ecs->event_thread->control.step_over_calls != STEP_OVER_NONE 6702 && (gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc) 6703 || (ecs->stop_func_start == 0 6704 && in_solib_dynsym_resolve_code (stop_pc)))) 6705 { 6706 /* Any solib trampoline code can be handled in reverse 6707 by simply continuing to single-step. We have already 6708 executed the solib function (backwards), and a few 6709 steps will take us back through the trampoline to the 6710 caller. */ 6711 keep_going (ecs); 6712 return; 6713 } 6714 6715 if (ecs->event_thread->control.step_over_calls == STEP_OVER_ALL) 6716 { 6717 /* We're doing a "next". 6718 6719 Normal (forward) execution: set a breakpoint at the 6720 callee's return address (the address at which the caller 6721 will resume). 6722 6723 Reverse (backward) execution. set the step-resume 6724 breakpoint at the start of the function that we just 6725 stepped into (backwards), and continue to there. When we 6726 get there, we'll need to single-step back to the caller. */ 6727 6728 if (execution_direction == EXEC_REVERSE) 6729 { 6730 /* If we're already at the start of the function, we've either 6731 just stepped backward into a single instruction function, 6732 or stepped back out of a signal handler to the first instruction 6733 of the function. Just keep going, which will single-step back 6734 to the caller. */ 6735 if (ecs->stop_func_start != stop_pc && ecs->stop_func_start != 0) 6736 { 6737 struct symtab_and_line sr_sal; 6738 6739 /* Normal function call return (static or dynamic). */ 6740 init_sal (&sr_sal); 6741 sr_sal.pc = ecs->stop_func_start; 6742 sr_sal.pspace = get_frame_program_space (frame); 6743 insert_step_resume_breakpoint_at_sal (gdbarch, 6744 sr_sal, null_frame_id); 6745 } 6746 } 6747 else 6748 insert_step_resume_breakpoint_at_caller (frame); 6749 6750 keep_going (ecs); 6751 return; 6752 } 6753 6754 /* If we are in a function call trampoline (a stub between the 6755 calling routine and the real function), locate the real 6756 function. That's what tells us (a) whether we want to step 6757 into it at all, and (b) what prologue we want to run to the 6758 end of, if we do step into it. */ 6759 real_stop_pc = skip_language_trampoline (frame, stop_pc); 6760 if (real_stop_pc == 0) 6761 real_stop_pc = gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc); 6762 if (real_stop_pc != 0) 6763 ecs->stop_func_start = real_stop_pc; 6764 6765 if (real_stop_pc != 0 && in_solib_dynsym_resolve_code (real_stop_pc)) 6766 { 6767 struct symtab_and_line sr_sal; 6768 6769 init_sal (&sr_sal); 6770 sr_sal.pc = ecs->stop_func_start; 6771 sr_sal.pspace = get_frame_program_space (frame); 6772 6773 insert_step_resume_breakpoint_at_sal (gdbarch, 6774 sr_sal, null_frame_id); 6775 keep_going (ecs); 6776 return; 6777 } 6778 6779 /* If we have line number information for the function we are 6780 thinking of stepping into and the function isn't on the skip 6781 list, step into it. 6782 6783 If there are several symtabs at that PC (e.g. with include 6784 files), just want to know whether *any* of them have line 6785 numbers. find_pc_line handles this. */ 6786 { 6787 struct symtab_and_line tmp_sal; 6788 6789 tmp_sal = find_pc_line (ecs->stop_func_start, 0); 6790 if (tmp_sal.line != 0 6791 && !function_name_is_marked_for_skip (ecs->stop_func_name, 6792 &tmp_sal)) 6793 { 6794 if (execution_direction == EXEC_REVERSE) 6795 handle_step_into_function_backward (gdbarch, ecs); 6796 else 6797 handle_step_into_function (gdbarch, ecs); 6798 return; 6799 } 6800 } 6801 6802 /* If we have no line number and the step-stop-if-no-debug is 6803 set, we stop the step so that the user has a chance to switch 6804 in assembly mode. */ 6805 if (ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE 6806 && step_stop_if_no_debug) 6807 { 6808 end_stepping_range (ecs); 6809 return; 6810 } 6811 6812 if (execution_direction == EXEC_REVERSE) 6813 { 6814 /* If we're already at the start of the function, we've either just 6815 stepped backward into a single instruction function without line 6816 number info, or stepped back out of a signal handler to the first 6817 instruction of the function without line number info. Just keep 6818 going, which will single-step back to the caller. */ 6819 if (ecs->stop_func_start != stop_pc) 6820 { 6821 /* Set a breakpoint at callee's start address. 6822 From there we can step once and be back in the caller. */ 6823 struct symtab_and_line sr_sal; 6824 6825 init_sal (&sr_sal); 6826 sr_sal.pc = ecs->stop_func_start; 6827 sr_sal.pspace = get_frame_program_space (frame); 6828 insert_step_resume_breakpoint_at_sal (gdbarch, 6829 sr_sal, null_frame_id); 6830 } 6831 } 6832 else 6833 /* Set a breakpoint at callee's return address (the address 6834 at which the caller will resume). */ 6835 insert_step_resume_breakpoint_at_caller (frame); 6836 6837 keep_going (ecs); 6838 return; 6839 } 6840 6841 /* Reverse stepping through solib trampolines. */ 6842 6843 if (execution_direction == EXEC_REVERSE 6844 && ecs->event_thread->control.step_over_calls != STEP_OVER_NONE) 6845 { 6846 if (gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc) 6847 || (ecs->stop_func_start == 0 6848 && in_solib_dynsym_resolve_code (stop_pc))) 6849 { 6850 /* Any solib trampoline code can be handled in reverse 6851 by simply continuing to single-step. We have already 6852 executed the solib function (backwards), and a few 6853 steps will take us back through the trampoline to the 6854 caller. */ 6855 keep_going (ecs); 6856 return; 6857 } 6858 else if (in_solib_dynsym_resolve_code (stop_pc)) 6859 { 6860 /* Stepped backward into the solib dynsym resolver. 6861 Set a breakpoint at its start and continue, then 6862 one more step will take us out. */ 6863 struct symtab_and_line sr_sal; 6864 6865 init_sal (&sr_sal); 6866 sr_sal.pc = ecs->stop_func_start; 6867 sr_sal.pspace = get_frame_program_space (frame); 6868 insert_step_resume_breakpoint_at_sal (gdbarch, 6869 sr_sal, null_frame_id); 6870 keep_going (ecs); 6871 return; 6872 } 6873 } 6874 6875 stop_pc_sal = find_pc_line (stop_pc, 0); 6876 6877 /* NOTE: tausq/2004-05-24: This if block used to be done before all 6878 the trampoline processing logic, however, there are some trampolines 6879 that have no names, so we should do trampoline handling first. */ 6880 if (ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE 6881 && ecs->stop_func_name == NULL 6882 && stop_pc_sal.line == 0) 6883 { 6884 if (debug_infrun) 6885 fprintf_unfiltered (gdb_stdlog, 6886 "infrun: stepped into undebuggable function\n"); 6887 6888 /* The inferior just stepped into, or returned to, an 6889 undebuggable function (where there is no debugging information 6890 and no line number corresponding to the address where the 6891 inferior stopped). Since we want to skip this kind of code, 6892 we keep going until the inferior returns from this 6893 function - unless the user has asked us not to (via 6894 set step-mode) or we no longer know how to get back 6895 to the call site. */ 6896 if (step_stop_if_no_debug 6897 || !frame_id_p (frame_unwind_caller_id (frame))) 6898 { 6899 /* If we have no line number and the step-stop-if-no-debug 6900 is set, we stop the step so that the user has a chance to 6901 switch in assembly mode. */ 6902 end_stepping_range (ecs); 6903 return; 6904 } 6905 else 6906 { 6907 /* Set a breakpoint at callee's return address (the address 6908 at which the caller will resume). */ 6909 insert_step_resume_breakpoint_at_caller (frame); 6910 keep_going (ecs); 6911 return; 6912 } 6913 } 6914 6915 if (ecs->event_thread->control.step_range_end == 1) 6916 { 6917 /* It is stepi or nexti. We always want to stop stepping after 6918 one instruction. */ 6919 if (debug_infrun) 6920 fprintf_unfiltered (gdb_stdlog, "infrun: stepi/nexti\n"); 6921 end_stepping_range (ecs); 6922 return; 6923 } 6924 6925 if (stop_pc_sal.line == 0) 6926 { 6927 /* We have no line number information. That means to stop 6928 stepping (does this always happen right after one instruction, 6929 when we do "s" in a function with no line numbers, 6930 or can this happen as a result of a return or longjmp?). */ 6931 if (debug_infrun) 6932 fprintf_unfiltered (gdb_stdlog, "infrun: no line number info\n"); 6933 end_stepping_range (ecs); 6934 return; 6935 } 6936 6937 /* Look for "calls" to inlined functions, part one. If the inline 6938 frame machinery detected some skipped call sites, we have entered 6939 a new inline function. */ 6940 6941 if (frame_id_eq (get_frame_id (get_current_frame ()), 6942 ecs->event_thread->control.step_frame_id) 6943 && inline_skipped_frames (ecs->ptid)) 6944 { 6945 struct symtab_and_line call_sal; 6946 6947 if (debug_infrun) 6948 fprintf_unfiltered (gdb_stdlog, 6949 "infrun: stepped into inlined function\n"); 6950 6951 find_frame_sal (get_current_frame (), &call_sal); 6952 6953 if (ecs->event_thread->control.step_over_calls != STEP_OVER_ALL) 6954 { 6955 /* For "step", we're going to stop. But if the call site 6956 for this inlined function is on the same source line as 6957 we were previously stepping, go down into the function 6958 first. Otherwise stop at the call site. */ 6959 6960 if (call_sal.line == ecs->event_thread->current_line 6961 && call_sal.symtab == ecs->event_thread->current_symtab) 6962 step_into_inline_frame (ecs->ptid); 6963 6964 end_stepping_range (ecs); 6965 return; 6966 } 6967 else 6968 { 6969 /* For "next", we should stop at the call site if it is on a 6970 different source line. Otherwise continue through the 6971 inlined function. */ 6972 if (call_sal.line == ecs->event_thread->current_line 6973 && call_sal.symtab == ecs->event_thread->current_symtab) 6974 keep_going (ecs); 6975 else 6976 end_stepping_range (ecs); 6977 return; 6978 } 6979 } 6980 6981 /* Look for "calls" to inlined functions, part two. If we are still 6982 in the same real function we were stepping through, but we have 6983 to go further up to find the exact frame ID, we are stepping 6984 through a more inlined call beyond its call site. */ 6985 6986 if (get_frame_type (get_current_frame ()) == INLINE_FRAME 6987 && !frame_id_eq (get_frame_id (get_current_frame ()), 6988 ecs->event_thread->control.step_frame_id) 6989 && stepped_in_from (get_current_frame (), 6990 ecs->event_thread->control.step_frame_id)) 6991 { 6992 if (debug_infrun) 6993 fprintf_unfiltered (gdb_stdlog, 6994 "infrun: stepping through inlined function\n"); 6995 6996 if (ecs->event_thread->control.step_over_calls == STEP_OVER_ALL) 6997 keep_going (ecs); 6998 else 6999 end_stepping_range (ecs); 7000 return; 7001 } 7002 7003 if ((stop_pc == stop_pc_sal.pc) 7004 && (ecs->event_thread->current_line != stop_pc_sal.line 7005 || ecs->event_thread->current_symtab != stop_pc_sal.symtab)) 7006 { 7007 /* We are at the start of a different line. So stop. Note that 7008 we don't stop if we step into the middle of a different line. 7009 That is said to make things like for (;;) statements work 7010 better. */ 7011 if (debug_infrun) 7012 fprintf_unfiltered (gdb_stdlog, 7013 "infrun: stepped to a different line\n"); 7014 end_stepping_range (ecs); 7015 return; 7016 } 7017 7018 /* We aren't done stepping. 7019 7020 Optimize by setting the stepping range to the line. 7021 (We might not be in the original line, but if we entered a 7022 new line in mid-statement, we continue stepping. This makes 7023 things like for(;;) statements work better.) */ 7024 7025 ecs->event_thread->control.step_range_start = stop_pc_sal.pc; 7026 ecs->event_thread->control.step_range_end = stop_pc_sal.end; 7027 ecs->event_thread->control.may_range_step = 1; 7028 set_step_info (frame, stop_pc_sal); 7029 7030 if (debug_infrun) 7031 fprintf_unfiltered (gdb_stdlog, "infrun: keep going\n"); 7032 keep_going (ecs); 7033 } 7034 7035 /* In all-stop mode, if we're currently stepping but have stopped in 7036 some other thread, we may need to switch back to the stepped 7037 thread. Returns true we set the inferior running, false if we left 7038 it stopped (and the event needs further processing). */ 7039 7040 static int 7041 switch_back_to_stepped_thread (struct execution_control_state *ecs) 7042 { 7043 if (!target_is_non_stop_p ()) 7044 { 7045 struct thread_info *tp; 7046 struct thread_info *stepping_thread; 7047 7048 /* If any thread is blocked on some internal breakpoint, and we 7049 simply need to step over that breakpoint to get it going 7050 again, do that first. */ 7051 7052 /* However, if we see an event for the stepping thread, then we 7053 know all other threads have been moved past their breakpoints 7054 already. Let the caller check whether the step is finished, 7055 etc., before deciding to move it past a breakpoint. */ 7056 if (ecs->event_thread->control.step_range_end != 0) 7057 return 0; 7058 7059 /* Check if the current thread is blocked on an incomplete 7060 step-over, interrupted by a random signal. */ 7061 if (ecs->event_thread->control.trap_expected 7062 && ecs->event_thread->suspend.stop_signal != GDB_SIGNAL_TRAP) 7063 { 7064 if (debug_infrun) 7065 { 7066 fprintf_unfiltered (gdb_stdlog, 7067 "infrun: need to finish step-over of [%s]\n", 7068 target_pid_to_str (ecs->event_thread->ptid)); 7069 } 7070 keep_going (ecs); 7071 return 1; 7072 } 7073 7074 /* Check if the current thread is blocked by a single-step 7075 breakpoint of another thread. */ 7076 if (ecs->hit_singlestep_breakpoint) 7077 { 7078 if (debug_infrun) 7079 { 7080 fprintf_unfiltered (gdb_stdlog, 7081 "infrun: need to step [%s] over single-step " 7082 "breakpoint\n", 7083 target_pid_to_str (ecs->ptid)); 7084 } 7085 keep_going (ecs); 7086 return 1; 7087 } 7088 7089 /* If this thread needs yet another step-over (e.g., stepping 7090 through a delay slot), do it first before moving on to 7091 another thread. */ 7092 if (thread_still_needs_step_over (ecs->event_thread)) 7093 { 7094 if (debug_infrun) 7095 { 7096 fprintf_unfiltered (gdb_stdlog, 7097 "infrun: thread [%s] still needs step-over\n", 7098 target_pid_to_str (ecs->event_thread->ptid)); 7099 } 7100 keep_going (ecs); 7101 return 1; 7102 } 7103 7104 /* If scheduler locking applies even if not stepping, there's no 7105 need to walk over threads. Above we've checked whether the 7106 current thread is stepping. If some other thread not the 7107 event thread is stepping, then it must be that scheduler 7108 locking is not in effect. */ 7109 if (schedlock_applies (ecs->event_thread)) 7110 return 0; 7111 7112 /* Otherwise, we no longer expect a trap in the current thread. 7113 Clear the trap_expected flag before switching back -- this is 7114 what keep_going does as well, if we call it. */ 7115 ecs->event_thread->control.trap_expected = 0; 7116 7117 /* Likewise, clear the signal if it should not be passed. */ 7118 if (!signal_program[ecs->event_thread->suspend.stop_signal]) 7119 ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0; 7120 7121 /* Do all pending step-overs before actually proceeding with 7122 step/next/etc. */ 7123 if (start_step_over ()) 7124 { 7125 prepare_to_wait (ecs); 7126 return 1; 7127 } 7128 7129 /* Look for the stepping/nexting thread. */ 7130 stepping_thread = NULL; 7131 7132 ALL_NON_EXITED_THREADS (tp) 7133 { 7134 /* Ignore threads of processes the caller is not 7135 resuming. */ 7136 if (!sched_multi 7137 && ptid_get_pid (tp->ptid) != ptid_get_pid (ecs->ptid)) 7138 continue; 7139 7140 /* When stepping over a breakpoint, we lock all threads 7141 except the one that needs to move past the breakpoint. 7142 If a non-event thread has this set, the "incomplete 7143 step-over" check above should have caught it earlier. */ 7144 if (tp->control.trap_expected) 7145 { 7146 internal_error (__FILE__, __LINE__, 7147 "[%s] has inconsistent state: " 7148 "trap_expected=%d\n", 7149 target_pid_to_str (tp->ptid), 7150 tp->control.trap_expected); 7151 } 7152 7153 /* Did we find the stepping thread? */ 7154 if (tp->control.step_range_end) 7155 { 7156 /* Yep. There should only one though. */ 7157 gdb_assert (stepping_thread == NULL); 7158 7159 /* The event thread is handled at the top, before we 7160 enter this loop. */ 7161 gdb_assert (tp != ecs->event_thread); 7162 7163 /* If some thread other than the event thread is 7164 stepping, then scheduler locking can't be in effect, 7165 otherwise we wouldn't have resumed the current event 7166 thread in the first place. */ 7167 gdb_assert (!schedlock_applies (tp)); 7168 7169 stepping_thread = tp; 7170 } 7171 } 7172 7173 if (stepping_thread != NULL) 7174 { 7175 if (debug_infrun) 7176 fprintf_unfiltered (gdb_stdlog, 7177 "infrun: switching back to stepped thread\n"); 7178 7179 if (keep_going_stepped_thread (stepping_thread)) 7180 { 7181 prepare_to_wait (ecs); 7182 return 1; 7183 } 7184 } 7185 } 7186 7187 return 0; 7188 } 7189 7190 /* Set a previously stepped thread back to stepping. Returns true on 7191 success, false if the resume is not possible (e.g., the thread 7192 vanished). */ 7193 7194 static int 7195 keep_going_stepped_thread (struct thread_info *tp) 7196 { 7197 struct frame_info *frame; 7198 struct execution_control_state ecss; 7199 struct execution_control_state *ecs = &ecss; 7200 7201 /* If the stepping thread exited, then don't try to switch back and 7202 resume it, which could fail in several different ways depending 7203 on the target. Instead, just keep going. 7204 7205 We can find a stepping dead thread in the thread list in two 7206 cases: 7207 7208 - The target supports thread exit events, and when the target 7209 tries to delete the thread from the thread list, inferior_ptid 7210 pointed at the exiting thread. In such case, calling 7211 delete_thread does not really remove the thread from the list; 7212 instead, the thread is left listed, with 'exited' state. 7213 7214 - The target's debug interface does not support thread exit 7215 events, and so we have no idea whatsoever if the previously 7216 stepping thread is still alive. For that reason, we need to 7217 synchronously query the target now. */ 7218 7219 if (is_exited (tp->ptid) 7220 || !target_thread_alive (tp->ptid)) 7221 { 7222 if (debug_infrun) 7223 fprintf_unfiltered (gdb_stdlog, 7224 "infrun: not resuming previously " 7225 "stepped thread, it has vanished\n"); 7226 7227 delete_thread (tp->ptid); 7228 return 0; 7229 } 7230 7231 if (debug_infrun) 7232 fprintf_unfiltered (gdb_stdlog, 7233 "infrun: resuming previously stepped thread\n"); 7234 7235 reset_ecs (ecs, tp); 7236 switch_to_thread (tp->ptid); 7237 7238 stop_pc = regcache_read_pc (get_thread_regcache (tp->ptid)); 7239 frame = get_current_frame (); 7240 7241 /* If the PC of the thread we were trying to single-step has 7242 changed, then that thread has trapped or been signaled, but the 7243 event has not been reported to GDB yet. Re-poll the target 7244 looking for this particular thread's event (i.e. temporarily 7245 enable schedlock) by: 7246 7247 - setting a break at the current PC 7248 - resuming that particular thread, only (by setting trap 7249 expected) 7250 7251 This prevents us continuously moving the single-step breakpoint 7252 forward, one instruction at a time, overstepping. */ 7253 7254 if (stop_pc != tp->prev_pc) 7255 { 7256 ptid_t resume_ptid; 7257 7258 if (debug_infrun) 7259 fprintf_unfiltered (gdb_stdlog, 7260 "infrun: expected thread advanced also (%s -> %s)\n", 7261 paddress (target_gdbarch (), tp->prev_pc), 7262 paddress (target_gdbarch (), stop_pc)); 7263 7264 /* Clear the info of the previous step-over, as it's no longer 7265 valid (if the thread was trying to step over a breakpoint, it 7266 has already succeeded). It's what keep_going would do too, 7267 if we called it. Do this before trying to insert the sss 7268 breakpoint, otherwise if we were previously trying to step 7269 over this exact address in another thread, the breakpoint is 7270 skipped. */ 7271 clear_step_over_info (); 7272 tp->control.trap_expected = 0; 7273 7274 insert_single_step_breakpoint (get_frame_arch (frame), 7275 get_frame_address_space (frame), 7276 stop_pc); 7277 7278 tp->resumed = 1; 7279 resume_ptid = internal_resume_ptid (tp->control.stepping_command); 7280 do_target_resume (resume_ptid, 0, GDB_SIGNAL_0); 7281 } 7282 else 7283 { 7284 if (debug_infrun) 7285 fprintf_unfiltered (gdb_stdlog, 7286 "infrun: expected thread still hasn't advanced\n"); 7287 7288 keep_going_pass_signal (ecs); 7289 } 7290 return 1; 7291 } 7292 7293 /* Is thread TP in the middle of (software or hardware) 7294 single-stepping? (Note the result of this function must never be 7295 passed directly as target_resume's STEP parameter.) */ 7296 7297 static int 7298 currently_stepping (struct thread_info *tp) 7299 { 7300 return ((tp->control.step_range_end 7301 && tp->control.step_resume_breakpoint == NULL) 7302 || tp->control.trap_expected 7303 || tp->stepped_breakpoint 7304 || bpstat_should_step ()); 7305 } 7306 7307 /* Inferior has stepped into a subroutine call with source code that 7308 we should not step over. Do step to the first line of code in 7309 it. */ 7310 7311 static void 7312 handle_step_into_function (struct gdbarch *gdbarch, 7313 struct execution_control_state *ecs) 7314 { 7315 struct compunit_symtab *cust; 7316 struct symtab_and_line stop_func_sal, sr_sal; 7317 7318 fill_in_stop_func (gdbarch, ecs); 7319 7320 cust = find_pc_compunit_symtab (stop_pc); 7321 if (cust != NULL && compunit_language (cust) != language_asm) 7322 ecs->stop_func_start 7323 = gdbarch_skip_prologue_noexcept (gdbarch, ecs->stop_func_start); 7324 7325 stop_func_sal = find_pc_line (ecs->stop_func_start, 0); 7326 /* Use the step_resume_break to step until the end of the prologue, 7327 even if that involves jumps (as it seems to on the vax under 7328 4.2). */ 7329 /* If the prologue ends in the middle of a source line, continue to 7330 the end of that source line (if it is still within the function). 7331 Otherwise, just go to end of prologue. */ 7332 if (stop_func_sal.end 7333 && stop_func_sal.pc != ecs->stop_func_start 7334 && stop_func_sal.end < ecs->stop_func_end) 7335 ecs->stop_func_start = stop_func_sal.end; 7336 7337 /* Architectures which require breakpoint adjustment might not be able 7338 to place a breakpoint at the computed address. If so, the test 7339 ``ecs->stop_func_start == stop_pc'' will never succeed. Adjust 7340 ecs->stop_func_start to an address at which a breakpoint may be 7341 legitimately placed. 7342 7343 Note: kevinb/2004-01-19: On FR-V, if this adjustment is not 7344 made, GDB will enter an infinite loop when stepping through 7345 optimized code consisting of VLIW instructions which contain 7346 subinstructions corresponding to different source lines. On 7347 FR-V, it's not permitted to place a breakpoint on any but the 7348 first subinstruction of a VLIW instruction. When a breakpoint is 7349 set, GDB will adjust the breakpoint address to the beginning of 7350 the VLIW instruction. Thus, we need to make the corresponding 7351 adjustment here when computing the stop address. */ 7352 7353 if (gdbarch_adjust_breakpoint_address_p (gdbarch)) 7354 { 7355 ecs->stop_func_start 7356 = gdbarch_adjust_breakpoint_address (gdbarch, 7357 ecs->stop_func_start); 7358 } 7359 7360 if (ecs->stop_func_start == stop_pc) 7361 { 7362 /* We are already there: stop now. */ 7363 end_stepping_range (ecs); 7364 return; 7365 } 7366 else 7367 { 7368 /* Put the step-breakpoint there and go until there. */ 7369 init_sal (&sr_sal); /* initialize to zeroes */ 7370 sr_sal.pc = ecs->stop_func_start; 7371 sr_sal.section = find_pc_overlay (ecs->stop_func_start); 7372 sr_sal.pspace = get_frame_program_space (get_current_frame ()); 7373 7374 /* Do not specify what the fp should be when we stop since on 7375 some machines the prologue is where the new fp value is 7376 established. */ 7377 insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal, null_frame_id); 7378 7379 /* And make sure stepping stops right away then. */ 7380 ecs->event_thread->control.step_range_end 7381 = ecs->event_thread->control.step_range_start; 7382 } 7383 keep_going (ecs); 7384 } 7385 7386 /* Inferior has stepped backward into a subroutine call with source 7387 code that we should not step over. Do step to the beginning of the 7388 last line of code in it. */ 7389 7390 static void 7391 handle_step_into_function_backward (struct gdbarch *gdbarch, 7392 struct execution_control_state *ecs) 7393 { 7394 struct compunit_symtab *cust; 7395 struct symtab_and_line stop_func_sal; 7396 7397 fill_in_stop_func (gdbarch, ecs); 7398 7399 cust = find_pc_compunit_symtab (stop_pc); 7400 if (cust != NULL && compunit_language (cust) != language_asm) 7401 ecs->stop_func_start 7402 = gdbarch_skip_prologue_noexcept (gdbarch, ecs->stop_func_start); 7403 7404 stop_func_sal = find_pc_line (stop_pc, 0); 7405 7406 /* OK, we're just going to keep stepping here. */ 7407 if (stop_func_sal.pc == stop_pc) 7408 { 7409 /* We're there already. Just stop stepping now. */ 7410 end_stepping_range (ecs); 7411 } 7412 else 7413 { 7414 /* Else just reset the step range and keep going. 7415 No step-resume breakpoint, they don't work for 7416 epilogues, which can have multiple entry paths. */ 7417 ecs->event_thread->control.step_range_start = stop_func_sal.pc; 7418 ecs->event_thread->control.step_range_end = stop_func_sal.end; 7419 keep_going (ecs); 7420 } 7421 return; 7422 } 7423 7424 /* Insert a "step-resume breakpoint" at SR_SAL with frame ID SR_ID. 7425 This is used to both functions and to skip over code. */ 7426 7427 static void 7428 insert_step_resume_breakpoint_at_sal_1 (struct gdbarch *gdbarch, 7429 struct symtab_and_line sr_sal, 7430 struct frame_id sr_id, 7431 enum bptype sr_type) 7432 { 7433 /* There should never be more than one step-resume or longjmp-resume 7434 breakpoint per thread, so we should never be setting a new 7435 step_resume_breakpoint when one is already active. */ 7436 gdb_assert (inferior_thread ()->control.step_resume_breakpoint == NULL); 7437 gdb_assert (sr_type == bp_step_resume || sr_type == bp_hp_step_resume); 7438 7439 if (debug_infrun) 7440 fprintf_unfiltered (gdb_stdlog, 7441 "infrun: inserting step-resume breakpoint at %s\n", 7442 paddress (gdbarch, sr_sal.pc)); 7443 7444 inferior_thread ()->control.step_resume_breakpoint 7445 = set_momentary_breakpoint (gdbarch, sr_sal, sr_id, sr_type); 7446 } 7447 7448 void 7449 insert_step_resume_breakpoint_at_sal (struct gdbarch *gdbarch, 7450 struct symtab_and_line sr_sal, 7451 struct frame_id sr_id) 7452 { 7453 insert_step_resume_breakpoint_at_sal_1 (gdbarch, 7454 sr_sal, sr_id, 7455 bp_step_resume); 7456 } 7457 7458 /* Insert a "high-priority step-resume breakpoint" at RETURN_FRAME.pc. 7459 This is used to skip a potential signal handler. 7460 7461 This is called with the interrupted function's frame. The signal 7462 handler, when it returns, will resume the interrupted function at 7463 RETURN_FRAME.pc. */ 7464 7465 static void 7466 insert_hp_step_resume_breakpoint_at_frame (struct frame_info *return_frame) 7467 { 7468 struct symtab_and_line sr_sal; 7469 struct gdbarch *gdbarch; 7470 7471 gdb_assert (return_frame != NULL); 7472 init_sal (&sr_sal); /* initialize to zeros */ 7473 7474 gdbarch = get_frame_arch (return_frame); 7475 sr_sal.pc = gdbarch_addr_bits_remove (gdbarch, get_frame_pc (return_frame)); 7476 sr_sal.section = find_pc_overlay (sr_sal.pc); 7477 sr_sal.pspace = get_frame_program_space (return_frame); 7478 7479 insert_step_resume_breakpoint_at_sal_1 (gdbarch, sr_sal, 7480 get_stack_frame_id (return_frame), 7481 bp_hp_step_resume); 7482 } 7483 7484 /* Insert a "step-resume breakpoint" at the previous frame's PC. This 7485 is used to skip a function after stepping into it (for "next" or if 7486 the called function has no debugging information). 7487 7488 The current function has almost always been reached by single 7489 stepping a call or return instruction. NEXT_FRAME belongs to the 7490 current function, and the breakpoint will be set at the caller's 7491 resume address. 7492 7493 This is a separate function rather than reusing 7494 insert_hp_step_resume_breakpoint_at_frame in order to avoid 7495 get_prev_frame, which may stop prematurely (see the implementation 7496 of frame_unwind_caller_id for an example). */ 7497 7498 static void 7499 insert_step_resume_breakpoint_at_caller (struct frame_info *next_frame) 7500 { 7501 struct symtab_and_line sr_sal; 7502 struct gdbarch *gdbarch; 7503 7504 /* We shouldn't have gotten here if we don't know where the call site 7505 is. */ 7506 gdb_assert (frame_id_p (frame_unwind_caller_id (next_frame))); 7507 7508 init_sal (&sr_sal); /* initialize to zeros */ 7509 7510 gdbarch = frame_unwind_caller_arch (next_frame); 7511 sr_sal.pc = gdbarch_addr_bits_remove (gdbarch, 7512 frame_unwind_caller_pc (next_frame)); 7513 sr_sal.section = find_pc_overlay (sr_sal.pc); 7514 sr_sal.pspace = frame_unwind_program_space (next_frame); 7515 7516 insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal, 7517 frame_unwind_caller_id (next_frame)); 7518 } 7519 7520 /* Insert a "longjmp-resume" breakpoint at PC. This is used to set a 7521 new breakpoint at the target of a jmp_buf. The handling of 7522 longjmp-resume uses the same mechanisms used for handling 7523 "step-resume" breakpoints. */ 7524 7525 static void 7526 insert_longjmp_resume_breakpoint (struct gdbarch *gdbarch, CORE_ADDR pc) 7527 { 7528 /* There should never be more than one longjmp-resume breakpoint per 7529 thread, so we should never be setting a new 7530 longjmp_resume_breakpoint when one is already active. */ 7531 gdb_assert (inferior_thread ()->control.exception_resume_breakpoint == NULL); 7532 7533 if (debug_infrun) 7534 fprintf_unfiltered (gdb_stdlog, 7535 "infrun: inserting longjmp-resume breakpoint at %s\n", 7536 paddress (gdbarch, pc)); 7537 7538 inferior_thread ()->control.exception_resume_breakpoint = 7539 set_momentary_breakpoint_at_pc (gdbarch, pc, bp_longjmp_resume); 7540 } 7541 7542 /* Insert an exception resume breakpoint. TP is the thread throwing 7543 the exception. The block B is the block of the unwinder debug hook 7544 function. FRAME is the frame corresponding to the call to this 7545 function. SYM is the symbol of the function argument holding the 7546 target PC of the exception. */ 7547 7548 static void 7549 insert_exception_resume_breakpoint (struct thread_info *tp, 7550 const struct block *b, 7551 struct frame_info *frame, 7552 struct symbol *sym) 7553 { 7554 TRY 7555 { 7556 struct block_symbol vsym; 7557 struct value *value; 7558 CORE_ADDR handler; 7559 struct breakpoint *bp; 7560 7561 vsym = lookup_symbol (SYMBOL_LINKAGE_NAME (sym), b, VAR_DOMAIN, NULL); 7562 value = read_var_value (vsym.symbol, vsym.block, frame); 7563 /* If the value was optimized out, revert to the old behavior. */ 7564 if (! value_optimized_out (value)) 7565 { 7566 handler = value_as_address (value); 7567 7568 if (debug_infrun) 7569 fprintf_unfiltered (gdb_stdlog, 7570 "infrun: exception resume at %lx\n", 7571 (unsigned long) handler); 7572 7573 bp = set_momentary_breakpoint_at_pc (get_frame_arch (frame), 7574 handler, bp_exception_resume); 7575 7576 /* set_momentary_breakpoint_at_pc invalidates FRAME. */ 7577 frame = NULL; 7578 7579 bp->thread = tp->global_num; 7580 inferior_thread ()->control.exception_resume_breakpoint = bp; 7581 } 7582 } 7583 CATCH (e, RETURN_MASK_ERROR) 7584 { 7585 /* We want to ignore errors here. */ 7586 } 7587 END_CATCH 7588 } 7589 7590 /* A helper for check_exception_resume that sets an 7591 exception-breakpoint based on a SystemTap probe. */ 7592 7593 static void 7594 insert_exception_resume_from_probe (struct thread_info *tp, 7595 const struct bound_probe *probe, 7596 struct frame_info *frame) 7597 { 7598 struct value *arg_value; 7599 CORE_ADDR handler; 7600 struct breakpoint *bp; 7601 7602 arg_value = probe_safe_evaluate_at_pc (frame, 1); 7603 if (!arg_value) 7604 return; 7605 7606 handler = value_as_address (arg_value); 7607 7608 if (debug_infrun) 7609 fprintf_unfiltered (gdb_stdlog, 7610 "infrun: exception resume at %s\n", 7611 paddress (get_objfile_arch (probe->objfile), 7612 handler)); 7613 7614 bp = set_momentary_breakpoint_at_pc (get_frame_arch (frame), 7615 handler, bp_exception_resume); 7616 bp->thread = tp->global_num; 7617 inferior_thread ()->control.exception_resume_breakpoint = bp; 7618 } 7619 7620 /* This is called when an exception has been intercepted. Check to 7621 see whether the exception's destination is of interest, and if so, 7622 set an exception resume breakpoint there. */ 7623 7624 static void 7625 check_exception_resume (struct execution_control_state *ecs, 7626 struct frame_info *frame) 7627 { 7628 struct bound_probe probe; 7629 struct symbol *func; 7630 7631 /* First see if this exception unwinding breakpoint was set via a 7632 SystemTap probe point. If so, the probe has two arguments: the 7633 CFA and the HANDLER. We ignore the CFA, extract the handler, and 7634 set a breakpoint there. */ 7635 probe = find_probe_by_pc (get_frame_pc (frame)); 7636 if (probe.probe) 7637 { 7638 insert_exception_resume_from_probe (ecs->event_thread, &probe, frame); 7639 return; 7640 } 7641 7642 func = get_frame_function (frame); 7643 if (!func) 7644 return; 7645 7646 TRY 7647 { 7648 const struct block *b; 7649 struct block_iterator iter; 7650 struct symbol *sym; 7651 int argno = 0; 7652 7653 /* The exception breakpoint is a thread-specific breakpoint on 7654 the unwinder's debug hook, declared as: 7655 7656 void _Unwind_DebugHook (void *cfa, void *handler); 7657 7658 The CFA argument indicates the frame to which control is 7659 about to be transferred. HANDLER is the destination PC. 7660 7661 We ignore the CFA and set a temporary breakpoint at HANDLER. 7662 This is not extremely efficient but it avoids issues in gdb 7663 with computing the DWARF CFA, and it also works even in weird 7664 cases such as throwing an exception from inside a signal 7665 handler. */ 7666 7667 b = SYMBOL_BLOCK_VALUE (func); 7668 ALL_BLOCK_SYMBOLS (b, iter, sym) 7669 { 7670 if (!SYMBOL_IS_ARGUMENT (sym)) 7671 continue; 7672 7673 if (argno == 0) 7674 ++argno; 7675 else 7676 { 7677 insert_exception_resume_breakpoint (ecs->event_thread, 7678 b, frame, sym); 7679 break; 7680 } 7681 } 7682 } 7683 CATCH (e, RETURN_MASK_ERROR) 7684 { 7685 } 7686 END_CATCH 7687 } 7688 7689 static void 7690 stop_waiting (struct execution_control_state *ecs) 7691 { 7692 if (debug_infrun) 7693 fprintf_unfiltered (gdb_stdlog, "infrun: stop_waiting\n"); 7694 7695 /* Let callers know we don't want to wait for the inferior anymore. */ 7696 ecs->wait_some_more = 0; 7697 7698 /* If all-stop, but the target is always in non-stop mode, stop all 7699 threads now that we're presenting the stop to the user. */ 7700 if (!non_stop && target_is_non_stop_p ()) 7701 stop_all_threads (); 7702 } 7703 7704 /* Like keep_going, but passes the signal to the inferior, even if the 7705 signal is set to nopass. */ 7706 7707 static void 7708 keep_going_pass_signal (struct execution_control_state *ecs) 7709 { 7710 /* Make sure normal_stop is called if we get a QUIT handled before 7711 reaching resume. */ 7712 struct cleanup *old_cleanups = make_cleanup (resume_cleanups, 0); 7713 7714 gdb_assert (ptid_equal (ecs->event_thread->ptid, inferior_ptid)); 7715 gdb_assert (!ecs->event_thread->resumed); 7716 7717 /* Save the pc before execution, to compare with pc after stop. */ 7718 ecs->event_thread->prev_pc 7719 = regcache_read_pc (get_thread_regcache (ecs->ptid)); 7720 7721 if (ecs->event_thread->control.trap_expected) 7722 { 7723 struct thread_info *tp = ecs->event_thread; 7724 7725 if (debug_infrun) 7726 fprintf_unfiltered (gdb_stdlog, 7727 "infrun: %s has trap_expected set, " 7728 "resuming to collect trap\n", 7729 target_pid_to_str (tp->ptid)); 7730 7731 /* We haven't yet gotten our trap, and either: intercepted a 7732 non-signal event (e.g., a fork); or took a signal which we 7733 are supposed to pass through to the inferior. Simply 7734 continue. */ 7735 discard_cleanups (old_cleanups); 7736 resume (ecs->event_thread->suspend.stop_signal); 7737 } 7738 else if (step_over_info_valid_p ()) 7739 { 7740 /* Another thread is stepping over a breakpoint in-line. If 7741 this thread needs a step-over too, queue the request. In 7742 either case, this resume must be deferred for later. */ 7743 struct thread_info *tp = ecs->event_thread; 7744 7745 if (ecs->hit_singlestep_breakpoint 7746 || thread_still_needs_step_over (tp)) 7747 { 7748 if (debug_infrun) 7749 fprintf_unfiltered (gdb_stdlog, 7750 "infrun: step-over already in progress: " 7751 "step-over for %s deferred\n", 7752 target_pid_to_str (tp->ptid)); 7753 thread_step_over_chain_enqueue (tp); 7754 } 7755 else 7756 { 7757 if (debug_infrun) 7758 fprintf_unfiltered (gdb_stdlog, 7759 "infrun: step-over in progress: " 7760 "resume of %s deferred\n", 7761 target_pid_to_str (tp->ptid)); 7762 } 7763 7764 discard_cleanups (old_cleanups); 7765 } 7766 else 7767 { 7768 struct regcache *regcache = get_current_regcache (); 7769 int remove_bp; 7770 int remove_wps; 7771 step_over_what step_what; 7772 7773 /* Either the trap was not expected, but we are continuing 7774 anyway (if we got a signal, the user asked it be passed to 7775 the child) 7776 -- or -- 7777 We got our expected trap, but decided we should resume from 7778 it. 7779 7780 We're going to run this baby now! 7781 7782 Note that insert_breakpoints won't try to re-insert 7783 already inserted breakpoints. Therefore, we don't 7784 care if breakpoints were already inserted, or not. */ 7785 7786 /* If we need to step over a breakpoint, and we're not using 7787 displaced stepping to do so, insert all breakpoints 7788 (watchpoints, etc.) but the one we're stepping over, step one 7789 instruction, and then re-insert the breakpoint when that step 7790 is finished. */ 7791 7792 step_what = thread_still_needs_step_over (ecs->event_thread); 7793 7794 remove_bp = (ecs->hit_singlestep_breakpoint 7795 || (step_what & STEP_OVER_BREAKPOINT)); 7796 remove_wps = (step_what & STEP_OVER_WATCHPOINT); 7797 7798 /* We can't use displaced stepping if we need to step past a 7799 watchpoint. The instruction copied to the scratch pad would 7800 still trigger the watchpoint. */ 7801 if (remove_bp 7802 && (remove_wps || !use_displaced_stepping (ecs->event_thread))) 7803 { 7804 set_step_over_info (get_regcache_aspace (regcache), 7805 regcache_read_pc (regcache), remove_wps, 7806 ecs->event_thread->global_num); 7807 } 7808 else if (remove_wps) 7809 set_step_over_info (NULL, 0, remove_wps, -1); 7810 7811 /* If we now need to do an in-line step-over, we need to stop 7812 all other threads. Note this must be done before 7813 insert_breakpoints below, because that removes the breakpoint 7814 we're about to step over, otherwise other threads could miss 7815 it. */ 7816 if (step_over_info_valid_p () && target_is_non_stop_p ()) 7817 stop_all_threads (); 7818 7819 /* Stop stepping if inserting breakpoints fails. */ 7820 TRY 7821 { 7822 insert_breakpoints (); 7823 } 7824 CATCH (e, RETURN_MASK_ERROR) 7825 { 7826 exception_print (gdb_stderr, e); 7827 stop_waiting (ecs); 7828 discard_cleanups (old_cleanups); 7829 return; 7830 } 7831 END_CATCH 7832 7833 ecs->event_thread->control.trap_expected = (remove_bp || remove_wps); 7834 7835 discard_cleanups (old_cleanups); 7836 resume (ecs->event_thread->suspend.stop_signal); 7837 } 7838 7839 prepare_to_wait (ecs); 7840 } 7841 7842 /* Called when we should continue running the inferior, because the 7843 current event doesn't cause a user visible stop. This does the 7844 resuming part; waiting for the next event is done elsewhere. */ 7845 7846 static void 7847 keep_going (struct execution_control_state *ecs) 7848 { 7849 if (ecs->event_thread->control.trap_expected 7850 && ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP) 7851 ecs->event_thread->control.trap_expected = 0; 7852 7853 if (!signal_program[ecs->event_thread->suspend.stop_signal]) 7854 ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0; 7855 keep_going_pass_signal (ecs); 7856 } 7857 7858 /* This function normally comes after a resume, before 7859 handle_inferior_event exits. It takes care of any last bits of 7860 housekeeping, and sets the all-important wait_some_more flag. */ 7861 7862 static void 7863 prepare_to_wait (struct execution_control_state *ecs) 7864 { 7865 if (debug_infrun) 7866 fprintf_unfiltered (gdb_stdlog, "infrun: prepare_to_wait\n"); 7867 7868 ecs->wait_some_more = 1; 7869 7870 if (!target_is_async_p ()) 7871 mark_infrun_async_event_handler (); 7872 } 7873 7874 /* We are done with the step range of a step/next/si/ni command. 7875 Called once for each n of a "step n" operation. */ 7876 7877 static void 7878 end_stepping_range (struct execution_control_state *ecs) 7879 { 7880 ecs->event_thread->control.stop_step = 1; 7881 stop_waiting (ecs); 7882 } 7883 7884 /* Several print_*_reason functions to print why the inferior has stopped. 7885 We always print something when the inferior exits, or receives a signal. 7886 The rest of the cases are dealt with later on in normal_stop and 7887 print_it_typical. Ideally there should be a call to one of these 7888 print_*_reason functions functions from handle_inferior_event each time 7889 stop_waiting is called. 7890 7891 Note that we don't call these directly, instead we delegate that to 7892 the interpreters, through observers. Interpreters then call these 7893 with whatever uiout is right. */ 7894 7895 void 7896 print_end_stepping_range_reason (struct ui_out *uiout) 7897 { 7898 /* For CLI-like interpreters, print nothing. */ 7899 7900 if (uiout->is_mi_like_p ()) 7901 { 7902 uiout->field_string ("reason", 7903 async_reason_lookup (EXEC_ASYNC_END_STEPPING_RANGE)); 7904 } 7905 } 7906 7907 void 7908 print_signal_exited_reason (struct ui_out *uiout, enum gdb_signal siggnal) 7909 { 7910 annotate_signalled (); 7911 if (uiout->is_mi_like_p ()) 7912 uiout->field_string 7913 ("reason", async_reason_lookup (EXEC_ASYNC_EXITED_SIGNALLED)); 7914 uiout->text ("\nProgram terminated with signal "); 7915 annotate_signal_name (); 7916 uiout->field_string ("signal-name", 7917 gdb_signal_to_name (siggnal)); 7918 annotate_signal_name_end (); 7919 uiout->text (", "); 7920 annotate_signal_string (); 7921 uiout->field_string ("signal-meaning", 7922 gdb_signal_to_string (siggnal)); 7923 annotate_signal_string_end (); 7924 uiout->text (".\n"); 7925 uiout->text ("The program no longer exists.\n"); 7926 } 7927 7928 void 7929 print_exited_reason (struct ui_out *uiout, int exitstatus) 7930 { 7931 struct inferior *inf = current_inferior (); 7932 const char *pidstr = target_pid_to_str (pid_to_ptid (inf->pid)); 7933 7934 annotate_exited (exitstatus); 7935 if (exitstatus) 7936 { 7937 if (uiout->is_mi_like_p ()) 7938 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXITED)); 7939 uiout->text ("[Inferior "); 7940 uiout->text (plongest (inf->num)); 7941 uiout->text (" ("); 7942 uiout->text (pidstr); 7943 uiout->text (") exited with code "); 7944 uiout->field_fmt ("exit-code", "0%o", (unsigned int) exitstatus); 7945 uiout->text ("]\n"); 7946 } 7947 else 7948 { 7949 if (uiout->is_mi_like_p ()) 7950 uiout->field_string 7951 ("reason", async_reason_lookup (EXEC_ASYNC_EXITED_NORMALLY)); 7952 uiout->text ("[Inferior "); 7953 uiout->text (plongest (inf->num)); 7954 uiout->text (" ("); 7955 uiout->text (pidstr); 7956 uiout->text (") exited normally]\n"); 7957 } 7958 } 7959 7960 /* Some targets/architectures can do extra processing/display of 7961 segmentation faults. E.g., Intel MPX boundary faults. 7962 Call the architecture dependent function to handle the fault. */ 7963 7964 static void 7965 handle_segmentation_fault (struct ui_out *uiout) 7966 { 7967 struct regcache *regcache = get_current_regcache (); 7968 struct gdbarch *gdbarch = get_regcache_arch (regcache); 7969 7970 if (gdbarch_handle_segmentation_fault_p (gdbarch)) 7971 gdbarch_handle_segmentation_fault (gdbarch, uiout); 7972 } 7973 7974 void 7975 print_signal_received_reason (struct ui_out *uiout, enum gdb_signal siggnal) 7976 { 7977 struct thread_info *thr = inferior_thread (); 7978 7979 annotate_signal (); 7980 7981 if (uiout->is_mi_like_p ()) 7982 ; 7983 else if (show_thread_that_caused_stop ()) 7984 { 7985 const char *name; 7986 7987 uiout->text ("\nThread "); 7988 uiout->field_fmt ("thread-id", "%s", print_thread_id (thr)); 7989 7990 name = thr->name != NULL ? thr->name : target_thread_name (thr); 7991 if (name != NULL) 7992 { 7993 uiout->text (" \""); 7994 uiout->field_fmt ("name", "%s", name); 7995 uiout->text ("\""); 7996 } 7997 } 7998 else 7999 uiout->text ("\nProgram"); 8000 8001 if (siggnal == GDB_SIGNAL_0 && !uiout->is_mi_like_p ()) 8002 uiout->text (" stopped"); 8003 else 8004 { 8005 uiout->text (" received signal "); 8006 annotate_signal_name (); 8007 if (uiout->is_mi_like_p ()) 8008 uiout->field_string 8009 ("reason", async_reason_lookup (EXEC_ASYNC_SIGNAL_RECEIVED)); 8010 uiout->field_string ("signal-name", gdb_signal_to_name (siggnal)); 8011 annotate_signal_name_end (); 8012 uiout->text (", "); 8013 annotate_signal_string (); 8014 uiout->field_string ("signal-meaning", gdb_signal_to_string (siggnal)); 8015 8016 if (siggnal == GDB_SIGNAL_SEGV) 8017 handle_segmentation_fault (uiout); 8018 8019 annotate_signal_string_end (); 8020 } 8021 uiout->text (".\n"); 8022 } 8023 8024 void 8025 print_no_history_reason (struct ui_out *uiout) 8026 { 8027 uiout->text ("\nNo more reverse-execution history.\n"); 8028 } 8029 8030 /* Print current location without a level number, if we have changed 8031 functions or hit a breakpoint. Print source line if we have one. 8032 bpstat_print contains the logic deciding in detail what to print, 8033 based on the event(s) that just occurred. */ 8034 8035 static void 8036 print_stop_location (struct target_waitstatus *ws) 8037 { 8038 int bpstat_ret; 8039 enum print_what source_flag; 8040 int do_frame_printing = 1; 8041 struct thread_info *tp = inferior_thread (); 8042 8043 bpstat_ret = bpstat_print (tp->control.stop_bpstat, ws->kind); 8044 switch (bpstat_ret) 8045 { 8046 case PRINT_UNKNOWN: 8047 /* FIXME: cagney/2002-12-01: Given that a frame ID does (or 8048 should) carry around the function and does (or should) use 8049 that when doing a frame comparison. */ 8050 if (tp->control.stop_step 8051 && frame_id_eq (tp->control.step_frame_id, 8052 get_frame_id (get_current_frame ())) 8053 && tp->control.step_start_function == find_pc_function (stop_pc)) 8054 { 8055 /* Finished step, just print source line. */ 8056 source_flag = SRC_LINE; 8057 } 8058 else 8059 { 8060 /* Print location and source line. */ 8061 source_flag = SRC_AND_LOC; 8062 } 8063 break; 8064 case PRINT_SRC_AND_LOC: 8065 /* Print location and source line. */ 8066 source_flag = SRC_AND_LOC; 8067 break; 8068 case PRINT_SRC_ONLY: 8069 source_flag = SRC_LINE; 8070 break; 8071 case PRINT_NOTHING: 8072 /* Something bogus. */ 8073 source_flag = SRC_LINE; 8074 do_frame_printing = 0; 8075 break; 8076 default: 8077 internal_error (__FILE__, __LINE__, _("Unknown value.")); 8078 } 8079 8080 /* The behavior of this routine with respect to the source 8081 flag is: 8082 SRC_LINE: Print only source line 8083 LOCATION: Print only location 8084 SRC_AND_LOC: Print location and source line. */ 8085 if (do_frame_printing) 8086 print_stack_frame (get_selected_frame (NULL), 0, source_flag, 1); 8087 } 8088 8089 /* See infrun.h. */ 8090 8091 void 8092 print_stop_event (struct ui_out *uiout) 8093 { 8094 struct target_waitstatus last; 8095 ptid_t last_ptid; 8096 struct thread_info *tp; 8097 8098 get_last_target_status (&last_ptid, &last); 8099 8100 { 8101 scoped_restore save_uiout = make_scoped_restore (¤t_uiout, uiout); 8102 8103 print_stop_location (&last); 8104 8105 /* Display the auto-display expressions. */ 8106 do_displays (); 8107 } 8108 8109 tp = inferior_thread (); 8110 if (tp->thread_fsm != NULL 8111 && thread_fsm_finished_p (tp->thread_fsm)) 8112 { 8113 struct return_value_info *rv; 8114 8115 rv = thread_fsm_return_value (tp->thread_fsm); 8116 if (rv != NULL) 8117 print_return_value (uiout, rv); 8118 } 8119 } 8120 8121 /* See infrun.h. */ 8122 8123 void 8124 maybe_remove_breakpoints (void) 8125 { 8126 if (!breakpoints_should_be_inserted_now () && target_has_execution) 8127 { 8128 if (remove_breakpoints ()) 8129 { 8130 target_terminal_ours_for_output (); 8131 printf_filtered (_("Cannot remove breakpoints because " 8132 "program is no longer writable.\nFurther " 8133 "execution is probably impossible.\n")); 8134 } 8135 } 8136 } 8137 8138 /* The execution context that just caused a normal stop. */ 8139 8140 struct stop_context 8141 { 8142 /* The stop ID. */ 8143 ULONGEST stop_id; 8144 8145 /* The event PTID. */ 8146 8147 ptid_t ptid; 8148 8149 /* If stopp for a thread event, this is the thread that caused the 8150 stop. */ 8151 struct thread_info *thread; 8152 8153 /* The inferior that caused the stop. */ 8154 int inf_num; 8155 }; 8156 8157 /* Returns a new stop context. If stopped for a thread event, this 8158 takes a strong reference to the thread. */ 8159 8160 static struct stop_context * 8161 save_stop_context (void) 8162 { 8163 struct stop_context *sc = XNEW (struct stop_context); 8164 8165 sc->stop_id = get_stop_id (); 8166 sc->ptid = inferior_ptid; 8167 sc->inf_num = current_inferior ()->num; 8168 8169 if (!ptid_equal (inferior_ptid, null_ptid)) 8170 { 8171 /* Take a strong reference so that the thread can't be deleted 8172 yet. */ 8173 sc->thread = inferior_thread (); 8174 sc->thread->incref (); 8175 } 8176 else 8177 sc->thread = NULL; 8178 8179 return sc; 8180 } 8181 8182 /* Release a stop context previously created with save_stop_context. 8183 Releases the strong reference to the thread as well. */ 8184 8185 static void 8186 release_stop_context_cleanup (void *arg) 8187 { 8188 struct stop_context *sc = (struct stop_context *) arg; 8189 8190 if (sc->thread != NULL) 8191 sc->thread->decref (); 8192 xfree (sc); 8193 } 8194 8195 /* Return true if the current context no longer matches the saved stop 8196 context. */ 8197 8198 static int 8199 stop_context_changed (struct stop_context *prev) 8200 { 8201 if (!ptid_equal (prev->ptid, inferior_ptid)) 8202 return 1; 8203 if (prev->inf_num != current_inferior ()->num) 8204 return 1; 8205 if (prev->thread != NULL && prev->thread->state != THREAD_STOPPED) 8206 return 1; 8207 if (get_stop_id () != prev->stop_id) 8208 return 1; 8209 return 0; 8210 } 8211 8212 /* See infrun.h. */ 8213 8214 int 8215 normal_stop (void) 8216 { 8217 struct target_waitstatus last; 8218 ptid_t last_ptid; 8219 struct cleanup *old_chain = make_cleanup (null_cleanup, NULL); 8220 ptid_t pid_ptid; 8221 8222 get_last_target_status (&last_ptid, &last); 8223 8224 new_stop_id (); 8225 8226 /* If an exception is thrown from this point on, make sure to 8227 propagate GDB's knowledge of the executing state to the 8228 frontend/user running state. A QUIT is an easy exception to see 8229 here, so do this before any filtered output. */ 8230 if (!non_stop) 8231 make_cleanup (finish_thread_state_cleanup, &minus_one_ptid); 8232 else if (last.kind == TARGET_WAITKIND_SIGNALLED 8233 || last.kind == TARGET_WAITKIND_EXITED) 8234 { 8235 /* On some targets, we may still have live threads in the 8236 inferior when we get a process exit event. E.g., for 8237 "checkpoint", when the current checkpoint/fork exits, 8238 linux-fork.c automatically switches to another fork from 8239 within target_mourn_inferior. */ 8240 if (!ptid_equal (inferior_ptid, null_ptid)) 8241 { 8242 pid_ptid = pid_to_ptid (ptid_get_pid (inferior_ptid)); 8243 make_cleanup (finish_thread_state_cleanup, &pid_ptid); 8244 } 8245 } 8246 else if (last.kind != TARGET_WAITKIND_NO_RESUMED) 8247 make_cleanup (finish_thread_state_cleanup, &inferior_ptid); 8248 8249 /* As we're presenting a stop, and potentially removing breakpoints, 8250 update the thread list so we can tell whether there are threads 8251 running on the target. With target remote, for example, we can 8252 only learn about new threads when we explicitly update the thread 8253 list. Do this before notifying the interpreters about signal 8254 stops, end of stepping ranges, etc., so that the "new thread" 8255 output is emitted before e.g., "Program received signal FOO", 8256 instead of after. */ 8257 update_thread_list (); 8258 8259 if (last.kind == TARGET_WAITKIND_STOPPED && stopped_by_random_signal) 8260 observer_notify_signal_received (inferior_thread ()->suspend.stop_signal); 8261 8262 /* As with the notification of thread events, we want to delay 8263 notifying the user that we've switched thread context until 8264 the inferior actually stops. 8265 8266 There's no point in saying anything if the inferior has exited. 8267 Note that SIGNALLED here means "exited with a signal", not 8268 "received a signal". 8269 8270 Also skip saying anything in non-stop mode. In that mode, as we 8271 don't want GDB to switch threads behind the user's back, to avoid 8272 races where the user is typing a command to apply to thread x, 8273 but GDB switches to thread y before the user finishes entering 8274 the command, fetch_inferior_event installs a cleanup to restore 8275 the current thread back to the thread the user had selected right 8276 after this event is handled, so we're not really switching, only 8277 informing of a stop. */ 8278 if (!non_stop 8279 && !ptid_equal (previous_inferior_ptid, inferior_ptid) 8280 && target_has_execution 8281 && last.kind != TARGET_WAITKIND_SIGNALLED 8282 && last.kind != TARGET_WAITKIND_EXITED 8283 && last.kind != TARGET_WAITKIND_NO_RESUMED) 8284 { 8285 SWITCH_THRU_ALL_UIS () 8286 { 8287 target_terminal_ours_for_output (); 8288 printf_filtered (_("[Switching to %s]\n"), 8289 target_pid_to_str (inferior_ptid)); 8290 annotate_thread_changed (); 8291 } 8292 previous_inferior_ptid = inferior_ptid; 8293 } 8294 8295 if (last.kind == TARGET_WAITKIND_NO_RESUMED) 8296 { 8297 SWITCH_THRU_ALL_UIS () 8298 if (current_ui->prompt_state == PROMPT_BLOCKED) 8299 { 8300 target_terminal_ours_for_output (); 8301 printf_filtered (_("No unwaited-for children left.\n")); 8302 } 8303 } 8304 8305 /* Note: this depends on the update_thread_list call above. */ 8306 maybe_remove_breakpoints (); 8307 8308 /* If an auto-display called a function and that got a signal, 8309 delete that auto-display to avoid an infinite recursion. */ 8310 8311 if (stopped_by_random_signal) 8312 disable_current_display (); 8313 8314 SWITCH_THRU_ALL_UIS () 8315 { 8316 async_enable_stdin (); 8317 } 8318 8319 /* Let the user/frontend see the threads as stopped. */ 8320 do_cleanups (old_chain); 8321 8322 /* Select innermost stack frame - i.e., current frame is frame 0, 8323 and current location is based on that. Handle the case where the 8324 dummy call is returning after being stopped. E.g. the dummy call 8325 previously hit a breakpoint. (If the dummy call returns 8326 normally, we won't reach here.) Do this before the stop hook is 8327 run, so that it doesn't get to see the temporary dummy frame, 8328 which is not where we'll present the stop. */ 8329 if (has_stack_frames ()) 8330 { 8331 if (stop_stack_dummy == STOP_STACK_DUMMY) 8332 { 8333 /* Pop the empty frame that contains the stack dummy. This 8334 also restores inferior state prior to the call (struct 8335 infcall_suspend_state). */ 8336 struct frame_info *frame = get_current_frame (); 8337 8338 gdb_assert (get_frame_type (frame) == DUMMY_FRAME); 8339 frame_pop (frame); 8340 /* frame_pop calls reinit_frame_cache as the last thing it 8341 does which means there's now no selected frame. */ 8342 } 8343 8344 select_frame (get_current_frame ()); 8345 8346 /* Set the current source location. */ 8347 set_current_sal_from_frame (get_current_frame ()); 8348 } 8349 8350 /* Look up the hook_stop and run it (CLI internally handles problem 8351 of stop_command's pre-hook not existing). */ 8352 if (stop_command != NULL) 8353 { 8354 struct stop_context *saved_context = save_stop_context (); 8355 struct cleanup *old_chain 8356 = make_cleanup (release_stop_context_cleanup, saved_context); 8357 8358 catch_errors (hook_stop_stub, stop_command, 8359 "Error while running hook_stop:\n", RETURN_MASK_ALL); 8360 8361 /* If the stop hook resumes the target, then there's no point in 8362 trying to notify about the previous stop; its context is 8363 gone. Likewise if the command switches thread or inferior -- 8364 the observers would print a stop for the wrong 8365 thread/inferior. */ 8366 if (stop_context_changed (saved_context)) 8367 { 8368 do_cleanups (old_chain); 8369 return 1; 8370 } 8371 do_cleanups (old_chain); 8372 } 8373 8374 /* Notify observers about the stop. This is where the interpreters 8375 print the stop event. */ 8376 if (!ptid_equal (inferior_ptid, null_ptid)) 8377 observer_notify_normal_stop (inferior_thread ()->control.stop_bpstat, 8378 stop_print_frame); 8379 else 8380 observer_notify_normal_stop (NULL, stop_print_frame); 8381 8382 annotate_stopped (); 8383 8384 if (target_has_execution) 8385 { 8386 if (last.kind != TARGET_WAITKIND_SIGNALLED 8387 && last.kind != TARGET_WAITKIND_EXITED) 8388 /* Delete the breakpoint we stopped at, if it wants to be deleted. 8389 Delete any breakpoint that is to be deleted at the next stop. */ 8390 breakpoint_auto_delete (inferior_thread ()->control.stop_bpstat); 8391 } 8392 8393 /* Try to get rid of automatically added inferiors that are no 8394 longer needed. Keeping those around slows down things linearly. 8395 Note that this never removes the current inferior. */ 8396 prune_inferiors (); 8397 8398 return 0; 8399 } 8400 8401 static int 8402 hook_stop_stub (void *cmd) 8403 { 8404 execute_cmd_pre_hook ((struct cmd_list_element *) cmd); 8405 return (0); 8406 } 8407 8408 int 8409 signal_stop_state (int signo) 8410 { 8411 return signal_stop[signo]; 8412 } 8413 8414 int 8415 signal_print_state (int signo) 8416 { 8417 return signal_print[signo]; 8418 } 8419 8420 int 8421 signal_pass_state (int signo) 8422 { 8423 return signal_program[signo]; 8424 } 8425 8426 static void 8427 signal_cache_update (int signo) 8428 { 8429 if (signo == -1) 8430 { 8431 for (signo = 0; signo < (int) GDB_SIGNAL_LAST; signo++) 8432 signal_cache_update (signo); 8433 8434 return; 8435 } 8436 8437 signal_pass[signo] = (signal_stop[signo] == 0 8438 && signal_print[signo] == 0 8439 && signal_program[signo] == 1 8440 && signal_catch[signo] == 0); 8441 } 8442 8443 int 8444 signal_stop_update (int signo, int state) 8445 { 8446 int ret = signal_stop[signo]; 8447 8448 signal_stop[signo] = state; 8449 signal_cache_update (signo); 8450 return ret; 8451 } 8452 8453 int 8454 signal_print_update (int signo, int state) 8455 { 8456 int ret = signal_print[signo]; 8457 8458 signal_print[signo] = state; 8459 signal_cache_update (signo); 8460 return ret; 8461 } 8462 8463 int 8464 signal_pass_update (int signo, int state) 8465 { 8466 int ret = signal_program[signo]; 8467 8468 signal_program[signo] = state; 8469 signal_cache_update (signo); 8470 return ret; 8471 } 8472 8473 /* Update the global 'signal_catch' from INFO and notify the 8474 target. */ 8475 8476 void 8477 signal_catch_update (const unsigned int *info) 8478 { 8479 int i; 8480 8481 for (i = 0; i < GDB_SIGNAL_LAST; ++i) 8482 signal_catch[i] = info[i] > 0; 8483 signal_cache_update (-1); 8484 target_pass_signals ((int) GDB_SIGNAL_LAST, signal_pass); 8485 } 8486 8487 static void 8488 sig_print_header (void) 8489 { 8490 printf_filtered (_("Signal Stop\tPrint\tPass " 8491 "to program\tDescription\n")); 8492 } 8493 8494 static void 8495 sig_print_info (enum gdb_signal oursig) 8496 { 8497 const char *name = gdb_signal_to_name (oursig); 8498 int name_padding = 13 - strlen (name); 8499 8500 if (name_padding <= 0) 8501 name_padding = 0; 8502 8503 printf_filtered ("%s", name); 8504 printf_filtered ("%*.*s ", name_padding, name_padding, " "); 8505 printf_filtered ("%s\t", signal_stop[oursig] ? "Yes" : "No"); 8506 printf_filtered ("%s\t", signal_print[oursig] ? "Yes" : "No"); 8507 printf_filtered ("%s\t\t", signal_program[oursig] ? "Yes" : "No"); 8508 printf_filtered ("%s\n", gdb_signal_to_string (oursig)); 8509 } 8510 8511 /* Specify how various signals in the inferior should be handled. */ 8512 8513 static void 8514 handle_command (char *args, int from_tty) 8515 { 8516 char **argv; 8517 int digits, wordlen; 8518 int sigfirst, signum, siglast; 8519 enum gdb_signal oursig; 8520 int allsigs; 8521 int nsigs; 8522 unsigned char *sigs; 8523 struct cleanup *old_chain; 8524 8525 if (args == NULL) 8526 { 8527 error_no_arg (_("signal to handle")); 8528 } 8529 8530 /* Allocate and zero an array of flags for which signals to handle. */ 8531 8532 nsigs = (int) GDB_SIGNAL_LAST; 8533 sigs = (unsigned char *) alloca (nsigs); 8534 memset (sigs, 0, nsigs); 8535 8536 /* Break the command line up into args. */ 8537 8538 argv = gdb_buildargv (args); 8539 old_chain = make_cleanup_freeargv (argv); 8540 8541 /* Walk through the args, looking for signal oursigs, signal names, and 8542 actions. Signal numbers and signal names may be interspersed with 8543 actions, with the actions being performed for all signals cumulatively 8544 specified. Signal ranges can be specified as <LOW>-<HIGH>. */ 8545 8546 while (*argv != NULL) 8547 { 8548 wordlen = strlen (*argv); 8549 for (digits = 0; isdigit ((*argv)[digits]); digits++) 8550 {; 8551 } 8552 allsigs = 0; 8553 sigfirst = siglast = -1; 8554 8555 if (wordlen >= 1 && !strncmp (*argv, "all", wordlen)) 8556 { 8557 /* Apply action to all signals except those used by the 8558 debugger. Silently skip those. */ 8559 allsigs = 1; 8560 sigfirst = 0; 8561 siglast = nsigs - 1; 8562 } 8563 else if (wordlen >= 1 && !strncmp (*argv, "stop", wordlen)) 8564 { 8565 SET_SIGS (nsigs, sigs, signal_stop); 8566 SET_SIGS (nsigs, sigs, signal_print); 8567 } 8568 else if (wordlen >= 1 && !strncmp (*argv, "ignore", wordlen)) 8569 { 8570 UNSET_SIGS (nsigs, sigs, signal_program); 8571 } 8572 else if (wordlen >= 2 && !strncmp (*argv, "print", wordlen)) 8573 { 8574 SET_SIGS (nsigs, sigs, signal_print); 8575 } 8576 else if (wordlen >= 2 && !strncmp (*argv, "pass", wordlen)) 8577 { 8578 SET_SIGS (nsigs, sigs, signal_program); 8579 } 8580 else if (wordlen >= 3 && !strncmp (*argv, "nostop", wordlen)) 8581 { 8582 UNSET_SIGS (nsigs, sigs, signal_stop); 8583 } 8584 else if (wordlen >= 3 && !strncmp (*argv, "noignore", wordlen)) 8585 { 8586 SET_SIGS (nsigs, sigs, signal_program); 8587 } 8588 else if (wordlen >= 4 && !strncmp (*argv, "noprint", wordlen)) 8589 { 8590 UNSET_SIGS (nsigs, sigs, signal_print); 8591 UNSET_SIGS (nsigs, sigs, signal_stop); 8592 } 8593 else if (wordlen >= 4 && !strncmp (*argv, "nopass", wordlen)) 8594 { 8595 UNSET_SIGS (nsigs, sigs, signal_program); 8596 } 8597 else if (digits > 0) 8598 { 8599 /* It is numeric. The numeric signal refers to our own 8600 internal signal numbering from target.h, not to host/target 8601 signal number. This is a feature; users really should be 8602 using symbolic names anyway, and the common ones like 8603 SIGHUP, SIGINT, SIGALRM, etc. will work right anyway. */ 8604 8605 sigfirst = siglast = (int) 8606 gdb_signal_from_command (atoi (*argv)); 8607 if ((*argv)[digits] == '-') 8608 { 8609 siglast = (int) 8610 gdb_signal_from_command (atoi ((*argv) + digits + 1)); 8611 } 8612 if (sigfirst > siglast) 8613 { 8614 /* Bet he didn't figure we'd think of this case... */ 8615 signum = sigfirst; 8616 sigfirst = siglast; 8617 siglast = signum; 8618 } 8619 } 8620 else 8621 { 8622 oursig = gdb_signal_from_name (*argv); 8623 if (oursig != GDB_SIGNAL_UNKNOWN) 8624 { 8625 sigfirst = siglast = (int) oursig; 8626 } 8627 else 8628 { 8629 /* Not a number and not a recognized flag word => complain. */ 8630 error (_("Unrecognized or ambiguous flag word: \"%s\"."), *argv); 8631 } 8632 } 8633 8634 /* If any signal numbers or symbol names were found, set flags for 8635 which signals to apply actions to. */ 8636 8637 for (signum = sigfirst; signum >= 0 && signum <= siglast; signum++) 8638 { 8639 switch ((enum gdb_signal) signum) 8640 { 8641 case GDB_SIGNAL_TRAP: 8642 case GDB_SIGNAL_INT: 8643 if (!allsigs && !sigs[signum]) 8644 { 8645 if (query (_("%s is used by the debugger.\n\ 8646 Are you sure you want to change it? "), 8647 gdb_signal_to_name ((enum gdb_signal) signum))) 8648 { 8649 sigs[signum] = 1; 8650 } 8651 else 8652 { 8653 printf_unfiltered (_("Not confirmed, unchanged.\n")); 8654 gdb_flush (gdb_stdout); 8655 } 8656 } 8657 break; 8658 case GDB_SIGNAL_0: 8659 case GDB_SIGNAL_DEFAULT: 8660 case GDB_SIGNAL_UNKNOWN: 8661 /* Make sure that "all" doesn't print these. */ 8662 break; 8663 default: 8664 sigs[signum] = 1; 8665 break; 8666 } 8667 } 8668 8669 argv++; 8670 } 8671 8672 for (signum = 0; signum < nsigs; signum++) 8673 if (sigs[signum]) 8674 { 8675 signal_cache_update (-1); 8676 target_pass_signals ((int) GDB_SIGNAL_LAST, signal_pass); 8677 target_program_signals ((int) GDB_SIGNAL_LAST, signal_program); 8678 8679 if (from_tty) 8680 { 8681 /* Show the results. */ 8682 sig_print_header (); 8683 for (; signum < nsigs; signum++) 8684 if (sigs[signum]) 8685 sig_print_info ((enum gdb_signal) signum); 8686 } 8687 8688 break; 8689 } 8690 8691 do_cleanups (old_chain); 8692 } 8693 8694 /* Complete the "handle" command. */ 8695 8696 static VEC (char_ptr) * 8697 handle_completer (struct cmd_list_element *ignore, 8698 const char *text, const char *word) 8699 { 8700 VEC (char_ptr) *vec_signals, *vec_keywords, *return_val; 8701 static const char * const keywords[] = 8702 { 8703 "all", 8704 "stop", 8705 "ignore", 8706 "print", 8707 "pass", 8708 "nostop", 8709 "noignore", 8710 "noprint", 8711 "nopass", 8712 NULL, 8713 }; 8714 8715 vec_signals = signal_completer (ignore, text, word); 8716 vec_keywords = complete_on_enum (keywords, word, word); 8717 8718 return_val = VEC_merge (char_ptr, vec_signals, vec_keywords); 8719 VEC_free (char_ptr, vec_signals); 8720 VEC_free (char_ptr, vec_keywords); 8721 return return_val; 8722 } 8723 8724 enum gdb_signal 8725 gdb_signal_from_command (int num) 8726 { 8727 if (num >= 1 && num <= 15) 8728 return (enum gdb_signal) num; 8729 error (_("Only signals 1-15 are valid as numeric signals.\n\ 8730 Use \"info signals\" for a list of symbolic signals.")); 8731 } 8732 8733 /* Print current contents of the tables set by the handle command. 8734 It is possible we should just be printing signals actually used 8735 by the current target (but for things to work right when switching 8736 targets, all signals should be in the signal tables). */ 8737 8738 static void 8739 signals_info (char *signum_exp, int from_tty) 8740 { 8741 enum gdb_signal oursig; 8742 8743 sig_print_header (); 8744 8745 if (signum_exp) 8746 { 8747 /* First see if this is a symbol name. */ 8748 oursig = gdb_signal_from_name (signum_exp); 8749 if (oursig == GDB_SIGNAL_UNKNOWN) 8750 { 8751 /* No, try numeric. */ 8752 oursig = 8753 gdb_signal_from_command (parse_and_eval_long (signum_exp)); 8754 } 8755 sig_print_info (oursig); 8756 return; 8757 } 8758 8759 printf_filtered ("\n"); 8760 /* These ugly casts brought to you by the native VAX compiler. */ 8761 for (oursig = GDB_SIGNAL_FIRST; 8762 (int) oursig < (int) GDB_SIGNAL_LAST; 8763 oursig = (enum gdb_signal) ((int) oursig + 1)) 8764 { 8765 QUIT; 8766 8767 if (oursig != GDB_SIGNAL_UNKNOWN 8768 && oursig != GDB_SIGNAL_DEFAULT && oursig != GDB_SIGNAL_0) 8769 sig_print_info (oursig); 8770 } 8771 8772 printf_filtered (_("\nUse the \"handle\" command " 8773 "to change these tables.\n")); 8774 } 8775 8776 /* The $_siginfo convenience variable is a bit special. We don't know 8777 for sure the type of the value until we actually have a chance to 8778 fetch the data. The type can change depending on gdbarch, so it is 8779 also dependent on which thread you have selected. 8780 8781 1. making $_siginfo be an internalvar that creates a new value on 8782 access. 8783 8784 2. making the value of $_siginfo be an lval_computed value. */ 8785 8786 /* This function implements the lval_computed support for reading a 8787 $_siginfo value. */ 8788 8789 static void 8790 siginfo_value_read (struct value *v) 8791 { 8792 LONGEST transferred; 8793 8794 /* If we can access registers, so can we access $_siginfo. Likewise 8795 vice versa. */ 8796 validate_registers_access (); 8797 8798 transferred = 8799 target_read (¤t_target, TARGET_OBJECT_SIGNAL_INFO, 8800 NULL, 8801 value_contents_all_raw (v), 8802 value_offset (v), 8803 TYPE_LENGTH (value_type (v))); 8804 8805 if (transferred != TYPE_LENGTH (value_type (v))) 8806 error (_("Unable to read siginfo")); 8807 } 8808 8809 /* This function implements the lval_computed support for writing a 8810 $_siginfo value. */ 8811 8812 static void 8813 siginfo_value_write (struct value *v, struct value *fromval) 8814 { 8815 LONGEST transferred; 8816 8817 /* If we can access registers, so can we access $_siginfo. Likewise 8818 vice versa. */ 8819 validate_registers_access (); 8820 8821 transferred = target_write (¤t_target, 8822 TARGET_OBJECT_SIGNAL_INFO, 8823 NULL, 8824 value_contents_all_raw (fromval), 8825 value_offset (v), 8826 TYPE_LENGTH (value_type (fromval))); 8827 8828 if (transferred != TYPE_LENGTH (value_type (fromval))) 8829 error (_("Unable to write siginfo")); 8830 } 8831 8832 static const struct lval_funcs siginfo_value_funcs = 8833 { 8834 siginfo_value_read, 8835 siginfo_value_write 8836 }; 8837 8838 /* Return a new value with the correct type for the siginfo object of 8839 the current thread using architecture GDBARCH. Return a void value 8840 if there's no object available. */ 8841 8842 static struct value * 8843 siginfo_make_value (struct gdbarch *gdbarch, struct internalvar *var, 8844 void *ignore) 8845 { 8846 if (target_has_stack 8847 && !ptid_equal (inferior_ptid, null_ptid) 8848 && gdbarch_get_siginfo_type_p (gdbarch)) 8849 { 8850 struct type *type = gdbarch_get_siginfo_type (gdbarch); 8851 8852 return allocate_computed_value (type, &siginfo_value_funcs, NULL); 8853 } 8854 8855 return allocate_value (builtin_type (gdbarch)->builtin_void); 8856 } 8857 8858 8859 /* infcall_suspend_state contains state about the program itself like its 8860 registers and any signal it received when it last stopped. 8861 This state must be restored regardless of how the inferior function call 8862 ends (either successfully, or after it hits a breakpoint or signal) 8863 if the program is to properly continue where it left off. */ 8864 8865 struct infcall_suspend_state 8866 { 8867 struct thread_suspend_state thread_suspend; 8868 8869 /* Other fields: */ 8870 CORE_ADDR stop_pc; 8871 struct regcache *registers; 8872 8873 /* Format of SIGINFO_DATA or NULL if it is not present. */ 8874 struct gdbarch *siginfo_gdbarch; 8875 8876 /* The inferior format depends on SIGINFO_GDBARCH and it has a length of 8877 TYPE_LENGTH (gdbarch_get_siginfo_type ()). For different gdbarch the 8878 content would be invalid. */ 8879 gdb_byte *siginfo_data; 8880 }; 8881 8882 struct infcall_suspend_state * 8883 save_infcall_suspend_state (void) 8884 { 8885 struct infcall_suspend_state *inf_state; 8886 struct thread_info *tp = inferior_thread (); 8887 struct regcache *regcache = get_current_regcache (); 8888 struct gdbarch *gdbarch = get_regcache_arch (regcache); 8889 gdb_byte *siginfo_data = NULL; 8890 8891 if (gdbarch_get_siginfo_type_p (gdbarch)) 8892 { 8893 struct type *type = gdbarch_get_siginfo_type (gdbarch); 8894 size_t len = TYPE_LENGTH (type); 8895 struct cleanup *back_to; 8896 8897 siginfo_data = (gdb_byte *) xmalloc (len); 8898 back_to = make_cleanup (xfree, siginfo_data); 8899 8900 if (target_read (¤t_target, TARGET_OBJECT_SIGNAL_INFO, NULL, 8901 siginfo_data, 0, len) == len) 8902 discard_cleanups (back_to); 8903 else 8904 { 8905 /* Errors ignored. */ 8906 do_cleanups (back_to); 8907 siginfo_data = NULL; 8908 } 8909 } 8910 8911 inf_state = XCNEW (struct infcall_suspend_state); 8912 8913 if (siginfo_data) 8914 { 8915 inf_state->siginfo_gdbarch = gdbarch; 8916 inf_state->siginfo_data = siginfo_data; 8917 } 8918 8919 inf_state->thread_suspend = tp->suspend; 8920 8921 /* run_inferior_call will not use the signal due to its `proceed' call with 8922 GDB_SIGNAL_0 anyway. */ 8923 tp->suspend.stop_signal = GDB_SIGNAL_0; 8924 8925 inf_state->stop_pc = stop_pc; 8926 8927 inf_state->registers = regcache_dup (regcache); 8928 8929 return inf_state; 8930 } 8931 8932 /* Restore inferior session state to INF_STATE. */ 8933 8934 void 8935 restore_infcall_suspend_state (struct infcall_suspend_state *inf_state) 8936 { 8937 struct thread_info *tp = inferior_thread (); 8938 struct regcache *regcache = get_current_regcache (); 8939 struct gdbarch *gdbarch = get_regcache_arch (regcache); 8940 8941 tp->suspend = inf_state->thread_suspend; 8942 8943 stop_pc = inf_state->stop_pc; 8944 8945 if (inf_state->siginfo_gdbarch == gdbarch) 8946 { 8947 struct type *type = gdbarch_get_siginfo_type (gdbarch); 8948 8949 /* Errors ignored. */ 8950 target_write (¤t_target, TARGET_OBJECT_SIGNAL_INFO, NULL, 8951 inf_state->siginfo_data, 0, TYPE_LENGTH (type)); 8952 } 8953 8954 /* The inferior can be gone if the user types "print exit(0)" 8955 (and perhaps other times). */ 8956 if (target_has_execution) 8957 /* NB: The register write goes through to the target. */ 8958 regcache_cpy (regcache, inf_state->registers); 8959 8960 discard_infcall_suspend_state (inf_state); 8961 } 8962 8963 static void 8964 do_restore_infcall_suspend_state_cleanup (void *state) 8965 { 8966 restore_infcall_suspend_state ((struct infcall_suspend_state *) state); 8967 } 8968 8969 struct cleanup * 8970 make_cleanup_restore_infcall_suspend_state 8971 (struct infcall_suspend_state *inf_state) 8972 { 8973 return make_cleanup (do_restore_infcall_suspend_state_cleanup, inf_state); 8974 } 8975 8976 void 8977 discard_infcall_suspend_state (struct infcall_suspend_state *inf_state) 8978 { 8979 regcache_xfree (inf_state->registers); 8980 xfree (inf_state->siginfo_data); 8981 xfree (inf_state); 8982 } 8983 8984 struct regcache * 8985 get_infcall_suspend_state_regcache (struct infcall_suspend_state *inf_state) 8986 { 8987 return inf_state->registers; 8988 } 8989 8990 /* infcall_control_state contains state regarding gdb's control of the 8991 inferior itself like stepping control. It also contains session state like 8992 the user's currently selected frame. */ 8993 8994 struct infcall_control_state 8995 { 8996 struct thread_control_state thread_control; 8997 struct inferior_control_state inferior_control; 8998 8999 /* Other fields: */ 9000 enum stop_stack_kind stop_stack_dummy; 9001 int stopped_by_random_signal; 9002 9003 /* ID if the selected frame when the inferior function call was made. */ 9004 struct frame_id selected_frame_id; 9005 }; 9006 9007 /* Save all of the information associated with the inferior<==>gdb 9008 connection. */ 9009 9010 struct infcall_control_state * 9011 save_infcall_control_state (void) 9012 { 9013 struct infcall_control_state *inf_status = 9014 XNEW (struct infcall_control_state); 9015 struct thread_info *tp = inferior_thread (); 9016 struct inferior *inf = current_inferior (); 9017 9018 inf_status->thread_control = tp->control; 9019 inf_status->inferior_control = inf->control; 9020 9021 tp->control.step_resume_breakpoint = NULL; 9022 tp->control.exception_resume_breakpoint = NULL; 9023 9024 /* Save original bpstat chain to INF_STATUS; replace it in TP with copy of 9025 chain. If caller's caller is walking the chain, they'll be happier if we 9026 hand them back the original chain when restore_infcall_control_state is 9027 called. */ 9028 tp->control.stop_bpstat = bpstat_copy (tp->control.stop_bpstat); 9029 9030 /* Other fields: */ 9031 inf_status->stop_stack_dummy = stop_stack_dummy; 9032 inf_status->stopped_by_random_signal = stopped_by_random_signal; 9033 9034 inf_status->selected_frame_id = get_frame_id (get_selected_frame (NULL)); 9035 9036 return inf_status; 9037 } 9038 9039 static int 9040 restore_selected_frame (void *args) 9041 { 9042 struct frame_id *fid = (struct frame_id *) args; 9043 struct frame_info *frame; 9044 9045 frame = frame_find_by_id (*fid); 9046 9047 /* If inf_status->selected_frame_id is NULL, there was no previously 9048 selected frame. */ 9049 if (frame == NULL) 9050 { 9051 warning (_("Unable to restore previously selected frame.")); 9052 return 0; 9053 } 9054 9055 select_frame (frame); 9056 9057 return (1); 9058 } 9059 9060 /* Restore inferior session state to INF_STATUS. */ 9061 9062 void 9063 restore_infcall_control_state (struct infcall_control_state *inf_status) 9064 { 9065 struct thread_info *tp = inferior_thread (); 9066 struct inferior *inf = current_inferior (); 9067 9068 if (tp->control.step_resume_breakpoint) 9069 tp->control.step_resume_breakpoint->disposition = disp_del_at_next_stop; 9070 9071 if (tp->control.exception_resume_breakpoint) 9072 tp->control.exception_resume_breakpoint->disposition 9073 = disp_del_at_next_stop; 9074 9075 /* Handle the bpstat_copy of the chain. */ 9076 bpstat_clear (&tp->control.stop_bpstat); 9077 9078 tp->control = inf_status->thread_control; 9079 inf->control = inf_status->inferior_control; 9080 9081 /* Other fields: */ 9082 stop_stack_dummy = inf_status->stop_stack_dummy; 9083 stopped_by_random_signal = inf_status->stopped_by_random_signal; 9084 9085 if (target_has_stack) 9086 { 9087 /* The point of catch_errors is that if the stack is clobbered, 9088 walking the stack might encounter a garbage pointer and 9089 error() trying to dereference it. */ 9090 if (catch_errors 9091 (restore_selected_frame, &inf_status->selected_frame_id, 9092 "Unable to restore previously selected frame:\n", 9093 RETURN_MASK_ERROR) == 0) 9094 /* Error in restoring the selected frame. Select the innermost 9095 frame. */ 9096 select_frame (get_current_frame ()); 9097 } 9098 9099 xfree (inf_status); 9100 } 9101 9102 static void 9103 do_restore_infcall_control_state_cleanup (void *sts) 9104 { 9105 restore_infcall_control_state ((struct infcall_control_state *) sts); 9106 } 9107 9108 struct cleanup * 9109 make_cleanup_restore_infcall_control_state 9110 (struct infcall_control_state *inf_status) 9111 { 9112 return make_cleanup (do_restore_infcall_control_state_cleanup, inf_status); 9113 } 9114 9115 void 9116 discard_infcall_control_state (struct infcall_control_state *inf_status) 9117 { 9118 if (inf_status->thread_control.step_resume_breakpoint) 9119 inf_status->thread_control.step_resume_breakpoint->disposition 9120 = disp_del_at_next_stop; 9121 9122 if (inf_status->thread_control.exception_resume_breakpoint) 9123 inf_status->thread_control.exception_resume_breakpoint->disposition 9124 = disp_del_at_next_stop; 9125 9126 /* See save_infcall_control_state for info on stop_bpstat. */ 9127 bpstat_clear (&inf_status->thread_control.stop_bpstat); 9128 9129 xfree (inf_status); 9130 } 9131 9132 /* restore_inferior_ptid() will be used by the cleanup machinery 9133 to restore the inferior_ptid value saved in a call to 9134 save_inferior_ptid(). */ 9135 9136 static void 9137 restore_inferior_ptid (void *arg) 9138 { 9139 ptid_t *saved_ptid_ptr = (ptid_t *) arg; 9140 9141 inferior_ptid = *saved_ptid_ptr; 9142 xfree (arg); 9143 } 9144 9145 /* Save the value of inferior_ptid so that it may be restored by a 9146 later call to do_cleanups(). Returns the struct cleanup pointer 9147 needed for later doing the cleanup. */ 9148 9149 struct cleanup * 9150 save_inferior_ptid (void) 9151 { 9152 ptid_t *saved_ptid_ptr = XNEW (ptid_t); 9153 9154 *saved_ptid_ptr = inferior_ptid; 9155 return make_cleanup (restore_inferior_ptid, saved_ptid_ptr); 9156 } 9157 9158 /* See infrun.h. */ 9159 9160 void 9161 clear_exit_convenience_vars (void) 9162 { 9163 clear_internalvar (lookup_internalvar ("_exitsignal")); 9164 clear_internalvar (lookup_internalvar ("_exitcode")); 9165 } 9166 9167 9168 /* User interface for reverse debugging: 9169 Set exec-direction / show exec-direction commands 9170 (returns error unless target implements to_set_exec_direction method). */ 9171 9172 enum exec_direction_kind execution_direction = EXEC_FORWARD; 9173 static const char exec_forward[] = "forward"; 9174 static const char exec_reverse[] = "reverse"; 9175 static const char *exec_direction = exec_forward; 9176 static const char *const exec_direction_names[] = { 9177 exec_forward, 9178 exec_reverse, 9179 NULL 9180 }; 9181 9182 static void 9183 set_exec_direction_func (char *args, int from_tty, 9184 struct cmd_list_element *cmd) 9185 { 9186 if (target_can_execute_reverse) 9187 { 9188 if (!strcmp (exec_direction, exec_forward)) 9189 execution_direction = EXEC_FORWARD; 9190 else if (!strcmp (exec_direction, exec_reverse)) 9191 execution_direction = EXEC_REVERSE; 9192 } 9193 else 9194 { 9195 exec_direction = exec_forward; 9196 error (_("Target does not support this operation.")); 9197 } 9198 } 9199 9200 static void 9201 show_exec_direction_func (struct ui_file *out, int from_tty, 9202 struct cmd_list_element *cmd, const char *value) 9203 { 9204 switch (execution_direction) { 9205 case EXEC_FORWARD: 9206 fprintf_filtered (out, _("Forward.\n")); 9207 break; 9208 case EXEC_REVERSE: 9209 fprintf_filtered (out, _("Reverse.\n")); 9210 break; 9211 default: 9212 internal_error (__FILE__, __LINE__, 9213 _("bogus execution_direction value: %d"), 9214 (int) execution_direction); 9215 } 9216 } 9217 9218 static void 9219 show_schedule_multiple (struct ui_file *file, int from_tty, 9220 struct cmd_list_element *c, const char *value) 9221 { 9222 fprintf_filtered (file, _("Resuming the execution of threads " 9223 "of all processes is %s.\n"), value); 9224 } 9225 9226 /* Implementation of `siginfo' variable. */ 9227 9228 static const struct internalvar_funcs siginfo_funcs = 9229 { 9230 siginfo_make_value, 9231 NULL, 9232 NULL 9233 }; 9234 9235 /* Callback for infrun's target events source. This is marked when a 9236 thread has a pending status to process. */ 9237 9238 static void 9239 infrun_async_inferior_event_handler (gdb_client_data data) 9240 { 9241 inferior_event_handler (INF_REG_EVENT, NULL); 9242 } 9243 9244 void 9245 _initialize_infrun (void) 9246 { 9247 int i; 9248 int numsigs; 9249 struct cmd_list_element *c; 9250 9251 /* Register extra event sources in the event loop. */ 9252 infrun_async_inferior_event_token 9253 = create_async_event_handler (infrun_async_inferior_event_handler, NULL); 9254 9255 add_info ("signals", signals_info, _("\ 9256 What debugger does when program gets various signals.\n\ 9257 Specify a signal as argument to print info on that signal only.")); 9258 add_info_alias ("handle", "signals", 0); 9259 9260 c = add_com ("handle", class_run, handle_command, _("\ 9261 Specify how to handle signals.\n\ 9262 Usage: handle SIGNAL [ACTIONS]\n\ 9263 Args are signals and actions to apply to those signals.\n\ 9264 If no actions are specified, the current settings for the specified signals\n\ 9265 will be displayed instead.\n\ 9266 \n\ 9267 Symbolic signals (e.g. SIGSEGV) are recommended but numeric signals\n\ 9268 from 1-15 are allowed for compatibility with old versions of GDB.\n\ 9269 Numeric ranges may be specified with the form LOW-HIGH (e.g. 1-5).\n\ 9270 The special arg \"all\" is recognized to mean all signals except those\n\ 9271 used by the debugger, typically SIGTRAP and SIGINT.\n\ 9272 \n\ 9273 Recognized actions include \"stop\", \"nostop\", \"print\", \"noprint\",\n\ 9274 \"pass\", \"nopass\", \"ignore\", or \"noignore\".\n\ 9275 Stop means reenter debugger if this signal happens (implies print).\n\ 9276 Print means print a message if this signal happens.\n\ 9277 Pass means let program see this signal; otherwise program doesn't know.\n\ 9278 Ignore is a synonym for nopass and noignore is a synonym for pass.\n\ 9279 Pass and Stop may be combined.\n\ 9280 \n\ 9281 Multiple signals may be specified. Signal numbers and signal names\n\ 9282 may be interspersed with actions, with the actions being performed for\n\ 9283 all signals cumulatively specified.")); 9284 set_cmd_completer (c, handle_completer); 9285 9286 if (!dbx_commands) 9287 stop_command = add_cmd ("stop", class_obscure, 9288 not_just_help_class_command, _("\ 9289 There is no `stop' command, but you can set a hook on `stop'.\n\ 9290 This allows you to set a list of commands to be run each time execution\n\ 9291 of the program stops."), &cmdlist); 9292 9293 add_setshow_zuinteger_cmd ("infrun", class_maintenance, &debug_infrun, _("\ 9294 Set inferior debugging."), _("\ 9295 Show inferior debugging."), _("\ 9296 When non-zero, inferior specific debugging is enabled."), 9297 NULL, 9298 show_debug_infrun, 9299 &setdebuglist, &showdebuglist); 9300 9301 add_setshow_boolean_cmd ("displaced", class_maintenance, 9302 &debug_displaced, _("\ 9303 Set displaced stepping debugging."), _("\ 9304 Show displaced stepping debugging."), _("\ 9305 When non-zero, displaced stepping specific debugging is enabled."), 9306 NULL, 9307 show_debug_displaced, 9308 &setdebuglist, &showdebuglist); 9309 9310 add_setshow_boolean_cmd ("non-stop", no_class, 9311 &non_stop_1, _("\ 9312 Set whether gdb controls the inferior in non-stop mode."), _("\ 9313 Show whether gdb controls the inferior in non-stop mode."), _("\ 9314 When debugging a multi-threaded program and this setting is\n\ 9315 off (the default, also called all-stop mode), when one thread stops\n\ 9316 (for a breakpoint, watchpoint, exception, or similar events), GDB stops\n\ 9317 all other threads in the program while you interact with the thread of\n\ 9318 interest. When you continue or step a thread, you can allow the other\n\ 9319 threads to run, or have them remain stopped, but while you inspect any\n\ 9320 thread's state, all threads stop.\n\ 9321 \n\ 9322 In non-stop mode, when one thread stops, other threads can continue\n\ 9323 to run freely. You'll be able to step each thread independently,\n\ 9324 leave it stopped or free to run as needed."), 9325 set_non_stop, 9326 show_non_stop, 9327 &setlist, 9328 &showlist); 9329 9330 numsigs = (int) GDB_SIGNAL_LAST; 9331 signal_stop = XNEWVEC (unsigned char, numsigs); 9332 signal_print = XNEWVEC (unsigned char, numsigs); 9333 signal_program = XNEWVEC (unsigned char, numsigs); 9334 signal_catch = XNEWVEC (unsigned char, numsigs); 9335 signal_pass = XNEWVEC (unsigned char, numsigs); 9336 for (i = 0; i < numsigs; i++) 9337 { 9338 signal_stop[i] = 1; 9339 signal_print[i] = 1; 9340 signal_program[i] = 1; 9341 signal_catch[i] = 0; 9342 } 9343 9344 /* Signals caused by debugger's own actions should not be given to 9345 the program afterwards. 9346 9347 Do not deliver GDB_SIGNAL_TRAP by default, except when the user 9348 explicitly specifies that it should be delivered to the target 9349 program. Typically, that would occur when a user is debugging a 9350 target monitor on a simulator: the target monitor sets a 9351 breakpoint; the simulator encounters this breakpoint and halts 9352 the simulation handing control to GDB; GDB, noting that the stop 9353 address doesn't map to any known breakpoint, returns control back 9354 to the simulator; the simulator then delivers the hardware 9355 equivalent of a GDB_SIGNAL_TRAP to the program being 9356 debugged. */ 9357 signal_program[GDB_SIGNAL_TRAP] = 0; 9358 signal_program[GDB_SIGNAL_INT] = 0; 9359 9360 /* Signals that are not errors should not normally enter the debugger. */ 9361 signal_stop[GDB_SIGNAL_ALRM] = 0; 9362 signal_print[GDB_SIGNAL_ALRM] = 0; 9363 signal_stop[GDB_SIGNAL_VTALRM] = 0; 9364 signal_print[GDB_SIGNAL_VTALRM] = 0; 9365 signal_stop[GDB_SIGNAL_PROF] = 0; 9366 signal_print[GDB_SIGNAL_PROF] = 0; 9367 signal_stop[GDB_SIGNAL_CHLD] = 0; 9368 signal_print[GDB_SIGNAL_CHLD] = 0; 9369 signal_stop[GDB_SIGNAL_IO] = 0; 9370 signal_print[GDB_SIGNAL_IO] = 0; 9371 signal_stop[GDB_SIGNAL_POLL] = 0; 9372 signal_print[GDB_SIGNAL_POLL] = 0; 9373 signal_stop[GDB_SIGNAL_URG] = 0; 9374 signal_print[GDB_SIGNAL_URG] = 0; 9375 signal_stop[GDB_SIGNAL_WINCH] = 0; 9376 signal_print[GDB_SIGNAL_WINCH] = 0; 9377 signal_stop[GDB_SIGNAL_PRIO] = 0; 9378 signal_print[GDB_SIGNAL_PRIO] = 0; 9379 9380 /* These signals are used internally by user-level thread 9381 implementations. (See signal(5) on Solaris.) Like the above 9382 signals, a healthy program receives and handles them as part of 9383 its normal operation. */ 9384 signal_stop[GDB_SIGNAL_LWP] = 0; 9385 signal_print[GDB_SIGNAL_LWP] = 0; 9386 signal_stop[GDB_SIGNAL_WAITING] = 0; 9387 signal_print[GDB_SIGNAL_WAITING] = 0; 9388 signal_stop[GDB_SIGNAL_CANCEL] = 0; 9389 signal_print[GDB_SIGNAL_CANCEL] = 0; 9390 signal_stop[GDB_SIGNAL_LIBRT] = 0; 9391 signal_print[GDB_SIGNAL_LIBRT] = 0; 9392 9393 /* Update cached state. */ 9394 signal_cache_update (-1); 9395 9396 add_setshow_zinteger_cmd ("stop-on-solib-events", class_support, 9397 &stop_on_solib_events, _("\ 9398 Set stopping for shared library events."), _("\ 9399 Show stopping for shared library events."), _("\ 9400 If nonzero, gdb will give control to the user when the dynamic linker\n\ 9401 notifies gdb of shared library events. The most common event of interest\n\ 9402 to the user would be loading/unloading of a new library."), 9403 set_stop_on_solib_events, 9404 show_stop_on_solib_events, 9405 &setlist, &showlist); 9406 9407 add_setshow_enum_cmd ("follow-fork-mode", class_run, 9408 follow_fork_mode_kind_names, 9409 &follow_fork_mode_string, _("\ 9410 Set debugger response to a program call of fork or vfork."), _("\ 9411 Show debugger response to a program call of fork or vfork."), _("\ 9412 A fork or vfork creates a new process. follow-fork-mode can be:\n\ 9413 parent - the original process is debugged after a fork\n\ 9414 child - the new process is debugged after a fork\n\ 9415 The unfollowed process will continue to run.\n\ 9416 By default, the debugger will follow the parent process."), 9417 NULL, 9418 show_follow_fork_mode_string, 9419 &setlist, &showlist); 9420 9421 add_setshow_enum_cmd ("follow-exec-mode", class_run, 9422 follow_exec_mode_names, 9423 &follow_exec_mode_string, _("\ 9424 Set debugger response to a program call of exec."), _("\ 9425 Show debugger response to a program call of exec."), _("\ 9426 An exec call replaces the program image of a process.\n\ 9427 \n\ 9428 follow-exec-mode can be:\n\ 9429 \n\ 9430 new - the debugger creates a new inferior and rebinds the process\n\ 9431 to this new inferior. The program the process was running before\n\ 9432 the exec call can be restarted afterwards by restarting the original\n\ 9433 inferior.\n\ 9434 \n\ 9435 same - the debugger keeps the process bound to the same inferior.\n\ 9436 The new executable image replaces the previous executable loaded in\n\ 9437 the inferior. Restarting the inferior after the exec call restarts\n\ 9438 the executable the process was running after the exec call.\n\ 9439 \n\ 9440 By default, the debugger will use the same inferior."), 9441 NULL, 9442 show_follow_exec_mode_string, 9443 &setlist, &showlist); 9444 9445 add_setshow_enum_cmd ("scheduler-locking", class_run, 9446 scheduler_enums, &scheduler_mode, _("\ 9447 Set mode for locking scheduler during execution."), _("\ 9448 Show mode for locking scheduler during execution."), _("\ 9449 off == no locking (threads may preempt at any time)\n\ 9450 on == full locking (no thread except the current thread may run)\n\ 9451 This applies to both normal execution and replay mode.\n\ 9452 step == scheduler locked during stepping commands (step, next, stepi, nexti).\n\ 9453 In this mode, other threads may run during other commands.\n\ 9454 This applies to both normal execution and replay mode.\n\ 9455 replay == scheduler locked in replay mode and unlocked during normal execution."), 9456 set_schedlock_func, /* traps on target vector */ 9457 show_scheduler_mode, 9458 &setlist, &showlist); 9459 9460 add_setshow_boolean_cmd ("schedule-multiple", class_run, &sched_multi, _("\ 9461 Set mode for resuming threads of all processes."), _("\ 9462 Show mode for resuming threads of all processes."), _("\ 9463 When on, execution commands (such as 'continue' or 'next') resume all\n\ 9464 threads of all processes. When off (which is the default), execution\n\ 9465 commands only resume the threads of the current process. The set of\n\ 9466 threads that are resumed is further refined by the scheduler-locking\n\ 9467 mode (see help set scheduler-locking)."), 9468 NULL, 9469 show_schedule_multiple, 9470 &setlist, &showlist); 9471 9472 add_setshow_boolean_cmd ("step-mode", class_run, &step_stop_if_no_debug, _("\ 9473 Set mode of the step operation."), _("\ 9474 Show mode of the step operation."), _("\ 9475 When set, doing a step over a function without debug line information\n\ 9476 will stop at the first instruction of that function. Otherwise, the\n\ 9477 function is skipped and the step command stops at a different source line."), 9478 NULL, 9479 show_step_stop_if_no_debug, 9480 &setlist, &showlist); 9481 9482 add_setshow_auto_boolean_cmd ("displaced-stepping", class_run, 9483 &can_use_displaced_stepping, _("\ 9484 Set debugger's willingness to use displaced stepping."), _("\ 9485 Show debugger's willingness to use displaced stepping."), _("\ 9486 If on, gdb will use displaced stepping to step over breakpoints if it is\n\ 9487 supported by the target architecture. If off, gdb will not use displaced\n\ 9488 stepping to step over breakpoints, even if such is supported by the target\n\ 9489 architecture. If auto (which is the default), gdb will use displaced stepping\n\ 9490 if the target architecture supports it and non-stop mode is active, but will not\n\ 9491 use it in all-stop mode (see help set non-stop)."), 9492 NULL, 9493 show_can_use_displaced_stepping, 9494 &setlist, &showlist); 9495 9496 add_setshow_enum_cmd ("exec-direction", class_run, exec_direction_names, 9497 &exec_direction, _("Set direction of execution.\n\ 9498 Options are 'forward' or 'reverse'."), 9499 _("Show direction of execution (forward/reverse)."), 9500 _("Tells gdb whether to execute forward or backward."), 9501 set_exec_direction_func, show_exec_direction_func, 9502 &setlist, &showlist); 9503 9504 /* Set/show detach-on-fork: user-settable mode. */ 9505 9506 add_setshow_boolean_cmd ("detach-on-fork", class_run, &detach_fork, _("\ 9507 Set whether gdb will detach the child of a fork."), _("\ 9508 Show whether gdb will detach the child of a fork."), _("\ 9509 Tells gdb whether to detach the child of a fork."), 9510 NULL, NULL, &setlist, &showlist); 9511 9512 /* Set/show disable address space randomization mode. */ 9513 9514 add_setshow_boolean_cmd ("disable-randomization", class_support, 9515 &disable_randomization, _("\ 9516 Set disabling of debuggee's virtual address space randomization."), _("\ 9517 Show disabling of debuggee's virtual address space randomization."), _("\ 9518 When this mode is on (which is the default), randomization of the virtual\n\ 9519 address space is disabled. Standalone programs run with the randomization\n\ 9520 enabled by default on some platforms."), 9521 &set_disable_randomization, 9522 &show_disable_randomization, 9523 &setlist, &showlist); 9524 9525 /* ptid initializations */ 9526 inferior_ptid = null_ptid; 9527 target_last_wait_ptid = minus_one_ptid; 9528 9529 observer_attach_thread_ptid_changed (infrun_thread_ptid_changed); 9530 observer_attach_thread_stop_requested (infrun_thread_stop_requested); 9531 observer_attach_thread_exit (infrun_thread_thread_exit); 9532 observer_attach_inferior_exit (infrun_inferior_exit); 9533 9534 /* Explicitly create without lookup, since that tries to create a 9535 value with a void typed value, and when we get here, gdbarch 9536 isn't initialized yet. At this point, we're quite sure there 9537 isn't another convenience variable of the same name. */ 9538 create_internalvar_type_lazy ("_siginfo", &siginfo_funcs, NULL); 9539 9540 add_setshow_boolean_cmd ("observer", no_class, 9541 &observer_mode_1, _("\ 9542 Set whether gdb controls the inferior in observer mode."), _("\ 9543 Show whether gdb controls the inferior in observer mode."), _("\ 9544 In observer mode, GDB can get data from the inferior, but not\n\ 9545 affect its execution. Registers and memory may not be changed,\n\ 9546 breakpoints may not be set, and the program cannot be interrupted\n\ 9547 or signalled."), 9548 set_observer_mode, 9549 show_observer_mode, 9550 &setlist, 9551 &showlist); 9552 } 9553