aboutsummaryrefslogtreecommitdiff
path: root/gdb
AgeCommit message (Collapse)AuthorFilesLines
2014-06-03This patch replaces a call to cplus_demangle with a call toGary Benson2-1/+5
gdb_demangle. This change was included in an RFC from last March [1] but omitted from the eventual commit. [1] https://sourceware.org/ml/gdb-patches/2013-03/msg00235.html 2014-06-03 Gary Benson <gbenson@redhat.com> * gnu-v2-abi.c (gnuv2_value_rtti_type): Use gdb_demangle.
2014-06-03PR breakpoints/17000: user breakpoint not inserted if software-single-step ↵Pedro Alves3-0/+144
at same location - test GDB gets confused when removing a software single-step breakpoint that is at the same address as another breakpoint. Add another kfailed test. gdb/testsuite/ 2014-06-03 Pedro Alves <palves@redhat.com> PR breakpoints/17000 * gdb.base/sss-bp-on-user-bp-2.c: New file. * gdb.base/sss-bp-on-user-bp-2.exp: New file.
2014-06-03Add parameter support for Guile.Doug Evans14-4/+1663
* Makefile.in (SUBDIR_GUILE_OBS): Add scm-param.o. (SUBDIR_GUILE_SRCS): Add scm-param.c. (scm-param.o): New rule. * guile/guile-internal.h (gdbscm_gc_dup_argv): Declare. (gdbscm_misc_error): Declare. (gdbscm_canonicalize_command_name): Declare. (gdbscm_scm_to_host_string): Declare. (gdbscm_scm_from_host_string): Declare. (gdbscm_initialize_parameters): Declare. * guile/guile.c (initialize_gdb_module): Call gdbscm_initialize_parameters. * guile/lib/gdb.scm: Export parameter symbols. * guile/scm-cmd.c (gdbscm_canonicalize_command_name): Renamed from cmdscm_canonicalize_name and made public. All callers updated. * guile/scm-exception.c (gdbscm_misc_error): New function. * guile/scm-param.c: New file. * guile/scm-string.c (gdbscm_scm_to_string): Add comments. (gdbscm_scm_to_host_string): New function. (gdbscm_scm_from_host_string): New function. * scm-utils.c (gdbscm_gc_dup_argv): New function. testsuite/ * gdb.guile/scm-parameter.exp: New file. doc/ * guile.texi (Guile API): Add entry for Parameters In Guile. (GDB Scheme Data Types): Mention <gdb:parameter> object. (Parameters In Guile): New node.
2014-06-03Add command support for Guile.Doug Evans14-7/+1527
* Makefile.in (SUBDIR_GUILE_OBS): Add scm-cmd.o. (SUBDIR_GUILE_SRCS): Add scm-cmd.c. (scm-cmd.o): New rule. * guile/guile-internal.h (gdbscm_gc_xstrdup): Declare. (gdbscm_user_error_p): Declare. (gdbscm_parse_command_name): Declare. (gdbscm_valid_command_class_p): Declare. (gdbscm_initialize_commands): Declare. * guile/guile.c (initialize_gdb_module): Call gdbscm_initialize_commands. * guile/lib/gdb.scm: Export command symbols. * guile/lib/gdb/init.scm (%exception-keys): Add gdb:user-error. (throw-user-error): New function. * guile/scm-cmd.c: New file. * guile/scm-exception.c (user_error_symbol): New static global. (gdbscm_user_error_p): New function. (gdbscm_initialize_exceptions): Set user_error_symbol. * scm-utils.c (gdbscm_gc_xstrdup): New function. testsuite/ * gdb.guile/scm-cmd.c: New file. * gdb.guile/scm-cmd.exp: New file. doc/ * guile.texi (Guile API): Add entry for Commands In Guile. (Basic Guile) <parse-and-eval>: Add reference. (Basic Guile) <string->argv>: Move definition to Commands In Guile. (GDB Scheme Data Types): Mention <gdb:command> object. (Commands In Guile): New node.
2014-06-03Don't remove #-comments.Phil Muldoon2-13/+12
When using the multi-line feature, we don't want the gdb CLI to remove comments from the command list, as this will remove things like "#define". * top.c (command_loop): Handle comments here... (command_line_input): ... not here.
2014-06-02Add progspace support for Guile.Doug Evans15-28/+783
* Makefile.in (SUBDIR_GUILE_OBS): Add scm-progspace.o. (SUBDIR_GUILE_SRCS): Add scm-progspace.c. (scm-progspace.o): New rule. * guile/guile-internal.h (pspace_smob): New typedef. (psscm_pspace_smob_pretty_printers): Declare. (psscm_pspace_smob_from_pspace): Declare. (psscm_scm_from_pspace): Declare. * guile/guile.c (initialize_gdb_module): Call gdbscm_initialize_pspaces. * guile/lib/gdb.scm: Export progspace symbols. * guile/lib/gdb/printing.scm (prepend-pretty-printer!): Add progspace support. (append-pretty-printer!): Ditto. * guile/scm-pretty-print.c (ppscm_find_pretty_printer_from_progspace): Implement. * guile/scm-progspace.c: New file. doc/ * guile.texi (Guile API): Add entry for Progspaces In Guile. (GDB Scheme Data Types): Mention <gdb:progspace> object. (Progspaces In Guile): New node. testsuite/ * gdb.guile/scm-pretty-print.exp: Add tests for objfile and progspace pretty-printer lookup. * gdb.guile/scm-pretty-print.scm (pp_s-printer): New function. (make-pp_s-printer): Call it. (make-pretty-printer-from-dict): New function. (lookup-pretty-printer-maker-from-dict): New function. (*pretty-printer*): Simplify. (make-objfile-pp_s-printer): New function. (install-objfile-pretty-printers!): New function. (make-progspace-pp_s-printer): New function. (install-progspace-pretty-printers!): New function. * gdb.guile/scm-progspace.c: New file. * gdb.guile/scm-progspace.exp: New file.
2014-06-03Support fusion for ELFv2 stubsAlan Modra2-2/+34
Power8 fuses addis,addi and addis,ld sequences when the target of the addis is the same as the addi/ld. Thus addis r12,r2,xxx@ha addi r12,r12,xxx@l / ld r12,xxx@l(r12) is faster than addis r11,r2,xxx@ha addi r12,r11,xxx@l / ld r12,xxx@l(r11) So use the form that allows fusion in plt call and branch stubs. bfd/ * elf64-ppc.c (ADDIS_R12_R2): Define. (build_plt_stub): Support fusion on ELFv2 stub. (ppc_build_one_stub): Likewise for plt branch stubs. gold/ * powerpc.cc (addis_12_2): Define. (Stub_table::do_write): Support fusion on ELFv2 stubs. ld/testsuite/ * ld-powerpc/elfv2exe.d: Update for changed plt call stubs. gdb/ * ppc64-tdep.c (ppc64_standard_linkage8): New. (ppc64_skip_trampoline_code): Recognise ELFv2 stub supporting fusion.
2014-06-02Add support for skeletonless type units.Doug Evans2-129/+300
* dwarf2read.c (struct dwarf2_per_objfile): New member n_allocated_type_units. (struct dwarf2_per_objfile) <tu_stats>: New member nr_all_type_units_reallocs. (create_signatured_type_table_from_index): Initialize n_allocated_type_units (create_all_type_units): Ditto. (add_type_unit): Move up in file. New arg slot. All callers updated. Increase space for all_type_units more efficiently. (fill_in_sig_entry_from_dwo_entry): Handle psymtabs. (lookup_dwo_signatured_type): Handle skeletonless TUs. (lookup_dwp_signatured_type): Ditto. (init_tu_and_read_dwo_dies): New arg use_existing_cu. All callers updated. (build_type_psymtabs_1): Leave type_unit_groups as NULL if no TUs present. (print_tu_stats): New function. (process_skeletonless_type_unit): New function. (process_dwo_file_for_skeletonless_type_units): New function. (process_skeletonless_type_units): New function. (dwarf2_build_psymtabs_hard): Handle skeletonless TUs. Call print tu_stats if debugging enabled.
2014-06-02Installing a breakpoint on top of a dprintf makes GDB lose control.Pedro Alves5-4/+120
While the full fix for PR 15180 isn't in, it's best if we at least make sure that GDB doesn't lose control when a breakpoint is set at the same address as a dprintf. gdb/ 2014-06-02 Pedro Alves <palves@redhat.com> * breakpoint.c (build_target_command_list): Don't build a command list if we have any duplicate location that isn't a dprintf. gdb/testsuite/ 2014-06-02 Pedro Alves <palves@redhat.com> * gdb.base/dprintf-bp-same-addr.c: New file. * gdb.base/dprintf-bp-same-addr.exp: New file.
2014-06-02dprintf-style agent can't explain a trap.Pedro Alves2-0/+24
If some event happens to trigger at the same address as a dprintf-style agent dprintf is installed, GDB will complain, like: (gdb) continue Continuing. May only run agent-printf on the target (gdb) Such dprintfs are completely handled on the target side, so they can't explain a stop, but GDB is currently putting then on the bpstat chain anyway, because they currently unconditionally use bkpt_breakpoint_hit as breakpoint_hit method. gdb/ 2014-06-02 Pedro Alves <palves@redhat.com> * breakpoint.c (dprintf_breakpoint_hit): New function. (initialize_breakpoint_ops): Install it as dprintf's breakpoint_hit method.
2014-06-02gdbserver: on GDB breakpoint reinsertion, also delete the breakpoint's commands.Pedro Alves6-9/+66
If GDB decides to change the breakpoint's conditions or commands, it'll reinsert the same breakpoint again, with the new options attached, without deleting the previous breakpoint. E.g., (gdb) set breakpoint always-inserted on (gdb) b main if 0 Breakpoint 1 at 0x400594: file foo.c, line 21. Sending packet: $Z0,400594,1;X3,220027#68...Packet received: OK (gdb) b main Breakpoint 15 at 0x400594: file foo.c, line 21. Sending packet: $Z0,400594,1#49...Packet received: OK GDBserver understands this and deletes the breakpoint's previous conditions. But, it forgets to delete the previous commands. gdb/gdbserver/ 2014-06-02 Pedro Alves <palves@redhat.com> * ax.c (gdb_free_agent_expr): New function. * ax.h (gdb_free_agent_expr): New declaration. * mem-break.c (delete_gdb_breakpoint_1): Also clear the commands list. (clear_breakpoint_conditions, clear_breakpoint_commands): Make static. (clear_breakpoint_conditions_and_commands): New function. * mem-break.h (clear_breakpoint_conditions): Delete declaration. (clear_breakpoint_conditions_and_commands): New declaration.
2014-06-02gdb/testsuite/Edjunior Barbosa Machado3-0/+275
2014-06-02 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com> * gdb.arch/powerpc-power.exp: Add power8 instructions to the testcase. * gdb.arch/powerpc-power.s: Likewise.
2014-06-02Unnecessary restore of timeout global at end of gdb.base/completion.expJoel Brobecker2-4/+4
This patch removes some code in gdb.base/compilation.exp which is aimed at restoring the original timeout global value after having changed it for this testcase. Restoring the timeout global is not necessary as this is taken care of by gdb_init, which is called at the start of each testing. gdb/testsuite/ChangeLog: * gdb.base/completion.exp: Remove code aimed at restoring TIMEOUT.
2014-06-02simplify substitute_path_rule_matches using filename_ncmpJoel Brobecker2-9/+7
At the time this function was written, there was no filename_ncmp, only FILENAME_CMP. So, in order to do an n-cmp, we had to make a local copy of the first n characters of our string and use that to perform the comparison. This patch simplifies the function's implementation, now that we have filename_ncmp. gdb/ChangeLog: * source.c (substitute_path_rule_matches): Simplify using filename_ncmp instead of FILENAME_CMP. Tested on x86_64-linux.
2014-06-02Remove some trailing spaces in source.cJoel Brobecker2-1/+5
gdb/ChangeLog: * source.c (substitute_path_rule_matches): Remove trailing spaces.
2014-06-01guile: Allow compilation with Guile <= 2.0.5.Ludovic Courtès5-0/+50
gdb/ 2014-06-01 Ludovic Courtès <ludo@gnu.org> * configure.ac: When Guile is available, check for the availability of 'scm_new_smob'. * configure, config.h.in: Regenerate. * guile/guile-internal.h (scm_new_smob) [!HAVE_SCM_NEW_SMOB]: New function.
2014-06-01Skip test 'watch -location nullptr->p->x' if null pointer can be dereferencedYao Qi2-2/+18
gdb.base/watchpoint.exp has a test below which expects to see "Cannot access memory at address 0x0" when a null pointer is dereferenced. gdb_test "watch -location nullptr->p->x" \ "Cannot access memory at address 0x0" This assumption is not true when the target is no-mmu, so we get watch -location nullptr->p->x Hardware watchpoint 28: -location nullptr->p->x (gdb) FAIL: gdb.base/watchpoint.exp: watch -location nullptr->p->x This patch is to check whether null pointer can be dereferenced first and then do the test. gdb/testsuite: 2014-06-01 Yao Qi <yao@codesourcery.com> * gdb.base/watchpoint.exp (test_watch_location): Check null pointer can be dereferenced. If not, do the test, otherwise skip it.
2014-05-30Add a TRY_CATCH to get_prev_frame_always to better manage errors during unwind.Andrew Burgess12-90/+141
https://sourceware.org/ml/gdb-patches/2014-05/msg00737.html Currently a MEMORY_ERROR raised during unwinding a frame will cause the unwind to stop with an error message, for example: (gdb) bt #0 breakpt () at amd64-invalid-stack-middle.c:27 #1 0x00000000004008f0 in func5 () at amd64-invalid-stack-middle.c:32 #2 0x0000000000400900 in func4 () at amd64-invalid-stack-middle.c:38 #3 0x0000000000400910 in func3 () at amd64-invalid-stack-middle.c:44 #4 0x0000000000400928 in func2 () at amd64-invalid-stack-middle.c:50 Cannot access memory at address 0x2aaaaaab0000 However, frame #4 is marked as being the end of the stack unwind, so a subsequent request for the backtrace looses the error message, such as: (gdb) bt #0 breakpt () at amd64-invalid-stack-middle.c:27 #1 0x00000000004008f0 in func5 () at amd64-invalid-stack-middle.c:32 #2 0x0000000000400900 in func4 () at amd64-invalid-stack-middle.c:38 #3 0x0000000000400910 in func3 () at amd64-invalid-stack-middle.c:44 #4 0x0000000000400928 in func2 () at amd64-invalid-stack-middle.c:50 When fetching the backtrace, or requesting the stack depth using the MI interface the situation is even worse, the first time a request is made we encounter the memory error and so the MI returns an error instead of the correct result, for example: (gdb) -stack-info-depth ^error,msg="Cannot access memory at address 0x2aaaaaab0000" Or, (gdb) -stack-list-frames ^error,msg="Cannot access memory at address 0x2aaaaaab0000" However, once one of these commands has been used gdb has, internally, walked the stack and figured that out that frame #4 is the bottom of the stack, so the second time an MI command is tried you'll get the "expected" result: (gdb) -stack-info-depth ^done,depth="5" Or, (gdb) -stack-list-frames ^done,stack=[frame={level="0", .. snip lots .. }] After this patch the MEMORY_ERROR encountered during the frame unwind is attached to frame #4 as the stop reason, and is displayed in the CLI each time the backtrace is requested. In the MI, catching the error means that the "expected" result is returned the first time the MI command is issued. So, from the CLI the results of the backtrace will be: (gdb) bt #0 breakpt () at amd64-invalid-stack-middle.c:27 #1 0x00000000004008f0 in func5 () at amd64-invalid-stack-middle.c:32 #2 0x0000000000400900 in func4 () at amd64-invalid-stack-middle.c:38 #3 0x0000000000400910 in func3 () at amd64-invalid-stack-middle.c:44 #4 0x0000000000400928 in func2 () at amd64-invalid-stack-middle.c:50 Backtrace stopped: Cannot access memory at address 0x2aaaaaab0000 Each and every time that the backtrace is requested, while the MI output will similarly be consistently: (gdb) -stack-info-depth ^done,depth="5" Or, (gdb) -stack-list-frames ^done,stack=[frame={level="0", .. snip lots .. }] gdb/ChangeLog: * frame.c (struct frame_info): Add stop_string field. (get_prev_frame_always_1): Renamed from get_prev_frame_always. (get_prev_frame_always): Old content moved into get_prev_frame_always_1. Call get_prev_frame_always_1 inside TRY_CATCH, handle MEMORY_ERROR exceptions. (frame_stop_reason_string): New function definition. * frame.h (unwind_stop_reason_to_string): Extend comment to mention frame_stop_reason_string. (frame_stop_reason_string): New function declaration. * stack.c (frame_info): Switch to frame_stop_reason_string. (backtrace_command_1): Switch to frame_stop_reason_string. * unwind_stop_reason.def: Add UNWIND_MEMORY_ERROR. (LAST_ENTRY): Changed to UNWIND_MEMORY_ERROR. * guile/lib/gdb.scm: Add FRAME_UNWIND_MEMORY_ERROR to export list. gdb/doc/ChangeLog: * guile.texi (Frames In Guile): Mention FRAME_UNWIND_MEMORY_ERROR. * python.texi (Frames In Python): Mention gdb.FRAME_UNWIND_MEMORY_ERROR. gdb/testsuite/ChangeLog: * gdb.arch/amd64-invalid-stack-middle.exp: Update expected results. * gdb.arch/amd64-invalid-stack-top.exp: Likewise.
2014-05-30Rename frame_stop_reason_string to unwind_stop_reason_to_string.Andrew Burgess6-6/+17
https://sourceware.org/ml/gdb-patches/2014-05/msg00721.html This function is confusingly named, the "frame_" in the name implies it somehow is frame dependent, when in reality the function just converts an 'enum unwind_stop_reason' value to a string. gdb/ChangeLog: * frame.c (frame_stop_reason_string): Rename to ... (unwind_stop_reason_to_string): this. * frame.h (frame_stop_reason_string): Rename to ... (unwind_stop_reason_to_string): this. * stack.c (frame_info): Update call to frame_stop_reason_string. (backtrace_command_1): Likewise. * guile/scm-frame.c (gdbscm_unwind_stop_reason_string): Likewise. * python/py-frame.c (gdbpy_frame_stop_reason_string): Likewise.
2014-05-30Remove previous frame if an error occurs when computing frame id during unwind.Andrew Burgess8-14/+1843
https://sourceware.org/ml/gdb-patches/2014-05/msg00712.html If an error is thrown during computing a frame id then the frame is left in existence but without a valid frame id, this will trigger internal errors if/when the frame is later visited (for example in a backtrace). This patch catches errors raised while computing the frame id, and arranges for the new frame, the one without a frame id, to be removed from the linked list of frames. gdb/ChangeLog: * frame.c (remove_prev_frame): New function. (get_prev_frame_if_no_cycle): Create / discard cleanup using remove_prev_frame. gdb/testsuite/ChangeLog: * gdb.arch/amd64-invalid-stack-middle.S: New file. * gdb.arch/amd64-invalid-stack-middle.c: New file. * gdb.arch/amd64-invalid-stack-middle.exp: New file. * gdb.arch/amd64-invalid-stack-top.c: New file. * gdb.arch/amd64-invalid-stack-top.exp: New file.
2014-05-30PR breakpoints/17000: user breakpoint not inserted if software-single-step ↵Pedro Alves3-0/+88
at same location - test GDB gets confused when removing a software single-step breakpoint that is at the same address as another breakpoint. Add a kfailed test. gdb/testsuite/ 2014-05-30 Pedro Alves <palves@redhat.com> PR breakpoints/17000 * gdb.base/sss-bp-on-user-bp.c: New file. * gdb.base/sss-bp-on-user-bp.exp: New file.
2014-05-30Use attribute to specify the required inlining semanticsDavid Blaikie3-4/+9
As suggested by Andrew Pinski. gdb/testsuite/ * gdb.opt/inline-break.c: Fix clang compatibility by specifying gnu_inline semantics via attribute. * gdb.opt/inline-break.exp: Remove -std=c89 now that the test source explicitly specifies the required semantics.
2014-05-30gdb.reverse/sigall-reverse.exp: Typo fixMaciej W. Rozycki2-1/+5
* gdb.reverse/sigall-reverse.exp: Fix a typo.
2014-05-29Running the current tree against my software-single-step-on-x86_64Pedro Alves2-7/+21
branch showed some extra assertions I have in place triggering. Turns out my previous change to 'resume' was incomplete, and we mishandle the 'hw_step' / 'step' variable pair. (I swear I had fixed this, but I guess I lost that in some local branch...) Tested on x86_64 Fedora 20. gdb/ 2014-05-29 Pedro Alves <palves@redhat.com> * infrun.c (resume): Rename local 'hw_step' to 'entry_step' and make it const. When a single-step decays to a continue, clear 'step', not 'hw_step'. Pass whether the caller wanted to step to user_visible_resume_ptid, not what we ask the target to do.
2014-05-29infrun.c: simplify "end stepping range" code a bit.Pedro Alves2-53/+27
- all end_stepping_range callers also set stop_step. - all places that set stop_step call end_stepping_range and stop_waiting too. IOW, all places where we handle "end stepping range" do: ecs->event_thread->control.stop_step = 1; end_stepping_range (); stop_waiting (ecs); Factor that out into end_stepping_range itself. Tested on x86_64 Fedora 20. gdb/ 2014-05-29 Pedro Alves <palves@redhat.com> * infrun.c (process_event_stop_test, handle_step_into_function) (handle_step_into_function_backward): Adjust. Don't set the even thread's stop_step and call stop_waiting before calling end_stepping_range. Instead do that ... (end_stepping_range): ... here. Take an ecs pointer parameter.
2014-05-29infrun.c: stop_stepping -> stop_waiting.Pedro Alves2-32/+41
stop_stepping is called even when we weren't stepping. It's job really is: static void stop_waiting (struct execution_control_state *ecs) { ... /* Let callers know we don't want to wait for the inferior anymore. */ ecs->wait_some_more = 0; } So rename it for clarity. gdb/ 2014-05-29 Pedro Alves <palves@redhat.com> * infrun.c (stop_stepping): Rename to ... (stop_waiting): ... this. (proceed): Update comment. (process_event_stop_test, handle_inferior_event) (handle_signal_stop, handle_step_into_function) (handle_step_into_function_backward): Update.
2014-05-29unbreak infcallsPedro Alves2-1/+6
I managed to miss an interaction between the recent *running patch, and target-async, which resulted in infcalls being completely broken on GNU/Linux and remote targets (that is, the async-capable targets). Temporary breakpoint 1, main () at threads.c:35 35 long i = 0; (gdb) p malloc (0) The program being debugged stopped while in a function called from GDB. Evaluation of the expression containing the function (malloc) will be abandoned. When the function is done executing, GDB will silently stop. (gdb) p malloc (0) Program received signal SIGSEGV, Segmentation fault. 0x000000000058d7e8 in get_regcache_aspace (regcache=0x0) at ../../src/gdb/regcache.c:281 281 return regcache->aspace; (top-gdb) The issue is that when running an infcall, the thread is no longer marked as running, so run_inferior_call is not calling wait_for_inferior anymore. Fix this by doing what the comment actually says we do: "Do here what `proceed' itself does in sync mode." And proceed doesn't check whether the target is running. I notice this is broken in case of the early return in proceed, but we were broken before in that case anyway, because run_inferior_call will think the call actually ran. Seems like we should make proceed have a boolean return, and go through all callers making use of it, if necessary. But for now, just fix the regression. Tested on x86_64 Fedora 20. gdb/ 2014-05-29 Pedro Alves <palves@redhat.com> * infcall.c (run_inferior_call): Don't check whether the current thread is running after the proceed call.
2014-05-29enable target async by default; separate MI and target notions of asyncPedro Alves36-109/+296
This finally makes background execution commands possible by default. However, in order to do that, there's one last thing we need to do -- we need to separate the MI and target notions of "async". Unlike the CLI, where the user explicitly requests foreground vs background execution in the execution command itself (c vs c&), MI chose to treat "set target-async" specially -- setting it changes the default behavior of execution commands. So, we can't simply "set target-async" default to on, as that would affect MI frontends. Instead we have to make the setting MI-specific, and teach MI about sync commands on top of an async target. Because the "target" word in "set target-async" ends up as a potential source of confusion, the patch adds a "set mi-async" option, and makes "set target-async" a deprecated alias. Rather than make the targets always async, this patch introduces a new "maint set target-async" option so that the GDB developer can control whether the target is async. This makes it simpler to debug issues arising only in the synchronous mode; important because sync mode seems unlikely to go away. Unlike in previous revisions, "set target-async" does not affect this new maint parameter. The rationale for this is that then one can easily run the test suite in the "maint set target-async off" mode and have tests that enable mi-async fail just like they fail on non-async-capable targets. This emulation is exactly the point of the maint option. I had asked Tom in a previous iteration to split the actual change of the target async default to a separate patch, but it turns out that that is quite awkward in this version of the patch, because with MI async and target async decoupled (unlike in previous versions), if we don't flip the default at the same time, then just "set target-async on" alone never actually manages to do anything. It's best to not have that transitory state in the tree. Given "set target-async on" now only has effect for MI, the patch goes through the testsuite removing it from non-MI tests. MI tests are adjusted to use the new and less confusing "mi-async" spelling. 2014-05-29 Pedro Alves <palves@redhat.com> Tom Tromey <tromey@redhat.com> * NEWS: Mention "maint set target-async", "set mi-async", and that background execution commands are now always available. * target.h (target_async_permitted): Update comment. * target.c (target_async_permitted, target_async_permitted_1): Default to 1. (set_target_async_command): Rename to ... (maint_set_target_async_command): ... this. (show_target_async_command): Rename to ... (maint_show_target_async_command): ... this. (_initialize_target): Adjust. * infcmd.c (prepare_execution_command): Make extern. * inferior.h (prepare_execution_command): Declare. * infrun.c (set_observer_mode): Leave target async alone. * mi/mi-interp.c (mi_interpreter_init): Install mi_on_sync_execution_done as sync_execution_done observer. (mi_on_sync_execution_done): New function. (mi_execute_command_input_handler): Don't print the prompt if we just started a synchronous command with an async target. (mi_on_resume): Check sync_execution before printing prompt. * mi/mi-main.h (mi_async_p): Declare. * mi/mi-main.c: Include gdbcmd.h. (mi_async_p): New function. (mi_async, mi_async_1): New globals. (set_mi_async_command, show_mi_async_command, mi_async): New functions. (exec_continue): Call prepare_execution_command. (run_one_inferior, mi_cmd_exec_run, mi_cmd_list_target_features) (mi_execute_async_cli_command): Use mi_async_p. (_initialize_mi_main): Install "set mi-async". Make "target-async" a deprecated alias. 2014-05-29 Pedro Alves <palves@redhat.com> Tom Tromey <tromey@redhat.com> * gdb.texinfo (Non-Stop Mode): Remove "set target-async 1" from example. (Asynchronous and non-stop modes): Document '-gdb-set mi-async'. Mention that target-async is now deprecated. (Maintenance Commands): Document maint set/show target-async. 2014-05-29 Pedro Alves <palves@redhat.com> Tom Tromey <tromey@redhat.com> * gdb.base/async-shell.exp: Don't enable target-async. * gdb.base/async.exp * gdb.base/corefile.exp (corefile_test_attach): Remove 'async' parameter. Adjust. (top level): Don't test with "target-async". * gdb.base/dprintf-non-stop.exp: Don't enable target-async. * gdb.base/gdb-sigterm.exp: Don't test with "target-async". * gdb.base/inferior-died.exp: Don't enable target-async. * gdb.base/interrupt-noterm.exp: Likewise. * gdb.mi/mi-async.exp: Use "mi-async" instead of "target-async". * gdb.mi/mi-nonstop-exit.exp: Likewise. * gdb.mi/mi-nonstop.exp: Likewise. * gdb.mi/mi-ns-stale-regcache.exp: Likewise. * gdb.mi/mi-nsintrall.exp: Likewise. * gdb.mi/mi-nsmoribund.exp: Likewise. * gdb.mi/mi-nsthrexec.exp: Likewise. * gdb.mi/mi-watch-nonstop.exp: Likewise. * gdb.multi/watchpoint-multi.exp: Adjust comment. * gdb.python/py-evsignal.exp: Don't enable target-async. * gdb.python/py-evthreads.exp: Likewise. * gdb.python/py-prompt.exp: Likewise. * gdb.reverse/break-precsave.exp: Don't test with "target-async". * gdb.server/solib-list.exp: Don't enable target-async. * gdb.threads/thread-specific-bp.exp: Likewise. * lib/mi-support.exp: Adjust to use mi-async.
2014-05-29Make display_gdb_prompt CLI-only.Pedro Alves12-73/+92
Enabling target-async by default will require implementing sync execution on top of an async target, much like foreground command are implemented on the CLI in async mode. In order to do that, we will need better control of when to print the MI prompt. Currently the interp->display_prompt_p hook is all we have, and MI just always returns false, meaning, make display_gdb_prompt a no-op. We'll need to be able to know to print the MI prompt in some of the conditions that display_gdb_prompt is called from the core, but not all. This is all a litte twisted currently. As we can see, display_gdb_prompt is really CLI specific, so make the console interpreters (console/tui) themselves call it. To be able to do that, and add a few different observers that the interpreters can use to distinguish when or why the the prompt is being printed: #1 - one called whenever a command is cancelled due to an error. #2 - another for when a foreground command just finished. In both cases, CLI wants to print the prompt, while MI doesn't. MI will want to print the prompt in the second case when in a special MI mode. The display_gdb_prompt call in interp_set made me pause. The comment there reads: /* Finally, put up the new prompt to show that we are indeed here. Also, display_gdb_prompt for the console does some readline magic which is needed for the console interpreter, at least... */ But, that looks very much like a no-op to me currently: - the MI interpreter always return false in the prompt hook, meaning actually display no prompt. - the interpreter used at that point is still quiet. And the console/tui interpreters return false in the prompt hook if they're quiet, meaning actually display no prompt. The only remaining possible use would then be the readline magic. But whatever that might have been, it's not reacheable today either, because display_gdb_prompt returns early, before touching readline if the interpreter returns false in the display_prompt_p hook. Tested on x86_64 Fedora 20, sync and async modes. gdb/ 2014-05-29 Pedro Alves <palves@redhat.com> * cli/cli-interp.c (cli_interpreter_display_prompt_p): Delete. (_initialize_cli_interp): Adjust. * event-loop.c: Include "observer.h". (start_event_loop): Notify 'command_error' observers instead of calling display_gdb_prompt. Remove FIXME comment. * event-top.c (display_gdb_prompt): Remove call into the interpreters. * inf-loop.c: Include "observer.h". (inferior_event_handler): Notify 'command_error' observers instead of calling display_gdb_prompt. * infrun.c (fetch_inferior_event): Notify 'sync_execution_done' observers instead of calling display_gdb_prompt. * interps.c (interp_set): Don't call display_gdb_prompt. (current_interp_display_prompt_p): Delete. * interps.h (interp_prompt_p): Delete declaration. (interp_prompt_p_ftype): Delete. (struct interp_procs) <prompt_proc_p>: Delete field. (current_interp_display_prompt_p): Delete declaration. * mi-interp.c (mi_interpreter_prompt_p): Delete. (_initialize_mi_interp): Adjust. * tui-interp.c (tui_init): Install 'sync_execution_done' and 'command_error' observers. (tui_on_sync_execution_done, tui_on_command_error): New functions. (tui_display_prompt_p): Delete. (_initialize_tui_interp): Adjust. gdb/doc/ 2014-05-29 Pedro Alves <palves@redhat.com> * observer.texi (sync_execution_done, command_error): New subjects.
2014-05-29PR gdb/13860 - Make MI sync vs async output (closer to) the same.Pedro Alves11-103/+408
Ignoring expected and desired differences like whether the prompt is output after *stoppped records, GDB MI output is still different in sync and async modes. In sync mode, when a CLI execution command is entered, the "reason" field is missing in the *stopped async record. And in async mode, for some events, like program exits, the corresponding CLI output is missing in the CLI channel. Vis, diff between sync vs async modes: run ^running *running,thread-id="1" (gdb) ... - ~"[Inferior 1 (process 15882) exited normally]\n" =thread-exited,id="1",group-id="i1" =thread-group-exited,id="i1",exit-code="0" - *stopped + *stopped,reason="exited-normally" si ... (gdb) ~"0x000000000045e033\t29\t memset (&args, 0, sizeof args);\n" - *stopped,frame=...,thread-id="1",stopped-threads="all",core="0" + *stopped,reason="end-stepping-range",frame=...,thread-id="1",stopped-threads="all",core="0" (gdb) In addition, in both cases, when a MI execution command is entered, and a breakpoint triggers, the event is sent to the console too. But some events like program exits have the CLI output missing in the CLI channel: -exec-run ^running *running,thread-id="1" (gdb) ... =thread-exited,id="1",group-id="i1" =thread-group-exited,id="i1",exit-code="0" - *stopped + *stopped,reason="exited-normally" We'll want to make background commands always possible by default. IOW, make target-async be the default. But, in order to do that, we'll need to emulate MI sync on top of an async target. That means we'll have yet another combination to care for in the testsuite. Rather than making the testsuite cope with all these differences, I thought it better to just fix GDB to always have the complete output, no matter whether it's in sync or async mode. This is all related to interpreter-exec, and the corresponding uiout switching. (Typing a CLI command directly in MI is shorthand for running it through -interpreter-exec console.) In sync mode, when a CLI command is active, normal_stop is called when the current interpreter and uiout are CLI's. So print_XXX_reason prints the stop reason to CLI uiout (only), and we don't show it in MI. In async mode the stop event is processed when we're back in the MI interpreter, so the stop reason is printed directly to the MI uiout. Fix this by making run control event printing roughly independent of whatever is the current interpreter or uiout. That is, move these prints to interpreter observers, that know whether to print or be quiet, and if printing, which uiout to print to. In the case of the console/tui interpreters, only print if the top interpreter. For MI, always print. Breakpoint hits / normal stops are already handled similarly -- MI has a normal_stop observer that prints the event to both MI and the CLI, though that could be cleaned up further in the direction of this patch. This also makes all of: (gdb) foo and (gdb) interpreter-exec MI "-exec-foo" and (gdb) -exec-foo and (gdb) -interpreter-exec console "foo" print as expected. Tested on x86_64 Fedora 20, sync and async modes. gdb/ 2014-05-29 Pedro Alves <palves@redhat.com> PR gdb/13860 * cli/cli-interp.c: Include infrun.h and observer.h. (cli_uiout, cli_interp): New globals. (cli_on_signal_received, cli_on_end_stepping_range) (cli_on_signal_exited, cli_on_exited, cli_on_no_history): New functions. (cli_interpreter_init): Install them as 'end_stepping_range', 'signal_received' 'signal_exited', 'exited' and 'no_history' observers. (_initialize_cli_interp): Remove cli_interp local. * infrun.c (handle_inferior_event): Call the several stop reason observers instead of printing the stop reason directly. (end_stepping_range): New function. (print_end_stepping_range_reason, print_signal_exited_reason) (print_exited_reason, print_signal_received_reason) (print_no_history_reason): Make static, and add an uiout parameter. Print to that instead of to CURRENT_UIOUT. * infrun.h (print_end_stepping_range_reason) (print_signal_exited_reason, print_exited_reason) (print_signal_received_reason print_no_history_reason): New declarations. * mi/mi-common.h (struct mi_interp): Rename 'uiout' field to 'mi_uiout'. <cli_uiout>: New field. * mi/mi-interp.c (mi_interpreter_init): Adjust. Create the new uiout for CLI output. Install 'signal_received', 'end_stepping_range', 'signal_exited', 'exited' and 'no_history' observers. (find_mi_interpreter, mi_interp_data, mi_on_signal_received) (mi_on_end_stepping_range, mi_on_signal_exited, mi_on_exited) (mi_on_no_history): New functions. (ui_out_free_cleanup): Delete function. (mi_on_normal_stop): Don't allocate a new uiout for CLI output, instead use the one already stored in the MI interpreter data. (mi_ui_out): Adjust. * tui/tui-interp.c: Include infrun.h and observer.h. (tui_interp): New global. (tui_on_signal_received, tui_on_end_stepping_range) (tui_on_signal_exited, tui_on_exited) (tui_on_no_history): New functions. (tui_init): Install them as 'end_stepping_range', 'signal_received' 'signal_exited', 'exited' and 'no_history' observers. (_initialize_tui_interp): Delete tui_interp local. gdb/doc/ 2014-05-29 Pedro Alves <palves@redhat.com> PR gdb/13860 * observer.texi (signal_received, end_stepping_range) (signal_exited, exited, no_history): New observer subjects. gdb/testsuite/ 2014-05-29 Pedro Alves <palves@redhat.com> PR gdb/13860 * gdb.mi/mi-cli.exp: Always expect "end-stepping-range" stop reason, even in sync mode.
2014-05-29PR gdb/15713 - errors from i386_linux_resume lead to lock-upPedro Alves2-23/+35
linux_nat_resume is not considering that linux_ops->to_resume may throw: /* Mark LWP as not stopped to prevent it from being continued by linux_nat_resume_callback. */ lp->stopped = 0; if (resume_many) iterate_over_lwps (ptid, linux_nat_resume_callback, NULL); If something within linux_nat_resume_callback throws, GDB leaves the lwp_info as if the inferior was resumed, while it actually wasn't. A couple examples, there are possibly others: - i386_linux_resume calls target_read which calls QUIT. - if the actual ptrace resumption fails in inf_ptrace_resume, perror_with_name is called. If the user tries to kill the inferior at this point (or quit, which offers to kill), GDB locks up trying to stop the lwp -- if it is already stopped no new waitpid event gets generated for it. Fix this by setting the stopped flag earlier, as soon as we collect a stop event with waitpid, and clearing it always only after resuming the lwp successfully. Tested on x86_64 Fedora 20. Confirmed the lock-up disappears using a local hack that forces an error in inf_ptrace_resume. Also fixes a little "set debug lin-lwp" annoyance. Currently we always see: Continuing. LLR: Preparing to resume process 6802, 0, inferior_ptid Thread 0x7ffff7fc7740 (LWP 6802) ^^^^^^^^ RC: Resuming sibling Thread 0x7ffff77c5700 (LWP 6807), 0, resume RC: Resuming sibling Thread 0x7ffff7fc6700 (LWP 6806), 0, resume RC: Not resuming sibling Thread 0x7ffff7fc7740 (LWP 6802) (not stopped) ^^^^^^^^^^^^^^^^^^^^^^^ LLR: PTRACE_CONT process 6802, 0 (resume event thread) This patch gets rid of the "Not resuming sibling" line. 2014-05-29 Pedro Alves <palves@redhat.com> PR gdb/15713 * linux-nat.c (linux_nat_resume_callback): Rename the second parameter to 'except'. Skip LP if it points to EXCEPT. (linux_nat_resume): Don't mark the event lwp as not stopped before resuming sibling lwps. Instead ask linux_nat_resume_callback to skip the event lwp. Mark it as not stopped after actually resuming it. (linux_handle_syscall_trap): Mark the lwp as not stopped after resuming it. (wait_lwp): Mark the lwp as stopped here. (stop_wait_callback): Mark the lwp as not stopped right after resuming it. Don't mark lwps as stopped here. (linux_nat_filter_event): Mark the lwp as stopped earlier. (linux_nat_wait_1): Don't mark dead lwps as stopped here.
2014-05-29PR15693 - Fix spurious *running events, thread state, dprintf-style callPedro Alves8-12/+291
If one sets a breakpoint with a condition that involves calling a function in the inferior, and then the condition evaluates false, GDB outputs one *running event for each time the program hits the breakpoint. E.g., $ gdb return-false -i=mi (gdb) start ... (gdb) b 14 if return_false () &"b 14 if return_false ()\n" ~"Breakpoint 2 at 0x4004eb: file return-false.c, line 14.\n" ... ^done (gdb) c &"c\n" ~"Continuing.\n" ^running *running,thread-id=(...) (gdb) *running,thread-id=(...) *running,thread-id=(...) *running,thread-id=(...) *running,thread-id=(...) *running,thread-id=(...) ... repeat forever ... An easy way a user can trip on this is with a dprintf with "set dprintf-style call". In that case, a dprintf is just a breakpoint that when hit GDB calls the printf function in the inferior, and then resumes it, just like the case above. If the breakpoint/dprintf is set in a loop, then these spurious events can potentially slow down a frontend much, if it decides to refresh its GUI whenever it sees this event (Eclipse is one such case). When we run an infcall, we pretend we don't actually run the inferior. This is already handled for the usual case of calling a function directly from the CLI: (gdb) p return_false () &"p return_false ()\n" ~"$1 = 0" ~"\n" ^done (gdb) Note no *running, nor *stopped events. That's handled by: static void mi_on_resume (ptid_t ptid) { ... /* Suppress output while calling an inferior function. */ if (tp->control.in_infcall) return; and equivalent code on normal_stop. However, in the cases of the PR, after finishing the infcall there's one more resume, and mi_on_resume doesn't know that it should suppress output then too, somehow. The "running/stopped" state is a high level user/frontend state. Internal stops are invisible to the frontend. If follows from that that we should be setting the thread to running at a higher level where we still know the set of threads the user _intends_ to resume. Currently we mark a thread as running from within target_resume, a low level target operation. As consequence, today, if we resume a multi-threaded program while stopped at a breakpoint, we see this: -exec-continue ^running *running,thread-id="1" (gdb) *running,thread-id="all" The first *running was GDB stepping over the breakpoint, and the second is GDB finally resuming everything. Between those two *running's, threads other than "1" still have their state set to stopped. That's bogus -- in async mode, this opens a tiny window between both resumes where the user might try to run another execution command to threads other than thread 1, and very much confuse GDB. That is, the "step" below should fail the "step", complaining that the thread is running: (gdb) c -a & (gdb) thread 2 (gdb) step IOW, threads that GDB happens to not resume immediately (say, because it needs to step over a breakpoint) shall still be marked as running. Then, if we move marking threads as running to a higher layer, decoupled from target_resume, plus skip marking threads as running when running an infcall, the spurious *running events disappear, because there will be no state transitions at all. I think we might end up adding a new thread state -- THREAD_INFCALL or some such, however since infcalls are always synchronous today, I didn't find a need. There's no way to execute a CLI/MI command directly from the prompt if some thread is running an infcall. Tested on x86_64 Fedora 20. gdb/ 2014-05-29 Pedro Alves <palves@redhat.com> PR PR15693 * infrun.c (resume): Determine how much to resume depending on whether the caller wanted a step, not whether we can hardware step the target. Mark all threads that we intend to run as running, unless we're calling an inferior function. (normal_stop): If the thread is running an infcall, don't finish thread state. * target.c (target_resume): Don't mark threads as running here. gdb/testsuite/ 2014-05-29 Pedro Alves <palves@redhat.com> Hui Zhu <hui@codesourcery.com> PR PR15693 * gdb.mi/mi-condbreak-call-thr-state-mt.c: New file. * gdb.mi/mi-condbreak-call-thr-state-st.c: New file. * gdb.mi/mi-condbreak-call-thr-state.c: New file. * gdb.mi/mi-condbreak-call-thr-state.exp: New file.
2014-05-28Remove "set/show remotebaud" (deprecated) commands.Joel Brobecker5-29/+16
This patch removes support for the "set/show remotebaud" command, which were deprecated in GDB 7.7, and should be now be removed ahead of cutting the GDB 7.8 branch. gdb/ChangeLog: * serial.c (_initialize_serial): Remove support for the "set remotebaud" and "show remotebaud" commands. * NEWS: Add entry documenting the removal of that command. gdb/testsuite/ChangeLog: * config/monitor.exp (gdb_target_monitor): Replace use of "set remotebaud" by "set serial baud".
2014-05-28Fix typo in commentsYao Qi2-1/+5
"unsed" -> "used" gdb: 2014-05-28 Yao Qi <yao@codesourcery.com> * charset.c: Fix typo in comments.
2014-05-27Prompt the user to file bug reports for internal errors and warnings.Gary Benson2-0/+10
2014-05-27 Gary Benson <gbenson@redhat.com> * utils.c (internal_vproblem): Prompt for a bug report.
2014-05-26remove unnecessary smob mark/free functionsAndy Wingo14-204/+21
* guile/scm-arch.c (arscm_mark_arch_smob): * guile/scm-block.c (bkscm_mark_block_smob) (bkscm_mark_block_syms_progress_smob): * guile/scm-breakpoint.c (bpscm_mark_breakpoint_smob): * guile/scm-exception.c (exscm_mark_exception_smob): * guile/scm-frame.c (frscm_mark_frame_smob): * guile/scm-iterator.c (itscm_mark_iterator_smob): * guile/scm-lazy-string.c (lsscm_mark_lazy_string_smob): * guile/scm-objfile.c (ofscm_mark_objfile_smob): * guile/scm-pretty-print.c (ppscm_mark_pretty_printer_smob) (ppscm_mark_pretty_printer_worker_smob): * guile/scm-symbol.c (syscm_mark_symbol_smob): * guile/scm-symtab.c (stscm_mark_symtab_smob, stscm_mark_sal_smob): * guile/scm-type.c (tyscm_mark_type_smob, tyscm_mark_field_smob): * guile/scm-value.c (vlscm_mark_value_smob): Remove unnecessary mark functions. * guile/scm-symtab.c (stscm_free_sal_smob): Remove unnecessary free function.
2014-05-26gdb smob cleanupsAndy Wingo22-344/+102
* guile/guile-internal.h (GDB_SMOB_HEAD): Replace properties with empty_base_class. All uses updated. (gdbscm_mark_gsmob, gdbscm_mark_chained_gsmob) (gdbscm_mark_eqable_gsmob): Remove these now-unneeded functions. Adapt all callers. * guile/scm-gsmob.c (gdbscm_mark_gsmob) (gdbscm_mark_chained_gsmob, gdbscm_mark_eqable_gsmob): Remove. (gdbscm_gsmob_property, gdbscm_set_gsmob_property_x) (gdbscm_gsmob_has_property_p, add_property_name) (gdbscm_gsmob_properties): Remove, and remove them from gsmob_functions. * guile/lib/gdb.scm (gdb-object-property, set-gdb-object-property) (gdb-object-has-property?, gdb-object-properties): Remove. (gdb-object-kind): Renamed from gsmob-kind. doc/ * guile.texi (GDB Scheme Data Types): Remove documentation for removed interfaces. Update spelling of gdb-object-kind. testsuite/ * gdb.guile/scm-breakpoint.exp: * gdb.guile/scm-gsmob.exp: Update to use plain old object properties instead of gdb-object-properties.
2014-05-26guile.texi (Basic Guile): Fix some typos.Andy Wingo2-2/+6
2014-05-26Fix excess parentheses in use-modules forms.Andy Wingo2-5/+10
2014-05-26Add configure support for building with guile 2.2.Andy Wingo3-2/+7
* configure.ac (try_guile_versions): Allow building with guile 2.2. * configure: Regenerate.
2014-05-26fix 80 cols overrun in earlier entryDoug Evans1-1/+1
2014-05-26Specify source file explicitly when setting a breakpointYao Qi2-1/+6
When I run no-thread-db.exp, the breakpoint is set on line 26. However, the breakpoint is set to line 26 of dl-start.S rather than no-thread-db.c, which is not intended. (gdb) monitor set libthread-db-search-path /foo/bar^M libthread-db-search-path set to `/foo/bar'^M (gdb) PASS: gdb.server/no-thread-db.exp: libthread-db is now unresolvable break 26^M Breakpoint 1 at 0x48018078: file ../sysdeps/powerpc/powerpc32/dl-start.S, line 26.^M (gdb) continue^M Continuing. This patch is to change the breakpoint setting with source file specified, then it is correct now. gdb/testsuite: 2014-05-26 Yao Qi <yao@codesourcery.com> * gdb.server/no-thread-db.exp: Specify source file name explicitly when setting a breakpoint.
2014-05-24Don't use @var at the beginning of a sentence in GDB documentation.Eli Zaretskii4-208/+239
gdb/doc/guile.texi (Types In Guile, Basic Guile, Frames In Guile) (Breakpoints In Guile, Guile Printing Module) (Guile Exception Handling, Values From Inferior In Guile) (Objfiles In Guile, Breakpoints In Guile, Memory Ports in Guile): Don't use @var at the beginning of a sentence. gdb/doc/gdb.texinfo (Frame Filter Management, Trace Files) (C Operators, Ada Tasks, Calling, Bootstrapping, ARM) (PowerPC Embedded, Define, Annotations for Running) (IPA Protocol Commands, Packets, General Query Packets) (Tracepoint Packets, Notification Packets, Environment) (Inferiors and Programs, Set Breaks, Set Catchpoints) (Continuing and Stepping, Signals, Thread-Specific Breakpoints) (Frames, Backtrace, Selection, Expressions, Registers) (Trace State Variables, Built-In Func/Proc, Signaling, Files) (Numbers, GDB/MI Async Records, GDB/MI Data Manipulation) (Source Annotations, Using JIT Debug Info Readers, Packets) (Stop Reply Packets, Host I/O Packets) (Target Description Format): Don't use @var at the beginning of a sentence. gdb/doc/python.texi (Basic Python, Types In Python) (Commands In Python, Frames In Python, Line Tables In Python) (Breakpoints In Python, gdb.printing, gdb.types) (Type Printing API): Don't use @var at the beginning of a sentence.
2014-05-23Include asm/ptrace.h for linux-aarch64-low.cRamana Radhakrishnan2-0/+5
A recent change to glibc removed asm/ptrace.h from user.h for AArch64. This meant that cross-native builds of gdbserver using trunk glibc broke because linux-aarch64-low.c because user_hwdebug_state couldn't be found. This is like commit #036cd38182bde32d8297b630cd5c861d53b8949e 2014-05-23 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> * linux-aarch64-low.c (asm/ptrace.h): Include.
2014-05-23btrace, vdso: add vdso target sectionsMarkus Metzger5-0/+110
When loading symbols for the vdso, also add its sections to target_sections. This fixes an issue with record btrace where vdso instructions could not be disassembled during replay. * symfile-mem.c (symbol_file_add_from_memory): Add BFD sections. testsuite/ * gdb.btrace/vdso.c: New. * gdb.btrace/vdso.exp: New.
2014-05-23test, gcore: move capture_command_output into lib/gdb.expMarkus Metzger3-13/+19
Allow gcore's capture_command_output function to be used by other tests. testsuite/ * gdb.base/gcore.exp (capture_command_output): Move ... * lib/gdb.exp (capture_command_output): ... here.
2014-05-23btrace: control memory access during replayMarkus Metzger7-12/+135
The btrace record target does not trace data. We therefore do not allow accessing read-write memory during replay. In some cases, this might be useful to advanced users, though, who we assume to know what they are doing. Add a set|show command pair to turn this memory access restriction off. * record-btrace.c (record_btrace_allow_memory_access): Remove. (replay_memory_access_read_only, replay_memory_access_read_write) (replay_memory_access_types, replay_memory_access) (set_record_btrace_cmdlist, show_record_btrace_cmdlist) (cmd_set_record_btrace, cmd_show_record_btrace) (cmd_show_replay_memory_access): New. (record_btrace_xfer_partial, record_btrace_insert_breakpoint) (record_btrace_remove_breakpoint): Replace record_btrace_allow_memory_access with replay_memory_access. (_initialize_record_btrace): Add commands. * NEWS: Announce it. testsuite/ * gdb.btrace/data.exp: Test it. doc/ * gdb.texinfo (Process Record and Replay): Document it.
2014-05-22Add comment for mi_run_cmd_fullSimon Marchi2-0/+16
It should clear up confusion about the args parameter to mi_run_cmd_full. Thanks to Joel for clear formulation. I also added a comment about the impact of use_gdb_stub. gdb/testsuite/ChangeLog: 2014-05-22 Simon Marchi <simon.marchi@ericsson.com> * lib/mi-support.exp (mi_run_cmd_full): Add comments.
2014-05-22Include asm/ptrace.h in aarch64-linux-nat.cRamana Radhakrishnan2-0/+5
A recent change to glibc removed asm/ptrace.h from user.h for AArch64. This meant that cross-native builds of gdb using trunk glibc broke because aarch64-linux-nat.c because user_hwdebug_state couldn't be found. Fixed by including asm/ptrace.h like other ports. 2014-05-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> * aarch64-linux-nat.c (asm/ptrace.h): Include.
2014-05-22Reinstate self to Write After ApprovalRamana Radhakrishnan2-1/+6
2014-05-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> * MAINTAINERS (Write After Approval): Move self back from paper trail.