aboutsummaryrefslogtreecommitdiff
path: root/gdb/ChangeLog
AgeCommit message (Collapse)AuthorFilesLines
2015-03-25Associate target_ops with target_fileio file descriptorsGary Benson1-0/+15
Various target_fileio_* functions use integer file descriptors to refer to open files. File operation functions are looked up from the target stack as they are used, which causes problems if the target stack changes after the file is opened. For example, if a file is opened on a remote target and the remote target disconnects or closes the remote target will be popped off the stack. If target_fileio_close is then called on that file and "set auto-connect-native-target" is "on" (the default) then the native target's close method will be called. If the file opened on the remote happens to share the same number with a file open in GDB then that file will be closed by mistake. This commit changes target_fileio_open to store newly opened file descriptors in a table together with the target_ops used to open them. The index into the table is returned and used as the file descriptor argument to all target_fileio_* functions that accept file descriptor arguments. gdb/ChangeLog: * target.c (fileio_ft_t): New typedef, define object vector. (fileio_fhandles): New static variable. (is_closed_fileio_fh): New macro. (lowest_closed_fd): New static variable. (acquire_fileio_fd): New function. (release_fileio_fd): Likewise. (fileio_fd_to_fh): New macro. (target_fileio_open): Wrap the file descriptor on success. (target_fileio_pwrite): Updated to use wrapped file descriptor. (target_fileio_pread): Likewise. (target_fileio_close): Likewise.
2015-03-24Fix "thread apply all" with exited threadsPedro Alves1-0/+5
I noticed that "thread apply all" sometimes crashes. The problem is that thread_apply_all_command doesn take exited threads into account, and we qsort and then walk more elements than there really ever were put in the array. Valgrind shows: The current thread <Thread ID 3> has terminated. See `help thread'. (gdb) thread apply all p 1 Thread 1 (Thread 0x7ffff7fc2740 (LWP 29579)): $1 = 1 ==29576== Use of uninitialised value of size 8 ==29576== at 0x639CA8: set_thread_refcount (thread.c:1337) ==29576== by 0x5C2C7B: do_my_cleanups (cleanups.c:155) ==29576== by 0x5C2CE8: do_cleanups (cleanups.c:177) ==29576== by 0x63A191: thread_apply_all_command (thread.c:1477) ==29576== by 0x50374D: do_cfunc (cli-decode.c:105) ==29576== by 0x506865: cmd_func (cli-decode.c:1893) ==29576== by 0x7562CB: execute_command (top.c:476) ==29576== by 0x647DA4: command_handler (event-top.c:494) ==29576== by 0x648367: command_line_handler (event-top.c:692) ==29576== by 0x7BF7C9: rl_callback_read_char (callback.c:220) ==29576== by 0x64784C: rl_callback_read_char_wrapper (event-top.c:171) ==29576== by 0x647CB5: stdin_event_handler (event-top.c:432) ==29576== ... This can happen easily today as linux-nat.c/linux-thread-db.c are forgetting to purge non-current exited threads. But even with that fixed, we can always do "thread apply all" with an exited thread selected, which won't be deleted until the user switches to another thread. That's what the test added by this commit exercises. Tested on x86_64 Fedora 20. gdb/ChangeLog: 2015-03-24 Pedro Alves <palves@redhat.com> * thread.c (thread_apply_all_command): Take exited threads into account. gdb/testsuite/ChangeLog: 2015-03-24 Pedro Alves <palves@redhat.com> * gdb.threads/no-unwaited-for-left.exp: Test "thread apply all".
2015-03-24Fix switch_back_to_stepped_thread comment referencesPedro Alves1-0/+5
Whoops, switch_back_to_stepping doesn't exist... gdb/ 2015-03-24 Pedro Alves <palves@redhat.com> * infrun.c (resume, proceed): Mention switch_back_to_stepped_thread, not switch_back_to_stepping.
2015-03-24Shuffle user_visible_resume_ptidPedro Alves1-0/+6
... and move comment to declaration. gdb/ChangeLog: 2015-03-24 Pedro Alves <palves@redhat.com> * infrun.c (user_visible_resume_ptid): Rewrite going from most-locked to unlocked instead of the opposite. Move comment ... * infrun.h (user_visible_resume_ptid): ... here.
2015-03-24Debug output tweaks in the Linux target backendsPedro Alves1-0/+12
This adds/tweaks a few debug logs I found useful recently. gdb/gdbserver/ChangeLog: 2015-03-24 Pedro Alves <palves@redhat.com> * linux-low.c (check_stopped_by_breakpoint): Tweak debug log output. Also dump TRAP_TRACE. (linux_low_filter_event): In debug output, distinguish a resume_stop SIGSTOP from a delayed SIGSTOP. gdb/ChangeLog: 2015-03-24 Pedro Alves <palves@redhat.com> * linux-nat.c (linux_nat_resume): Output debug logs before trying to resume the event lwp. Use the lwp's ptid instead of the passed in (maybe wildcard) ptid. (stop_wait_callback): Tweak debug log output. (check_stopped_by_breakpoint): Tweak debug log output. Also dump TRAP_TRACE. (linux_nat_filter_event): In debug output, distinguish a resume_stop SIGSTOP from a delayed SIGSTOP. Output debug logs before trying to resume the lwp.
2015-03-24Do not make "prop" field of struct dynamic_prop_list a pointer.Joel Brobecker1-0/+7
struct dynamic_prop_list is declared as follow: struct dynamic_prop_list { [...] /* The dynamic property itself. */ struct dynamic_prop *prop; [...] }; In this case, the pointer indirection is unnecessary and costing us, for each dynamic property, the memory needed to store one pointer. This patch removes this pointer indirection, savin us a tiny bit of memory, as well as reduces a bit the complexity by removing the need to allocate memory for the property, as the allocation is now part of the struct itself. gdb/ChangeLog: * gdbtypes.h (struct dynamic_prop_list) <prop>: Remove pointer indirection. * gdbtypes.c (get_dyn_prop): Adjust, following change above. (add_dyn_prop, copy_dynamic_prop_list): Likewise. Tested on x86_64-linux.
2015-03-24GDB: rename DYN_ATTR_DATA_LOCATION into DYN_PROP_DATA_LOCATION.Joel Brobecker1-0/+9
The terminology we've been using is (dynamic) "property" rather than "attribute", so this patch renames an enum to use the same terminology. No behavior change. gdb/ChangeLog: * gdbtypes.h (enum dynamic_prop_node_kind) <DYN_PROP_DATA_LOCATION>: Renames DYN_ATTR_DATA_LOCATION. (TYPE_DATA_LOCATION): Use DYN_PROP_DATA_LOCATION instead of DYN_ATTR_DATA_LOCATION. * dwarf2read.c (set_die_type): Use DYN_PROP_DATA_LOCATION instead of DYN_ATTR_DATA_LOCATION. Tested on x86_64-linux.
2015-03-24Remove 'step' parameters from 'proceed' and 'resume'Pedro Alves1-0/+31
The "step" parameters of 'proceed' and 'resume' aren't really useful as indication of whether run control wants to single-step the target, as that information must already be retrievable from currently_stepping. In fact, if currently_stepping disagrees with whether we single-stepped the target, then things break. Thus instead of having the same information in two places, this patch removes those parameters. Setting 'step_start_function' is the only user of proceed's 'step' argument, other than passing the 'step' argument down to 'resume' and debug log output. Move that instead to set_step_frame, where we already set other related fields. clear_proceed_status keeps its "step" parameter for now because it needs to know which set of threads should have their state cleared, and is called before the "stepping_command" flag is set. Tested on x86_64 Fedora 20, native and gdbserver. gdb/ChangeLog: 2015-03-24 Pedro Alves <palves@redhat.com> * breakpoint.c (until_break_command): Adjust call to proceed. * gdbthread.h (struct thread_control_state) <stepping_command>: New field. * infcall.c (run_inferior_call): Adjust call to proceed. * infcmd.c (run_command_1, proceed_thread_callback, continue_1): Adjust calls to proceed. (set_step_frame): Set the current thread's step_start_function here. (step_once): Adjust calls to proceed. (jump_command, signal_command, until_next_command) (finish_backward, finish_forward, proceed_after_attach_callback) (attach_command_post_wait): Adjust calls to proceed. * infrun.c (proceed_after_vfork_done): Adjust call to proceed. (do_target_resume): New function, factored out from ... (resume): ... here. Remove 'step' parameter. Instead, check currently_stepping to determine whether the thread should be single-stepped. (proceed): Remove 'step' parameter and don't set the thread's step_start_function here. Adjust call to 'resume'. (handle_inferior_event): Adjust calls to 'resume'. (switch_back_to_stepped_thread): Use do_target_resume instead of 'resume'. (keep_going): Adjust calls to 'resume'. * infrun.h (proceed): Remove 'step' parameter. (resume): Likewise. * windows-nat.c (do_initial_windows_stuff): Adjust call to 'resume'. * mi/mi-main.c (proceed_thread): Adjust call to 'proceed'.
2015-03-24Make "set scheduler-locking step" depend on user intention, onlyPedro Alves1-0/+17
Currently, "set scheduler-locking step" is a bit odd. The manual documents it as being optimized for stepping, so that focus of debugging does not change unexpectedly, but then it says that sometimes other threads may run, and thus focus may indeed change unexpectedly... A user can then be excused to get confused and wonder why does GDB behave like this. I don't think a user should have to know about details of how "next" or whatever other run control command is implemented internally to understand when does the "scheduler-locking step" setting take effect. This patch completes a transition that the code has been moving towards for a while. It makes "set scheduler-locking step" hold threads depending on whether the _command_ the user entered was a stepping command [step/stepi/next/nexti], or not. Before, GDB could end up locking threads even on "continue" if for some reason run control decides a thread needs to be single stepped (e.g., for a software watchpoint). After, if a "continue" happens to need to single-step for some reason, we won't lock threads (unless when stepping over a breakpoint, naturally). And if a stepping command wants to continue a thread for bit, like when skipping a function to a step-resume breakpoint, we'll still lock threads, so focus of debugging doesn't change. In order to make this work, we need to record in the thread structure whether what set it running was a stepping command. (A follow up patch will remove the "step" parameters of 'proceed' and 'resume') FWIW, Fedora GDB, which defaults to "scheduler-locking step" (mainline defaults to "off") carries a different patch that goes in this direction as well. Tested on x86_64 Fedora 20, native and gdbserver. gdb/ChangeLog: 2015-03-24 Pedro Alves <palves@redhat.com> * gdbthread.h (struct thread_control_state) <stepping_command>: New field. * infcmd.c (step_once): Pass step=1 to clear_proceed_status. Set the thread's stepping_command field. * infrun.c (resume): Check the thread's stepping_command flag to determine which threads should be resumed. Rename 'entry_step' local to user_step. (clear_proceed_status_thread): Clear 'stepping_command'. (schedlock_applies): Change parameter type to struct thread_info pointer. Adjust. (find_thread_needs_step_over): Remove 'step' parameter. Adjust. (switch_back_to_stepped_thread): Adjust calls to 'schedlock_applies'. (_initialize_infrun): Adjust "set scheduler-locking step" help. gdb/testsuite/ChangeLog: 2015-03-24 Pedro Alves <palves@redhat.com> * gdb.threads/schedlock.exp (test_step): No longer expect that "set scheduler-locking step" with "next" over a function call runs threads unlocked. gdb/doc/ChangeLog: 2015-03-24 Pedro Alves <palves@redhat.com> * gdb.texinfo (test_step) <set scheduler-locking step>: No longer mention that threads may sometimes run unlocked.
2015-03-24Make step_start_function be per threadPedro Alves1-0/+9
I noticed that step_start_function is still a global, while it obviously should be a per-thread field. gdb/ChangeLog: 2015-03-24 Pedro Alves <palves@redhat.com> * infrun.c (step_start_function): Delete and ... * gdbthread.h (struct thread_control_state) <step_start_function>: ... now a field here. * infrun.c (clear_proceed_status_thread): Clear the thread's step_start_function. (proceed, process_event_stop_test, print_stop_event): Adjust.
2015-03-24No longer handle negative 'step' in 'proceed'Pedro Alves1-0/+4
Nothing ever passes a negative 'step' to proceed. Gets rid of one of the few remaining stop_after_trap references. gdb/ChangeLog 2015-03-24 Pedro Alves <palves@redhat.com> * infrun.c (proceed): No longer handle negative step.
2015-03-24Move duplicated Linux x86 code to nat/x86-linux.cGary Benson1-0/+10
This commit moves two identical functions from gdb/x86-linux-nat.c and gdb/gdbserver/linux-x86-low.c into the shared file gdb/nat/x86-linux.c. gdb/ChangeLog: * nat/x86-linux.h (x86_linux_new_thread): New declaration. (x86_linux_prepare_to_resume): Likewise. * x86-linux-nat.c (x86_linux_new_thread): Moved to nat/x86-linux.c. (x86_linux_prepare_to_resume): Likewise. * nat/x86-linux.c (x86_linux_new_thread): New function. (x86_linux_prepare_to_resume): Likewise. gdb/gdbserver/ChangeLog: * linux-x86-low.c (x86_linux_new_thread): Moved to nat/x86-linux.c. (x86_linux_prepare_to_resume): Likewise.
2015-03-24Move low-level Linux x86 debug register code to a shared fileGary Benson1-0/+20
This commit moves the now-identical low-level Linux x86 debug register code from gdb/x86-linux-nat.c and gdb/gdbserver/linux-x86-low.c into a new shared file gdb/nat/x86-linux-dregs.c. gdb/ChangeLog: * nat/x86-linux-dregs.h: New file. * nat/x86-linux-dregs.c: Likewise. * Makefile.in (HFILES_NO_SRCDIR): Add nat/x86-linux-dregs.h. (x86-linux-dregs.o): New rule. * config/i386/linux.mh (NATDEPFILES): Add x86-linux-dregs.o. * config/i386/linux64.mh (NATDEPFILES): Likewise. * x86-linux-nat.c: Include nat/x86-linux-dregs.h. (u_debugreg_offset): Moved to nat/x86-linux-dregs.c. (x86_linux_dr_get): Likewise. (x86_linux_dr_set): Likewise. (x86_linux_dr_get_addr): Likewise. (x86_linux_dr_get_control): Likewise. (x86_linux_dr_get_status): Likewise. (update_debug_registers_callback): Likewise. (x86_linux_dr_set_control): Likewise. (x86_linux_dr_set_addr): Likewise. (x86_linux_update_debug_registers): Likewise. gdb/gdbserver/ChangeLog: * Makefile.in (x86-linux-dregs.o): New rule. * configure.srv: Add x86-linux-dregs.o to relevant targets. * linux-x86-low.c: Include nat/x86-linux-dregs.h. (u_debugreg_offset): Moved to nat/x86-linux-dregs.c. (x86_linux_dr_get): Likewise. (x86_linux_dr_set): Likewise. (update_debug_registers_callback): Likewise. (x86_linux_dr_set_addr): Likewise. (x86_linux_dr_get_addr): Likewise. (x86_linux_dr_set_control): Likewise. (x86_linux_dr_get_control): Likewise. (x86_linux_dr_get_status): Likewise. (x86_linux_update_debug_registers): Likewise.
2015-03-24Introduce x86_linux_update_debug_registersGary Benson1-0/+6
This commit moves the entire body of both GDB's and gdbserver's x86_linux_prepare_to_resume functions into new functions, x86_linux_update_debug_registers. This reorganisation allows all Linux x86 low-level debug register code to be placed in one shared file, separate from general Linux x86 shared code. gdb/ChangeLog: * x86-linux-nat.c (x86_linux_update_debug_registers): New function, factored out from... (x86_linux_prepare_to_resume): ...this. gdb/gdbserver/ChangeLog: * linux-x86-low.c (x86_linux_update_debug_registers): New function, factored out from... (x86_linux_prepare_to_resume): ...this.
2015-03-24Linux x86 low-level debug register comment synchronizationGary Benson1-0/+13
This commit updates comments in the low-level debug register code for Linux x86, making GDB's and gdbserver's implementations identical. gdb/ChangeLog: * x86-linux-nat.c (x86_linux_dr_get): Update comments. (x86_linux_dr_set): Likewise. (x86_linux_dr_get_addr): Likewise. (x86_linux_dr_get_control): Likewise. (x86_linux_dr_get_status): Likewise. (update_debug_registers_callback): Likewise. (x86_linux_dr_set_control): Likewise. (x86_linux_dr_set_addr): Likewise. (x86_linux_prepare_to_resume): Likewise. (x86_linux_new_thread): Likewise. gdb/gdbserver/ChangeLog: * linux-x86-low.c (x86_linux_dr_get): Update comments. (x86_linux_dr_set): Likewise. (update_debug_registers_callback): Likewise. (x86_linux_dr_set_addr): Likewise. (x86_linux_dr_get_addr): Likewise. (x86_linux_dr_set_control): Likewise. (x86_linux_dr_get_control): Likewise. (x86_linux_dr_get_status): Likewise. (x86_linux_prepare_to_resume): Likewise.
2015-03-24Linux x86 low-level debug register code synchronizationGary Benson1-0/+5
This commit makes several small changes to the low-level debug register code for Linux x86, making the code in the GDB and gdbserver implementations identical. gdb/ChangeLog: * x86-linux-nat.c (x86_linux_dr_set_addr): Update assertion. (x86_linux_new_thread): Rename argument. gdb/gdbserver/ChangeLog: * linux-x86-low.c (x86_linux_dr_get): Add assertion. Use perror_with_name. Pass string through gettext. (x86_linux_dr_set): Likewise.
2015-03-24Make lwp_info.arch_private handling sharedGary Benson1-0/+21
This commit moves the code to handle lwp_info.arch_private for Linux x86 into a new shared file, nat/x86-linux.c. gdb/ChangeLog: * nat/x86-linux.h: New file. * nat/x86-linux.c: Likewise. * Makefile.in (HFILES_NO_SRCDIR): Add nat/x86-linux.h. (x86-linux.o): New rule. * config/i386/linux.mh (NATDEPFILES): Add x86-linux.o. * config/i386/linux64.mh (NATDEPFILES): Likewise. * nat/linux-nat.h (struct arch_lwp_info): New forward declaration. (lwp_set_arch_private_info): New declaration. (lwp_arch_private_info): Likewise. * linux-nat.c (lwp_set_arch_private_info): New function. (lwp_arch_private_info): Likewise. * x86-linux-nat.c: Include nat/x86-linux.h. (arch_lwp_info): Removed structure. (update_debug_registers_callback): Use lwp_set_debug_registers_changed. (x86_linux_prepare_to_resume): Use lwp_debug_registers_changed and lwp_set_debug_registers_changed. (x86_linux_new_thread): Use lwp_set_debug_registers_changed. gdb/gdbserver/ChangeLog: * Makefile.in (x86-linux.o): New rule. * configure.srv: Add x86-linux.o to relevant targets. * linux-low.c (lwp_set_arch_private_info): New function. (lwp_arch_private_info): Likewise. * linux-x86-low.c: Include nat/x86-linux.h. (arch_lwp_info): Removed structure. (update_debug_registers_callback): Use lwp_set_debug_registers_changed. (x86_linux_prepare_to_resume): Use lwp_debug_registers_changed and lwp_set_debug_registers_changed. (x86_linux_new_thread): Use lwp_set_debug_registers_changed.
2015-03-24Introduce basic LWP accessorsGary Benson1-0/+13
This commit introduces three accessors that shared Linux code can use to access fields of struct lwp_info. The GDB and gdbserver Linux x86 code is modified to use them. gdb/ChangeLog: * nat/linux-nat.h (ptid_of_lwp): New declaration. (lwp_is_stopped): Likewise. (lwp_stop_reason): Likewise. * linux-nat.c (ptid_of_lwp): New function. (lwp_is_stopped): Likewise. (lwp_is_stopped_by_watchpoint): Likewise. * x86-linux-nat.c (update_debug_registers_callback): Use lwp_is_stopped. (x86_linux_prepare_to_resume): Use ptid_of_lwp and lwp_stop_reason. gdb/gdbserver/ChangeLog: * linux-low.c (ptid_of_lwp): New function. (lwp_is_stopped): Likewise. (lwp_stop_reason): Likewise. * linux-x86-low.c (update_debug_registers_callback): Use lwp_is_stopped. (x86_linux_prepare_to_resume): Use ptid_of_lwp and lwp_stop_reason.
2015-03-24Make linux_stop_lwp be a shared functionGary Benson1-0/+5
Both GDB and gdbserver had linux_stop_lwp functions with identical declarations. This commit moves these to nat/linux-nat.h to allow shared code to use the function. gdb/ChangeLog: * linux-nat.h (linux_stop_lwp): Move declaration to... * nat/linux-nat.h (linux_stop_lwp): New declaration. gdb/gdbserver/ChangeLog: * linux-low.h (linux_stop_lwp): Remove declaration.
2015-03-24Add iterate_over_lwps to gdbserverGary Benson1-0/+10
This commit introduces a new function, iterate_over_lwps, that shared Linux code can use to call a function for each LWP that matches certain criteria. This function already existed in GDB and was in use by GDB's various low-level Linux x86 debug register setters. An equivalent was written for gdbserver and gdbserver's low-level Linux x86 debug register setters were modified to use it. gdb/ChangeLog: * linux-nat.h: Include nat/linux-nat.h. (iterate_over_lwps): Move declaration to nat/linux-nat.h. * nat/linux-nat.h (struct lwp_info): New forward declaration. (iterate_over_lwps_ftype): New typedef. (iterate_over_lwps): New declaration. * linux-nat.h (iterate_over_lwps): Update comment. Use iterate_over_lwps_ftype. Update callback return value check. gdb/gdbserver/ChangeLog: * linux-low.h: Include nat/linux-nat.h. * linux-low.c (iterate_over_lwps_args): New structure. (iterate_over_lwps_filter): New function. (iterate_over_lwps): Likewise. * linux-x86-low.c (update_debug_registers_callback): Update signature to what iterate_over_lwps expects. Remove PID check that iterate_over_lwps now performs. (x86_dr_low_set_addr): Use iterate_over_lwps. (x86_dr_low_set_control): Likewise.
2015-03-24Add x86_debug_reg_state to gdbserverGary Benson1-0/+5
This commit introduces a new function, x86_debug_reg_state, that shared x86 code can use to access the local mirror of a process's debug registers. This function already existed in GDB and was in use by GDB's x86_linux_prepare_to_resume. An equivalent was written for gdbserver and gdbserver's x86_linux_prepare_to_resume was modified to use it. gdb/ChangeLog: * x86-nat.h (x86_debug_reg_state): Move declaration to... * nat/x86-dregs.h (x86_debug_reg_state): New declaration. gdb/gdbserver/ChangeLog: * linux-x86-low.c (x86_debug_reg_state): New function. (x86_linux_prepare_to_resume): Use the above.
2015-03-24Introduce current_lwp_ptidGary Benson1-0/+11
This commit introduces a new function, current_lwp_ptid, that shared Linux code can use to obtain the ptid of the current lightweight process. gdb/ChangeLog: * nat/linux-nat.h (current_lwp_ptid): New declaration. * linux-nat.c (current_lwp_ptid): New function. * x86-linux-nat.c: Include nat/linux-nat.h. (x86_linux_dr_get_addr): Use current_lwp_ptid. (x86_linux_dr_get_control): Likewise. (x86_linux_dr_get_status): Likewise. (x86_linux_dr_set_control): Likewise. (x86_linux_dr_set_addr): Likewise. gdb/gdbserver/ChangeLog: * linux-low.c (current_lwp_ptid): New function. * linux-x86-low.c: Include nat/linux-nat.h. (x86_dr_low_get_addr): Use current_lwp_ptid. (x86_dr_low_get_control): Likewise. (x86_dr_low_get_status): Likewise.
2015-03-24Fix breakpoint thread condition missing with mi and a pending breakpoint.Antoine Tremblay1-0/+5
When setting a pending breakpoint with a thread condition while using the mi interface, the thread condition would be lost by gdb when the breakpoint was resolved. This patch fixes this behavior by setting the thread condition properly in the mi case. Also, this patch modifies the mi-pending test case to test for this issue and removes some unneeded code in the testcase and dependency on stdio. gdb/Changelog: PR breakpoints/16466 * breakpoint.c (create_breakpoint): Set thread on breakpoint struct. gdb/testsuite/ChangeLog: PR breakpoints/16466 * gdb.mi/Makefile.in: Add mi-pendshr2.sl to cleanup. * gdb.mi/mi-pending.c (thread_func): New function. (int main): Add threading support required. * gdb.mi/mi-pending.exp: Add tests for this issue. * gdb.mi/mi-pendshr.c (pendfunc1): Remove stdio dependency. (pendfunc2): Remove stdio dependency. * gdb.mi/mi-pendshr2.c: New file.
2015-03-23Fix indentation in ser_windows_setparity and hardwire_setparity.Joel Brobecker1-0/+5
gdb/ChangeLog: * ser-mingw.c (ser_windows_setparity): Fix indentation. * ser-unix.c (hardwire_setparity): Likewise.
2015-03-23GDB: Add set/show serial parity command.Yury Grechishchev1-0/+34
The "set serial parity" command allows the user to control which parity to use when communicating over a serial connection, rather than having the parity hardcoded to none. gdb/ChangeLog: * NEWS: Mention set/show serial parity command. * monitor.c (monitor_open): Call serial_setparity. * remote.c (remote_open_1): Likewise. * ser-base.c (ser_base_serparity): New function. * ser-base.h (ser_base_setparity): Add declaration. * ser-go32.c (dos_ops): Set "setparity" field. * ser-mingw.c (ser_windows_raw): Do not set state.fParity and state.Parity. (ser_windows_setparity): New function. (hardwire_ops): Add ser_windows_setparity. (tty_ops): Add NULL for setparity field. (pipe_ops): Add ser_base_setparity. (tcp_ops): Likewise. * ser-pipe.c (pipe_ops): Likewise. * ser-tcp.c (tcp_ops): Likewise. * ser-unix.c (hardwire_setparity): Add declaration. (hardwire_raw): Don't reset PARENB flag. (hardwire_setparity): New function. (hardwire_ops): Add hardwire_setparity. * serial.c (serial_setparity): New function. (serial_parity): New global. (parity_none, parity_odd, parity_even, parity_enums, parity): New static globals. (set_parity): New function. (_initialize_serial): Add set/show serial parity commands. * serial.h (GDBPARITY_NONE): Define. (GDBPARITY_ODD): Define. (GDBPARITY_EVEN): Define. (serial_setparity) Add declaration. (struct serial_ops): Add setparity field. * target.h (serial_parity): Add declaration. gdb/doc/ChangeLog: * gdb.texinfo (Remote configuration): Document "set/show serial parity" command.
2015-03-23Update comment of linespec_lexer_lex_keyword.Keith Seitz1-0/+4
gdb/ChangeLog * linespec.c (linespec_lexer_lex_keyword): Update comment.
2015-03-23Add missing changelog entries of last commitKeith Seitz1-0/+15
2015-03-23PR gdb/18021 - defend against "static virtual" methodsKeith Seitz1-0/+6
This bug appears to be caused by bad debuginfo. The method causing the sefault in the reporter's test case is marked both static and virtual. This patch simply safegaurds against this case in dwarf2_add_member_fn, where the code assumes that there is a `this' pointer when a virtual method is seen (more specifically, when DW_AT_vtable_elem is seen). It previously dereferenced the first formal parameter (`this' pointer), which in this case doesn't exist. GDB consequently segfaulted dereferencing a NULL pointer. gdb/ChangeLog PR gdb/18021 * dwarf2read.c (dwarf2_add_member_fn): Issue a complaint if we find a static method with DW_AT_vtable_elem_location. gdb/testsuite/ChangeLog PR gdb/18021 * gdb.dwarf2/staticvirtual.exp: New test.
2015-03-21Fix undefined behavior in TUI's TAB expansionEli Zaretskii1-0/+6
gdb/ChangeLog: * tui/tui-io.c (tui_expand_tabs): Reinitialize the column counter before the second loop, to avoid undefined behavior. Reported by Anton Blanchard <anton@samba.org>.
2015-03-20[gdb/DWARF] Introduce linked list for dynamic attributesKeven Boell1-0/+12
This patch introduces a linked list for dynamic attributes of a type. This is a pre-work for the Fortran dynamic array support. The Fortran dynamic array support will add more dynamic attributes to a type. As only a few types will have such dynamic attributes set, a linked list is more efficient in terms of memory consumption than adding multiple attributes to main_type. gdb/ChangeLog: * gdbtypes.c (resolve_dynamic_type_internal): Adapt data_location usage to linked list. (resolve_dynamic_type_internal): Adapt data_location to linked list. (get_dyn_prop, add_dyn_prop, copy_dynamic_prop_list): New function. (copy_type_recursive, copy_type): Add copy of linked list. * gdbtypes.h (enum dynamic_prop_node_kind): New enum. (struct dynamic_prop_list): New struct. * dwarf2read.c (set_die_type): Set data_location data.
2015-03-20constify i386-sol2-tdep.c and machoread.cPedro Alves1-0/+6
/home/pedro/gdb/mygit/src/gdb/i386-sol2-tdep.c: In function ‘const char* i386_sol2_static_transform_name(const char*)’: /home/pedro/gdb/mygit/src/gdb/i386-sol2-tdep.c:93:29: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive] p = strrchr (name, '.'); ^ gdb: 2015-03-20 Pedro Alves <palves@redhat.com> * i386-sol2-tdep.c (i386_sol2_static_transform_name): Move "p" to inner block and make it const. * machoread.c (get_archive_prefix_len): Make "lparen" const.
2015-03-20constify set_breakpoint_conditionPedro Alves1-0/+5
gdb: 2015-03-20 Pedro Alves <palves@redhat.com> * breakpoint.c (set_breakpoint_condition): Make argument "exp" const. * breakpoint.h (set_breakpoint_condition): Update declaration.
2015-03-20constify tui/tui-io.cPedro Alves1-0/+4
gdb: 2015-03-20 Pedro Alves <palves@redhat.com> * tui/tui-io.c (tui_expand_tabs): Make "s1" const.
2015-03-20constify xcoffread.cPedro Alves1-0/+4
/home/pedro/gdb/mygit/src/gdb/xcoffread.c: In function ‘void scan_xcoff_symtab(objfile*)’: /home/pedro/gdb/mygit/src/gdb/xcoffread.c:2644:33: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive] p = strchr (namestring, ':'); ^ gdb: 2015-03-20 Pedro Alves <palves@redhat.com> * xcoffread.c (scan_xcoff_symtab): Make "p" and "q" const.
2015-03-20constify remote-m32r-sdi.cPedro Alves1-0/+4
gdb: 2015-03-20 Pedro Alves <palves@redhat.com> * remote-m32r-sdi.c (m32r_open): Make "port_str" const.
2015-03-20constify nto-tdep.cPedro Alves1-0/+5
/home/pedro/gdb/mygit/src/gdb/nto-tdep.c: In function ‘int nto_find_and_open_solib(char*, unsigned int, char**)’: /home/pedro/gdb/mygit/src/gdb/nto-tdep.c:111:14: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive] endian = gdbarch_byte_order (target_gdbarch ()) ^ /home/pedro/gdb/mygit/src/gdb/nto-tdep.c: In function ‘void nto_init_solib_absolute_prefix()’: /home/pedro/gdb/mygit/src/gdb/nto-tdep.c:170:14: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive] endian = gdbarch_byte_order (target_gdbarch ()) ^ gdb 2015-03-20 Pedro Alves <palves@redhat.com> * nto-tdep.c (nto_find_and_open_solib): Make "endian" const. (nto_init_solib_absolute_prefix): Likewise.
2015-03-20constify sparc-sol2-tdep.c and spu-tdep.cPedro Alves1-0/+5
/home/pedro/gdb/mygit/src/gdb/sparc-sol2-tdep.c: In function ‘const char* sparc_sol2_static_transform_name(const char*)’: /home/pedro/gdb/mygit/src/gdb/sparc-sol2-tdep.c:247:35: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive] char *p = strrchr (name, '.'); ^ gdb: 2015-03-20 Pedro Alves <palves@redhat.com> * sparc-sol2-tdep.c (sparc_sol2_static_transform_name): Make "p" const. * spu-tdep.c (spu_gdbarch_init): Make "name" const.
2015-03-20Remove gdb.hpJan Kratochvil1-0/+4
gdb/ChangeLog 2015-03-20 Jan Kratochvil <jan.kratochvil@redhat.com> * config/djgpp/README: Remove gdb.hp. gdb/testsuite/ChangeLog 2015-03-20 Jan Kratochvil <jan.kratochvil@redhat.com> * Makefile.in (ALL_SUBDIRS): Remove gdb.hp. * README: Remove HP-UX and gdb.hp. (configuration): * configure: Regenerate. * configure.ac (AC_OUTPUT): Remove gdb.hp/Makefile, gdb.hp/gdb.objdbg/Makefile, gdb.hp/gdb.base-hp/Makefile, gdb.hp/gdb.aCC/Makefile, gdb.hp/gdb.compat/Makefile, gdb.hp/gdb.defects/Makefile. * gdb.hp/Makefile.in: File deleted. * gdb.hp/gdb.aCC/Makefile.in: File deleted. * gdb.hp/gdb.aCC/optimize.c: File deleted. * gdb.hp/gdb.aCC/optimize.exp: File deleted. * gdb.hp/gdb.aCC/run.c: File deleted. * gdb.hp/gdb.aCC/watch-cmd.exp: File deleted. * gdb.hp/gdb.base-hp/Makefile.in: File deleted. * gdb.hp/gdb.base-hp/callfwmall.c: File deleted. * gdb.hp/gdb.base-hp/callfwmall.exp: File deleted. * gdb.hp/gdb.base-hp/dollar.c: File deleted. * gdb.hp/gdb.base-hp/dollar.exp: File deleted. * gdb.hp/gdb.base-hp/genso-thresh.c: File deleted. * gdb.hp/gdb.base-hp/hwwatchbus.c: File deleted. * gdb.hp/gdb.base-hp/hwwatchbus.exp: File deleted. * gdb.hp/gdb.base-hp/pxdb.c: File deleted. * gdb.hp/gdb.base-hp/pxdb.exp: File deleted. * gdb.hp/gdb.base-hp/reg-pa64.exp: File deleted. * gdb.hp/gdb.base-hp/reg-pa64.s: File deleted. * gdb.hp/gdb.base-hp/reg.exp: File deleted. * gdb.hp/gdb.base-hp/reg.s: File deleted. * gdb.hp/gdb.base-hp/sized-enum.c: File deleted. * gdb.hp/gdb.base-hp/sized-enum.exp: File deleted. * gdb.hp/gdb.base-hp/so-thresh.exp: File deleted. * gdb.hp/gdb.base-hp/so-thresh.mk: File deleted. * gdb.hp/gdb.base-hp/so-thresh.sh: File deleted. * gdb.hp/gdb.compat/Makefile.in: File deleted. * gdb.hp/gdb.compat/average.c: File deleted. * gdb.hp/gdb.compat/sum.c: File deleted. * gdb.hp/gdb.compat/xdb.c: File deleted. * gdb.hp/gdb.compat/xdb0.c: File deleted. * gdb.hp/gdb.compat/xdb0.h: File deleted. * gdb.hp/gdb.compat/xdb1.c: File deleted. * gdb.hp/gdb.compat/xdb1.exp: File deleted. * gdb.hp/gdb.compat/xdb2.exp: File deleted. * gdb.hp/gdb.compat/xdb3.exp: File deleted. * gdb.hp/gdb.defects/Makefile.in: File deleted. * gdb.hp/gdb.defects/bs14602.c: File deleted. * gdb.hp/gdb.defects/bs14602.exp: File deleted. * gdb.hp/gdb.defects/solib-d.c: File deleted. * gdb.hp/gdb.defects/solib-d.exp: File deleted. * gdb.hp/gdb.defects/solib-d1.c: File deleted. * gdb.hp/gdb.defects/solib-d2.c: File deleted. * gdb.hp/gdb.objdbg/Makefile.in: File deleted. * gdb.hp/gdb.objdbg/objdbg01.exp: File deleted. * gdb.hp/gdb.objdbg/objdbg01/x1.cc: File deleted. * gdb.hp/gdb.objdbg/objdbg01/x2.cc: File deleted. * gdb.hp/gdb.objdbg/objdbg01/x3.cc: File deleted. * gdb.hp/gdb.objdbg/objdbg01/x3.h: File deleted. * gdb.hp/gdb.objdbg/objdbg02.exp: File deleted. * gdb.hp/gdb.objdbg/objdbg02/x1.cc: File deleted. * gdb.hp/gdb.objdbg/objdbg02/x2.cc: File deleted. * gdb.hp/gdb.objdbg/objdbg02/x3.cc: File deleted. * gdb.hp/gdb.objdbg/objdbg03.exp: File deleted. * gdb.hp/gdb.objdbg/objdbg03/x1.cc: File deleted. * gdb.hp/gdb.objdbg/objdbg03/x2.cc: File deleted. * gdb.hp/gdb.objdbg/objdbg03/x3.cc: File deleted. * gdb.hp/gdb.objdbg/objdbg04.exp: File deleted. * gdb.hp/gdb.objdbg/objdbg04/x.h: File deleted. * gdb.hp/gdb.objdbg/objdbg04/x1.cc: File deleted. * gdb.hp/gdb.objdbg/objdbg04/x2.cc: File deleted. * gdb.hp/gdb.objdbg/tools/symaddr: File deleted. * gdb.hp/gdb.objdbg/tools/symaddr.pa64: File deleted. * gdb.hp/gdb.objdbg/tools/test-objdbg.cc: File deleted. * gdb.hp/tools/odump: File deleted.
2015-03-20Don't call set_gdbarch_cannot_step_breakpoint in aarch64_gdbarch_initYao Qi1-0/+5
Hi, I am looking at the following fails in aarch64-linux, stepi^M 47 NOP; /* after permanent bp */^M (gdb) FAIL: gdb.base/bp-permanent.exp: always_inserted=off, sw_watchpoint=0: stepi signal with handler: single-step to handler the test expects GDB single step into signal handler, but GDB doesn't. The code in infrun.c:resume /* Most targets can step a breakpoint instruction, thus executing it normally. But if this one cannot, just continue and we will hit it anyway. */ if (gdbarch_cannot_step_breakpoint (gdbarch)) step = 0; change the intended action from "step" to "continue". The gdbarch method cannot_step_breakpoint isn't documented well, and I don't get much clue after explore the history. However, from the comments above, aarch64-linux can step a breakpoint instruction, so don't need to call set_gdbarch_cannot_step_breakpoint. gdb: 2015-03-20 Yao Qi <yao.qi@linaro.org> * aarch64-tdep.c (aarch64_gdbarch_init): Don't call set_gdbarch_cannot_step_breakpoint.
2015-03-19Fix race exposed by gdb.threads/killed.expPedro Alves1-0/+13
On GNU/Linux, this test sometimes FAILs like this: (gdb) run Starting program: /home/pedro/gdb/mygit/build/gdb/testsuite/gdb.threads/killed [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". ptrace: No such process. (gdb) Program terminated with signal SIGKILL, Killed. The program no longer exists. FAIL: gdb.threads/killed.exp: run program to completion (timeout) Note the suspicious "No such process" line (that's errno==ESRCH). Adding debug output we see: linux_nat_wait: [process -1], [TARGET_WNOHANG] LLW: enter LNW: waitpid(-1, ...) returned 18465, ERRNO-OK LLW: waitpid 18465 received Stopped (signal) (stopped) LNW: waitpid(-1, ...) returned 18461, ERRNO-OK LLW: waitpid 18461 received Trace/breakpoint trap (stopped) LLW: Handling extended status 0x03057f LHEW: Got clone event from LWP 18461, new child is LWP 18465 LNW: waitpid(-1, ...) returned 0, ERRNO-OK RSRL: resuming stopped-resumed LWP LWP 18465 at 0x3b36af4b51: step=0 RSRL: resuming stopped-resumed LWP LWP 18461 at 0x3b36af4b51: step=0 sigchld ptrace: No such process. (gdb) linux_nat_wait: [process -1], [TARGET_WNOHANG] LLW: enter LNW: waitpid(-1, ...) returned 18465, ERRNO-OK LLW: waitpid 18465 received Killed (terminated) LLW: LWP 18465 exited. LNW: waitpid(-1, ...) returned 18461, No child processes LLW: waitpid 18461 received Killed (terminated) Process 18461 exited LNW: waitpid(-1, ...) returned -1, No child processes LLW: exit sigchld infrun: target_wait (-1, status) = infrun: 18461 [process 18461], infrun: status->kind = signalled, signal = GDB_SIGNAL_KILL infrun: TARGET_WAITKIND_SIGNALLED Program terminated with signal SIGKILL, Killed. The program no longer exists. infrun: stop_waiting FAIL: gdb.threads/killed.exp: run program to completion (timeout) The issue is that here: RSRL: resuming stopped-resumed LWP LWP 18465 at 0x3b36af4b51: step=0 RSRL: resuming stopped-resumed LWP LWP 18461 at 0x3b36af4b51: step=0 The first line shows we had just resumed LWP 18465, which does: void * child_func (void *dummy) { kill (pid, SIGKILL); exit (1); } So if the kernel manages to schedule that thread fast enough, the process may be killed before GDB has a chance to resume LWP 18461. GDBserver has code at the tail end of linux_resume_one_lwp to cope with this: ~~~ ptrace (step ? PTRACE_SINGLESTEP : PTRACE_CONT, lwpid_of (thread), (PTRACE_TYPE_ARG3) 0, /* Coerce to a uintptr_t first to avoid potential gcc warning of coercing an 8 byte integer to a 4 byte pointer. */ (PTRACE_TYPE_ARG4) (uintptr_t) signal); current_thread = saved_thread; if (errno) { /* ESRCH from ptrace either means that the thread was already running (an error) or that it is gone (a race condition). If it's gone, we will get a notification the next time we wait, so we can ignore the error. We could differentiate these two, but it's tricky without waiting; the thread still exists as a zombie, so sending it signal 0 would succeed. So just ignore ESRCH. */ if (errno == ESRCH) return; perror_with_name ("ptrace"); } ~~~ However, that's not a complete fix, because between starting to handle the resume request and getting that PTRACE_CONTINUE, we run other ptrace calls that can also fail with ESRCH, and that end up throwing an error (with perror_with_name). In the case above, I indeed sometimes see resume_stopped_resumed_lwps fail in the registers read: resume_stopped_resumed_lwps (struct lwp_info *lp, void *data) { ... CORE_ADDR pc = regcache_read_pc (regcache); Or e.g., in 32-bit mode, i386_linux_resume has several calls that can throw too. Whether to ignore ptrace errors or not depends on context that is only available somewhere up the call chain. So the fix is to let ptrace errors throw as they do today, and wrap the resume request in a TRY/CATCH that swallows it iff the lwp that we were trying to resume is no longer ptrace-stopped. gdb/gdbserver/ChangeLog: 2015-03-19 Pedro Alves <palves@redhat.com> * linux-low.c (linux_resume_one_lwp): Rename to ... (linux_resume_one_lwp_throw): ... this. Don't handle ESRCH here, instead call perror_with_name. (check_ptrace_stopped_lwp_gone): New function. (linux_resume_one_lwp): Reimplement as wrapper around linux_resume_one_lwp_throw that swallows errors if the LWP is gone. gdb/ChangeLog: 2015-03-19 Pedro Alves <palves@redhat.com> * linux-nat.c (linux_resume_one_lwp): Rename to ... (linux_resume_one_lwp_throw): ... this. Don't handle ESRCH here, instead call perror_with_name. (check_ptrace_stopped_lwp_gone): New function. (linux_resume_one_lwp): Reimplement as wrapper around linux_resume_one_lwp_throw that swallows errors if the LWP is gone. (resume_stopped_resumed_lwps): Try register reads in TRY/CATCH and swallows errors if the LWP is gone. Use linux_resume_one_lwp_throw instead of linux_resume_one_lwp.
2015-03-19Remove spurious gdb/ChangeLog entryPedro Alves1-5/+0
My last change added the same entry to both gdbserver's and gdb's ChangeLogs by mistake... Should have gone to gdbserver's only.
2015-03-19gdbserver/Linux: unbreak thread event randomizationPedro Alves1-0/+5
Wanting to make sure the new continue-pending-status.exp test tests both cases of threads 2 and 3 reporting an event, I added counters to the test, to make it FAIL if events for both threads aren't seen. Assuming a well behaved backend, and given a reasonable number of iterations, it should PASS. However, running that against GNU/Linux gdbserver, I found that surprisingly, that FAILed. GDBserver always reported the breakpoint hit for the same thread. Turns out that I broke gdbserver's thread event randomization recently, with git commit 582511be ([gdbserver] linux-low.c: better starvation avoidance, handle non-stop mode too). In that commit I missed that the thread structure also has a status_pending_p field... The end result was that count_events_callback always returns 0, and then if no thread is stepping, select_event_lwp always returns the event thread. IOW, no randomization is happening at all. Quite curious how all the other changes in that patch were sufficient to fix non-stop-fair-events.exp anyway even with that broken. Tested on x86_64 Fedora 20, native and gdbserver. gdb/gdbserver/ChangeLog: 2015-03-19 Pedro Alves <palves@redhat.com> * linux-low.c (count_events_callback, select_event_lwp_callback): Use the lwp's status_pending_p field, not the thread's. gdb/testsuite/ChangeLog: 2015-03-19 Pedro Alves <palves@redhat.com> * gdb.threads/continue-pending-status.exp (saw_thread_2) (saw_thread_3): New globals. (top level): Increment them when an event for the corresponding thread is seen. (no thread starvation): New test.
2015-03-19native/Linux: internal error if resume is short-circuitedPedro Alves1-0/+5
If the linux_nat_resume's short-circuits the resume because the current thread has a pending status, and, a thread with a higher number was previously stopped for a breakpoint, GDB internal errors, like: /home/pedro/gdb/mygit/src/gdb/linux-nat.c:2590: internal-error: status_callback: Assertion `lp->status != 0' failed. Fix this by make status_callback bail out earlier. GDBserver is already doing the same. New test added that exercises this. gdb/ChangeLog: 2015-03-19 Pedro Alves <palves@redhat.com> * linux-nat.c (status_callback): Return early if the LWP has no status pending. gdb/testsuite/ChangeLog: 2015-03-19 Pedro Alves <palves@redhat.com> * gdb.threads/continue-pending-status.c: New file. * gdb.threads/continue-pending-status.exp: New file.
2015-03-19select_event_lwp_callback: update commentsPedro Alves1-0/+5
This function (in both GDB and GDBserver) used to consider only SIGTRAP/breakpoint events, but that's no longer the case nowadays. gdb/gdbserver/ChangeLog: 2015-03-19 Pedro Alves <palves@redhat.com> * linux-low.c (select_event_lwp_callback): Update comments to no longer mention SIGTRAP. gdb/ChangeLog: 2015-03-19 Pedro Alves <palves@redhat.com> * linux-nat.c (select_event_lwp_callback): Update comment to no longer mention SIGTRAP.
2015-03-18Fix amd64 windows unwinding issues within MS dlls.Tristan Gingold1-0/+7
Unwind info in system dlls uses almost all possible codes, contrary to unwind info generated by gcc. A few issues have been discovered: incorrect handling of SAVE_NONVOL opcodes and incorrect in prologue range checks. Furthermore I added comments not to forget what has been investigated. gdb/ChangeLog: * amd64-windows-tdep.c (amd64_windows_find_unwind_info): Move redirection code to ... (amd64_windows_frame_decode_insns): ... Here. Fix in prologue checks. Fix SAVE_NONVOL operations. Add debug code and comments.
2015-03-18Reimplement "vFile:fstat" without qSupportedGary Benson1-0/+5
This commit makes support for the "vFile:fstat" packet be detected by probing rather than using qSupported, for consistency with the other vFile: packets. gdb/ChangeLog: (remote_protocol_features): Remove the "vFile:fstat" feature. (remote_hostio_fstat): Probe for "vFile:fstat" support. gdb/doc/ChangeLog: * gdb.texinfo (General Query Packets): Remove documentation for now-removed vFile:fstat qSupported features. gdb/gdbserver/ChangeLog: * server.c (handle_query): Do not report vFile:fstat as supported.
2015-03-18Support catch syscall on aarch64 linuxYao Qi1-0/+9
Hi, This patch is to support catch syscall on aarch64 linux. We implement gdbarch method get_syscall_number for aarch64-linux, and add aarch64-linux.xml file, which looks straightforward, however the changes to test case doesn't. First of all, we enable catch-syscall.exp on aarch64-linux target, but skip the multi_arch testing on current stage. I plan to touch multi arch debugging on aarch64-linux later. Then, when I run catch-syscall.exp on aarch64-linux, gcc errors that SYS_pipe isn't defined. We find that aarch64 kernel only has pipe2 syscall and libc already convert pipe to pipe2. As a result, I change catch-syscall.c to use SYS_pipe if it is defined, otherwise use SYS_pipe2 instead. The vector all_syscalls in catch-syscall.exp can't be pre-determined, so I add a new proc setup_all_syscalls to fill it, according to the availability of SYS_pipe. Regression tested on {x86_64, aarch64}-linux x {native, gdbserver}. gdb: 2015-03-18 Yao Qi <yao.qi@linaro.org> PR tdep/18107 * aarch64-linux-tdep.c: Include xml-syscall.h (aarch64_linux_get_syscall_number): New function. (aarch64_linux_init_abi): Call set_gdbarch_get_syscall_number. * syscalls/aarch64-linux.xml: New file. gdb/testsuite: 2015-03-18 Yao Qi <yao.qi@linaro.org> PR tdep/18107 * gdb.base/catch-syscall.c [!SYS_pipe] (pipe2_syscall): New variable. * gdb.base/catch-syscall.exp: Don't skip it on aarch64*-*-linux* target. Remove elements in all_syscalls. (test_catch_syscall_multi_arch): Skip it on aarch64*-linux* target. (setup_all_syscalls): New proc.
2015-03-17Fix name of ser_base_setstopbits's second argument.Yurij Grechishhev1-0/+5
Small copy/paste error, most likely... gdb/ChangeLog: * ser-base.h (ser_base_setstopbits): Change second argument name from "rate" to "num".
2015-03-17Remove forward declaration of struct statGary Benson1-0/+7
Forward declarations of struct stat break the Windows build. This commit removes a forward declaration of struct stat and includes sys/stat.h directly instead. gdb/ChangeLog: PR gdb/18131 * common/common-remote-fileio.h (sys/stat.h): New include. (stuct stat): Remove forward declaration.
2015-03-16Fetch all registers before writing the core register notes.John Baldwin1-0/+5
Without this, not all registers were present in the core generated by gcore. For example, running 'gcore' on a program without examining the vector registers (SSE or AVX) would store all the vector registers as zeros because they were not pulled into the regcache. Running 'info vector' before 'gcore' would store the correct values in the core since it populated the regcache. For Linux processes, a similar operation is achieved by having the thread iterator callback invoke target_fetch_registers on each thread before its corresponding register notes are dumped. gdb/ChangeLog: * fbsd-tdep.c (fbsd_make_corefile_notes): Fetch all target registers before writing core register notes.