aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-09-14Automatic date update in version.inGDB Administrator1-1/+1
2015-09-13Automatic date update in version.inGDB Administrator1-1/+1
2015-09-12Set .plt entry size to 0 in elf32-hppa.cJohn David Anglin2-3/+10
2015-09-12Automatic date update in version.inGDB Administrator1-1/+1
2015-09-11Extended-remote exec documentationDon Breazeal4-0/+67
This patch adds documentation of support for exec events on extended-remote Linux targets. gdb/ChangeLog: * NEWS: Announce new remote packets for the exec-events feature and the exec-events feature and associated commands. gdb/doc/ChangeLog: * gdb.texinfo (Remote Configuration): Add exec event feature to table of packet settings. (Stop Reply Packets): Add exec events to the list of stop reasons. (General Query Packets): Add exec events to tables of 'gdbfeatures' and 'stub features' supported in the qSupported packet, as well as to the list containing stub feature details.
2015-09-11Extended-remote exec testDon Breazeal9-103/+178
This patch updates several exec-related tests and some of the library functions in order to get them running with extended-remote. There were three changes that were required, as follows: In gdb.base/foll-exec.exp, use 'clean_start' in place of proc 'zap_session' to reset the state of the debugger between tests. This sets 'remote exec-file' to execute the correct binary file in each subsequent test. In gdb.base/pie-execl.exp, there is an expect statement with an expression that is used to match output from both gdb and the program under debug. For the remote target, this had to be split into two expressions, using $inferior_spawn_id to match the output from the program. Because I had encountered problems with extended-remote exec events in non-stop mode in my manual testing, I added non-stop testing to the non-ldr-exc-[1234].exp tests. In order to set non-stop mode for remote targets, it is necessary to 'set non-stop on' after gdb has started, but before it connects to gdbserver. This is done using 'save_vars' to set non-stop mode in GDBFLAGS, so GDB sets non-stop mode on startup. gdb/testsuite/ChangeLog: * gdb.base/foll-exec.c: Add copyright header. Fix formatting issues. * gdb.base/foll-exec.exp (zap_session): Delete proc. (do_exec_tests): Use clean_restart in place of zap_session, and for test initialization. Fix formatting issues. Use fail in place of perror. * gdb.base/pie-execl.exp (main): Use 'inferior_spawn_id' in an expect statement to match an expression with output from the program under debug. * gdb.threads/non-ldr-exc-1.exp (do_test, main): Add non-stop tests and pass stop mode argument to clean_restart. Use save_vars to enable non-stop in GDBFLAGS. * gdb.threads/non-ldr-exc-2.exp: Likewise. * gdb.threads/non-ldr-exc-3.exp: Likewise. * gdb.threads/non-ldr-exc-4.exp: Likewise.
2015-09-11Extended-remote catch execDon Breazeal2-0/+41
This patch implements exec catchpoints for extended-remote Linux targets. The implementation follows the same approach used for fork catchpoints, implementing extended-remote target routines for inserting and removing the catchpoints by just checking if exec events are supported. Existing host-side code and previous support for extended-remote exec events takes care of the rest. gdb/ChangeLog: * remote.c (remote_exec_event_p): New function. (remote_insert_exec_catchpoint): New function. (remote_remove_exec_catchpoint): New function. (init_extended_remote_ops): Initialize extended_remote_ops members to_insert_exec_catchpoint and to_remove_exec_catchpoint.
2015-09-11Extended-remote follow-execDon Breazeal17-41/+441
This patch implements support for exec events on extended-remote Linux targets. Follow-exec-mode and rerun behave as expected. Catchpoints and test updates are implemented in subsequent patches. This patch was derived from a patch posted last October: https://sourceware.org/ml/gdb-patches/2014-10/msg00877.html. It was originally based on some work done by Luis Machado in 2013. IMPLEMENTATION ---------------- Exec events are enabled via ptrace options. When an exec event is detected by gdbserver, the existing process data, along with all its associated lwp and thread data, is deleted and replaced by data for a new single-threaded process. The new process data is initialized with the appropriate parts of the state of the execing process. This approach takes care of several potential pitfalls, including: * deleting the data for an execing non-leader thread before any wait/sigsuspend occurs * correctly initializing the architecture of the execed process We then report the exec event using a new RSP stop reason, "exec". When GDB receives an "exec" event, it saves the status in the event structure's target_waitstatus field, like what is done for remote fork events. Because the original and execed programs may have different architectures, we skip parsing the section of the stop reply packet that contains register data. The register data will be retrieved later after the inferior's architecture has been set up by infrun.c:follow_exec. At that point the exec event is handled by the existing event handling in GDB. However, a few changes were necessary so that infrun.c:follow_exec could accommodate the remote target. * Where follow-exec-mode "new" is handled, we now call add_inferior_with_spaces instead of add_inferior with separate calls to set up the program and address spaces. The motivation for this is that add_inferior_with_spaces also sets up the initial architecture for the inferior, which is needed later by target_find_description when it calls target_gdbarch. * We call a new target function, target_follow_exec. This function allows us to store the execd_pathname in the inferior, instead of using the static string remote_exec_file from remote.c. The static string didn't work for follow-exec-mode "new", since once you switched to the execed program, the original remote exec-file was lost. The execd_pathname is now stored in the inferior's program space as a REGISTRY field. All of the requisite mechanisms for this are defined in remote.c. gdb/gdbserver/ChangeLog: * linux-low.c (linux_mourn): Static declaration. (linux_arch_setup): Move in front of handle_extended_wait. (linux_arch_setup_thread): New function. (handle_extended_wait): Handle exec events. Call linux_arch_setup_thread. Make event_lwp argument a pointer-to-a-pointer. (check_zombie_leaders): Do not check stopped threads. (linux_low_ptrace_options): Add PTRACE_O_TRACEEXEC. (linux_low_filter_event): Add lwp and thread for exec'ing non-leader thread if leader thread has been deleted. Refactor code into linux_arch_setup_thread and call it. Pass child lwp pointer by reference to handle_extended_wait. (linux_wait_for_event_filtered): Update comment. (linux_wait_1): Prevent clobbering exec event status. (linux_supports_exec_events): New function. (linux_target_ops) <supports_exec_events>: Initialize new member. * lynx-low.c (lynx_target_ops) <supports_exec_events>: Initialize new member. * remote-utils.c (prepare_resume_reply): New stop reason 'exec'. * server.c (report_exec_events): New global variable. (handle_query): Handle qSupported query for exec-events feature. (captured_main): Initialize report_exec_events. * server.h (report_exec_events): Declare new global variable. * target.h (struct target_ops) <supports_exec_events>: New member. (target_supports_exec_events): New macro. * win32-low.c (win32_target_ops) <supports_exec_events>: Initialize new member. gdb/ChangeLog: * infrun.c (follow_exec): Use process-style ptid for exec message. Call add_inferior_with_spaces and target_follow_exec. * nat/linux-ptrace.c (linux_supports_traceexec): New function. * nat/linux-ptrace.h (linux_supports_traceexec): Declare. * remote.c (remote_pspace_data): New static variable. (remote_pspace_data_cleanup): New function. (get_remote_exec_file): New function. (set_remote_exec_file_1): New function. (set_remote_exec_file): New function. (show_remote_exec_file): New function. (remote_exec_file): Delete static variable. (anonymous enum) <PACKET_exec_event_feature> New enumeration constant. (remote_protocol_features): Add entry for exec-events feature. (remote_query_supported): Add client side of qSupported query for exec-events feature. (remote_follow_exec): New function. (remote_parse_stop_reply): Handle 'exec' stop reason. (extended_remote_run, extended_remote_create_inferior): Call get_remote_exec_file and set_remote_exec_file_1. (init_extended_remote_ops) <to_follow_exec>: Initialize new member. (_initialize_remote): Call register_program_space_data_with_cleanup. Call add_packet_config_cmd for remote exec-events feature. Modify call to add_setshow_string_noescape_cmd for exec-file to use new functions set_remote_exec_file and show_remote_exec_file. * target-debug.h, target-delegates.c: Regenerated. * target.c (target_follow_exec): New function. * target.h (struct target_ops) <to_follow_exec>: New member. (target_follow_exec): Declare new function.
2015-09-11Add "ld -r" tests for PR ld/15323H.J. Lu3-5/+26
Weak defined function is turned into non-weak defined function by "ld -r -flto" with GCC 5 due to a GCC 5 regression: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67548 Add "ld -r" tests for PR ld/15323 to make sure that any linker change won't introduce linker regression for PR ld/15323. * ld-plugin/lto.exp (lto_link_tests): Add a "ld -r" test for PR ld/15323. (lto_run_tests): Add a "ld -r" test for PR ld/15323.
2015-09-11[AArch64] Cleanup comments in instruction decoding functionsPierre Langlois2-7/+12
gdb/ChangeLog: * aarch64-tdep.c (decode_cb): Move up comment describing the encoding. (decode_tb): Fix a typo in comment above the function. Move up comment describing the encoding.
2015-09-11[AArch64] Fix incorrect mask when decoding b.cond instructionPierre Langlois2-1/+6
The encoding of the b.cond instruction is described in the architecture reference manual as: b.cond 0101 0100 iiii iiii iiii iiii iii0 cccc So the mask should be 0xff000010. gdb/ChangeLog: * aarch64-tdep.c (decode_bcond): Fix incorrect mask.
2015-09-11gdb/18947: [aarch64]Step into shared library is very slow.Mihail-Marian Nistor2-0/+7
Install gdbarch_skip_solib_resolver on aarch64 GNU/Linux gdb/ChangeLog: 2015-09-11 Mihail-Marian Nistor <mihail.nistor@freescale.com> PR gdb/18947 * aarch64-linux-tdep.c: (aarch64_linux_init_abi): Install glibc_skip_solib_resolver as gdbarch_skip_solib_resolver callback. Signed-off-by: Mihail-Marian Nistor <mihail.nistor@freescale.com>
2015-09-11Automatic date update in version.inGDB Administrator1-1/+1
2015-09-10Small refactor in ada-lang.c:scan_discrim_boundSimon Marchi2-6/+16
Factor out common arithmetic operations for clarity. gdb/ChangeLog: * ada-lang.c (scan_discrim_bound): Factor out arithmetic operations.
2015-09-10Constify variables in ada-lang.cSimon Marchi2-11/+19
I found this const/not const mixup found by building in C++ mode. gdb/ChangeLog: * ada-lang.c (ada_search_struct_field): Constify parameters and/or variables.. (xget_renaming_scope): Likewise. (ada_is_redundant_range_encoding): Likewise. (scan_discrim_bound): Likewise. (to_fixed_range_type): Likewise.
2015-09-10S/390: Fix instruction format of crj*, clrj*, and clgrj*.Andreas Krebbel2-42/+42
This fixes the instruction format for 3 of the compare and branch extended mnemonics. That way the extended mnemonics are actually being found by objdump. gas/testsuite/ChangeLog: 2015-09-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * gas/s390/zarch-z10.d: Fix testcase for some of the compare and branch extended mnemonics. opcodes/ChangeLog: 2015-09-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * s390-opc.txt: Fix instruction format of crj*, clrj*, and clgrj*.
2015-09-10S/390: Remove F_20 and FE_20. Adjust comments.Andreas Krebbel1-70/+66
This is cleanup only. opcodes/ChangeLog: 2015-09-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * s390-opc.c: Remove unused (and broken) F_20 and FE_20 operand types and adjust numbering accordingly. Fix some comments.
2015-09-10S/390: Fix MASK_RIE_R0PI and MASK_RIE_R0PU.Andreas Krebbel2-54/+54
This makes objdump to be able to recognize some of the extended mnemonics more often. It does not lead to wrong being generated. opcodes/ChangeLog: 2015-09-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * s390-opc.c: Fix MASK_RIE_R0PI and MASK_RIE_R0PU. gas/testsuite/ChangeLog: 2015-09-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * gas/s390/zarch-z10.d: Fix testcase for compare and branch extended mnemonics.
2015-09-10Another updated version of the simplified Chinese translation.Nick Clifton2-8/+12
* po/zh_CN.po: Updated simplified Chinese translation.
2015-09-10Call target_can_download_tracepoint if there are tracepoints to downloadYao Qi4-4/+23
Nowadays, GDB calls target_can_download_tracepoint at the entry of download_tracepoint_locations, which is called by. update_global_location_list. Sometimes, it is not needed to call target_can_download_tracepoint at all because there is no tracepoint created. In remote target, target_can_download_tracepoint send qTStatus to the remote in order to know whether tracepoint can be downloaded or not. This means some redundant qTStatus packets are sent. This patch is to teach GDB to call target_can_download_tracepoint lazily, only on the moment there are tracepoint to download. gdb.perf/single-step.exp (with a local patch to measure RSP packets) shows the number of RSP packets is reduced because there is no tracepoint at all, so GDB doesn't send qTStatus any more. # of RSP packets original patched single-step rsp 1000 7000 6000 single-step rsp 2000 14000 12000 single-step rsp 3000 21000 18000 single-step rsp 4000 28000 24000 gdb: 2015-09-10 Yao Qi <yao.qi@linaro.org> * breakpoint.c (download_tracepoint_locations): New local can_download_tracepoint. Check the result of target_can_download_tracepoint and save it in can_download_tracepoint if there are tracepoints to download. * linux-nat.h (enum tribool): Move it to ... * common/common-types.h: ... here.
2015-09-10Adds an option to the strings program to specify a separator between the ↵Erik Ackermann4-2/+37
emitted pieces of text. * strings.c: Add -s/--output-separator option to specify custom separator string. * NEWS: Mention the new feature. * doc/binutils.text (strings): Document the new command line option.
2015-09-10Automatic date update in version.inGDB Administrator1-1/+1
2015-09-09* gdb.python/py-prettyprint.exp: Check result of run_lang_tests.Doug Evans2-2/+10
gdb/testsuite/ChangeLog: * gdb.python/py-prettyprint.exp: Check result of run_lang_tests.
2015-09-09* gdb.base/pie-execl.exp: Fix result test of build_executable.Doug Evans2-2/+6
gdb/testsuite/ChangeLog: * gdb.base/pie-execl.exp: Fix result test of build_executable.
2015-09-09* gdb.base/savedregs.exp: Fix typo.Doug Evans2-1/+5
gdb/testsuite/ChangeLog: * gdb.base/savedregs.exp: Fix typo.
2015-09-09Delete enum inferior_event_handler::INF_TIMERPedro Alves3-3/+5
Nothing ever uses this. gdb/ChangeLog: 2015-09-09 Pedro Alves <palves@redhat.com> * inf-loop.c (inferior_event_handler): Delete INF_TIMER case. * target.h (enum inferior_event_type) <INF_TIMER>: Delete.
2015-09-09Garbage collect thread continuationsPedro Alves9-303/+38
Nothing uses thread continuations anymore. (inferior continuations are still used by the attach command.) gdb/ChangeLog: 2015-09-09 Pedro Alves <palves@redhat.com> * continuations.c (add_continuation, restore_thread_cleanup) (do_all_continuations_ptid, do_all_continuations_thread_callback) (do_all_continuations_thread, do_all_continuations) (discard_all_continuations_thread_callback) (discard_all_continuations_thread, discard_all_continuations) (add_intermediate_continuation) (do_all_intermediate_continuations_thread_callback) (do_all_intermediate_continuations_thread) (do_all_intermediate_continuations) (discard_all_intermediate_continuations_thread_callback) (discard_all_intermediate_continuations_thread) (discard_all_intermediate_continuations): Delete. * continuations.h (add_continuation, do_all_continuations) (do_all_continuations_thread, discard_all_continuations) (discard_all_continuations_thread, add_intermediate_continuation) (do_all_intermediate_continuations) (do_all_intermediate_continuations_thread) (discard_all_intermediate_continuations) (discard_all_intermediate_continuations_thread): Delete declarations. * event-top.c (stdin_event_handler): Delete references to continuations. * gdbthread.h (struct thread_info): Delete continuations and intermediate_continuations fields. * inf-loop.c (inferior_event_handler): Remove references to continuations. * infrun.c (infrun_thread_stop_requested_callback): Remove references to continuations. * target.h (enum inferior_event_type) <INF_EXEC_CONTINUE>: Delete. * thread.c: Don't include "continuations.h". (clear_thread_inferior_resources): Remove references to continuations.
2015-09-09Garbage collect dummy_frame_ctx_saverPedro Alves6-121/+26
Since the "finish" command and infcall's FSMs are now responsible for saving the return value, the dummy_frame_ctx_saver is no longer needed anywhere. gdb/ChangeLog: 2015-09-09 Pedro Alves <palves@redhat.com> * infcall.c (struct dummy_frame_context_saver): Delete. (dummy_frame_context_saver_free, dummy_frame_context_saver_dtor) (dummy_frame_context_saver_drop) (dummy_frame_context_saver_cleanup) (dummy_frame_context_saver_get_regs) (dummy_frame_context_saver_setup): Delete. * infcall.h (dummy_frame_context_saver_drop) (dummy_frame_context_saver_cleanup) (dummy_frame_context_saver_get_regs, dummy_frame_context_saver): Delete. (get_return_value): Remove 'ctx_saver' paremeter. Adjust. * inferior.h (get_return_value): Remove 'ctx_saver' paremeter. * python/py-finishbreakpoint.c (bpfinishpy_pre_stop_hook): Adjust.
2015-09-09Convert the until/advance commands to thread_fsm mechanismPedro Alves3-85/+211
gdb/ChangeLog: 2015-09-09 Pedro Alves <palves@redhat.com> * breakpoint.c: Include "thread-fsm.h". (struct until_break_command_continuation_args): Delete. (struct until_break_fsm): New. (until_break_fsm_ops): New global. (new_until_break_fsm, until_break_fsm_should_stop): New functions. (until_break_command_continuation): Delete. (until_break_fsm_clean_up): New function. (until_break_fsm_async_reply_reason): New function. (until_break_command): Adjust to create an until_break_fsm instead of a continuation. (momentary_bkpt_print_it): No longer print MI's async-stop-reason here. * infcmd.c (struct until_next_fsm): New. (until_next_fsm_ops): New global. (new_until_next_fsm, until_next_fsm_should_stop): New function. (until_next_continuation): Delete. (until_next_fsm_clean_up, until_next_fsm_async_reply_reason): New functions. (until_next_command): Adjust to create a new until_next_fsm instead of a continuation.
2015-09-09Convert infcalls to thread_fsm mechanismPedro Alves6-160/+349
This removes infcall-specific special casing from normal_stop, simplifying it. Like the "finish" command's, the FSM is responsible for storing the function's return value. gdb/ChangeLog: 2015-09-09 Pedro Alves <palves@redhat.com> * infcall.c: Include thread_fsm.h. (struct call_return_meta_info): New. (get_call_return_value): New function, factored out from call_function_by_hand_dummy. (struct call_thread_fsm): New. (call_thread_fsm_ops): New global. (new_call_thread_fsm, call_thread_fsm_should_stop) (call_thread_fsm_should_notify_stop): New functions. (run_inferior_call): Add 'sm' parameter. Associate the FSM with the thread. (call_function_by_hand_dummy): Create a new call_thread_fsm instance, associate it with the thread, and wait for the FSM to finish. If finished successfully, fetch the function's result value out of the FSM. * infrun.c (fetch_inferior_event): If the FSM says the stop shouldn't be notified, don't call normal_stop. (maybe_remove_breakpoints): New function, factored out from ... (normal_stop): ... here. Simplify. * infrun.h (maybe_remove_breakpoints): Declare. * thread-fsm.c (thread_fsm_should_notify_stop): New function. (thread-fsm.h) <struct thread_fsm_ops>: New field. (thread_fsm_should_notify_stop): Declare.
2015-09-09Replace "struct continuation" mechanism by something more extensiblePedro Alves17-353/+852
This adds an object oriented replacement for the "struct continuation" mechanism, and converts the stepping commands (step, next, stepi, nexti) and the "finish" commands to use it. It adds a new thread "class" (struct thread_fsm) that contains the necessary info and callbacks to manage the state machine of a thread's execution command. This allows getting rid of some hacks. E.g., in fetch_inferior_event and normal_stop we no longer need to know whether a thread is doing a multi-step (e.g., step N). This effectively makes the intermediate_continuations unused -- they'll be garbage collected in a separate patch. (They were never a proper abstraction, IMO. See how fetch_inferior_event needs to check step_multi before knowing whether to call INF_EXEC_CONTINUE or INF_EXEC_COMPLETE.) The target async vs !async uiout hacks in mi_on_normal_stop go away too. print_stop_event is no longer called from normal_stop. Instead it is now called from within each interpreter's normal_stop observer. This clears the path to make each interpreter print a stop event the way it sees fit. Currently we have some hacks in common code to differenciate CLI vs TUI vs MI around this area. The "finish" command's FSM class stores the return value plus that value's position in the value history, so that those can be printed to both MI and CLI's streams. This fixes the CLI "finish" command when run from MI -- it now also includes the function's return value in the CLI stream: (gdb) ~"callee3 (strarg=0x400730 \"A string argument.\") at src/gdb/testsuite/gdb.mi/basics.c:35\n" ~"35\t}\n" +~"Value returned is $1 = 0\n" *stopped,reason="function-finished",frame=...,gdb-result-var="$1",return-value="0",thread-id="1",stopped-threads="all",core="0" -FAIL: gdb.mi/mi-cli.exp: CLI finish: check CLI output +PASS: gdb.mi/mi-cli.exp: CLI finish: check CLI output gdb/ChangeLog: 2015-09-09 Pedro Alves <palves@redhat.com> * Makefile.in (COMMON_OBS): Add thread-fsm.o. * breakpoint.c (handle_jit_event): Print debug output. (bpstat_what): Split event callback handling to ... (bpstat_run_callbacks): ... this new function. (momentary_bkpt_print_it): No longer handle bp_finish here. * breakpoint.h (bpstat_run_callbacks): Declare. * gdbthread.h (struct thread_info) <step_multi>: Delete field. <thread_fsm>: New field. (thread_cancel_execution_command): Declare. * infcmd.c: Include thread-fsm.h. (struct step_command_fsm): New. (step_command_fsm_ops): New global. (new_step_command_fsm, step_command_fsm_prepare): New functions. (step_1): Adjust to use step_command_fsm_prepare and prepare_one_step. (struct step_1_continuation_args): Delete. (step_1_continuation): Delete. (step_command_fsm_should_stop): New function. (step_once): Delete. (step_command_fsm_clean_up, step_command_fsm_async_reply_reason) (prepare_one_step): New function, based on step_once. (until_next_command): Remove step_multi reference. (struct return_value_info): New. (print_return_value): Rename to ... (print_return_value_1): ... this. New struct return_value_info parameter. Adjust. (print_return_value): Reimplement as wrapper around print_return_value_1. (struct finish_command_fsm): New. (finish_command_continuation): Delete. (finish_command_fsm_ops): New global. (new_finish_command_fsm, finish_command_fsm_should_stop): New functions. (finish_command_fsm_clean_up, finish_command_fsm_return_value): New. (finish_command_continuation_free_arg): Delete. (finish_command_fsm_async_reply_reason): New. (finish_backward, finish_forward): Change symbol parameter to a finish_command_fsm. Adjust. (finish_command): Create a finish_command_fsm. Adjust. * infrun.c: Include "thread-fsm.h". (clear_proceed_status_thread): Delete the thread's FSM. (infrun_thread_stop_requested_callback): Cancel the thread's execution command. (clean_up_just_stopped_threads_fsms): New function. (fetch_inferior_event): Handle the event_thread's should_stop method saying the command isn't done yet. (process_event_stop_test): Run breakpoint callbacks here. (print_stop_event): Rename to ... (print_stop_location): ... this. (restore_current_uiout_cleanup): New function. (print_stop_event): Reimplement. (normal_stop): No longer notify the end_stepping_range observers here handle "step N" nor "finish" here. No longer call print_stop_event here. * infrun.h (struct return_value_info): Forward declare. (print_return_value): Declare. (print_stop_event): Change prototype. * thread-fsm.c: New file. * thread-fsm.h: New file. * thread.c: Include "thread-fsm.h". (thread_cancel_execution_command): New function. (clear_thread_inferior_resources): Call it. * cli/cli-interp.c (cli_on_normal_stop): New function. (cli_interpreter_init): Install cli_on_normal_stop as normal_stop observer. * mi/mi-interp.c: Include "thread-fsm.h". (restore_current_uiout_cleanup): Delete. (mi_on_normal_stop): If the thread has an FSM associated, and it finished, ask it for the async-reply-reason to print. Always call print_stop_event here, regardless of the top-level interpreter. Check bpstat_what to tell whether an asynchronous breakpoint hit triggered. * tui/tui-interp.c (tui_on_normal_stop): New function. (tui_init): Install tui_on_normal_stop as normal_stop observer. gdb/testsuite/ChangeLog: 2015-09-09 Pedro Alves <palves@redhat.com> * gdb.mi/mi-cli.exp: Add CLI finish tests.
2015-09-09Merge async and sync code paths some morePedro Alves14-199/+174
This patch makes the execution control code use largely the same mechanisms in both sync- and async-capable targets. This means using continuations and use the event loop to react to target events on sync targets as well. The trick is to immediately mark infrun's event loop source after resume instead of calling wait_for_inferior. Then fetch_inferior_event is adjusted to do a blocking wait on sync targets. Tested on x86_64 Fedora 20, native and gdbserver, with and without "maint set target-async off". gdb/ChangeLog: 2015-09-09 Pedro Alves <palves@redhat.com> * breakpoint.c (bpstat_do_actions_1, until_break_command): Don't check whether the target can async. * inf-loop.c (inferior_event_handler): Only call target_async if the target can async. * infcall.c: Include top.h and interps.h. (run_inferior_call): For the interpreter to sync mode while running the infcall. Call wait_sync_command_done instead of wait_for_inferior plus normal_stop. * infcmd.c (prepare_execution_command): Don't check whether the target can async when running in the foreground. (step_1): Delete synchronous case handling. (step_once): Always install a continuation, even in sync mode. (until_next_command, finish_forward): Don't check whether the target can async. (attach_command_post_wait, notice_new_inferior): Always install a continuation, even in sync mode. * infrun.c (mark_infrun_async_event_handler): New function. (proceed): In sync mode, mark infrun's event source instead of waiting for events here. (fetch_inferior_event): If the target can't async, do a blocking wait. (prepare_to_wait): In sync mode, mark infrun's event source. (infrun_async_inferior_event_handler): No longer bail out if the target can't async. * infrun.h (mark_infrun_async_event_handler): New declaration. * linux-nat.c (linux_nat_wait_1): Remove calls to set_sigint_trap/clear_sigint_trap. (linux_nat_terminal_inferior): No longer check whether the target can async. * mi/mi-interp.c (mi_on_sync_execution_done): Update and simplify comment. (mi_execute_command_input_handler): No longer check whether the target is async. Update and simplify comment. * target.c (default_target_wait): New function. * target.h (struct target_ops) <to_wait>: Now defaults to default_target_wait. (default_target_wait): Declare. * top.c (wait_sync_command_done): New function, factored out from ... (maybe_wait_sync_command_done): ... this. * top.h (wait_sync_command_done): Declare. * target-delegates.c: Regenerate.
2015-09-09FT32 linker script now parameterized for flash and RAM size.jamesbowman2-2/+10
2015-09-09 James Bowman <james.bowman@ftdichip.com> ld/ * scripttempl/ft32.sc: default linker script RAM and FLASH size symbols
2015-09-09Make register name tables in visium.h static in order to prevent multiple ↵Nick Clifton2-3/+9
definitions. * visium.h (gen_reg_table): Make static. (fp_reg_table): Likewise. (cc_table): Likewise.
2015-09-09Remove sentance in binutils documentation saying that thin archives cannot ↵Nick Clifton2-2/+6
contain absolute paths or paths outside of the current directory - they can. * doc/binutils.texi (ar): Remove bogus sentance concerning thin archives and invalid paths.
2015-09-09[AArch64] Sort IS_AARCH64_TLS_RELAX_RELOC in alphabetic orderJiong Wang2-8/+12
This can also speedup the check as TLSDESC is the default model for global/local dynamic that the big "||" check can finish more quickly than putting them at the bottom. 2015-09-09 Jiong. Wang <jiong.wang@arm.com> bfd/ * elfnn-aarch64.c (IS_AARCH64_TLS_RELAX_RELOC): Sort alphabetically.
2015-09-09[AArch64] Relax TLS local dynamic traditional into local executableJiong Wang8-0/+148
The linker relaxation logic will be: Code sequence I (tiny): 0x00 adr x0, :tlsldm:x 0x04 bl __tls_get_addr | V 0x00 mrs x0, tpidr_el0 0x04 add x0, x0, TCB_SIZE Code sequence II (small): 0x00 adrp a0, :tlsldm:x 0x04 add a0, #:tlsldm_lo12:x 0x08 bl __tls_get_addr | V 0x00 mrs x0, tpidr_el0 0x04 add x0, x0, TCB_SIZE 0x08 nop 2015-09-09 Jiong Wang <jiong.wang@arm.com> bfd/ * elfnn-aarch64.c (aarch64_tls_transition_without_check): Support three TLS local dynamic traditional relocations types. (elfNN_aarch64_tls_relax): Support TLS local dynamic traditional to local executable relaxation. ld/testsuite/ * ld-aarch64/tls-relax-ld-le-tiny.s: New testcase. * ld-aarch64/tls-relax-ld-le-small.s: Likewise. * ld-aarch64/tls-relax-ld-le-tiny.d: New expectation file. * ld-aarch64/tls-relax-ld-le-small.d: Likewise. * ld-aarch64/aarch64-elf.exp: Run new testcases.
2015-09-09S/390: Remove trailing zeros on 4-bytes opcodes.Andreas Krebbel2-7/+9
This is a NOP change only relevant when reading the file or parsing it with other tools. opcodes/ChangeLog: 2015-09-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * s390-opc.c: Add OP32 definition. * s390-opc.txt: Reduce the opcode padding of some extended mnemonics from 6 to the actual length (which is 4).
2015-09-09S/390: Fix opcode of ppno.Andreas Krebbel2-2/+2
opcodes/ChangeLog: 2015-09-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * s390-opc.txt: Fix opcode of ppno instruction. gas/testsuite/ChangeLog: 2015-09-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * gas/s390/zarch-z13.d: Fix opcode of ppno instruction.
2015-09-09Update the simplified Chinese translation.Nick Clifton2-794/+1130
* po/zh_CN.po: Updated simplified Chinese translation.
2015-09-09btrace: kernel address filteringMarkus Metzger6-64/+73
For the BTS recording format, we sometimes get a FROM->TO record where the FROM address lies in the kernel and the TO address lies in user space at whatever address the user process was resumed. GDB has a heuristic to filter out such records based on looking at the most significant bit in the PC. This works fine for 64-bit systems but it doesn't always work for 32-bit systems. Libraries that are loaded at fairly high addresses might be mistaken for kernel code and branches inside the library are filtered out. Change the heuristic to (again heuristically) try to determine the lowest address in kernel space. Any PC that is smaller than that should be in user space. On today's systems, there should be a symbol "_text" at that address. Read /proc/kallsyms and search for that symbol. It is not guaranteed that /proc/kallsyms is readable on all systems. On 64-bit systems, we fall back to check the most significant bit. On 32-bit systems, we refrain from filtering out addresses. The filtering should really be done by the kernel. And it soon will be: https://lkml.org/lkml/2015/8/31/212. gdb/ * nat/linux-btrace.h (struct btrace_target_info) <ptr_bits>: Remove. * nat/linux-btrace.c: Include filestuff.h and inttypes.h. Remove include of sys/utsname.h. (linux_determine_kernel_ptr_bits): Remove. (linux_determine_kernel_start): New. (perf_event_is_kernel_addr): Remove tinfo argument. Update users. Update check. (perf_event_skip_bts_record): Remove tinfo argument. Update users. (linux_enable_bts, linux_enable_pt): Remove tinfo->ptr_bits initialization. * x86-linux-nat.c (x86_linux_enable_btrace): Remove ptr_bits assignment. gdbserver/ * linux-low.c (linux_low_enable_btrace): Remove. (linux_target_ops): Replace linux_low_enable_btrace with linux_enable_btrace.
2015-09-08Improve hand-call-in-threads.exp failure handling.Sandra Loosemore2-3/+24
2015-09-08 Sandra Loosemore <sandra@codesourcery.com> gdb/testsuite/ * gdb.threads/hand-call-in-threads.exp: Make sure the thread command actually switches threads. Give up on remaining tests if target fails to stop at breakpoint.
2015-09-09Automatic date update in version.inGDB Administrator1-1/+1
2015-09-08config/tc-avr.c (md_section_align): Append UL for -1 to avoid the latest ↵Chen Gang2-1/+6
gcc's warning The related warning is: gcc -DHAVE_CONFIG_H -I. -I../../binutils-gdb/gas -I. -I../../binutils-gdb/gas -I../bfd -I../../binutils-gdb/gas/config -I../../binutils-gdb/gas/../include -I../../binutils-gdb/gas/.. -I../../binutils-gdb/gas/../bfd -DLOCALEDIR="\"/upstream/release-avr32/share/locale\"" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -I../../binutils-gdb/gas/../zlib -g -O2 -MT tc-avr.o -MD -MP -MF .deps/tc-avr.Tpo -c -o tc-avr.o `test -f 'config/tc-avr.c' || echo '../../binutils-gdb/gas/'`config/tc-avr.c ../../binutils-gdb/gas/config/tc-avr.c: In function ‘md_section_align’: ../../binutils-gdb/gas/config/tc-avr.c:1233:43: error: left shift of negative value [-Werror=shift-negative-value] return ((addr + (1 << align) - 1) & (-1 << align)); ^ 2015-09-05 Chen Gang <gang.chen.5i5j@gmail.com> * config/tc-avr.c (md_section_align): Append UL for -1 to avoid the latest gcc's warning.
2015-09-08Extend the descriptiopn of how to access linker defined symbols from C.Nick Clifton2-0/+18
* ld.texinfo (Source Code Reference): Extend description to include an example using arrays.
2015-09-08Automatic date update in version.inGDB Administrator1-1/+1
2015-09-07ld: Fix failures in new orphan handling tests.Andrew Burgess4-7/+16
The new orphan handling tests added in commit c005eb9 fail on a range of targets. Some of the failures were fixed in commit e32aa93 but not all. This commit should address the remaining failures. Update results to account for orphan sections being placed in different orders, and for other, target specific sections, being discarded. ld/testsuite/ChangeLog: * ld-elf/orphan-7.map: Allow for other discarded sections. * ld-elf/orphan-8.map: Updated to allow for different section ordering on different targets. * ld-elf/orphan.ld: Place .sbss section.
2015-09-07guile: Add as_a_scm_t_subrPedro Alves24-280/+401
Building GDB in C++ mode on Fedora 20, the gdb/guile/ code shows ~280 errors like: src/gdb/guile/guile.c:515:1: error: invalid conversion from ‘scm_unused_struct* (*)(SCM, SCM) {aka scm_unused_struct* (*)(scm_unused_struct*, scm_unused_struct*)}’ to ‘scm_t_subr {aka void*}’ [-fpermissive] This commit fixes them all. gdb/ChangeLog: 2015-09-07 Pedro Alves <palves@redhat.com> * guile/guile-internal.h (as_a_scm_t_subr): New. * guile/guile.c (misc_guile_functions): Use it. * guile/scm-arch.c (arch_functions): Use it. * guile/scm-block.c (block_functions, gdbscm_initialize_blocks): Use it. * guile/scm-breakpoint.c (breakpoint_functions): Use it. * guile/scm-cmd.c (command_functions): Use it. * guile/scm-disasm.c (disasm_functions): Use it. * guile/scm-exception.c (exception_functions) (private_exception_functions): Use it. * guile/scm-frame.c (frame_functions) * guile/scm-gsmob.c (gsmob_functions): Use it. * guile/scm-iterator.c (iterator_functions): Use it. * guile/scm-lazy-string.c (lazy_string_functions): Use it. * guile/scm-math.c (math_functions): Use it. * guile/scm-objfile.c (objfile_functions): Use it. * guile/scm-param.c (parameter_functions): Use it. * guile/scm-ports.c (port_functions, private_port_functions): Use it. * guile/scm-pretty-print.c (pretty_printer_functions): Use it. * guile/scm-progspace.c (pspace_functions): Use it. * guile/scm-string.c (string_functions): Use it. * guile/scm-symbol.c (symbol_functions): Use it. * guile/scm-symtab.c (symtab_functions): Use it. * guile/scm-type.c (type_functions, gdbscm_initialize_types): Use it. * guile/scm-value.c (value_functions): Use it.
2015-09-07Fix internal error caused by IFUNC patch.Cary Coutant3-9/+16
The previous commit to fix PR gold/18886 converted STT_IFUNC to STT_FUNC when resolving to a symbol defined in a shared library. This leads to an internal error if the shared library symbol is seen first, as we do not convert the symbol at all. We need to override the STT_IFUNC in add_from_dynobj() instead of in override_base(). gold/ PR gold/18930 PR gold/18886 * resolve.cc (Symbol::override_base): Don't convert IFUNC symbols here. * symtab.cc (Symbol_table::add_from_dynobj): Convert them here instead.
2015-09-07Automatic date update in version.inGDB Administrator1-1/+1