From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28205 invoked by alias); 16 Oct 2014 21:41:58 -0000 Mailing-List: contact archer-commits-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: Received: (qmail 28179 invoked by uid 9674); 16 Oct 2014 21:41:58 -0000 Date: Thu, 16 Oct 2014 21:41:00 -0000 Message-ID: <20141016214156.28154.qmail@sourceware.org> From: jkratoch@sourceware.org To: archer-commits@sourceware.org Subject: [SCM] jankratochvil/nohpux: 8e2eed0ce29e18e36bb88d3e269c070a245b74c0 X-Git-Refname: refs/heads/jankratochvil/nohpux X-Git-Reftype: branch X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 8e2eed0ce29e18e36bb88d3e269c070a245b74c0 X-SW-Source: 2014-q4/txt/msg00000.txt.bz2 List-Id: The branch, jankratochvil/nohpux has been created at 8e2eed0ce29e18e36bb88d3e269c070a245b74c0 (commit) - Log ----------------------------------------------------------------- commit 8e2eed0ce29e18e36bb88d3e269c070a245b74c0 Author: Jan Kratochvil Date: Thu Oct 16 23:35:03 2014 +0200 Remove HPUX commit 89c7137fad41711072e2a15ce539e2ad293bd065 Author: Tristan Gingold Date: Thu Oct 16 13:50:07 2014 +0200 Darwin: sanitize %gs and %fs values. Some Darwin kernels return values out of bounds for gs and fs segments. With this commit, they are masked to avoid garbage. gdb/ChangeLog: * i386-darwin-nat.c (i386_darwin_fetch_inferior_registers) (i386_darwin_store_inferior_registers): Sanitize gs and fs values on amd64. commit f1885d1e59a7e6e0627429cd3068740d96f8a184 Author: Alan Modra Date: Thu Oct 16 21:16:07 2014 +1030 Fix 17492, ld segfault with --oformat=binary PR 17492 * elf32-arm.c (elf32_arm_add_symbol_hook): Only set has_gnu_symbols on ELF output bfd. * elf32-i386.c (elf_i386_add_symbol_hook): Likewise. * elf32-m68k.c (elf_m68k_add_symbol_hook): Likewise. * elf32-ppc.c (ppc_elf_add_symbol_hook): Likewise. * elf32-sparc.c (elf32_sparc_add_symbol_hook): Likewise. * elf64-ppc.c (ppc64_elf_add_symbol_hook): Likewise. * elf64-sparc.c (elf64_sparc_add_symbol_hook): Likewise. * elf64-x86-64.c (elf_x86_64_add_symbol_hook): Likewise. * elfxx-aarch64.c (_bfd_aarch64_elf_add_symbol_hook): Likewise. * elf-s390-common.c (elf_s390_add_symbol_hook): Likewise. Handle STB_GNU_UNIQUE too. commit bb99c4726c8926b943e0f525247d2ce0d7ffe6d1 Author: Yao Qi Date: Fri Oct 10 20:52:25 2014 +0800 Don't check noargs in remotetimeout.exp The condition [target_info exists noargs] is checked when remotetimeout.exp was added https://sourceware.org/ml/gdb-patches/2005-02/msg00052.html noargs means GDB does not support argument passing for inferior, rather than doesn't support argument passing to GDB. remotetimeout.exp passes -l to GDB only, doesn't pass any arguments to the inferior. This patch is to remove such unnecessary checking, and remotetimeout.exp then can be run with native-gdbserver board file. gdb/testsuite: 2014-10-16 Yao Qi * gdb.base/remotetimeout.exp: Remove noargs checking. commit 459609d6f8f65d4b4440385499b84cc8c1804f65 Author: Alan Modra Date: Thu Oct 16 09:38:09 2014 +1030 PR17488, powerpc64-linux-ld segfault For binary ouput, we don't have an ELF bfd output so can't access elf_elfheader. The elf64-ppc.c changes are really just a tidy, triggered by looking at all places where the abiversion bits are accessed. bfd/ * elf64-ppc.c (ppc64_elf_before_check_relocs): Do .opd processing even when output is not ppc64 ELF. Remove redundant tests on type of input bfd. ld/ PR 17488 * emultempl/ppc64elf.em (gld${EMULATION_NAME}_finish): Don't attempt to access ELF header e_flags when not ppc64 ELF output. commit 983037647b9ffd052df16fb8e6abfe7e3e8c0683 Author: Alan Modra Date: Thu Oct 16 09:31:12 2014 +1030 daily update commit 83a01957175f787ad5d7ac06885a2c0213e21028 Author: Han Shen Date: Wed Oct 15 15:23:01 2014 -0700 Here we have the patch for gold aarch64 backend to support relaxation. In short relaxation is the linker's generation of stubs that fixes the out-of-range jumps/branches in the original object file. With this implementation, we are able to link a 456MB aarch64 application. Tested: 1) Build natively on x86_64 and aarch64 machines. 2) Pass unit tests regarding relaxation. commit 44ee4a526db6160b302417127e736b73fc00ee87 Author: Pedro Alves Date: Wed Oct 15 22:48:35 2014 +0100 DEC threads: Simplify updating the thread list Seems to me that we can simplify DEC thread's target_update_thread_list implementation, avoiding the need to build the array of GDB threads. I have no way to test this, but then again support for Tru64 is about to be removed. Pushing anyway to have the last version in git be the cleanest one should start from, if this file turns out to be resurrected in the future. gdb/ 2014-10-15 Pedro Alves * dec-thread.c (dec_thread_count_gdb_threads) (dec_thread_add_gdb_thread): Delete. (dec_thread_update_thread_list): Delete. (dec_thread_find_new_threads): Rename to ... (dec_thread_update_thread_list): ... this. Delete GDB-size threads that are no longer found in dec_thread_list. (resync_thread_list): Delete. (dec_thread_wait): Call dec_thread_update_thread_list instead of resync_thread_list. commit ab970af19746364a4f236bebc238ebb036adc898 Author: Pedro Alves Date: Wed Oct 15 22:44:00 2014 +0100 remote: get rid of all the T packets when syncing the thread list This commit avoids the prune_threads call in the remote target's target_update_thread_list's implementation, eliminating all the "thread alive" RSP traffic (one packet per thread) whenever we fetch the thread list. IOW, this: Sending packet: $Tp2141.2150#82...Packet received: OK Sending packet: $Tp2141.214f#b7...Packet received: OK Sending packet: $Tp2141.2141#82...Packet received: OK ... more T packets; it's one per previously known live thread ... Sending packet: $qXfer:threads:read::0,fff#03...Packet received: l\n\n\n\n\n Becomes: Sending packet: $qXfer:threads:read::0,fff#03...Packet received: l\n\n\n\n\n Tested on x86_64 Fedora 20, native gdbserver: - tests the qXfer:threads:read method. Tested on x86_64 Fedora 20, native gdbserver with qXfer:threads:read force-disabled in gdbserver: - So that GDB falls back to the qfThreadInfo/qsThreadInfo method. And also manually smoked tested force disabling both qXfer:threads:read and qfThreadInfo/qsThreadInfo in gdbserver. gdb/ 2014-10-15 Pedro Alves * gdbthread.h (ALL_NON_EXITED_THREADS_SAFE): New macro. * remote.c (remote_update_thread_list): Skip calling prune_threads if any thread listing method is supported, and instead walk over the set of remote threads listed, deleting those that are not found in GDB's thread list. commit e8032dde10b743253125d7defb5f5503b21c1d26 Author: Pedro Alves Date: Wed Oct 15 22:44:00 2014 +0100 Push pruning old threads down to the target When GDB wants to sync the thread list with the target's (e.g., due to "info threads"), it calls update_thread_list: update_thread_list (void) { prune_threads (); target_find_new_threads (); update_threads_executing (); } And then prune_threads does: prune_threads (void) { struct thread_info *tp, *next; for (tp = thread_list; tp; tp = next) { next = tp->next; if (!thread_alive (tp)) delete_thread (tp->ptid); } } Calling thread_live on each thread one by one is expensive. E.g., on Linux, it ends up doing kill(SIG0) once for each thread. Not a big deal, but still a bunch of syscalls... With the remote target, it's cumbersome. That thread_alive call ends up generating one T packet per thread: Sending packet: $Tp2141.2150#82...Packet received: OK Sending packet: $Tp2141.214f#b7...Packet received: OK Sending packet: $Tp2141.2141#82...Packet received: OK Sending packet: $qXfer:threads:read::0,fff#03...Packet received: l\n\n\n\n\n That seems a bit silly when target_find_new_threads method implementations will always fetch the whole current set of target threads, and then add those that are not in GDB's thread list, to GDB's thread list. This patch thus pushes down the responsibility of pruning dead threads to the target_find_new_threads method instead, so a target may implement pruning dead threads however it wants. Once we do that, target_find_new_threads becomes a misnomer, so the patch renames it to target_update_thread_list. The patch doesn't attempt to do any optimization to any target yet. It simply exports prune_threads, and makes all implementations of target_update_thread_list call that. It's meant to be a no-op. gdb/ 2014-10-15 Pedro Alves * ada-tasks.c (print_ada_task_info, task_command_1): Adjust. * bsd-uthread.c (bsd_uthread_find_new_threads): Rename to ... (bsd_uthread_update_thread_list): ... this. Call prune_threads. (bsd_uthread_target): Adjust. * corelow.c (core_open): Adjust. * dec-thread.c (dec_thread_find_new_threads): Update comment. (dec_thread_update_thread_list): New function. (init_dec_thread_ops): Adjust. * gdbthread.h (prune_threads): New declaration. * linux-thread-db.c (thread_db_find_new_threads): Rename to ... (thread_db_update_thread_list): ... this. Call prune_threads. (init_thread_db_ops): Adjust. * nto-procfs.c (procfs_find_new_threads): Rename to ... (procfs_update_thread_list): ... this. Call prune_threads. (procfs_attach, procfs_create_inferior, init_procfs_targets): Adjust. * obsd-nat.c (obsd_find_new_threads): Rename to ... (obsd_update_thread_list): ... this. Call prune_threads. (obsd_add_target): Adjust. * procfs.c (procfs_target): Adjust. (procfs_notice_thread): Update comment. (procfs_find_new_threads): Rename to ... (procfs_update_thread_list): ... this. Call prune_threads. * ravenscar-thread.c (ravenscar_update_inferior_ptid): Update comment. (ravenscar_wait): Adjust. (ravenscar_find_new_threads): Rename to ... (ravenscar_update_thread_list): ... this. Call prune_threads. (init_ravenscar_thread_ops): Adjust. * record-btrace.c (record_btrace_find_new_threads): Rename to ... (record_btrace_update_thread_list): ... this. Adjust comment. (init_record_btrace_ops): Adjust. * remote.c (remote_threads_info): Rename to ... (remote_update_thread_list): ... this. Call prune_threads. (remote_start_remote, extended_remote_attach_1, init_remote_ops): Adjust. * sol-thread.c (check_for_thread_db): Adjust. (sol_find_new_threads_callback): Rename to ... (sol_update_thread_list_callback): ... this. (sol_find_new_threads): Rename to ... (sol_update_thread_list): ... this. Call prune_threads. Adjust. (sol_get_ada_task_ptid, init_sol_thread_ops): Adjust. * target-delegates.c: Regenerate. * target.c (target_find_new_threads): Rename to ... (target_update_thread_list): ... this. * target.h (struct target_ops): Rename to_find_new_threads field to to_update_thread_list. (target_find_new_threads): Rename to ... (target_update_thread_list): ... this. * thread.c (prune_threads): Make extern. (update_thread_list): Adjust. commit 6dc54d9124e8ef9ef3611e0ef3eefef5dcd87ee4 Author: Pedro Alves Date: Wed Oct 15 22:43:59 2014 +0100 Merge remote thread listing methods We have three methods to list the current remote thread list: 1. The qXfer:threads:read method (the preferred one nowadays), builds a remote thread list while parsing the XML, and then after the XML parsing is done, goes over the built list and adds threads GDB doesn't know about yet to GDB's list. 2. If the qXfer method isn't available, we fallback to using the qfThreadInfo/qsThreadInfo packets. When we do this, we adds threads to GDB's list immediately as we parse the qfThreadInfo/qsThreadInfo packet replies. 3. And then if the previous method isn't available either, we try the old deprecated qL packet. This path is already looking somewhat broken for not using remote_notice_new_inferior to add threads to GDB's list. This patch makes all variants work in two passes, like the qXfer method, and then makes all variants share the code path that adds threads to GDB's list. Tested on x86_64 Fedora 20 with native gdbserver. gdb/ 2014-10-15 Pedro Alves * remote.c (remote_get_threadlist, remote_threadlist_iterator): Add describing comment. Return -1 if the qL packet is not supported. (struct thread_item, thread_item_t): Move higher up in the file. Add comments. (struct threads_parsing_context): Move higher up in the file, add comments, and remote to ... (struct threads_listing_context): ... this. (remote_newthread_step): Don't add the thread to GDB's thread database here. Instead push it to the thread_listing_context list. (remote_find_new_threads): Rename to ... (remote_get_threads_with_ql): ... this. Add target_ops and targets_listing_context parameters. Pass down context. (start_thread): Adjust. (clear_threads_parsing_context): Rename to ... (clear_threads_listing_context): ... this. (remote_get_threads_with_qxfer): New, with parts salvaged from old remote_threads_info. (remote_get_threads_with_qthreadinfo): Ditto. (remote_threads_info): Reimplement. commit 36728e82bd9bb5b472eb569dc11b8f2296d5e3df Author: Pedro Alves Date: Wed Oct 15 20:18:32 2014 +0100 Non-stop + software single-step archs: don't force displaced-stepping for all single-steps This finally reverts this bit of commit 929dfd4f: 2009-07-31 Pedro Alves Julian Brown ... (resume): If this is a software single-stepping arch, and displaced-stepping is enabled, use it for all single-step requests. ... That means that in non-stop (or really displaced-stepping) mode, on software single-step archs - even those that only use sss breakpoints to deal with atomic sequences, like PPC - if we have more than one thread single-stepping, we'll always serialize the threads' single-steps, as only one thread may be displaced stepping at a given time, because there's only one scratch pad. We originally did that because GDB didn't support having multiple threads software-single-stepping simultaneously. The previous patches fixed that limitation, so we can now finally revert this too. Tested on: - x86_64 Fedora 20, on top of the 'software single-step on x86' series. gdb/ 2014-10-15 Pedro Alves * infrun.c (resume): Don't force displaced-stepping for all single-steps on software single-stepping archs. commit 34b7e8a6ad0a735ecc0a953c8b65846d4776c88e Author: Pedro Alves Date: Wed Oct 15 20:18:32 2014 +0100 Make single-step breakpoints be per-thread This patch finally makes each thread have its own set of single-step breakpoints. This paves the way to have multiple threads software single-stepping, though this patch doesn't flip that switch on yet. That'll be done on a subsequent patch. gdb/ 2014-10-15 Pedro Alves * breakpoint.c (single_step_breakpoints): Delete global. (insert_single_step_breakpoint): Adjust to store the breakpoint pointer in the current thread. (single_step_breakpoints_inserted, remove_single_step_breakpoints) (cancel_single_step_breakpoints): Delete functions. (breakpoint_has_location_inserted_here): Make extern. (single_step_breakpoint_inserted_here_p): Adjust to walk the breakpoint list. * breakpoint.h (breakpoint_has_location_inserted_here): New declaration. (single_step_breakpoints_inserted, remove_single_step_breakpoints) (cancel_single_step_breakpoints): Remove declarations. * gdbthread.h (struct thread_control_state) : New field. (delete_single_step_breakpoints) (thread_has_single_step_breakpoints_set) (thread_has_single_step_breakpoint_here): New declarations. * infrun.c (follow_exec): Also clear the single-step breakpoints. (singlestep_breakpoints_inserted_p, singlestep_ptid) (singlestep_pc): Delete globals. (infrun_thread_ptid_changed): Remove references to removed globals. (resume_cleanups): Delete the current thread's single-step breakpoints. (maybe_software_singlestep): Remove references to removed globals. (resume): Adjust to use thread_has_single_step_breakpoints_set and delete_single_step_breakpoints. (init_wait_for_inferior): Remove references to removed globals. (delete_thread_infrun_breakpoints): Delete the thread's single-step breakpoints too. (delete_just_stopped_threads_infrun_breakpoints): Don't delete single-step breakpoints here. (delete_stopped_threads_single_step_breakpoints): New function. (adjust_pc_after_break): Adjust to use thread_has_single_step_breakpoints_set. (handle_inferior_event): Remove references to removed globals. Use delete_stopped_threads_single_step_breakpoints. (handle_signal_stop): Adjust to per-thread single-step breakpoints. Swap test order to do cheaper tests first. (switch_back_to_stepped_thread): Extend debug output. Remove references to removed globals. * record-full.c (record_full_wait_1): Adjust to per-thread single-step breakpoints. * thread.c (delete_single_step_breakpoints) (thread_has_single_step_breakpoints_set) (thread_has_single_step_breakpoint_here): New functions. (clear_thread_inferior_resources): Also delete the thread's single-step breakpoints. commit 5b834a0a5da717c7d1a8d539623e75f07a474e32 Author: Pedro Alves Date: Wed Oct 15 20:18:32 2014 +0100 thread.c: cleanup breakpoint deletion A little refactoring to reduce duplicate code. gdb/ 2014-10-15 Pedro Alves * thread.c (delete_thread_breakpoint): New function. (delete_step_resume_breakpoint) (delete_exception_resume_breakpoint): Use it. (delete_at_next_stop): New function. (clear_thread_inferior_resources): Use delete_at_next_stop. commit a1fd2fa5999a17bc94fa8348326bc75ddb93476c Author: Pedro Alves Date: Wed Oct 15 20:18:31 2014 +0100 Remove deprecated_insert_raw_breakpoint and friends There are no users of deprecated_{insert,remove}_raw_breakpoint left. gdb/ 2014-10-15 Pedro Alves * breakpoint.c (regular_breakpoint_inserted_here_p): Inline ... (breakpoint_inserted_here_p): ... here. Remove special case for software single-step breakpoints. (find_non_raw_software_breakpoint_inserted_here): Inline ... (software_breakpoint_inserted_here_p): ... here. Remove special case for software single-step breakpoints. (bp_target_info_copy_insertion_state) (deprecated_insert_raw_breakpoint) (deprecated_remove_raw_breakpoint): Delete functions. * breakpoint.h (deprecated_insert_raw_breakpoint) (deprecated_remove_raw_breakpoint): Remove declarations. commit 7c16b83e0521a007e4d86fc30e334b41b01668b4 Author: Pedro Alves Date: Wed Oct 15 20:18:31 2014 +0100 Put single-step breakpoints on the bp_location chain This patch makes single-step breakpoints "real" breakpoints on the global location list. There are several benefits to this: - It removes the currently limitation that only 2 single-step breakpoints can be inserted. See an example here of a discussion around a case that wants more than 2, possibly unbounded: https://sourceware.org/ml/gdb-patches/2014-03/msg00663.html - makes software single-step work on read-only code regions. The logic to convert a software breakpoint to a hardware breakpoint if the memory map says the breakpoint address is in read only memory is in insert_bp_location. Because software single-step breakpoints bypass all that go and straight to target_insert_breakpoint, we can't software single-step over read only memory. This patch removes that limitation, and adds a test that makes sure that works, by forcing a code region to read-only with "mem LOW HIGH ro" and then stepping through that. - Fixes PR breakpoints/9649 This is an assertion failure in insert_single_step_breakpoint in breakpoint.c, because we may leave stale single-step breakpoints behind on error. The tests for stepping through read-only regions exercise the root cause of the bug, which is that we leave single-step breakpoints behind if we fail to insert any single-step breakpoint. Deleting the single-step breakpoints in resume_cleanups, delete_just_stopped_threads_infrun_breakpoints, and fetch_inferior_event fixes this. Without that, we'd no longer hit the assertion, as that code is deleted, but we'd instead run into errors/warnings trying to insert/remove the stale breakpoints on next resume. - Paves the way to have multiple threads software single-stepping at the same time, leaving update_global_location_list to worry about duplicate locations. - Makes the moribund location machinery aware of software single-step breakpoints, paving the way to enable software single-step on non-stop, instead of forcing serialized displaced stepping for all single steps. - It's generaly cleaner. We no longer have to play games with single-step breakpoints inserted at the same address as regular breakpoints, like we recently had to do for 7.8. See this discussion: https://sourceware.org/ml/gdb-patches/2014-06/msg00052.html. Tested on x86_64 Fedora 20, on top of my 'single-step breakpoints on x86' series. gdb/ 2014-10-15 Pedro Alves PR breakpoints/9649 * breakpoint.c (single_step_breakpoints, single_step_gdbarch): Delete array globals. (single_step_breakpoints): New global. (breakpoint_xfer_memory): Remove special handling for single-step breakpoints. (update_breakpoints_after_exec): Delete bp_single_step breakpoints. (detach_breakpoints): Remove special handling for single-step breakpoints. (breakpoint_init_inferior): Delete bp_single_step breakpoints. (bpstat_stop_status): Add comment. (bpstat_what, bptype_string, print_one_breakpoint_location) (adjust_breakpoint_address, init_bp_location): Handle bp_single_step. (new_single_step_breakpoint): New function. (set_momentary_breakpoint, bkpt_remove_location): Remove special handling for single-step breakpoints. (insert_single_step_breakpoint, single_step_breakpoints_inserted) (remove_single_step_breakpoints, cancel_single_step_breakpoints): Rewrite. (detach_single_step_breakpoints, find_single_step_breakpoint): Delete functions. (breakpoint_has_location_inserted_here): New function. (single_step_breakpoint_inserted_here_p): Rewrite. * breakpoint.h: Remove FIXME. (enum bptype) : New enum value. (insert_single_step_breakpoint): Update comment. * infrun.c (resume_cleanups) (delete_step_thread_step_resume_breakpoint): Remove single-step breakpoints. (fetch_inferior_event): Install a cleanup that removes infrun breakpoints. (switch_back_to_stepped_thread) : Clear step-over info. gdb/testsuite/ 2014-10-15 Pedro Alves PR breakpoints/9649 * gdb.base/breakpoint-in-ro-region.c (main): Add more instructions. * gdb.base/breakpoint-in-ro-region.exp (probe_target_hardware_step): New procedure. (top level): Probe hardware stepping and hardware breakpoint support. Test stepping through a read-only region, with both "breakpoint auto-hw" on and off and both "always-inserted" on and off. commit 0cbcdb96eaba80fe8e94ccc2b6f1f382a467a04e Author: Pedro Alves Date: Wed Oct 15 20:18:30 2014 +0100 infrun.c: add for_each_just_stopped_thread This is a preparatory/cleanup patch that does two things: - Renames 'delete_step_thread_step_resume_breakpoint'. The "step_resume" part is misnomer these days, as the function deletes other kinds of breakpoints, not just the step-resume breakpoint. A following patch will want to make it delete yet another kind of breakpoint, even. - Splits out the logic of which threads get those breakpoints deleted to a separate "for_each"-style function, so that the same following patch may use it with a different callback. Tested on x86_64 Fedora 20. gdb/ 2014-10-15 Pedro Alves * infrun.c (delete_step_resume_breakpoint_callback): Delete. (delete_thread_infrun_breakpoints): New function, with parts salvaged from delete_step_resume_breakpoint_callback. (delete_step_thread_step_resume_breakpoint): Delete. (for_each_just_stopped_thread_callback_func): New typedef. (for_each_just_stopped_thread): New function. (delete_just_stopped_threads_infrun_breakpoints): New function. (delete_step_thread_step_resume_breakpoint_cleanup): Rename to ... (delete_just_stopped_threads_infrun_breakpoints_cleanup): ... this. Adjust. (wait_for_inferior, fetch_inferior_event): Adjust to renames. commit 963f9c80cb3f12fb779cf3189072ac48946da96c Author: Pedro Alves Date: Wed Oct 15 20:18:30 2014 +0100 Rewrite non-continuable watchpoints handling When GDB finds out the target triggered a watchpoint, and the target has non-continuable watchpoints, GDB sets things up to step past the instruction that triggered the watchpoint. This is just like stepping past a breakpoint, but goes through a different mechanism - it resumes only the thread that needs to step past the watchpoint, but also switches a "infwait state" global, that has the effect that the next target_wait only wait for events only from that thread. This forcing of a ptid to pass to target_wait obviously becomes a bottleneck if we ever support stepping past different watchpoints simultaneously (in separate processes). It's also unnecessary -- the target should only return events for threads that have been resumed; if no other thread than the one we're stepping past the watchpoint has been resumed, then those other threads should not report events. If we couldn't assume that, then stepping past regular breakpoints would be broken for not likewise forcing a similar infwait_state. So this patch eliminates infwait_state, and instead teaches keep_going to mark step_over_info in a way that has the breakpoints module skip inserting watchpoints (because we're stepping past one), like it skips breakpoints when we're stepping past one. Tested on: - x86_64 Fedora 20 (continuable watchpoints) - PPC64 Fedora 18 (non-steppable watchpoints) gdb/ 2014-10-15 Pedro Alves * breakpoint.c (should_be_inserted): Don't insert watchpoints if trying to step past a non-steppable watchpoint. * gdbthread.h (struct thread_info) : New field. * infrun.c (struct step_over_info): Add new field 'nonsteppable_watchpoint_p' and adjust comments. (set_step_over_info): New 'nonsteppable_watchpoint_p' parameter. Adjust. (clear_step_over_info): Clear nonsteppable_watchpoint_p as well. (stepping_past_nonsteppable_watchpoint): New function. (step_over_info_valid_p): Also return true if stepping past a nonsteppable watchpoint. (proceed): Adjust call to set_step_over_info. Remove reference to init_infwait_state. (init_wait_for_inferior): Remove reference to init_infwait_state. (waiton_ptid): Delete global. (struct execution_control_state) : Delete field. (wait_for_inferior, fetch_inferior_event): Always pass minus_one_ptid to target_wait. (init_thread_stepping_state): Clear 'stepping_over_watchpoint' field. (init_infwait_state): Delete function. (handle_inferior_event): Remove infwait_state handling. (handle_signal_stop) : Adjust after stepped_after_stopped_by_watchpoint removal. Don't remove breakpoints here nor set infwait_state. Set the thread's stepping_over_watchpoint flag, and call keep_going instead. (keep_going): Handle stepping_over_watchpoint. Adjust set_step_over_info calls. * infrun.h (stepping_past_nonsteppable_watchpoint): Declare function. commit 6cc83d2a4000e89e4f6f2eb33ffade2d72acfa0f Author: Pedro Alves Date: Wed Oct 15 20:18:29 2014 +0100 Decide whether we may have removed breakpoints based on step_over_info ... instead of trap_expected. Gets rid of one singlestep_breakpoints_inserted_p reference, and is generally more to the point. gdb/ 2014-10-15 Pedro Alves * infrun.c (step_over_info_valid_p): New function. (resume): Use step_over_info_valid_p instead of checking the threads's trap_expected flag. commit a2abc7de6804e7e9882a86375767b24a6c215f28 Author: Pedro Alves Date: Wed Oct 15 19:55:50 2014 +0100 gdbserver/win32: Rewrite debug registers handling Don't use debug_reg_state for both: * "intent" - what we want the debug registers to look like * "reality" - what/which were the contents of the DR registers when the event triggered Reserve it for the former only, like in the GNU/Linux port. Otherwise the core x86 debug registers code can get confused if the inferior itself changes the debug registers since GDB last set them. This is also a requirement for being able to set watchpoints while the target is running, if/when we get to it on Windows. See the big comment in x86_dr_stopped_data_address. Seems to me this may also fixes propagating watchpoints to all threads -- continue_one_thread only calls win32_set_thread_context (what copies the DR registers to the thread), if something already fetched the thread's context before. Something else may be masking this issue, I haven't checked. Smoke tested by running gdbserver under Wine, connecting to it from GNU/Linux, and checking that I could trigger a watchpoint as expected. Joel tested it on x86-windows using AdaCore's testsuite. gdb/gdbserver/ 2014-10-15 Pedro Alves PR server/17487 * win32-arm-low.c (arm_set_thread_context): Remove current_event parameter. (arm_set_thread_context): Delete. (the_low_target): Adjust. * win32-i386-low.c (debug_registers_changed) (debug_registers_used): Delete. (update_debug_registers_callback): New function. (x86_dr_low_set_addr, x86_dr_low_set_control): Mark all threads as needing to update their debug registers. (win32_get_current_dr): New function. (x86_dr_low_get_addr, x86_dr_low_get_control) (x86_dr_low_get_status): Fetch the debug register from the thread record's context. (i386_initial_stuff): Adjust. (i386_get_thread_context): Remove current_event parameter. Don't clear debug_registers_changed nor copy DR values to debug_reg_state. (i386_set_thread_context): Delete. (i386_prepare_to_resume): New function. (i386_thread_added): Mark the thread as needing to update irs debug registers. (the_low_target): Remove i386_set_thread_context and install i386_prepare_to_resume. * win32-low.c (win32_get_thread_context): Adjust. (win32_set_thread_context): Use SetThreadContext directly. (win32_prepare_to_resume): New function. (win32_require_context): New function, factored out from ... (thread_rec): ... this. (continue_one_thread): Call win32_prepare_to_resume on each thread we're about to continue. (win32_resume): Call win32_prepare_to_resume on the event thread. * win32-low.h (struct win32_thread_info) : New field. (struct win32_target_ops): Change prototype of set_thread_context, delete set_thread_context and add prepare_to_resume. (win32_require_context): New declaration. commit 6979730b1b9378a143b1bea3d0ff7b96c7bf02c5 Author: Doug Evans Date: Wed Oct 15 11:43:49 2014 -0700 PR python/17364 gdb/ChangeLog: * python/lib/gdb/__init__.py (packages): Add "printer". * python/lib/gdb/command/bound_registers.py: Moved to ... * python/lib/gdb/printer/bound_registers.py: ... here. Add printer to global set of builtin printers. Rename printer from "bound" to "mpx_bound128". * python/lib/gdb/printing.py (_builtin_pretty_printers): New global, registered as global "builtin" printer. (add_builtin_pretty_printer): New function. * data-directory/Makefile.in (PYTHON_FILE_LIST): Update, and add gdb/printer/__init__.py. commit 35a49624e2eda82351518e40d26d6deb86fdacc0 Author: Iain Buclaw Date: Wed Oct 15 19:28:19 2014 +0100 Remove d-support.c and use gdb_demangle for demangling D symbols. gdb/ChangeLog * Makefile.in (SFILES): Remove d-support.c. (COMMON_OBS): Remove d-support.o. * d-lang.h (d_parse_symbol): Remove declaration. * d-lang.c (d_demangle): Use gdb_demangle to demangle D symbols. * d-support.c: Remove file. gdb/testsuite/ChangeLog * gdb.dlang/demangle.exp: Update for demangling changes. commit 8fa0c4f8ed9e520c39132bc62d51a490a17c537f Author: Andreas Arnez Date: Thu Oct 9 11:32:22 2014 +0000 Remove non-address bits for longjmp resume breakpoint On 32-bit S390 targets the longjmp target address "naturally" has the most significant bit set. That bit indicates the addressing mode and is not part of the address itself. Thus, in analogy with similar cases (like when computing the caller PC in insert_step_resume_breakpoint_at_caller), this change removes non-address bits from the longjmp target address before using it as a breakpoint address. Note that there are two ways for determining the longjmp target address: via a probe or via a gdbarch method. This change only affects the probe method, because it is assumed that the address returned by the gdbarch method is usable as-is. This change was tested together with a patch that enables longjmp probes in glibc for S/390: https://sourceware.org/ml/libc-alpha/2014-10/msg00277.html gdb/ChangeLog: * gdb/infrun.c (process_event_stop_test): Apply gdbarch_addr_bits_remove to longjmp resume address. commit 3666da817e330c563c261cbe9086f4825f74de42 Author: Pedro Alves Date: Wed Oct 15 16:21:59 2014 +0100 Delete gdb/regformats/microblaze.dat This file: - Isn't used by GDBserver currently. - Isn't included in the WHICH list in features/Makefile, so hasn't been regenerated to pick the latest microblaze or generic fixes. Just delete it. gdb/ 2014-10-15 Pedro Alves * regformats/microblaze.dat: Delete file. commit 449aa9dfd1505925a4a5dfff470f24a17699b5bc Author: Ajit Kumar Agarwal Date: Mon Oct 13 14:28:22 2014 +0530 Microblaze: Replace microblaze-expedite from pc to rpc The Microblaze PC register is called "rpc", not "pc", as can be seen in microblaze-core.xml. Fix this, so GDBserver can find the register in the regcache. gdb/ 2014-10-15 Ajit Agarwal * features/Makefile (microblaze-expedite): Replace pc with rpc. * regformats/microblaze-with-stack-protect.dat: Regenerate. commit fb167eb272279154dc2502614eb5331b01dc6ea4 Author: Alan Modra Date: Wed Oct 15 21:52:20 2014 +1030 Merge bfd_find_nearest_line variants When bfd_find_nearest_line_discriminator was added, not enough care was taken to ensure all targets had a proper definition of the function. This patch cures that by merging bfd_find_nearest_line_discriminator and bfd_find_nearest_line target implementations. PR 17481 * aoutx.h (NAME (aout, find_nearest_line)): Add "discriminator_ptr" param, group "section" and "offset" params. Zero discriminator. * bfd.c (bfd_find_nearest_line): Implement with new _bfd_find_nearest_line. (bfd_find_nearest_line_discriminator): Likewise. * coff-i386.c (_bfd_generic_find_nearest_line_discriminator): Don't define. * coff-rs6000.c (xcoff_find_nearest_line, xcoff_find_nearest_line_discriminator): Delete. (_bfd_xcoff_find_nearest_line): Don't define. (_bfd_xcoff_find_nearest_line): Define as coff_find_nearest_line. * coff-x86_64.c (_bfd_generic_find_nearest_line_discriminator): Don't define. * coff64-rs6000.c (rs6000_xcoff64_vec, rs6000_xcoff64_aix_vec): Adjust. * coffgen.c (coff_find_nearest_line_with_names): Reorder params, adjust _bfd_dwarf2_find_nearest_line call. (coff_find_nearest_line): Add "discriminator_ptr" param, reorder others. Set discriminator. Adjust call. (coff_find_nearest_line_discriminator): Delete. * dwarf1.c (_bfd_dwarf1_find_nearest_line): Reorder params. * dwarf2.c (find_line): Rename to.. (_bfd_dwarf2_find_nearest_line): ..this, reordering params. Simplify setting of do_line. Delete old function. (_bfd_dwarf2_find_line): Delete. * ecoff.c (_bfd_ecoff_find_nearest_line): Reorder params, add discriminator_ptr and set it. * elf-bfd.h (_bfd_elf_find_nearest_line): Update prototype. (_bfd_elf_find_nearest_line_discriminator): Delete. (_bfd_elf_find_line_discriminator): Delete. (_bfd_generic_find_nearest_line_discriminator): Don't define. * elf.c (elf_find_function): Reorder params. (_bfd_elf_find_nearest_line): Reorder params, add discriminator_ptr. Adjust calls. (_bfd_elf_find_nearest_line_discriminator): Delete. (_bfd_elf_find_line): Adjust call. * elf32-arm.c (arm_elf_find_function): Reorder params. (elf32_arm_find_nearest_line): Reorder params, add discriminator_ptr. Adjust calls. * elf64-alpha.c (elf64_alpha_find_nearest_line): Similarly. * elfnn-aarch64.c (aarch64_elf_find_function): Reorder params. (elfNN_aarch64_find_nearest_line): Reorder params, add discriminator_ptr. Adjust calls. * elfxx-mips.c (_bfd_mips_elf_find_nearest_line): Similarly. * elfxx-mips.h (_bfd_mips_elf_find_nearest_line): Update prototype. * libaout.h (NAME (aout, find_nearest_line)): Update prototype. * libbfd-in.h (_bfd_nosymbols_find_nearest_line): Update. (_bfd_dwarf1_find_nearest_line): Likewise. (_bfd_dwarf2_find_nearest_line): Likewise. (_bfd_dwarf2_find_line): Delete. (_bfd_generic_find_nearest_line_discriminator): Delete. * libbfd.c (_bfd_generic_find_nearest_line_discriminator): Delete. * libcoff-in.h (coff_find_nearest_line): Update prototype. (coff_find_nearest_line_discriminator): Delete. (coff_find_nearest_line_with_names): Update prototype. * libecoff.h (_bfd_ecoff_find_nearest_line): Update prototype. * mach-o.c (bfd_mach_o_find_nearest_line): Reorder params, add discriminator_ptr. Adjust calls. * mach-o.h (bfd_mach_o_find_nearest_line): Update prototype. * pdp11.c (NAME (aout, find_nearest_line)): Reorder params, add discriminator_ptr and set. * som.c (som_find_nearest_line): Similarly. * targets.c (BFD_JUMP_TABLE_SYMBOLS): Delete entry for _bfd_find_nearest_line_discriminator. (struct bfd_target <_bfd_find_nearest_line>): Adjust prototype. (struct bfd_target <_bfd_find_nearest_line_discriminator>): Delete. * vms-alpha.c (_bfd_vms_find_nearest_dst_line): Rename to.. (_bfd_vms_find_nearest_line): ..this. Reorder params, add "discriminator" and set. (_bfd_vms_find_nearest_line_discriminator): Delete. (_bfd_generic_find_nearest_line_discriminator): Don't define. (alpha_vms_find_nearest_line): Update define. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * libcoff.h: Regenerate. commit 9c461f7dba0ab17227ec3ada32804ed7f7c1a4d2 Author: Alan Modra Date: Wed Oct 15 15:40:45 2014 +1030 Define bfd_find_line entry of BFD_JUMP_TABLE_SYMBOLS using NAME. In https://www.sourceware.org/ml/binutils/2005-06/msg00082.html HJ implemented bfd_find_line for DWARF2, but cheated a little in not using the usual NAME##_find_line, saving quite a lot of boring editing. However that shortcut probably contributed to bfd_find_nearest_line_discriminator being implemented the same way, and missing support for some targets. * targets.c (BFD_JUMP_TABLE_SYMBOLS): Use NAME##_find_line. * aout-adobe.c (aout_32_find_line): Define. (aout_32_bfd_make_debug_symbol, aout_32_bfd_reloc_type_lookup, aout_32_bfd_reloc_name_lookup): Define using _bfd_nosymbols define. * aout-target.h (MY_find_line): Define. * aout-tic30.c (MY_find_line): Define. * binary.c (binary_find_line): Define. * bout.c (aout_32_find_line): Define. * coff-rs6000.c (_bfd_xcoff_find_line): Define. * coff64-rs6000.c (rs6000_xcoff64_vec): Use coff_find_line. (rs6000_xcoff64_aix_vec): Likewise. * elf-bfd.h (_bfd_generic_find_line): Don't define. * elfxx-target.h (bfd_elfNN_find_line): Define. * i386msdos.c (msdos_find_line): Define. * i386os9k.c (aout_32_find_line): Define. * ieee.c (ieee_find_nearest_line, ieee_find_inliner_info): Delete func. (ieee_find_nearest_line, ieee_find_line, ieee_find_inliner_info): Define. * ihex.c (ihex_find_line): Define. * libbfd-in.h (_bfd_nosymbols_find_line): Define. (_bfd_generic_find_line): Don't define. * libbfd.c (_bfd_generic_find_line): Delete. * libcoff-in.h (coff_find_line): Define. * libecoff.h (_bfd_ecoff_find_line): Define. * mach-o.h (bfd_mach_o_find_line): Define. * mmo.c (mmo_find_line): Define. * nlm-target.h (nlm_find_line): Define. * oasys.c (oasys_find_nearest_line, oasys_find_inliner_info): Delete. (oasys_find_nearest_line, oasys_find_line, oasys_find_inliner_info): Define. * pef.c (bfd_pef_find_line): Define. * plugin.c (bfd_plugin_find_line): Define. * ppcboot.c (ppcboot_find_line): Define. * som.c (som_find_line): Define. * srec.c (srec_find_line): Define. * tekhex.c (tekhex_find_line): Define. * versados.c (versados_find_line): Define. * vms-alpha.c (alpha_vms_find_line): Define. * xsym.c (bfd_sym_find_line): Define. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * libcoff.h: Regenerate. commit ebb8ece2ef50ba3f86e8b4ab7a22a4c7734d114b Author: Siva Chandra Date: Tue Sep 9 06:50:26 2014 -0700 Fix gnuv3_pass_by_reference to treat dynamic classes as non-trivial. gdb/ChangeLog: * gnu-v3-abi.c (gnuv3_pass_by_reference): Treat dynamic classes as non-trivial. commit 2d1c107c1b8835f4e85c35320d8595a4a6fcaebe Author: Siva Chandra Date: Tue Sep 9 06:46:14 2014 -0700 Add new non-trial return value tests. gdb/testsuite/ChangeLog: * gdb.cp/non-trivial-retval.cc: Add new test cases. * gdb.cp/non-trivial-retval.exp: Add new tests. commit 82c48ac732edb0155288a93ef3dd39625ff2d2e1 Author: Siva Chandra Date: Tue Sep 9 06:03:42 2014 -0700 Fix gnuv3_pass_by_reference to lookup copy c-tors with qualified args. Before this, a copy constructor declared as in the following snippet was not being treated as a copy constructor. class A { public: A (A &); // OK. A (const A &); // Not being treated as a copy constructor because of the // 'const' qualifier. }; gdb/ChangeLog: PR c++/13403 PR c++/15154 * gnu-v3-abi.c (gnuv3_pass_by_reference): Lookup copy constructors with qualified args. commit 778811d5e7eb96b5ecb848033ffaa2df455a921e Author: Siva Chandra Date: Mon Sep 8 07:04:59 2014 -0700 Non trivial return value tests. gdb/testsuite/ChangeLog: PR c++/13403 PR c++/15154 * gdb.cp/non-trivial-retval.cc: New file. * gdb.cp/non-trivial-retval.exp: New file. commit 91dc4e0a22515bec2d60a8a402970bca5042f26f Author: Tristan Gingold Date: Wed Oct 15 10:21:25 2014 +0200 Bump bfd version. bfd/ 2014-10-15 Tristan Gingold * version.m4: Bump version to 2.25.51 * configure: Regenerate. binutils/ 2014-10-15 Tristan Gingold * configure: Regenerate. gas/ 2014-10-15 Tristan Gingold * configure: Regenerate. gprof/ 2014-10-15 Tristan Gingold * configure: Regenerate. ld/ 2014-10-15 Tristan Gingold * configure: Regenerate. opcodes/ 2014-10-15 Tristan Gingold * configure: Regenerate. commit 3e6153932030c3b6e5720f0a331e9a512f4522e6 Author: Tristan Gingold Date: Wed Oct 15 09:50:53 2014 +0200 src-release.sh: configure using --target. * src-release.sh (do_proto_toplev): Configure with --target. commit 10c5f0a8a83c4fcec433a2498c4d205921413e6a Author: Yao Qi Date: Mon Sep 15 19:06:22 2014 +0800 Fix py-parameter.exp for remote host Test gdb.python/py-parameter.exp expects output "$srcdir/$subdir:\$cdir:\$cwd", but proc gdb_reinitialize_dir doesn't set $srcdir/$subdir in search directories on remote host because it doesn't exist on remote host. proc gdb_reinitialize_dir { subdir } { global gdb_prompt if [is_remote host] { return "" } It causes the fail below: (gdb) python print (gdb.parameter ('directories'))^M /tmp/gdb:$cdir:$cwd^M (gdb) FAIL: gdb.python/py-parameter.exp: python print (gdb.parameter ('directories')) This patch is to fix this fail by not matching $srcdir/$subdir on remote host. gdb/testsuite: 2014-10-15 Yao Qi * gdb.python/py-parameter.exp: Don't match $srcdir/$subdir on remote host. commit 65d7b369af5b9557cde8fbe6f63cefa215c0af60 Author: Yao Qi Date: Mon Sep 15 17:40:54 2014 +0800 Fix file name matching on remote host. I see the following fails in the remote host testing we do for mingw32 hosted GDB, python print (symtab[1][0].symtab)^M python.c^M (gdb) FAIL: gdb.python/python.exp: Test decode_line current locationn filename python print (symtab[1][0].symtab)^M python.c^M (gdb) FAIL: gdb.python/python.exp: Test decode_line python.c:26 filename The test cases doesn't consider remote host and assumes that directory on build also exists on host. In this patch, we only match file base name if host is remote, otherwise, match file with dir name. gdb/testsuite: 2014-10-15 Yao Qi * gdb.python/py-symbol.exp: Match file base name if host is remote, otherwise match file name with dir name. * gdb.python/py-symtab.exp: Likewise. * gdb.python/python.exp: Likewise. commit 46dc13946233b4b5ac2b34fb78e19fe60cd0606a Author: Yao Qi Date: Mon Sep 15 16:41:39 2014 +0800 Clean up gdb.python/ tests This patch is to clean up various gdb.python/*.exp tests, such as removing trailing ".*" from the pattern and fix one typo I find during reading the code. gdb/testsuite: 2014-10-15 Yao Qi * gdb.python/python.exp: Remove trailing ".*". Fix typo locationn. * gdb.python/py-symbol.exp: Remove trailing ".*" in the pattern. * gdb.python/py-symtab.exp: Likewise. commit eeed9cc785ca447868967e5c84dae63e9ca8e6c2 Author: Hans-Peter Nilsson Date: Wed Oct 15 03:10:25 2014 +0200 Allow unquoted = as the first character in ldscript input_list names * ldlex.l (INPUTLIST): New start condition. (comment pattern, ",", "(", ")", "AS_NEEDED") ({FILENAMECHAR1}{FILENAMECHAR}*, "-l"{FILENAMECHAR}+) (quoted string pattern, whitespace pattern): Add INPUTLIST to valid start conditions. ("="{FILENAMECHAR1}{FILENAMECHAR}*): New NAME rule. (ldlex_inputlist): New start-condition-setter function. * ldgram.y (input_list1): Rename from input_list. All recursive use changed. (input_list): New wrapper rule for input_list1, setting INPUTLIST lexer state for the duration of parsing input_list1. All this to say INPUT(=/path/to/file) and not be forced to use INPUT("=/path/to/file") whenever there's a need to force a sysroot- prefix. Still, IMHO it seems better to make use of a previously invalid syntax and not only change the meaning of quoted =-prefixed paths (though arguably that's not very useful before this patchset). This got a little bit hairier than I'd expected: I had to add a new lexer state (aka. start condition) to avoid a first "=" being lexed as the token "=", despite that not making sense in constructs expecting file-names in the first place. (The grammar doesn't allow for expressions in any part of those lists.) I guess I *could* have made it work using that token anyway, but I didn't like the idea that you would be able to separate the "=" from the rest of the file-name with whitespace. commit bfa234344327776fb3b16e8bfd9c8de6ec73ae31 Author: Hans-Peter Nilsson Date: Wed Oct 15 03:03:59 2014 +0200 If "=" is the first character in a ldscript input file, force a sysroot prefix. * ldlang.c (lang_add_input_file): If the first character in the filename is '=', prepend the sysroot and force the context of that input file to non-sysroot. The "input_flags.sysrooted = 0" thing described in the comment is covered by the testsuite part ("root-anchored =-prefixed script inside"), but only observable for --with-sysroot configurations. commit ef1ab8e216a01d94a4cd23dc94363a78e2971b84 Author: Hans-Peter Nilsson Date: Wed Oct 15 02:59:41 2014 +0200 Add sysroot-prefix ld linker tests. * ld-scripts/sysroot-prefix.exp, ld-scripts/sysroot-prefix-x.s, ld-scripts/sysroot-prefix-y.s: New files. N.B: full coverage is only possible with complementary use of --with-sysroot when configuring. commit bdd65db9b9cd6d5dbdff9b48e97379029f8a3a1a Author: Hans-Peter Nilsson Date: Wed Oct 15 02:54:56 2014 +0200 lib/ld-lib.exp (check_sysroot_available): New proc. commit cad60a339b2a0a6af675d4243daa78c61eea06b5 Author: Hans-Peter Nilsson Date: Wed Oct 15 02:50:03 2014 +0200 ld.texinfo: "=" path-prefix forces sysroot in scripts not only SEARCH_DIR * ld.texinfo (input files in linker scripts): When mentioning behavior of first character "/" on scripts within sysroot, also mention that effect can be forced by prefixing with "=" and refer to SEARCH_DIR. commit b3b9c41dc6ac302f5880b3e84b8974488c5bc120 Author: Hans-Peter Nilsson Date: Wed Oct 15 02:42:14 2014 +0200 ld.texinfo: Clarify that sysroot affects "=" expansion. * ld.texinfo (Options): When mentioning "=" and sysroot, mention that --sysroot controls it, not only through the configuration. commit d9ab24174cc3b853c186e77c12b55f36574621fe Author: Alan Modra Date: Wed Oct 15 09:51:53 2014 +1030 ChangeLog typo fix commit 450ccef08d3a35300c9ebeee71df96b9c56ca0b0 Author: Chen Gang Date: Wed Oct 15 09:48:47 2014 +1030 Fix memory overflow issue about strncat If src contains n or more bytes, strncat() writes n+1 bytes to dest (n from src plus the terminating null byte). Therefore, the size of dest must be at least strlen(dest)+n+1. * config/tc-tic4x.c (md_assemble): Correct strncat size. commit 45229ecbba96f9f07b3b80c1e3bbc93d38017c17 Author: Alan Modra Date: Wed Oct 15 09:31:05 2014 +1030 daily update commit c40cc657bcc930b83ec42e071fe419073bd199f5 Author: Joel Brobecker Date: Thu Oct 9 12:37:17 2014 -0400 [Ada] Error adding/subtracting pointer value to/from integral. When trying to evaluate an expression which adds a pointer and an integral, the evaluation succeeds if the pointer is on the left handside of the operator, but not when it is on the right handside: (gdb) p something'address + 0 $1 = (system.address) 0x613418 (gdb) p 0 + something'address Argument to arithmetic operation not a number or boolean. Same issue when doing subtractions: (gdb) p something'address - 0 $2 = (system.address) 0x613418 (gdb) p 0 - something'address Argument to arithmetic operation not a number or boolean. This patch enhances the Ada expression evaluator to handle these two situations. gdb/ChangeLog: * ada-lang.c (ada_evaluate_subexp) : Add handling of the case where the second operand is a pointer. : Likewise. gdb/testsuite/ChangeLog: * gdb.ada/addr_arith: New testcase. Tested on x86_64-linux. commit 2abf49e11e603ecc002fa27704a978733c601386 Author: Maciej W. Rozycki Date: Tue Oct 14 21:16:07 2014 +0100 gdb.dwarf2: Testsuite 64-bit pointer truncation fixes * gdb.dwarf2/dw2-case-insensitive-debug.S: Handle 64-bit pointers. * gdb.dwarf2/dw2-case-insensitive.exp: Update accordingly. * gdb.dwarf2/dw2-skip-prologue.S: Handle 64-bit pointers. * gdb.dwarf2/dw2-skip-prologue.exp: Update accordingly. commit 0ea5cda8612bd2233f7a2f9d1eba0b62c2e6c015 Author: Sergio Durigan Junior Date: Tue Oct 14 14:45:13 2014 -0400 Only call {set,clear}_semaphore probe function if they are not NULL This patch is a response to what I commented on: When reviewing Jose's USDT probe support patches. Basically, in his patch he had to create dummy functions for the set_semaphore and the clear_semaphore methods of probe_ops (gdb/probe.h), because those functions were called inconditionally from inside gdb/breakpoint.c and gdb/tracepoint.c. However, the semaphore concept may not apply to all types of probes, and this is the case here: USDT probes do not have semaphores (although SDT probes do). Anyway, this is a simple (almost obvious) patch to guard the call to {set,clear}_semaphore. It does not introduce any regression on a Fedora 20 x86_64. I will apply it in a few days in case there is no comment. gdb/ChangeLog: 2014-10-14 Sergio Durigan Junior * breakpoint.c (bkpt_probe_insert_location): Call set_semaphore only if it is not NULL. (bkpt_probe_remove_location): Likewise, for clear_semaphore. * probe.h (struct probe_ops) : Update comment. (struct probe_ops) : Likewise. * tracepoint.c (start_tracing): Call set_semaphore only if it is not NULL. (stop_tracing): Likewise, for clear_semaphore. commit f7088df3b1c0370101edada54e26d24efb53125c Author: Sergio Durigan Junior Date: Tue Oct 14 14:31:09 2014 -0400 Explicitly use language_c when evaluating a SDT probe argument Joel contacted me offlist with a question about a warning that one of his customers was seeing. The message came from the new linker-debugger interface, which uses SDT probes internally. The warning said: (gdb) run [...] warning: Probes-based dynamic linker interface failed. Reverting to original interface. Argument to arithmetic operation not a number or boolean. This should not have happened in the environment the customer was using (RHEL-6.x), so I found it strange. Another thing caught my attention: the last message, saying "Argument to arithmetic operation not a number or boolean.". Joel kindly investigated the issue further, and found the answer for this. To quote him: (gdb) set lang c (gdb) p 48+$ebp $4 = (void *) 0xffffd0f8 So far so good. But... (gdb) set lang ada (gdb) p 48+$ebp Argument to arithmetic operation not a number or boolean. Ooops! Interestingly, if you revert the order of the operands... (gdb) p $ebp+48 $5 = (access void) 0xffffd0f8 So the problem is doing pointer arithmetics when the language is set to Ada. I remembered that, during the parsing and the evaluation of SDT probe arguments, the code sets the language as current_language, because, at that time, I thought it was not necessary to worry about the language given that the code implements its own parser. I was wrong. So here is a patch to fix that, by setting the language as C, which should guarantee that the maths are done in the right way (TM). It was somewhat hard to find a reproducer for this issue. In the end, what I had to do was to create a testcase that used the %ebp register on some displacement (e.g., "-4(%ebp)"), which finally triggered the bug. I am not sure why I could not trigger it when using other registers, but I did not want to spend too much time investigating this issue, which seemed like an Ada issue. Also, because of this peculiar way to trigger the problem, the testcase only covers x86-like targets (i.e., i*86 and x86_64 with -m32). Joel kindly tested this for me, and it worked. I also ran a full regression test here on my Fedora 20 x86_64, and everything is fine. I will push this patch in a few days if there are no comments. gdb/ChangeLog: 2014-10-14 Sergio Durigan Junior * stap-probe.c (stap_parse_argument): Initialize expout explicitly using language_c, instead of current_language. gdb/testsuite/ChangeLog: 2014-10-14 Sergio Durigan Junior * gdb.arch/stap-eval-lang-ada.S: Likewise. * gdb.arch/stap-eval-lang-ada.c: Likewise. * gdb.arch/stap-eval-lang-ada.exp: New file. commit 5697705ac6eafb3e3f9dd3ba253231a4d51a1fa4 Author: H.J. Lu Date: Tue Oct 14 08:03:32 2014 -0700 Convert mov to lea only if r_offset >= 2 * elf32-i386.c (elf_i386_convert_mov_to_lea): Skip if relocation offset is less than 2. * elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise. commit 4dc06805c2fa208dc2743099feaacb4230d1b1f7 Author: Yao Qi Date: Sat Aug 30 21:30:36 2014 +0800 Fix fail in mi-var-child.exp and mi-var-display.exp Hi, I see the following fails on arm-none-eabi target, -var-list-children --simple-values struct_declarations ^M ^done,numchild="11",children=[...,child={name="struct_declarations.func_ptr_struct",exp="func_ptr_struct",numchild="0",value="0x0 <_ftext>",type="struct _struct_decl (*)(int, char *, long)",thread-id="1"},child={name="struct_declarations.func_ptr_ptr",exp="func_ptr_ptr",numchild="0",value="0x0 <_ftext>",type="struct _struct_decl *(*)(int, char *, long)",thread-id="1"},... (gdb) ^M FAIL: gdb.mi/mi-var-child.exp: listing of children, simple types: names, type and values, complex types: names and types -var-set-format weird.func_ptr_ptr natural^M ^done,format="natural",value="0x0 <_ftext>"^M (gdb) ^M FAIL: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_ptr in natural In the test, "0x0" is expected, but "0x0 <_ftext>" is in the output. Function pointers point to address zero, and tests assume there is no symbol on address zero. However, on my arm-none-eabi target, there is a code symbol _ftext on address zero, and test fails. Note that "set print symbol off" doesn't take effect for function pointer. int (*f) (void); f = main; (gdb) p f $1 = (int (*)(void)) 0x8048400
(gdb) set print symbol off (gdb) p f $2 = (int (*)(void)) 0x8048400
In order to erase the difference, we can assign some function address explicitly to function pointer, so the test behaves in a unique way. In this patch, we assign nothing1 and nothing2 to function pointers func_ptr_struct and func_ptr_ptr respectively, and update test as the source file is changed. gdb/testsuite: 2014-10-14 Yao Qi * gdb.mi/mi-var-child.c (nothing1): New function. (nothing2): New function. (do_children_tests): Set function pointers by nothing1 and nothing2. * gdb.mi/mi-var-child.exp: Step over new added statements. Update test to match the new output. * gdb.mi/var-cmd.c (nothing1): New function. (nothing2): New function. (do_children_tests): Set function pointers by nothing1 and nothing2. * gdb.mi/mi-var-display.exp: Update test to match output. Step to the line specified by $line_dct_nothing. Increase the number of lines to step. commit 46a93de2ab256dd2cb4e1845a93d9d1ae07b2475 Author: Yao Qi Date: Sat Aug 23 20:24:07 2014 +0800 Use mi_varobj_update in mi-var-child.exp and mi2-var-child.exp Hi, I modify mi-var-child.exp and find that the pattern to match the output of -var-update * is quite complicated. However, it can be simplified by using mi_varobj_update. That is what this patch does. gdb/testsuite: 2014-10-14 Yao Qi * gdb.mi/mi-var-child.exp: Use mi_varobj_update to simplify tests. * gdb.mi/mi2-var-child.exp: Likewise. commit c50415e24c5ae8635d550f0c3699ffd88ff14a9b Author: Tristan Gingold Date: Tue Oct 14 09:49:47 2014 +0200 Add NEWS markers for 2.25. binutils/ 2014-10-14 Tristan Gingold * NEWS: Add marker for 2.25. gas/ 2014-10-14 Tristan Gingold * NEWS: Add marker for 2.25. ld/ 2014-10-14 Tristan Gingold * NEWS: Add marker for 2.25. commit 65879393f04e14a9ab8797a8e66e0ec8d94108b5 Author: Alan Modra Date: Tue Oct 14 13:36:20 2014 +1030 Avoid undefined behaviour with signed expressions PR 17453 bfd/ * libbfd.c (COERCE16, COERCE32, COERCE64): Use unsigned types. (EIGHT_GAZILLION): Delete. binutils/ * dwarf.c (read_leb128): Avoid signed overflow. (read_debug_line_header): Likewise. gas/ * config/tc-i386.c (fits_in_signed_long): Use unsigned param and expression to avoid signed overflow. (fits_in_signed_byte, fits_in_unsigned_byte, fits_in_unsigned_word, fits_in_signed_word, fits_in_unsigned_long): Similarly. * expr.c (operand <'-'>): Avoid signed overflow. * read.c (s_comm_internal): Likewise. commit 9495b2e66f772783eb89cfa755e1e09641fa44eb Author: Alan Modra Date: Tue Oct 14 13:30:57 2014 +1030 Correct fscanf char field count %s as an fscanf format does not include the trailing NULL. PATH_MAX does include the trailing NULL. PR 17453 * readelf.c (process_program_headers): Correct fscanf format used for interpreter. commit daf5e10e4cb2c5e502950dae5da5936d9a3d5a79 Author: Alan Modra Date: Mon Oct 13 22:57:58 2014 +1030 sparc-aout and sparc-coff breakage * config/tc-sparc.c (sparc_md_end): Fix unused variable warnings. commit 29665a79b6dd7146656b98520da468851d1ad974 Author: Alan Modra Date: Tue Oct 14 09:31:01 2014 +1030 daily update commit 14ea52eecb11790c7a03eda1b13568b587238b66 Author: Doug Evans Date: Mon Oct 13 14:50:32 2014 -0700 Change name of file name test in py-objfile.exp. Tests should each have their own name. gdb/testsuite/ChangeLog: * gdb.python/py-objfile.exp: Change name of file name test. commit e5c6e92bbe4b505537429f23cefa8a9fcaadd63d Author: Doug Evans Date: Mon Oct 13 14:05:34 2014 -0700 Fix dw2-op-out-param.S CU offset values. This test will pass if the CU is the first CU in the binary. If libc debugging info is installed it may not be, in which case the CU offset values are wrong. gdb/testsuite/ChangeLog: * gdb.dwarf2/dw2-op-out-param.S: Make DW_FORM_ref4 values be the offset from the start of the CU. commit 6ff5a0f675d5a806dfd7f9671d72727d1c30cde2 Author: Doug Evans Date: Mon Oct 13 13:33:09 2014 -0700 fix file paths in previous commit commit 4e1bbde013bae26b550a047baa8c6b999d811f23 Author: Doug Evans Date: Mon Oct 13 12:24:54 2014 -0700 Remove some code duplication in py-objfile.c, py-progspace.c. gdb/ChangeLog: * py-objfile.c (objfpy_initialize): New function. (objfpy_new, objfile_to_objfile_object): Call it. * py-progspace.c (pspy_initialize): New function. (pspy_new, pspace_to_pspace_object): Call it. commit 5b69e3572d1ee8e8e6e1991fd07f87a96c48746d Author: Alan Modra Date: Mon Oct 13 15:18:21 2014 +1030 Run eh_frame optimisation for relocatable link The idea here is to drop .eh_frame FDEs corresponding to dropped comdat group sections or linkonce sections, but not perform changes in encoding. bfd/ PR 17467 * elf-eh-frame.c (ENSURE_NO_RELOCS): Don't stop at first NONE reloc. (_bfd_elf_parse_eh_frame): When relocatable output, don't set flags enabling conversion of CIEs and FDEs to use relative encoding. (find_merged_cie): Similarly. (_bfd_elf_write_section_eh_frame): Don't edit FDEs when relocatable, except for CIE pointer. * elflink.c (bfd_elf_reloc_symbol_deleted_p): Return true for relocs against symbols in dropped comdat group sections. (bfd_elf_discard_info): Do some eh_frame optimisation when relocatable. ld/ * ldlang.c (lang_add_section): Set up map_head.s and map_tail.s when relocatable. commit c780cc2f5062451a568458b6ef9b8aef7cc1dd8a Author: Jan Kratochvil Date: Mon Oct 13 13:39:48 2014 +0200 Fix "save breakpoints" for "catch" command gdb/ChangeLog 2014-10-13 Miroslav Franc Jan Kratochvil Fix "save breakpoints" for "catch" command. * break-catch-sig.c (signal_catchpoint_print_recreate): Add trailing newline. gdb/testsuite/ChangeLog 2014-10-13 Jan Kratochvil Yao Qi Fix "save breakpoints" for "catch" command. * gdb.base/catch-signal.exp: Add gdb_breakpoint "main". Remove -nonewline. Match also the added "main" line. commit e06bcd8001496e5fed5c1774af7c0dfe200f603e Author: Alan Modra Date: Mon Oct 13 09:30:41 2014 +1030 daily update commit 99894e1175c04ef470761406c0d20f61f5a7e9ba Author: Jan Kratochvil Date: Sun Oct 12 21:52:39 2014 +0200 Fix "save breakpoints" for "disable $bpnum" command. gdb/ChangeLog 2014-10-12 Miroslav Franc Fix "save breakpoints" for "disable $bpnum" command. * breakpoint.c (save_breakpoints): Add $bpnum for disable. gdb/testsuite/ChangeLog 2014-10-12 Jan Kratochvil Fix "save breakpoints" for "disable $bpnum" command. * gdb.base/save-bp.c (main): Add label. * gdb.base/save-bp.exp: Add 8th disabled breakpoint. Match it. commit 6e1ac5a3735abf8284c09563fdcba18f88226abb Author: Jan Kratochvil Date: Sun Oct 12 21:47:13 2014 +0200 Use gdb_test_sequence in gdb.base/save-bp.exp. But IMO it is a functionality regression as: * gdb_test_sequence permits arbitary number of lines of text between those lines being matched. Former regex string did not allow it. This may make a difference if GDB regresses by printing some unexpected line after the breakpoint info line (like a "silent" line). > * \[\r\n\]+ can be used to anchor the beginning of the pattern, in the sense > of Perl regex ^ /m match. At least I have found such cases in existing > *.exp files so I used that. Using ^ really does not work. > > But I am not aware how to do Perl regex $ /m match. Using $ really does > not work. But this means that for example the trailing > ( \\((host|target) evals\\))? > on the line > "\[\r\n\]+\[ \t\]+stop only if i == 1( \\((host|target) evals\\))?" > originally made sense there but now it can be removed as it has no longer > any functionality there - it will match now any trailing line garbage. by Yao Qi: In this test case, ( \\((host|target) evals\\))? isn't needed in the pattern. What we test here is to save breakpoints into file and restore them from file. The contents saved in file are: break save-bp.c:31 condition $bpnum i == 1 the information about the place where the condition is evaluated isn't saved, so we don't need to check. Breakpoint save and restore has nothing to do with where the condition is evaluated (host or target). I am fine to leave it here now. gdb/testsuite/ChangeLog 2014-10-09 Jan Kratochvil * gdb.base/save-bp.exp (info break): Use gdb_test_sequence. commit 34ffd455e884ceda434aef11dc60e69a28d2809f Author: Alan Modra Date: Sun Oct 12 09:30:42 2014 +1030 daily update commit b55f967878a4f7905f78b05a9c37457797b1c7ed Author: Iain Buclaw Date: Sat Oct 11 10:29:10 2014 +0100 Sync libiberty with upstream GCC. include/ChangeLog * libiberty.h (PEX_STDOUT_APPEND): New flag. (PEX_STDERR_APPEND): Likewise. * demangle.h (DMGL_DLANG): New macro. (DMGL_STYLE_MASK): Add DMGL_DLANG. (demangling_styles): Add dlang_demangling. (DLANG_DEMANGLING_STYLE_STRING): New macro. (DLANG_DEMANGLING): New macro. (dlang_demangle): New prototype. * longlong.h: Add __udiv_w_sdiv prototype. libiberty/ChangeLog * cp-demangle.c (d_substitution): Handle abi tags on abbreviation. * pex-common.h (struct pex_funcs): Add new parameter for open_write field. * pex-unix.c (pex_unix_open_write): Add support for new parameter. * pex-djgpp.c (pex_djgpp_open_write): Likewise. * pex-win32.c (pex_win32_open_write): Likewise. * pex-common.c (pex_run_in_environment): Likewise. * Makefile.in (CFILES): Add d-demangle.c. (REQUIRED_OFILES): Add d-demangle.o. * cplus-dem.c (libiberty_demanglers): Add dlang_demangling case. (cplus_demangle): Likewise. * d-demangle.c: New file. * testsuite/Makefile.in (really-check): Add check-d-demangle. * testsuite/d-demangle-expected: New file. * simple-object-elf.c (simple_object_elf_write_ehdr): Correctly handle objects with more than SHN_LORESERVE sections. (simple_object_elf_write_shdr): Add sh_link parameter. (simple_object_elf_write_to_file): Correctly handle objects with more than SHN_LORESERVE sections. * cp-demangle.c (d_dump): Only access field from s_fixed part of the union for DEMANGLE_COMPONENT_FIXED_TYPE. (d_count_templates_scopes): Likewise. * testsuite/demangler-fuzzer.c: New file. * testsuite/Makefile.in (fuzz-demangler): New rule. (demangler-fuzzer): Likewise. (mostlyclean): Clean up demangler fuzzer. commit 754dd2b00f2bd3f2d7aaacdb27375bc6faf1458e Author: Yao Qi Date: Wed Oct 8 11:25:31 2014 +0800 Enable qTStatus packet in case it is disabled Nowadays, we are using command "tstatus" to send a packet to GDBserver in order to check the connection. However, on the target doesn't support tracepoint, the following error is emitted before sending any packet to GDBserver. tstatus^M Trace can not be run on this target.^M (gdb) FAIL: gdb.server/server-kill.exp: tstatus qTStatus is disabled after receiving the empty reply during connecting to the remote target. When the test executes command "tstatus" again, remote_get_trace_status returns -1 at the very beginning, and no RSP packet is sent out. This patch is to enable qTStatus packet again. gdb/testsuite: 2014-10-11 Yao Qi * gdb.server/server-kill.exp: Execute command "set remote trace-status-packet on" before "tstatus". commit f90183d7e31b335b8a6048e46805509dc56332a4 Author: Yao Qi Date: Tue Sep 30 21:08:15 2014 +0800 Get GDBserver pid on remote target Hi, We see the following fail in the real remote testing... (gdb) Executing on target: kill -9 29808 (timeout = 300) spawn [open ...]^M sh: 1: kill: No such process The test tries to kill gdbserver in this way: set server_pid [exp_pid -i [board_info target fileid]] remote_exec target "kill -9 $server_pid" in native testing, we'll get the pid of spawned gdbserver, however, in remote testing, we'll get the pid of ssh session, since we start gdbserver on the remote target through ssh. The pid on build doesn't exist on target. In this patch, we tweak server-kill.c to get the parent pid, which is the pid of GDBserver. GDB gets it and kill GDBserver on target. gdb/testsuite: 2014-10-11 Yao Qi * gdb.server/server-kill.c: Include sys/types.h and unistd.h. (main): Call getppid. * gdb.server/server-kill.exp: Set breakpoint on line "i = 0;" and continue to it. Read variable "server_pid". commit bf40a6078fd5bc24f54aaa1ca2bf44fa95b57c69 Author: Yao Qi Date: Wed Oct 8 10:04:22 2014 +0800 Clean up server-kill.exp This patch is to remove some lines which looks unnecessary. These lines were added when server-kill.exp was added. In the version 1, https://sourceware.org/ml/gdb-patches/2013-03/msg00691.html the test calls runto_main and delete breakpoint on main, +if ![runto_main] { + return -1 +} + +# Otherwise the breakpoint at 'main' would not cause insert breakpoints during +# first step. +delete_breakpoints However, in the version 2 https://sourceware.org/ml/gdb-patches/2013-03/msg00854.html runto_main is removed but delete_breakpoints is still there. AFAICS, the line of delete_breakpoints can be removed too. gdb/testsuite: 2014-10-11 Yao Qi * gdb.server/server-kill.exp: Remove "delete_breakpoints". commit 052ca3707367a7f1fae462a45c56e8e50fe3b98e Author: Yao Qi Date: Wed Oct 8 22:26:27 2014 +0800 No longer pull thread list explicitly As the result of the patch below, GDB updates thread list when a stop is presented to user. The tests don't have to fetch thread list explicitly. [PATCH 3/3] Fix non-stop regressions caused by "breakpoints always-inserted off" changes https://sourceware.org/ml/gdb-patches/2014-09/msg00734.html This patch is to remove the test code updating thread list. Run these three tests many times on arm-linux-gnueabi and x86-linux. No regressions. gdb/testsuite: 2014-10-11 Yao Qi * gdb.threads/thread-find.exp: Don't execute command "info threads". * gdb.threads/attach-into-signal.exp (corefunc): Likewise. * gdb.threads/linux-dp.exp: Don't check the condition $threads_created equals to zero. commit ad26045764197506da8e79adfb2c43798edeffff Author: Alan Modra Date: Sat Oct 11 09:30:49 2014 +1030 daily update commit 3831839c089cf3b65ad6b2efbc608e5a24a40379 Author: Pedro Alves Date: Fri Oct 10 18:18:52 2014 +0100 Delete IRIX support This does most of the mechanical removal. IOW, the easy part. This doesn't touch procfs.c as that'd be a harder excision, potentially affecting Solaris. mips-tdep.c is left alone. E.g., I didn't delete the GDB_OSABI_IRIX enum value, nor references to it in mips-tdep.c. Some comments mentioning IRIX ABIs may still be relevant and I wouldn't know what to do with them. in That can always be done on a separate pass, preferably by someone who can test on MIPS. I didn't remove a reference to IRIX in testsuite/lib/future.exp, as I believe that code is imported from DejaGNU. Built and tested on x86_64 Fedora 20, with --enable-targets=all. Tested that building for --target=mips-sgi-irix6 on x86_64 Fedora 20 fails with: checking for default auto-load directory... $debugdir:$datadir/auto-load checking for default auto-load safe-path... $debugdir:$datadir/auto-load *** Configuration mips-sgi-irix6 is obsolete. *** Support has been REMOVED. make[1]: *** [configure-gdb] Error 1 make[1]: Leaving directory `/home/pedro/gdb/mygit/build-irix' make: *** [all] Error 2 gdb/ 2014-10-10 Pedro Alves * Makefile.in (ALL_TARGET_OBS): Remove mips-irix-tdep.o and solib-irix.o. (ALLDEPFILES): Remove mips-irix-tdep.c and solib-irix.c. (HFILES_NO_SRCDIR): Remove solib-irix.h. * NEWS: Mention that support for mips-sgi-irix5* mips-sgi-irix6* and been removed. * config/mips/irix5.mh, config/mips/irix6.mh: Delete files. * configure.ac: Remove references to IRIX. * configure.host: Add *-*-irix* to the obsolete hosts section. Remove all other references to irix. * irix5-nat.c, mips-irix-tdep.c, solib-irix.c, solib-irix.h: Delete files. gdb/testsuite/ 2014-10-10 Pedro Alves * gdb.base/bigcore.exp: Remove references to IRIX. * gdb.base/funcargs.exp: Likewise. * gdb.base/interrupt.exp: Likewise. * gdb.base/mips_pro.exp: Likewise. * gdb.base/nodebug.exp: Likewise. * gdb.base/setvar.exp: Likewise. * lib/gdb.exp (gdb_compile_shlib): Remove mips-sgi-irix* case. commit cc3afae25a4e37ed7a864a8f4eea1dc11b20d5fb Author: Ajit Kumar Agarwal Date: Fri Oct 10 18:07:06 2014 +0100 Microblaze: Reject invalid target descriptions We currently validate the target description, but then forget to reject it if found invalid. Tested that incorrect descriptions are rejected and GDB warns about them. Tested the Microblaze Design with and without stack-protect registers. The gdb command "info registers" displayed the register correctly. If a stack protect design is not selected, only core registers are displayed. When the stack-protect registers are selected in the design, the core registers along with stack-protect registers are displayed. gdb/ 2014-10-10 Ajit Agarwal * microblaze-tdep.c (microblaze_gdbarch_init): If the description isn't valid, release the tdesc arch data and return NULL. commit cdfa0b0ac16739350360b29b05223655d3b9b740 Author: Pedro Alves Date: Fri Oct 10 15:57:14 2014 +0100 Cache the vsyscall/vDSO range per-inferior We're now doing a vsyscall/vDSO address range lookup whenever we fetch shared libraries, either through an explicit "info shared", or when the target reports new libraries have been loaded, in order to filter out the vDSO from glibc's DSO list. Before we started doing that, GDB would only ever lookup the vsyscall's address range once in the process's lifetime. Looking up the vDSO address range requires an auxv lookup (which is already cached, so no problem), but also reading the process's mappings from /proc to find out the vDSO's mapping's size. That generates extra RSP traffic when remote debugging. Particularly annoying when the process's mappings grow linearly as more libraries are mapped in, and we went through the trouble of making incremental DSO list updates work against gdbserver (when the probes-based dynamic linker interface is available). The vsyscall/vDSO is mapped by the kernel when the process is initially mapped in, and doesn't change throughout the process's lifetime, so we can cache its address range. Caching at this level brings GDB back to one and only one vsyscall address range lookup per process. Tested on x86_64 Fedora 20. gdb/ 2014-10-10 Pedro Alves * linux-tdep.c: Include observer.h. (linux_inferior_data): New global. (struct linux_info): New structure. (invalidate_linux_cache_inf, linux_inferior_data_cleanup) (get_linux_inferior_data): New functions. (linux_vsyscall_range): Rename to ... (linux_vsyscall_range_raw): ... this. (linux_vsyscall_range): New function; handles caching. (_initialize_linux_tdep): Register linux_inferior_data. Install inferior_exit and inferior_appeared observers. commit 8b9a549d3a9176f92b4cac5b388eb473919f80e6 Author: Pedro Alves Date: Fri Oct 10 15:57:13 2014 +0100 PR symtab/14466: Work around PR libc/13097 "linux-vdso.so.1" With upstream glibc, GDB prints: warning: Could not load shared library symbols for linux-vdso.so.1. Do you need "set solib-search-path" or "set sysroot"? A bug's been filed for glibc a few years back: http://sourceware.org/bugzilla/show_bug.cgi?id=13097 but it's still not resolved. It's not clear whether there's even consensus that this is indeed a glibc bug. It would actually be nice if GDB also listed the vDSO in the shared library list, but there are some design considerations with that: - the vDSO is mapped by the kernel, not userspace, therefore we should load its symbols right from the process's start of life, even before glibc / the userspace loader sets up the initial DSO list. The program might even be using a custom loader or no loader. - that kind of hints at that solib.c should handle retrieving shared library lists from more than one source, and that symfile-mem.c's loading of the vDSO would be converted to load and relocate the vDSO's bfd behind the target_so_ops interface. - and then, once glibc links in the vDSO to its DSO list, we'd need to either: a) somehow hand over the vDSO from one target_so_ops to the other b) simply keep hiding glibc's entry. And then b) seems the simplest. With that in mind, this patch simply discards the vDSO from glibc's reported shared library list. We can match the vDSO address range with the addresses found iterating the dynamic linker list, to tell which dynamic linker entry is the vDSO. Tested on x86_64 Fedora 20. gdb/ 2014-10-10 Jan Kratochvil Pedro Alves PR symtab/14466 * solib-svr4.c (svr4_read_so_list): Rename to ... (svr4_current_sos_1): ... this and change the function comment. (svr4_current_sos): New function. gdb/testsuite/ 2014-10-10 Jan Kratochvil Pedro Alves PR symtab/14466 * gdb.base/vdso-warning.c: New file. * gdb.base/vdso-warning.exp: New file. commit 3437254d7b5bc57d3a298df8640ae2f55bdbff2a Author: Pedro Alves Date: Fri Oct 10 15:57:13 2014 +0100 Split vDSO range lookup to a gdbarch hook We have a case in solib-svr4.c where we could reuse symfile-mem.c's vDSO range lookup. Since symfile-mem.c is not present in all configurations solib-svr4.c is, move that lookup to a gdbarch hook. This has the minor (good) side effect that we stop even trying the target_auxv_search lookup against targets that don't have a concept of a vDSO, in case symfile-mem.c happens to be linked in the build (--enable-targets=all). Tested on x86_64 Fedora 20. gdb/ 2014-10-10 Pedro Alves * arch-utils.c (default_vsyscall_range): New function. * arch-utils.h (default_vsyscall_range): New declaration. * gdbarch.sh (vsyscall_range): New hook. * gdbarch.h, gdbarch.c: Regenerate. * linux-tdep.c (linux_vsyscall_range): New function. (linux_init_abi): Install linux_vsyscall_range as vsyscall_range gdbarch hook. * memrange.c (address_in_mem_range): New function. * memrange.h (address_in_mem_range): New declaration. * symfile-mem.c (find_vdso_size): Delete function. (add_vsyscall_page): Use gdbarch_vsyscall_range. commit 31cc0b807b2fde7d0110175418a6eea01a982489 Author: Pedro Alves Date: Fri Oct 10 13:50:05 2014 +0100 infrun.c:normal_stop: Fix typo in comment gdb/ 2014-10-10 Pedro Alves * infrun.c (normal_stop): Fix typo in comment. commit 642725adf5b61fb39396fc2e93d12042d54bbded Author: Alan Modra Date: Fri Oct 10 09:30:36 2014 +1030 daily update commit 3e3286a28ab29052f2169bfce01b3e770d589037 Author: Sergio Durigan Junior Date: Thu Oct 9 13:45:09 2014 -0400 PR tdep/9390: Fix typo on xstorxstormy16-tdep.c This patch fixes the bug described in PR tdep/9390, which is about a wrong check in the following code: ... /* optional copying of args in r2-r7 to r10-r13. */ /* Probably only in optimized case but legal action for prologue. */ else if ((inst & 0xff00) == 0x4600 /* 46SD mov rD, rS */ && (inst & 0x00f0) >= 0x0020 && (inst & 0x00f0) <= 0x0070 && (inst & 0x000f) >= 0x00a0 && (inst & 0x000f) <= 0x000d) ^^^^^^^^^^^^^^^^^^^^^^^^^ ... This condition will never trigger, and the fix proposed in the bug (which made sense to me) was to test against 0x000a. I tried finding documentation about this target, but couldn't find anything. I don't even know if it is still used, but decided to submit the fix anyway. Tested on my x86_64 Fedora 20 GNU/Linux. gdb/ChangeLog: 2014-09-16 Sergio Durigan Junior PR tdep/9390 * xstorxstormy16-tdep.c (xstormy16_analyze_prologue): Fix possible typo when using logical AND to determine instruction type. commit 3d68f91c0fb05b426e554004cabd3ded4c91f9c8 Author: Jose E. Marchesi Date: Thu Oct 9 13:16:53 2014 +0100 This is a series of patches that add support for the SPARC M7 cpu to binutils. They were discussed and approved here: https://sourceware.org/ml/binutils/2014-10/msg00038.html commit fcbdedf866d777b3598cf8703737eb0f987c2aca Author: Yao Qi Date: Wed Oct 8 19:25:59 2014 +0800 Remove unused local variable As a result of commit b57bacec, local variable 'printed' is no longer used. This patch is to remove it. gdb: 2014-10-09 Yao Qi * infrun.c (handle_signal_stop): Remove local variable 'printed'. commit 3abb874c138ec12f9ed65e87d7f62d86e90479f4 Author: Alan Modra Date: Thu Oct 9 09:30:35 2014 +1030 daily update commit db984616182522ac079806db7cd24a9f20f5e06f Author: Stan Shebs Date: Wed Oct 8 11:23:16 2014 -0700 Add Yao Qi as global maintainer gdb/ChangeLog: 2014-10-08 Stan Shebs * MAINTAINERS (GLOBAL MAINTAINERS): Add Yao Qi. commit 23664eacafac0548546d243bbc49bf5ab268a9c4 Author: Will Newton Date: Tue Sep 30 12:17:32 2014 +0100 include/elf/aarch64.h: Add reloc numbers from ABI release 1.0 Add the relocation numbers defined in ABI release 1.0 but missing from the current header. This will allow tools like objdump to dump objects that use these relocations. include/elf/ChangeLog: 2014-10-08 Will Newton * aarch64.h: Sync up relocations with ABI release 1.0. commit 3ba37e6c302904cb38b9572faa9b9c1bb176d782 Author: Gary Benson Date: Wed Oct 8 09:52:38 2014 +0100 Do not include unnecessary files in fbsd-tdep.c This commit makes fbsd-tdep.c not include string.h or gdb_assert.h as both are already included by defs.h. gdb/ChangeLog: * fbsd-tdep.c: Do not include string.h or gdb_assert.h. commit a442d0713a940326c72c1c85357cb92d5f6d2fc2 Author: Gary Benson Date: Wed Oct 8 09:33:22 2014 +0100 Include common-exceptions.h in common-defs.h This commit includes common-exceptions.h in common-defs.h and removes all other inclusions. gdb/ChangeLog: * common/common-defs.h: Include common-exceptions.h. * exceptions.h: Do not include common-exceptions.h. gdb/gdbserver/ChangeLog: * server.h: Do not include common-exceptions.h. commit 6f1947e8a206a2664506ee5a333f7c9d0af8cac8 Author: Gary Benson Date: Wed Oct 8 09:33:22 2014 +0100 Include cleanups.h in common-defs.h This commit includes cleanups.h in common-defs.h and removes all other inclusions. gdb/ChangeLog: * common/common-defs.h: Include cleanups.h. * common/common-exceptions.c: Do not include cleanups.h. * utils.h: Likewise. gdb/gdbserver/ChangeLog: * server.h: Do not include cleanups.h. commit c765fdb902fd6dbdeaa476b49592a4d9f835d983 Author: Gary Benson Date: Wed Oct 8 09:33:22 2014 +0100 Remove spurious exceptions.h inclusions defs.h includes utils.h, and utils.h includes exceptions.h. All GDB .c files include defs.h as their first line, so no file other than utils.h needs to include exceptions.h. This commit removes all such inclusions. gdb/ChangeLog: * ada-lang.c: Do not include exceptions.h. * ada-valprint.c: Likewise. * amd64-tdep.c: Likewise. * auto-load.c: Likewise. * block.c: Likewise. * break-catch-throw.c: Likewise. * breakpoint.c: Likewise. * btrace.c: Likewise. * c-lang.c: Likewise. * cli/cli-cmds.c: Likewise. * cli/cli-interp.c: Likewise. * cli/cli-script.c: Likewise. * completer.c: Likewise. * corefile.c: Likewise. * corelow.c: Likewise. * cp-abi.c: Likewise. * cp-support.c: Likewise. * cp-valprint.c: Likewise. * darwin-nat.c: Likewise. * dwarf2-frame-tailcall.c: Likewise. * dwarf2-frame.c: Likewise. * dwarf2loc.c: Likewise. * dwarf2read.c: Likewise. * eval.c: Likewise. * event-loop.c: Likewise. * event-top.c: Likewise. * f-valprint.c: Likewise. * frame-unwind.c: Likewise. * frame.c: Likewise. * gdbtypes.c: Likewise. * gnu-v2-abi.c: Likewise. * gnu-v3-abi.c: Likewise. * guile/scm-auto-load.c: Likewise. * guile/scm-breakpoint.c: Likewise. * guile/scm-cmd.c: Likewise. * guile/scm-frame.c: Likewise. * guile/scm-lazy-string.c: Likewise. * guile/scm-param.c: Likewise. * guile/scm-symbol.c: Likewise. * guile/scm-type.c: Likewise. * hppa-hpux-tdep.c: Likewise. * i386-tdep.c: Likewise. * inf-loop.c: Likewise. * infcall.c: Likewise. * infcmd.c: Likewise. * infrun.c: Likewise. * interps.c: Likewise. * interps.h: Likewise. * jit.c: Likewise. * linespec.c: Likewise. * linux-nat.c: Likewise. * linux-thread-db.c: Likewise. * m32r-rom.c: Likewise. * main.c: Likewise. * memory-map.c: Likewise. * mi/mi-cmd-break.c: Likewise. * mi/mi-cmd-stack.c: Likewise. * mi/mi-interp.c: Likewise. * mi/mi-main.c: Likewise. * monitor.c: Likewise. * nto-procfs.c: Likewise. * objc-lang.c: Likewise. * p-valprint.c: Likewise. * parse.c: Likewise. * ppc-linux-tdep.c: Likewise. * printcmd.c: Likewise. * probe.c: Likewise. * python/py-auto-load.c: Likewise. * python/py-breakpoint.c: Likewise. * python/py-cmd.c: Likewise. * python/py-finishbreakpoint.c: Likewise. * python/py-frame.c: Likewise. * python/py-framefilter.c: Likewise. * python/py-function.c: Likewise. * python/py-gdb-readline.c: Likewise. * python/py-inferior.c: Likewise. * python/py-infthread.c: Likewise. * python/py-lazy-string.c: Likewise. * python/py-linetable.c: Likewise. * python/py-param.c: Likewise. * python/py-prettyprint.c: Likewise. * python/py-symbol.c: Likewise. * python/py-type.c: Likewise. * python/py-value.c: Likewise. * python/python-internal.h: Likewise. * python/python.c: Likewise. * record-btrace.c: Likewise. * record-full.c: Likewise. * regcache.c: Likewise. * remote-fileio.c: Likewise. * remote-mips.c: Likewise. * remote.c: Likewise. * rs6000-aix-tdep.c: Likewise. * rs6000-nat.c: Likewise. * skip.c: Likewise. * solib-darwin.c: Likewise. * solib-dsbt.c: Likewise. * solib-frv.c: Likewise. * solib-ia64-hpux.c: Likewise. * solib-spu.c: Likewise. * solib-svr4.c: Likewise. * solib.c: Likewise. * spu-tdep.c: Likewise. * stack.c: Likewise. * stap-probe.c: Likewise. * symfile-mem.c: Likewise. * symmisc.c: Likewise. * target.c: Likewise. * thread.c: Likewise. * top.c: Likewise. * tracepoint.c: Likewise. * tui/tui-interp.c: Likewise. * typeprint.c: Likewise. * utils.c: Likewise. * valarith.c: Likewise. * valops.c: Likewise. * valprint.c: Likewise. * value.c: Likewise. * varobj.c: Likewise. * windows-nat.c: Likewise. * xml-support.c: Likewise. commit 6b97fa271f548025208afdf9380d7c8c5e323a4c Author: Alan Modra Date: Wed Oct 8 09:30:35 2014 +1030 daily update commit b71cca764512bd25dfe2345457c51ccbce74b91b Author: Alan Modra Date: Tue Oct 7 09:30:33 2014 +1030 daily update commit 0c2e631d8142f1ed18431172507c2e9ddbcfc530 Author: Alan Modra Date: Mon Oct 6 09:30:41 2014 +1030 daily update commit 484933d11fca33ded4c5465eae3781bf79ee12e2 Author: Maciej W. Rozycki Date: Sun Oct 5 23:37:53 2014 +0100 MIPS: Rewrite `add_offset_16' to match its name A helper function called `add_offset_16' is used by `extended_mips16_next_pc' to calculate branch destinations. Weirdly enough the helper does not do what the name suggests and rather than doing its work for a 16-bit immediate branch offset it makes its calculations on a 26-bit immediate target used by JAL and JALX instructions. Furthermore the JAL/JALX calculation is only needed once by `extended_mips16_next_pc' while a 16-bit branch offset calculation is made inline several times across `extended_mips16_next_pc'. This change therefore replaces the contents of `add_offset_16' with the 16-bit branch offset calculation and updates `extended_mips16_next_pc' accordingly. * mips-tdep.c (add_offset_16): Rewrite to implement what the name implies. (extended_mips16_next_pc): Update accordingly. commit ab50adb6a622fc599ce6e037ae0cdfaf952f4bb4 Author: Maciej W. Rozycki Date: Sun Oct 5 22:39:52 2014 +0100 MIPS: Correct heuristic prologue termination conditions This change addresses a regression in gdb.dwarf2/dw2-skip-prologue.exp across MIPS16 multilibs: (gdb) file .../gdb.dwarf2/dw2-skip-prologue Reading symbols from .../gdb.d/gdb.dwarf2/dw2-skip-prologue...done. (gdb) delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main warning: Breakpoint address adjusted from 0x00400725 to 0x00400721. Breakpoint 1 at 0x400721 (gdb) set remotetimeout 5 (gdb) kill The program is not being run. (gdb) [...] target remote ...:2345 Reading symbols from .../mips16/lib/ld.so.1...done. warning: Breakpoint address adjusted from 0x00400725 to 0x00400721. warning: Breakpoint address adjusted from 0x00400725 to 0x00400721. 0x2aaa8e81 in __start () from .../mips16/lib/ld.so.1 (gdb) continue Continuing. warning: Breakpoint address adjusted from 0x00400725 to 0x00400721. warning: Breakpoint 1 address previously adjusted from 0x00400725 to 0x00400721. Breakpoint 1, 0x00400721 in main () (gdb) break func Breakpoint 2 at 0x4006a1: func. (2 locations) (gdb) continue Continuing. warning: GDB can't find the start of the function at 0x4006dd. GDB is unable to find the start of the function at 0x4006dd and thus can't determine the size of that function's stack frame. This means that GDB may be unable to access that stack frame, or the frames below it. This problem is most likely caused by an invalid program counter or stack pointer. However, if you think GDB should simply search farther back from 0x4006dd for code which looks like the beginning of a function, you can increase the range of the search using the `set heuristic-fence-post' command. Program received signal SIGBUS, Bus error. 0x0040072b in main () (gdb) FAIL: gdb.dwarf2/dw2-skip-prologue.exp: continue to breakpoint: func -- notice the breakpoint adjustment messages that are already a bad sign. These happen when a breakpoint is requested in a branch delay slot and are not supposed to happen unless explicitly requested with an address pointing to a branch delay slot instruction. No symbol or line debug information is supposed to direct GDB to place a breakpoint in a delay slot. Here's how `main' looks like: 00400718
: 400718: 64f5 save 40,ra,s0-s1 40071a: 1a00 01a8 jal 4006a0 40071e: 0104 addiu s1,sp,16 400720: 1a00 01b7 jal 4006dc 400724: 6702 move s0,v0 400726: e049 addu v0,s0,v0 400728: 65b9 move sp,s1 40072a: 6473 restore 24,ra,s0-s1 40072c: e8a0 jrc ra 40072e: 6500 nop -- so 0x400725 is the MIPS16 instruction address of the first MOVE instruction seen above, in a delay slot of the preceding JAL instruction indeed. This test case arranges for `main' to have no debug information so it is one of the heuristic prologue scanners, `mips16_scan_prologue' specifically in this case, that is responsible for finding the right location for the breakpoint to place. In this case the prologue really ends with the ADDIU instruction, reordered into the delay slot of the first JAL instruction. Of course we can't place the breakpoint for `main' after it as by doing so we'll let `func' to be called before hitting this breakpoint. So the breakpoint has to go at the JAL instruction instead, or 0x40071b. To make a general case out of it we must never consider any jump or branch instruction to be a part of a function's prologue. In the presence of a jump or branch at the beginning of a function the furthest instruction examined for the purpose of constructing frame information can be one in the delay slot of that jump or branch if present, and otherwise -- that is when the jump or branch is compact and has no delay slot -- the instruction immediately preceding the jump or branch. This change implements that approach across prologue scanners for the three instruction ISAs. In implementing it I have factored out code from the existing `*_instruction_has_delay_slot' handlers to be shared and a side effect for the microMIPS implementation is it now always fetches the second 16-bit halfword of 32-bit instructions even if it eventually is not going to be needed. I think it's an acceptable tradeoff for the purpose of code sharing. To make things more consistent I also carried logic from `micromips_scan_prologue' over to the other two scanners to accept (and ignore) a single non-prologue non-control transfer instruction reordered by the compiler into the prologue. While doing this I simplified the exit path from the scan loop such that `end_prologue_addr' is set only once. This made some concerns expressed in comments no longer applicable, although even before they were not valid. I have not fixed the logic around `load_immediate_bytes' in `mips32_scan_prologue' though, it remains broken, although I took care not to break it more. An approach similar to one taken for handling larger stack adjustments in `micromips_scan_prologue' will have to be eventually implemented here. For regression testing I used my usual choice of the mips-linux-gnu target and the following multilibs: -EB -EB -msoft-float -EB -mips16 -EB -mips16 -msoft-float -EB -mmicromips -EB -mmicromips -msoft-float -EB -mabi=n32 -EB -mabi=n32 -msoft-float -EB -mabi=64 -EB -mabi=64 -msoft-float and the -EL variants of same. That removed gdb.dwarf2/dw2-skip-prologue.exp failures across MIPS16 multilibs, the test log now shows: (gdb) file .../gdb.dwarf2/dw2-skip-prologue Reading symbols from .../gdb.d/gdb.dwarf2/dw2-skip-prologue...done. (gdb) delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1 at 0x40071b (gdb) set remotetimeout 5 (gdb) kill The program is not being run. (gdb) [...] target remote ...:2345 Reading symbols from .../mips16/lib/ld.so.1...done. 0x2aaa8e81 in __start () from .../mips16/lib/ld.so.1 (gdb) continue Continuing. Breakpoint 1, 0x0040071b in main () (gdb) break func Breakpoint 2 at 0x4006a1: func. (2 locations) (gdb) continue Continuing. Breakpoint 2, func (param=0) at main.c:5 5 This program is free software; you can redistribute it and/or modify (gdb) PASS: gdb.dwarf2/dw2-skip-prologue.exp: continue to breakpoint: func -- so things look like intended. That also did regress, again across MIPS16 multilibs, another test case, gdb.base/step-symless.exp: (gdb) file .../gdb.d/gdb.base/step-symless Reading symbols from .../gdb.base/step-symless...done. (gdb) delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1 at 0x4006d3 (gdb) set remotetimeout 5 (gdb) kill The program is not being run. (gdb) [...] target remote ...:2345 Reading symbols from .../mips16/lib/ld.so.1...done. 0x2aaa8e81 in __start () from .../mips16/lib/ld.so.1 (gdb) continue Continuing. Breakpoint 1, 0x004006d3 in main () (gdb) break symful Breakpoint 2 at 0x4006a5 (gdb) step Single stepping until exit from function main, which has no line number information. warning: GDB can't find the start of the function at 0x4006b9. GDB is unable to find the start of the function at 0x4006b9 and thus can't determine the size of that function's stack frame. This means that GDB may be unable to access that stack frame, or the frames below it. This problem is most likely caused by an invalid program counter or stack pointer. However, if you think GDB should simply search farther back from 0x4006b9 for code which looks like the beginning of a function, you can increase the range of the search using the `set heuristic-fence-post' command. 0x004006b9 in ?? () (gdb) FAIL: gdb.base/step-symless.exp: step -- but that is actually a good sign. Here `main', again, has no debug information and code involved looks like: 004006a0 : 4006a0: 6491 save 8,s1 4006a2: 673d move s1,sp 4006a4: b204 lw v0,4006b4 4006a6: 9a40 lw v0,0(v0) 4006a8: 4261 addiu v1,v0,1 4006aa: b203 lw v0,4006b4 4006ac: da60 sw v1,0(v0) 4006ae: 65b9 move sp,s1 4006b0: 6411 restore 8,s1 4006b2: e8a0 jrc ra 4006b4: 0041 addiu s0,sp,260 4006b6: 0860 la s0,400834 <__libc_start_main@mips16plt+0x54> 4006b8: 6491 save 8,s1 4006ba: 673d move s1,sp 4006bc: b204 lw v0,4006cc 4006be: 9a40 lw v0,0(v0) 4006c0: 4261 addiu v1,v0,1 4006c2: b203 lw v0,4006cc 4006c4: da60 sw v1,0(v0) 4006c6: 65b9 move sp,s1 4006c8: 6411 restore 8,s1 4006ca: e8a0 jrc ra 4006cc: 0041 addiu s0,sp,260 4006ce: 0860 la s0,40084c <__libc_start_main@mips16plt+0x6c> 004006d0
: 4006d0: 64d4 save 32,ra,s1 4006d2: 1a00 01ae jal 4006b8 4006d6: 0104 addiu s1,sp,16 4006d8: 1a00 01a8 jal 4006a0 4006dc: 6500 nop 4006de: 6740 move v0,zero 4006e0: 65b9 move sp,s1 4006e2: 6452 restore 16,ra,s1 4006e4: e8a0 jrc ra 4006e6: 6500 nop 4006e8: 6500 nop 4006ea: 6500 nop 4006ec: 6500 nop 4006ee: 6500 nop -- and the original log: (gdb) file .../gdb.base/step-symless Reading symbols from .../gdb.base/step-symless...done. (gdb) delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main warning: Breakpoint address adjusted from 0x004006dd to 0x004006d9. Breakpoint 1 at 0x4006d9 (gdb) set remotetimeout 5 (gdb) kill The program is not being run. (gdb) [...] target remote ...:2345 Reading symbols from .../mips16/lib/ld.so.1...done. warning: Breakpoint address adjusted from 0x004006dd to 0x004006d9. warning: Breakpoint address adjusted from 0x004006dd to 0x004006d9. 0x2aaa8e81 in __start () from .../mips16/lib/ld.so.1 (gdb) continue Continuing. warning: Breakpoint address adjusted from 0x004006dd to 0x004006d9. warning: Breakpoint 1 address previously adjusted from 0x004006dd to 0x004006d9. Breakpoint 1, 0x004006d9 in main () (gdb) break symful Breakpoint 2 at 0x4006a5 (gdb) step Single stepping until exit from function main, which has no line number information. Breakpoint 2, 0x004006a5 in symful () (gdb) PASS: gdb.base/step-symless.exp: step So the breakpoint at `main' was actually set at an instruction after the call to `symful+0x18' aka `symless' and the test only passed because single-stepping through `symless' wasn't actually done at all. With this change in place this test fails for MIPS16 multilibs consistently with all the other multilibs where it already failed in this manner previously. * mips-tdep.c (mips16_instruction_is_compact_branch): New function. (micromips_instruction_is_compact_branch): Likewise. (mips16_scan_prologue): Terminate scanning upon seeing a branch or a compact jump, reaching a jump delay slot, or seeing a second non-prologue instruction. (micromips_scan_prologue): Also terminate scanning upon seeing a compact branch or jump, or reaching a branch or jump delay slot. (mips32_scan_prologue): Terminate scanning upon reaching a branch or jump delay slot, or seeing a second non-prologue instruction. (mips32_instruction_has_delay_slot): Retain instruction examination code only, update arguments accordingly and move instruction fetch pieces to... (mips32_insn_at_pc_has_delay_slot): ... this new function. (micromips_instruction_has_delay_slot): Likewise and to... (micromips_insn_at_pc_has_delay_slot): ... this new function. (mips16_instruction_has_delay_slot): Likewise and to... (mips16_insn_at_pc_has_delay_slot): ... this new function. (mips_single_step_through_delay): Update accordingly. (mips_adjust_breakpoint_address): Likewise. commit ae79065284d6250c27377b5ca1dce54da9b1d4ba Author: Maciej W. Rozycki Date: Sun Oct 5 21:50:47 2014 +0100 MIPS: Correct MUSTBE32 interpretation in delay slot handling This change addresses `micromips_instruction_has_delay_slot' and `mips16_instruction_has_delay_slot' that both incorrectly interpret their MUSTBE32 argument. Their callers assume that when the flag is clear these functions will return 1 when any non-compact jump or branch instruction is present at ADDR, while in fact they will only return 1 for 16-bit such instructions only. This change makes the implementation match the expectations. * mips-tdep.c (micromips_instruction_has_delay_slot): When !mustbe32 also return 1 for 32-bit instructions. (mips16_instruction_has_delay_slot): Likewise. Add an explanatory comment. commit 24340e81faf9d23de6456293954de73785e53d3f Author: Alan Modra Date: Sun Oct 5 09:30:54 2014 +1030 daily update commit c2aaac080c05369f6fb7009d85dcf9bb98a914e6 Author: Alan Modra Date: Sat Oct 4 15:53:58 2014 +0930 Discard zero address range eh_frame FDEs These are useless because they can't match any address. In fact, worse than useless because the .eh_frame_hdr lookup table matching addresses to FDEs does not contain information about the FDE range. The table is sorted by address; Range is inferred by the address delta from one entry to the next. So if a zero address range FDE is followed by a normal non-zero range FDE for the same address, everything is good. However, the qsort could just as easily sort the FDEs in the other order, in which case the normal FDE would effectively be seen to have a zero range. bfd/ PR 17447 * elf-bfd.h (struct eh_cie_fde): Comment re NULL u.fde.cie_inf. * elf-eh-frame.c (_bfd_elf_parse_eh_frame): Mark zero address range FDEs for discarding. (vma_compare): Sort on range after address. (_bfd_elf_gc_mark_fdes): Test for NULL u.fde.cie_inf. (_bfd_elf_discard_section_eh_frame): Likewise. Write "FDE" in error message rather than "fde". (_bfd_elf_write_section_eh_frame_hdr): Write "PC" and "FDE" in error message. ld/testsuite/ * ld-elf/eh1.s: Don't create FDEs with zero address ranges. * ld-elf/eh3.s: Likewise. * ld-elf/eh1.d, * ld-elf/eh2.d, * ld-elf/eh3.d: Adjust. * ld-mips-elf/eh-frame1-n32.d: Warning match update. * ld-mips-elf/eh-frame1-n64.d: Likewise. * ld-mips-elf/eh-frame2-n32.d: Likewise. * ld-mips-elf/eh-frame2-n64.d: Likewise. commit 0661ae8e4d4a2cadcf04f8300540a723746cba6d Author: Alan Modra Date: Sat Oct 4 09:30:53 2014 +0930 daily update commit 6d26190c13397c3bfadac3b65d46ef47523aaff7 Author: Jing Yu Date: Fri Oct 3 14:48:14 2014 -0700 Add aarch64 to list of targets that support gold. This patch was committed to GCC trunk as revision 215865. 2014-10-03 Jing Yu * configure.ac: Add aarch64 to list of targets that support gold. * configure: Regenerate. commit 9b807e7bbbc55168e91c262c98fd09397482f9c9 Author: Maciej W. Rozycki Date: Fri Oct 3 17:38:39 2014 +0100 Also mark ELF solib trampoline minimal symbols special In installing minimal symbols for ELF shared library trampolines we "forget" to make individual symbols special where required. This leads to problems on the MIPS target using microMIPS SVR4 lazy stubs. Lacking the special annotation these stubs are treated as standard MIPS code and this makes GDB insert the wrong software breakpoint instruction, breaking e.g. single-stepping through these stubs. This is not a very frequent scenario as microMIPS SVR4 lazy stubs are typically only used in shared libraries with the main executable using PLT, handled elsewhere. Still it triggers e.g. when a software watchpoint has been installed. The symptom is SIGILL or the program going astray, depending on the endianness. Disassembly of these stubs is also wrong. * elfread.c (elf_symtab_read): Also mark solib trampoline minimal symbols special. commit 0d5ed1535229b7069757e04766f70a02fa60821c Author: Maciej W. Rozycki Date: Fri Oct 3 12:44:58 2014 +0100 Avoid software breakpoint's instruction shadow inconsistency This change: commit b775012e845380ed4c7421a1b87caf7bfae39f5f Author: Luis Machado Date: Fri Feb 24 15:10:59 2012 +0000 2012-02-24 Luis Machado * remote.c (remote_supports_cond_breakpoints): New forward declaration. [...] changed the way breakpoints are inserted and removed such that `insert_bp_location' can now be called with the breakpoint being handled already in place, while previously the call was only ever made for breakpoints that have not been put in place. This in turn caused an issue for software breakpoints and targets for which a breakpoint's `placed_address' may not be the same as the original requested address. The issue is `insert_bp_location' overwrites the previously adjusted value in `placed_address' with the original address, that is only replaced back with the correct adjusted address later on when `gdbarch_breakpoint_from_pc' is called. Meanwhile there's a window where the value in `placed_address' does not correspond to data stored in `shadow_contents', leading to incorrect instruction bytes being supplied when `one_breakpoint_xfer_memory' is called to supply the instruction overlaid by the breakpoint. And this is exactly what happens on the MIPS target with software breakpoints placed in microMIPS code. In this case not only `placed_address' is not the original address because of the ISA bit, but `mips_breakpoint_from_pc' has to read the original instruction to determine which one of the two software breakpoint instruction encodings to choose as well. The 16-bit encoding is used to replace 16-bit instructions and similarly the 32-bit one is used with 32-bit instructions, to satisfy branch delay slot size requirements. The mismatch between `placed_address' and the address data in `shadow_contents' has been obtained from leads to the wrong encoding being used in some cases, which in the case of a 32-bit software breakpoint instruction replacing a 16-bit instruction causes corruption to the adjacent following instruction and leads the debug session astray if execution reaches there e.g. with a jump. To address this problem I made the change below, that adds a `reqstd_address' field to `struct bp_target_info' and leaves `placed_address' unchanged once it has been set. This ensures data in `shadow_contents' is always consistent with `placed_address'. This approach also has this good side effect that all the places that examine the breakpoint's address see a consistent value, either `reqstd_address' or `placed_address', as required. Currently some places see either the original or the adjusted address in `placed_address', depending on whether they have been called before `gdbarch_remote_breakpoint_from_pc' or afterwards. This is in particular true for subsequent calls to `gdbarch_remote_breakpoint_from_pc' itself, e.g. from `one_breakpoint_xfer_memory'. This is also important for places like `find_single_step_breakpoint' where a breakpoint's address is compared to the raw value of $pc. * breakpoint.h (bp_target_info): Add `reqstd_address' member, update comments. * breakpoint.c (one_breakpoint_xfer_memory): Use `reqstd_address' for the breakpoint's address. Don't preinitialize `placed_size'. (insert_bp_location): Set `reqstd_address' rather than `placed_address'. (bp_target_info_copy_insertion_state): Also copy `placed_address'. (bkpt_insert_location): Use `reqstd_address' for the breakpoint's address. (bkpt_remove_location): Likewise. (deprecated_insert_raw_breakpoint): Likewise. (deprecated_remove_raw_breakpoint): Likewise. (find_single_step_breakpoint): Likewise. * mem-break.c (default_memory_insert_breakpoint): Use `reqstd_address' for the breakpoint's address. Don't set `placed_address' or `placed_size' if breakpoint contents couldn't have been determined. * remote.c (remote_insert_breakpoint): Use `reqstd_address' for the breakpoint's address. (remote_insert_hw_breakpoint): Likewise. Don't set `placed_address' or `placed_size' if breakpoint couldn't have been set. * aarch64-linux-nat.c (aarch64_linux_insert_hw_breakpoint): Use `reqstd_address' for the breakpoint's address. * arm-linux-nat.c (arm_linux_hw_breakpoint_initialize): Likewise. * ia64-tdep.c (ia64_memory_insert_breakpoint): Likewise. * m32r-tdep.c (m32r_memory_insert_breakpoint): Likewise. * microblaze-linux-tdep.c (microblaze_linux_memory_remove_breakpoint): Likewise. * monitor.c (monitor_insert_breakpoint): Likewise. * nto-procfs.c (procfs_insert_breakpoint): Likewise. (procfs_insert_hw_breakpoint): Likewise. * ppc-linux-nat.c (ppc_linux_insert_hw_breakpoint): Likewise. * ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint): Likewise. * remote-m32r-sdi.c (m32r_insert_breakpoint): Likewise. * remote-mips.c (mips_insert_breakpoint): Likewise. * x86-nat.c (x86_insert_hw_breakpoint): Likewise. commit 3e87153251d9a117182decbe57dd7d9d2a47c2b3 Author: Luis Machado Date: Fri Oct 3 08:21:33 2014 -0300 MIPS bit field failures in gdb.base/store.exp On MIPS64 little endian, attempting an assignment to a bit field that lives in a register yields the wrong result. It just corrupts the data in the register depending on the specific position of the bit field inside the structure. FAIL: gdb.base/store.exp: f_1.j FAIL: gdb.base/store.exp: f_1.k FAIL: gdb.base/store.exp: F_1.i FAIL: gdb.base/store.exp: F_1.j FAIL: gdb.base/store.exp: F_1.k FAIL: gdb.base/store.exp: f_2.j FAIL: gdb.base/store.exp: f_2.k FAIL: gdb.base/store.exp: F_2.i FAIL: gdb.base/store.exp: F_2.j FAIL: gdb.base/store.exp: F_2.k FAIL: gdb.base/store.exp: f_3.j FAIL: gdb.base/store.exp: f_3.k FAIL: gdb.base/store.exp: F_3.i FAIL: gdb.base/store.exp: F_3.j FAIL: gdb.base/store.exp: F_3.k FAIL: gdb.base/store.exp: f_4.j FAIL: gdb.base/store.exp: f_4.k FAIL: gdb.base/store.exp: F_4.i FAIL: gdb.base/store.exp: F_4.j FAIL: gdb.base/store.exp: F_4.k === gdb Summary === Now, GDB knows how to do bit field assignment properly, but MIPS is one of those architectures that uses a hook for the register-to-value conversion. Although we can properly tell when the type being passed is a structure or union, we cannot tell when it is a bit field, because the bit field data lives in a value structure. Such data only lives in a "type" structure when the parent structure is being referenced, thus you can collect them from the flds_bnds members. A bit field type structure looks pretty much the same as any other primitive type like int or char, so we can't distinguish them. Forcing more fields into the type structure wouldn't help much, because the type structs are shared. 2014-10-03 Luis Machado * valops.c (value_assign): Check for bit field assignments before calling architecture-specific register value conversion functions. commit ec48dc8bd4d90fa5c1b7cb4088fbc60a33344688 Author: Pierre Muller Date: Fri Oct 3 09:29:57 2014 +0200 [RFA] Stabs: Ignore N_BNSYM/N_ENSYM entry types Trying to debug gdb with itself, I stumbled on the following complaints Unknown symbol type 0x2e or Unknown symbol type 0x4e It appears that those corrspond to N_BNSYM and N_ENSYM, which are MacOS extensions of stabs debugging format. But these extensions have been used inside gcc probalby for a while already, see: https://gcc.gnu.org/ml/gcc/2004-08/msg00157.html As the only purpose of these entries is to allow for removal of stabs information if the function is removed, it can be safely ignored by GDB. This patch simply adds those two entry types to the list of ignored entry type in read_dbx_symtab function. Is this OK? Pierre Muller 2014-10-03 Pierre Muller * dbxread.c (read_dbx_symtab): Also ignore N_BNSYM/N_ENSYM. commit 665bd7cfef61fc6afb7968920b590cccd258c6a9 Author: Alan Modra Date: Fri Oct 3 10:45:36 2014 +0930 daily update commit d48ba5e8cff2938038cdb53aabff4ddc79ddc172 Author: Doug Evans Date: Thu Oct 2 13:07:40 2014 -0700 gdb.base/structs.c (main): Don't run forever. gdb/testsuite/ChangeLog: * gdb.base/structs.c (main): Don't run forever. commit 2278c276a887b12b85ae30d63c446bf45a3bfd9f Author: Pedro Alves Date: Wed Sep 24 18:59:42 2014 +0100 gdb.threads/manythreads.exp: clean up and add comment In git b57bacec, I said: > With that in place, the need to delay "Program received signal FOO" > was actually caught by the manythreads.exp test. Without that bit, I > was getting: > > [Thread 0x7ffff7f13700 (LWP 4499) exited] > [New Thread 0x7ffff7f0b700 (LWP 4500)] > ^C > Program received signal SIGINT, Interrupt. > [New Thread 0x7ffff7f03700 (LWP 4501)] <<< new output > [Switching to Thread 0x7ffff7f0b700 (LWP 4500)] > __GI___nptl_death_event () at events.c:31 > 31 { > (gdb) FAIL: gdb.threads/manythreads.exp: stop threads 1 > > That is, I was now getting "New Thread" lines after the "Program > received signal" line, and the test doesn't expect them. As the > number of new threads discovered before and after the "Program > received signal" output is unbounded, it's much nicer to defer > "Program received signal" until after synching the thread list, thus > close to the "switching to thread" output and "current frame/source" > info: > > [Thread 0x7ffff7863700 (LWP 7647) exited] > ^C[New Thread 0x7ffff786b700 (LWP 7648)] > > Program received signal SIGINT, Interrupt. > [Switching to Thread 0x7ffff7fc4740 (LWP 6243)] > __GI___nptl_create_event () at events.c:25 > 25 { > (gdb) PASS: gdb.threads/manythreads.exp: stop threads 1 This commit factors out the two places in the test that are effected by this, and adds there a destilled version of the comment above. gdb/testsuite/ 2014-10-02 Pedro Alves * gdb.threads/manythreads.exp (interrupt_and_wait): New procedure. (top level) : Use it. commit b57bacecd5f3684cd9f58b0da0e2caccbb6a546d Author: Pedro Alves Date: Thu Oct 2 09:55:38 2014 +0100 Fix non-stop regressions caused by "breakpoints always-inserted off" changes Commit a25a5a45 (Fix "breakpoint always-inserted off"; remove "breakpoint always-inserted auto") regressed non-stop remote debugging. This was exposed by mi-nsintrall.exp intermittently failing with a spurious SIGTRAP. The problem is that when debugging with "target remote", new threads the target has spawned but have never reported a stop aren't visible to GDB until it explicitly resyncs its thread list with the target's. For example, in a program like this: int main (void) { pthread_t child_thread; pthread_create (&child_thread, NULL, child_function, NULL); return 0; <<<< set breakpoint here } If the user sets a breakpoint at the "return" statement, and runs the program, when that breakpoint hit is reported, GDB is only aware of the main thread. So if we base the decision to remove or insert breakpoints from the target based on whether all the threads we know about are stopped, we'll miss that child_thread is running, and thus we'll remove breakpoints from the target, even through they should still remain inserted, otherwise child_thread will miss them. The break-while-running.exp test actually should also be exposing this thread-list-out-of-synch problem. That test sets a breakpoint while the main thread is stopped, but other threads are running. Because other threads are running, the breakpoint is supposed to be inserted immediately. But, unless something forces a refetch of the thread list, like, e.g., "info threads", GDB won't be aware of the other threads that had been spawned by the main thread, and so won't insert new or old breakpoints in the target. And it turns out that the test is exactly doing an explicit "info threads", masking out the problem... This commit adjust the test to exercise the case of not issuing "info threads". The test then fails without the GDB fix. In the ni-nsintrall.exp case, what happens is that several threads hit the same breakpoint, and when the first thread reports the stop, because GDB wasn't aware other threads exist, all threads known to GDB are found stopped, so GDB removes the breakpoints from the target. The other threads follow up with SIGTRAPs too for that same breakpoint, which has already been removed. For the first few threads, the moribund breakpoints machinery suppresses the SIGTRAPs, but after a few events (precisely '3 * thread_count () + 1' at the time the breakpoint was removed, see update_global_location_list), the moribund breakpoint machinery is no longer aware of the removed breakpoint, and the SIGTRAP is reported as a spurious stop. The fix is naturally then to stop assuming that if no thread in the list is executing, then the target is fully stopped. We can't know that until we fully sync the thread list. Because updating the thread list on every stop would be too much RSP traffic, I chose instead to update it whenever we're about to present a stop to the user. Actually updating the thread list at that point happens to be an item I had added to the local/remote parity wiki page a while ago: Native GNU/Linux debugging adds new threads to the thread list as the program creates them "The [New Thread foo] messages". Remote debugging can't do that, and it's arguable whether we shouldn't even stop native debugging from doing that, as it hinders inferior performance. However, a related issue is that with remote targets (and gdbserver), even after the program stops, the user still needs to do "info threads" to pull an updated thread list. This, should most likely be addressed, so that GDB pulls the list itself, perhaps just before presenting a stop to the user. With that in place, the need to delay "Program received signal FOO" was actually caught by the manythreads.exp test. Without that bit, I was getting: [Thread 0x7ffff7f13700 (LWP 4499) exited] [New Thread 0x7ffff7f0b700 (LWP 4500)] ^C Program received signal SIGINT, Interrupt. [New Thread 0x7ffff7f03700 (LWP 4501)] <<< new output [Switching to Thread 0x7ffff7f0b700 (LWP 4500)] __GI___nptl_death_event () at events.c:31 31 { (gdb) FAIL: gdb.threads/manythreads.exp: stop threads 1 That is, I was now getting "New Thread" lines after the "Program received signal" line, and the test doesn't expect them. As the number of new threads discovered before and after the "Program received signal" output is unbounded, it's much nicer to defer "Program received signal" until after synching the thread list, thus close to the "switching to thread" output and "current frame/source" info: [Thread 0x7ffff7863700 (LWP 7647) exited] ^C[New Thread 0x7ffff786b700 (LWP 7648)] Program received signal SIGINT, Interrupt. [Switching to Thread 0x7ffff7fc4740 (LWP 6243)] __GI___nptl_create_event () at events.c:25 25 { (gdb) PASS: gdb.threads/manythreads.exp: stop threads 1 Tested on x86_64 Fedora 20, native and gdbserver. gdb/ 2014-10-02 Pedro Alves * breakpoint.c (breakpoints_should_be_inserted_now): Use threads_are_executing. * breakpoint.h (breakpoints_should_be_inserted_now): Add describing comment. * gdbthread.h (threads_are_executing): Declare. (handle_signal_stop) : Don't print about the signal here if stopping. (end_stepping_range): Don't notify observers here. (normal_stop): Update the thread list. If stopped by a random signal or a stepping range ended, notify observers. * thread.c (threads_executing): New global. (init_thread_list): Clear 'threads_executing'. (set_executing): Set or clear 'threads_executing'. (threads_are_executing): New function. (update_threads_executing): New function. (update_thread_list): Use it. gdb/testsuite/ 2014-10-02 Pedro Alves * gdb.threads/break-while-running.exp (test): Add new 'update_thread_list' argument. Skip "info threads" if false. (top level): Add new 'update_thread_list' axis. commit 13fd3ff34329b882503c7c1ef44b3656d6ebb022 Author: Pedro Alves Date: Thu Oct 2 09:55:38 2014 +0100 PR17431: following execs with "breakpoint always-inserted on" Following an exec with "breakpoint always-inserted on" tries to insert breakpoints in the new image at the addresses the symbols had in the old image. With "always-inserted off", we see: gdb gdb.multi/multi-arch-exec -ex "set breakpoint always-inserted off" GNU gdb (GDB) 7.8.50.20140924-cvs ... (gdb) b main Breakpoint 1 at 0x400664: file gdb.multi/multi-arch-exec.c, line 24. ^^^^^^^^ (gdb) c The program is not being run. (gdb) r Starting program: testsuite/gdb.multi/multi-arch-exec Breakpoint 1, main () at gdb/testsuite/gdb.multi/multi-arch-exec.c:24 24 execl (BASEDIR "/multi-arch-exec-hello", (gdb) c Continuing. process 9212 is executing new program: gdb/testsuite/gdb.multi/multi-arch-exec-hello Breakpoint 1, main () at gdb/testsuite/gdb.multi/hello.c:40 40 bar(); (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y 0x080484e4 in main at gdb/testsuite/gdb.multi/hello.c:40 ^^^^^^^^^^ breakpoint already hit 2 times (gdb) Note how main was 0x400664 in multi-arch-exec, and 0x080484e4 in gdb.multi/hello. With "always-inserted on", we get: Breakpoint 1, main () at gdb/testsuite/gdb.multi/multi-arch-exec.c:24 24 execl (BASEDIR "/multi-arch-exec-hello", (gdb) c Continuing. infrun: target_wait (-1, status) = infrun: 9444 [process 9444], infrun: status->kind = execd infrun: infwait_normal_state infrun: TARGET_WAITKIND_EXECD Warning: Cannot insert breakpoint 1. Cannot access memory at address 0x400664 (gdb) That is, GDB is trying to insert a breakpoint at 0x400664, after the exec, and then that address happens to not be mapped at all in the new image. The problem is that update_breakpoints_after_exec is creating breakpoints, which ends up in update_global_location_list immediately inserting breakpoints if "breakpoints always-inserted" is "on". update_breakpoints_after_exec is called very early when we see an exec event. At that point, we haven't loaded the symbols of the new post-exec image yet, and thus haven't reset breakpoint's addresses to whatever they may be in the new image. All we should be doing in update_breakpoints_after_exec is deleting breakpoints that no longer make sense after an exec. So the fix removes those breakpoint creations. The question is then, if not here, where are those breakpoints re-created? Turns out we don't need to do anything else, because at the end of follow_exec, we call breakpoint_re_set, whose tail is also creating exactly the same breakpoints update_breakpoints_after_exec is currently creating: breakpoint_re_set (void) { ... create_overlay_event_breakpoint (); create_longjmp_master_breakpoint (); create_std_terminate_master_breakpoint (); create_exception_master_breakpoint (); } A new test is added to exercise this. Tested on x86_64 Fedora 20. gdb/ 2014-10-02 Pedro Alves PR breakpoints/17431 * breakpoint.c (update_breakpoints_after_exec): Don't create overlay, longjmp, std terminate nor exception breakpoints here. gdb/testsuite/ 2014-10-02 Pedro Alves PR breakpoints/17431 * gdb.base/execl-update-breakpoints.c: New file. * gdb.base/execl-update-breakpoints.exp: New file. commit 32990adaadc1b119700cd0dfd2dd8849114e0135 Author: Pedro Alves Date: Thu Oct 2 09:55:38 2014 +0100 Reduce Hg packet (select remote general thread) bouncing A patch I wrote made GDB pull the thread list sooner when debugging with target remote, and I noticed an intended consequence. GDB started bouncing around the currently selected remote/general thread more frequently. E.g.: Sending packet: $qTMinFTPILen#3b...Packet received: 5 +Sending packet: $Hgp726d.726d#53...Packet received: OK Sending packet: $m400680,40#2f...Packet received: 85c0741455bff00d60004889e5ffd05de97bffffff0f1f00e973ffffff0f1f00554889e5c745fc00000000c745fc01000000e900000000c745fc02000000b800 +Sending packet: $Hgp726d.7278#28...Packet received: OK Sending packet: $m4006b2,1#28...Packet received: e9 Fast tracepoint 2 at 0x4006b2: file gdb/testsuite/gdb.trace/range-stepping.c, line 53. Sending packet: $qTStatus#49...Packet received: T0;tnotrun:0;tframes:0;tcreated:0;tfree:500000;tsize:500000;circular:0;disconn:0;starttime:0;stoptime:0;username:;notes:: This ended up breaking "tstart" when one has fast tracepoints set, because gdbserver isn't expecting an Hg packet in response to qRelocInsn: (gdb) ftrace *set_point Fast tracepoint 3 at 0x4006b2: file gdb/testsuite/gdb.trace/range-stepping.c, line 53. (gdb) PASS: gdb.trace/range-stepping.exp: ftrace: ftrace *set_point tstart gdbserver: Malformed response to qRelocInsn, ignoring: Hgp2783.2783 Target does not support this command. (gdb) FAIL: gdb.trace/range-stepping.exp: ftrace: tstart remote_trace_start should probably start by making sure the remote current thread matches inferior_ptid (calling set_general_thread), but still, reducing unnecessary bouncing is a good idea. It happens because the memory/symbol/breakpoint routines use switch_to_program_space_and_thread to do something in the right context and then revert back to the previously current thread. The fix is to simply make any_thread_of_process, find_inferior_for_program_space, etc. give preference to the current thread/inferior it if matches. gdb/ 2014-10-02 Pedro Alves * gdbthread.h (any_thread_of_process, any_live_thread_of_process): Adjust comments. * inferior.c (find_inferior_for_program_space): Give preference to the current inferior. * inferior.h (find_inferior_for_program_space): Update comment. * progspace.c (switch_to_program_space_and_thread): Prefer the current inferior if it's bound to the program space requested. If the inferior found doesn't have a PID yet, don't bother looking up a thread. * progspace.h (switch_to_program_space_and_thread): Adjust comment. * thread.c (any_thread_of_process, any_live_thread_of_process): Give preference to the current thread. commit dac3fe877844e76de9cf102151837998aa1d2a8f Author: Alan Modra Date: Thu Oct 2 09:30:37 2014 +0930 daily update commit 0fec99e8be72b091618862eafc14e2741f0ff0d5 Author: Pedro Alves Date: Wed Oct 1 23:31:55 2014 +0100 Really fail inserting software breakpoints on read-only regions Currently, with "set breakpoint auto-hw off", we'll still try to insert a software breakpoint at addresses covered by supposedly read-only or inacessible regions: (top-gdb) mem 0x443000 0x450000 ro (top-gdb) set mem inaccessible-by-default off (top-gdb) disassemble Dump of assembler code for function main: 0x0000000000443956 <+34>: movq $0x0,0x10(%rax) => 0x000000000044395e <+42>: movq $0x0,0x18(%rax) 0x0000000000443966 <+50>: mov -0x24(%rbp),%eax 0x0000000000443969 <+53>: mov %eax,-0x20(%rbp) End of assembler dump. (top-gdb) b *0x0000000000443969 Breakpoint 5 at 0x443969: file ../../src/gdb/gdb.c, line 29. (top-gdb) c Continuing. warning: cannot set software breakpoint at readonly address 0x443969 Breakpoint 5, 0x0000000000443969 in main (argc=1, argv=0x7fffffffd918) at ../../src/gdb/gdb.c:29 29 args.argc = argc; (top-gdb) We warn, saying that the insertion can't be done, but then proceed attempting the insertion anyway, and in case of manually added regions, the insert actually succeeds. This is a regression; GDB used to fail inserting the breakpoint. More below. I stumbled on this as I wrote a test that manually sets up a read-only memory region with the "mem" command, in order to test GDB's behavior with breakpoints set on read-only regions, even when the real memory the breakpoints are set at isn't really read-only. I wanted that in order to add a test that exercises software single-stepping through read-only regions. Note that the memory regions that target_memory_map returns aren't like e.g., what would expect to see in /proc/PID/maps on Linux. Instead, they're the physical memory map from the _debuggers_ perspective. E.g., a read-only region would be real ROM or flash memory, while a read-only+execute mapping in /proc/PID/maps is still read-write to the debugger (otherwise the debugger wouldn't be able to set software breakpoints in the code segment). If one tries to manually write to memory that falls within a memory region that is known to be read-only, with e.g., "p foo = 1", then we hit a check in memory_xfer_partial_1 before the write mananges to make it to the target side. But writing a software/memory breakpoint nowadays goes through target_write_raw_memory, and unlike when writing memory with TARGET_OBJECT_MEMORY, nothing on the TARGET_OBJECT_RAW_MEMORY path checks whether we're trying to write to a read-only region. At the time "breakpoint auto-hw" was added, we didn't have the TARGET_OBJECT_MEMORY vs TARGET_OBJECT_RAW_MEMORY target object distinction yet, and the code path in memory_xfer_partial that blocks writes to read-only memory was hit for memory breakpoints too. With GDB 6.8 we had: warning: cannot set software breakpoint at readonly address 0000000000443943 Warning: Cannot insert breakpoint 1. Error accessing memory address 0x443943: Input/output error. So I started out by fixing this by adding the memory region validation to TARGET_OBJECT_RAW_MEMORY too. But later, when testing against GDBserver, I realized that that would only block software/memory breakpoints GDB itself inserts with gdb/mem-break.c. If a target has a to_insert_breakpoint method, the insertion request will still pass through to the target. So I ended up converting the "cannot set breakpoint" warning in breakpoint.c to a real error return, thus blocking the insertion sooner. With that, we'll end up no longer needing the TARGET_OBJECT_RAW_MEMORY changes once software single-step breakpoints are converted to real breakpoints. We need them today as software single-step breakpoints bypass insert_bp_location. But, it'll be best to leave that in as safeguard anyway, for other direct uses of TARGET_OBJECT_RAW_MEMORY. Tested on x86_64 Fedora 20, native and gdbserver. gdb/ 2014-10-01 Pedro Alves * breakpoint.c (insert_bp_location): Error out if inserting a software breakpoint at a read-only address. * target.c (memory_xfer_check_region): New function, factored out from ... (memory_xfer_partial_1): ... this. Make the 'reg_len' local a ULONGEST. (target_xfer_partial) : Check the access against the memory region attributes. gdb/testsuite/ 2014-10-01 Pedro Alves * gdb.base/breakpoint-in-ro-region.c: New file. * gdb.base/breakpoint-in-ro-region.exp: New file. commit 2ddf4301102f7a78a03bccf86051a63111b1fcc1 Author: Simon Marchi Date: Mon Sep 29 17:33:09 2014 -0400 Exit code of exited inferiors in -list-thread-groups Don't reset the exit code at inferior exit and print it in -list-thread-groups. gdb/ChangeLog: * NEWS: Announce new exit-code field in -list-thread-groups output. * inferior.c (exit_inferior_1): Don't clear exit code. (inferior_appeared): Clear exit code. * mi/mi-main.c (print_one_inferior): Add printing of the exit code. gdb/testsuite/ChangeLog: * gdb.mi/mi-exit-code.exp: New file. * gdb.mi/mi-exit-code.c: New file. gdb/doc/ChangeLog: * gdb.texinfo (Miscellaneous gdb/mi Commands): Document new exit-code field in -list-thread-groups output. commit 5fdeec1db01500cda1fa46be582fecc69ed1d1a3 Author: Pedro Alves Date: Wed Oct 1 13:40:13 2014 +0100 Add read-only markers to generated gdb/regformats/ .dat files We have read-only markers in most generated sources already, so that Emacs/Vi users won't edit them accidentally, but were missing them on the generated gdb/regformats/ .dat files. gdb/ 2014-10-01 Pedro Alves * features/Makefile ($(outdir)/%.dat): Output "THIS FILE IS GENERATED" along with emacs/vi read-only markers. * regformats/aarch64.dat: Regenerate. * regformats/arm-with-iwmmxt.dat: Regenerate. * regformats/arm-with-neon.dat: Regenerate. * regformats/arm-with-vfpv2.dat: Regenerate. * regformats/arm-with-vfpv3.dat: Regenerate. * regformats/i386/amd64-avx-linux.dat: Regenerate. * regformats/i386/amd64-avx.dat: Regenerate. * regformats/i386/amd64-avx512-linux.dat: Regenerate. * regformats/i386/amd64-avx512.dat: Regenerate. * regformats/i386/amd64-linux.dat: Regenerate. * regformats/i386/amd64-mpx-linux.dat: Regenerate. * regformats/i386/amd64-mpx.dat: Regenerate. * regformats/i386/amd64.dat: Regenerate. * regformats/i386/i386-avx-linux.dat: Regenerate. * regformats/i386/i386-avx.dat: Regenerate. * regformats/i386/i386-avx512-linux.dat: Regenerate. * regformats/i386/i386-avx512.dat: Regenerate. * regformats/i386/i386-linux.dat: Regenerate. * regformats/i386/i386-mmx-linux.dat: Regenerate. * regformats/i386/i386-mmx.dat: Regenerate. * regformats/i386/i386-mpx-linux.dat: Regenerate. * regformats/i386/i386-mpx.dat: Regenerate. * regformats/i386/i386.dat: Regenerate. * regformats/i386/x32-avx-linux.dat: Regenerate. * regformats/i386/x32-avx.dat: Regenerate. * regformats/i386/x32-avx512-linux.dat: Regenerate. * regformats/i386/x32-avx512.dat: Regenerate. * regformats/i386/x32-linux.dat: Regenerate. * regformats/i386/x32.dat: Regenerate. * regformats/microblaze-with-stack-protect.dat: Regenerate. * regformats/mips-dsp-linux.dat: Regenerate. * regformats/mips-linux.dat: Regenerate. * regformats/mips64-dsp-linux.dat: Regenerate. * regformats/mips64-linux.dat: Regenerate. * regformats/nios2-linux.dat: Regenerate. * regformats/rs6000/powerpc-32.dat: Regenerate. * regformats/rs6000/powerpc-32l.dat: Regenerate. * regformats/rs6000/powerpc-64l.dat: Regenerate. * regformats/rs6000/powerpc-altivec32l.dat: Regenerate. * regformats/rs6000/powerpc-altivec64l.dat: Regenerate. * regformats/rs6000/powerpc-cell32l.dat: Regenerate. * regformats/rs6000/powerpc-cell64l.dat: Regenerate. * regformats/rs6000/powerpc-e500l.dat: Regenerate. * regformats/rs6000/powerpc-vsx32l.dat: Regenerate. * regformats/rs6000/powerpc-vsx64l.dat: Regenerate. * regformats/s390-linux32.dat: Regenerate. * regformats/s390-linux32v1.dat: Regenerate. * regformats/s390-linux32v2.dat: Regenerate. * regformats/s390-linux64.dat: Regenerate. * regformats/s390-linux64v1.dat: Regenerate. * regformats/s390-linux64v2.dat: Regenerate. * regformats/s390-te-linux64.dat: Regenerate. * regformats/s390x-linux64.dat: Regenerate. * regformats/s390x-linux64v1.dat: Regenerate. * regformats/s390x-linux64v2.dat: Regenerate. * regformats/s390x-te-linux64.dat: Regenerate. * regformats/tic6x-c62x-linux.dat: Regenerate. * regformats/tic6x-c62x.dat: Regenerate. * regformats/tic6x-c64x-linux.dat: Regenerate. * regformats/tic6x-c64x.dat: Regenerate. * regformats/tic6x-c64xp-linux.dat: Regenerate. * regformats/tic6x-c64xp.dat: Regenerate. commit db74e4ba014f9ee96e8c8587534811c91c4d8ebb Author: Pedro Alves Date: Wed Oct 1 11:18:22 2014 +0100 features/Makefile: Make 'make cfiles' default to generating all C files This makes it easier to rebuild all GDB's generated target description C files. It also clarifies the comments a bit. One might think we need a GDB configured for the particular arquitecture (--target=foo). But a build that includes support for the target description is sufficient. (GDB rejects target descriptions that explicitly specify the architecture, with an element, if the architecture is unknown.) Tested that "make clean-cfiles" deletes all .c files under src/gdb/features/, and that "make cfiles" generates them all without error, and that diffing the newly generated C files against master comes out an empty diff. gdb/ 2014-10-01 Pedro Alves * features/Makefile: Update comments. (XMLTOC): List all xml files we build C files from. (clean-cfiles): New rule. commit d63f2f8402c38d106b8508f324da6a5277471a2d Author: Pedro Alves Date: Wed Oct 1 11:59:46 2014 +0100 Regenerate AVX512 target description C files I regenerated all the .c files under src/gdb/features/ and this is what I got. gdb/ 2014-10-01 Pedro Alves * features/i386/amd64-avx512-linux.c: Regenerate. * features/i386/amd64-avx512.c: Regenerate. * features/i386/x32-avx512-linux.c: Regenerate. * features/i386/x32-avx512.c: Regenerate. commit 20ad026db61cde2376aa5de641ee63b46e818fa4 Author: Pedro Alves Date: Wed Oct 1 10:06:04 2014 +0100 gdb/regformats: Don't build .dat files that aren't used by GDBserver The only reason .dat files exist is for GBBserver to use them in its build system. A few .dat files are listed as targets for generation that shouldn't. The target descriptions these files are built from aren't used by GDBserver. They're fallback descriptions GDB itself has baked in. Remove them from the list of .dat files to be generated, otherwise a plain "make" under src/gdb/features/ generates new .dat files that aren't even in the tree today. gdb/ 2014-10-01 Pedro Alves * features/Makefile (WHICH): Remove arm-with-m, arm-with-m-fpa-layout and arm-with-m-vfp-d16. commit acc9fe45000902313cf7ee9139136419858d874c Author: Pedro Alves Date: Wed Oct 1 10:06:03 2014 +0100 features/Makefile: Add a "clean" rule. So that we can do "make clean all" to regenerate all the renerated .dat files. gdb/ 2014-10-01 Pedro Alves * features/Makefile (clean): New rule. commit e001e535f63d804127269fbdfbcbefa1f206bf46 Author: Pedro Alves Date: Wed Oct 1 10:06:04 2014 +0100 Fix features/i386/64bit-avx512.xml This file's format is invalid, as it's missing some end quotes. I noticed this because I tried to regenerate all the .dat files in gdb/regformats/. I got: sh ../../move-if-change ../regformats/i386/x32-avx.tmp ../regformats/i386/x32-avx.dat echo "# DO NOT EDIT: generated from i386/x32-avx512.xml" > ../regformats/i386/x32-avx512.tmp echo "name:`echo x32-avx512 | sed 's/-/_/g'`" >> ../regformats/i386/x32-avx512.tmp echo "xmltarget:x32-avx512.xml" >> ../regformats/i386/x32-avx512.tmp echo "expedite:rbp,rsp,rip" \ >> ../regformats/i386/x32-avx512.tmp xsltproc --path "/home/pedro/gdb/mygit/src/gdb/features" --xinclude number-regs.xsl i386/x32-avx512.xml | \ xsltproc sort-regs.xsl - | \ xsltproc gdbserver-regs.xsl - >> ../regformats/i386/x32-avx512.tmp i386/64bit-avx512.xml:81: parser error : Unescaped '<' not allowed in attributes values Date: Wed Sep 10 12:55:39 2014 +0000 Drop 'regset_from_core_section' gdbarch method Now that all instances of the regset_from_core_section gdbarch method have been replaced by the new iterator method, delete the obsolete method from the gdbarch interface. Adjust all invocations and references to it. gdb/ChangeLog: * gdbarch.sh (regset_from_core_section): Remove gdbarch method. * gdbarch.c: Regenerate. * gdbarch.h: Likewise. * corelow.c (sniff_core_bfd): Drop presence check for deleted gdbarch method 'regset_from_core_section'. (get_core_register_section): Remove handling for the case that regset == NULL and regset_from_core_section is defined. (get_core_registers): Drop check for deleted method. * procfs.c (procfs_do_thread_registers): Adjust comment. commit f968fe80b09ddc88538db2250b367fc0074739fa Author: Andreas Arnez Date: Wed Sep 10 12:42:14 2014 +0000 Linux targets: drop fall back to target method for 'make_corefile_notes' Now that all Linux targets use the regset iterator, the fall back to the deprecated target method is dropped. gdb/ChangeLog: * linux-nat.c (linux_nat_collect_thread_registers): Remove. (linux_nat_make_corefile_notes): Remove. (linux_target_install_ops): Do not set target method 'make_corefile_notes'. * linux-tdep.c (struct linux_corefile_thread_data): Remove field. (linux_corefile_thread_callback): Instead of args->collect, call linux_collect_thread_registers. (linux_make_corefile_notes): Remove 'collect' parameter. Return NULL unless there is a regset iterator. (linux_make_corefile_notes_1): Remove. (linux_init_abi): Replace reference to linux_make_corefile_notes_1 by linux_make_corefile_notes. * linux-tdep.h (linux_make_corefile_notes): Remove prototype. commit 174ad59a8eff83977a367d2cbb358c00fc470ee9 Author: Andreas Arnez Date: Wed Sep 10 12:02:43 2014 +0000 Drop target method 'fbsd_make_corefile_notes' Now that all users of the target method 'fbsd_make_corefile_notes' have been converted to the version in fbsd-tdep.c, the old method is removed. gdb/ChangeLog: * fbsd-nat.c (find_signalled_thread, find_stop_signal) (fbsd_collect_regset_section_cb, fbsd_make_corefile_notes): Remove. * fbsd-nat.h (fbsd_make_corefile_notes): Remove prototype. commit 970940347aef2ad1737d76cfabc12f6c9ca2ba89 Author: Andreas Arnez Date: Fri Nov 29 17:06:22 2013 +0000 XTENSA: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For Xtensa targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * xtensa-tdep.c (xtensa_regset_from_core_section): Remove. (xtensa_iterate_over_regset_sections): New. (xtensa_gdbarch_init): Adjust gdbarch initialization. commit f73d3ce7f83e5dc0ff749685376b144ba2dae471 Author: Andreas Arnez Date: Fri Nov 29 17:06:09 2013 +0000 VAX: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For VAX targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * vax-tdep.c (vax_regset_from_core_section): Remove. (vax_iterate_over_regset_sections): New. (vax_gdbarch_init): Adjust gdbarch initialization. commit cb24567a55ff937453f9b35934d3d6a0aad804b1 Author: Andreas Arnez Date: Fri Nov 29 17:05:44 2013 +0000 TILEGX: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For TILE-Gx GNU/Linux targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * tilegx-linux-tdep.c (TILEGX_LINUX_SIZEOF_GREGSET): New macro. (tilegx_regset_from_core_section): Remove. (tilegx_iterate_over_regset_sections): New. (tilegx_linux_init_abi): Adjust gdbarch initialization. commit e5139de88ebbfb9ce9c121e526fa507d0fa4fcea Author: Andreas Arnez Date: Fri Nov 29 17:02:53 2013 +0000 SPARC: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For SPARC targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * sparc-tdep.c (sparc_regset_from_core_section): Remove. (sparc_iterate_over_regset_sections): New. (sparc32_gdbarch_init): Adjust gdbarch initialization. * configure.tgt (gdb_target_obs): Add fbsd-tdep.o for SPARC FreeBSD targets. * sparc64fbsd-tdep.c (fbsd-tdep.h): Include. (sparc64fbsd_init_abi): Call fbsd_init_abi. * sparc64fbsd-nat.c (_initialize_sparc64fbsd_nat): Do not set target method 'make_corefile_notes'. commit c6d41a6f5380624846daca4d9aad5988b3946cbd Author: Andreas Arnez Date: Fri Nov 29 16:57:54 2013 +0000 SH: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For Super-H targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * sh-linux-tdep.c (sh_linux_init_abi): Set tdep fields 'sizeof_gregset' and 'sizeof_fpregset'. * sh-tdep.c (sh_regset_from_core_section): Remove. (sh_iterate_over_regset_sections): New. (sh_gdbarch_init): Adjust gdbarch initialization. * sh-tdep.h (struct gdbarch_tdep): New fields sizeof_gregset and sizeof_fpregset. * shnbsd-tdep.c (shnbsd_init_abi): Set tdep field 'sizeof_gregset'. commit 9845a0b521d8a9a117d37dbfdec56677dd7cdae8 Author: Andreas Arnez Date: Tue Sep 2 14:34:34 2014 +0000 SCORE: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For S+core targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * score-tdep.c (score7_linux_regset_from_core_section): Remove. (score7_linux_iterate_over_regset_sections): New. (score_gdbarch_init): Adjust gdbarch initialization. commit 23ea9aebceb83a7b0e00da62de37d592ba51b616 Author: Andreas Arnez Date: Wed Sep 10 08:42:07 2014 +0000 PPC: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For PPC targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * configure.tgt (gdb_target_obs): Add fbsd-tdep.o for PowerPC FreeBSD targets. * ppcfbsd-nat.c (_initialize_ppcfbsd_nat): Do not set target method 'make_corefile_notes'. * ppcfbsd-tdep.c (fbsd-tdep.h): Include. (ppcfbsd_regset_from_core_section): Remove. (ppcfbsd_iterate_over_regset_sections): New. (ppcfbsd_init_abi): Call fbsd_init_abi. Adjust gdbarch initialization. * ppcnbsd-tdep.c (ppcnbsd_regset_from_core_section): Remove. (ppcnbsd_iterate_over_regset_sections): New. (ppcnbsd_init_abi): Adjust. * ppcobsd-tdep.c (ppcobsd_regset_from_core_section): Remove. (ppcobsd_iterate_over_regset_sections): New. (ppcobsd_init_abi): Adjust. * rs6000-aix-tdep.c (rs6000_aix_regset_from_core_section): Remove. (rs6000_aix_iterate_over_regset_sections): New. (rs6000_aix_init_osabi): Adjust. commit c5b8d704bc8cf2fa2c6f23cbdb57c935550e6a6a Author: Andreas Arnez Date: Tue Sep 2 14:00:44 2014 +0000 NIOS2: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For Nios II GNU/Linux targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * nios2-linux-tdep.c (NIOS2_GREGS_SIZE): New macro. (nios2_regset_from_core_section): Remove. (nios2_iterate_over_regset_sections): New. (nios2_linux_init_abi): Adjust gdbarch initialization. commit 3636e6083c1dc792e2fe0142f45e9f86cc593528 Author: Andreas Arnez Date: Fri Nov 29 16:51:36 2013 +0000 MN10300: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'. For MN10300 GNU/Linux targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * mn10300-linux-tdep.c (am33_regset_from_core_section): Remove. (am33_iterate_over_regset_sections): New. (am33_linux_init_osabi): Adjust gdbarch initialization. commit d40362355c4db0a32381a2c44e0761030a5197de Author: Andreas Arnez Date: Fri Nov 29 16:49:03 2013 +0000 MIPS: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For MIPS targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * mips-linux-tdep.c (mips_linux_regset_from_core_section): Remove. (mips_linux_iterate_over_regset_sections): New. (mips_linux_init_abi): Adjust gdbarch initialization. * mips64obsd-tdep.c (mips64obsd_regset_from_core_section): Remove. (mips64obsd_iterate_over_regset_sections): New. (mips64obsd_init_abi): Adjust. * mipsnbsd-tdep.c (mipsnbsd_regset_from_core_section): Remove. (mipsnbsd_iterate_over_regset_sections): New. (mipsnbsd_init_abi): Adjust. commit b61ddd6e2452974afa3fb8ecaf3dea74d47a0b5e Author: Andreas Arnez Date: Fri Nov 29 16:48:24 2013 +0000 M88K: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For M88K targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * m88k-tdep.c (m88k_regset_from_core_section): Remove. (m88k_iterate_over_regset_sections): New. (m88k_gdbarch_init): Adjust gdbarch initialization. commit 55a2906a4104af66db515294b18fca1fe63ea060 Author: Andreas Arnez Date: Sat Mar 29 09:51:23 2014 +0000 IA64: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For IA-64 GNU/Linux targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * ia64-linux-tdep.c (ia64_linux_regset_from_core_section): Remove. (ia64_linux_iterate_over_regset_sections): New. (ia64_linux_init_abi): Adjust gdbarch initialization. commit 022c98ab88317728d2f77fc1b3726bf1717dacff Author: Andreas Arnez Date: Sat Mar 29 09:39:44 2014 +0000 M68K: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For m68k BSD and GNU/Linux targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * m68kbsd-tdep.c (m68kbsd_regset_from_core_section): Remove. (m68kbsd_iterate_over_regset_sections): New. (m68kbsd_init_abi): Adjust gdbarch initialization. * m68klinux-tdep.c (m68k_linux_regset_from_core_section): Remove. (m68k_linux_iterate_over_regset_sections): New. (m68k_linux_init_abi): Adjust gdbarch initialization. commit 5fac247f472389db46e7612d9e425991f77d64b7 Author: Andreas Arnez Date: Fri Nov 29 16:41:28 2013 +0000 M32R: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For m32r GNU/Linux targets, don't define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * m32r-linux-tdep.c (M32R_LINUX_GREGS_SIZE): New macro. (m32r_linux_regset_from_core_section): Remove. (m32r_linux_iterate_over_regset_sections): New. (m32r_linux_init_abi): Adjust gdbarch initialization. commit 490496c342237f3fa2dd92adfe9e34516991f451 Author: Andreas Arnez Date: Sat Mar 29 10:04:26 2014 +0000 X86: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For all I386 and AMD64 targets, replace all occurrences of regset_from_core_section by the iterator method. gdb/ChangeLog: * amd64obsd-tdep.c (amd64obsd_regset_from_core_section): Remove. (amd64obsd_iterate_over_regset_sections): New. (amd64obsd_core_init_abi): Adjust gdbarch initialization. * i386-cygwin-tdep.c (i386_windows_regset_from_core_section): Remove. (i386_cygwin_init_abi): Clear tdep->sizeof_fpregset. Drop regset_from_core_section initialization. * i386-tdep.c (i386_regset_from_core_section): Remove. (i386_iterate_over_regset_sections): New. (i386_gdbarch_init): Adjust gdbarch initialization. * i386-tdep.h (i386_regset_from_core_section): Remove prototype. (i386_iterate_over_regset_sections): New prototype. * i386obsd-tdep.c (i386obsd_aout_regset_from_core_section): Remove. (i386obsd_aout_iterate_over_regset_sections): New. (i386obsd_aout_init_abi): Adjust gdbarch initialization. * configure.tgt (gdb_target_obs): Add fbsd-tdep.o for all x86 FreeBSD targets. * amd64fbsd-tdep.c (fbsd-tdep.h): Include. (amd64fbsd_init_abi): Call fbsd_init_abi. * i386fbsd-tdep.c (fbsd-tdep.h): Include. (i386fbsd4_init_abi): Call fbsd_init_abi. * amd64fbsd-nat.c (_initialize_amd64fbsd_nat): No longer set target method 'make_corefile_notes'. * i386fbsd-nat.c (_initialize_i386fbsd_nat): Likewise. commit 50c5eb5335ff58688fd4652a40c791088a94d532 Author: Andreas Arnez Date: Sat Mar 29 09:28:30 2014 +0000 HPPA: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For HP PA-RISC targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * hppa-hpux-tdep.c (hppa_hpux_regset_from_core_section): Remove. (hppa_hpux_iterate_over_regset_sections): New. (hppa_hpux_init_abi): Adjust gdbarch initialization. * hppa-linux-tdep.c (hppa_linux_regset_from_core_section): Remove. (hppa_linux_iterate_over_regset_sections): New. (hppa_linux_init_abi): Adjust. * hppanbsd-tdep.c (hppaobsd_regset_from_core_section): Remove. (hppanbsd_iterate_over_regset_sections): New. (hppanbsd_init_abi): Adjust. * hppaobsd-tdep.c (hppaobsd_regset_from_core_section): Remove. (hppaobsd_iterate_over_regset_sections): New. (hppaobsd_init_abi): Adjust. commit 66afae4f0ae73fee2ee19ced16110e184e6c0076 Author: Andreas Arnez Date: Fri Nov 29 16:31:01 2013 +0000 FRV: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For FR-V GNU/Linux targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * frv-linux-tdep.c (frv_linux_regset_from_core_section): Remove. (frv_linux_iterate_over_regset_sections): New. (frv_linux_init_abi): Adjust gdbarch initialization. commit ed09174e35d31547d3b89f366890022fd1bee1ac Author: Andreas Arnez Date: Sat Mar 29 09:12:57 2014 +0000 ARM: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' For ARM BSD targets, don't define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * arm-tdep.h (armbsd_regset_from_core_section): Remove prototype. (armbsd_iterate_over_regset_sections): New prototype. * armbsd-tdep.c (armbsd_regset_from_core_section): Remove. (armbsd_iterate_over_regset_sections): New. * armobsd-tdep.c (armobsd_init_abi): Adjust gdbarch initialization. commit dff2166ef98100e28ae22146bcdcd1a0aec9f952 Author: Andreas Arnez Date: Mon Mar 3 13:54:50 2014 +0000 ALPHA: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' Don't define the 'regset_from_core_section' method, but the iterator method instead. Do this for GNU/Linux- as well as Net/OpenBSD-targets. In the case of GNU/Linux this should enable non-native use of the 'generate-core-file' command. gdb/ChangeLog: * alpha-linux-tdep.c (alpha_linux_regset_from_core_section): Remove. (alpha_linux_iterate_over_regset_sections): New. (alpha_linux_init_abi): Adjust gdbarch initialization. * alphabsd-tdep.h (alphanbsd_regset_from_core_section): Remove prototype. (alphanbsd_iterate_over_regset_sections): New prototype. * alphafbsd-tdep.c (alphafbsd_init_abi): Add comment for missing fbsd_init_abi invocation. * alphanbsd-tdep.c (alphanbsd_supply_gregset): Move below alphanbsd_aout_supply_gregset. Invoke the latter for the appropriate size. (alphanbsd_aout_gregset): Remove. (alphanbsd_regset_from_core_section): Remove. (alphanbsd_iterate_over_regset_sections): New. (alphanbsd_init_abi): Adjust gdbarch initialization. * alphaobsd-tdep.c (alphaobsd_init_abi): Likewise. commit 4108500a2ac989e770d91f076be4c9434e25afa8 Author: Andreas Arnez Date: Mon Apr 28 07:56:51 2014 +0000 AARCH64: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections' Don't define the 'regset_from_core_section' method, but the iterator method instead. This slightly reduces the code and enables non-native use of the 'generate-core-file' command. Also, when all instances of 'regset_from_core_section' are replaced, it can be dropped from the gdbarch interface. gdb/ChangeLog: * aarch64-linux-tdep.c (aarch64_linux_regset_from_core_section): Remove. (aarch64_linux_iterate_over_regset_sections): New. (aarch64_linux_init_abi): Adjust gdbarch initialization. commit a904c024b0760911288e865c62d91578fd887e3b Author: Andreas Arnez Date: Tue Dec 3 11:35:35 2013 +0000 Add multi-arch capable 'fbsd_make_corefile_notes' variant This creates a new version of the FreeBSD core file note generation logic in the new target-dependent file "fbsd-tdep.c". The new version is mostly copied from "fbsd-nat.c", but uses the iterator instead of regset_from_core_section and defines fbsd_make_corefile_notes as a gdbarch method instead of a target method. Consecutive architecture-dependent changes exploit the new version, migrating away from the target method. When all FreeBSD targets are changed, the target method can go away. gdb/ChangeLog: * fbsd-tdep.c: New file. * fbsd-tdep.h: New file. * Makefile.in (ALL_TARGET_OBS): Add fbsd-tdep.o. (HFILES_NO_SRCDIR): Add fbsd-tdep.h. (ALLDEPFILES): Add fbsd-tdep.c. commit 8f0435f75e3c9676d2e177ce055fed3155fd9476 Author: Andreas Arnez Date: Fri Sep 12 08:42:48 2014 +0000 Add 'regset' parameter to 'iterate_over_regset_sections_cb' This adds the 'regset' parameter to the iterator callback. Consequently the 'regset_from_core_section' method is dropped for all targets that provide the iterator method. This change prepares for replacing regset_from_core_section everywhere, thereby eliminating one gdbarch interface. Since the iterator is usually no more complex than regset_from_core_section alone, targets that previously didn't define core_regset_sections will then gain multi-arch capable core file generation support without increased complexity. gdb/ChangeLog: * gdbarch.sh (iterate_over_regset_sections_cb): Add regset parameter. * gdbarch.h: Regenerate. * corelow.c (sniff_core_bfd): Don't sniff if gdbarch has a regset iterator. (get_core_register_section): Add parameter 'regset' and use it, if set. Add parameter 'min_size' and verify the bfd section size against it. (get_core_registers_cb): Add parameter 'regset' and pass it to get_core_register section. For the "standard" register sections ".reg" and ".reg2", set an appropriate default for human_name. (get_core_registers): Don't abort when the gdbarch has an iterator but no regset_from_core_section. Add NULL/0 for parameters 'regset'/'min_size' in calls to get_core_register_section. * linux-tdep.c (linux_collect_regset_section_cb): Add parameter 'regset' and use it instead of calling the regset_from_core_section gdbarch method. * i386-tdep.h (struct gdbarch_tdep): Add field 'fpregset'. * i386-tdep.c (i386_supply_xstateregset) (i386_collect_xstateregset, i386_xstateregset): Moved to i386-linux-tdep.c. (i386_regset_from_core_section): Drop handling for .reg-xfp and .reg-xstate. (i386_gdbarch_init): Set tdep field 'fpregset'. Enable generic core file support only if the regset iterator hasn't been set. * i386-linux-tdep.c (i386_linux_supply_xstateregset) (i386_linux_collect_xstateregset, i386_linux_xstateregset): New. Moved from i386-tdep.c and renamed to *_linux*. (i386_linux_iterate_over_regset_sections): Add regset parameter to each callback invocation. Allow any .reg-xstate size when reading from a core file. * amd64-tdep.c (amd64_supply_xstateregset) (amd64_collect_xstateregset, amd64_xstateregset): Moved to amd64-linux-tdep.c. (amd64_regset_from_core_section): Remove. (amd64_init_abi): Set new tdep field 'fpregset'. No longer install an amd64-specific regset_from_core_section gdbarch method. * amd64-linux-tdep.c (amd64_linux_supply_xstateregset) (amd64_linux_collect_xstateregset, amd64_linux_xstateregset): New. Moved from amd64-tdep.c and renamed to *_linux*. (amd64_linux_iterate_over_regset_sections): Add regset parameter to each callback invocation. Allow any .reg-xstate size when reading from a core file. * arm-linux-tdep.c (arm_linux_regset_from_core_section): Remove. (arm_linux_iterate_over_regset_sections): Add regset parameter to each callback invocation. (arm_linux_init_abi): No longer set the regset_from_core_section gdbarch method. * ppc-linux-tdep.c (ppc_linux_regset_from_core_section): Remove. (ppc_linux_iterate_over_regset_sections): Add regset parameter to each callback invocation. (ppc_linux_init_abi): No longer set the regset_from_core_section gdbarch method. * s390-linux-tdep.c (struct gdbarch_tdep): Remove the fields gregset, sizeof_gregset, fpregset, and sizeof_fpregset. (s390_regset_from_core_section): Remove. (s390_iterate_over_regset_sections): Add regset parameter to each callback invocation. (s390_gdbarch_init): No longer set the regset_from_core_section gdbarch method. Drop initialization of deleted tdep fields. commit 5aa82d050d61784823767fe3c982b6862fa47391 Author: Andreas Arnez Date: Thu Sep 4 15:26:43 2014 +0000 Replace 'core_regset_sections' by iterator method The core_regset_sections list in gdbarch (needed for multi-arch capable core file generation support) is replaced by an iterator method. Overall, this reduces the code a bit, and it allows for more flexibility. gdb/ChangeLog: * amd64-linux-tdep.c (amd64_linux_regset_sections): Remove. (amd64_linux_iterate_over_regset_sections): New. (amd64_linux_init_abi_common): Don't install the regset section list, but the new iterator in gdbarch. * arm-linux-tdep.c (arm_linux_fpa_regset_sections) (arm_linux_vfp_regset_sections): Remove. Move combined logic... (arm_linux_iterate_over_regset_sections): ...here. New function. (arm_linux_init_abi): Set iterator instead of section list. * corelow.c (get_core_registers_cb): New function, logic moved from... (get_core_registers): ...loop body here. Use new iterator method instead of walking through the regset section list. * gdbarch.sh: Remove 'core_regset_sections'. New method 'iterate_over_regset_sections'. New typedef 'iterate_over_regset_sections_cb'. * gdbarch.c: Regenerate. * gdbarch.h: Likewise. * i386-linux-tdep.c (i386_linux_regset_sections) (i386_linux_sse_regset_sections, i386_linux_avx_regset_sections): Remove. (i386_linux_iterate_over_regset_sections): New. (i386_linux_init_abi): Don't choose a regset section list, but install new iterator in gdbarch. * linux-tdep.c (struct linux_collect_regset_section_cb_data): New. (linux_collect_regset_section_cb): New function, logic moved from... (linux_collect_thread_registers): ...loop body here. Use iterator method instead of walking through list. (linux_make_corefile_notes_1): Check for presence of iterator method instead of regset section list. * ppc-linux-tdep.c (ppc_linux_vsx_regset_sections) (ppc_linux_vmx_regset_sections, ppc_linux_fp_regset_sections) (ppc64_linux_vsx_regset_sections, ppc64_linux_vmx_regset_sections) (ppc64_linux_fp_regset_sections): Remove. Move combined logic... (ppc_linux_iterate_over_regset_sections): ...here. New function. (ppc_linux_init_abi): Don't choose from above regset section lists, but install new iterator in gdbarch. * regset.h (struct core_regset_section): Remove. * s390-linux-tdep.c (struct gdbarch_tdep): Add new fields have_linux_v1, have_linux_v2, and have_tdb. (s390_linux32_regset_sections, s390_linux32v1_regset_sections) (s390_linux32v2_regset_sections, s390_linux64_regset_sections) (s390_linux64v1_regset_sections, s390_linux64v2_regset_sections) (s390x_linux64_regset_sections, s390x_linux64v1_regset_sections) (s390x_linux64v2_regset_sections): Remove. Move combined logic... (s390_iterate_over_regset_sections): ...here. New function. Use new tdep fields. (s390_gdbarch_init): Set new tdep fields. Don't choose from above regset section lists, but install new iterator. commit 6a5f3f4353a317dc16d7371fda2ec80835036af5 Author: Yao Qi Date: Sun Sep 28 11:43:46 2014 +0800 Error in build_executable_own_libs for non-native target gdb/testsuite: 2014-09-30 Yao Qi * lib/prelink-support.exp (build_executable_own_libs): Error if the target isn't native. commit 345bcc73f2714713c8fc58992d989e3e55be0f8a Author: Yao Qi Date: Thu Sep 25 15:50:07 2014 +0800 Skip dlopen-libpthread.exp in cross testing I see the following fails on arm-linux-gnueabi, result of ldd build-git/arm/gdb/testsuite/gdb.threads/dlopen-libpthread.so is 1 output of ldd build-git/arm/gdb/testsuite/gdb.threads/dlopen-libpthread.so is not a dynamic executable child process exited abnormally FAIL: gdb.threads/dlopen-libpthread.exp: ldd dlopen-libpthread.so FAIL: gdb.threads/dlopen-libpthread.exp: ldd dlopen-libpthread.so output contains libs the test script invokes ldd (on host) for the target libraries, which is wrong. ldd can't be cross because it invokes dynamic linker with LD_TRACE_LOADED_OBJECTS and gets the dependent libraries. My first reaction to this problem is to execute ld.so on the target (like remote_exec target). When I start to hack proc build_executable_own_libs, I find it has assumptions here and there that the native testing is performed. Then I check the callers of build_executable_own_libs, and they are all skipped if isnative is false. It is reasonable to do the same in dlopen-libpthread.exp too. gdb/testsuite: 2014-09-30 Yao Qi * gdb.threads/dlopen-libpthread.exp: Skip it if isnative is false. commit 5f77241211f17f37cd9b5795e6b7e1e65fd54ee3 Author: Sriraman Tallam Date: Mon Sep 29 17:30:54 2014 -0700 2014-09-29 Sriraman Tallam * options.h (--pic-executable): Add negative to alias to -no-pie. commit 9666e6e63c24c4a124ef93e914d7893c9b2d3875 Author: Alan Modra Date: Tue Sep 30 09:30:35 2014 +0930 daily update commit 2eca4a8d84ce27d0768702e93b8fca1578f84d06 Author: Jan Kratochvil Date: Mon Sep 29 17:38:12 2014 +0200 Fix library-list.dtd -> library-list-svr4.dtd commit 2268b414f486239cbcc0f756f157c3e03599efac added file "features/library-list-svr4.dtd" but the added code uses "library-list.dtd" instead. Curiously after changing for a test s/name/nXme/ in the DTD making the gdbserver output non-conforming there is no warning or regression seen (tested gdb.base/shlib-call.exp, using_xfer is still 1). I did not check more why the DTD conformance verification does not work. gdb/ChangeLog 2014-09-29 Jan Kratochvil * solib-svr4.c (svr4_parse_libraries): Use "library-list-svr4.dtd". commit cf7363b42b2fdc9fd108bed8d53b35adf4d52ad5 Author: H.J. Lu Date: Mon Sep 29 08:35:49 2014 -0700 Fix build for OLD_FREEBSD_ABI_LABEL PR ld/17440 * elf32-i386.c (elf_i386_fbsd_post_process_headers): Fix build for OLD_FREEBSD_ABI_LABEL. commit d98b0e2bf6120f50db57ff68eb9b2e00a9a26154 Author: Terry Guo Date: Mon Sep 29 10:12:10 2014 +0800 2014-09-29 Terry Guo * as.c (create_obj_attrs_section): Move it and call it from ... * write.c (create_obj_attrs_section): ... here. (subsegs_finish_section): Refactored. commit 1b7ee89b52d48adf343e6ffa8808ff238b8cfb9d Author: Alan Modra Date: Mon Sep 29 09:30:35 2014 +0930 daily update commit d3ca9bf78f9abddfc6ac3dbff0a78bfc855e951e Author: Alan Modra Date: Sun Sep 28 09:30:52 2014 +0930 daily update commit 5f3fd8b4058b2dea8ee4d768030b1e0b13f0c9df Author: Alan Modra Date: Sat Sep 27 12:24:32 2014 +0930 Do away with hash table line lookup in dwarf2dbg.c Hash lookup is silly when we can attach the line table info directly to sections instead. Worse, hash lookup fails when we have multiple sections with the same name. gas/ * dwarf2dbg.c (all_segs_hash): Delete. (get_line_subseg): Delete last_seg, last_subseg, last_line_subseg. Retrieve line_seg for section via seg_info. * subsegs.h (segment_info_typet): Add dwarf2_line_seg. gas/testsuite/ * gas/elf/group2.d, * gas/elf/group2.s: New test. * gas/elf/elf.exp: Run it. commit 730d435b384862d2c1a8f3373206685722fbb2b3 Author: Alan Modra Date: Sat Sep 27 09:30:35 2014 +0930 daily update commit 5efeedf61e4fe720fd3e9a08e6c91c10abb66d42 Author: Cary Coutant Date: Fri Sep 26 13:34:27 2014 -0700 Fix handling of relocations against TLS section symbols. Gold doesn't handle relocations against the section symbol for a TLS section correctly. Instead of using the offset of the section relative to the TLS segment, it uses the address of the actual section. This patch checks for section symbols for TLS sections, and treats them the same as TLS symbols. gold/ PR gold/16773 * object.cc (Sized_relobj_file): Compute value of section symbols for TLS sections the same as TLS symbols. commit a73c2b56cd87f709fb9118232b19cdf516edfb10 Author: Simon Marchi Date: Fri Sep 26 10:35:12 2014 -0400 Don't prune program spaces when doing "maintenance info program-spaces" Remove the pruning of program spaces in print_program_space to remove unwanted side-effects. "info" commands and print routines should generally not change the state of the debugger. gdb/Changelog: * progspace.c (print_program_space): Don't prune program spaces before printing them. commit 1707f183446fae9aca8523c1ebf721bcf2472008 Author: Cary Coutant Date: Thu Sep 25 21:47:10 2014 -0700 Fix problem where TLS common symbols are not allocated properly during LTO. The plugin API doesn't provide a way for the claimed file handler to identify a TLS symbol, so when adding a common TLS symbol, gold mistakenly places the symbol in the non-TLS commons list, and does not override it when we see the replacement symbol that is marked as TLS. Consequently, we allocate the TLS common symbol as a regular common, and, if it's the only TLS in the program, we'll give an internal error because we haven't allocated a TLS segment. This patch fixes the problem by removing an exclusion where common symbols would not override the placeholder symbols, but checking to see if the size needs adjusting (the original reason for the exclusion). Furthermore, we need to avoid putting placeholder symbols in the common list, and wait until we see a real common symbol with a type we can trust. gold/ PR gold/17432 * resolve.cc (Symbol_table::resolve): Override common placeholder symbols, but adjust sizes. * symtab.cc (Symbol_table::add_from_object): Don't add placeholder symbols to common lists. commit d7ac9d81bb1a177264187efc51c9cc0479cdd09c Author: Alan Modra Date: Fri Sep 26 09:30:35 2014 +0930 daily update commit 03d469572472d5c59d8a35030bb1b8072c217dc7 Author: Pedro Alves Date: Mon Sep 22 11:12:30 2014 +0100 infrun.c:user_visible_resume_ptid: Don't check singlestep_breakpoints_inserted_p What matters for this function, is whether the user requested a "step", for "set scheduler-locking step", not whether GDB is doing an internal step for some reason. /* Return a ptid representing the set of threads that we will proceed, in the perspective of the user/frontend. */ extern ptid_t user_visible_resume_ptid (int step); Therefore, the check for singlestep_breakpoints_inserted_p is actually incorrect, and we end up applying schedlock more often on sss targets than on non-sss targets. Found by inspection while working on a patch that eliminates the singlestep_breakpoints_inserted_p global. Tested on x86_64 Fedora 20 on top of my 'software single-step on x86' series. gdb/ 2014-09-25 Pedro Alves * infrun.c (user_visible_resume_ptid): Don't check singlestep_breakpoints_inserted_p. commit e558d7c1095545832a90e76f72e6db6c98fdee0f Author: Pedro Alves Date: Mon Sep 22 14:11:53 2014 +0100 breakpoint.c: debug output when we skip inserting a breakpoint gdb/ 2014-09-25 Pedro Alves * breakpoint.c (should_be_inserted): Add debug output. commit 7f89fd6519250f85f7b3f6c58beef1fc0ffd9a44 Author: Pedro Alves Date: Thu Sep 25 16:31:04 2014 +0100 infrun.c: comment/typo fixes gdb/ 2014-09-25 Pedro Alves * infrun.c (stepping_past_instruction_at) (clear_exit_convenience_vars): Point at infrun.h instead of inferior.h. (handle_signal_stop): Fix typo. commit 0da8cb88ed43e56fcb6d8d5e067b4cd618bbbc8e Author: Alan Modra Date: Thu Sep 25 09:30:40 2014 +0930 daily update commit b7576e5cf47c6212c0bc1613e74a4c35bc2941d7 Author: Yao Qi Date: Fri Sep 19 16:37:07 2014 +0800 Fix typo in thumb_in_function_epilogue_p This patch fixes a typo in the bit mask I've made in my previous code refactor. If PC is in the register list, the bit 8 is one, so bit mask 0xff00 should be used. Current condition is a constant false. gdb: 2014-09-24 Yao Qi * arm-tdep.c (thumb_in_function_epilogue_p): Fix typo in the bitmask. commit 00cac886aa4ddbd05105f6aa82280ef8f7f9dce6 Author: Alan Modra Date: Wed Sep 24 18:06:58 2014 +0930 Regen gold POTFILES.in * po/POTFILES.in: Regenerate. commit e44f5bef12a54b9c1cc24a5783dedde6f158ad15 Author: Markus Trippelsdorf Date: Wed Sep 24 18:04:53 2014 +0930 BFD: Add support for more than one plugin in lib/bfd-plugins ar, nm and ranlib currently lack the ability to handle more than one plugin in lib/bfd-plugins. This patch reshuffles the logic in plugin.c to add this functionality. One can now place both llvm and gcc plugins in this directory and have them loaded automatically. Mixed gcc/llvm archives are also supported (but not very useful until ld.bfd and ld.gold also would load multiple plugins and use them to claim different object files). PR 17422 * plugin.c (try_claim): New function. Moved from bfd_plugin_object_p. (try_load_plugin): Pass through bfd. Add test. (load_plugin): Pass through bfd. (bfd_plugin_object_p): Move logic to try_claim. commit 71b9b91bce45aa220e0b48e7c2f70021c86e8594 Author: Cary Coutant Date: Tue Sep 23 23:35:36 2014 -0700 Add PR reference to ChangeLog entry. 2014-09-23 Taiju Tsuiki Cary Coutant gold/ PR gold/14860 * gold.cc (queue_final_tasks): Add Write_sections_task as a blocker on input_sections_blocker. * layout.cc (Write_sections_task::locks): Unblock input_sections_blocker_. * layout.h (Write_sections_task::Write_sections_task): Add input_sections_blocker. * testsuite/Makefile.am (exception_x86_64_bnd_test): Add gcctestdir/ld to DEPENDENCIES. * testsuite/Makefile.in: Regenerate. commit 635aa30e3ae9735e362cfd1cda2be9f7b65b32a2 Author: Cary Coutant Date: Tue Sep 23 23:18:19 2014 -0700 Fix race condition causing assert in Eh_frame_hdr::do_sized_write(). 2014-09-23 Taiju Tsuiki Cary Coutant gold/ * gold.cc (queue_final_tasks): Add Write_sections_task as a blocker on input_sections_blocker. * layout.cc (Write_sections_task::locks): Unblock input_sections_blocker_. * layout.h (Write_sections_task::Write_sections_task): Add input_sections_blocker. * testsuite/Makefile.am (exception_x86_64_bnd_test): Add gcctestdir/ld to DEPENDENCIES. * testsuite/Makefile.in: Regenerate. commit f4ebacfac0581274ead4c3ab43c316c6174790b3 Author: Alan Modra Date: Wed Sep 24 09:30:52 2014 +0930 daily update commit 9e5e52835bb205850fb0fa6f0393ecd64b02b22f Author: H.J. Lu Date: Tue Sep 23 11:12:23 2014 -0700 Disallow VEX/EVEX encoded instructions in 16-bit mode gas/ PR gas/17421 * config/tc-i386.c (md_assemble): Disallow VEX/EVEX encoded instructions in 16-bit mode. gas/testsuite/ PR gas/17421 * gas/i386/i386.exp: Run inval-16. * gas/i386/inval-16.l: New file. * gas/i386/inval-16.s: Likewise. commit c4d9ceb6473237e614c66be97351109b9f260505 Author: Yao Qi Date: Fri Sep 12 13:35:11 2014 +0800 Honour SIGILL and SIGSEGV in cancel breakpoint and event lwp selection I see the following fail on arm-none-linux-gnueabi testing, (gdb) continue^M Continuing.^M ^M Program received signal SIGILL, Illegal instruction.^M [Switching to Thread 1003]^M handler (signo=10) at /scratch/yqi/arm-none-linux-gnueabi/src/gdb-trunk/gdb/testsuite/gdb.threads/sigstep-threads.c:33^M 33 tgkill (getpid (), gettid (), SIGUSR1); /* step-2 */^M (gdb) FAIL: gdb.threads/sigstep-threads.exp: continue the cause is that GDBserver doesn't cancel the breakpoint if the stop signal is SIGILL. The kernel used here is a little old, 2.6.x, and doesn't translate SIGILL to SIGTRAP when program hits breakpoint instruction (which is an illegal instruction actually). GDB and GDBserver can translate SIGILL to SIGTRAP under certain circumstance, so it is not a problem here. See gdbserver/linux-low.c:linux_wait_1 /* If this event was not handled before, and is not a SIGTRAP, we report it. SIGILL and SIGSEGV are also treated as traps in case a breakpoint is inserted at the current PC. If this target does not support internal breakpoints at all, we also report the SIGTRAP without further processing; it's of no concern to us. */ maybe_internal_trap = (supports_breakpoints () && (WSTOPSIG (w) == SIGTRAP || ((WSTOPSIG (w) == SIGILL || WSTOPSIG (w) == SIGSEGV) && (*the_low_target.breakpoint_at) (event_child->stop_pc)))); However, SIGILL and SIGSEGV is not considered when cancelling breakpoint, which causes the fail above. That is, when GDB is doing software single step on address ADDR, both thread A and thread B hits the software single step breakpoint, and get SIGILL. GDB selects the event from thread A, removes the software single step breakpoint, and resume the program. The event (SIGILL) from thread B is reported to GDB, but GDB doesn't regard this SIGILL as SIGTRAP, because the breakpoint on address ADDR was removed, so GDB reports "Program received signal SIGILL". The patch is to allow calling cancel_breakpoint if the signal is SIGILL and SIGSEGV. This patch fixes the fail above. Likewise, event lwp selection should honour SIGILL and SIGSEGV too. gdb/gdbserver: 2014-09-23 Yao Qi * linux-low.c (lp_status_maybe_breakpoint): New function. (linux_low_filter_event): Call lp_status_maybe_breakpoint. (count_events_callback): Likewise. (select_event_lwp_callback): Likewise. (cancel_breakpoints_callback): Likewise. commit 302717ccee079c09f7ca436853a5b9229f945b2d Author: Alan Modra Date: Tue Sep 23 09:30:37 2014 +0930 daily update commit 331ed1307b93d3ff77d248bdf2f7b79a20851457 Author: Sterling Augustine Date: Tue Jan 25 13:59:13 2011 -0800 Fix 'call8: call target out of range' xtensa ld relaxation bug During link-time relaxation distance between cross-section call site and its target may grow, producing 'call target out of range' error for relaxed calls. Be more conservative when calculating whether or not a callx can be converted to a straight call. 2014-09-23 Sterling Augustine bfd/ * elf32-xtensa.c (is_resolvable_asm_expansion): for cross-section call relaxation use furthermost addresses where call source and destination can be to check whether it's in the range of a direct call. commit 68f34464821105e0c74a0ce16c5d26d4c3e1d20c Author: H.J. Lu Date: Mon Sep 22 09:38:53 2014 -0700 Ignore MOD field for control/debug register move This patch ignores the MOD field in control/debug register move instructions. gas/testsuite/ * gas/i386/cdr.d: New file. * gas/i386/cdr.s: Likewise. * gas/i386/x86-64-cdr.d: Likewise. * gas/i386/i386.exp: Run cdr and x86-64-cdr. opcodes/ * i386-dis.c (MOD_0F20): Removed. (MOD_0F21): Likewise. (MOD_0F22): Likewise. (MOD_0F23): Likewise. (dis386_twobyte): Replace MOD_0F20, MOD_0F21, MOD_0F22 and MOD_0F23 with "movZ". (mod_table): Remove MOD_0F20, MOD_0F21, MOD_0F22 and MOD_0F23. (OP_R): Check mod/rm byte and call OP_E_register. commit 20b23ee6c89b3c412f78017d777ca2d3d2937431 Author: Chen Gang Date: Sat Sep 20 11:50:14 2014 +0800 readline/search.c: Remove useless parameter '0' for rl_message() The related warning under Darwin x86_64: gcc -c -DHAVE_CONFIG_H -I. -I../../binutils-gdb/readline -DRL_LIBRARY_VERSION='"6.2"' -g -O2 ../../binutils-gdb/readline/search.c ../../binutils-gdb/readline/search.c:213:24: warning: data argument not used by format string [-Wformat-extra-args] rl_message ("%s", p, 0); ~~~~ ^ 1 warning generated. readline/ChangeLog.gdb: * search.c (_rl_nsearch_init): Remove useless parameter '0' for rl_message(). Signed-off-by: Chen Gang commit 342cc09114e3925c31de80910420f3b809f3923b Author: Jan-Benedict Glaw Date: Mon Sep 22 13:02:10 2014 +0200 2014-09-22 Jan-Benedict Glaw * gdb.texinfo (Set Breaks): Add missing "@end table". commit 9a6cf3683df4f85f58ccea00864e36dc9ebef2ef Author: Gary Benson Date: Mon Sep 22 11:33:59 2014 +0100 Update target_stop's documentation This commit updates target_stop's documentation to clarify that it is asynchronous. gdb/ChangeLog: * target.c (target_stop): Updated comment. commit 03f4463bfce516cf7275ec2deb211c1bf2b5c67d Author: Gary Benson Date: Mon Sep 22 11:33:59 2014 +0100 Rename target_{stop,continue}_ptid This commit renames target_stop_ptid as target_stop_and_wait and target_continue_ptid as target_continue_no_signal. Comments are updated to more fully describe the functions' behaviour. gdb/ChangeLog: * target/target.h (target_stop_ptid): Renamed as... (target_stop_and_wait): New function. Updated comment. All uses updated. (target_continue_ptid): Renamed as... (target_continue_no_signal): New function. Updated comment. All uses updated. commit 4dea914eb19fe30278afad9133121634b3e04484 Author: Alan Modra Date: Mon Sep 22 18:14:27 2014 +0930 Find lto plugin when using gcc-5.0 I originally had this as --print-prog-name and changed back to --print-file-name to suit older gcc, neglecting to check whether gcc-5.0 --print-file-name finds the lto plugin. It doesn't. * ld-plugin/lto.exp: Use both --print-file-name and --print-prog-name when looking for lto plugin. commit 28a0da39c6db871d66b945d3025f69d56e487aa9 Author: Alan Modra Date: Mon Sep 22 18:09:49 2014 +0930 Fix various warnings seen when using gcc-5.0 * config/tc-m68k.c (md_assemble): Add assert to work around bogus trunk gcc warning. * config/tc-pj.h (md_convert_frag): Warning fix. * config/tc-xtensa.c (xg_assemble_vliw_tokens): Warning fix. commit 49727e46175419c638251b39091f24c575568bee Author: Alan Modra Date: Mon Sep 22 17:53:15 2014 +0930 Readelf: Handle forward references to CIEs The linker side of pr16563 was fixed with commit 18cd5bce, but unfortunately people continue to use older linkers with -flto. This means we have binaries with working .eh_frame that can't be dumped by readelf, and I'm seeing internal IBM bug reports about this fact. PR 16563 * dwarf.c (GET): Remove semicolon. (read_cie): New function, extracted from.. (display_debug_frames): ..here. Correctly handle signed offset from FDE to CIE in .eh_frame. Decode forward referenced CIEs too. commit aa8f4d1e5e6c01420489a2dfba72495bbd8489be Author: Alan Modra Date: Mon Sep 22 17:49:17 2014 +0930 Produce output file with -noinhibit-exec after overlapping FDE error * elf-eh-frame (_bfd_elf_write_section_eh_frame_hdr): Don't return false for overflow or overlapping FDEs. Give more detail in error messages. commit a25a5a45ef9340eb9a435f9b70599a90bb142658 Author: Pedro Alves Date: Mon Sep 22 09:56:55 2014 +0100 Fix "breakpoint always-inserted off"; remove "breakpoint always-inserted auto" By default, GDB removes all breakpoints from the target when the target stops and the prompt is given back to the user. This is useful in case GDB crashes while the user is interacting, as otherwise, there's a higher chance breakpoints would be left planted on the target. But, as long as any thread is running free, we need to make sure to keep breakpoints inserted, lest a thread misses a breakpoint. With that in mind, in preparation for non-stop mode, we added a "breakpoint always-inserted on" mode. This traded off the extra crash protection for never having threads miss breakpoints, and in addition is more efficient if there's a ton of breakpoints to remove/insert at each user command (e.g., at each "step"). When we added non-stop mode, and for a period, we required users to manually set "always-inserted on" when they enabled non-stop mode, as otherwise GDB removes all breakpoints from the target as soon as any thread stops, which means the other threads still running will miss breakpoints. The test added by this patch exercises this. That soon revealed a nuisance, and so later we added an extra "breakpoint always-inserted auto" mode, that made GDB behave like "always-inserted on" when non-stop was enabled, and "always-inserted off" when non-stop was disabled. "auto" was made the default at the same time. In hindsight, this "auto" setting was unnecessary, and not the ideal solution. Non-stop mode does depends on breakpoints always-inserted mode, but only as long as any thread is running. If no thread is running, no breakpoint can be missed. The same is true for all-stop too. E.g., if, in all-stop mode, and the user does: (gdb) c& (gdb) b foo That breakpoint at "foo" should be inserted immediately, but it currently isn't -- currently it'll end up inserted only if the target happens to trip on some event, and is re-resumed, e.g., an internal breakpoint triggers that doesn't cause a user-visible stop, and so we end up in keep_going calling insert_breakpoints. The test added by this patch also covers this. IOW, no matter whether in non-stop or all-stop, if the target fully stops, we can remove breakpoints. And no matter whether in all-stop or non-stop, if any thread is running in the target, then we need breakpoints to be immediately inserted. And then, if the target has global breakpoints, we need to keep breakpoints even when the target is stopped. So with that in mind, and aiming at reducing all-stop vs non-stop differences for all-stop-on-stop-of-non-stop, this patch fixes "breakpoint always-inserted off" to not remove breakpoints from the target until it fully stops, and then removes the "auto" setting as unnecessary. I propose removing it straight away rather than keeping it as an alias, unless someone complains they have scripts that need it and that can't adjust. Tested on x86_64 Fedora 20. gdb/ 2014-09-22 Pedro Alves * NEWS: Mention merge of "breakpoint always-inserted" modes "off" and "auto" merged. * breakpoint.c (enum ugll_insert_mode): New enum. (always_inserted_mode): Now a plain boolean. (show_always_inserted_mode): No longer handle AUTO_BOOLEAN_AUTO. (breakpoints_always_inserted_mode): Delete. (breakpoints_should_be_inserted_now): New function. (insert_breakpoints): Pass UGLL_INSERT to update_global_location_list instead of calling insert_breakpoint_locations manually. (create_solib_event_breakpoint_1): New, factored out from ... (create_solib_event_breakpoint): ... this. (create_and_insert_solib_event_breakpoint): Use create_solib_event_breakpoint_1 instead of calling insert_breakpoint_locations manually. (update_global_location_list): Change parameter type from boolean to enum ugll_insert_mode. All callers adjusted. Adjust to use breakpoints_should_be_inserted_now and handle UGLL_INSERT. (update_global_location_list_nothrow): Change parameter type from boolean to enum ugll_insert_mode. (_initialize_breakpoint): "breakpoint always-inserted" option is now a boolean command. Update help text. * breakpoint.h (breakpoints_always_inserted_mode): Delete declaration. (breakpoints_should_be_inserted_now): New declaration. * infrun.c (handle_inferior_event) : Remove breakpoints_always_inserted_mode check. (normal_stop): Adjust to use breakpoints_should_be_inserted_now. * remote.c (remote_start_remote): Likewise. gdb/doc/ 2014-09-22 Pedro Alves * gdb.texinfo (Set Breaks): Document that "set breakpoint always-inserted off" is the default mode now. Delete documentation of "set breakpoint always-inserted auto". gdb/testsuite/ 2014-09-22 Pedro Alves * gdb.threads/break-while-running.exp: New file. * gdb.threads/break-while-running.c: New file. commit 04086b458aebb38994486b09f4492645f03e971f Author: Pedro Alves Date: Mon Sep 22 09:56:55 2014 +0100 Tell update_global_location_list to insert breakpoints This adds a new mode for update_global_location_list, that allows callers saying "please insert breakpoints, even if breakpoints_always_inserted_mode() is false". This allows removing a couple breakpoints_always_inserted_mode checks. gdb/ 2014-09-22 Pedro Alves * breakpoint.c (enum ugll_insert_mode): Add UGLL_INSERT. (insert_breakpoints): Don't call insert_breakpoint_locations here. Instead, pass UGLL_INSERT to update_global_location_list. (update_global_location_list): Change parameter type from boolean to enum ugll_insert_mode. All callers adjusted. Adjust to use breakpoints_should_be_inserted_now and handle UGLL_INSERT. (create_solib_event_breakpoint_1): New, factored out from ... (create_solib_event_breakpoint): ... this. (create_and_insert_solib_event_breakpoint): Use create_solib_event_breakpoint_1 instead of calling insert_breakpoint_locations manually. (update_global_location_list): Handle UGLL_INSERT. commit 447023601a12d18573ea6acf75a3778a55d809e1 Author: Pedro Alves Date: Mon Sep 22 09:56:54 2014 +0100 Change parameter type of update_global_location_list from boolean to enum Later we'll want a tristate, but for now, convert to an enum that maps 1-1 with the current boolean's true/false. gdb/ 2014-09-22 Pedro Alves * breakpoint.c (enum ugll_insert_mode): New enum. (update_global_location_list) (update_global_location_list_nothrow): Change parameter type from boolean to enum ugll_insert_mode. All callers adjusted. commit c3eb94b43ee8cd748a3b03a5c3eed90f19e18a4b Author: Matthew Fortune Date: Mon Sep 22 09:43:52 2014 +0100 MIPS: Don't sign extend the addend for RELA relocations bfd/ * elfxx-mips.c (mips_elf_calculate_relocation): Don't sign extend the addend if relocations are RELA. commit f4cb41f4af9e0441639c554472700fa4259dff02 Author: Kuan-Lin Chen Date: Mon Sep 22 10:15:49 2014 +0800 NDS32/bfd: Synchronize the argument type. commit bc212851116e114e51be5c9f9d7e2ec71bfe1419 Author: Alan Modra Date: Mon Sep 22 09:30:35 2014 +0930 daily update commit a5da9fce667c46aa4deba8d4dbe2386ff37ae7ee Author: Alan Modra Date: Sun Sep 21 09:30:36 2014 +0930 daily update commit 0509f8512da87e298b0c397593de83ad2f6169a2 Author: Alan Modra Date: Sat Sep 20 09:30:35 2014 +0930 daily update commit 93c6145af62d4ce2e5b283dbe2ece52cf79f6e65 Author: Joel Brobecker Date: Fri Sep 19 16:50:28 2014 -0700 Add Sergio Durigan Junior as maintainer of SystemTap support in GDB. gdb/ChangeLog: * MAINTAINERS: Add Sergio Durigan Junior as maintainer of SystemTap support in GDB. commit 89a5711c561ad1e9a435221bc056ecd86a1aa628 Author: Don Breazeal Date: Fri Sep 19 10:54:34 2014 -0700 Refactor ptrace extended event status. This commit implements functions for identifying and extracting extended ptrace event information from a Linux wait status. These are just convenience functions intended to hide the ">> 16" used to extract the event from the wait status word, replacing the hard-coded shift with a more descriptive function call. This is preparatory work for implementation of follow-fork and detach-on-fork for extended-remote linux targets. gdb/ChangeLog: * linux-nat.c (linux_handle_extended_wait): Call linux_ptrace_get_extended_event. (wait_lwp): Call linux_is_extended_waitstatus. (linux_nat_filter_event): Call linux_ptrace_get_extended_event and linux_is_extended_waitstatus. * nat/linux-ptrace.c (linux_test_for_tracefork): Call linux_ptrace_get_extended_event. (linux_ptrace_get_extended_event): New function. (linux_is_extended_waitstatus): New function. * nat/linux-ptrace.h (linux_ptrace_get_extended_event) (linux_is_extended_waitstatus): New declarations. gdb/gdbserver/ChangeLog: * linux-low.c (handle_extended_wait): Call linux_ptrace_get_extended_event. (get_stop_pc, get_detach_signal, linux_low_filter_event): Call linux_is_extended_waitstatus. --- commit e00d879a2e9169759518dd419d19f1b3dcb6f709 Author: Andreas Krebbel Date: Fri Sep 19 12:44:54 2014 +0200 S/390: Don't replace R_390_TLS_LE32/64 with R_390_TLS_TPOFF for PIE. bfd: 2014-09-19 Andreas Krebbel * elf32-s390.c: Don't replace R_390_TLS_LE32 with R_390_TLS_TPOFF for PIE. * elf64-s390.c: Don't replace R_390_TLS_LE64 with R_390_TLS_TPOFF for PIE. commit 00ba3162ed1633f9b27f3fdd450e076d3a3f2e90 Author: Yao Qi Date: Mon Aug 18 09:57:40 2014 +0800 Run dw2-var-zero-addr.exp with --readnow This patch is to extend dw2-var-zero-add.exp to cover the case that partial symtabl is not used while full symtab is used, in order to cover the changes in patch 2/3. This patch restarts GDB with --readnow and does the same test again. gdb/testsuite: 2014-09-19 Yao Qi * gdb.dwarf2/dw2-var-zero-addr.exp: Move test into new proc test. Invoke test. Restart GDB with --readnow and invoke test again. commit c3b7b696c231416ac90fd9cb7d5ce735b3683356 Author: Yao Qi Date: Mon Aug 4 14:57:22 2014 +0800 Check function is GC'ed I see the following fail on arm-none-eabi target, (gdb) b 24^M Breakpoint 1 at 0x4: file ../../../../git/gdb/testsuite/gdb.base/break-on-linker-gcd-function.cc, line 24.^M (gdb) FAIL: gdb.base/break-on-linker-gcd-function.exp: b 24 Currently, we are using flag has_section_at_zero to determine whether address zero in debug info means the corresponding code has been GC'ed, like this: case DW_LNE_set_address: address = read_address (abfd, line_ptr, cu, &bytes_read); if (address == 0 && !dwarf2_per_objfile->has_section_at_zero) { /* This line table is for a function which has been GCd by the linker. Ignore it. PR gdb/12528 */ However, this is incorrect on some bare metal targets, as .text section is located at 0x0, so dwarf2_per_objfile->has_section_at_zero is true. If a function is GC'ed by linker, the address is zero. GDB thinks address zero is a function's address rather than this function is GC'ed. In this patch, we choose 'lowpc' got in read_file_scope to check whether 'lowpc' is greater than zero. If it isn't, address zero really means the function is GC'ed. In this patch, we pass 'lowpc' in read_file_scope through handle_DW_AT_stmt_list and dwarf_decode_lines, and to dwarf_decode_lines_1 finally. This patch fixes the fail above. This patch also covers the path that partial symbol isn't used, which is tested by starting gdb with --readnow option. It is regression tested on x86-linux with target_board=dwarf4-gdb-index, and arm-none-eabi. OK to apply? gdb: 2014-09-19 Yao Qi * dwarf2read.c (dwarf_decode_lines): Update declaration. (handle_DW_AT_stmt_list): Add argument 'lowpc'. Update comments. Callers update. (dwarf_decode_lines): Likewise. (dwarf_decode_lines_1): Add argument 'lowpc'. Update comments. Skip the line table if 'lowpc' is greater than 'address'. Don't check dwarf2_per_objfile->has_section_at_zero. gdb/testsuite: 2014-09-19 Yao Qi * gdb.base/break-on-linker-gcd-function.exp: Move test into new proc set_breakpoint_on_gcd_function. Invoke set_breakpoint_on_gcd_function. Restart GDB with --readnow and invoke set_breakpoint_on_gcd_function again. commit 8e635c209bd7dbccd410953334a55ff5fc91e81b Author: Alan Modra Date: Fri Sep 19 09:30:53 2014 +0930 daily update commit c0c71592f7641790251052cdf18469f21a7bb8f6 Author: Rafael Ávila de Espíndola Date: Thu Sep 18 13:58:16 2014 -0400 A a testcase for common symbol handling with plugins. 2014-09-18 Rafael Ávila de Espíndola * testsuite/Makefile.am (plugin_test_10): New test. * testsuite/Makefile.in: Regenerate * testsuite/plugin_common_test_2.c (c1): Align to 8. * testsuite/plugin_test_10.sh: New file. commit 2b4fd423cf503beb6264590f0517d35f17a6ab8d Author: Doug Evans Date: Thu Sep 18 10:09:12 2014 -0700 New "producer" attribute of python gdb.Symtab. gdb/ChangeLog: * NEWS: Mention new "producer" attribute of gdb.Symtab. * python/py-symtab.c (stpy_get_producer): New function. (symtab_object_getset): Add "producer" attribute. gdb/doc/ChangeLog: * python.texi (Symbol Tables In Python): Document "producer" attribute of gdb.Symtab objects. gdb/testsuite/ChangeLog: * gdb.dwarf2/symtab-producer.exp: New file. commit 92c9bcd479e4cb388a7f286fc42414b115cfc656 Author: Jan Kratochvil Date: Thu Sep 18 08:21:40 2014 +0200 Fix regression for Linux vDSO in GDB (PR gdb/17407). since 5979d6b69b20a8355ea94b75fad97415fce4788c https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=5979d6b69b20a8355ea94b75fad97415fce4788c vdso handling https://sourceware.org/ml/binutils/2014-03/msg00082.html https://sourceware.org/ml/binutils/2014-04/msg00003.html Message-ID: I get on kernel-3.16.2-200.fc20.x86_64 https://koji.fedoraproject.org/koji/buildinfo?buildID=575860 attaching its vdso.bin.gz GDB (FSF HEAD 5e43d46791c4c66fd83947a12d4f716b561a9103) regression: reproducer: ./gdb -ex start ./gdb actual result / FAIL: Got object file from memory but can't read symbols: File truncated. expected result / PASS: or / PASS: warning: Could not load shared library symbols for linux-vdso.so.1. Do you need "set solib-search-path" or "set sysroot"? That "warning: Could not load shared library..." is mostly harmless (it is a bug in GDB), in the FAIL case it is not printed just because bfd_check_format() fails there. It seems logical to me this way when the 'size' parameter has been already added. Alan Modra: I was wrongly thinking that the section headers were always last when I wrote that code. (They are now! If you relink that vdso with current binutils master you won't hit this problem, but that of course doesn't help existing kernels.) I do not see a regression for add-symbol-file-from-memory for libncurses.so.5 from the original thread above. Start of section headers: 1080 (bytes into file) Size of section headers: 64 (bytes) Number of section headers: 13 Section header string table index: 8 Section Headers: [Nr] Name Type Address Off Size ES Flg Lk Inf Al [ 8] .fake_shstrtab STRTAB 0000000000000780 000780 000076 00 A 0 0 32 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x0012fe 0x0012fe R E 0x1000 size == 0x2000 shdr_end == 0x778 == 1080 + 13 * 64 high_offset == 0x12fe else if (size >= shdr_end) - high_offset = shdr_end; + high_offset = size; But then 0x778 < 0x780 for "Section header string table index" so whole bfd_check_format() fails because section headers were not cleared here: /* If the segments visible in memory didn't include the section headers, then clear them from the file header. */ if (high_offset < shdr_end) bfd/ChangeLog 2014-09-18 Jan Kratochvil PR gdb/17407 * elfcode.h (bfd_from_remote_memory): Use SIZE for HIGH_OFFSET. commit 039b3b7b034f4c9ac9e38f8b3e7367e108f89f8a Author: Alan Modra Date: Thu Sep 18 09:30:48 2014 +0930 daily update commit 6d610fa7cecbeeaf2556e8e037cc23108df488f3 Author: Cary Coutant Date: Wed Sep 17 15:11:47 2014 -0700 Regenerate gold/Makefile.in. commit 6168c2a1c6636d0897e055d77d807dbd14b34485 Author: Rafael Ávila de Espíndola Date: Wed Sep 17 17:53:49 2014 -0400 Fix handling of common symbols with plugins. gold/ChangeLog: 2014-09-17 Rafael Ávila de Espíndola * plugin.cc (Sized_pluginobj::do_add_symbols): Ignore isym->size. * resolve.cc (Symbol_table::resolve): Don't override common symbols during the replacement phase. commit 3a53193762d8c42fd50daa15034c7326af6ce037 Author: Jing Yu Date: Wed Sep 17 14:14:59 2014 -0700 Add tls support to gold aarch64 backend. elfcpp/ChangeLog: 2014-09-17 Han Shen * aarch64.h (R_AARCH64_TLS_DTPREL64): Switch enum value with ... (R_AARCH64_TLS_DTPMOD64): ... enum value. gold/ChangeLog: 2014-09-17 Han Shen Jing Yu * aarch64-reloc.def: Add TLSGD_ADR_PAGE21, TLSGD_ADD_LO12_NC, TLSDESC_ADR_PAGE21, TLSDESC_LD64_LO12, TLSDESC_ADD_LO12, TLSDESC_CALL. * aarch64.cc (Target_aarch64): Add data members got_irelative_, got_tlsdesc_, rela_irelative_, got_mod_index_offset_, tlsdesc_reloc_info_, tls_base_symbol_defined_. Initialize them in constructor. (Target_aarch64::do_reloc_symbol_index): New method. (Target_aarch64::do_reloc_addend): New method. (Target_aarch64::add_tlsdesc_info): New method. (Target_aarch64::do_dynsym_value): New method. (Target_aarch64::do_make_data_plt): Add new parameters: got, got_irelative. Pass them to Output_data_plt_aarch64_standard. (Target_aarch64::make_data_plt): Add new parameters: got, got_irelative. Pass them to do_make_data_plt. (Target_aarch64::Relocate): Add skip_call_tls_get_addr_ variable. (Target_aarch64::Relocate:tls_gd_to_le): New method. (Target_aarch64::Relocate:tls_ie_to_le): New method. (Target_aarch64::Relocate:tls_desc_gd_to_le): New method. (Target_aarch64::Relocate:tls_desc_gd_to_ie): New method. (Target_aarch64::got_tlsdesc_section): New method. (Target_aarch64::make_local_ifunc_plt_entry): New method. (Target_aarch64::define_tls_base_symbol): New method. (Target_aarch64::reserve_tlsdesc_entries): New method. (Target_aarch64::got_mod_index_entry): New method. (Target_aarch64::rela_tlsdesc_section): New method. (Target_aarch64::rela_irelative_section): New method. (Target_aarch64::Tlsdesc_info): New struct. (Target_aarch64::got_section): Create .got.plt space for IRELATIVE relocations and tlsdesc relocations. (Target_aarch64::optimize_tls_reloc): Implement method. (Output_data_plt_aarch64): Add member variables: tlsdesc_rel_, got_, got_irelative_, irelative_count_, tlsdesc_got_offset_. Initialize them in constructor. (Output_data_plt_aarch64::reserve_tlsdesc_entry): New method. (Output_data_plt_aarch64::has_tlsdesc_entry): New method. (Output_data_plt_aarch64::get_tlsdesc_got_offset): New method. (Output_data_plt_aarch64::get_tlsdesc_plt_offset): New method. (Output_data_plt_aarch64::rela_tlsdesc): New method. (Output_data_plt_aarch64::rela_irelative): New method. (Output_data_plt_aarch64::entry_count): Count IRELATIVE relocations. (Output_data_plt_aarch64::first_plt_entry_offset): Add const attribute. (Output_data_plt_aarch64::get_plt_tlsdesc_entry_size): New method. (Output_data_plt_aarch64::fill_tlsdesc_entry): New method. (Output_data_plt_aarch64::do_get_plt_tlsdesc_entry_size): New method. (Output_data_plt_aarch64::do_fill_tlsdesc_entry): New method. (Output_data_plt_aarch64_standard): New member variables: plt_tlsdesc_entry_size, tlsdesc_plt_entry. (Output_data_plt_aarch64_standard::Output_data_plt_aarch64_standard): New parameter: got, got_irelative. (Output_data_plt_aarch64_standard::do_get_plt_entry_size): New method. (Output_data_plt_aarch64_standard::do_fill_tlsdesc_entry): New method. (Output_data_plt_aarch64::do_write): Replace got_address with gotplt_address. Add irelative_count_ to count. Write tlsdesc entry. (AArch64_relocate_functions::update_movnz): New method. (AArch64_relocate_functions): Correct format. (AArch64_relocate_functions::movnz): New method. (Target_aarch64::Scan::local): Correct format. Move r_sym, got to before the switch. Add new cases to switch. Check ie_to_le relaxation on tlsie relocations. Add code handling tlsgd tlsdesc cases. (Target_aarch64::Scan::global): Move arp to front. Do copy_reloc when needed. Add new cases to switch. Insert dynamic RELATIVE relocation when needed. Add code handling tlsgd, tlsie, tlsdesc cases. Call reloc_name_in_error_message to print unsupported reloc. (Target_aarch64::make_plt_section): Pass got_ and got_irelative_ to make_data_plt. (Target_aarch64::do_finalize_sections): Emit relocs to save COPY relocs. Fill in some more dynamic tags. (Target_aarch64::Relocate::relocate): Handle tlsgd, tlsdesc relocs. Skip call tls_get_addr when tlsgd is relaxed. (Target_aarch64::Relocate::relocate_tls): Correct format. Add code handling tlsgd, tlsdesc relocs, and tls gd->le, ie->le, tlsdesc->le, tlsdesc->ie relaxation. commit 5e43d46791c4c66fd83947a12d4f716b561a9103 Author: Ulrich Weigand Date: Wed Sep 17 17:29:27 2014 +0200 PR gdb/17384: Do not print memory errors in safe_read_memory_integer If accessing memory via safe_read_memory_integer fails, that function used to print an error message even though callers were perfectly able to handle (and even expected!) failures. This patch removes the confusing message by changing the routine to directly use target_read_memory. gdb/ChangeLog: PR gdb/17384 * corefile.c (struct captured_read_memory_integer_arguments): Remove. (do_captured_read_memory_integer): Remove. (safe_read_memory_integer): Use target_read_memory directly instead of catching errors in do_captured_read_memory_integer. commit 2569ceb0b02cc5569af5f946d89b578510ac5ea1 Author: Tristan Gingold Date: Wed Sep 17 10:43:00 2014 +0200 Fix arm-elf build failure on non-C99 systems (was using int64_t) gas/ * config/tc-arm.c (move_or_literal_pool, add_to_lit_pool): Use bfd_int64_t instead of int64_t. commit a594760181bc3859df1f19e3cca361ad7d031bd9 Author: Sergio Durigan Junior Date: Tue Sep 16 22:54:03 2014 -0400 Add test for global variable that is nested by another DSO This is just a testcase addition that I am proposing for upstream GDB. We have this in our internal tree, and the related RH bug is: (You might not be able to see all the comments without privileges.) This bug is about a global variable that got incorrectly displayed by GDB. This bug has already been fixed a long time ago by Joel's commit: commit 19630284f570790ebf6d50bfb43caa1f125ee88a Author: Joel Brobecker Date: Tue Jun 5 13:50:50 2012 +0000 But I think a testcase for it wouldn't hurt. So, consider the following scenario: $ cat solib1.c int test; void c_main (void) { test = 42; } $ cat solib2.c int test; void b_main (void) { test = 42; } $ cat main.c int main (int argc, char *argv[]) { c_main (); b_main (); return 0; } $ gcc -g -fPIC -shared -o libSO1.so -c solib1.c $ gcc -g -fPIC -shared -o libSO2.so -c solib2.c $ gcc -g -o main -L$PWD -lSO1 -lSO2 main.c $ LD_LIBRARY_PATH=. gdb -q -batch -ex 'b c_main' -ex r -ex n -ex 'p test' ./main ... $1 = 0 This happened with GDB before Joel's commit above. Now, things work and GDB is able to correctly display the nested global variable: $ LD_LIBRARY_PATH=. gdb -q -batch -ex 'b c_main' -ex r -ex n -ex 'p test' ./main ... $1 = 42 The testcase attached tests this behavior. gdb/testsuite/ChangeLog: 2014-09-16 Sergio Durigan Junior * gdb.base/global-var-nested-by-dso-solib1.c: New file. * gdb.base/global-var-nested-by-dso-solib2.c: Likewise. * gdb.base/global-var-nested-by-dso.c: Likewise. * gdb.base/global-var-nested-by-dso.exp: Likewise. commit fe5a122675213afa9d4c432601399de0ea52ae99 Author: Alan Modra Date: Wed Sep 17 09:30:46 2014 +0930 daily update commit 04e799796f9141d24f211677a60bdb0d46c03679 Author: Maciej W. Rozycki Date: Tue Sep 16 23:45:30 2014 +0100 CONTRIBUTE: For internals refer to wiki, not gdb/doc commit bffc0964c7730dcdcc81eb5d45ee69b1e2a2cbec Author: Joel Brobecker Date: Tue Sep 16 11:55:01 2014 -0700 Fix CPPFLAGS handling in gdbserver's build. In gdb/gdbserver/Makefile.in, IPAGENT_CFLAGS is defined using an expression which references $(CPPFLAGS). But CPPFLAGS isn't actually defined. This patch first adds a CPPFLAGS definition, so as to inherit the value passed at configure time (if any). And it then makes it part of INTERNAL_CFLAGS_BASE, instead. There is no reason that CPPFLAGS be useful for a certain class of source files, and not the rest. This is also consistent with what's done in GDB. gdb/gdbserver/ChangeLog: * Makefile.in (CPPFLAGS): Define. (INTERNAL_CFLAGS_BASE): Add ${CPPFLAGS}. (IPAGENT_CFLAGS): Remove ${CPPFLAGS}. Tested by rebuilding GDBserver with a dummy CPPFLAGS, and verifying that the compilation command was altered as expected. commit 76aeec5b98e73589013f24bd99e3c40189bec7e8 Author: Sergio Durigan Junior Date: Tue Sep 16 15:34:27 2014 -0400 Remove dead code from objc-lang.c (spurious "fprintf (stderr...") This obvious change removes dead code from objc-lang.c. I was grepping for "fprintf (stderr..." and found this code between "#if 0".."#endif" blocks. 2014-09-16 Sergio Durigan Junior * objc-lang.c (find_implementation_from_class): Remove dead code. commit 2f693f9d21a36e333994ef92117ba49a6d506334 Author: Sergio Durigan Junior Date: Tue Sep 16 15:30:41 2014 -0400 Replace "fprintf (stderr..." by "fprintf_unfiltered (gdb_stdlog..." This is an obvious replacement of "fprintf (stderr..." by "fprintf_unfiltered (gdb_stdlog...", which is the standard to use in these cases. gdb/ChangeLog: 2014-09-16 Sergio Durigan Junior PR cli/7233 * linux-nat.c (linux_nat_wait_1): Replace "fprintf (stderr..." by "fprintf_unfiltered (gdb_stdlog...)". commit 91c190590ab3de6d214bcf307240b4ac291f697d Author: Sergio Durigan Junior Date: Tue Sep 16 17:55:20 2014 +0100 gdb.base/watch-bitfields.exp: Improve test Make test messages unique and a couple other tweaks. gdb/testsuite/ 2014-09-16 Sergio Durigan Junior Pedro Alves * gdb.base/watch-bitfields.exp: Pass string other than test file name to prepare_for_testing. (watch): New procedure. (expect_watchpoint): Use with_test_prefix. (top level): Factor out tests to ... (test_watch_location, test_regular_watch): ... these new procedures, and use with_test_prefix and gdb_continue_to_end. commit bb9d5f81c36ecc61e3d4a70ce7e41348c8b12fef Author: Patrick Palka Date: Tue Sep 16 17:40:06 2014 +0100 Fix PR12526: -location watchpoints for bitfield arguments PR 12526 reports that -location watchpoints against bitfield arguments trigger false positives when bits around the bitfield, but not the bitfield itself, are modified. This happens because -location watchpoints naturally operate at the byte level, not at the bit level. When the address of a bitfield lvalue is taken, information about the bitfield (i.e. its offset and size) is lost in the process. This information must first be retained throughout the lifetime of the -location watchpoint. This patch achieves this by adding two new fields to the watchpoint struct: val_bitpos and val_bitsize. These fields are set when a watchpoint is first defined in watch_command_1. They are both equal to zero if the watchpoint is not a -location watchpoint or if the argument is not a bitfield. Then these bitfield parameters are used inside update_watchpoint and watchpoint_check to extract the actual value of the bitfield from the watchpoint address, with the help of a local helper function extract_bitfield_from_watchpoint_value. Finally when creating a HW breakpoint pointing to a bitfield, we optimize the address and length of the breakpoint. By skipping over the bytes that don't cover the bitfield, this step reduces the frequency at which a read watchpoint for the bitfield is triggered. It also reduces the number of times a false-positive call to check_watchpoint is triggered for a write watchpoint. gdb/ PR breakpoints/12526 * breakpoint.h (struct watchpoint): New fields val_bitpos and val_bitsize. * breakpoint.c (watch_command_1): Use these fields to retain bitfield information. (extract_bitfield_from_watchpoint_value): New function. (watchpoint_check): Use it. (update_watchpoint): Use it. Optimize the address and length of a HW watchpoint pointing to a bitfield. * value.h (unpack_value_bitfield): New prototype. * value.c (unpack_value_bitfield): Make extern. gdb/testsuite/ PR breakpoints/12526 * gdb.base/watch-bitfields.exp: New file. * gdb.base/watch-bitfields.c: New file. commit d3d3c6db1a3de87d5df6900f3be0557c33fa23b3 Author: Ilya Tocar Date: Tue Sep 16 13:33:47 2014 +0400 Add -mevexrcig={rne|rd|ru|rz} option to x86 assembler. It is used to control which value is encoded in rounding control bits for SAE-only EVEX instructions. gas/ * config/tc-i386.c (evexrcig): New. (build_evex_prefix): Force rounding bits. (OPTION_MEVEXRCIG): New. (md_longopts): Add mevexrcig. (md_parse_option): Handle OPTION_MEVEXRCIG. (md_show_usage): Document mevexrcig. * doc/c-i386.texi (mevexrcig): Document new option. gas/testsuite/ * gas/i386/avx512dq-rcig.s: New. * gas/i386/avx512dq-rcigrd-intel.d: Likewise. * gas/i386/avx512dq-rcigrd.d: Likewise. * gas/i386/avx512dq-rcigrne-intel.d: Likewise. * gas/i386/avx512dq-rcigrne.d: Likewise. * gas/i386/avx512dq-rcigru-intel.d: Likewise. * gas/i386/avx512dq-rcigru.d: Likewise. * gas/i386/avx512dq-rcigrz-intel.d: Likewise. * gas/i386/avx512dq-rcigrz.d: Likewise. * gas/i386/avx512er-rcig.s: Likewise. * gas/i386/avx512er-rcigrd-intel.d: Likewise. * gas/i386/avx512er-rcigrd.d: Likewise. * gas/i386/avx512er-rcigrne-intel.d: Likewise. * gas/i386/avx512er-rcigrne.d: Likewise. * gas/i386/avx512er-rcigru-intel.d: Likewise. * gas/i386/avx512er-rcigru.d: Likewise. * gas/i386/avx512er-rcigrz-intel.d: Likewise. * gas/i386/avx512er-rcigrz.d: Likewise. * gas/i386/avx512f-rcig.s: Likewise. * gas/i386/avx512f-rcigrd-intel.d: Likewise. * gas/i386/avx512f-rcigrd.d: Likewise. * gas/i386/avx512f-rcigrne-intel.d: Likewise. * gas/i386/avx512f-rcigrne.d: Likewise. * gas/i386/avx512f-rcigru-intel.d: Likewise. * gas/i386/avx512f-rcigru.d: Likewise. * gas/i386/avx512f-rcigrz-intel.d: Likewise. * gas/i386/avx512f-rcigrz.d: Likewise. * gas/i386/x86-64-avx512dq-rcig.s: Likewise. * gas/i386/x86-64-avx512dq-rcigrd-intel.d: Likewise. * gas/i386/x86-64-avx512dq-rcigrd.d: Likewise. * gas/i386/x86-64-avx512dq-rcigrne-intel.d: Likewise. * gas/i386/x86-64-avx512dq-rcigrne.d: Likewise. * gas/i386/x86-64-avx512dq-rcigru-intel.d: Likewise. * gas/i386/x86-64-avx512dq-rcigru.d: Likewise. * gas/i386/x86-64-avx512dq-rcigrz-intel.d: Likewise. * gas/i386/x86-64-avx512dq-rcigrz.d: Likewise. * gas/i386/x86-64-avx512er-rcig.s: Likewise. * gas/i386/x86-64-avx512er-rcigrd-intel.d: Likewise. * gas/i386/x86-64-avx512er-rcigrd.d: Likewise. * gas/i386/x86-64-avx512er-rcigrne-intel.d: Likewise. * gas/i386/x86-64-avx512er-rcigrne.d: Likewise. * gas/i386/x86-64-avx512er-rcigru-intel.d: Likewise. * gas/i386/x86-64-avx512er-rcigru.d: Likewise. * gas/i386/x86-64-avx512er-rcigrz-intel.d: Likewise. * gas/i386/x86-64-avx512er-rcigrz.d: Likewise. * gas/i386/x86-64-avx512f-rcig.s: Likewise. * gas/i386/x86-64-avx512f-rcigrd-intel.d: Likewise. * gas/i386/x86-64-avx512f-rcigrd.d: Likewise. * gas/i386/x86-64-avx512f-rcigrne-intel.d: Likewise. * gas/i386/x86-64-avx512f-rcigrne.d: Likewise. * gas/i386/x86-64-avx512f-rcigru-intel.d: Likewise. * gas/i386/x86-64-avx512f-rcigru.d: Likewise. * gas/i386/x86-64-avx512f-rcigrz-intel.d: Likewise. * gas/i386/x86-64-avx512f-rcigrz.d: Likewise. * gas/i386/i386.exp: Run new tests. commit deb8ff2b7afbdfae3c10def598977c4690f7056b Author: Pedro Alves Date: Tue Sep 16 16:38:12 2014 +0100 Remove documention of dead "target vxworks" "target vxworks" and friends have been removed 10 years ago already: commit e84ecc995d6a5e4e9114d3cea61717b8a573afb6 Author: Andrew Cagney AuthorDate: Sat Nov 13 23:10:02 2004 +0000 2004-11-13 Andrew Cagney * configure.tgt: Delete i[34567]86-*-vxworks*, m68*-netx-*, m68*-*-vxworks*, mips*-*-vxworks*, powerpc-*-vxworks*, and sparc-*-vxworks*. * NEWS: Mention that vxworks was deleted. (...) * remote-vxmips.c, remote-vx.c: Delete. * remote-vx68.c: Delete. (...) This removes related leftover cruft from the manual. gdb/doc/ 2014-09-16 Pedro Alves * gdb.texinfo (Starting) : Don't mention VxWorks. (Embedded OS): Remove VxWorks menu entry. (VxWorks): Remove node. commit 0bfdf32fa101021ad0d11dd3ae945c823f4b07ac Author: Gary Benson Date: Wed Sep 10 10:37:11 2014 +0100 Rename current_inferior as current_thread in gdbserver GDB has a function named "current_inferior" and gdbserver has a global variable named "current_inferior", but the two are not equivalent; indeed, gdbserver does not have any real equivalent of what GDB calls an inferior. What gdbserver's "current_inferior" is actually pointing to is a structure describing the current thread. This commit renames current_inferior as current_thread in gdbserver to clarify this. It also renames the function "set_desired_inferior" to "set_desired_thread" and renames various local variables from foo_inferior to foo_thread. gdb/gdbserver/ChangeLog: * inferiors.h (current_inferior): Renamed as... (current_thread): New variable. All uses updated. * linux-low.c (get_pc): Renamed saved_inferior as saved_thread. (maybe_move_out_of_jump_pad): Likewise. (cancel_breakpoint): Likewise. (linux_low_filter_event): Likewise. (wait_for_sigstop): Likewise. (linux_resume_one_lwp): Likewise. (need_step_over_p): Likewise. (start_step_over): Likewise. (linux_stabilize_threads): Renamed save_inferior as saved_thread. * linux-x86-low.c (x86_linux_update_xmltarget): Likewise. * proc-service.c (ps_lgetregs): Renamed reg_inferior as reg_thread and save_inferior as saved_thread. * regcache.c (get_thread_regcache): Renamed saved_inferior as saved_thread. (regcache_invalidate_thread): Likewise. * remote-utils.c (prepare_resume_reply): Likewise. * thread-db.c (thread_db_get_tls_address): Likewise. (disable_thread_event_reporting): Likewise. (remove_thread_event_breakpoints): Likewise. * tracepoint.c (gdb_agent_about_to_close): Renamed save_inferior as saved_thread. * target.h (set_desired_inferior): Renamed as... (set_desired_thread): New declaration. All uses updated. * server.c (myresume): Updated comment to reference thread instead of inferior. (handle_serial_event): Likewise. (handle_target_event): Likewise. commit 635856f584de7af4b21bb72688c05cd6d9a0aec6 Author: Pedro Alves Date: Tue Sep 16 14:27:57 2014 +0100 Fix watchpoint-stops-at-right-insn.exp Silly typo... gdb/testsuite/ 2014-09-16 Pedro Alves * gdb.base/watchpoint-stops-at-right-insn.exp (test): Compare software and hardware addresses, not software address against itself. commit 7280ceea02b97b2da8744b46edf6dab3429c3396 Author: Pedro Alves Date: Tue Sep 16 14:05:06 2014 +0100 Add test to make sure GDB knows which "kind" of watchpoint the target has This adds a test that makes sure GDB knows whether the target has continuable, or non-continuable watchpoints. That is, the test confirms that GDB presents a watchpoint value change at the first instruction right after the instruction that changes memory. gdb/testsuite/ChangeLog: 2014-09-16 Pedro Alves * gdb.base/watchpoint-stops-at-right-insn.c: New file. * gdb.base/watchpoint-stops-at-right-insn.exp: New file. commit 05db5edd7923711a20c6225ea8e15f36e819d140 Author: Samuel Thibault Date: Fri Sep 12 20:29:11 2014 +0200 Add hardware watchpoint support for x86 GNU Hurd. gdb/ * config/i386/i386gnu.mh (NATDEPFILES): Add x86-nat.o and x86-dregs.o. * gnu-nat.c (inf_threads): New function. * gnu-nat.h (inf_threads_ftype): New typedef. (inf_threads): New declaration. * i386gnu-nat.c: Include "x86-nat.h" and "inf-child.h". [i386_DEBUG_STATE] (i386_gnu_dr_get, i386_gnu_dr_set) (i386_gnu_dr_set_control_one, i386_gnu_dr_set_control) (i386_gnu_dr_set_addr_one, i386_gnu_dr_set_addr) (i386_gnu_dr_get_reg, i386_gnu_dr_get_addr, 386_gnu_dr_get_status) (i386_gnu_dr_get_control): New functions. (reg_addr): New structure. (_initialize_i386gnu_nat) [i386_DEBUG_STATE]: Initialize hardware i386 debugging register hooks. * NEWS: Mention this. commit 70e99720f9d558263756a482ae750b263ffd92ba Author: Terry Guo Date: Tue Sep 16 13:08:22 2014 +0100 Make the linker return an error status if it fails to merge ARM binaries with different architecture tags. Add a test case to make sure that this works, and update readelf so that it will not seg-fault when trying to display the attributes of binaries with invalid architecture tags. * elf32-arm.c (elf32_arm_merge_eabi_attributes): Return false if failed to merge. * ld-arm/attr-merge-arch-2.d: New test case. * ld-arm/attr-merge-arch-2a.s: New test case source file. * ld-arm/attr-merge-arch-2b.s: Likewise. * ld-arm/arm-elf.exp: Run new test case. * readelf.c (display_arm_attribute): Use unsigned int type for tag, val and type variables. commit 428b16bd5a3947e3a608f0c6751a8be7dbd88959 Author: Pedro Alves Date: Tue Sep 16 12:37:03 2014 +0100 Remove support for testing against dead "target vxworks" "target vxworks" and friends have been removed 10 years ago already: commit e84ecc995d6a5e4e9114d3cea61717b8a573afb6 Author: Andrew Cagney AuthorDate: Sat Nov 13 23:10:02 2004 +0000 2004-11-13 Andrew Cagney * configure.tgt: Delete i[34567]86-*-vxworks*, m68*-netx-*, m68*-*-vxworks*, mips*-*-vxworks*, powerpc-*-vxworks*, and sparc-*-vxworks*. * NEWS: Mention that vxworks was deleted. (...) * remote-vxmips.c, remote-vx.c: Delete. * remote-vx68.c: Delete. (...) This removes related leftover cruft from the testsuite. Tested on x86_64 Fedora 20, native and gdbserver. gdb/testsuite/ 2014-09-16 Pedro Alves * config/vx.exp, config/vxworks.exp, config/vxworks29k.exp: Delete files. * gdb.base/a2-run.exp: Remove all code guarded by istarget "*-*-vxworks*" throughout. * gdb.base/break.exp: Likewise. * gdb.base/default.exp: Likewise. * gdb.base/scope.exp: Likewise. * gdb.base/sepdebug.exp: Likewise. * gdb.base/break.c: Remove all code guarded by #ifdef vxworks throughout. * gdb.base/run.c: Likewise. * gdb.base/sepdebug.c: Likewise. * gdb.hp/gdb.aCC/run.c: Likewise. * gdb.reverse/until-reverse.c: Likewise. * lib/gdb.exp (gdb_compile): Remove is_vxworks branch. commit 666d413cc37ef7f841abf3e8faf2c3cbc7c5b456 Author: Yao Qi Date: Thu Aug 28 21:27:40 2014 +0800 Another board file for remote host In the recent review to my patch about copying files to remote host, we find that we need a board file which is more closely mapped real remote host testing to improve coverage. With the board file local-remote-host-native.exp, DejaGNU copies files to $build/gdb/testsuite/remote-host to emulate the effect of remote host. Is it OK? gdb/testsuite: 2014-09-16 Yao Qi * boards/local-remote-host-native.exp: New file. commit 1c8f6a4d1fcca9e56ac705a224778bf690122a07 Author: Kuan-Lin Chen Date: Thu Sep 11 14:25:05 2014 +0800 NDS32: Code refactoring of relaxation. Refactor each relaxation pattern to raise the maintainability. In origin, all patterns is analysed in nds32_elf_relax_section, so it is hard to debug and maintain. Therefore, we classify all patterns into different functions in this patch. Moreover, we adjust all optimizations into nds32_elf_relax_section to take these optimizations in turn. This can promise all relaxation being done after calling gld${EMULATION_NAME}_after_allocation. commit 40c7a7cb74ee4a9ec0830d734198fcd0e99c3a37 Author: Kuan-Lin Chen Date: Wed Sep 10 09:46:32 2014 +0800 NDS32/opcodes: Add audio ISA extension and modify the disassemble implemnt. First, add nds32 audio ISA extension including opcodes and registers. Second, redesign the disassemble implement. The original disassemble decode instruction opcode using switch-case. It is hard to synchronize when adding new instructions. Therefore, the new implement reuses nds32_opcodes to dump the instructions. commit 5b636fed3a28c9237c187999490f8e58d54b2d83 Author: Alan Modra Date: Tue Sep 16 09:30:53 2014 +0930 daily update commit 5a578da5e2313dbd1668e607f2f41c0b6e8ce205 Author: Omair Javaid Date: Wed Aug 13 18:12:14 2014 +0500 Implement support for recording vector data transfer instructions gdb: 2014-08-13 Omair Javaid * arm-tdep.c (arm_record_vdata_transfer_insn): Added record handler for vector data transfer instructions. (arm_record_coproc_data_proc): Updated. commit f20f80ddffccda9e3b3cddf9d20d2820a168500c Author: Omair Javaid Date: Wed Sep 10 16:29:04 2014 +0500 Implement support for recording extension register ld/st insn gdb: 2014-08-13 Omair Javaid * arm-tdep.c (arm_record_asimd_vfp_coproc): Replace stub handler with arm_record_exreg_ld_st_insn. (arm_record_exreg_ld_st_insn): Add record handler for ex-register load/store insns. commit 851f26ae7ba8b2f650c5cea9b42a2bee1ecc22b6 Author: Omair Javaid Date: Wed Aug 13 18:12:12 2014 +0500 Implement support for recording VFP data processing instructions gdb: 2014-08-13 Omair Javaid * arm-tdep.c (arm_record_coproc_data_proc): Updated. (arm_record_vfp_data_proc_insn): Added record handler for VFP data processing instructions. commit 1e1b656356c1a0199bb2da9a63f32d37436b3804 Author: Omair Javaid Date: Wed Sep 10 16:15:49 2014 +0500 Implement support for recording thumb2 ASIMD struct ld/st insns gdb: 2014-08-13 Omair Javaid * arm-tdep.c (thumb2_record_asimd_struct_ld_st): Add record handler for advance SIMD struct ld/st insn. (thumb2_record_decode_insn_handler): Replace stub handler with thumb2_record_asimd_struct_ld_st. commit 60cc5e93e5f96268f20abf0b66025443911b23bc Author: Omair Javaid Date: Thu Aug 28 14:50:06 2014 +0500 Implement support for recording arm/thumb mode coprocessor instructions gdb: 2014-08-13 Omair Javaid * arm-tdep.c (arm_record_coproc_data_proc): Add record handler stubs for asimd, vfp and coprocessor insns. (arm_record_asimd_vfp_coproc): Add record handler for asimd, vfp and coprocessor insns. (thumb2_record_coproc_insn): New function. (thumb2_record_decode_insn_handler): Update coprocessor insns record handlers. (decode_insn): Install arm_record_asimd_vfp_coproc as handler for opcode 110 insns. commit a50942089dda154e9c1b0a8311aa5e07193712cc Author: H.J. Lu Date: Mon Sep 15 08:41:40 2014 -0700 Rename OPTION_omit_lock_prefix to OPTION_OMIT_LOCK_PREFIX * config/tc-i386.c (OPTION_omit_lock_prefix): Renamed to ... (OPTION_OMIT_LOCK_PREFIX): This. (md_longopts): Updated. (md_parse_option): Likewise. commit 6d74e8a103516a2ca3cec9a0cc3c114b9896d028 Author: Chen Gang Date: Mon Sep 15 13:58:29 2014 +0100 This fixes a typo in a previous commit. (find_abstract_instance_name): Use 'form' instead of 'name' for the typo issue, which related with commit 60d77146a249ae9b51d7ce98930cdbedb2cfa352. commit 7361da2c952eb96d1869e49e35e8bc95ab42074a Author: Andrew Bennett Date: Wed Sep 10 11:32:01 2014 +0100 Add support for MIPS R6. bfd/ * aoutx.h (NAME (aout, machine_type)): Add mips32r6 and mips64r6. * archures.c (bfd_architecture): Likewise. * bfd-in2.h (bfd_architecture): Likewise. (bfd_reloc_code_real): Add relocs BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3 and BFD_RELOC_MIPS_19_PCREL_S2. * cpu-mips.c (arch_info_struct): Add mips32r6 and mips64r6. * elf32-mips.c: Define relocs R_MIPS_PC21_S2, R_MIPS_PC26_S2 R_MIPS_PC18_S3, R_MIPS_PC19_S2, R_MIPS_PCHI16 and R_MIPS_PCLO16. (mips_reloc_map): Add entries for BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3, BFD_RELOC_MIPS_19_PCREL_S2, BFD_RELOC_HI16_S_PCREL and BFD_RELOC_LO16_PCREL. * elf64-mips.c: Define REL, and RELA relocations R_MIPS_PC21_S2, R_MIPS_PC26_S2, R_MIPS_PC18_S3, R_MIPS_PC19_S2, R_MIPS_PCHI16 and R_MIPS_PCLO16. (mips_reloc_map): Add entries for BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3, BFD_RELOC_MIPS_19_PCREL_S2, BFD_RELOC_HI16_S_PCREL and BFD_RELOC_LO16_PCREL. * elfn32-mips.c: Likewise. * elfxx-mips.c (MIPSR6_P): New define. (mipsr6_exec_plt_entry): New array. (hi16_reloc_p): Add support for R_MIPS_PCHI16. (lo16_reloc_p): Add support for R_MIPS_PCLO16. (aligned_pcrel_reloc_p): New function. (mips_elf_relocation_needs_la25_stub): Add support for relocs: R_MIPS_PC21_S2 and R_MIPS_PC26_S2. (mips_elf_calculate_relocation): Add support for relocs: R_MIPS_PC21_S2, R_MIPS_PC26_S2, R_MIPS_PC18_S3, R_MIPS_PC19_S2, R_MIPS_PCHI16 and R_MIPS_PCLO16. (_bfd_elf_mips_mach): Add support for mips32r6 and mips64r6. (mips_elf_add_lo16_rel_addend): Add support for R_MIPS_PCHI16. (_bfd_mips_elf_check_relocs): Add support for relocs: R_MIPS_PC21_S2 and R_MIPS_PC26_S2. (_bfd_mips_elf_relocate_section): Add a check for unaligned pc relative relocs. (_bfd_mips_elf_finish_dynamic_symbol): Add support for MIPS r6 plt entry. (mips_set_isa_flags): Add support for mips32r6 and mips64r6. (_bfd_mips_elf_print_private_bfd_data): Likewise. (mips_32bit_flags_p): Add support for mips32r6. * libbfd.h (bfd_reloc_code_real_names): Add entries for BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3 and BFD_RELOC_MIPS_19_PCREL_S2. * reloc.c: Document relocs BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3 and BFD_RELOC_MIPS_19_PCREL_S2. binutils/ * readelf.c (get_machine_flags): Add support for mips32r6 and mips64r6. elfcpp/ * mips.h (E_MIPS_ARCH_32R6, E_MIPS_ARCH_64R6): New enum constants. gas/ * config/tc-mips.c (mips_nan2008): New static global. (mips_flag_nan2008): Removed. (LL_SC_FMT): New define. (COP12_FMT): Updated. (ISA_IS_R6): New define. (ISA_HAS_64BIT_REGS): Add mips64r6. (ISA_HAS_DROR): Likewise. (ISA_HAS_64BIT_FPRS): Add mips32r6 and mips64r6. (ISA_HAS_ROR): Likewise. (ISA_HAS_ODD_SINGLE_FPR): Likewise. (ISA_HAS_MXHC1): Likewise. (hilo_interlocks): Likewise. (md_longopts): Likewise. (ISA_HAS_LEGACY_NAN): New define. (options): Add OPTION_MIPS32R6 and OPTION_MIPS64R6. (mips_ase): Add field rem_rev. (mips_ases): Updated to add which ISA an ASE was removed in. (mips_isa_rev): Add support for mips32r6 and mips64r6. (mips_check_isa_supports_ase): Add support to check if an ASE has been removed in the specified MIPS ISA revision. (validate_mips_insn): Skip '-' character. (macro_build): Likewise. (mips_check_options): Prevent R6 working with fp32, mips16, micromips, or branch relaxation. (file_mips_check_options): Set R6 floating point registers to 64 bit. Also deal with the nan2008 option. (limited_pcrel_reloc_p): Add relocs: BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3, BFD_RELOC_MIPS_19_PCREL_S2, BFD_RELOC_HI16_S_PCREL and BFD_RELOC_LO16_PCREL. (operand_reg_mask): Add support for OP_SAME_RS_RT, OP_CHECK_PREV and OP_NON_ZERO_REG. (match_check_prev_operand): New static function. (match_same_rs_rt_operand): New static function. (match_non_zero_reg_operand): New static function. (match_operand): Added entries for: OP_SAME_RS_RT, OP_CHECK_PREV and OP_NON_ZERO_REG. (insns_between): Added case to deal with forbidden slots. (append_insn): Added support for relocs: BFD_RELOC_MIPS_21_PCREL_S2 and BFD_RELOC_MIPS_26_PCREL_S2. (match_insn): Add support for operands -A, -B, +' and +". Also skip '-' character. (mips_percent_op): Add entries for %pcrel_hi and %pcrel_lo. (md_parse_option): Add support for mips32r6 and mips64r6. Also update the nan option handling. (md_pcrel_from): Add cases for relocs: BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2. (mips_force_relocation): Prevent forced relaxation for MIPS r6. (md_apply_fix): Add support for relocs: BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3, BFD_RELOC_MIPS_19_PCREL_S2, BFD_RELOC_HI16_S_PCREL and BFD_RELOC_LO16_PCREL. (s_mipsset): Add support for mips32r6 and mips64r6. (s_nan): Update to support the new nan2008 framework. (tc_gen_reloc): Add relocs: BFD_RELOC_MIPS_21_PCREL_S2, BFD_RELOC_MIPS_26_PCREL_S2, BFD_RELOC_MIPS_18_PCREL_S3, BFD_RELOC_MIPS_19_PCREL_S2, BFD_RELOC_HI16_S_PCREL and BFD_RELOC_LO16_PCREL. (mips_elf_final_processing): Updated to use the mips_nan2008. (mips_cpu_info_table): Add entries for mips32r6 and mips64r6. (macro): Enable ldc2, sdc2, ll, lld, swc2, sc, scd, cache, pref macros for R6. (mips_fix_adjustable): Make PC relative R6 relocations relative to the symbol and not the section. * configure.ac: Add support for mips32r6 and mips64r6. * configure: Regenerate. * doc/c-mips.texi: Document the -mips32r6 and -mips64r6 command line options. * doc/as.texinfo: Likewise. gas/testsuite/ * gas/mips/24k-triple-stores-1.s: If testing for r6 prevent non-supported instructions from being tested. * gas/mips/24k-triple-stores-2.s: Likewise. * gas/mips/24k-triple-stores-3.s: Likewise. * gas/mips/24k-triple-stores-6.s: Likewise. * gas/mips/beq.s: Likewise. * gas/mips/eva.s: Likewise. * gas/mips/ld-zero-3.s: Likewise. * gas/mips/mips32-cp2.s: Likewise. * gas/mips/mips32.s: Likewise. * gas/mips/mips4.s: Likewise. * gas/mips/add.s: Don't test the add instructions if r6, and add padding. * gas/mips/add.d: Check for a triple dot not a nop at the end of the disassembly output. * gas/mips/micromips@add.d: Likewise. * gas/mips/mipsr6@24k-branch-delay-1.d: New file. * gas/mips/mipsr6@24k-triple-stores-1.d: New file. * gas/mips/mipsr6@24k-triple-stores-2-llsc.d: New file. * gas/mips/mipsr6@24k-triple-stores-2.d: New file. * gas/mips/mipsr6@24k-triple-stores-3.d: New file. * gas/mips/mipsr6@24k-triple-stores-6.d: New file. * gas/mips/mipsr6@add.d: New file. * gas/mips/mipsr6@attr-gnu-4-1-msingle-float.l: New file. * gas/mips/mipsr6@attr-gnu-4-1-msingle-float.s: New file. * gas/mips/mipsr6@attr-gnu-4-1-msoft-float.l: New file. * gas/mips/mipsr6@attr-gnu-4-1-msoft-float.s: New file. * gas/mips/mipsr6@attr-gnu-4-2-mdouble-float.l: New file. * gas/mips/mipsr6@attr-gnu-4-2-mdouble-float.s: New file. * gas/mips/mipsr6@beq.d: New file. * gas/mips/mipsr6@bge.d: New file. * gas/mips/mipsr6@bgeu.d: New file. * gas/mips/mipsr6@blt.d: New file. * gas/mips/mipsr6@bltu.d: New file. * gas/mips/mipsr6@branch-misc-1.d: New file. * gas/mips/mipsr6@branch-misc-2-64.d: New file. * gas/mips/mipsr6@branch-misc-2pic-64.d: New file. * gas/mips/mipsr6@branch-misc-4-64.d: New file. * gas/mips/mipsr6@cache.d: New file. * gas/mips/mipsr6@eva.d: New file. * gas/mips/mipsr6@jal-svr4pic-noreorder.d: New file. * gas/mips/mipsr6@jal-svr4pic.d: New file. * gas/mips/mipsr6@ld-zero-2.d: New file. * gas/mips/mipsr6@ld-zero-3.d: New file. * gas/mips/mipsr6@loc-swap-dis.d: New file. * gas/mips/mipsr6@mips32-cp2.d: New file. * gas/mips/mipsr6@mips32-imm.d: New file. * gas/mips/mipsr6@mips32.d: New file. * gas/mips/mipsr6@mips32r2.d: New file. * gas/mips/mipsr6@mips4-fp.d: New file. * gas/mips/mipsr6@mips4-fp.l: New file. * gas/mips/mipsr6@mips4-fp.s: New file. * gas/mips/mipsr6@mips4.d: New file. * gas/mips/mipsr6@mips5-fp.d: New file. * gas/mips/mipsr6@mips5-fp.l: New file. * gas/mips/mipsr6@mips5-fp.s: New file. * gas/mips/mipsr6@mips64.d: New file. * gas/mips/mipsr6@msa-branch.d: New file. * gas/mips/mipsr6@msa.d: New file. * gas/mips/mipsr6@pref.d: New file. * gas/mips/mipsr6@relax-swap3.d: New file. * gas/mips/r6-64-n32.d: New file. * gas/mips/r6-64-n64.d: New file. * gas/mips/r6-64-removed.l: New file. * gas/mips/r6-64-removed.s: New file. * gas/mips/r6-64.s: New file. * gas/mips/r6-attr-none-double.d: New file. * gas/mips/r6-n32.d: New file. * gas/mips/r6-n64.d: New file. * gas/mips/r6-removed.l: New file. * gas/mips/r6-removed.s: New file. * gas/mips/r6.d: New file. * gas/mips/r6.s: New file. * gas/mips/mipsr6@mips32-dsp.d: New file. * gas/mips/mipsr6@mips32-dspr2.d: New file. * gas/mips/mipsr6@mips32r2-ill.l: New file. * gas/mips/mipsr6@mips32r2-ill.s: New file. * gas/mips/cache.s: Add r6 instruction varients. * gas/mips/mips.exp: Add support for the mips32r6 and mips64r6 architectures. Also prevent non r6 supported tests from running. Finally, add in support for running the new r6 tests. (run_dump_test_arch): Add support for mipsr6 tests. (run_list_test_arch): Add support for using files of the form arch@testname.l . include/elf/ * mips.h: Add relocs: R_MIPS_PC21_S2, R_MIPS_PC26_S2, R_MIPS_PC18_S3, R_MIPS_PC19_S2, R_MIPS_PCHI16 and R_MIPS_PCLO16. (E_MIPS_ARCH_32R6): New define. (E_MIPS_ARCH_64R6): New define. include/opcode/ * mips.h (mips_operand_type): Add new entries: OP_SAME_RS_RT, OP_CHECK_PREV and OP_NON_ZERO_REG. Add descriptions for the MIPS R6 instruction arguments: -a, -b, -d, -s, -t, -u, -v, -w, -x, -y, -A, -B, +I, +O, +R, +:, +\, +", +; (mips_check_prev_operand): New struct. (INSN2_FORBIDDEN_SLOT): New define. (INSN_ISA32R6): New define. (INSN_ISA64R6): New define. (INSN_UPTO32R6): New define. (INSN_UPTO64R6): New define. (mips_isa_table): Add INSN_UPTO32R6 and INSN_UPTO64R6. (ISA_MIPS32R6): New define. (ISA_MIPS64R6): New define. (CPU_MIPS32R6): New define. (CPU_MIPS64R6): New define. (cpu_is_member): Add cases for CPU_MIPS32R6, and CPU_MIPS64R6. ld/ * ldmain.c (get_emulation): Add support for -mips32r6 and -mips64r6. opcodes/ * mips-dis.c (mips_arch_choices): Add entries for mips32r6 and mips64r6. (parse_mips_dis_option): Allow MSA and virtualization support for mips64r6. (mips_print_arg_state): Add fields dest_regno and seen_dest. (mips_seen_register): New function. (print_insn_arg): Refactored code to use mips_seen_register function. Add support for OP_SAME_RS_RT, OP_CHECK_PREV and OP_NON_ZERO_REG. Changed OP_REPEAT_DEST_REG case to print out the register rather than aborting. (print_insn_args): Add length argument. Add code to correctly calculate the instruction address for pc relative instructions. (validate_insn_args): New static function. (print_insn_mips): Prevent jalx disassembling for r6. Use validate_insn_args. (print_insn_micromips): Use validate_insn_args. all the arguments are valid. * mips-formats.h (PREV_CHECK): New define. * mips-opc.c (decode_mips_operand): Add support for -a, -b, -d, -s, -t, -u, -v, -w, -x, -y, -A, -B, +I, +O, +R, +:, +\, +", +; (RD_pc): New define. (FS): New define. (I37): New define. (I69): New define. (mips_builtin_opcodes): Add MIPS R6 instructions. Exclude recoded MIPS R6 instructions from MIPS R2 instructions. commit ea79f94a7ab96c6114b80bf78830f877325b10ff Author: Matthew Fortune Date: Mon Sep 15 10:32:38 2014 +0100 Ensure softfloat and singlefloat take precedence in consistency checks gas/ * tc-mips.c (check_fpabi): Move softfloat and singlefloat checks higher. gas/testsuite/ * gas/mips/attr-gnu-4-5-msingle-float.l: New file. * gas/mips/attr-gnu-4-5-msingle-float.s: Likewise. * gas/mips/attr-gnu-4-5-msoft-float.l: Likewise. * gas/mips/attr-gnu-4-5-msoft-float.s: Likewise. * gas/mips/attr-gnu-4-6-msingle-float.l: Update expected output. * gas/mips/attr-gnu-4-6-msoft-float.l: Likewise. * gas/mips/attr-gnu-4-7-msingle-float.l: Likewise. * gas/mips/attr-gnu-4-7-msoft-float.l: Likewise. * gas/mips/mips.exp: Update expected output for FP ABI 5,6,7. commit 64034f58a5fcd7746dd588b78d41b1a2f833df85 Author: Alan Modra Date: Mon Sep 15 09:30:50 2014 +0930 daily update commit 57cbd724c3212b40a328b1d21403bb0d96736687 Author: Doug Evans Date: Sun Sep 14 10:48:38 2014 -0700 Fix set up of queue-signal.exp test. The test does a backtrace to see which thread (#2 or #3) is assigned to which SIGUSR (1 or 2). If the main thread gets to all_threads_running before the sigusr threads get to their entry point, then the function name isn't in the backtrace and the test fails. Alas this version of the code is within epsilon of what I started with, and then over-simplified things. commit 81219e5358e6238d3810136690a0c0b2cd20955e Author: Doug Evans Date: Sat Sep 13 21:44:00 2014 -0700 New command queue-signal. If I want to change the signalled state of multiple threads it's a bit cumbersome to do with the "signal" command. What you really want is a way to set the signal state of the desired threads and then just do "continue". This patch adds a new command, queue-signal, to accomplish this. Basically "signal N" == "queue-signal N" + "continue". That's not precisely true in that "signal" can be used to inject any signal, including signals set to "nopass"; whereas "queue-signal" just queues the signal as if the thread stopped because of it. "nopass" handling is done when the thread is resumed which "queue-signal" doesn't do. One could add extra complexity to allow queue-signal to be used to deliver "nopass" signals like the "signal" command. I have no current need for it so in the interests of incremental complexity, I have left such support out and just have the code flag an error if one tries to queue a nopass signal. gdb/ChangeLog: * NEWS: Mention new "queue-signal" command. * infcmd.c (queue_signal_command): New function. (_initialize_infcmd): Add new queue-signal command. gdb/doc/ChangeLog: * gdb.texinfo (Signaling): Document new queue-signal command. gdb/testsuite/ChangeLog: * gdb.threads/queue-signal.c: New file. * gdb.threads/queue-signal.exp: New file. commit d4b38d2d057a5b8a35bc052e4f43b02b53c40f89 Author: Alan Modra Date: Sun Sep 14 09:31:10 2014 +0930 daily update commit d36bf488d82165827ef07052ecf775906d7d04a9 Author: Doug Evans Date: Sat Sep 13 16:00:13 2014 -0700 * linux-nat.c (wait_lwp): Add debugging printf. (linux_nat_wait_1): Ditto. commit 3714cea7d44e2bd9cac28a61d45fcc8c3cc6ae83 Author: Doug Evans Date: Sat Sep 13 15:52:15 2014 -0700 Pass plain-text prompt to with_gdb_prompt. I had occasion to use with_gdb_prompt in a test for the patch for PR 17314 and was passing the plain text prompt as the value, "(top-gdb)", instead of a regexp, "\(top-gdb\)" (expressed as "\\(top-gdb\\)" in TCL). I then discovered that in order to restore the prompt gdb passes the original value of $gdb_prompt to "set prompt", which works because "set prompt \(gdb\) " is equivalent to "set prompt (gdb) ". Perhaps I'm being overly cautious but this feels a bit subtle, but at any rate as an API choice I'd much rather pass the plain text form to with_gdb_prompt. I also discovered that the initial value of gdb_prompt is set in two places to two different values. At the global level gdb.exp sets it to "\[(\]gdb\[)\]" and default_gdb_init sets it to "\\(gdb\\)". The former form is undesirable as an argument to "set prompt", but it's not clear to me that just deleting this code won't break anything. Thus I just changed the value to be consistent and added a comment. gdb/testsuite/ChangeLog: * lib/gdb.exp (gdb_prompt): Add comment and change initial value to be consistent with what default_gdb_init uses. (with_gdb_prompt): Change form of PROMPT argument from a regexp to the plain text of the prompt. Add some logging printfs. * gdb.perf/disassemble.exp: Update call to with_gdb_prompt. commit 1a8bdf69e7d1f6084af503407d6a4217b06d6ea5 Author: Alan Modra Date: Sat Sep 13 15:54:40 2014 +0930 Fix some ChangeLog typos commit d81404788e990d76febd409ceb9eac33ad37ab4a Author: Alan Modra Date: Sat Sep 13 09:32:29 2014 +0930 daily update commit fa43b1d7ca8d9699a253b1f227e91c406a043a0b Author: Pedro Alves Date: Fri Sep 12 22:16:31 2014 +0100 after gdb_run_cmd, gdb_expect -> gdb_test_multiple/gdb_test See: https://sourceware.org/ml/gdb-patches/2014-09/msg00404.html We have a number of places that do gdb_run_cmd followed by gdb_expect, when it would be better to use gdb_test_multiple or gdb_test. This converts all that "grep gdb_run_cmd -A 2 | grep gdb_expect" found. Tested on x86_64 Fedora 20, native and gdbserver. gdb/testsuite/ 2014-09-12 Pedro Alves * gdb.arch/gdb1558.exp: Replace uses of gdb_expect after gdb_run_cmd with gdb_test_multiple or gdb_test throughout. * gdb.arch/i386-size-overlap.exp: Likewise. * gdb.arch/i386-size.exp: Likewise. * gdb.arch/i386-unwind.exp: Likewise. * gdb.base/a2-run.exp: Likewise. * gdb.base/break.exp: Likewise. * gdb.base/charset.exp: Likewise. * gdb.base/chng-syms.exp: Likewise. * gdb.base/commands.exp: Likewise. * gdb.base/dbx.exp: Likewise. * gdb.base/find.exp: Likewise. * gdb.base/funcargs.exp: Likewise. * gdb.base/jit-simple.exp: Likewise. * gdb.base/reread.exp: Likewise. * gdb.base/sepdebug.exp: Likewise. * gdb.base/step-bt.exp: Likewise. * gdb.cp/mb-inline.exp: Likewise. * gdb.cp/mb-templates.exp: Likewise. * gdb.objc/basicclass.exp: Likewise. * gdb.threads/killed.exp: Likewise. commit f37f681c2bb884e74cd33340617a6d1a408d1a75 Author: Pedro Alves Date: Fri Sep 12 20:02:01 2014 +0100 [IRIX] eliminate deprecated_insert_raw_breakpoint uses The IRIX support wants to set a breakpoint to be hit when the startup phase is complete, which is where shared libraries have been mapped in. AFAIU, for most IRIX ports, that location is the entry point. For MIPS IRIX however, GDB needs to set a breakpoint earlier, in __dbx_link, as explained by: #ifdef SYS_syssgi /* On mips-irix, we need to stop the inferior early enough during the startup phase in order to be able to load the shared library symbols and insert the breakpoints that are located in these shared libraries. Stopping at the program entry point is not good enough because the -init code is executed before the execution reaches that point. So what we need to do is to insert a breakpoint in the runtime loader (rld), more precisely in __dbx_link(). This procedure is called by rld once all shared libraries have been mapped, but before the -init code is executed. Unfortuantely, this is not straightforward, as rld is not part of the executable we are running, and thus we need the inferior to run until rld itself has been mapped in memory. For this, we trace all syssgi() syscall exit events. Each time we detect such an event, we iterate over each text memory maps, get its associated fd, and scan the symbol table for __dbx_link(). When found, we know that rld has been mapped, and that we can insert the breakpoint at the symbol address. Once the dbx_link() breakpoint has been inserted, the syssgi() notifications are no longer necessary, so they should be canceled. */ proc_trace_syscalls_1 (pi, SYS_syssgi, PR_SYSEXIT, FLAG_SET, 0); #endif The loop in irix_solib_create_inferior_hook then runs until whichever breakpoint is hit first, the one set by solib-irix.c or the one set by procfs.c. Note the comment in disable_break talks about __dbx_init, but I think that's a typo for __dbx_link: - /* Note that it is possible that we have stopped at a location that - is different from the location where we inserted our breakpoint. - On mips-irix, we can actually land in __dbx_init(), so we should - not check the PC against our breakpoint address here. See procfs.c - for more details. */ This looks very much like referring to the loop in irix_solib_create_inferior_hook stopping at __dbx_link instead of at the entry point. What this patch does is convert these deprecated raw breakpoints to standard solib_event breakpoints. When the first solib-event breakpoint is hit, we delete all solib-event breakpoints. We do that in the so_ops->handle_event hook. This allows getting rid of the loop in irix_solib_create_inferior_hook completely, which should allow properly handling signals and other events in the early startup phase, like in SVR4. Built on x86_64 Fedora 20 with --enable-targets=all (builds solib-irix.c). Joel tested that with an earlier version of this patch "info shared" after starting a program gave the same list of shared libraries as before. gdb/ChangeLog: 2014-09-12 Pedro Alves * breakpoint.c (remove_solib_event_breakpoints_at_next_stop) (create_and_insert_solib_event_breakpoint): New functions. * breakpoint.h (create_and_insert_solib_event_breakpoint) (remove_solib_event_breakpoints_at_next_stop): New declarations. * procfs.c (dbx_link_bpt_addr, dbx_link_bpt): Delete globals. (remove_dbx_link_breakpoint): Delete function. (insert_dbx_link_bpt_in_file): Use create_and_insert_solib_event_breakpoint instead of deprecated_insert_raw_breakpoint. (procfs_wait): Don't check whether we hit __dbx_link here. (procfs_mourn_inferior): Don't delete the __dbx_link breakpoint here. * solib-irix.c (base_breakpoint): Delete global. (disable_break): Delete function. (enable_break): Use create_solib_event_breakpoint instead of deprecated_insert_raw_breakpoint. (irix_solib_handle_event): New function. (irix_solib_create_inferior_hook): Don't run the target or disable the mapping-complete breakpoint here. (_initialize_irix_solib): Install irix_solib_handle_event as so_ops->handle_event hook. commit 75ac3a7f57ee93e9c59ca6e446ad14f860b9e7e5 Author: Jose E. Marchesi Date: Fri Sep 12 15:38:21 2014 +0200 gas: fix bumping to architectures >v9 in sparc64-* targets. This patch fixes two related problems: - By default gas is supposed to bump the current architecture (starting with v6) as it finds "higher" instructions as the assembling progresses. There are four possible cases depending on the usage of the -A and -bump options: (a) No -A and -bump are specified. In this case max_architecture must be the highest architecture not conflicting with the default architecture. The default opcode architecture is indirectly set in configure.tgt and is "v9" in sparc64 systems (from "v9-64"). Thus the maximum architecture in sparc64 systems must be "v9b". No warnings are echoed when the assembly of an instruction bumps the current architecture. (b) Only -bump is specified. This is like (a) but warnings are always issued when the assembly of an instruction bumps the current architecture. (c) Only -A is specified. In this case bumping to a new architecture is an error. (d) Both -A and -bump are specified. In this case max_architecture must be the highest architecture not conflicting with the default architecture, but warnings are only to be issued when bumping to an architecture higher than the architecture selected in the -A option. `max_architecture' is a global variable defined in tc-sparc.c which is initialized to the opcode architecture corresponding to the default architecture ("sparclite" for sparc-* targets and "v9" for sparc64-* targets). Then in `md_begin' it is set to the highest non-conflicting architecture, but only when both -A and -bump are specified. Thus (a) does not work: $ echo "fzero %f0" | as {standard input}: Assembler messages: {standard input}:1: Error: Architecture mismatch on "fzero". {standard input}:1: (Requires v9a|v9b; requested architecture is v9.) Neither (b): $ echo "fzero %f0" | as -bump {standard input}: Assembler messages: {standard input}:1: Error: Architecture mismatch on "fzero". {standard input}:1: (Requires v9a|v9b; requested architecture is v9.) Only (d) does: $ echo "fzero %f0" | as -Av9 -bump {standard input}: Assembler messages: {standard input}:1: Warning: architecture bumped from "v6" to "v9a" on "fzero" This patch fixes that function to "upgrade" `max_architecture' also in the (a) and (b) cases. Note that this problem becomes apparent only in sparc64-* targets because in sparc-* targets the default architecture is the "higher" among the 32bit architectures ("sparclite"). - Gas maintains a set of hardware capabilities associated with each gas architecture, in `sparc_arch_table'. On the other hand libopcodes maintains a set of hardware capabilities needed by each individual sparc instruction. When an instruction is assembled in `sparc_ip' gas checks for the presence of the hardware capabilities required by the instruction, emitting an error if some capability is missing. However, this mechanism does not work properly if the current architecture is bumped due to an instruction requiring new hw capabilities not present on either the default architecture or an architecture specified with -A: $ echo "fzero %f0" | as -bump {standard input}: Assembler messages: {standard input}:1: Warning: architecture bumped from "v6" to "v9a" on "fzero" {standard input}:1: Error: Hardware capability "vis" not enabled for "fzero". This patch fixes this by adding the set of required hw caps of an instruction if it triggers an architecture bump. The patch has been tested in sparc64-unknown-linux-gnu. gas/ChangeLog: 2014-09-12 Jose E. Marchesi * config/tc-sparc.c (sparc_ip): Update the set of allowed hwcaps when bumping the current architecture. (md_begin): Adjust the highetst architecture level also when a specific architecture is not requested. commit a9d58c068ccfa66fd94fffc001bbaf996ec53a7d Author: Andrew Bennett Date: Wed Sep 10 12:41:28 2014 +0100 Add mips*-img-elf* target triple. / * configure.ac: Add mips*-img-elf* target triple. * configure: Regenerate. bfd/ * config.bfd: Add mips*-img-elf* target triple. gas/ * configure.tgt: Add mips*-img-elf* target triple. gas/testsuite/ * gas/mips/mips.exp: Add mips*-img-elf* target triple. binutils/testsuite/ * binutils-all/objcopy.exp: Add mips*-img-elf* target triple. * binutils-all/readelf.exp: Likewise. ld/ * configure.tgt: Add mips*-img-elf* target triple. ld/testsuite/ * ld-mips-elf/mips-elf.exp: Add support for mips*-img-elf* target triple. commit 9d9bf2df89db515958b429a1aeb1db38884ba488 Author: Edjunior Barbosa Machado Date: Fri Sep 12 09:20:25 2014 -0300 PR tdep/17379: Fix internal-error when stack pointer is invalid. The problem is that rs6000_frame_cache attempts to read the stack backchain via read_memory_unsigned_integer, which throws an exception if the stack pointer is invalid. With this patch, it calls safe_read_memory_integer instead, which doesn't throw an exception and allows for safe handling of that situation. gdb/ChangeLog 2014-09-12 Edjunior Barbosa Machado Ulrich Weigand  PR tdep/17379 * rs6000-tdep.c (rs6000_frame_cache): Use safe_read_memory_integer instead of read_memory_unsigned_integer. gdb/testcase/ChangeLog 2014-09-12 Edjunior Barbosa Machado PR tdep/17379 * gdb.arch/powerpc-stackless.S: New file. * gdb.arch/powerpc-stackless.exp: New file. commit 1cf2f1b045e9e647f6dfd28829ff4592c588dcb7 Author: Jan Kratochvil Date: Fri Sep 12 13:39:04 2014 +0200 testsuite: Fix runaway attach processes I have started seeing occasional runaway 'attach' processes these days. I cannot be certain it is really caused by this patch, for example grep 'FAIL.*cmdline attach run' does not show anything in my logs. But as I remember this 'attach' runaway process always happened in GDB (but I do not remember it in the past months) I think it would be most safe to just solve it forever by [attached]. gdb/testsuite/ChangeLog 2014-09-12 Jan Kratochvil * gdb.base/attach.c: Include unistd.h. (main): Call alarm. Add label postloop. * gdb.base/attach.exp (do_attach_tests): Use gdb_get_line_number, gdb_breakpoint, gdb_continue_to_breakpoint. (test_command_line_attach_run): Kill ${testpid} in one exit path. commit b006a80e5f41125c876a60a143ad421113533efc Author: Gary Benson Date: Fri Sep 12 10:57:46 2014 +0100 Clarify GDBSERVER use in linux-waitpid.c This commit makes linux-waitpid.c include common-defs.h. GDB's inclusion of defs.h is removed, but gdbserver's inclusion of server.h remains to support some gdbserver-specific debug code that cannot presently be merged. A new FIXME documents this. gdb/ChangeLog: * nat/linux-waitpid.c: Include common-defs.h. [GDBSERVER]: Add FIXME comment. [!GDBSERVER]: Don't include defs.h or signal.h. (linux_debug) [!GDBSERVER]: Remove empty block. commit 296b1496f756d26b2e3235133f89012fff940902 Author: Gary Benson Date: Fri Sep 12 10:11:42 2014 +0100 Remove GDBSERVER uses from x86-dregs.c This commit makes nat/x86-dregs.c include common-defs.h rather than defs.h or server.h. An extra header required including in order to support this change. gdb/ChangeLog: * nat/x86-dregs.c: Include common-defs.h and break-common.h. Don't include defs.h or server.h. commit 53f813629714f46e536c1f0bfa256d7b6b48cf3e Author: Gary Benson Date: Fri Sep 12 10:11:42 2014 +0100 Remove GDBSERVER uses from linux-btrace.c This commit makes nat/linux-btrace.c include common-defs.h rather than defs.h or server.h. A couple of minor changes were required to support this change. gdb/ChangeLog: * nat/linux-btrace.c: Include common-defs.h. Don't include defs.h, server.h or gdbthread.h. * nat/linux-btrace.h (struct target_ops): New forward declaration. commit 727605ca75e009d8468bb6378b7d18b774838b2d Author: Gary Benson Date: Fri Sep 12 10:11:42 2014 +0100 Include common-defs.h instead of defs.h/server.h in shared code This commit makes 19 of the 22 shared .c files in common, nat and target include common-defs.h instead of defs.h/server.h. The remaining three files need slight extra work and are dealt with in separate commits. gdb/ChangeLog: * common/agent.c: Include common-defs.h. Don't include defs.h or server.h. * common/buffer.c: Likewise. * common/common-debug.c: Likewise. * common/common-utils.c: Likewise. * common/errors.c: Likewise. * common/filestuff.c: Likewise. * common/format.c: Likewise. * common/gdb_vecs.c: Likewise. * common/print-utils.c: Likewise. * common/ptid.c: Likewise. * common/rsp-low.c: Likewise. * common/signals.c: Likewise. * common/vec.c: Likewise. * common/xml-utils.c: Likewise. * nat/linux-osdata.c: Likewise. * nat/linux-procfs.c: Likewise. * nat/linux-ptrace.c: Likewise. * nat/mips-linux-watch.c: Likewise. * target/waitstatus.c: Likewise. commit 361c8ade9c3c88cf7f0111fdab3ceb03028842bc Author: Gary Benson Date: Fri Sep 12 10:11:42 2014 +0100 Introduce common-regcache.h This introduces common-regcache.h. This contains two functions that allow nat/linux-btrace.c to be simplified. A better long term solution would be unify the regcache code, but this is sufficient for now. gdb/ChangeLog: * common/common-regcache.h: New file. * Makefile.in (HFILES_NO_SRCDIR): Add common/common-regcache.h. * regcache.h: Include common-regcache.h. (regcache_read_pc): Don't declare. * regcache.c (get_thread_regcache_for_ptid): New function. * nat/linux-btrace.c: Don't include regcache.h. Include common-regcache.h. (perf_event_read_bts): Use get_thread_regcache_for_ptid. gdb/gdbserver/ChangeLog: * regcache.h: Include common-regcache.h. (regcache_read_pc): Don't declare. * regcache.c (get_thread_regcache_for_ptid): New function. commit ac4eb736520174305bf6e691827f7473b858cff1 Author: Alan Modra Date: Fri Sep 12 09:46:30 2014 +0930 Fix tc-i386.c -Werror=logical-not-parentheses error * config/tc-i386.c (match_template): Remove redundant "!!" testing single-bit bitfields. (build_modrm_byte): Don't compare single-bit bitfields to "1". commit ae6c7e33e1510665e8e043eb11a71e59414efbf3 Author: Alan Modra Date: Fri Sep 12 09:35:42 2014 +0930 Test for overflow in eh_frame_hdr entries and for overlapping FDEs With larger binaries on 64-bit systems, or indeed just binaries that have a large gap between text and data, it is possible for the .eh_frame_hdr lookup table entry values to overflow a signed 32-bit relative offset. It is also a requirement for the glibc FDE lookup code that only one FDE claim to cover any given address. * elf-bfd.h (struct eh_frame_array_ent): Add "range". * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Stash address range of FDEs to hdr_info->array. (_bfd_elf_write_section_eh_frame_hdr): Report overflow in .eh_frame_hdr entries, and overlapping FDEs. commit 18d60c2bd70855afa467f0d5d8f95b3e4d243cde Author: Alan Modra Date: Fri Sep 12 09:31:26 2014 +0930 daily update commit a01cbb490b34eda832c0215b8447e6aef68b0278 Author: Thomas Schwinge Date: Thu Sep 11 22:30:23 2014 +0200 Make gdb/regcache.h self-contained. gdb/ * regcache.h (struct regset): Declare. Commit 0b3092721e5cfa1697f1dafe81efefdbb0236f21 added uses of struct regset to gdb/regcache.h, but that struct is not declared in this file, and, as it happens, also nowhere else in the #include chain on x86 GNU/Hurd. This results in warnings/errors such as: gcc-4.8 [...] ../../W._C._Handy/gdb/gdb.c In file included from ./nm.h:25:0, from ../../W._C._Handy/gdb/defs.h:454, from ../../W._C._Handy/gdb/gdb.c:19: ../../W._C._Handy/gdb/regcache.h:190:9: warning: 'struct regset' declared inside parameter list [enabled by default] size_t size); ^ ../../W._C._Handy/gdb/regcache.h:190:9: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default] ../../W._C._Handy/gdb/regcache.h:193:10: warning: 'struct regset' declared inside parameter list [enabled by default] int regnum, void *buf, size_t size); ^ commit 98880d46bdb1e88db447f876a8ac1f2a4de97dae Author: Pedro Alves Date: Thu Sep 11 13:04:15 2014 +0100 gdb/17347 - Regression: GDB stopped on run with attached process Doing: gdb --pid=PID -ex run Results in GDB getting a SIGTTIN, and thus ending stopped. That's usually indicative of a missing target_terminal_ours call. E.g., from the PR: $ sleep 1h & p=$!; sleep 0.1; gdb -batch sleep $p -ex run [1] 28263 [1] Killed sleep 1h [2]+ Stopped gdb -batch sleep $p -ex run The workaround is doing: gdb -ex "attach $PID" -ex "run" instead of gdb [-p] $PID -ex "run" With the former, gdb waits for the attach command to complete before moving on to the "run" command, because the interpreter is in sync mode at this point, within execute_command. But for the latter, attach_command is called directly from captured_main, and thus misses that waiting. IOW, "run" is running before the attach continuation has run, before the program stops and attach completes. The broken terminal settings are just one symptom of that. Any command that queries or requires input results in the same. The fix is to wait in catch_command_errors (which is specific to main.c nowadays), just like we wait in execute_command. gdb/ChangeLog: 2014-09-11 Pedro Alves PR gdb/17347 * main.c: Include "infrun.h". (catch_command_errors, catch_command_errors_const): Wait for the foreground command to complete. * top.c (maybe_wait_sync_command_done): New function, factored out from ... (maybe_wait_sync_command_done): ... here. * top.h (maybe_wait_sync_command_done): New declaration. gdb/testsuite/ChangeLog: 2014-09-11 Pedro Alves PR gdb/17347 * lib/gdb.exp (gdb_spawn_with_cmdline_opts): New procedure. * gdb.base/attach.exp (test_command_line_attach_run): New procedure. (top level): Call it. commit 4c92ff2c35392b68ee9172af979483b32aaa3d7b Author: Pedro Alves Date: Thu Sep 11 13:04:14 2014 +0100 testsuite: refactor spawn and wait for attach Several places in the testsuite have a copy of a snippet of code that spawns a test program, waits a bit, and then does some PID munging for Cygwin. This is in order to have GDB attach to the spawned program. This refactors all that to a common procedure. (multi-attach.exp wants to spawn multiple processes, so this makes the new procedure's interface work with lists.) Tested on x86_64 Fedora 20. gdb/testsuite/ChangeLog: 2014-09-11 Pedro Alves * lib/gdb.exp (spawn_wait_for_attach): New procedure. * gdb.base/attach.exp (do_attach_tests, do_call_attach_tests) (do_command_attach_tests): Use spawn_wait_for_attach. * gdb.base/solib-overlap.exp: Likewise. * gdb.multi/multi-attach.exp: Likewise. * gdb.python/py-prompt.exp: Likewise. * gdb.python/py-sync-interp.exp: Likewise. * gdb.server/ext-attach.exp: Likewise. commit bd9269f70c70b1218b0eb73a6f487d6ca481e5ac Author: Gary Benson Date: Thu Sep 11 11:43:04 2014 +0100 Introduce common/symbol.h This introduces common/symbol.h. This file declares a function that the shared code can use and that the clients must implement. It also changes some shared code to use these functions. gdb/ChangeLog: * common/symbol.h: New file. * Makefile.in (HFILES_NO_SRCDIR): Add common/symbol.h. * minsyms.c (find_minimal_symbol_address): New function. * common/agent.c: Include common/symbol.h. [!GDBSERVER]: Don't include objfiles.h. (agent_look_up_symbols): Use find_minimal_symbol_address. gdb/gdbserver/ChangeLog: * symbol.c: New file. * Makefile.in (SFILES): Add symbol.c. (OBS): Add symbol.o. commit f8c1d06b82ab0fd56bcffc9030cb44b5a946113e Author: Gary Benson Date: Thu Sep 11 11:19:56 2014 +0100 Introduce target_{stop,continue}_ptid This commit introduces two new functions to stop and restart target processes that shared code can use and that clients must implement. It also changes some shared code to use these functions. gdb/ChangeLog: * target/target.h (target_stop_ptid, target_continue_ptid): Declare. * target.c (target_stop_ptid, target_continue_ptid): New functions. * common/agent.c [!GDBSERVER]: Don't include infrun.h. (agent_run_command): Always use target_stop_ptid and target_continue_ptid. gdb/gdbserver/ChangeLog: * target.c (target_stop_ptid, target_continue_ptid): New functions. commit 721ec300e1e27c2fa7540ef97f39b6c5ce65083f Author: Gary Benson Date: Thu Sep 11 11:19:56 2014 +0100 Introduce target/target.h This introduces target/target.h. This file declares some functions that the shared code can use and that clients must implement. It also changes some shared code to use these functions. gdb/ChangeLog: * target/target.h: New file. * Makefile.in (HFILES_NO_SRCDIR): Add target/target.h. * target.h: Include target/target.h. (target_read_memory, target_write_memory): Don't declare. * target.c (target_read_uint32): New function. * common/agent.c: Include target/target.h. [!GDBSERVER]: Don't include target.h. (helper_thread_id): Type changed to uint32_t. (agent_get_helper_thread_id): Use target_read_uint32. (agent_run_command): Always use target_read_memory and target_write_memory. (agent_capability): Type changed to uint32_t. (agent_capability_check): Use target_read_uint32. gdb/gdbserver/ChangeLog: * target.h: Include target/target.h. * target.c (target_read_memory, target_read_uint32) (target_write_memory): New functions. commit c5e92cca56da9153985d4c15dab243e383f66919 Author: Gary Benson Date: Thu Sep 11 11:19:56 2014 +0100 Introduce show_debug_regs This commit adds a new global flag show_debug_regs to common-debug.h to replace the flag debug_hw_points used by gdbserver and by the Linux x86 and AArch64 ports, and to replace the flag maint_show_dr used by the Linux MIPS port. Note that some debug printing in the AArch64 port was enabled only if debug_hw_points > 1 but no way to set debug_hw_points to values other than 0 and 1 was provided; that code was effectively dead. This commit enables all debug printing if show_debug_regs is nonzero, so the AArch64 output will be more verbose than previously. gdb/ChangeLog: * common/common-debug.h (show_debug_regs): Declare. * common/common-debug.c (show_debug_regs): Define. * aarch64-linux-nat.c (debug_hw_points): Don't define. Replace all uses with show_debug_regs. Replace all uses that considered debug_hw_points as a multi-value integer with straight boolean uses. * x86-nat.c (debug_hw_points): Don't define. Replace all uses with show_debug_regs. * nat/x86-dregs.c (debug_hw_points): Don't declare. Replace all uses with show_debug_regs. * mips-linux-nat.c (maint_show_dr): Don't define. Replace all uses with show_debug_regs. gdb/gdbserver/ChangeLog: * server.h (debug_hw_points): Don't declare. * server.c (debug_hw_points): Don't define. Replace all uses with show_debug_regs. * linux-aarch64-low.c (debug_hw_points): Don't define. Replace all uses with show_debug_regs. commit 3adc1a7d457d7fcdc413b970f1ed02b0925e6da8 Author: Gabriel Krisman Bertazi Date: Thu Sep 11 00:03:35 2014 -0300 Fix gdb.fortran/array-element.exp failures. This fixes two FAIL results on this testcase which were caused by a misplaced "continue" command. This testcase used to end inferior's execution too soon, causing the following tests to fail. Now we break right after inferior's loop and perform the rest of the tests there. gdb/testsuite/ChangeLog: * gdb.fortran/array-element.exp: Remove unexpected "continue" command in testcase. Simplify testcase. commit 9b5d451f417a5a0b88e861b2249f75024b7ac57d Author: Alan Modra Date: Thu Sep 11 09:31:18 2014 +0930 daily update commit eeef931a6a0596c2121e66dd70e1a36ef0fc576f Author: Ulrich Weigand Date: Wed Sep 10 19:01:26 2014 +0200 Support gdbarch_convert_register_p targets in address_from_register Since the last change to address_from_register, it no longer supports targets that require a special conversion (gdbarch_convert_register_p) for plain pointer type; I had assumed no target does so. This turned out to be incorrect: MIPS64 n32 big-endian needs such a conversion in order to properly sign-extend pointer values. This patch fixes this regression by handling targets that need a special conversion in address_from_register as well. gdb/ChangeLog: * findvar.c (address_from_register): Handle targets requiring a special conversion routine even for plain pointer types. commit 4b4c407a349620e4a6b9cb36b77778fccb7ff00f Author: H.J. Lu Date: Wed Sep 10 09:38:31 2014 -0700 Properly handle suffix for iret and sysret gas/testsuite/ * gas/i386/i386.exp: Run suffix-intel, x86-64-suffix and x86-64-suffix-intel. * gas/i386/suffix.s: Add tests for iret and sysret. * gas/i386/suffix.d: Updated. * gas/i386/suffix-intel.d: New file. * gas/i386/x86-64-suffix-intel.d: Likewise. * gas/i386/x86-64-suffix.d: Likewise. * gas/i386/x86-64-suffix.s: Likewise. opcodes/ * i386-dis.c (dis386): Replace "P" with "%LP" for iret and sysret. (putop): Handle "%LP". commit a485e98ea0cbb61ea9da1e7858da545e0bcf1a46 Author: Alan Modra Date: Wed Sep 10 14:26:25 2014 +0930 Move ELF section headers to end of object file Currently, section ordering differs a little for non-loaded reloc sections output by ld -emit-relocs or ld -r and that after passing such objects through objcopy. Not that it really matters, but it would be better for a simple objcopy to produce an unchanged output object file. Also, section headers are put somewhere in the middle of the non-loaded sections, again slightly differently for ld and objcopy. This patch fixes these discrepancies and puts section headers last, which is where gold puts them, and is where bfd_from_remote_memory wrongly assumed they will be found. bfd/ * elf.c (assign_file_positions_except_relocs): Move section header placement to.. (_bfd_elf_assign_file_positions_for_relocs): ..here. Make static. * elf-bfd.h (_bfd_elf_assign_file_positions_for_relocs): Delete. * elflink.c (bfd_elf_final_link): Don't call above function. gas/testsuite/ * gas/arm/got_prel.d: Adjust for changed section header placement. * gas/i386/ilp32/x86-64-size-1.d: Likewise. * gas/i386/ilp32/x86-64-size-3.d: Likewise. * gas/i386/ilp32/x86-64-size-5.d: Likewise. * gas/i386/ilp32/x86-64-unwind.d: Likewise. * gas/i386/size-1.d: Likewise. * gas/i386/size-3.d: Likewise. * gas/i386/x86-64-size-1.d: Likewise. * gas/i386/x86-64-size-3.d: Likewise. * gas/i386/x86-64-size-5.d: Likewise. * gas/i386/x86-64-unwind.d: Likewise. * gas/ia64/alias-ilp32.d: Likewise. * gas/ia64/alias.d: Likewise. * gas/ia64/group-1.d: Likewise. * gas/ia64/group-2.d: Likewise. * gas/ia64/secname-ilp32.d: Likewise. * gas/ia64/secname.d: Likewise. * gas/ia64/unwind-ilp32.d: Likewise. * gas/ia64/unwind.d: Likewise. * gas/mmix/bspec-1.d: Likewise. * gas/mmix/bspec-2.d: Likewise. * gas/mmix/byte-1.d: Likewise. * gas/mmix/loc-1.d: Likewise. * gas/mmix/loc-2.d: Likewise. * gas/mmix/loc-3.d: Likewise. * gas/mmix/loc-4.d: Likewise. * gas/mmix/loc-5.d: Likewise. * gas/tic6x/scomm-directive-4.d: Likewise. ld/testsuite/ * ld-aarch64/emit-relocs-local-addend.d: Adjust for changed section header placement. * ld-aarch64/local-addend-r.d: Likewise. * ld-mmix/bspec1.d: Likewise. * ld-mmix/bspec2.d: Likewise. * ld-mmix/local1.d: Likewise. * ld-mmix/local3.d: Likewise. * ld-mmix/local5.d: Likewise. * ld-mmix/local7.d: Likewise. * ld-mmix/undef-3.d: Likewise. * ld-sh/sh64/crange3-cmpct.rd: Likewise. * ld-sh/sh64/crange3-media.rd: Likewise. * ld-sh/sh64/crangerel1.rd: Likewise. * ld-sh/sh64/crangerel2.rd: Likewise. * ld-tic6x/common.d: Likewise. * ld-tic6x/shlib-1.rd: Likewise. * ld-tic6x/shlib-1b.rd: Likewise. * ld-tic6x/shlib-1r.rd: Likewise. * ld-tic6x/shlib-1rb.rd: Likewise. * ld-tic6x/shlib-app-1.rd: Likewise. * ld-tic6x/shlib-app-1b.rd: Likewise. * ld-tic6x/shlib-app-1r.rd: Likewise. * ld-tic6x/shlib-app-1rb.rd: Likewise. * ld-tic6x/shlib-noindex.rd: Likewise. * ld-tic6x/static-app-1.rd: Likewise. * ld-tic6x/static-app-1b.rd: Likewise. * ld-tic6x/static-app-1r.rd: Likewise. * ld-tic6x/static-app-1rb.rd: Likewise. * ld-x86-64/ilp32-4.d: Likewise. * ld-x86-64/split-by-file-nacl.rd: Likewise. * ld-x86-64/split-by-file.rd: Likewise. commit 8efa9855823a78b8f465f39ddd8736266a6f31c4 Author: Ulrich Weigand Date: Wed Sep 10 15:59:33 2014 +0200 AIX: Remove exec_one_dummy_insn hack Old AIX versions required GDB to update the stack pointer register and execute at least one instruction before accessing the space newly allocated on the user stack. This was done using the exec_one_dummy_insn routine in rs6000-nat.c However, in currently supported AIX versions (tested on AIX 6.1), this hack is no longer necessary. In fact, removing the hack actually fixed several test case failures, and removes a call to deprecated_insert_raw_breakpoint. gdb/ChangeLog: * rs6000-nat.c (exec_one_dummy_insn): Remove. (store_register): Do not call exec_one_dummy_insn. commit 963349348e119396aa1a326922624aa78398e7e7 Author: Joel Brobecker Date: Mon Sep 1 18:42:52 2014 +0200 dynarr-ptr.exp: Add ptype tests. This patch adds a number of "ptype" tests to gdb.dwarf2/dynarr-ptr.exp. gdb/testsuite/ChangeLog: * gdb.dwarf2/dynarr-ptr.exp: Add a few ptype tests. commit eb47903935f507a11b6367d4a997b8ac95068c4c Author: Joel Brobecker Date: Fri Aug 29 19:56:25 2014 +0200 Ada: Print bounds/length of pointer to array with dynamic bounds Trying to print the bounds or the length of a pointer to an array whose bounds are dynamic results in the following error: (gdb) p foo.three_ptr.all'first Location address is not set. (gdb) p foo.three_ptr.all'length Location address is not set. This is because, after having dereferenced our array pointer, we use the type of the resulting array value, instead of the enclosing type. The former is the original type where the bounds are unresolved, whereas we need to get the actual array bounds. Similarly, trying to apply those attributes to the array pointer directly (without explicitly dereferencing it with the '.all' operator) yields the same kind of error: (gdb) p foo.three_ptr'first Location address is not set. (gdb) p foo.three_ptr'length Location address is not set. This is caused by the fact that the dereference was done implicitly in this case, and perform at the type level only, which is not sufficient in order to resolve the array type. This patch fixes both issues, thus allowing us to get the expected output: (gdb) p foo.three_ptr.all'first $1 = 1 (gdb) p foo.three_ptr.all'length $2 = 3 (gdb) p foo.three_ptr'first $3 = 1 (gdb) p foo.three_ptr'length $4 = 3 gdb/ChangeLog: * ada-lang.c (ada_array_bound): If ARR is a TYPE_CODE_PTR, dereference it first. Use value_enclosing_type instead of value_type. (ada_array_length): Likewise. gdb/testsuite/ChangeLog: * gdb.dwarf2/dynarr-ptr.exp: Add 'first, 'last and 'length tests. commit deede10c775af571f72a37efa5b763b45334b19e Author: Joel Brobecker Date: Fri Aug 29 19:50:03 2014 +0200 Ada subscripting of pointer to array with dynamic bounds Consider a pointer to an array which dynamic bounds, described in DWARF as follow: <1><25>: Abbrev Number: 4 (DW_TAG_array_type) <26> DW_AT_name : foo__array_type [...] <2><3b>: Abbrev Number: 5 (DW_TAG_subrange_type) [...] <40> DW_AT_lower_bound : 5 byte block: 97 38 1c 94 4 (DW_OP_push_object_address; DW_OP_lit8; DW_OP_minus; DW_OP_deref_size: 4) <46> DW_AT_upper_bound : 5 byte block: 97 34 1c 94 4 (DW_OP_push_object_address; DW_OP_lit4; DW_OP_minus; DW_OP_deref_size: 4) GDB is now able to correctly print the entire array, but not one element of the array. Eg: (gdb) p foo.three_ptr.all $1 = (1, 2, 3) (gdb) p foo.three_ptr.all(1) Cannot access memory at address 0xfffffffff4123a0c The problem occurs because we are missing a dynamic resolution of the variable's array type when subscripting the array. What the current code does is "fix"-ing the array type using the GNAT encodings, but that operation ignores any of the array's dynamic properties. This patch fixes the issue by using ada_value_ind to dereference the array pointer, which takes care of the array type resolution. It also continues to "fix" arrays described using GNAT encodings, so backwards compatibility is preserved. gdb/ChangeLog: * ada-lang.c (ada_value_ptr_subscript): Remove parameter "type". Adjust function implementation and documentation accordingly. (ada_evaluate_subexp) : Only assign "type" if NOSIDE is EVAL_AVOID_SIDE_EFFECTS. Update call to ada_value_ptr_subscript. gdb/testsuite/ChangeLog: * gdb.dwarf2/dynarr-ptr.exp: Add subscripting tests. commit 7828a5f5fab040cdc007ce235c4c534aa777067b Author: Joel Brobecker Date: Fri Aug 29 17:50:13 2014 +0200 print PTR.all where PTR is an Ada thin pointer Consider the following declaration: type Array_Type is array (Natural range <>) of Integer; type Array_Ptr is access all Array_Type; for Array_Ptr'Size use 64; Three_Ptr : Array_Ptr := new Array_Type'(1 => 1, 2 => 2, 3 => 3); This creates a pointer to an array where the bounds are stored in a memory region just before the array itself (aka a "thin pointer"). In DWARF, this is described as a the usual pointer type to an array whose subrange has dynamic values for its bounds: <1><25>: Abbrev Number: 4 (DW_TAG_array_type) <26> DW_AT_name : foo__array_type [...] <2><3b>: Abbrev Number: 5 (DW_TAG_subrange_type) [...] <40> DW_AT_lower_bound : 5 byte block: 97 38 1c 94 4 (DW_OP_push_object_address; DW_OP_lit8; DW_OP_minus; DW_OP_deref_size: 4) <46> DW_AT_upper_bound : 5 byte block: 97 34 1c 94 4 (DW_OP_push_object_address; DW_OP_lit4; DW_OP_minus; DW_OP_deref_size: 4) GDB is currently printing the value of the array incorrectly: (gdb) p foo.three_ptr.all $1 = (26629472 => 1, 2, value.c:819: internal-error: value_contents_bits_eq: [...] The dereferencing (".all" operator) is done by calling ada_value_ind, which itself calls value_ind. It first produces a new value where the bounds of the array were correctly resolved to their actual value, but then calls readjust_indirect_value_type which replaces the resolved type by the original type. The problem starts when ada_value_print does not take this situation into account, and starts using the type of the resulting value, which has unresolved array bounds, instead of using the value's enclosing type. After fixing this issue, the debugger now correctly prints: (gdb) p foo.three_ptr.all $1 = (1, 2, 3) gdb/ChangeLog: * ada-valprint.c (ada_value_print): Use VAL's enclosing type instead of VAL's type. gdb/testsuite/ChangeLog: * gdb.dwarf2/dynarr-ptr.c: New file. * gdb.dwarf2/dynarr-ptr.exp: New file. commit 35782f1465dd014737fcf6c82bdf733598a5c9b8 Author: Joel Brobecker Date: Wed Sep 10 09:06:50 2014 -0400 Add #include back in amd64-linux-nat.c. This include is needed to access the definition of "struct iovec". gdb/ChangeLog: * amd64-linux-nat.c: Add #include. commit d342a0da4fa83b680426511a7d0e1b1e299c63b8 Author: Doug Evans Date: Tue Sep 9 21:18:25 2014 -0700 PR guile/17367 gdb/ChangeLog: * acinclude.m4 (GDB_GUILE_PROGRAM_NAMES): Pass guile version as last parameter to pkg-config, not first. * configure.ac: Pass --with-guile provided pkg-config path to GDB_GUILE_PROGRAM_NAMES. * configure: Regenerate. commit b4a3d263b07508de083928823aee72699e59afc0 Author: Gabriel Krisman Bertazi Date: Wed Sep 10 00:03:43 2014 -0300 Add myself as write-after-approval GDB maintainer. gdb/ChangeLog: * MAINTAINERS (Write After Approval): Add "Gabriel Krisman Bertazi". commit b25b5cef71fc5628fce0908125d6a3a732c22cde Author: Chung-Ju Wu Date: Sat Sep 6 03:54:47 2014 +0800 Disable gdb for nds32*-*-* until it is supported. commit 9a560ca009644f29654bee0f060f7b1e80336cee Author: Alan Modra Date: Wed Sep 10 09:31:19 2014 +0930 daily update commit 6e46637421cc7318c3a1333e32725eaca5f7af4c Author: Maciej W. Rozycki Date: Tue Sep 9 23:41:28 2014 +0100 MIPS: Don't infer IRIX OS ABI from generic section names There are `.MIPS.abiflags', `.MIPS.options' and `.MIPS.stubs' sections also present in Linux executables, so we can't infer IRIX OS ABI solely from the existence of these sections. This is not going to be a problem as there are bound to be other sections whose names start with `.MIPS.' in IRIX executables and this selection only matters for a non-default OS ABI in a multiple-target GDB executable. As a last resort the automatic selection can be overridden with `set osabi'. * mips-irix-tdep.c (mips_irix_elf_osabi_sniff_abi_tag_sections): Exclude `.MIPS.abiflags', `.MIPS.options' and `.MIPS.stubs' from the list of sections determining GDB_OSABI_IRIX. commit a1ada89ac66ca4a3815e586396a09eb311cf9b77 Author: James Hogan Date: Tue Sep 9 21:59:34 2014 +0100 Add myself as write-after-approval GDB maintainer gdb/ChangeLog: * MAINTAINERS (Write After Approval): Add "James Hogan". commit 33aeebcf589077c82b63815645ca95f20dc064d0 Author: Maciej W. Rozycki Date: Tue Sep 9 17:39:17 2014 +0100 GDB/testsuite: Correct gdb.base/watchpoint-solib.exp timeout tweak Similarly to the previous changes to gdb.reverse/sigall-reverse.exp and gdb.reverse/until-precsave.exp this corrects the timeout tweak in gdb.base/watchpoint-solib.exp. This test case executes a large amount of code with a software watchpoint enabled. This means single-stepping all the way through and takes a lot of time, e.g. for an ARMv7 Panda board and a `-march=armv5te' multilib: PASS: gdb.base/watchpoint-solib.exp: continue to foo again elapsed: 714 for the same board and a `-mthumb -march=armv5te' multilib: PASS: gdb.base/watchpoint-solib.exp: continue to foo again elapsed: 1275 and for QEMU in the system emulation mode and a `-march=armv4t' multilib: PASS: gdb.base/watchpoint-solib.exp: continue to foo again elapsed: 115 (values in seconds) -- all of which having the default timeout of 60s, set based on the requirement of the remaining test cases (other than gdb.reverse ones). Here again the timeout extension to have a meaning should be calculated by scaling rather than using an arbitrary constant, and a larger factor of 30 will do, leaving some margin. Hopefully for everyone or otherwise we'll probably have to come up with a smarter solution. OTOH the other test cases in this script do not require the extension so they can be moved outside its umbrella so as to avoid unnecessary delays if something goes wrong and a genuine timeout triggers. * gdb.base/watchpoint-solib.exp: Increase the timeout by a factor of 30 rather than hardcoding 120 for a slow test case. Take the `gdb,timeout' target setting into account for this calculation. Don't extend the timeout for the test cases that don't need it. commit 7b4159018eeef7e1c682c63c1b33ce9c064e7c65 Author: Maciej W. Rozycki Date: Tue Sep 9 17:03:24 2014 +0100 GDB/testsuite: Add/correct gdb.reverse timeout tweaks There are three cases in two scripts in the gdb.reverse subset that take a particularly long time. Two of them are already attempted to take care of by extending the timeout from the default. The remaining one has no precautions taken. The timeout extension is ineffective though, it is done by adding a constant rather than by scaling and as a result while it may work for target boards that get satisfied with the detault test timeout of 10s, it does not serve its purpose for slower ones. Here are indicative samples of execution times (in seconds) observed for these cases respectively, for an ARMv7 Panda board running Linux and a `-march=armv5te' multilib: PASS: gdb.reverse/sigall-reverse.exp: continue to signal exit elapsed: 385 PASS: gdb.reverse/until-precsave.exp: run to end of main elapsed: 4440 PASS: gdb.reverse/until-precsave.exp: save process recfile elapsed: 965 for the same board and a `-mthumb -march=armv5te' multilib: PASS: gdb.reverse/sigall-reverse.exp: continue to signal exit elapsed: 465 PASS: gdb.reverse/until-precsave.exp: run to end of main elapsed: 4191 PASS: gdb.reverse/until-precsave.exp: save process recfile elapsed: 669 and for QEMU in the system emulation mode and a `-march=armv4t' multilib: PASS: gdb.reverse/sigall-reverse.exp: continue to signal exit elapsed: 45 PASS: gdb.reverse/until-precsave.exp: run to end of main elapsed: 433 PASS: gdb.reverse/until-precsave.exp: save process recfile elapsed: 104 Based on the performance of other tests these two test configurations have their default timeout set to 450s and 60s respectively. The remaining two multilibs (`-mthumb -march=armv4t' and `-mthumb -march=armv7-a') do not produce test results usable enough to have data available for these cases. Based on these results I have tweaked timeouts for these cases as follows. This, together with a suitable board timeout setting, removes timeouts for these cases. Note that for the default timeout of 10s the new setting for the first case in gdb.reverse/until-precsave.exp is compatible with the old one, just a bit higher to keep the convention of longer timeouts to remain multiples of 30s. The second case there does not need such a high setting so I have lowered it a bit to avoid an unnecessary delay where this test case genuinely times out. * gdb.reverse/sigall-reverse.exp: Increase the timeout by a factor of 2 for a slow test case. Take the `gdb,timeout' target setting into account for this calculation. * gdb.reverse/until-precsave.exp: Increase the timeout by a factor of 15 and 3 respectively rather than adding 120 for a pair of slow test cases. Take the `gdb,timeout' target setting into account for this calculation. commit 4a40f85a84f08f7fc6abe06115df9342efdc53c5 Author: Maciej W. Rozycki Date: Tue Sep 9 16:39:16 2014 +0100 GDB/testsuite: Avoid timeout lowering The recent change to introduce `gdb_reverse_timeout' turned out ineffective for board setups that set the `gdb,timeout' target variable. A lower `gdb,timeout' setting takes precedence and defeats the effect of `gdb_reverse_timeout'. This is because the global timeout is overridden in gdb_test_multiple and then again in gdb_expect. Three timeout variables are taken into account in these two places, in this precedence: 1. The `gdb,timeout' target variable. 2. The caller's local `timeout' variable (upvar timeout) 3. The global `timeout' variable. This precedence is obeyed by gdb_test_multiple strictly. OTOH gdb_expect will select the higher of the two formers and will only take the latter into account if none of the formers is present. However the two timeout selections are conceptually the same and gdb_test_multiple does its only for the purpose of passing it down to gdb_expect. Therefore I decided there is no point to keep carrying on this duplication and removed the sequence from gdb_test_multiple, however retaining the `upvar timeout' variable definition. This way gdb_expect will still access gdb_test_multiple's caller `timeout' variable (if any) via its own `upvar timeout' reference. Now as to the sequence in gdb_expect. In addition to the three variables described above it also takes a timeout argument into account, as the fourth value to choose from. It is currently used if it is higher than the timeout selected from the variables as described above. With the timeout selection code from gdb_test_multiple gone, gone is also the most prominent use of this timeout argument, it's now used in a couple of places only, mostly within this test framework library code itself for preparatory commands or suchlike. With this being the case this timeout selection code can be simplified as follows: 1. Among the three timeout variables, the highest is always chosen. This is so that a test case doesn't inadvertently lower a high value timeout needed by slow target boards. This is what all test cases use. 2. Any timeout argument takes precedence. This is for special cases such as within the framework library code, e.g. it doesn't make sense to send `set height 0' with a timeout of 7200 seconds. This is a local command that does not interact with the target and setting a high timeout here only risks a test suite run taking ages if it goes astray for some reason. 3. The fallback timeout of 60s remains. * lib/gdb.exp (gdb_test_multiple): Remove code to select the timeout, don't pass one down to gdb_expect. (gdb_expect): Rework timeout selection. commit 86db008d5af464bb3e13113d92a21fcac5965ff1 Author: James Hogan Date: Tue Sep 9 14:59:18 2014 +0100 Remove trad_frame_set_reg_unknown declaration The trad_frame_set_reg_unknown declaration was added in commit 0db9b4b70969 (March 2004), but apparently never defined or referenced. gdb/ChangeLog: * trad-frame.h (trad_frame_set_reg_unknown): Remove declaration. commit 09635af7cdc14b7a9dc11010de4cb0d556e2a4a8 Author: Maciej W. Rozycki Date: Tue Sep 9 16:17:38 2014 +0100 gdbserver-support: Handle gdbserver start failures As it happens we have a board that fails a gdb.base/gcore-relro.exp test case reproducibly and moreover the case appears to trigger a kernel bug making the it less than usable. Specifically the board remains responsive to some extent, however processes do not appear to be able to successfully complete termination anymore and perhaps more importantly further gdbserver processes can be started, but they never reach the stage of listening on the RSP socket. This change handles timeouts in gdbserver start properly, by throwing a TCL error exception when gdbserver does not report listening on the RSP socket in time. This is then caught at the outer level and reported, and 2 rather than 1 is returned so that the caller may tell the failure to start gdbserver and other issues apart and act accordingly (or do nothing). I thought letting the exception unwind further on might be a good idea for any test harnesses out there to break outright where a gdbserver start error is silently ignored right now, however I figured out the calls to gdbserver-support.exp are buried down too deep in the GDB test suite for such a change to be made easily. I think returning a distinct return value is good enough (the API says "non-zero", so 2 is as good as 1) and we can always make the error harder in a later step if required. With config/gdbserver.exp being used this change remains transparent to the target board, the return value is passed up by gdb_reload and the error exception unwinds through gdbserver_gdb_load and is caught and handled by mi_gdb_target_load. A call to perror is still made, reporting the timeout, and in the case of mi_gdb_target_load the procedure returns a value denoting unsuccessful completion. An unsuccessful completion of gdb_reload is already handled elsewhere. An alternative gdbserver board configuration can interpret the return value in its gdb_reload implementation and catch the error in gdbserver_gdb_load in an attempt to recover a target board that has gone astray, for example by rebooting the board somehow. This has proved effective with our failing board, that now completes the remaining test cases with no further hiccups. * lib/gdbserver-support.exp (gdbserver_start): Throw an error exception on timeout. (gdbserver_run): Catch any `gdbserver_spawn' error exceptions. (gdbserver_start_extended): Catch any `gdbserver_start' error exceptions. (gdbserver_start_multi, mi_gdbserver_start_multi): Likewise. * lib/mi-support.exp (mi_gdb_target_load): Catch any `gdbserver_gdb_load' error exceptions. commit 2bdd10b78e7e5b33c488af6fcb01255269e8a498 Author: Maciej W. Rozycki Date: Tue Sep 9 16:06:15 2014 +0100 GDB/testsuite: Extend the time gdbserver is waited for Gdbserver support code uses the global timeout value to determine when to stop waiting for a gdbserver process being started to respond before continuing anyway. This timeout is usually as low as 10s and may not be enough in this context, for example on the first run where the filesystem cache is cold, even if it is elsewhere. E.g. I observe this reliably with gdbserver started the first time in QEMU running in the system emulation mode: (gdb) file .../gdb.base/advance Reading symbols from .../gdb.base/advance...done. (gdb) delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1 at 0x87f8: file .../gdb.base/advance.c, line 41. (gdb) set remotetimeout 15 (gdb) kill The program is not being run. (gdb) [...] .../bin/gdbserver --once :6014 advance target remote localhost:6014 Remote debugging using localhost:6014 Remote communication error. Target disconnected.: Connection reset by peer. (gdb) continue The program is not being run. (gdb) Process advance created; pid = 999 Listening on port 6014 FAIL: gdb.base/advance.exp: Can't run to main -- notice how the test harness proceeded with the `target remote ...' command even though gdbserver hasn't completed its startup yet. A while later when it's finally ready it's too late already. I checked the timing here and it takes gdbserver roughly 25 seconds to start in this scenario. Subsequent gdbserver starts in the same test run take less time and usually complete within 10 seconds although occasionally `target remote ...' precedes the corresponding `Listening on port...' message again. Therefore I have fixed this problem by setting an explicit timeout to 120s on the expect call in question. If this turns out too arbitrary sometime, then perhaps a separate `gdbserver_timeout' setting might be due. * lib/gdbserver-support.exp (gdbserver_start): Set timeout to 120 on waiting for the TCP socket to open. commit 72fde3dfe9a2367abc593684b9b4d2343d367d85 Author: Joel Brobecker Date: Tue Sep 9 16:49:13 2014 +0200 Fix missing "struct iovec" definition on some x86-linux. The following patch... commit 3116063bd617de56fbc3bad046a692b1fb363a9d Date: Fri Jun 27 09:52:29 2014 +0100 Subject: Tidy #include lists ... introduced a build failure on certain x86 GNU/Linux distributions (reproduced on SuSE 10 and RHES4) due to "struct iovec" not being defined. This struct is defined in , which used to be explicitly included, but no longer is after the commit above was applied. [...]/i386-linux-nat.c: In function 'fetch_xstateregs': [...]/i386-linux-nat.c:325:16: error: storage size of 'iov' isn't known [...]/i386-linux-nat.c: In function 'store_xstateregs': [...]/i386-linux-nat.c:348:16: error: storage size of 'iov' isn't known make[2]: *** [i386-linux-nat.o] Error 1 It seems to be working on newer GNU/Linux distros thanks to indirect inclusion of , but it does not work on some other versions of the same distros. This is why indirect includes of public APIs should be avoided if at all possible. This patch fixes the issue by adding the explicit include back. gdb/ChangeLog: * i386-linux-nat.c, x86-linux-nat.c: Add #include. commit d7adf9603ba5cdc21b88c6e2c0127f041a3320c8 Author: Kyrylo Tkachov Date: Tue Sep 9 10:10:00 2014 +0100 [PATCH][ARM] Add Cortex-A17 support to gas * config/tc-arm.c (arm_cpus): Add cortex-a17. commit 316935f0ad534e72f4e7d607d933a4ab71963f09 Author: Doug Evans Date: Mon Sep 8 23:01:01 2014 -0700 Fix regression in default.exp caused by _caller_is, etc. gdb/testsuite/ChangeLog: * gdb.base/default.exp (show_conv_list): Add _caller_is, _caller_matches, _any_caller_is, _any_caller_matches. commit 92d8d229d9a310ebfcfc13bf4a75a286c1add1ac Author: Doug Evans Date: Mon Sep 8 22:45:34 2014 -0700 Fix for PR 17247: Block SIGCHLD while initializing Guile. The problem here is that if a thread other than gdb's main thread gets a SIGCHLD (it's an asynchronous signal so the kernel will essentially pick a random thread) then gdb will hang if it is in sigsuspend when the SIGCHLD is delivered. The other thread will see the signal and the sigsuspend won't "wake up". Guile and libgc should be blocking SIGCHLD in their threads, but we need to work with Guile 2.0 and libgc 7.4. The problem first shows up in libgc 7.4 because it is the first release that enables multiple marker threads by default. gdb/ChangeLog: PR 17247 * guile.c: #include . (_initialize_guile): Block SIGCHLD while initializing Guile. Replaces the following, which is reverted. 2014-07-26 Doug Evans PR 17185 * configure.ac: Add check for header gc/gc.h. Add check for function setenv. * configure: Regenerate. * config.in: Regenerate. * guile/guile.c (_initialize_guile): Add workaround for libgc 7.4.0. commit 837405970476d31d6b4d7774e2c914fdfa7a9930 Author: Doug Evans Date: Mon Sep 8 22:19:32 2014 -0700 gdb.guile/scm-error.exp: Handle guile 2.2 backtrace output. gdb/testsuite/ChangeLog: * gdb.guile/scm-error.exp: Handle guile 2.2 backtrace output. commit d81412aa4b2669d108de0b4e1d8f881cedebd8a9 Author: Doug Evans Date: Mon Sep 8 20:47:57 2014 -0700 Replace use of magic number with named constant. gdb/ChangeLog: * guile/scm-cmd.c (gdbscm_parse_command_name): Replace magic number with named constant. Fix style of pointer comparison. * python/py-cmd.c (gdbpy_parse_command_name): Ditto. commit 4c122fc3154566369237c6194def4bd88a074f7e Author: Yao Qi Date: Sat Aug 30 17:46:21 2014 +0800 Set print symbol off in mi-var-display.exp Hi, I see the following fail on arm-none-eabi target, -var-evaluate-expression -f nat foo^M ^done,value="0x3 <_ftext+2>"^M (gdb) ^M FAIL: gdb.mi/mi-var-display.exp: eval variable -f nat foo the "<_ftext+2>" isn't expected in the test, so "set print symbol off" can prevent printing it. It is obvious and I'll commit it in three days if no comments. gdb/testsuite: 2014-09-09 Yao Qi * gdb.mi/mi-var-display.exp: Set print symbol off. commit 0a62cfe5676e271b40b5f85efeecbdd36d63a375 Author: Alan Modra Date: Tue Sep 9 09:31:20 2014 +0930 daily update commit 74fffc39827629fb48c9e24a7d12ebbd5693df4b Author: Jon TURNEY Date: Sat Aug 30 15:02:49 2014 +0100 Change pe/coff build-id section name to '.buildid' The section name used to store the build-id on pe/coff is arbitrary, as it's contents should be located using the pe/coff header's DataDirectory debug data entry, not by using the section name. But '.build-id' is not a good choice for that section name, as it is 9 characters long, and hence truncated to 8 characters when --disable-long-section-names is used (which is the default, when producing an executable with no dwarf debug sections, e.g. using ld --strip-all --build-id) This truncation then breaks 'objcopy --only-keep-debug', which does use the section name, due to concerns that keeping an arbitrary section which contains the debug directory is not sensible. binutils/ChangeLog 2014-09-01 Jon TURNEY * objcopy.c (is_nondebug_keep_contents_section): Change pe/coff build-id section name from '.build-id' to '.buildid'. ld/ChangeLog 2014-09-01 Jon TURNEY * emultempl/pe.em (write_build_id, setup_build_id): Change pe/coff build-id section name from '.build-id' to '.buildid'. * emultempl/pep.em (write_build_id, setup_build_id): Ditto. Signed-off-by: Jon TURNEY commit 2e4bb98a0e52acbb2da4ae441b89a568af26adf8 Author: Edjunior Barbosa Machado Date: Mon Sep 8 13:37:23 2014 -0300 Fix ppc_collect/supply_ptrace_register() routines This patch fixes the routines to collect and supply ptrace registers on ppc64le gdbserver. Originally written for big endian arch, they were causing several issues on little endian. With this fix, the number of unexpected failures in the testsuite dropped from 263 to 72 on ppc64le. gdb/gdbserver/ChangeLog * linux-ppc-low.c (ppc_collect_ptrace_register): Adjust routine to take endianness into account. (ppc_supply_ptrace_register): Likewise. commit 22af555fc2a2fceb7c58e23a174a34a16af79221 Author: Alan Modra Date: Mon Sep 8 09:30:39 2014 +0930 daily update commit a9f116cbf2fb9892ddbc46478b85ebfa99b0074f Author: Gabriel Krisman Bertazi Date: Sun Sep 7 20:12:19 2014 -0300 Fix PR gdb/17035: "show user" doesn't list user-defined commands that have empty bodies. User-defined commands that have empty bodies weren't being shown because the print function returned too soon. Now, it prints the command's name before checking if it has any body at all. This also fixes the same problem on "show user ", which wasn't being printed due to a similar reason. gdb/Changelog: * cli/cli-cmds.c (show_user): Use cli_user_command_p to decide whether we display the command on "show user". * cli/cli-script.c (show_user_1): Only verify cmdlines after printing command name. * cli/cli-decode.h (cli_user_command_p): Declare new function. * cli/cli-decode.c (cli_user_command_p): Create helper function to verify whether cmd_list_element is a user-defined command. gdb/testsuite/Changelog: * gdb.base/commands.exp: Add tests to verify user-defined commands with empty bodies. * gdb.python/py-cmd.exp: Test that we don't show user-defined python commands in `show user command`. * gdb.python/scm-cmd.exp: Test that we don't show user-defined scheme commands in `show user command`. commit c75bd3a23915c3122070a95e1974e323543ffbe4 Author: Jan Kratochvil Date: Sun Sep 7 14:09:59 2014 +0200 Fix crash on Python frame filters with unreadable arg https://bugzilla.redhat.com/show_bug.cgi?id=1126177 ERROR: AddressSanitizer: SEGV on unknown address 0x000000000050 (pc 0x000000992bef sp 0x7ffff9039530 bp 0x7ffff9039540 T0) #0 0x992bee in value_type .../gdb/value.c:925 #1 0x87c951 in py_print_single_arg python/py-framefilter.c:445 #2 0x87cfae in enumerate_args python/py-framefilter.c:596 #3 0x87e0b0 in py_print_args python/py-framefilter.c:968 It crashes because frame_arg::val is documented it may contain NULL (frame_arg::error is then non-NULL) but the code does not handle it. Another bug is that py_print_single_arg() calls goto out of its TRY_CATCH which messes up GDB cleanup chain crashing GDB later. It is probably 7.7 regression (I have not verified it) due to the introduction of Python frame filters. gdb/ChangeLog PR python/17355 * python/py-framefilter.c (py_print_single_arg): Handle NULL FA->VAL. Fix goto out of TRY_CATCH. gdb/testsuite/ChangeLog PR python/17355 * gdb.python/amd64-py-framefilter-invalidarg.S: New file. * gdb.python/py-framefilter-invalidarg-gdb.py.in: New file. * gdb.python/py-framefilter-invalidarg.exp: New file. * gdb.python/py-framefilter-invalidarg.py: New file. commit 3f9d8762a4b24873f22197d004a8710e9a8557ca Author: Alan Modra Date: Sun Sep 7 09:30:40 2014 +0930 daily update commit e319abb47d1accdffdce542eb9823d449fe43ef9 Author: Matthew Fortune Date: Tue Sep 2 08:25:23 2014 +0100 MIPS testsuite cleanup - part 4 ld/testsuite/ * ld-mips-elf/abiflags-strip1-ph.d: Ignore big/little endian differences. Ignore program headers other than PT_MIPS_ABIFLAGS. Do not force -32, -EB and ld emulation but instead rely on the test driver to build for some form of O32. * ld-mips-elf/abiflags-strip2-ph.d: Likewise. * ld-mips-elf/abiflags-strip3-ph.d: Likewise. * ld-mips-elf/abiflags-strip4-ph.d: Likewise. * ld-mips-elf/abiflags-strip5-ph.d: Likewise. * ld-mips-elf/abiflags-strip6-ph.d: Likewise. * ld-mips-elf/abiflags-strip7-ph.d: Likewise. * ld-mips-elf/abiflags-strip8-ph.d: Likewise. * ld-mips-elf/abiflags-strip9-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-0-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-05.d: Likewise. * ld-mips-elf/attr-gnu-4-06.d: Likewise. * ld-mips-elf/attr-gnu-4-07.d: Likewise. * ld-mips-elf/attr-gnu-4-1-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-10.d: Likewise. * ld-mips-elf/attr-gnu-4-15.d: Likewise. * ld-mips-elf/attr-gnu-4-16.d: Likewise. * ld-mips-elf/attr-gnu-4-17.d: Likewise. * ld-mips-elf/attr-gnu-4-2-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-25.d: Likewise. * ld-mips-elf/attr-gnu-4-26.d: Likewise. * ld-mips-elf/attr-gnu-4-27.d: Likewise. * ld-mips-elf/attr-gnu-4-3-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-35.d: Likewise. * ld-mips-elf/attr-gnu-4-36.d: Likewise. * ld-mips-elf/attr-gnu-4-37.d: Likewise. * ld-mips-elf/attr-gnu-4-4-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-45.d: Likewise. * ld-mips-elf/attr-gnu-4-46.d: Likewise. * ld-mips-elf/attr-gnu-4-47.d: Likewise. * ld-mips-elf/attr-gnu-4-5-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-50.d: Likewise. * ld-mips-elf/attr-gnu-4-51.d: Likewise. * ld-mips-elf/attr-gnu-4-52.d: Likewise. * ld-mips-elf/attr-gnu-4-53.d: Likewise. * ld-mips-elf/attr-gnu-4-54.d: Likewise. * ld-mips-elf/attr-gnu-4-55.d: Likewise. * ld-mips-elf/attr-gnu-4-56.d: Likewise. * ld-mips-elf/attr-gnu-4-57.d: Likewise. * ld-mips-elf/attr-gnu-4-58.d: Likewise. * ld-mips-elf/attr-gnu-4-6-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-60.d: Likewise. * ld-mips-elf/attr-gnu-4-61.d: Likewise. * ld-mips-elf/attr-gnu-4-62.d: Likewise. * ld-mips-elf/attr-gnu-4-63.d: Likewise. * ld-mips-elf/attr-gnu-4-64.d: Likewise. * ld-mips-elf/attr-gnu-4-65.d: Likewise. * ld-mips-elf/attr-gnu-4-66.d: Likewise. * ld-mips-elf/attr-gnu-4-67.d: Likewise. * ld-mips-elf/attr-gnu-4-68.d: Likewise. * ld-mips-elf/attr-gnu-4-7-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-70.d: Likewise. * ld-mips-elf/attr-gnu-4-71.d: Likewise. * ld-mips-elf/attr-gnu-4-72.d: Likewise. * ld-mips-elf/attr-gnu-4-73.d: Likewise. * ld-mips-elf/attr-gnu-4-74.d: Likewise. * ld-mips-elf/attr-gnu-4-75.d: Likewise. * ld-mips-elf/attr-gnu-4-76.d: Likewise. * ld-mips-elf/attr-gnu-4-77.d: Likewise. * ld-mips-elf/attr-gnu-4-78.d: Likewise. * ld-mips-elf/mips-elf.exp: Update default abi_asflags(o32) to explicitly pass -32 for the 'no abi' configurations. Modify the way attr-gnu* tests are run to use O32 flags appropriate for the current target. commit 87d87479629e0e50b0bcc69579d620a36e978a03 Author: Matthew Fortune Date: Tue Sep 2 08:25:23 2014 +0100 MIPS testsuite cleanup - part 3 gas/testsuite/ * gas/mips/attr-gnu-abi-fp-1.d: Relax expected output. * gas/mips/elf_ase_micromips-2.d: Likewise. * gas/mips/elf_ase_micromips.d: Likewise. * gas/mips/elf_ase_mips16-2.d: Likewise. * gas/mips/elf_ase_mips16.d: Likewise. * gas/mips/module-mfp32.d: Likewise. * gas/mips/module-msingle-float.d: Likewise. * gas/mips/module-msoft-float.d: Likewise. commit dc8cfd83b4e0c8cf04c0f9eaf63e3353f459d42a Author: Matthew Fortune Date: Tue Sep 2 08:25:23 2014 +0100 MIPS testsuite cleanup - part 2 gas/testsuite/ * gas/mips/module-defer-warn2.l: Ignore differences in output from 64-bit vs 32-bit targets using O32. commit b38b83dc8523d21c7648e706dc0245b4595b44b3 Author: Matthew Fortune Date: Tue Sep 2 08:25:23 2014 +0100 MIPS testsuite cleanup - part 1 binutils/testsuite/ * binutils-all/readelf.ss-mips: Account for new sections. gas/testsuite/ * gas/elf/type.e: Account for new sections. * gas/mips/mips16-e.d: Likewise. * gas/mips/mips16-f.d: Likewise. * gas/mips/mipsel16-e.d: Likewise. * gas/mips/mipsel16-f.d: Likewise. * gas/mips/tmips16-e.d: Appropriately escape dots. * gas/mips/tmips16-f.d: Likewise. * gas/mips/tmipsel16-e.d: Likewise. * gas/mips/tmipsel16-f.d: Likewise. commit 1a52a81ccd124db93f1124c0ac3325888ead4e9c Author: Doug Evans Date: Sat Sep 6 09:22:57 2014 -0700 Add missing author to previous entry (PR 15276). commit faa42425cb1f5cd279fc8c91d0b75d37853a128a Author: Doug Evans Date: Sat Sep 6 09:15:44 2014 -0700 PR 15276: Add $_caller_is, $_caller_matches, $_any_caller_is, $_any_caller_matches gdb/ChangeLog: PR 15276 * NEWS: Mention $_caller_is, $_caller_matches, $_any_caller_is, $_any_caller_matches. * data-directory/Makefile.in (PYTHON_FILE_LIST): Add caller_is.py. * python/lib/gdb/function/caller_is.py: New file. gdb/testsuite/ChangeLog: PR 15276 * gdb.python/py-caller-is.c: New file. * gdb.python/py-caller-is.exp: New file. gdb/doc/ChangeLog: PR 15276 * gdb.texinfo (Convenience Funs): Document $_caller_is, $_caller_matches, $_any_caller_is, $_any_caller_matches. commit 0d41ba00c60b5e0b66895cfa56c1db137a9345d8 Author: Doug Evans Date: Sat Sep 6 08:24:56 2014 -0700 infcmd.c (program_info): Fix typo. gdb/ChangeLog: * infcmd.c (program_info): Fix typo. commit cf07f4d983e42d71f149b82d8f23713732dd7534 Author: Alan Modra Date: Sat Sep 6 09:30:42 2014 +0930 daily update commit f8797b5ad9aa357d80578ce020e95f1c43de7c9a Author: Joel Brobecker Date: Fri Sep 5 12:19:56 2014 -0700 Regenerate top-level configure. Our top-level configure somehow got out of sync the current configure.ac, so this patch regenerates it. ChangeLog: * configure: Regenerate. commit 474ca4f6871d4addb7ce6a177245bce79c89550e Author: Sergio Durigan Junior Date: Fri Sep 5 15:21:44 2014 -0400 Fix for PR gdb/17235: possible bug extracting systemtap probe operand This patch is a fix to PR gdb/17235. The bug is about an unused variable that got declared and set during one of the parsing phases of an SDT probe's argument. I took the opportunity to rewrite some of the code to improve the parsing. The bug was actually a thinko, because what I wanted to do in the code was to discard the number on the string being parsed. During this portion, the code identifies that it is dealing with an expression that begins with a sign ('+', '-' or '~'). This means that the expression could be: - a numeric literal (e.g., '+5') - a register displacement (e.g., '-4(%rsp)') - a subexpression (e.g., '-(2*3)') So, after saving the sign and moving forward 1 char, now the code needs to know if there is a digit followed by a register displacement prefix operand (e.g., '(' on x86_64). If yes, then it is a register operation. If not, then it will be handled recursively, and the code will later apply the requested operation on the result (either a '+', a '-' or a '~'). With the bug, the code was correctly discarding the digit (though using strtol unnecessarily), but it wasn't properly dealing with subexpressions when the register indirection prefix was '(', like on x86_64. This patch also fixes this bug, and includes a testcase. It passes on x86_64 Fedora 20. commit 514104634d0efd8955f7fd45cd509963e28212f6 Author: Alan Modra Date: Fri Sep 5 09:31:04 2014 +0930 daily update commit ebf13736b42af47c9907b5157c8e80c78dbe00e1 Author: Pedro Alves Date: Thu Sep 4 21:46:28 2014 +0100 parse_number("0") reads uninitialized memory valgrind caught that parse_number reads uninitialized memory when we parse literal "0": $ valgrind ./gdb -q -nx -ex "set height 0" (...) ==10378== Conditional jump or move depends on uninitialised value(s) ==10378== at 0x548A10: parse_number (c-exp.y:1828) ==10378== by 0x54A340: lex_one_token (c-exp.y:2638) ==10378== by 0x54B4BB: c_lex (c-exp.y:3089) ==10378== by 0x544951: c_parse_internal (c-exp.c:2208) ==10378== by 0x54BF8C: c_parse (c-exp.y:3260) ==10378== by 0x6502E7: parse_exp_in_context_1 (parse.c:1221) ==10378== by 0x650064: parse_exp_in_context (parse.c:1122) ==10378== by 0x65001F: parse_exp_1 (parse.c:1114) ==10378== by 0x650421: parse_expression (parse.c:1266) ==10378== by 0x5A74B7: parse_and_eval_long (eval.c:92) ==10378== by 0x501ABD: do_set_command (cli-setshow.c:302) ==10378== by 0x721059: execute_command (top.c:452) ==10378== (gdb) I've pushed the obvious fix. Tested on x86_64 Fedora 20. gdb/ChangeLog: * c-exp.y (parse_number): Skip handling base-switching prefixes if the input is only one character long. commit eb0b04635f2f57506ab4365b32a6fc0b62920d2f Author: Sergio Durigan Junior Date: Thu Sep 4 10:28:31 2014 -0400 Fix PR fortran/17237: bug in f-valprint.c This commit fixes the PR mentioned in $subject. It is about a set but unused variable that refers to the output format of integer values printed in Fortran. This was probably a thinko (like most set-but-unused-vars), but it could cause an internal error depending on the scenario. I am sending a testcase which triggers this error as well. gdb/ChangeLog: 2014-09-04 Sergio Durigan Junior PR fortran/17237 * f-valprint.c (f_val_print): Specify the correct print option to use when printing integer values. gdb/testsuite/ChangeLog: 2014-09-04 Sergio Durigan Junior PR fortran/17237 * gdb.fortran/print-formatted.exp: New file. * gdb.fortran/print-formatted.f90: Likewise. commit 5ee44bfa6bdb8eaf7f30eccb4fbdc989cb9bb7ca Author: Gary Benson Date: Thu Sep 4 15:07:46 2014 +0100 Remove code to cope with LWPs wrapped as PIDs Historically the Linux x86 watchpoint code did not cope with multi- threaded processes and LWP IDs were passed to it wrapped as PIDs. Not all entry points were converted when the Linux x86 watchpoint code was made multi-thread-aware, so a handler was left in place to cope with wrapped LWPs. Since then all such entry points have been converted to pass regular LWPs and the handler is now redundant. This commit removes the handler and adds assertions to ensure no wrapped LWPs are passed in future. gdb/ChangeLog: * x86-linux-nat.c (x86_linux_dr_get, x86_linux_dr_set): Remove code to cope with LWPs wrapped as PIDs. Add assertions to ensure no wrapped LWPs are passed. commit 4875ffdbdaf7793524464c99baea1d8eb0cb7e34 Author: Pedro Alves Date: Thu Sep 4 12:12:41 2014 +0100 Regression for i686 gdb.dwarf2/pieces-optimized-out.exp Git 9a0dc9e3 regressed gdb.dwarf2/pieces-optimized-out.exp, visible on i686 (the test doesn't run on x86_64): (gdb) p s -$1 = {a = 5, b = , c = , d = } +$1 = {a = 5, b = , c = 0, d = 0} -(gdb) PASS: gdb.dwarf2/pieces-optimized-out.exp: print s +(gdb) FAIL: gdb.dwarf2/pieces-optimized-out.exp: print s The regression was caused by this removal in cp-valprint.c: @@ -293,12 +293,6 @@ cp_print_value_fields (struct type *type, struct type *real_type, { fputs_filtered (_(""), stream); } - else if (!value_bits_valid (val, - TYPE_FIELD_BITPOS (type, i), - TYPE_FIELD_BITSIZE (type, i))) - { - val_print_optimized_out (val, stream); - } else { struct value_print_options opts = *options; The idea was that we'd just fallback to calling value_field_bitfield, which handles unavailable values (in unpack_value_bits_as_long_1) so should be able to handle optimized out values too. Alas, it doesn't. This is currently a bit too messy. Instead of teaching unpack_value_bits_as_long_1 about optimized out bits, let's bite the bullet and teach the value code to handle partially optimized out bitfield, by having it unpack a bitfield and then propagate the range metadata. Turns out the resulting code looks simpler and clearer. Tested on x86_64 Fedora 20, -m64/-m32. gdb/ChangeLog: * value.c (value_ranges_copy_adjusted): New function, factored out from ... (value_contents_copy_raw): ... here. (unpack_value_bits_as_long_1): Rename back to ... (unpack_bits_as_long): ... this. Remove 'original_value' and 'result' parameters. Change return type to LONGEST. (unpack_value_bits_as_long): Delete. (unpack_value_field_as_long_1): Delete. (unpack_value_field_as_long, unpack_field_as_long): Reimplement. (unpack_value_bitfield): New function. (value_field_bitfield): Reimplement using unpack_value_bitfield. (value_fetch_lazy): Use unpack_value_bitfield. * value.h (unpack_value_bits_as_long): Delete declaration. commit b138b7a9ed2564a8b1420f338d9f71cc3cf28880 Author: Matthew Fortune Date: Thu Sep 4 09:38:45 2014 +0100 MIPS: Update the list of addr32 targets gas/testsuite/ * gas/mips/mips.exp: Add mipsisa32 and mipsisa32el to the list of addr32 targets. commit 38a1a52644f83359d132660966f820972edcd43b Author: Alan Modra Date: Thu Sep 4 09:30:40 2014 +0930 daily update commit 1a6a384be101ba422f6d3deba014dabe38cdb7a1 Author: Justin Lebar Date: Wed Sep 3 16:40:22 2014 -0700 Improve Type.template_argument docs in Python API. gdb/doc/ChangeLog: * python.texi (Types In Python): Type.template_argument(n) returns a gdb.Value or a gdb.Type and throws an exception if n is out of range. commit 5f3b99cfed3803f0b099152f54aac7cb90a2b926 Author: Sasha Smundak Date: Wed Sep 3 16:34:47 2014 -0700 Add support for reading frame registers to Python API. The ability to read registers is needed to use Frame Filter API to display the frames created by JIT compilers. gdb/ChangeLog: 2014-08-29 Sasha Smundak * python/py-frame.c (frapy_read_register): New function. gdb/doc/ChangeLog: 2014-08-26 Sasha Smundak * python.texi (Frames in Python): Add read_register description. gdb/testsuite/ChangeLog: 2014-08-26 Sasha Smundak * gdb.python/py-frame.exp: Test Frame.read_register. commit ac740bc7a9103a561329ebf7aa05ff31bcab2267 Author: James Hogan Date: Mon Sep 1 22:48:40 2014 +0100 Reset errno before PTRACE_PEEKUSER for MIPS DSP_CONTROL PTRACE_PEEKUSER can return -1, which is usually used to determine whether a system call has reported an error, so errno must be used alone to determine whether an error occurred. However errno isn't modified by a successful system call so it must be reset to a known value (0) before the syscall call. Add the missing errno reset when reading the DSP_CONTROL register in the native MIPS Linux backend and the MIPS gdbserver backend. gdb/: * mips-linux-nat.c (mips_linux_read_description): Reset errno to 0 prior to reading DSP_CONTROL with PTRACE_PEEKUSER ptrace call. gdb/gdbserver/: * linux-mips-low.c (mips_read_description): Reset errno to 0 prior to reading DSP_CONTROL with PTRACE_PEEKUSER ptrace call. commit 7d793aa9f0986828d5dde8f3811a7adafc38b6b4 Author: Sergio Durigan Junior Date: Wed Sep 3 16:30:28 2014 -0400 PR python/16699: GDB Python command completion with overriden complete vs. completer class This PR came from a Red Hat bug that was filed recently. I checked and it still exists on HEAD, so here's a proposed fix. Although this is marked as a Python backend bug, this is really about the completion mechanism used by GDB. Since this code reminds me of my first attempt to make a good noodle, it took me quite some time to fix it in a non-intrusive way. The problem is triggered when one registers a completion method inside a class in a Python script, rather than registering the command using a completer class directly. For example, consider the following script: class MyFirstCommand(gdb.Command): def __init__(self): gdb.Command.__init__(self,'myfirstcommand',gdb.COMMAND_USER,gdb.COMPLETE_FILENAME) def invoke(self,argument,from_tty): raise gdb.GdbError('not implemented') class MySecondCommand(gdb.Command): def __init__(self): gdb.Command.__init__(self,'mysecondcommand',gdb.COMMAND_USER) def invoke(self,argument,from_tty): raise gdb.GdbError('not implemented') def complete(self,text,word): return gdb.COMPLETE_FILENAME MyFirstCommand () MySecondCommand () When one loads this into GDB and tries to complete filenames for both myfirstcommand and mysecondcommand, she gets: (gdb) myfirstcommand /hom (gdb) myfirstcommand /home/ ^ ... (gdb) mysecondcommand /hom (gdb) mysecondcommand /home ^ (The "^" marks the final position of the cursor after the TAB). So we see that myfirstcommand honors the COMPLETE_FILENAME class (as specified in the command creation), but mysecondcommand does not. After some investigation, I found that the problem lies with the set of word break characters that is used for each case. The set should be the same for both commands, but it is not. During the process of deciding which type of completion should be used, the code in gdb/completer.c:complete_line_internal analyses the command that requested the completion and tries to determine the type of completion wanted by checking which completion function will be called (e.g., filename_completer for filenames, location_completer for locations, etc.). This all works fine for myfirstcommand, because immediately after the command registration the Python backend already sets its completion function to filename_completer (which then causes the complete_line_internal function to choose the right set of word break chars). However, for mysecondcommand, this decision is postponed to when the completer function is evaluated, and the Python backend uses an internal completer (called cmdpy_completer). complete_line_internal doesn't know about this internal completer, and can't choose the right set of word break chars in time, which then leads to a bad decision when completing the "/hom" word. So, after a few attempts, I decided to create another callback in "struct cmd_list_element" that will be responsible for handling the case when there is an unknown completer function for complete_line_internal to work with. So far, only the Python backend uses this callback, and only when the user provides a completer method instead of registering the command directly with a completer class. I think this is the best option because it not very intrusive (all the other commands will still work normally), but especially because the whole completion code is so messy that it would be hard to fix this without having to redesign things. I have regtested this on Fedora 18 x86_64, without regressions. I also included a testcase. gdb/ChangeLog: 2014-09-03 Sergio Durigan Junior PR python/16699 * cli/cli-decode.c (set_cmd_completer_handle_brkchars): New function. (add_cmd): Set "completer_handle_brkchars" to NULL. * cli/cli-decode.h (struct cmd_list_element) : New field. * command.h (completer_ftype_void): New typedef. (set_cmd_completer_handle_brkchars): New prototype. * completer.c (set_gdb_completion_word_break_characters): New function. (complete_line_internal): Call "completer_handle_brkchars" callback from command. * completer.h: Include "command.h". (set_gdb_completion_word_break_characters): New prototype. * python/py-cmd.c (cmdpy_completer_helper): New function. (cmdpy_completer_handle_brkchars): New function. (cmdpy_completer): Adjust to use cmdpy_completer_helper. (cmdpy_init): Set completer_handle_brkchars to cmdpy_completer_handle_brkchars. gdb/testsuite/ChangeLog: 2014-09-03 Sergio Durigan Junior PR python/16699 * gdb.python/py-completion.exp: New file. * gdb.python/py-completion.py: Likewise. commit 62661c935d1f299e8f9daeebd5559cd1c2d84712 Author: Sasa Stankovic Date: Wed Sep 3 09:44:11 2014 -0700 Add NaCl (NativeClient) specific classes Target_mips_nacl and Target_selector_mips_nacl. gold/ * mips.cc (Target_mips_nacl): New class. (Target_selector_mips_nacl): New class. (target_selector_mips32): Rename from target_selector_mips32be and use Target_selector_mips_nacl instead of Target_selector_mips. (target_selector_mips32el): Rename from target_selector_mips32 and use Target_selector_mips_nacl instead of Target_selector_mips. (target_selector_mips64): Rename from target_selector_mips64be and use Target_selector_mips_nacl instead of Target_selector_mips. (target_selector_mips64el): Rename from target_selector_mips64 and use Target_selector_mips_nacl instead of Target_selector_mips. (Target_mips::mips_info): Add const attribute. commit df7b4545b2b49572ab63690c130df973af109615 Author: Jiong Wang Date: Wed Sep 3 14:45:26 2014 +0100 [PATCH/AArch64] Generic support for all system registers using mrs and msr 2014-09-03 Jiong Wang opcode/ * aarch64-tbl.h (aarch64_opcode_table): Update encoding for mrs/msr. * aarch64-dis-2.c: Update auto-generated file. gas/ * config/tc-aarch64.c (parse_sys_reg): Remove the restriction on op0 field. gas/testsuite/ * gas/aarch64/illegal.s: Update testcase. * gas/aarch64/illegal.d: Likewise. * gas/aarch64/sysreg-1.s: Likewise. * gas/aarch64/sysreg-1.d: Likewise. commit ee804238f097e91088a340c15891170f2748b4fd Author: Jiong Wang Date: Wed Sep 3 14:40:41 2014 +0100 [PATCH/AArch64] Implement LSE feature 2014-09-03 Jiong Wang gas/ * config/tc-aarch64.c (parse_operands): Recognize PAIRREG. (aarch64_features): Add entry for lse extension. include/opcode/ * aarch64.h (AARCH64_FEATURE_LSE): New feature added. (aarch64_opnd): Add AARCH64_OPND_PAIRREG. (aarch64_insn_class): Add lse_atomic. (F_LSE_SZ): New field added. (opcode_has_special_coder): Recognize F_LSE_SZ. opcode/ * aarch64-tbl.h (QL_R4NIL): New qualifiers. (aarch64_feature_lse): New feature added. (LSE): New Added. (aarch64_opcode_table): New LSE instructions added. Improve descriptions for ldarb/ldarh/ldar. (aarch64_opcode_table): Describe PAIRREG. * aarch64-opc.h (aarch64_field_kind): Add FLD_lse_sz. * aarch64-opc.c (fields): Add entry for F_LSE_SZ. (aarch64_print_operand): Recognize PAIRREG. (operand_general_constraint_met_p): Check reg pair constraints for CASP instructions. * aarch64-dis.c (aarch64_ext_regno_pair): New extractor for paired reg. (do_special_decoding): Recognize F_LSE_SZ. * aarch64-asm.c (do_special_encoding): Recognize F_LSE_SZ. gas/testsuite/ * gas/aarch64/lse-atomic.d: New. * gas/aarch64/lse-atomic.s: Likewise. * gas/aarch64/illegal-lse.d: Likewise. * gas/aarch64/illegal-lse.l: Likewise. * gas/aarch64/illegal-lse.s: Likewise. * gas/aarch64/diagnostic.s: Check processor feature detect for lse instruction. * gas/aarch64/diagnostic.l: Likewise. commit 97ea6506c45ab5519483a0221fdc049038496492 Author: Gary Benson Date: Wed Sep 3 12:05:50 2014 +0100 x86 debug address register clarifications The loop macro ALL_DEBUG_REGISTERS does not iterate over the status or control registers, so its name is misleading. This commit renames it as ALL_DEBUG_ADDRESS_REGISTERS and updates all uses. This commit also updates its loop conditions to an equivalent but better form, and makes two functions use it that had previously hardwired the loop. A comment on a related field in the x86_debug_reg_state structure is also updated to reflect that the field refers specifically to address registers only. gdb/ChangeLog: * nat/x86-dregs.h (ALL_DEBUG_REGISTERS): Renamed as... (ALL_DEBUG_ADDRESS_REGISTERS): New macro. All uses updated. Loop conditions changed to equivalent form. (struct x86_debug_reg_state): Updated dr_ref_count comment. * x86-linux-nat.c (x86_linux_prepare_to_resume): Use ALL_DEBUG_ADDRESS_REGISTERS. gdb/gdbserver/ChangeLog: * linux-x86-low.c (x86_linux_prepare_to_resume): Use ALL_DEBUG_ADDRESS_REGISTERS. commit d14378154883eb1ae5373e7a73edcc9d97e62634 Author: Joel Brobecker Date: Wed Sep 3 10:07:46 2014 +0200 Fix dwarf2loc.h::dwarf2_evaluate_property function description. gdb/ChangeLog: * dwarf2loc.h (dwarf2_evaluate_property): Minor function description fix. commit 7db018e4e0030026256f30bc1fb02c9f18c2d677 Author: Alan Modra Date: Wed Sep 3 09:30:52 2014 +0930 daily update commit 9b94fcf1fae8ceb869e5e13ba66355e969680a3a Author: Doug Evans Date: Tue Sep 2 16:29:16 2014 -0700 typeprint.c (find_global_typedef): Fix comment. gdb/ChangeLog: * typeprint.c (find_global_typedef): Fix comment. commit 54674d38930c7da1af518510fede6f700f5ca596 Author: Cary Coutant Date: Wed Jul 2 16:12:51 2014 -0700 Make Elf_file::section_name() a const function, so that it can be used in places where we have only a const Elf_file*. elfcpp/ * elfcpp_file.h (Elf_file::shnum): New const function. (Elf_file::shstrndx): New const function. (Elf_file::large_shndx_offset): New const function. (Elf_file::section_name): Add const attribute. (Elf_file::section_header_offset): Likewise. gold/ * dwp.cc (Sized_relobj_dwo::do_section_name): Add const attribute. * dynobj.h (Sized_dynobj::do_section_name): Likewise. * incremental.cc (Sized_relobj_incr::do_section_name): Likewise. (Sized_incr_dynobj::do_section_name): Likewise. * incremental.h (Sized_relobj_incr::do_section_name): Likewise. (Sized_incr_dynobj::do_section_name): Likewise. * object.h (Object::section_name): Likewise. (Object::do_section_name): Likewise. (Sized_relobj_file::do_section_name): Likewise. * plugin.cc (Sized_pluginobj::do_section_name): Likewise. * plugin.h (Sized_pluginobj::do_section_name): Likewise. commit 9860cbcfb60bdae2f9800e6a6ea5f21ef1507d08 Author: Cary Coutant Date: Wed Jul 2 09:39:41 2014 -0700 Fix problem with optimization of .eh_frame section and --sort-section option. When --sort-section=name is used, gold will sort the linker-generated contents of .eh_frame (after optimization) after the endcap provided by crtendS.o. This causes two problems: the .eh_frame_hdr section is generated assuming that the optimized .eh_frame contents will be placed at the very beginning of the section, and the endcap no longer appears at the end of the section. This patch fixes the first problem by adjusting FDE offsets to take into account the actual starting offset within the output section, and fixes the second problem by sorting linker-generated (Output_section_data) sections based on the name of the output section. gold/ PR gold/17005 * ehframe.cc (Fde::write): Add output_offset parameter. (Cie::write): Likewise. (Eh_frame::set_final_data_size): Account for offset within output section. (Eh_frame::do_sized_write): Likewise. * ehframe.h (Fde::write): Add output_offset parameter. (Cie::write): Likewise. * output.cc (Output_section::Input_section_sort_entry): Remove section_has_name_; add output_section_name parameter. Use output section name for non-input sections. (Output_section::Input_section_sort_entry::section_has_name): Remove. (Output_section::Input_section_sort_entry::section_has_name_): Remove. (Output_section::Input_section_sort_compare): Remove logic for sections without names. (Output_section::Input_section_sort_init_fini_compare): Likewise. (Output_section::Input_section_sort_section_prefix_special_ordering_compare): Likewise. (Output_section::Input_section_sort_section_name_compare): Likewise. commit df7e526582809b829ee8651a1315a17627cfea4d Author: Gary Benson Date: Tue Aug 19 15:16:11 2014 +0100 Rename 32- and 64-bit Intel files from "i386" to "x86" This commit renames nine files that contain code used by both 32- and 64-bit Intel ports such that their names are prefixed with "x86" rather than "i386". All types, functions and variables within these files are likewise renamed such that their names are prefixed with "x86" rather than "i386". This makes GDB follow the convention used by gdbserver such that 32-bit Intel code lives in files called "i386-*", 64-bit Intel code lives in files called "amd64-*", and code for both 32- and 64-bit Intel lives in files called "x86-*". This commit only renames OS-independent files. The Linux ports of both GDB and gdbserver now follow the i386/amd64/x86 convention fully. Some ports still use the old convention where "i386" in file/function/ type/variable names can mean "32-bit only" or "32- and 64-bit" but I don't want to touch ports I can't fully test except where absolutely necessary. gdb/ChangeLog: * i386-nat.h: Renamed as... * x86-nat.h: New file. All type, function and variable name prefixes changed from "i386_" to "x86_". All references updated. * i386-nat.c: Renamed as... * x86-nat.c: New file. All type, function and variable name prefixes changed from "i386_" to "x86_". All references updated. * common/i386-xstate.h: Renamed as... * common/x86-xstate.h: New file. All type, function and variable name prefixes changed from "i386_" to "x86_". All references updated. * nat/i386-cpuid.h: Renamed as... * nat/x86-cpuid.h: New file. All type, function and variable name prefixes changed from "i386_" to "x86_". All references updated. * nat/i386-gcc-cpuid.h: Renamed as... * nat/x86-gcc-cpuid.h: New file. All type, function and variable name prefixes changed from "i386_" to "x86_". All references updated. * nat/i386-dregs.h: Renamed as... * nat/x86-dregs.h: New file. All type, function and variable name prefixes changed from "i386_" to "x86_". All references updated. * nat/i386-dregs.c: Renamed as... * nat/x86-dregs.c: New file. All type, function and variable name prefixes changed from "i386_" to "x86_". All references updated. gdb/gdbserver/ChangeLog: * i386-low.h: Renamed as... * x86-low.h: New file. All type, function and variable name prefixes changed from "i386_" to "x86_". All references updated. * i386-low.c: Renamed as... * x86-low.c: New file. All type, function and variable name prefixes changed from "i386_" to "x86_". All references updated. commit ed859da732b00d5928f0b311454fa6474c04c15b Author: Gary Benson Date: Tue Sep 2 16:28:54 2014 +0100 Use XCNEW rather than xcalloc (1, ...) in linux-x86-low.c This commit replaces two uses of xcalloc (1, ...) with XCNEW. gdb/gdbserver/ChangeLog: * linux-x86-low.c (x86_linux_new_process): Use XCNEW. (x86_linux_new_thread): Likewise. commit f1fb1cd70ad4b68c23b3fb5f20dd9559b3e3b7ea Author: Alan Modra Date: Tue Sep 2 09:30:41 2014 +0930 daily update commit 1c3569d4671201a9473e4b7af353a2c339027df1 Author: Maciej W. Rozycki Date: Mon Sep 1 15:09:59 2014 +0100 Move `_initialize_varobj' to the end of varobj.c * varobj.c (_initialize_varobj): Move to the end of file. commit e36bf698787936b2412e05007dfe77dee98ed2e8 Author: Alan Modra Date: Mon Sep 1 09:30:42 2014 +0930 daily update commit d126d60cdc1ccafb2e5ce58d868a94dad5315f9c Author: Alan Modra Date: Sun Aug 31 09:30:41 2014 +0930 daily update commit 8e33481e13facdf33c732e25d18b4b9772cc4e9c Author: Han Shen Date: Fri Aug 29 17:53:03 2014 -0700 The 3rd patch for aarch64 gold. This enables - 1. static linking hello world 2. limited support for TLSIE and TLSLE 3. limited support for linking shared library, linking executable against shared library. gold/ChangeLog 2014-08-29 Han Shen Jing Yu * aarch64-reloc-property.cc (AArch64_reloc_property_table::reloc_name_in_error_message): Fix bug in reference reloc property in the table. * aarch64-reloc.def: Add TLSLE reloc types and fix some errors in 3 other entries. * aarch64.cc: (Output_data_got_aarch64::add_static_reloc): 2 new overloaded methods. (Output_data_got_aarch64::do_write): Add code to write out static relocs. (class Output_data_got_aarch64::Static_reloc): New class to wrap static relocs. (Output_data_got_aarch64::static_relocs): New vector to hold static relocs. (Target_aarch64::TCB_SIZE): New const static memeber. (Target_aarch64::tcb_size): New method. (Target_aarch64::Relocate::relocate): Add code handling new reloc types. (Target_aarch64::Relocate::relocate_tls): New method. (Target_aarch64::Scan::local): Add code handling new reloc types. (Target_aarch64::Scan::global): Add code handling new reloc types. commit 6128f9cf2b2c4188145faba45596ce49dd0f08be Author: Alan Modra Date: Sat Aug 30 09:44:47 2014 +0930 ppc476 patch area size miscalculation ppc476 sections that end exactly on a page boundary need the workaround applied when a function ends in "bctr", or when pasting together code from multiple sections. The space allocated for the patch area didn't allow for this case, while the code in relocate_section performing the patches did, leading to an assertion failure. * elf32-ppc.c (ppc_elf_relax_section): Fix off by one error. commit 70cc888ddc8b51e5a2cf030941446f0373681463 Author: Alan Modra Date: Sat Aug 30 09:30:43 2014 +0930 daily update commit 860789c7d5d6ef2f60e757feb21845bb230582a8 Author: Gary Benson Date: Fri Aug 8 15:37:41 2014 +0100 Use exceptions and cleanups in gdbserver This commit replaces the hacky "exception" system in gdbserver with the exceptions and cleanups subsystem from GDB. Only the catch/cleanup code in what was "main" has been updated to use the new system. Other parts of gdbserver can now be converted to use TRY_CATCH and cleanups on an as-needed basis. A side-effect of this commit is that some error messages will change slightly, and in cases with multiple errors the error messages will be printed in a different order. gdb/gdbserver/ChangeLog: * server.h (setjmp.h): Do not include. (toplevel): Do not declare. (common-exceptions.h): Include. (cleanups.h): Likewise. * server.c (toplevel): Do not define. (exit_code): New static global. (detach_or_kill_for_exit_cleanup): New function. (main): New function. Original main renamed to... (captured_main): New function. * utils.c (verror) [!IN_PROCESS_AGENT]: Use throw_verror. commit ff55e1b54898ca4e2a90c005749505e33e32215c Author: Gary Benson Date: Thu Aug 7 16:29:19 2014 +0100 Introduce common/common-exceptions.[ch] This commit moves the exception throwing and catching code into gdb/common/. All exception printing code remains in gdb/exceptions.[ch]. gdb/ChangeLog: * common/common-exceptions.h: New file. * common/common-exceptions.c: Likewise. * Makefile.in (SFILES): Add common/common-exceptions.c. (HFILES_NO_SRCDIR): Add common/common-exceptions.h. (COMMON_OBS): Add common-exceptions.o. (common-exceptions.o): New rule. * exceptions.h (common-exceptions.h): Include. (gdb_setjmp.h): Do not include. (return_reason): Moved to common-exceptions.h. (enum return_reason): Likewise. (RETURN_MASK): Likewise. (typedef return_mask): Likewise. (enum errors): Likewise. (struct gdb_exception): Likewise. (exceptions_state_mc_init): Likewise. (exceptions_state_mc_action_iter): Likewise. (exceptions_state_mc_action_iter_1): Likewise. (TRY_CATCH): Likewise. (throw_exception): Likewise. (throw_verror): Likewise. (throw_vquit): Likewise. (throw_error): Likewise. (throw_quit): Likewise. * exceptions.c (enum catcher_state): Moved to common-exceptions.c. (enum catcher_action): Likewise. (struct catcher): Likewise. (current_catcher): Likewise. (catcher_list_size): Likewise. (exceptions_state_mc_init): Likewise. (catcher_pop): Likewise. (exceptions_state_mc): Likewise. (exceptions_state_mc_action_iter): Likewise. (exceptions_state_mc_action_iter_1): Likewise. (throw_exception): Likewise. (exception_messages): Likewise. (exception_messages_size): Likewise. (throw_it): Likewise. (throw_verror): Likewise. (throw_vquit): Likewise. (throw_error): Likewise. (throw_quit): Likewise. (prepare_to_throw_exception): New function. gdb/gdbserver/ChangeLog: * Makefile.in (SFILES): Add common/common-exceptions.c. (OBS): Add common-exceptions.o. (common-exceptions.o): New rule. * utils.c (prepare_to_throw_exception): New function. commit e9bcb6585201ab674d90d714295f63b40da41f16 Author: Gary Benson Date: Thu Aug 7 15:53:21 2014 +0100 Introduce common/gdb_setjmp.h This commit creates a new file, common/gdb_setjmp.h, to hold some portability macros for setjmp/longjmp et al. that are used by the exceptions subsystem and by the demangler crash catcher. gdb/ChangeLog: * common/gdb_setjmp.h: New file. * Makefile.in (HFILES_NO_SRCDIR): Add common/gdb_setjmp.h. * configure.ac: Move sigsetjmp check... * common/common.m4: ...here. * configure: Regenerate. * cp-support.c (SIGJMP_BUF): Delete. (SIGSETJMP): Likewise. (SIGLONGJMP): Likewise. * exceptions.h (gdb_setjmp.h): Include. (setjmp.h): Do not include. (EXCEPTIONS_SIGJMP_BUF): Delete. (EXCEPTIONS_SIGSETJMP): Likewise. (EXCEPTIONS_SIGLONGJMP): Likewise. Replace all uses of EXCEPTIONS_SIG* macros with SIG* macros from gdb_setjmp.h. * exceptions.c: Likewise. gdb/gdbserver/ChangeLog: * config.in: Regenerate. * configure: Likewise. commit e31806255fe0cf49a1eeb14a51788473eaaa6310 Author: Gary Benson Date: Mon Aug 4 11:37:44 2014 +0100 Move cleanups.[ch] to common This commit moves cleanups.[ch] into gdb/common/. The only change to the content of the files is that cleanups.c's include list was altered to match its new location. gdb/ChangeLog: * cleanups.h: Moved to... * common/cleanups.h: New file. * cleanups.c: Moved to... * common/cleanups.c: New file. Include common-defs.h and cleanups.h. Do not include defs.h. * Makefile.in (SFILES): Replace cleanups.c with common/cleanups.c. (HFILES_NO_SRCDIR): Replace cleanups.h with common/cleanups.h. (cleanups.o): New rule. gdb/gdbserver/ChangeLog: * Makefile.in (SFILES): Add common/cleanups.c. (OBS): cleanups.o. (cleanups.o): New rule. commit e3d6ba5d322d871004e84b936e6509749a350325 Author: Gary Benson Date: Mon Aug 4 12:04:02 2014 +0100 Move internal_{,v}warning to common/errors.[ch] This commit moves internal_warning and internal_vwarning into common/errors.[ch]. gdb/ChangeLog: * common/errors.h (internal_warning): New declaration. (internal_vwarning): Likewise. * common/errors.c (internal_warning): New function. * utils.h (internal_warning): Don't declare. (internal_vwarning): Likewise. * utils.c (internal_warning): Removed. gdb/gdbserver/ChangeLog: * utils.c (internal_vwarning): New function. commit 075c703382f5bed4ec0976dd11f3b5b694ce3cb1 Author: Gary Benson Date: Tue Aug 5 16:18:51 2014 +0100 Unify startup and option-parsing warnings Various warnings are emitted during startup and option-parsing using fprintf_unfiltered. One warning is prefixed with the command name, the others are not. This commit replaces these hardwired warnings with calls to warning. It also sets warning_pre_print to prefix all warnings with the command name until option parsing is complete. gdb/ChangeLog: * main.c (captured_main): Use warning during startup. Prefix startup warning messages with command name. commit 91b35fd05c777ffba9b1738711d470977779c687 Author: Gary Benson Date: Tue Aug 5 16:12:01 2014 +0100 Replace all usage errors with calls to error This commit replaces the hardwired fprintf/exit error handlers for usage errors with calls to error. gdb/ChangeLog: * main.c (captured_main): Handle usage errors with error. commit b1ec390e096983dea311a853c412494a4991153e Author: Gary Benson Date: Mon Aug 4 14:44:56 2014 +0100 Replace hardwired error handler in go32_create_inferior go32_create_inferior invokes a hardwired fprintf/exit error handler if v2loadimage fails. I could find no reason for this other than that the block seems to have been copy-and-pasted from v2loadimage's manpage. This commit replaces the hardwired handler with a call to error. gdb/ChangeLog: * go32-nat.c (go32_create_inferior): Replace a fprintf/ exit pair with a call to error. Wrap the message with _(). commit fd0ef3dda9fa7af181d059e4b3e26c17c1385c0d Author: Gary Benson Date: Mon Aug 4 14:08:46 2014 +0100 Replace hardwired error handler in captured_main If the requested interpreter cannot be set captured_main reports the error with a hardwired fprintf/exit pair. A fprintf/exit pair on the previous line was replaced with a call to error in March 2003 (https://sourceware.org/ml/gdb-patches/2003-03/msg00444.html) but I found no documentation as to why this particular hardwired handler was left untouched. I was also unable to come up with a situation where error would not be suitable, so I have replaced it with a call to error. gdb/ChangeLog: * main.c (captured_main): Replace a fprintf/exit pair with a call to error. Wrap the message with _(). commit e0e6bcab5971ea4ad7c4f2efa5c8164c8383caf6 Author: Gary Benson Date: Mon Aug 4 14:03:21 2014 +0100 Replace hardwired error handlers in tui_initialize_io tui_initialize_io contains a pair of hardwired fprintf/exit error handlers. I was unable to find any documentation as to why they're hardwired (the code appeared in a monolithic block back in 2001: https://sourceware.org/ml/gdb-patches/2001-07/msg00490.html) and I was also unable to come up with a situation where error would not be suitable, so I have replaced both handlers with calls to error. gdb/ChangeLog: * tui/tui-io.c (tui_initialize_io): Replace two fprintf/exit pairs with calls to error. Wrap the message with _(). commit 0d2f5c0791fda17ebbc503c5e7716fcb619318fc Author: Gary Benson Date: Tue Aug 5 13:27:49 2014 +0100 Make warning usable earlier warning will crash if called before the first call to set_width. This commit makes the warning usable from the moment gdb_stderr is set up. gdb/ChangeLog: * utils.c (vwarning): Protect calls to target_terminal_ours and wrap_here. commit 5df43998152f7096f8eed45c24a4fad5a3244d8b Author: Gary Benson Date: Tue Aug 5 13:25:48 2014 +0100 Make error usable earlier error (and other exception-throwing functions) are callable from the first line of captured_main, but the exception printing code will crash if called before the first call to set_width. This commit makes the exception printing code usable from the moment gdb_stderr is set up. gdb/ChangeLog: * exceptions.c (print_flush): Protect calls to target_terminal_ours and wrap_here. commit 2437fd32f17cb11338949cff1fd0741e14ce1681 Author: Gary Benson Date: Tue Aug 5 11:42:21 2014 +0100 Make internal_vproblem always work internal_vproblem can be called (via malloc_failure) from almost the first line of captured_main, but it will crash if called before the first call to set_width. This commit makes internal_vproblem work at any time. There are two parts to this. If called before gdb_stderr is set up, internal_vproblem will fall back to printing the message on regular stderr and aborting. If called after gdb_stderr is set up but before filtered printing is set up, internal_vproblem will operate as usual except that it can not query whether to quit and/or dump core so it defaults to doing both. gdb/ChangeLog: * utils.h (filtered_printing_initialized): New declaration. * utils.c (abort_with_message): New function. (internal_vproblem): Use abort_with_message for first level recursive internal problems, and if gdb_stderr is not set up. Protect calls to target_terminal_ours, begin_line and query. commit 4805fc5533c158766d04f58af62bea884d624421 Author: Alan Modra Date: Fri Aug 29 10:52:50 2014 +0930 PowerPC64 call lacks nop error * elf64-ppc.c (ppc64_elf_relocate_section): Report a different error for calls via a toc adjusting stub without a nop. commit b138affb0262cc600485a93d4fa8cfc7491dbde9 Author: Alan Modra Date: Fri Aug 29 10:37:52 2014 +0930 Prevent alpha_vms_object_p stopping bfd_check_format_matches scan Any error other than bfd_error_wrong_format returned from object_p() is effectively a fatal error. * vms-alpha.c (alpha_vma_object_p): Don't return file_truncated error. Remove redundant bfd_set_error. commit bd25671c6f202c4a5108883caa2adb24ff6f361f Author: Alan Modra Date: Fri Aug 29 10:36:29 2014 +0930 Report an error for S-records with less than the miniumum size * srec.c (srec_scan): Revert last change. Report an error for S-records with less than the miniumum byte count. commit 5a1431e66e1cebb5b4bbc6355804d8a00a4c8d74 Author: Alan Modra Date: Fri Aug 29 10:27:44 2014 +0930 Fix testsuite ld_simple_link_defsyms for windows targets * lib/ld-lib.exp (ld_simple_link_defsyms): Provide both __main and ___main for windows targets. commit 53e989de2657a687ae1c06a973957651ed2ab943 Author: Alan Modra Date: Fri Aug 29 09:30:41 2014 +0930 daily update commit f1f58506e2b52740916fa233d3b223733e3847cf Author: Doug Evans Date: Thu Aug 28 16:15:23 2014 -0700 Move definition of some prologue-related functions to a better location. gdb/ChangeLog: * symtab.c (in_prologue): Move definition to better spot. (skip_prologue_using_sal): Ditto. commit aab2f20890b9252f88a157611df14e79902e02b6 Author: Doug Evans Date: Thu Aug 28 16:09:50 2014 -0700 symtab.c (find_function_start_sal): Move definition to better spot. gdb/ChangeLog: * symtab.c (find_function_start_sal): Move definition to better spot. commit fb0576e98388c6f4585b94684cea8d18c97a91aa Author: Doug Evans Date: Thu Aug 28 11:38:22 2014 -0700 Rewrite {amd64,i386}-pseudo.c to better specify register liveness. clang was using eax to construct %0 here: asm ("mov %%eax, 0(%0)\n\t" "mov %%ebx, 4(%0)\n\t" "mov %%ecx, 8(%0)\n\t" "mov %%edx, 12(%0)\n\t" "mov %%esi, 16(%0)\n\t" "mov %%edi, 20(%0)\n\t" : /* no output operands */ : "r" (data) : "eax", "ebx", "ecx", "edx", "esi", "edi"); which caused amd64-word.exp (and others similarly) to fail. It's a perfectly legit thing for clang to do given the available data. The patch fixes this by marking the registers as live from the time of the preceding breakpoint. gdb/testsuite/ChangeLog: * gdb.arch/amd64-pseudo.c (main): Rewrite to better specify when eax,etc. are live with values set by gdb and thus the compiler can't use them. * gdb.arch/i386-pseudo.c (main): Ditto. commit 376c8d5bbb7e31987e363ee4c481ae8ff5015a77 Author: H.J. Lu Date: Thu Aug 28 08:22:42 2014 -0700 Check S-record with 0 size * srec.c (srec_scan): Return error for 0 size. commit 7096e886259fad196b955ecaff9a61891281d117 Author: Gary Benson Date: Wed Aug 6 13:23:59 2014 +0100 Remove fatal function and prototype This commit removes the now-unused fatal function and prototype. gdb/gdbserver/ChangeLog: * utils.h (fatal): Remove declaration. * utils.c (fatal): Remove function. commit 14ce3192392edde90aa444c153eacede6c1ba5c5 Author: Gary Benson Date: Wed Aug 6 14:43:17 2014 +0100 Convert fatal to perror_with_name in IPA code This commit converts four calls to fatal into calls to perror_with_name. perror_with_name calls error, which in IPA terminates with exit (1) rather than longjmp, so there is no functional change here. gdb/gdbserver/ChangeLog: * tracepoint.c (gdb_agent_init): Replace fatal with perror_with_name. (initialize_tracepoint): Likewise. commit 50278d599da5f7536a1243a887c2a5fa12e099c1 Author: Gary Benson Date: Wed Aug 6 13:47:55 2014 +0100 Convert fatal to error in remote_prepare This commit converts a call to fatal in remote_prepare with a call to error. remote_prepare is called precisely once, from main, at a point where jumping to toplevel will call exit (1), so error and fatal are functionally equivalent at this point. Note that remote_prepare calls perror_with_name (which calls error) so callers of remote_prepare must already handle the fact that it may exit via longjmp. gdb/gdbserver/ChangeLog: * remote-utils.c (remote_prepare): Replace fatal with error. commit aa96c426c674844a90e8fbea2cd184462191b498 Author: Gary Benson Date: Wed Aug 6 11:57:14 2014 +0100 Downgrade fatal to warning in linux_async This commit downgrades a fatal error to a warning in linux_async. linux_async is called from two different places in gdbserver: Via target_async from handle_accept_event. The argument is always zero, so the warning will never be printed here. Via start_non_stop from handle_general_set. This prints its own error message to stderr on failure, which will be preceded by the warning if it is emitted. gdb/gdbserver/ChangeLog: * linux-low.c (linux_async): Replace fatal with warning. Tidy up and return. (linux_start_non_stop): Return -1 if linux_async failed. commit f7160e97410b4b65330e5f23d82e8879c908de50 Author: Gary Benson Date: Wed Aug 6 14:00:14 2014 +0100 Convert fatal to gdb_assert in both i386_dr_low_set_addr This commit converts if..fatal checks in both i386_dr_low_set_addr implementations to gdb_asserts. It's not obvious from the context, but the conditional in both cases is changed to match the equivalent conditional in the i386_dr_low_get_addr implementations. Nothing fundamental has changed because DR_FIRSTADDR is zero. This commit also removes a vague comment in Linux i386_dr_low_get_addr. I could have reworded the comment (and replicated it three times for the other identical assertions) but I think the existence of specific functions for the status and control registers makes it fairly obvious what is going on. gdb/gdbserver/ChangeLog: * linux-x86-low.c (i386_dr_low_set_addr): Replace check with gdb_assert. (i386_dr_low_get_addr): Remove vague comment. * win32-i386-low.c (i386_dr_low_set_addr): Replace check with gdb_assert. commit 38e08fcac0966f52dac0ec97870fdea4de304d86 Author: Gary Benson Date: Wed Aug 6 11:56:25 2014 +0100 Straightforward fatal to internal_error conversions This commit replaces most of the calls to fatal that represent internal errors with calls to internal_error, either directly or via gdb_assert and gdb_assert_not_reached. gdb/gdbserver/ChangeLog: * inferiors.c (get_thread_process): Replace check with gdb_assert. * linux-low.c (linux_wait_for_event_filtered): Replace fatal with internal_error. (linux_resume_one_lwp): Likewise. * linux-x86-low.c (x86_siginfo_fixup): Replace checks with gdb_assert. * mem-break.c (raw_bkpt_type_to_target_hw_bp_type): Replace fatal with internal_error. * regcache.c (get_thread_regcache): Replace check with gdb_assert. (init_register_cache): Replace fatal with gdb_assert_not_reached. (find_register_by_name): Replace fatal with internal_error. (find_regno): Likewise. * tdesc.c (init_target_desc): Replace check with gdb_assert. * thread-db.c (thread_db_create_event): Likewise. (thread_db_load_search): Likewise. (try_thread_db_load_1): Likewise. * tracepoint.c (get_jump_space_head): Replace fatal with internal_error. (claim_trampoline_space): Likewise. (have_fast_tracepoint_trampoline_buffer): Likewise. (cmd_qtstart): Likewise. (stop_tracing): Likewise. (fast_tracepoint_collecting): Likewise. (target_malloc): Likewise. (download_tracepoint): Likewise. (download_trace_state_variables): Replace check with gdb_assert. (upload_fast_traceframes): Replace fatal with internal_error. commit 6aefca7e4978b93f502ff8123a6c3cab6e0171f1 Author: Gary Benson Date: Thu Aug 28 11:59:09 2014 +0100 Shadow SIM's debug_printf function GDB and SIM both have functions called "debug_printf", which conflicts at link time. This commit shadows SIM's debug_printf with a macro so that SIM's symbol ends up being called "sim_debug_printf". sim/common/ChangeLog: * sim-trace.h (debug_printf): New define. commit 6b65d1b6b3bb69051e32537cddf92baa22513cbd Author: Yao Qi Date: Fri Aug 1 11:26:16 2014 +0800 arm software watchpoint: return to epilogue Hi, This patch is to handle a software watchpoint case that program returns to caller's epilogue, and it causes the fail in thumb mode, finish^M Run till exit from #0 func () at gdb/testsuite/gdb.base/watchpoint-cond-gone.c:26^M 0x000001f6 in jumper ()^M (gdb) FAIL: gdb.base/watchpoint-cond-gone.exp: Catch the no longer valid watchpoint In the test, jumper calls func, and programs returns from func to jumper's epilogue, IOW, the branch instruction is the last instruction of jumper's function body. jumper: ..... 0x000001f2 <+10>: bl 0x200 [1] <---- indirect call to func 0x000001f6 <+14>: mov sp, r7 [2] <---- start of the epilogue 0x000001f8 <+16>: add sp, #8 0x000001fa <+18>: pop {r7} 0x000001fc <+20>: pop {r0} 0x000001fe <+22>: bx r0 When the inferior returns from func back to jumper, it is expected that an expression of a software watchpoint becomes out-of-scope. GDB validates the expression by checking the corresponding frame, but this check is guarded by gdbarch_in_function_epilogue_p. See breakpoint.c:watchpoint_check. It doesn't work in this case, because program returns from func's epilogue back to jumper's epilogue [2], GDB thinks the program is still within the epilogue, but in fact it goes to a different one. When PC points at [2], the sp-restore instruction is to be executed, so the stack frame isn't destroyed yet and we can still use the frame mechanism reliably. Note that when PC points to the first instruction of restoring SP, it is part of epilogue, but we still return zero. When goes to the next instruction, the backward scan will still match the epilogue sequence correctly. The reason for doing this is to handle the "return-to-epilogue" case. What this patch does is to restrict the epilogue matching that let GDB think the first SP restore instruction isn't part of the epilogue, and fall back to use frame mechanism. We set 'found_stack_adjust' zero before backward scan, and we've done this for arm mode counterpart (arm_in_function_epilogue_p) too. The patch is tested in arm-none-eabi and arm-none-linux-gnueabi with various multilibs. OK to apply? gdb: 2014-08-28 Yao Qi * arm-tdep.c (thumb_in_function_epilogue_p): Don't set found_stack_adjust in forward scan. Remove condition check on found_stack_adjust which is always true. Indent the code. commit a1b34d156a85f8c93af66a3677e75a132bfcc54a Author: Yao Qi Date: Tue Aug 26 21:02:49 2014 +0800 Remove dwarf_decode_lines argumewant_line_info Hi, dwarf_decode_lines is called in two functions, dwarf2_build_include_psymtabs and handle_DW_AT_stmt_list, in which, 1 is passed to argument 'want_line_info' and 'want_line_info' is a conditional variable in dwarf_decode_lines. We can simplify it by removing 'want_line_info' and propagating the constant 1 into dwarf_decode_lines. This is what this patch does. This patch also remove one line comment about WANT_LINE_INFO in handle_DW_AT_stmt_list, as handle_DW_AT_stmt_list doesn't have such argument. gdb: 2014-08-28 Yao Qi * dwarf2read.c (dwarf_decode_lines): Update declaration. (handle_DW_AT_stmt_list): Remove comment about WANT_LINE_INFO. (dwarf_decode_lines): Remove argument want_line_info. Remove condition check on want_line_info. Callers update. commit 53116d5d21c469147aaa2717fd79dd12ddeed959 Author: Alan Modra Date: Thu Aug 28 09:30:36 2014 +0930 daily update commit ceac4ecf4c7ed63b14456101c152180ae56d40e7 Author: Joel Sherrill Date: Thu Aug 14 17:18:53 2014 -0500 psim: Correct spelling in comments. 2014-08-27 Joel Sherrill * basics.h, device.c, device.h, hw_htab.c, hw_memory.c: Correct spelling in comments. commit d5962de546ad1ceb7ae69539b60d2e48e3942e30 Author: Doug Evans Date: Wed Aug 27 10:13:09 2014 -0700 dwarf2read.c (dwarf_record_line): Fix typo. gdb/ChangeLog: * dwarf2read.c (dwarf_record_line): Fix typo. commit 9b13900280517e928ae1d1abc10e11e855e72605 Author: Sergio Durigan Junior Date: Wed Aug 27 13:01:01 2014 -0400 Adding last commit's ChangeLog entry. commit 3278a9f568b197cd754dd056b36803e5bd00872f Author: Patrick Palka Date: Mon Aug 25 10:40:32 2014 -0400 Fix terminal state corruption when starting a program from within TUI The TUI terminal state becomes corrupted (e.g. key sequences such as Alt_F and Alt_B no longer work) when one attaches to an inferior process (via "run" or "attach") from within TUI. This terminal corruption remains until you switch out of TUI mode. This happens because the terminal state is not properly saved when switching to and out from TUI mode. Although the functions tui_enable() and tui_disable() both call the function target_terminal_save_ours() to save the terminal state, this function is a no-op unless GDB has already attached to an inferior process. This is because only the "native" target has a useful implementation of target_terminal_save_ours() (namely child_terminal_save_ours()) and we only have the "native" target in our target vector if GDB has already attached to an inferior process. So without an inferior process, switching to and from TUI mode does not actually save the terminal state. Therefore when you attach to an inferior process from within TUI mode, the proper terminal state is not restored (after swapping from the inferior's terminal back to the GDB terminal). To fix this we just have to ensure that the terminal state is always being properly saved when switching from and to TUI mode. To achieve this, this patch removes the polymorphic function target_terminal_save_ours() and replaces it with a regular function gdb_save_tty_state() that always saves the terminal state. Tested on x86_64-unknown-linux-gnu by running "make check", no new regressions. gdb/ChangeLog: * target.h (struct target_ops::to_terminal_save_ours): Remove declaration. (target_terminal_save_ours): Remove macro. * target-delegates.c: Regenerate. * inf-child.c (inf_child_target): Don't set the nonexistent field to_terminal_save_ours. * inferior.h (child_terminal_save_ours): Remove declaration. * terminal.h (gdb_save_tty_state): New declaration. * inflow.c (child_terminal_save_ours): Rename to ... (gdb_save_tty_state): ... this. * tui/tui.c: Include terminal.h. (tui_enable): Use gdb_save_tty_state instead of target_terminal_save_ours. (tui_disable): Likewise. commit ee92b0dd4e4abc5063f689a084c27ee7d5b08942 Author: Doug Evans Date: Wed Aug 27 09:40:21 2014 -0700 lib/gdb.exp (gdb_compile_shlib): Add support for clang. gdb/testsuite/ChangeLog: * lib/gdb.exp (gdb_compile_shlib): Add support for clang. commit c8831961f9fecf81e90fe7c8c94b47e01ee64662 Author: H.J. Lu Date: Wed Aug 27 07:59:48 2014 -0700 Use bfd_is_abs_section to check discarded input section bfd/ PR ld/17306 * elf32-i386.c (elf_i386_convert_mov_to_lea): Use bfd_is_abs_section to check discarded input section. * elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise. ld/testsuite/ PR ld/17306 * ld-i386/i386.exp (i386tests): Add tests for PR ld/17306. * ld-x86-64/x86-64.exp (x86_64tests): Likewise. * ld-i386/pr17306a.s: New file. * ld-i386/pr17306b.s: Likewise. * ld-x86-64/pr17306a.s: Likewise. * ld-x86-64/pr17306b.s: Likewise. commit 29a9f53e857c5d55df852d0a5d5c41a9247c16a2 Author: H.J. Lu Date: Wed Aug 27 07:39:48 2014 -0700 Don't attach dynamic sections to input from ld --just-symbols bfd/ PR ld/17313 * elflink.c (elf_link_add_object_symbols): Don't attach dynamic sections to input from ld --just-symbols. 2014-08-27 H.J. Lu PR ld/17313 * ld-i386/i386.exp (i386tests): Add tests for PR ld/17313. * ld-x86-64/x86-64.exp (x86_64tests): Likewise. commit 2536ee9d03cb7c4af97bf4b29429bef3c30652c2 Author: Will Newton Date: Thu Aug 7 14:38:55 2014 +0100 src-release.sh: Convert src-release to a shell script This began as an attempt to make a few small changes to src-release but heeding the comments at the top of the file it seemed it might be wise to convert it to a shell script instead which should hopefully be more maintainable. This shell script contains most of the functionality of the Makefile version. It can be run like this: # This will build gdb and compress with bzip2, gzip and xz ./src-release.sh -bgx gdb The functionality that has been removed is building tarballs for insight and gnats, which were broken in the current repository layout and gas+binutils which amounted to basically the same thing as binutils so didn't seem worth keeping. The script always builds a tar file, compression is optional, so no need for specific commands to build tar files rather than compressed tar files. The build of gas releases has been fixed, as has extraction of version numbers which had been broken since the switch to configure.ac files and AC_INIT. I also removed the code for distcleaning the intl sub-directory as it seems like that issue has been fixed. The script is capable of compressing with bzip2, gzip and xz which should cover all formats available on gnu.org. I tested it by producing release tarballs which are substantially identical to the ones produced by the src-release script. ChangeLog: 2014-08-27 Will Newton * src-release.sh: New file. * src-release: Remove file. commit 7322eefb9ee1c3b00a2ec3649778b733e43c7b35 Author: Alan Modra Date: Wed Aug 27 09:31:12 2014 +0930 daily update commit 599b6fb8a35c9af16f0edb8e2ca5a85ae8221767 Author: DJ Delorie Date: Tue Aug 26 17:01:04 2014 -0400 rl78.h (RL78_RELAXA_MASK): New. Relax types are enums, not bits commit 32e79d39201271dec352310d597dff430109c8cb Author: DJ Delorie Date: Tue Aug 26 14:03:29 2014 -0400 Disambiguate test for relaxation type. * elf32-rl78.c (rl78_elf_relax_section): Disambiguate test for relaxation type. commit 7f78eb340a4b3f46d842058cd26aad7ffa438c16 Author: Jiong Wang Date: Tue Aug 26 16:18:36 2014 +0100 [ARM] Update selected_cpu based on info got during parsing gas/ * config/tc-arm.c (aeabi_set_public_attributes): Update intended_arch based on the info we got during parsing. (arm_handle_align): Make sure the p2align expanding logic under thumb unchanged. gas/testsuite/ * gas/arm/blx-bl-convert.d: New testcase. * gas/arm/blx-bl-convert.l: Warning expectation. * gas/arm/blx-bl-convert.s: Source file. commit 614b09cefb3bafa840fe5ed06c58024b0ff9c1cb Author: Jiong Wang Date: Tue Aug 26 15:48:47 2014 +0100 [AArch64] Improve copy relocation support on four absolute relocation types 2014-08-26 Jiong Wang bfd/ * elfnn-aarch64.c (elfNN_aarch64_check_relocs): Initialize non_got_ref properly for MOVW_G0/1/2_NC and MOVW_G3. Reject them when linking shared library. (elfNN_aarch64_gc_sweep_hook): Add check on these relocs. ld/testsuite/ * ld-aarch64/copy-relocs-so.s: New test file. * ld-aarch64/copy-relocs-exe.s: Likewise. * ld-aarch64/copy-relocs.d: New expectation file. * ld-aarch64/emit-relocs-264-bad.d: New test file. * ld-aarch64/emit-relocs-266-bad.d: Likewise. * ld-aarch64/emit-relocs-268-bad.d: Likewise. * ld-aarch64/emit-relocs-269-bad.d: Likewise. * ld-aarch64/aarch64-elf.exp: Run new added test. commit 2836a869c4607fd1200b928986092ffed20c1d32 Author: Nick Clifton Date: Tue Aug 26 15:06:49 2014 +0100 Fix linker testsuite failures for Aarch64. Resolves PR 17312 * ld-aarch64/eh-frame-foo.s: Use 8-byte offset for X30. * ld-aarch64/eh-frame-bar.s: Likewise. * ld-aarch64/eh-frame.d: Updated to match current readelf output. * ld-elf/eh5.d: Allow any register names. commit 5575639b8dbb2a04087c3bef0b10f182da48ad35 Author: Maciej W. Rozycki Date: Tue Aug 26 13:44:34 2014 +0100 MIPS: Make the CODE10 operand code consistent between ISAs This change moves the microMIPS 10-bit uninterpreted immediate code embedded at bits 25..16 in the SYSCALL, WAIT, SDBBP and HYPCALL instructions from `B' over to `+J' which is the operand code used in the standard MIPS instruction set for a similar code embedded at bits 20..11, currently used by HYPCALL only in that set. opcodes/ * micromips-opc.c (decode_micromips_operand): Rename `B' to `+J'. (micromips_opcodes): Use "+J" in place of "B" for "hypcall", "sdbbp", "syscall" and "wait". include/opcode/ * mips.h: Document the move of `MICROMIPSOP_*_CODE10' from `B' over to `+J'. commit 0db377d09c19fc0f9267ead1f75998b9f1eb38d1 Author: Maciej W. Rozycki Date: Tue Aug 26 13:18:30 2014 +0100 MIPS/gas: SAA/SAAD macro clean-ups This change removes code duplication for the SAA macro in line with other such macros and also adds a !microMIPS internal consistency guard as there's no microMIPS encoding of the underlying SAA/SAAD instructions. * config/tc-mips.c (macro) : Remove duplicate code and jump to... : ... here. Assert that !microMIPS. commit 114dba3bbac4f54597734635c957979529177c71 Author: Maciej W. Rozycki Date: Tue Aug 26 12:57:42 2014 +0100 MIPS/gas/testsuite: Remove ECOFF offset alternatives This complements commit 16e5e222b6eae6f110ea72bf627585c095a453a8, removing offset values embedded in dump patterns that served ECOFF binaries. * gas/mips/l_d.d: Remove ECOFF offset alternatives. * gas/mips/mips1@l_d.d: Likewise. * gas/mips/ld.d: Likewise. * gas/mips/mips1@ld.d: Likewise. * gas/mips/mips1@ld-forward.d: Likewise. * gas/mips/s_d.d: Likewise. * gas/mips/mips1@s_d.d: Likewise. * gas/mips/sd.d: Likewise. commit 0d6d4c820580c7c212946377eb2fb886a3db7281 Author: Nick Clifton Date: Tue Aug 26 10:22:38 2014 +0100 Fix a typo in the selection pattern for the or1knd cpu. * config.bfd: Fix typo in or1knd selection. commit bc773698ce0cede9051dfe2a3c6726afa118f8bd Author: Jan-Benedict Glaw Date: Tue Aug 26 10:36:09 2014 +0200 2014-08-26 Jan-Benedict Glaw * config/tc-moxie.h (md_convert_frag): Silence warning. commit 9c11efa4c26e10fa46eda46b85405c3a3cb26039 Author: Alan Modra Date: Tue Aug 26 09:30:37 2014 +0930 daily update commit 6649db3523f32000dd6ddd9ac8add49f53e553a6 Author: Doug Evans Date: Mon Aug 25 12:40:54 2014 -0700 Fix clang compilation errors in gdb.mi/basics.c. gdb/testsuite/ChangeLog: * gdb.mi/basics.c (callee3, callee2, callee1): Specify result type. (main): Ditto. commit 564b7600f22299c27fcf3b3bc3699194ba1d4172 Author: Doug Evans Date: Mon Aug 25 12:23:50 2014 -0700 gdb.threads/thread-execl.exp: #include . gdb/testsuite/ChangeLog: * gdb.threads/thread-execl.exp: #include . commit 9debeba0eda35fb62a0ef76ef4f1019b0d2b649e Author: Doug Evans Date: Mon Aug 25 12:19:01 2014 -0700 linux-nat.c (linux_nat_close): Don't pass NULL for "this". gdb/ChangeLog: * linux-nat.c (linux_nat_close): Don't pass NULL for "this". Pass NULL instead of 0 for context pointer. commit 428fc5fcd14ec655df8db35496f4c4a76ecab57c Author: Yao Qi Date: Mon Aug 25 20:01:45 2014 +0800 Fix grammatical error in comments gdb: 2014-08-25 Yao Qi * dwarf2read.c: Fix grammatical error. commit 14191abec071bdee0b8c8ab33d2e09b73b3d3c23 Author: Jose E. Marchesi Date: Mon Aug 25 13:08:31 2014 +0200 gas tests for the sparc instructions ldfsr, stfsr, ldx, ldxa, stx, stxa, ldxfsr, stxfsr, ldxefsr. - V8 instructions: ldfsr, stfsr - V9 instructions: ldx, ldxa, stx, stxa, ldxfsr, stxfsr - V9b instructions: ldxefsr Tested on sparc64-*-linux-gnu. [gas/testsuite/Changelog] 2014-08-25 Jose E. Marchesi * gas/sparc/ldx_stx.s: New file. * gas/sparc/ldx_stx.d: Likewise. * gas/sparc/ldx_efsr.s: New file. * gas/sparc/ldx_efsr.d: Likewise. * gas/sparc/ld_st_fsr.s: New file. * gas/sparc/ld_st_fsr.d: Likewise. * gas/sparc/sparc.exp: Run the tests ldx_stx, ldx_efsr and ld_st_fsr. commit 957979137fe8c3bcf709d5fc3e8795cf1e3de161 Author: Alan Modra Date: Mon Aug 25 09:30:41 2014 +0930 daily update commit cdc07690a4812fb41d3766d087cf7ec78184d6a8 Author: Yao Qi Date: Fri Aug 15 19:06:02 2014 +0800 Update comments in scan_partial_symbols and add_partial_subprogram I read comment of scan_partial_symbols about NEED_PC and how *LOWPC and *HIGHPC are updated: DW_AT_ranges). If NEED_PC is set, then this function will set *LOWPC and *HIGHPC to the lowest and highest PC values found in CU and record the covered ranges in the addrmap. NEED_PC is only used in the callee of scan_partial_symbols, add_partial_subprogram, if (pdi->tag == DW_TAG_subprogram) { if (pdi->has_pc_info) { if (pdi->lowpc < *lowpc) *lowpc = pdi->lowpc; if (pdi->highpc > *highpc) *highpc = pdi->highpc; if (need_pc) *LOWPC and *HIGHPC is updated regardless of NEED_PC. When NEED_PC is true, addrmap is updated. It would be clear to rename NEED_PC to SET_ADDRMAP. That is what this patch does. Beside this, this patch also adjust comments in related functions. gdb: 2014-08-24 Yao Qi * dwarf2read.c (scan_partial_symbols): Update comments. Rename argument 'need_pc' with 'set_addrmap'. (add_partial_namespace): Rename argument 'need_pc' with 'set_addrmap'. (add_partial_module): Likewise. (add_partial_subprogram): Likewise. Update comments. (dwarf2_name): Fix typo. commit 3881fb67b7017669b3acaba919914954c16270a8 Author: Yao Qi Date: Thu Aug 7 16:10:51 2014 +0800 set print symbol off in py-value.exp and scm-value.exp I see the following fails on arm-none-eabi target, print sn^M $14 = 0x0 <_ftext>^M (gdb) FAIL: gdb.python/py-value.exp: print sn print sn^M $14 = 0x0 <_ftext>^M (gdb) FAIL: gdb.guile/scm-value.exp: print sn as <_ftext> is unexpected. This patch is to set print symbol off to avoid printing this. gdb/testsuite: 2014-08-24 Yao Qi * gdb.guile/scm-value.exp (test_lazy_strings): Set print symbol off. * gdb.python/py-value.exp (test_lazy_strings): Likewise. commit ca71f0dbc6c2315cc17c79d53ec6e902e10eb438 Author: Alan Modra Date: Sun Aug 24 09:31:13 2014 +0930 daily update commit 9e3042ec073e05a0a5aa56398fd2662c5dcd5002 Author: Hans-Peter Nilsson Date: Sat Aug 23 04:53:28 2014 +0200 Fix m32r-elf sim, default hardware to off. The situation here is similar to that of the other nearby (previous) sims fixed; it fails at the dv_sockser_install declaration in sim/m32r/tconfig.in. But, as opposed to e.g. frv, this *does* have a definition of UART_INCHAR_ADDR et al. It's somewhat tempting to keep sim-hardware enabled here but, I'm disabling it for the same reasons as for frv. Unsurprisingly (as m32r seems to be the template), the same confusing lines are in sim/m32r/Makefile.in as in sim/frv/Makefile.in at that time, deleted in 73e76d20. Again, commit 73e76d20 (for m32r as well as for frv) attempted to move the non-existing dv-sockser.o use to $(m32r_extra_objs) but missed that AC_SUBST would only affect @m32r_extra_objs@ and not $(m32r_extra_objs) per se so nothing happened. As for frv, I'm removing the $(m32r_extra_objs) too, to avoid confusion. Make check-sim for m32r-elf shows no regressions (5 failures; 100 expected passes) compared to bf3d9781ec049 (before the recent config.in regen, after sim-hardware mostly-enabled) and eed23bb4a1 (before the sim-hardware mostly-enabled; 2013-03-23). sim/m32r: * configure.ac: Default simulator hardware to off again. Remove dead m32r_extra_objs substitution. * configure: Regenerate. * Makefile.in: Remove unused frv_extra_objs. commit c4892a6b37647a0b33a2113b59762f678aabe4b2 Author: Hans-Peter Nilsson Date: Sat Aug 23 04:40:36 2014 +0200 Fix sh64-elf sim, default hardware to off. See nearby (previous) commit for the iq2000 sim; this similarly fails at the dv_sockser_install declaration in sim/sh64/tconfig.in. I'm disabling simulator hardware to be consistent with the state before 94c63d78f (2013-03-23) and with the actions for the frv sim and the iq2000 sim. Make check-sim for sh64-elf shows no regressions (25 failures; 357 expected passes) compared to bf3d9781ec049 (before the recent config.in regen, after sim-hardware mostly-enabled) and eed23bb4a1 (before the sim-hardware mostly-enabled; 2013-03-23). sim/sh64: * configure.ac: Default simulator hardware to off again without emitting errors when off or dv-sockser.o unavailable. * configure: Regenerate. commit 3df3af7c3f9095f9dc951fe680ce76f6e497914b Author: Hans-Peter Nilsson Date: Sat Aug 23 04:27:26 2014 +0200 Fix iq2000-elf sim, default hardware to off. See nearby (previous) commit for the frv sim; this similarly fails at the dv_sockser_install declaration in sim/iq2000/tconfig.in. There's no HAVE_DV_SOCKSER conditionals here and no other dv-sockser.o artefacts so maybe there is no further fallout, but I'm going to disable sim-hardware just be consistent with the state before 94c63d78f (2013-03-23) and with the actions for the frv sim. Make check-sim for iq2000-elf shows no failures but that's in no small part because it has no test-suite. sim/iq2000: * configure.ac: Default simulator hardware to off again without emitting errors when off or dv-sockser.o unavailable. * configure: Regenerate. commit 105dd264de9a2fa7eee45eff897aa1d6171c1c4b Author: Hans-Peter Nilsson Date: Sat Aug 23 04:16:58 2014 +0200 Fix frv-elf sim, default hardware to off. At 2974be626, frv-elf fails at the dv_sockser_install declaration in sim/frv/tconfig.in. But, with the trivial #include's added (see other sims tconfig.in, like cris or mn10300), it *still* fails building sim/frv/devices.c because of a missing UART_INCHAR_ADDR. I have no insight into what'd be a valid value, except that there's a definition in m32r, which was probably used as a template with frv not finished. Simulated hardware should not have been be enabled, and was indeed not enabled by default before 94c63d78f (2013-03-23), where it seems to have been enabled for no simulator-specific reason. Except dv-sockser.o wasn't enabled even then: sim/frv/config.in wasn't regenerated, so HAVE_DV_SOCKSER was never defined. Maybe people were fooled by this in sim/frv/Makefile.in at that time (these two lines were later deleted, in 73e76d20): CONFIG_DEVICES = dv-sockser.o CONFIG_DEVICES = (As it seems people have missed it before: the second line overrides the first...) I'm guessing these lines were part of the never-completed hardware-support. Commit 73e76d20 attempted to move the imagined dv-sockser.o from $(CONFIG_DEVICES) to $(frv_extra_objs) but missed that AC_SUBST would only affect @frv_extra_objs@ (not $(frv_extra_objs) per se) so nothing happened regarding sockser: dv-sockser.o was not compiled and HAVE_DV_SOCKSER was not defined. I'm removing the $(frv_extra_objs) too, to avoid confusion. The best action seems to be disabling all hardware support by default again until a specific sim maintainer finishes the work. Make check-sim for frv-elf shows no failures after this. sim/frv: * configure.ac: Default simulator hardware to off again. Remove dead frv_extra_objs substitution. * configure: Regenerate. * Makefile.in: Remove unused frv_extra_objs. commit a05a36a5fc98c816381b25c37e8aa971cc86c28d Author: Doug Evans Date: Fri Aug 22 17:25:59 2014 -0700 Fix pr 17276. See the description here: https://sourceware.org/ml/gdb-patches/2014-08/msg00283.html This patch keeps track of whether the current line has seen a non-zero discriminator, and if so coalesces consecutive entries for the same line (by ignoring all entries after the first). gdb/ChangeLog: PR 17276 * dwarf2read.c (dwarf_record_line_p): New function. (dwarf_decode_lines_1): Ignore subsequent line number entries for the same line if any entry had a non-zero discriminator. gdb/testsuite/ChangeLog: * gdb.dwarf2/dw2-single-line-discriminators.S: New file. * gdb.dwarf2/dw2-single-line-discriminators.c: New file. * gdb.dwarf2/dw2-single-line-discriminators.exp: New file. commit 9bda4a968f56cb61b832cdbdabf09a84eab140ab Author: Alan Modra Date: Sat Aug 23 09:42:52 2014 +0930 daily update commit 252a6764dd7ce810c9ecea3786d04f8f05c2d566 Author: Doug Evans Date: Fri Aug 22 16:20:05 2014 -0700 Create a typedef for record_line: record_line_ftype. gdb/ChangeLog: * buildsym.h (record_line_ftype): New typedef. (record_line): Use it. * dwarf2read.c (dwarf_record_line, dwarf_finish_line): New functions. (dwarf_decode_lines_1): Call them. commit 49b9c17cf445af9184508824a703099c5997f7d0 Author: Richard Henderson Date: Fri Aug 22 14:42:39 2014 -0700 aarch64: Adjust dwarf2 encoding factors * config/tc-aarch64.h (DWARF2_LINE_MIN_INSN_LENGTH): Set to 4. (DWARF2_CIE_DATA_ALIGNMENT): Set to -8. commit a2cac51cb03f356e387c44b558aa9b4dfa002130 Author: Richard Henderson Date: Fri Aug 22 14:41:43 2014 -0700 aarch64: Fix CFA encoding of vector registers * config/tc-aarch64.c (tc_aarch64_regname_to_dw2regnum): Fix register number for vector register types. commit 4ee220358d068133b219d729f4c7ada5a41c106e Author: Richard Henderson Date: Fri Aug 22 14:40:10 2014 -0700 aarch64: Decode dwarf2 register numbers * dwarf.h (init_dwarf_regnames_aarch64): Declare. * dwarf.c (dwarf_regnames_aarch64): New. (init_dwarf_regnames_aarch64): New. (init_dwarf_regnames): Call it. * objdump.c (dump_dwarf): Likewise. commit fbd940576f6c0891cebb4173f64968b7c50ed642 Author: Maciej W. Rozycki Date: Fri Aug 22 16:52:20 2014 +0100 Power/GAS: Don't set VLE annotation for non-VLE processors/instructions Only set the VLE flag if the instruction has been pulled via the VLE instruction set. This way the flag is guaranteed to be set for VLE-only instructions or for VLE-only processors, however it'll remain clear for dual-mode instructions on dual-mode and, more importantly, standard-mode processors. gas/ * config/tc-ppc.c (md_assemble): Only set the PPC_APUINFO_VLE flag if both the processor and opcode flags match. ld/testsuite/ * ld-powerpc/apuinfo-vle.rd: New test. * ld-powerpc/apuinfo-vle.s: New test source. * ld-powerpc/apuinfo.rd: Adjust according to GAS PPC_APUINFO_VLE handling change. * ld-powerpc/powerpc.exp: Run the new test. commit 84919466a87f5ce10cc1af8ef51d7ab9ea66ff5e Author: Maciej W. Rozycki Date: Fri Aug 22 16:42:12 2014 +0100 ARM/opcodes: Fix negative hexadecimal offset disassembly 2014-08-21 Nathan Sidwell Maciej W. Rozycki opcodes/ * arm-dis.c (print_arm_address): Negate the GPR-relative offset returned if the U bit is set. 2014-08-21 Paul Brook gas/testsuite/ * gas/arm/arch7a-mp.d: Adjust according to `print_arm_address' offset fix. * gas/arm/arch7r-mp.d: Likewise. commit e56c722b60c67fe915c22970a5e669a723fa1ce9 Author: Maciej W. Rozycki Date: Fri Aug 22 16:30:36 2014 +0100 ARM/gas: Fix a build failure with GCC 4.3.3 cc1: warnings being treated as errors .../gas/config/tc-arm.c: In function 'add_to_lit_pool': .../gas/config/tc-arm.c:3193: error: 'imm1' may be used uninitialized in this function * config/tc-arm.c (add_to_lit_pool): Preinitialize `imm1'. commit a4a027b7f43b1d9e62a6a540cd7857a334d37b12 Author: Kai Tietz Date: Wed Aug 20 17:39:21 2014 +0200 Fix file-alignment for objcopy for pe-coff 2014-08-22 Kai Tietz PR binutils/11822 * coffcode.h (coff_compute_section_file_positions): Keep FileAlignment valid as set. commit 7c343b48b22f04616bd699779118ede2a6aac4b1 Author: Yao Qi Date: Thu Aug 14 14:16:56 2014 +0800 Copy .py files to remote host Some gdb.python/*.exp tests fail because the .py files aren't copied to the (remote) host. This patch is to copy needed .py files to host. Most of gdb.python/*.exp tests do this. As it is still controversial to delete *.py files on host, we don't do that in this patch. gdb/testsuite: 2014-08-22 Yao Qi * gdb.python/py-finish-breakpoint.exp: Copy .py file to host. * gdb.python/py-finish-breakpoint2.exp: Likewise. * gdb.python/python.exp: Likewise. Use .py file on the host instead of the build. commit baa23169d141b442cdbee3e79279793fe4fbc0f1 Author: Andreas Tobler Date: Fri Aug 22 06:33:45 2014 +0200 * emulparams/armelf_fbsd.sh (TEXT_START_ADDR): Increase alignment to 64kB boundary like in armelf_linux.sh commit 510db0520b763ca7cc9bf59e1f201ab2001d4217 Author: Yao Qi Date: Thu Aug 21 10:48:33 2014 +0800 Remove workaround to libbabeltrace 1.1.0 issue When GDB uses recent version of babeltrace, such as 1.2.x, we'll see such error emitted from babeltrace library, (gdb) target ctf .../gdb/testsuite/gdb.trace/actions.ctf [error] Invalid CTF stream: content size is smaller than packet headers. [error] Stream index creation error. [error] Open file stream error. The problem can be reproduce out of GDB too, using babeltrace, $ babeltrace ./fake-packet.ctf/ [error] Invalid CTF stream: content size is smaller than packet headers. [error] Stream index creation error. [error] Open file stream error. Recent babeltrace library becomes more strict on CTF, and complains about one "faked packet" GDB adds, when saving trace data in ctf format from GDB. babeltrace 1.1.0 has a bug that it can't read trace data smaller than a certain size (see https://bugs.lttng.org/issues/450). We workaround it in GDB to append some meaningless data in a faked packet to make sure trace file is large enough (see ctf.c:ctf_end). The babeltrace issue was fixed in 1.1.1 release. However, babeltrace recent release (since 1.1.2) starts to complain about such faked packet. Here is a table shows that whether faked packet or no faked packet is "supported" by various babeltrace releases, faked packet no faked packet 1.1.0 Yes No 1.1.1 Yes Yes 1.1.2 No Yes 1.2.0 No Yes We decide to get rid of this workaround in GDB, and people can build GDB with libbabeltrace >= 1.1.1. In this way, both configure and ctf.c is simpler. Run gdb.trace/* tests in the following combinations: wo/ this pattch 1.1.0 w/ this patch 1.1.1 w/ this patch 1.1.2 w/ this patch 1.2.0 No test results change. gdb: 2014-08-22 Yao Qi * ctf.c (CTF_FILE_MIN_SIZE): Remove. (ctf_end): Remove code. commit 4564fb94daa76c3b339507f0f985dc139f2db8ba Author: Alan Modra Date: Fri Aug 22 09:12:09 2014 +0930 Delete redundant struct cie field cie->output_sec is used to when merging CIEs to ensure that only CIEs from the same output section are merged. I noticed an assignment to this field in _bfd_elf_parse_eh_frame, and thought "That's wrong, output_section isn't set properly when _bfd_elf_parse_eh_frame is called from gc-sections code". It turns out that this assignment is premature, and in fact a dead store. find_merged_cie overwrites with the correct value before the field is ever used. On looking a little more it becomes apparent that cie->cie_inf.u.cie.u.sec->output_section holds the same value, so cie->output_sec is redundant. * elf-eh-frame.c (struct cie): Delete "output_sec" field. (cie_eq, cie_compute_hash): Use output_section from cie_inf instead. commit da44f4e5464f82dec79eb5885961c6466dd3bf6a Author: Alan Modra Date: Fri Aug 22 09:07:35 2014 +0930 Index PowerPC64 linker generated .eh_frame in .eh_frame_hdr I noticed recently that .eh_frame FDEs generated by the linker for call stubs and .glink weren't being indexed in .eh_frame_hdr, due to bfd_elf_discard_info being run before the linker generated .eh_frame sections were available for parsing. This patch moves code around in elf64-ppc.c and ppc64elf.em to avoid that problem. Another problem fixed here is that --gc-sections parses .eh_frame early, and the existing machinery allows only one go at parsing the .eh_frame sections. That resulted in the linker generated .eh_frame CIEs not being merged and no .eh_frame_hdr index entries for those FDEs. It turns out that all the info from parsing .eh_frame is attached to the section, so order of parsing isn't important, and after parsing sec_info_type being set will prevent a section being parsed again. At least, when parsing doesn't hit an error. So there isn't really any need for "parsed_eh_frame". "merge_cies" is also redundant, which means _bfd_elf_{begin,end}_eh_frame_parsing can also disappear. bfd/ * elf-bfd.h (struct eh_frame_hdr_info): Delete merge_cies and parsed_eh_frames. (_bfd_elf_begin_eh_frame_parsing): Delete. (_bfd_elf_end_eh_frame_parsing): Delete. * elf-eh-frame.c (_bfd_elf_begin_eh_frame_parsing): Delete. (_bfd_elf_end_eh_frame_parsing): Delete. (_bfd_elf_parse_eh_frame): Don't test parsed_eh_frame. Test !info->relocatable in place of merge_cies. * elflink.c (bfd_elf_gc_sections, bfd_elf_discard_info): Adjust. * elf64-ppc.c (glink_eh_frame_cie): Pad to multiple of 8. (ppc64_elf_size_stubs): Likewise pad stub FDE. (ppc64_elf_build_stubs): Move code setting glink .eh_frame to.. (ppc64_elf_size_stubs): ..here and.. (ppc64_elf_finish_dynamic_sections): ..here. ld/ * emultempl/ppc64elf.em (gld${EMULATION_NAME}_after_allocation): Call bfd_elf_discard_info after generating glink .eh_frame. Delete redundant test on ppc64_elf_setup_section_lists status. commit 7f85237141c02e3989311cbaca19038c7c3d5b2c Author: Alan Modra Date: Fri Aug 22 10:02:05 2014 +0930 daily update commit 22fd09ae995556cc1b898afe3d5901eb161d1102 Author: Jan Kratochvil Date: Thu Aug 21 20:36:20 2014 +0200 Fix 'gcore' with exited threads Program received signal SIGABRT, Aborted. [...] (gdb) gcore foobar Couldn't get registers: No such process. (gdb) info threads [...] (gdb) gcore foobar Saved corefile foobar (gdb) gcore tries to access the exited thread: [Thread 0x7ffff7fce700 (LWP 6895) exited] ptrace(PTRACE_GETREGS, 6895, 0, 0x7fff18167dd0) = -1 ESRCH (No such process) Without the TRY_CATCH protection testsuite FAILs for: gcore .../gdb/testsuite/gdb.threads/gcore-thread0.test Cannot find new threads: debugger service failed (gdb) FAIL: gdb.threads/gcore-thread.exp: save a zeroed-threads corefile + core .../gdb/testsuite/gdb.threads/gcore-thread0.test ".../gdb/testsuite/gdb.threads/gcore-thread0.test" is not a core dump: File format not recognized (gdb) FAIL: gdb.threads/gcore-thread.exp: core0file: re-load generated corefile (bad file format) Maybe the TRY_CATCH could be more inside update_thread_list(). Similar update_thread_list() call is IMO missing in procfs_make_note_section() but I do not have where to verify that change. gdb/ChangeLog 2014-08-21 Jan Kratochvil * linux-tdep.c (linux_corefile_thread_callback): Ignore THREAD_EXITED. (linux_make_corefile_notes): call update_thread_list, protected against exceptions. gdb/testsuite/ChangeLog 2014-08-21 Jan Kratochvil * gdb.threads/gcore-stale-thread.c: New file. * gdb.threads/gcore-stale-thread.exp: New file. commit 656e8868f333de49bf22e10112392ca404e5eb67 Author: Pedro Alves Date: Thu Aug 21 17:09:24 2014 +0100 infcmd.c: Remove stale TODO This TODO has been stale for over 2 years. In bd5635a1 (1991), we already see the comment, when we only had a bare attach_command: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* * TODO: * Should save/restore the tty state since it might be that the * program to be debugged was started on this tty and it wants * the tty in some state other than what we want. If it's running * on another terminal or without a terminal, then saving and * restoring the tty state is a harmless no-op. * This only needs to be done if we are attaching to a process. */ /* * attach_command -- * takes a program started up outside of gdb and ``attaches'' to it. * This stops it cold in its tracks and allows us to start tracing it. * For this to work, we must be able to send the process a * signal and we must have the same effective uid as the program. */ void attach_command (args, from_tty) char *args; int from_tty; { target_attach (args, from_tty); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Later in b5a3d2aa (1992) target_terminal_init, etc. calls are added to attach_command, and in 7e97eb28 (1992) we see: + /* If we attached to the process, we might or might not be sharing + a terminal. Avoid printing error msg if we are unable to set our + terminal's process group to his process group ID. */ + if (!attach_flag) { + OOPSY ("ioctl TIOCSPGRP"); Clearly the TODO has been stale for a long while. I considered preserving the text elsewhere, but then thought the comments in inflow.c already have all the necessary info. gdb/ChangeLog: * infcmd.c (attach_command): Remove comment. commit a6c7053929dd26d04293429e8610209f5b1bf900 Author: Maciej W. Rozycki Date: Thu Aug 21 12:57:00 2014 +0100 MIPS/opcodes: Remove microMIPS 48-bit LI instruction The 48-bit LI instruction encoding has been removed from the microMIPS ISA and no implementation ever made that included it. * micromips-opc.c (micromips_opcodes): Remove #ifdef-ed out 48-bit "li" encoding. commit 1d7c96351acfa817fa749a5aefdfed8d9c471e03 Author: Maciej W. Rozycki Date: Thu Aug 21 12:31:58 2014 +0100 PowerPC64/BFD: Fix ppc64_elf_set_toc indentation * elf64-ppc.h (ppc64_elf_set_toc): Fix indentation. commit a8454a7c5a2254b249b1bac34e7cef1438bca9f2 Author: Pedro Alves Date: Thu Aug 21 11:36:59 2014 +0100 Remove useless gcore command detection Checking whether the gcore command is included in the GDB build as proxy for checking whether core dumping is supported by the target is useless, as gcore.o has been in COMMON_OBS since git 9b4eba8e: 2009-10-26 Michael Snyder Hui Zhu * Makefile.in (SFILES): Add gcore.c. (COMMON_OBS): Add gcore.o. * config/alpha/alpha-linux.mh (NATDEPFILES): Delete gcore.o. * config/alpha/fbsd.mh (NATDEPFILES): Ditto. ... IOW, the command is always included in the build. Instead, nowadays, tests bail out if actually trying to generate a core fails with an indication the target doesn't support it. See gdb_gcore_cmd and callers. Tested on x86_64 Fedora 20. gdb/testsuite/ChangeLog: * gdb.base/gcore-buffer-overflow.exp: Remove "help gcore" test. * gdb.base/gcore-relro-pie.exp: Likewise. * gdb.base/gcore-relro.exp: Likewise. * gdb.base/gcore.exp: Likewise. * gdb.base/print-symbol-loading.exp: Likewise. * gdb.threads/gcore-thread.exp: Likewise. * lib/gdb.exp (gdb_gcore_cmd): Don't expect "Undefined command". commit c542398150124a0b5adbbeeb274e55ee56d3120a Author: Terry Guo Date: Thu Aug 21 18:00:35 2014 +0800 bfd/ChangeLog 2014-08-21 Tony Wang * elf32-arm.c (elf32_arm_final_link_relocate): Implement the veneer routine for R_ARM_THM_JUMP19. (arm_type_of_stub): Add conditional clause for R_ARM_THM_JUMP19 (elf32_arm_size_stub): Ditto. ld/testsuite/ChangeLog 2014-08-21 Tony Wang * ld-arm/jump-reloc-veneers-cond.s: New test. * ld-arm/farcall-cond-thumb-arm.s: Ditto. * ld-arm/jump-reloc-veneers-cond-short.d: Expected output for target without a veneer generation. * ld-arm/jump-reloc-veneers-cond-long.d: Expected output for target with a veneer generation. * ld-arm/farcall-cond-thumb-arm.d: Expected output for inter working veneer generation. * ld-arm/arm-elf.exp: Add tests for conditional branch veneer. commit de589d04f30e658fcf4ba37a678c9487c128f97f Author: Will Newton Date: Thu Aug 21 09:38:00 2014 +0100 gdb: Fix aarch64 native build issue caused by use of LONGEST Recent gdb code refactor changes LONGEST from a macro to a typedef, thus the use of it in aarch64-linux-nat.c is no longer valid. 2014-08-21 Bin Cheng * aarch64-linux-nat.c (dr_changed_t): Change the type from unsigned LONGEST to ULONGEST. commit 42868dce3e9d5c858d91f141ec920bc4629a5918 Author: Maciej W. Rozycki Date: Thu Aug 21 01:52:13 2014 +0100 MIPS/gas/testsuite: mips.exp indentation fixes * gas/mips/mips.exp: Correct indentation. commit 83e12debff27af04efd261f7858622c7b851c233 Author: Maciej W. Rozycki Date: Wed Aug 20 20:40:10 2014 +0100 GAS: Replace leading spaces with tabs across dw2gencfi.c * dw2gencfi.c (make_debug_seg): Replace leading spaces with tabs. (dot_cfi_val_encoded_addr, output_cfi_insn): Likewise. (output_cie, cfi_change_reg_numbers, cfi_finish): Likewise. commit 8c45e5ec6b785abbfbda7137385a0c1c14dae228 Author: Maciej W. Rozycki Date: Wed Aug 20 20:17:18 2014 +0100 ARM/ld: Correct macro formatting in armelf.em * emultempl/armelf.em (OPTION_STUBGROUP_SIZE): Fix formatting. (OPTION_NO_MERGE_EXIDX_ENTRIES, OPTION_LONG_PLT): Likewise. commit 2a31c6236de308f7109720230e70b96c5d5b966a Author: Pedro Alves Date: Wed Aug 20 18:55:54 2014 +0100 Integrate PR 12649's race detector directly in the testsuite machinery This integrates Jan Kratochvil's nice race reproducer from PR testsuite/12649 into the testsuite infrustructure directly. With this, one only has to do either 'make check-read1' or 'make check READ1="1"' to preload the read1.so library into expect. Currently only enabled for glibc/GNU systems, and if build==host==target. gdb/testsuite/ChangeLog: * Makefile.in (EXTRA_RULES, CC): New variables, get from configure. (EXPECT): Handle READ1 being set. (all): Depend on EXTRA_RULES. (check-read1, expect-read1, read1.so, read1): New rules. * README (Testsuite Parameters): Document the READ1 make variable. (Race detection): New section. * configure: Regenerate. * configure.ac: If build==host==target, and running under a GNU/glibc system, add read1 to the extra Makefile rules. (EXTRA_RULES): AC_SUBST it. * lib/read1.c: New file. gdb/ChangeLog: * Makefile.in (check-read1): New rule. commit 469a34932ae4208240e98c843b01ea1f00892137 Author: Roland McGrath Date: Wed Aug 20 10:12:57 2014 -0700 Fix PR ld/17277: bogus dynamic relocs and TEXTREL for ARM PC-relative relocs bfd/ PR ld/17277 * elf32-arm.c (elf32_arm_check_relocs): Increment P->pc_count for all reloc types with pc_relative set in the howto, not just for R_ARM_REL32 and R_ARM_REL32_NOI. (allocate_dynrelocs_for_symbol): Update comment. (elf32_arm_gc_sweep_hook): For all reloc types with pc_relative set in the howto, set call_reloc_p and may_need_local_target_p but not may_become_dynamic_p; not only for R_ARM_REL32 and R_ARM_REL32_NOI. (elf32_arm_check_relocs): Likewise. ld/testsuite/ PR ld/17277 * ld-arm/pcrel-shared.s: New file. * ld-arm/pcrel-shared.rd: New file. * ld-arm/arm-elf.exp (armelftests_common): Add it. commit 01e6c1a48d2c56a5e8a78f54b3b2021da42257e7 Author: Will Newton Date: Mon Aug 4 10:52:04 2014 +0100 ARM: Add support for armeb-*-eabi* At the moment it is possible to configure binutils for these triples but the resulting linker defaults to little endian with huge numbers of testsuite failures, which on the face of it does not appear to make much sense. This patch makes the behaviour similar to armeb-elf and the testsuite is clean. bfd/ChangeLog: 2014-08-20 Will Newton * config.bfd: Default armeb-*-eabi* to big endian. ld/ChangeLog: 2014-08-20 Will Newton * configure.tgt: Default armeb-*-eabi* to big endian. commit aacf0b33aa8a55f935be02a6f6a3b3b62f60d14b Author: Kyrylo Tkachov Date: Wed Aug 20 16:49:53 2014 +0100 [ARM] Fix vcmp with #0.0 * config/tc-arm.c (parse_ifimm_zero): New function. (enum operand_parse_code): Add OP_RSVD_FI0 value. (parse_operands): Handle OP_RSVD_FI0. (asm_opcode_insns): Use RSVD_FI0 for second operand of vcmp, vcmpe. * gas/arm/ual-vcmp.s: New file. * gas/arm/ual-vcmp.d: Likewise. * gas/arm/vcmp-zero-bad.s: Likewise. * gas/arm/vcmp-zero-bad.d: Likewise. * gas/arm/vcmp-zero-bad.l: Likewise. commit 2d5c3743a3a223dc6467ff022124b4f2f1844c91 Author: Nick Clifton Date: Wed Aug 20 16:10:29 2014 +0100 Enabling the HIGH_ENTROPY_VA flag allows the operating system to use addresses outside of the 32-bit range before memory exhaustion. This results in a higher entropy implementation of ASLR when used with the DYNAMIC_BASE flag. * include/coff/pe.h: Add HIGH_ENTROPY_VA flag * ld/emultempl/pep.em: Add --high-entropy-va switch * ld/ld.texinfo: Document the --high-entropy-va switch commit d36430db79dc8eccb9cb188e1234f7ff044f79b4 Author: Joel Brobecker Date: Wed Aug 20 14:50:38 2014 +0200 Fix handling of typedefs to types having a data_location attribute. Consider an array described in the debugging information as being a typedef of an array type for which there is a DW_AT_data_location attribute. Trying to print the value of that array currently yields incorrect element values. For instance: (gdb) print foo.three_tdef $1 = (6293760, 0, 6293772) The problem occurs because we check for the data_location attribute only on the typedef type, whereas we should be checking for the typedef's target type. As a result, GDB erroneously thinks that there is no data_location, and therefore starts reading the array's content from the address of the descriptor instead of the data_location address. gdb/ChangeLog: * value.c (value_from_contents_and_address): Strip resolved_type's typedef layers before checking its TYPE_DATA_LOCATION. gdb/testsuite/ChangeLog: * gdb.dwarf2/data-loc.exp: Add additional tests exercising the handling of variables declared as a typedef to an array which a DW_AT_data_location attribute. commit 000339af7b74593f4dd3a679427b9fe34d1254f7 Author: Pedro Alves Date: Wed Aug 20 11:05:31 2014 +0100 value.c (value_contents_bits_eq): Initialize l,h for gcc -Wall. 2014-08-20 Pedro Alves gdb/ * value.c (value_contents_bits_eq): Initialize l,h for gcc -Wall. commit 5f52445bfb1421c301d95e508c5dc52c4bf86abd Author: Yao Qi Date: Wed Aug 20 11:36:42 2014 +0800 Adjust comments with example in it We would like to wrap examples, output or code snippet in comments with blank lines, and move */ to a new line if the comment is ended with the example. gdb: 2014-08-20 Yao Qi * amd64-tdep.c (amd64_classify): Add a blank line after the example. Move "*/" to a new line. * arm-tdep.c (arm_vfp_cprc_sub_candidate): Likewise. * arm-wince-tdep.c (arm_pe_skip_trampoline_code): Likewise. * dwarf2read.c (psymtab_include_file_name): Likewise. commit 985743c7fb71a8639186d4f016788d3dc9b9d0da Author: Nick Clifton Date: Wed Aug 20 10:34:58 2014 +0100 Add copyright notice to linker script files. commit 37186264f39b05906ccb4ea446dbe2cb22b22e77 Author: Alan Modra Date: Wed Aug 20 09:57:59 2014 +0930 Fix typo in f7f2534e * Makefile.am: Typo fix. * Makefile.in: Regenerate. * po/POTFILES.in: Regenerate. commit 4627fc13ceaa5b1c8a5a4fe7cc98609d1903545d Author: Alan Modra Date: Wed Aug 20 09:31:14 2014 +0930 daily update commit 9a0dc9e3699018b15980bb6a39eb33dea8fefa34 Author: Pedro Alves Date: Wed Aug 20 00:07:40 2014 +0100 Handle partially optimized out values similarly to unavailable values This fixes PR symtab/14604, PR symtab/14605, and Jan's test at https://sourceware.org/ml/gdb-patches/2014-07/msg00158.html, in a tree with bddbbed reverted: 2014-07-22 Pedro Alves * value.c (allocate_optimized_out_value): Don't mark value as non-lazy. The PRs are about variables described by the DWARF as being split over multiple registers using DWARF piece information, but some of those registers being marked as optimised out (not saved) by a later frame. GDB currently incorrectly mishandles these partially-optimized-out values. Even though we can usually tell from the debug info whether a local or global is optimized out, handling the case of a local living in a register that was not saved in a frame requires fetching the variable. GDB also needs to fetch a value to tell whether parts of it are "". Given this, it's not worth it to try to avoid fetching lazy optimized-out values based on debug info alone. So this patch makes GDB track which chunks of a value's contents are optimized out like it tracks contents. That is, it makes value->optimized_out be a bit range vector instead of a boolean, and removes the struct lval_funcs check_validity and check_any_valid hooks. Unlike Andrew's series which this is based on (at https://sourceware.org/ml/gdb-patches/2013-08/msg00300.html, note some pieces have gone in since), this doesn't merge optimized out and unavailable contents validity/availability behind a single interface, nor does it merge the bit range vectors themselves (at least yet). While it may be desirable to have a single entry point that returns existence of contents irrespective of what may make them invalid/unavailable, several places want to treat optimized out / unavailable / etc. differently, so each spot that potentially could use it will need to be careful considered on case-by-case basis, and best done as a separate change. This fixes Jan's test, because value_available_contents_eq wasn't considering optimized out value contents. It does now, and because of that it's been renamed to value_contents_eq. A new intro comment is added to value.h describing "", "" and "" values. gdb/ PR symtab/14604 PR symtab/14605 * ada-lang.c (coerce_unspec_val_to_type): Use value_contents_copy_raw. * ada-valprint.c (val_print_packed_array_elements): Adjust. * c-valprint.c (c_val_print): Use value_bits_any_optimized_out. * cp-valprint.c (cp_print_value_fields): Let the common printing code handle optimized out values. (cp_print_value_fields_rtti): Use value_bits_any_optimized_out. * d-valprint.c (dynamic_array_type): Use value_bits_any_optimized_out. * dwarf2loc.c (entry_data_value_funcs): Remove check_validity and check_any_valid fields. (check_pieced_value_bits): Delete and inline ... (check_pieced_synthetic_pointer): ... here. (check_pieced_value_validity): Delete. (check_pieced_value_invalid): Delete. (pieced_value_funcs): Remove check_validity and check_any_valid fields. (read_pieced_value): Use mark_value_bits_optimized_out. (write_pieced_value): Switch to use mark_value_bytes_optimized_out. (dwarf2_evaluate_loc_desc_full): Copy the value contents instead of assuming the whole value is optimized out. * findvar.c (read_frame_register_value): Remove special handling of optimized out registers. (value_from_register): Use mark_value_bytes_optimized_out. * frame-unwind.c (frame_unwind_got_optimized): Use mark_value_bytes_optimized_out. * jv-valprint.c (java_value_print): Adjust. (java_print_value_fields): Let the common printing code handle optimized out values. * mips-tdep.c (mips_print_register): Remove special handling of optimized out registers. * opencl-lang.c (lval_func_check_validity): Delete. (lval_func_check_any_valid): Delete. (opencl_value_funcs): Remove check_validity and check_any_valid fields. * p-valprint.c (pascal_object_print_value_fields): Let the common printing code handle optimized out values. * stack.c (read_frame_arg): Remove special handling of optimized out values. Fetch both VAL and ENTRYVAL before comparing contents. Adjust to value_available_contents_eq rename. * valprint.c (valprint_check_validity) (val_print_scalar_formatted): Use value_bits_any_optimized_out. (val_print_array_elements): Adjust. * value.c (struct value) : Now a VEC(range_s). (value_bits_any_optimized_out): New function. (value_entirely_covered_by_range_vector): New function, factored out from value_entirely_unavailable. (value_entirely_unavailable): Reimplement. (value_entirely_optimized_out): New function. (insert_into_bit_range_vector): New function, factored out from mark_value_bits_unavailable. (mark_value_bits_unavailable): Reimplement. (struct ranges_and_idx): New struct. (find_first_range_overlap_and_match): New function, factored out from value_available_contents_bits_eq. (value_available_contents_bits_eq): Rename to ... (value_contents_bits_eq): ... this. Check both unavailable contents and optimized out contents. (value_available_contents_eq): Rename to ... (value_contents_eq): ... this. (allocate_value_lazy): Remove reference to the old optimized_out boolean. (allocate_optimized_out_value): Use mark_value_bytes_optimized_out. (require_not_optimized_out): Adjust to check whether the optimized_out vec is empty. (ranges_copy_adjusted): New function, factored out from value_contents_copy_raw. (value_contents_copy_raw): Also copy the optimized out ranges. Assert the destination ranges aren't optimized out. (value_contents_copy): Update comment, remove call to require_not_optimized_out. (value_contents_equal): Adjust to check whether the optimized_out vec is empty. (set_value_optimized_out, value_optimized_out_const): Delete. (mark_value_bytes_optimized_out, mark_value_bits_optimized_out): New functions. (value_entirely_optimized_out, value_bits_valid): Delete. (value_copy): Take a VEC copy of the 'optimized_out' field. (value_primitive_field): Remove special handling of optimized out. (value_fetch_lazy): Assert that lazy values have no unavailable regions. Use value_bits_any_optimized_out. Remove some special handling for optimized out values. * value.h: Add intro comment about and . (struct lval_funcs): Remove check_validity and check_any_valid fields. (set_value_optimized_out, value_optimized_out_const): Remove. (mark_value_bytes_optimized_out, mark_value_bits_optimized_out): New declarations. (value_bits_any_optimized_out): New declaration. (value_bits_valid): Delete declaration. (value_available_contents_eq): Rename to ... (value_contents_eq): ... this, and extend comments. gdb/testsuite/ PR symtab/14604 PR symtab/14605 * gdb.dwarf2/dw2-op-out-param.exp: Remove kfail branches and use gdb_test. commit 6694c4110a37bc951d01132d6e56445d57350627 Author: Jan Kratochvil Date: Tue Aug 19 22:55:10 2014 +0200 Fix -fsanitize=address on unreadable inferior strings echo 'void f(char *s){}main(){f((char *)1);}'|gcc -g -x c -;../gdb ./a.out -ex 'b f' -ex r ====ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000aaccf at pc 0x96eea7 bp 0x7fff75bdbc90 sp 0x7fff75bdbc80 READ of size 1 at 0x6020000aaccf thread T0 #0 0x96eea6 in extract_unsigned_integer .../gdb/findvar.c:108 #1 0x9df02b in val_print_string .../gdb/valprint.c:2513 [...] 0x6020000aaccf is located 1 bytes to the left of 8-byte region [0x6020000aacd0,0x6020000aacd8) allocated by thread T0 here: #0 0x7f45fad26b97 in malloc (/lib64/libasan.so.1+0x57b97) #1 0xdb3409 in xmalloc common/common-utils.c:45 #2 0x9d8cf9 in read_string .../gdb/valprint.c:1845 #3 0x9defca in val_print_string .../gdb/valprint.c:2502 [..] ====ABORTING gdb/ 2014-08-18 Jan Kratochvil Fix -fsanitize=address on unreadable inferior strings. * valprint.c (val_print_string): Fix access before BUFFER. commit 0718a8da7b359f184e1b3a866645cc2f9611771b Author: Pedro Alves Date: Tue Aug 19 18:18:31 2014 +0100 Remove stale comment This comment is no longer true for watchpoints since commit 31e77af2 (PR breakpoints/7143 - Watchpoint does not trigger when first set). gdb/testsuite/ * gdb.base/watchpoint-hw-hit-once.c (main): Update comment. commit 89a1c21a1db9c2b7add8958531ccc3ff692a49eb Author: Simon Marchi Date: Fri Aug 15 16:34:34 2014 -0400 Convert target_structs vector to VEC I thought that this home made implementation of a vector could be replaced by the more standard VEC. The implementation seems to predate the introduction of vec.h, so that would explain why it exists. Ran make check before and after, no new failures. gdb/ChangeLog: 2014-08-19 Simon Marchi * target.c (target_struct_size): Remove. (target_struct_allocsize): Remove. (DEFAULT_ALLOCSIZE): Remove. (target_ops_p): New typedef. (DEF_VEC_P (target_ops_p)): New vector type. (target_structs): Change type to VEC (target_ops_p). (add_target_with_completer): Replace "push" code by VEC_safe_push. (find_default_run_target): Rewrite for loop following changes to target_structs. commit f7f2534e71f51f11f9f00f6365d5d8f37e6df054 Author: Nick Clifton Date: Tue Aug 19 15:51:43 2014 +0100 This patch adds support for FreeBSD ARM in gas. Before FreeBSD-8 there was/is no arm support from the OS side. FreeBSD-9.x added ARM support but only for the OABI. From FreeBSD-10 upwards there is EABI support. * Makefile.am: Add FreeBSD ARM support. * Mafefile.in: Regenerate. * configure.tgt: Add FreeBSD ARM support. * config/te-armfbsdeabi.h: New file. * config/te-armfbsdvfp.h: Likewise. commit 9ace48f3d7d80ce09c5df60cccb433470410b11b Author: Andreas Arnez Date: Tue Aug 19 15:42:13 2014 +0100 This patch set mainly aims at improving the S/390 disassembler's readability and also fixes some minor issues. S/390: Split disassembler routine into smaller functions S/390: Fix disassembler's treatment of signed/unsigned operands S/390: Fix off-by-one error in disassembler initialization S/390: Simplify opcode search loop in disassembler S/390: Drop function pointer dereferences in disassembler S/390: Various minor simplifications in disassembler commit cb417230fb10c4f5b97cf8cffa973937f7bc8b6c Author: Joel Brobecker Date: Tue Aug 19 14:55:22 2014 +0200 value_from_pointer: remove call to resolve_dynamic_type The given type is expected to always be a TYPE_CODE_PTR, for which resolve_dynamic_type does nothing. So this patch removes this call. gdb/ChangeLog: * value.c (value_from_pointer): Remove use of resolve_dynamic_type. Adjust code accordingly. Adjust function description comment. commit 13b448cdf796fdc4a92e37a6bc20ce785b7c65dd Author: Yao Qi Date: Tue Aug 12 09:14:08 2014 +0800 Set breakpoint on the right line In gdb.base/watchpoint-hw-hit-once.exp, test scans source and set breakpoint on the line having "break-at-exit", gdb_breakpoint [gdb_get_line_number "break-at-exit"] However, in watchpoint-hw-hit-once.c, there are two lines having this key word: dummy = 1; /* Stub to catch break-at-exit after WATCHEE has been hit. */ dummy = 2; /* break-at-exit */ so the test sets breakpoint on the first one, while I think it is expected to set breakpoint on the second one, as far as I can tell from the comments in watchpoint-hw-hit-once.c: /* Stub lines are present as no breakpoints/watchpoint gets hit if current PC already stays on the line PC while entering "step"/"continue". */ This patch is to change the source matching pattern so that test can correctly set breakpoint on the right line. This patch fixes a fail we found on arm-none-eabi target. (gdb) PASS: gdb.base/watchpoint-hw-hit-once.exp: continue continue^M Continuing.^M ^M *** EXIT code 0^M [Inferior 1 (Remote target) exited normally]^M (gdb) FAIL: gdb.base/watchpoint-hw-hit-once.exp: continue to break-at-exit (the program exited) Run it again on x86_64-linux, no result changes. gdb/testsuite: 2014-08-19 Yao Qi * gdb.base/watchpoint-hw-hit-once.exp: Set breakpoint on the right line. commit 817e0957a556d241be6f8c5e0e649ac53b1fb020 Author: Yao Qi Date: Mon Aug 11 19:02:58 2014 +0800 Support _Complex in hard-VFP abi Hi, When we pass "-mfloat-abi=hard" flag in the GDB testing, we see the following fails, FAIL: gdb.base/callfuncs.exp: p t_float_complex_values(fc1, fc2) FAIL: gdb.base/callfuncs.exp: p t_float_complex_many_args(fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4) FAIL: gdb.base/callfuncs.exp: p t_double_complex_values(dc1, dc2) FAIL: gdb.base/callfuncs.exp: p t_double_complex_many_args(dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4) FAIL: gdb.base/callfuncs.exp: p t_long_double_complex_values(ldc1, ldc2) FAIL: gdb.base/callfuncs.exp: p t_long_double_complex_many_args(ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4) FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns float _Complex FAIL: gdb.base/callfuncs.exp: call inferior func with struct - returns double _Complex The hard-VFP ABI was supported by GDB overal, done by this patch https://sourceware.org/ml/gdb-patches/2009-07/msg00686.html but "vectors and complex types are not currently supported", mentioned in the patch. As a result, these tests fail. This patch is to support _Complex types in hard-VFP abi. As specified in "7.1.1, Procedure Call Standard for the ARM Arch", the layout of _Complex types is a struct, which is identical to the layout on amd64, so I copy Mark's comments to amd64 support. Regression tested on arm-none-eabi target. OK to apply? gdb: 2014-08-19 Yao Qi * arm-tdep.c (arm_vfp_cprc_sub_candidate): Handle _Complex types. commit 2974be626b5e40033b9a259a072b2fe123469126 Author: Alan Modra Date: Tue Aug 19 21:59:56 2014 +0930 Fix --diable-shared --enable-plugins build breakage Directories that don't use libtool need to add -ldl (on most *nix hosts) to provide dlopen for libbfd. config/ * plugins.m4 (AC_PLUGINS): If plugins are enabled, add -ldl to LIBS via AC_SEARCH_LIBS. gdb/ * acinclude.m4 (GDB_AC_CHECK_BFD): Don't add -ldl. * config.in: Regenerate. sim/ppc/ * configure.ac: Invoke AC_PLUGINS. * config.in: Regenerate. and regen lots of configure files. commit 180eb0634cd876d759f3cbd5bdce24d363f9f2f1 Author: Nick Clifton Date: Tue Aug 19 11:34:14 2014 +0100 Replace static variables in the MSP430 simulator with fields in the cpu state structure. * msp430-sim.c: Move static hardware multiply support variables from here... * msp430-sim.h (msp430_cpu_state): ... into here ... * msp430-sim.c (get_op, put_op): ... and update references to use the msp430_cpu_state structure. commit 34abf635b3edf9d70b24aa655ffd7d4696d48cde Author: Gary Benson Date: Wed Jul 30 16:21:55 2014 +0100 Introduce common-debug.h This introduces common-debug.h. This holds the functions debug_printf and debug_vprintf, two functions that the common code can use to print debugging messages. Clients of the common code are expected to implement debug_vprintf; a debug_vprintf function is written from scratch for GDB, and gdbserver's existing debug_printf is repurposed as debug_vprintf. common/agent.c is changed to use debug_vprintf rather than defining the macro DEBUG_AGENT depending on GDBSERVER. nat/i386-dregs.c is changed to use the externally-implemented debug_printf, rather than defining it itself. gdb/ChangeLog: * common/common-debug.h: New file. * common/common-debug.c: Likewise. * debug.c: Likewise. * Makefile.in (SFILES): Add common/common-debug.c. (HFILES_NO_SRCDIR): Add common/common-debug.h. (COMMON_OBS): Add common-debug.o and debug.o. (common-debug.o): New rule. * common/common-defs.h: Include common-debug.h. * common/agent.c (debug_agent_printf): New function. (DEBUG_AGENT): Redefine. * nat/i386-dregs.c (debug_printf): Undefine. gdb/gdbserver/ChangeLog: * Makefile.in (SFILES): Add common/common-debug.c. (OBS): Add common-debug.o. (common-debug.o): New rule. * debug.h (debug_printf): Don't declare. * debug.c (debug_printf): Renamed and rewritten as... (debug_vprintf): New function. commit f6e94d78b2fe30977ffefcb26420109940ca7bb1 Author: Gary Benson Date: Wed Jul 30 16:14:21 2014 +0100 Move print-utils.h to common-defs.h This commit moves the inclusion of print-utils.h to common-defs.h and removes all other inclusions. gdb/ChangeLog: * common/common-defs.h: Include print-utils.h. * utils.h: Do not include print-utils.h. gdb/gdbserver/ChangeLog: * utils.h: Do not include print-utils.h. commit 9239eeabe340e1662c5df8f816785477309e1c0b Author: Gary Benson Date: Wed Jul 30 15:31:10 2014 +0100 Introduce common-types.h This introduces common-types.h. This file defines various standard types used by gdb and gdbserver. Currently these types are conditionally defined based on GDBSERVER. The long term goal is to remove all such tests; however, this is difficult as currently gdb uses definitions from BFD. In the meantime this is still a step in the right direction. gdb/ChangeLog: * common/common-types.h: New file. * Makefile.in (HFILES_NO_SRCDIR): Add common/common-types.h. * common/common-defs.h: Include common-types.h. * defs.h (gdb_byte, CORE_ADDR, CORE_ADDR_MAX, LONGEST) (ULONGEST): Remove. gdb/gdbserver/ChangeLog: * server.h: Add static assertion. (gdb_byte, CORE_ADDR, LONGEST, ULONGEST): Remove. commit ef87c8bbe7d1c4a987578626655f4a15555c7f4a Author: Gary Benson Date: Wed Jul 30 14:09:07 2014 +0100 Introduce common/errors.h This introduces common/errors.h. This holds some error- and warning- related declarations that can be used by the code in common, nat and target. Some of the declared functions must be provided by the client as documented by the header file comments. gdb/ChangeLog: * common/errors.h: New file. * common/errors.c: Likewise. * Makefile.in (SFILES): Add common/errors.c. (HFILES_NO_SRCDIR): Add common/errors.h. (COMMON_OBS): Add errors.o. (errors.o): New rule. * common/common-defs.h: Include errors.h. * utils.h (perror_with_name, error, verror, warning, vwarning): Don't declare. * common/common-utils.h: (malloc_failure, internal_error): Likewise. gdb/gdbserver/ChangeLog: * Makefile.in (SFILES): Add common/errors.c. (OBS): Add errors.o. (IPA_OBS): Add errors-ipa.o. (errors.o): New rule. (errors-ipa.o): Likewise. * utils.h (perror_with_name, error, warning): Don't declare. * utils.c (warning): Renamed and rewritten as... (vwarning): New function. (error): Renamed and rewritten as... (verror): New function. (internal_error): Renamed and rewritten as... (internal_verror): New function. commit 196a707b15ab32c29ba021b4f5b9ea202c109fe1 Author: Gary Benson Date: Tue Aug 5 10:20:05 2014 +0100 Ensure internal_vproblem always prints the message While working on internal_vproblem I noticed that the error/warning message is suppressed if problem->should_quit is internal_problem_yes or internal_problem_no. This behaviour seems wrong. This commit modifies internal_vproblem to emit the message regardless of the user's settings. gdb/ 2014-08-19 Gary Benson * utils.c (internal_vproblem): Always print the message. commit 774891604bce270965bd356b8fc81fd51680050c Author: Alan Modra Date: Tue Aug 19 09:31:12 2014 +0930 daily update commit 1cbf50779e15893c7801a0332d9e67908a6a7556 Author: David Blaikie Date: Mon Aug 18 12:07:49 2014 -0700 boards/fission.exp: Explicitly pass -ggnu-pubnames for clang. * boards/fission.exp: Explicitly pass -ggnu-pubnames for clang. commit bf0fae198aeccc83fc9cc53a3318d58320ee2655 Author: Joel Brobecker Date: Mon Aug 18 19:41:57 2014 +0200 gdb.dwarf2/data-loc.exp: Remove second DW_AT_upper bound in array range. The testcase generates an assembly file where a second DW_AT_upper_bound attribute gets generated in the array range. This was definitely unintentional, and I only noticed this after pushing the testcase, when dumping one more time the DWARF data using readelf. This patch fixes it. gdb/testsuite/ChangeLog: * gdb.dwarf2/data-loc.exp: Remove second DW_AT_upper bound attribute in array range. commit ded4fc8f9cd3446f28905ca46af056e961d5c67f Author: Doug Evans Date: Mon Aug 18 10:04:18 2014 -0700 ada-typeprint.c (print_range): Initialize lo,hi for gcc -Wall. * ada-typeprint.c (print_range): Initialize lo,hi for gcc -Wall. commit 3ce3a066e18b52c1b7c8da841e0416ecf687e1e5 Author: Nick Clifton Date: Mon Aug 18 17:34:03 2014 +0100 This fixes the processing of BFD_RELOC_RL78_DIFF fixups when the size is less than 4. This affects DWARF debug info generation in particular. * config/tc-rl78.c (md_apply_fix): Correct handling of small sized RELOC_RL78_DIFF fixups. commit 3c8c5dcc9873798483c8abd6e614edb8ae1608a4 Author: Joel Brobecker Date: Wed Aug 13 16:45:59 2014 -0700 DW_AT_data_location and DW_OP_push_object_address testcase. This testcase allows us to test the proper processing of both DW_AT_data_location and DW_OP_push_object_address using a hand-crafted testcase duplicating how we expect the Ada compiler to represent unbounded arrays. gdb/testsuite/ChangeLog: * gdb.dwarf2/data-loc.c, gdb.dwarf2/data-loc.exp: New files. commit 950c97d860f07274cad59b71c57704793e7f5a83 Author: Joel Brobecker Date: Thu Aug 14 15:57:00 2014 -0700 [Ada] "ptype" of array where bound value uses DW_OP_push_object_address Consider an Ada array type where the DWARF debugging info for at least one of the bounds involves an expression containing a DW_OP_push_object_address operation. Trying to "ptype" that type currently yields: (gdb) ptype foo.array_type type = array (Location address is not set. This patch improves ada-typeprint by adding handling of the situation where an array range type has dynamic bounds. In that case, it prints the array bounds using Ada's typical syntax for unbounded ranges "<>": (gdb) ptype array_type type = array (<>) of integer gdb/ChangeLog: * ada-typeprint.c (type_is_full_subrange_of_target_type): Return 0 if TYPE is dynamic. (print_range): Add handling of dynamic ranges. commit 3cdcd0ce16272ae8e8183699a341d081b6eb1b21 Author: Joel Brobecker Date: Mon Aug 11 16:37:10 2014 -0700 Add support for DW_AT_data_location. gdb/ChangeLog: * gdbtypes.h (struct main_type): Add field "data_location". (TYPE_DATA_LOCATION, TYPE_DATA_LOCATION_BATON) (TYPE_DATA_LOCATION_ADDR, TYPE_DATA_LOCATION_KIND): New macros. * gdbtypes.c (is_dynamic_type): Return 1 if the type has a dynamic data location. (resolve_dynamic_type): Add DW_AT_data_location handling. (copy_recursive, copy_type): Copy the data_location information when present. * dwarf2read.c (set_die_type): Add DW_AT_data_location handling. * value.c (value_from_contents_and_address): Add DW_AT_data_location handling. commit 08412b0722301c4ffbd9fd51d4056bc436b69658 Author: Joel Brobecker Date: Mon Aug 11 16:36:04 2014 -0700 Add support for DW_OP_push_object_address. gdb/ChangeLog: * dwarf2expr.h (struct dwarf_expr_context_funcs): Uncomment field "get_object_address". * dwarf2expr.c (execute_stack_op): Add handling for DW_OP_push_object_address. * dwarf2loc.h (dwarf2_evaluate_property): Add "address" field. * dwarf2loc.c (struct dwarf_expr_baton): Add field "obj_address". (dwarf_expr_push_dwarf_reg_entry_value): Set baton_local.obj_address. (dwarf_expr_get_obj_addr): New function. (dwarf_expr_ctx_funcs): Add get_object_address field. (dwarf2_evaluate_loc_desc_full): Set baton.obj_address. (dwarf2_locexpr_baton_eval): Add parameter "addr". Use it. (dwarf2_evaluate_property): Add parameter "address". Use it. (needs_get_obj_addr): New function. (needs_frame_ctx_funcs): Add get_object_address field. (dwarf2_compile_expr_to_ax): Add DW_OP_push_object_address handling. * gdbtypes.c (resolve_dynamic_range): Add "addr" field. Use it. (resolve_dynamic_array): Likewise. commit 84754697d2ac74094af81cd484d4471c2e58117b Author: Joel Brobecker Date: Thu Aug 14 14:00:02 2014 -0700 ada_evaluate_subexp: Avoid static fixing when possible. Now that the OP_VAR_VALUE section of this function has been reorganized a bit, we can fall-back on standard evaluation when static fixing is not required. This patch does that, but being exclusive about when static fixing has to be used, rather than doing it all the time when noside is EVAL_AVOID_SIDE_EFFECTS. This will pave the way for later when we want to evaluate entities that have no GNAT encodings related to them but dynamic properties instead. In that case, we expect the standard evaluation to resolve those dynamic properties for us, even in no-side-effect mode. gdb/ChangeLog: * ada-lang.c (ada_evaluate_subexp) : When noside is EVAL_AVOID_SIDE_EFFECTS, only return a statically fixed value for records and unions for which some GNAT encodings are present. commit da5c522f5be478d020c14038ace2ba2ee2b9e032 Author: Joel Brobecker Date: Thu Aug 14 13:36:24 2014 -0700 avoid "if ... else if ... else" logic in ada-lang.c::ada_evaluate_subexp The OP_VAR_VALUE branch in ada_evaluate_subexp is written with multiple "if ... else if ... else if ... else ..." block. But in practice, these blocks all either goto out of that block of code, or return. This patch rewrites this code slightly by replacing the "else if"-s by simple "if"s. This should better reflect the ideal processing where we try to do a standard eval whenever possible, and only do something else when the standard eval does not work. On a pratical level, this patch makes it easier to fall through to the default processing when none of the special situations are detected, thus making it easier to add more handlers of those special situations; or to remove them as they no longer become necessary! gdb/ChangeLog: * ada-lang.c (ada_evaluate_subexp) : Slight code rewrite to avoid "else if" and "else" constructs. Should be a no-op in practice. commit 0d72a7c318b83384973583323f8c7d54bf1bbffa Author: Joel Brobecker Date: Thu Aug 14 13:26:34 2014 -0700 Fix indentation level in ada-lang.c::ada_evaluate_subexp. I just happen to notice that a lexical block was missing one indentation level. gdb/ChangeLog: * ada-lang.c (ada_evaluate_subexp) : Fix identation of lexical block. commit cb8e01c6bbe1da1c6e6553e2bf20f0d6e48e1d42 Author: Alan Modra Date: Mon Aug 18 18:38:24 2014 +0930 LTO plugin with older gcc * ld-plugin/lto.exp: Use gcc -print-file-name to find lto plugin. commit 1009ef284f3932c41cff1158818c87821fe511fa Author: Alan Modra Date: Mon Aug 18 18:14:56 2014 +0930 PowerPC fix for ifunc broken by d1eca1e4 This probably could be fixed by making changes in relocate_section for ifunc, but it's simpler to disable the optimisation for ifunc. * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Don't attempt to use dynrelocs for ifunc. * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Similarly. commit 1240be6b7d0a5604c4e3efe12c9e1d08ebc246be Author: Alan Modra Date: Mon Aug 18 14:43:03 2014 +0930 PR 17287, DT_NEEDED of unneeded libraries affects --as-needed PR 17287 bfd/ * elflink.c (on_needed_list): Only consider libraries that have been loaded. ld/ * ld.texinfo (--as-needed): Clarify that references from libraries must be from needed libraries. ld/testsuite/ * ld-plugin/needed3.c: New file. * ld-elf/shared.exp: Add needed3 test. commit 759388538d1339f6a634b2777e24f46427dd9c96 Author: Alan Modra Date: Mon Aug 18 09:33:35 2014 +0930 Return error status from bfd_elf_discard_info. bfd/ * elflink.c (bfd_elf_discard_info): Return int error status. * stabs.c (_bfd_discard_section_stabs): Comment typo fix. * bfd-in.h (bfd_elf_discard_info): Updata prototype. * bfd-in2.h: Regenerate. ld/ * emultempl/aarch64elf.em (gld${EMULATION_NAME}_after_allocation): Handle error status from bfd_elf_discard_info. * emultempl/armelf.em: Likewise. * emultempl/elf32.em: Likewise. * emultempl/hppaelf.em: Likewise. * emultempl/metagelf.em: Likewise. * emultempl/nios2elf.em: Likewise. * emultempl/ppc64elf.em: Likewise. * emultempl/tic6xdsbt.em: Likewise. * emultempl/vms.em: Likewise. commit 1e53931944810798e6741f664bd3ec727272fe11 Author: Alan Modra Date: Mon Aug 18 09:31:01 2014 +0930 Cast result of TC_PARSE_CONS_EXPRESSION * read.c (parse_mri_cons): Warning fix. commit 87ea0aeaa31879f3cfdc91497f14a3f708a3d744 Author: Alan Modra Date: Mon Aug 18 09:30:46 2014 +0930 daily update commit d2db64e9143227f9b945405ccafc40e33fc5d667 Author: Alan Modra Date: Sun Aug 17 09:30:44 2014 +0930 daily update commit e66d44466912ecf581f6b67ff299d064c7bf4f1a Author: Siva Chandra Date: Wed Jul 9 10:25:48 2014 -0700 Add new argument NOSIDE to find_overload_match. This is a fix for PR c++/17132. If this new argument is set to EVAL_AVOID_SIDE_EFFECTS, then the object's memory will not be read while picking the best overload match. gdb/ * eval.c: Update all calls to find_overload_match. * valarith.c: Likewise. (value_user_defined_cpp_op, value_user_defined_op): New argument NOSIDE. Update all callers. * valops.c (find_overload_match): New argument NOSIDE. * value.h (find_overload_match): Update signature. gdb/testsuite * gdb.cp/pr17132.cc: New file. * gdb.cp/pr17132.exp: New file. commit 940df408121be31beed22ef7a5ad133cb1592726 Author: Siva Chandra Date: Mon Aug 4 18:07:43 2014 -0700 Fix xmethod Python so that it works with Python3. gdb/ * python/lib/gdb/command/xmethods.py (set_xm_status1): Use the 'items' methods instead of 'iteritems' method on dictionaries. gdb/testsuite/ * gdb.python/py-xmethods.py (A_getarrayind) (E_method_char_worker.__call__, E_method_int_worker.__call__): Use 'print' with function call syntax. (E_method_matcher.match): Fix tab vs space indentation mixup. commit a0d09f12dbd69d68bb7db0e4c77f3288dec6f81b Author: Alan Modra Date: Sat Aug 16 09:31:03 2014 +0930 daily update commit 699ca60ad9d8e94cd3da1b517878cdb155aee87b Author: Doug Evans Date: Fri Aug 15 16:22:51 2014 -0700 (dwarf_decode_lines_1): Move definition of adj_opcode closer to use. * dwarf2read.c (dwarf_decode_lines_1): Move definition of adj_opcode closer to use. commit 37780ee59e60da0da88b4b973653b0e49223865e Author: Doug Evans Date: Fri Aug 15 16:05:47 2014 -0700 dwarf2read.c (dwarf_decode_lines_1): Add comment. * dwarf2read.c (dwarf_decode_lines_1): Add comment. commit faa743bb1b9772427351b8739bdef1f6b4a32f60 Author: Roland McGrath Date: Fri Aug 15 15:46:40 2014 -0700 Regenerate sim configury. commit 0ad93d4feb33a43ea32301721fc370a243b08940 Author: Doug Evans Date: Fri Aug 15 15:38:56 2014 -0700 (dwarf_decode_lines_1): Delete local "column", unused. * dwarf2read.c (dwarf_decode_lines_1): Delete local "column", unused. commit 20d8c3722e283ae1240bbf03fc11eccfce936039 Author: Doug Evans Date: Fri Aug 15 15:24:35 2014 -0700 (dwarf_decode_lines_1): Delete local basic_block, unused. * dwarf2read.c (dwarf_decode_lines_1): Delete local basic_block, unused. commit cb039ba4535a3e9ba59517dc973c842c513b4f05 Author: Eli Zaretskii Date: Fri Aug 15 17:04:27 2014 +0300 Avoid compiler warnings about incomplete parameter types. gdb/ChangeLog: * dcache.h: Include target.h, to avoid compile time warnings. commit eb7a547ad40c97ca306e29c94678e4eab1822089 Author: Joel Brobecker Date: Wed Aug 13 11:15:00 2014 -0700 Add "frame.h" #include in gdbarch.h. This include is needed because gdbarch_dummy_id needs the full definition of struct frame_id. gdb/ChangeLog: * gdbarch.sh: #include "frame.h" in gdbarch.h. Delete "struct frame_info" partial declaration. * gdbarch.h: Regenerate. Tested on x86_64-linux by rebuilding GDB. commit ebcc6c3a7b5021bab3cc30e9b7d4c340153a0c32 Author: Yao Qi Date: Thu Aug 14 15:24:58 2014 +0800 Skip tfile.exp if unable to generate trace file I added proc generate_tracefile in this patch https://sourceware.org/ml/gdb-patches/2014-03/msg00591.html but tfile.exp isn't skipped as changelog entry said: * gdb.trace/tfile.exp: Skip the test if generate_tracefile return 0. it is a mistake I made at the last minute. Patch below fixed it. gdb/testsuite: 2014-08-15 Yao Qi * gdb.trace/tfile.exp: Return -1 if generate_tracefile returns false. commit 7dba4c934c4c294f28060207df711f730f23a2a8 Author: Alan Modra Date: Fri Aug 15 09:31:09 2014 +0930 daily update commit 775e0f048171cae1cbe0d8bfb230204142e06834 Author: Yao Qi Date: Thu Aug 14 10:51:10 2014 +0800 Set print symbol off in some tests GDB in default prints the symbol associated on an address, and tests assume that there is no symbol on address zero. However, on bare metal target, address may be mapped to zero and there may be a symbol. Then, some tests fail as below: print const_cast (0)^M $8 = (void *) 0x0 <_ftext>^M (gdb) FAIL: gdb.cp/casts.exp: const_cast of 0 p acp->c1^M $9 = (A *) 0x0 <_ftext>^M (gdb) FAIL: gdb.cp/class2.exp: p acp->c1 This patch is to set print symbol off in these tests, like what I did previously https://sourceware.org/ml/gdb-patches/2014-07/msg00257.html gdb/testsuite: 2014-08-15 Yao Qi * gdb.cp/casts.exp: Set print symbol off. * gdb.cp/class2.exp: Likewise. * gdb.cp/overload.exp: Likewise. * gdb.cp/templates.exp: Likewise. commit 783cecc8b3b4aeb00b901cdc0883f93839ac222b Author: Yao Qi Date: Mon Aug 4 14:26:25 2014 +0800 Remove pst from dwarf_decode_lines_1 Hi, Parameter 'pst' of function dwarf_decode_lines_1 isn't used except to compute decode_for_pst_p, which has been got in the caller dwarf_decode_lines. I wonder it would be good if we just pass 'decode_for_pst_p'. gdb: 2014-08-15 Yao Qi * dwarf2read.c (dwarf_decode_lines_1): Remove parameter 'pst'. Add parameter 'decode_for_pst_p'. Callers update. commit 60ac5798c80a8c0e51c34756ade51c6312add573 Author: Mike Frysinger Date: Sat Jul 26 23:57:28 2014 +0530 opcodes: blackfin: convert ad-hoc ints to bfd_boolean These various int fields are being used as booleans, so change to the existing bfd_boolean style. Signed-off-by: Mike Frysinger commit b3f3b4b0308163d60eaff8ba2727997149fd1d2a Author: Mike Frysinger Date: Tue Dec 3 19:17:03 2013 -0500 opcodes: blackfin: simplify decode_CC2stat_0 logic These multiple if statements can be condensed down into a single if statement and an array of strings. Signed-off-by: Mike Frysinger commit a4e600b22e938e766fefa9bd0ab111e262e639a6 Author: Mike Frysinger Date: Sat Feb 5 16:47:02 2011 -0500 opcodes: blackfin: avoid duplicate memory reads Rather than reading the same memory twice, pass the value back up. Signed-off-by: Mike Frysinger commit 513ea82edf8533e3483073561c06be97de035c83 Author: Alan Modra Date: Thu Aug 14 15:53:19 2014 +0930 Fix for objdump segfault on broken PE executable * peXXigen.c (pe_print_reloc): Protect against access past end of .reloc section. commit 18cd5bce47dc4a33dd1d8e3036b99d2fa7e3234f Author: Alan Modra Date: Thu Aug 14 13:49:31 2014 +0930 Linker part of PR16563 fix Presents .eh_frame input sections to the optimisation machinery in elf-eh-frame.c in the order they are given by the linker script. PR 16563 bfd/ * elflink.c (bfd_elf_discard_info): Process .eh_frame and .stab in the order they are mapped to output sections. ld/ * ldlang.c (map_head_is_link_order): Rename from stripped_excluded_sections. (lang_clear_os_map): New function, extracted from.. (strip_excluded_output_sections): ..here. * ldlang.h (lang_clear_os_map): Declare. * ldwrite.c (ldwrite): Call lang_clear_os_map. * emultempl/sh64elf.em (sh64_elf_${EMULATION_NAME}_after_allocation): Likewise. commit b879806f2fdd2eca7092d7b854d6cbbbbbd0493b Author: Alan Modra Date: Thu Aug 14 13:46:09 2014 +0930 configury changes to make ld plugin support controlled by --enable-plugins This also makes --enable-plugins default to on for hosts that can support plugins, so we have consistent lto toolchain support. The ACX_LARGEFILE moves aren't strictly necessary, but are harmless and will be necessary if plugin support is extended to more hosts via libtool's dlopen support. I started down that path then decided it was more work than I was interested in doing. (ACX_LARGEFILE invokes AC_PLUGINS.) config/ * plugins.m4: Test for dlfcn.h or windows.h here to set default for --enable-plugins. Report error if someone tries to enable plugins on a host we don't support. bfd/ * configure.ac: Delete redundant plugin related checks. * configure: Regenerate. binutils/ * configure.ac: Move ACX_LARGEFILE after LT_INIT. * config.in: Regenerate. * configure: Regenerate. gas/ * configure.ac: Move ACX_LARGEFILE after LT_INIT. * config.in: Regenerate. * configure: Regenerate. gprof/ * configure.ac: Move ACX_LARGEFILE after LT_INIT. * configure: Regenerate. * gconfig.in: Regenerate. ld/ * configure.ac: Move AC_PROG_CC and other macros earlier. Delete plugin checks now done in config/plugins.m4. * config.in: Regenerate. * configure: Regenerate. commit 23ebe1a0bd86fdae83ca738cf75be67b58703756 Author: Alan Modra Date: Thu Aug 14 10:43:41 2014 +0930 Simplify is_ir_dummy_bfd test is_ir_dummy_bfd started life before BFD_PLUGIN was invented. * plugin.c (is_ir_dummy_bfd): Test BFD_PLUGIN flag rather than flags.claimed. commit 8123365312729e65a4a36bc9174a8b229afc29fa Author: Sriraman Tallam Date: Wed Aug 13 18:40:19 2014 -0700 Add option -no-pie. commit 78090f7c831f412ea34ceab7d3a8169e8053760c Author: Alan Modra Date: Thu Aug 14 09:31:08 2014 +0930 daily update commit ffccb7afb54cf09db1013f941e8dfc5127b01876 Author: Stefan Kristiansson Date: Wed Aug 13 23:17:50 2014 +0300 bfd: or1k: avoid emitting R_OR1K_INSN_REL_26 in shared libs This fixes a bug where R_OR1K_INSN_REL_26 relocations would be emitted into shared libraries even when the referenced symbol was hidden or the symbol was contained in the same .so which had been linked with -Bsymbolic. bfd/ * elf32-or1k.c (or1k_elf_relocate_section, or1k_elf_check_relocs, allocate_dynrelocs): Use SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL and SYMBOLIC_BIND. commit 703ec4e8d0c1daac6033e14170c0ddd28c455c0a Author: Mike Frysinger Date: Sat Feb 5 16:37:39 2011 -0500 opcodes: blackfin: push down global state The variables used to track insn state should be pushed down into the private_data structure to avoid pollution across calls. This also happens to fix the output when hitting comments/invalid insns which needs to tweak a gas test. Signed-off-by: Mike Frysinger commit ed2c4879565a32432f6cbbf7569e0922835475b0 Author: Mike Frysinger Date: Sat Jul 26 23:44:37 2014 +0530 opcodes: blackfin: do not force align the PC If the user gives us an unaligned PC, then dump an error as such. Otherwise if you try to disassemble at an odd address, the output will look weird (it'll read one byte earlier). This can be seen in one of the gas tests where data is in the middle of .text, so move the data to .data like it should be in the first place. Signed-off-by: Mike Frysinger commit ba32981791a749df5e742abbc4bc2f71a3161d6e Author: Mike Frysinger Date: Sat Feb 5 01:42:19 2011 -0500 opcodes: blackfin: handle memory read errors The current code ignores memory read errors which isn't a great idea. So add a helper function which takes care of error checking and update the code to use that. Signed-off-by: Mike Frysinger commit 63e1777c6c20434c9909eb0f235b14f623d1f914 Author: Yaakov Selkowitz Date: Wed Aug 13 11:43:28 2014 +0100 This is necessary for adding __cxa_atexit support for Cygwin in GCC without exporting __dso_handle from every DLL. * pe-dll.c (autofilter_entry_type autofilter_symbollist_i386): Add __dso_handle. commit 65c749e7c049f9bf944c5fbe9e727b7a8b4ccc7c Author: Yao Qi Date: Tue Jul 1 08:53:41 2014 +0800 Fix build/17104 This patch is to fix the build error when GDB is configured as: CFLAGS=-Wall ./configure --with-babeltrace; make This patch adds one line of code in configure test to use local variable 'pos'. Note that we append -Werror to CFLAGS to catch the warning related to assignment to scope. See more in this thread https://sourceware.org/ml/gdb-patches/2014-08/msg00045.html 2014-08-13 Yao Qi PR build/17104 * configure.ac: Use local variable 'pos'. * configure: Regenerated. commit e20e2464f8ae8803869d788b187cffc522c26155 Author: Alan Modra Date: Wed Aug 13 09:31:13 2014 +0930 daily update commit 6374269c11186f88873791d7517e53dce5284b54 Author: H.J. Lu Date: Tue Aug 12 15:53:48 2014 -0700 Remove type directive * gas/i386/omit-lock.s: Remove type directive. commit 0fef4b9893c61ad13eb8b0a2bfc3035b63bf8888 Author: Alan Modra Date: Wed Aug 13 07:32:21 2014 +0930 Fix non-ELF build breakage * ldlang.c (open_input_bfds): Don't use bfd_elf_get_dyn_lib_class. commit 2d03dd2f8df86f7c2110e7e10039a32830f80148 Author: Alan Modra Date: Tue Aug 12 20:27:19 2014 +0930 Tighten test for ld plugin support To not match spu --plugin option. * lib/ld-lib.exp (check_plugin_api_available): Match "-plugin PLUGIN". commit e77620a58ff6050a8f1923062262d7811f8f0083 Author: Alan Modra Date: Tue Aug 12 19:29:33 2014 +0930 Fix build breakage when ld plugins disabled * ldlang.h (struct lang_input_statement_flags): Don't make "reload" field conditional on ENABLE_PLUGINS. * ldlang.c (open_input_bfds): Expand plugin_should_reload. * plugin.h (plugin_should_reload): Delete. * plugin.c (plugin_should_reload): Delete. commit 4613510308cea27713e8c7424b2afee9b99f6226 Author: Alan Modra Date: Tue Aug 12 10:43:33 2014 +0930 Change ld "notice" interface for better handling of indirect symbols The main aim of this change was to have non_ir_ref set correctly on new indirect symbols. I could have added a "copy" param to the "notice" function, so that indirect symbols could be created in plugin_notice, but it seemed cleaner to create indirect syms earlier and pass them rather than "string" to "notice". include/ * bfdlink.h (struct bfd_link_callbacks ): Remove "string" param, add "inh". bfd/ * coff-aux.c (coff_m68k_aux_link_add_one_symbol): Only call "notice" here when not calling the generic add_symbol function. Formatting. Correct handling of indirect symbols. Update notice call. * elflink.c (_bfd_elf_notice_as_needed): Update notice call. * linker.c (_bfd_generic_link_add_one_symbol): Create indirect symbols early. Update notice call. Add comments regarding weak symbols vs. indirect. ld/ * ldmain.c (notice): Update args. * plugin.c (plugin_notice): Likewise. Follow warning sym link. Handle new indirect symbol. commit 88d3f0870bdcb030d1b9f56f48e389860ff41918 Author: Alan Modra Date: Tue Aug 12 11:08:26 2014 +0930 missing changelog commit 61f41c3c243bbcc0ab2e5adb3157ce00dc11fc27 Author: Alan Modra Date: Tue Aug 12 10:31:41 2014 +0930 Fix non-plugin warning symbol handling PR ld/16746 include/ * bfdlink.h (struct bfd_link_info): Add lto_plugin_active. bfd/ * linker.c (_bfd_generic_link_add_one_symbol ): Handle !lto_plugin_active. ld/ * plugin.c (plugin_load_plugins): Set link_info.lto_plugin_active. commit d769e349bc2c28261d4b2391b58eb7dc3f452e99 Author: Doug Evans Date: Mon Aug 11 17:21:07 2014 -0700 Delete "Loaded symbols for ..." message, it is redundant. * solib.c (solib_read_symbols): Delete "Loaded symbols for ..." message, it is redundant with "Reading symbols from ..." message. testsuite/ * gdb.base/print-symbol-loading.exp (test_load_core): Update. (test_load_shlib): Update. commit 40a6ca48cc99c52dda81172bfeab0bf831d440e9 Author: Alan Modra Date: Tue Aug 12 09:30:56 2014 +0930 daily update commit 24f1235ebca7e956b1d87fcc04488a775d2dc087 Author: Doug Evans Date: Sun Aug 10 21:09:29 2014 -0700 linux-nat.c (linux_nat_thread_address_space): Delete dead code. commit 2fa67e7dac5ddb827b05c724be962c94a4d63ff3 Author: Alan Modra Date: Mon Aug 11 09:30:44 2014 +0930 daily update commit 0e54beadd5f1860edc1670566b6034aa937f1fdc Author: Alan Modra Date: Sun Aug 10 09:31:02 2014 +0930 daily update commit dcd2e6ef22c3453b9322ad4b46fb7cc05810b7ee Author: Yao Qi Date: Fri Aug 8 13:45:23 2014 +0800 Fix PR remote/9053: remove dead code on query packet size The code becomes dead as GDB evolves. In 2003, Andrew Cagney post patch https://sourceware.org/ml/gdb-patches/2003-10/msg00511.html to add target read/write partial methods. They support query buffer size when both OFFSET and LEN is zero, and it was used in avr-tdep.c and kod.c. Then, Daniel added target_read_object_alloc and avr-tdep.c switches to use that in patch https://sourceware.org/ml/gdb-patches/2006-07/msg00009.html From then on, GDB on longer queries the buffer size, so the code returning packet size in remote_xfer_partial became dead. PR 17060 is duplicated of PR 9053, so I mention the latter in the ChangeLog entry. Rebuild GDB with this patch. OK to apply? I'll mark PR 17060 as duplicated once the patch is applied. gdb: 2014-08-09 Yao Qi PR remote/9053 * remote.c (remote_xfer_partial): Remove dead code. commit 20c6f1e176f4139ed1e76d4256e70149e38c0820 Author: Yao Qi Date: Thu Aug 7 16:09:38 2014 +0800 Remove duplicated code on checking address 0x0 is accessiable I find some gdb.python tests fail on arm-none-eabi target, because the tests assume that memory on address 0x is inaccessible. Some tests (in gdb.base) are aware of this, so do a "x 0" check first. However, the code is copy-n-paste. This patch is to move the "x 0" check to a procedure in lib/gdb.exp, and get needed tests call it. The original code matches pattern "0x0:\[ \t\]*Error accessing memory address 0x0\r\n$gdb_prompt $", but I remove it from the new proc is_address_zero_readable, because GDB doesn't emit such message any more. gdb/testsuite: 2014-08-09 Yao Qi * gdb.base/display.exp: Invoke is_address_zero_readable. * gdb.guile/scm-value.exp (test_value_in_inferior): Likewise. * gdb.python/py-value.exp (test_value_in_inferior): Likewise. * gdb.base/hbreak-unmapped.exp: Return if is_address_zero_readable returns true. * gdb.base/signest.exp: Likewise. * gdb.base/signull.exp: Likewise. * gdb.base/sigbpt.exp: Likewise. * gdb.guile/scm-disasm.exp: Do the test if is_address_zero_readable returns false. * gdb.guile/scm-pretty-print.exp (run_lang_tests): Likewise. * gdb.python/py-arch.exp: Likewise. * gdb.python/py-prettyprint.exp (run_lang_tests): Likewise. * lib/gdb.exp (is_address_zero_readable): New proc. commit 5792e8e37be2f848152115fd4783b0e28b5253ad Author: Yao Qi Date: Thu Aug 7 15:01:22 2014 +0800 Make test messages in gdb.mi/mi-var-display.exp unique When I fix a bug in gdb.mi/mi-var-display.exp, I find its test messages aren't unique, which makes some confusions for me. $ cat testsuite/gdb.sum | grep "PASS" | sort | uniq -c | sort -n ... 2 PASS: gdb.mi/mi-var-display.exp: set format variable bar 2 PASS: gdb.mi/mi-var-display.exp: set format variable foo 2 PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr 2 PASS: gdb.mi/mi-var-display.exp: set format variable weird.func_ptr_ptr 2 PASS: gdb.mi/mi-var-display.exp: show format variable foo 3 PASS: gdb.mi/mi-var-display.exp: eval variable foo This patch is to make test messages in mi-var-display.exp unique. gdb/testsuite: 2014-08-09 Yao Qi PR testsuite/13443 * gdb.mi/mi-var-display.exp: Make test messages unique. commit 26278bb8717a16139b3a4da9ba1cd2aed435f1ee Author: Ulrich Drepper Date: Fri Aug 8 20:26:41 2014 -0400 * ldlang.h (struct lang_input_statement_flags): Add pushed member. * ldlex.h (enum option_values): Add OPTION_PUSH_STATE and OPTION_POP_STATE. * lexsup.c (ld_options): Add entries for --push-state and --pop-state. (parse_args): Handle OPTION_PUSH_STATE and OPTION_POP_STATE. * ld.texinfo: Document --push-state and --pop-state. commit 236bbb83885fbdf108e714fb0bcf9355d84dbd20 Author: Alan Modra Date: Sat Aug 9 09:30:59 2014 +0930 daily update commit 9363c7c3ad54a5f92d74ec8e48eda570de229f63 Author: Jing Yu Date: Fri Aug 8 14:18:35 2014 -0700 gold aarch64 patch to enable linking hello_wolrd. elfcpp/ChangeLog: 2014-08-08 Han Shen * aarch64.h (withdrawn): Replaced with R_AARCH64_withdrawn. 2014-08-08 Jing Yu Han Shen * Makefile.am (HFILES): Add aarch64-reloc-property.h. (DEFFILES): add aarch64-reloc.def. (TARGETSOURCES): Add aarch64-reloc-property.cc. (ALL_TARGETOBJS): Add aarch64-reloc-property.$(OBJEXT). * Makefile.in: Regenerate. * aarch64-reloc-property.cc: New file. * aarch64-reloc-property.h: New file. * aarch64-reloc.def: New file. * aarch64.cc: Include aarch64-reloc-property.h. Replace spaces with tab to make the format consistent. (Output_data_got_aarch64::symbol_table_): New method. (Target_aarch64::do_plt_address_for_global): New method. (Target_aarch64::do_plt_address_for_local): New method. (Target_aarch64::do_select_as_default_target): New method. (Target_aarch64::do_make_data_plt): New method. (Target_aarch64::make_data_plt): New method. (Output_data_plt_aarch64::has_irelative_section): New method. (Output_data_plt_aarch64::address_for_global): New method. (Output_data_plt_aarch64::address_for_local): New method. (Output_data_plt_aarch64::irelative_rel_): New parameter. (Output_data_plt_aarch64::add_entry): Implement contents. (Output_data_plt_aarch64::set_final_data_size): Fix typo. (Output_data_plt_aarch64::do_write): Remove useless got_base. Set the got_pov entry to plt0. (Output_data_plt_aarch64_standard::do_fill_first_plt_entry): Implement contents. (Output_data_plt_aarch64_standard::do_fill_plt_entry): Implement. (AArch64_howto): New struct. (aarch64_howto[]): New static const array. (AArch64_relocate_functions): New class. (Target_aarch64::Scan::get_reference_flags): Remove method. (Target_aarch64::Scan::local): Implement to support a few relocations. (Target_aarch64::Scan::global): Implement to support a few relocations. (Target_aarch64::make_plt_section): Implement contents. (Target_aarch64::make_plt_entry): Implement contents. (Target_aarch64::do_finalize_sections): Implement contents. (Target_aarch64::Relocate::relocate): Implement a few relocations. (Target_aarch64::relocate_section): Implement contents. commit a957de07689be21b85497bdfea6389068f8c9375 Author: Alan Modra Date: Fri Aug 8 09:31:19 2014 +0930 daily update commit 070bdf0b1a9b496bc1e7dc63cb2445a7e0e40de1 Author: Andreas Arnez Date: Fri Jul 18 08:14:27 2014 +0000 IA64 Linux: Define regset structures. commit 08f9f542cb977e0f69c407ad90c6809ec04a737e Author: Andreas Arnez Date: Thu Jul 17 08:35:43 2014 +0000 M68K Linux: Define regset structures. commit 8f1cee41f85e815d300cca3bf82e02a023dea43b Author: Andreas Arnez Date: Wed Jul 16 16:50:49 2014 +0000 TILEGX Linux: Fill 'collect_regset' in regset structure. commit c5741217d390041fc43ca83ad00b07355d40e9ad Author: Andreas Arnez Date: Mon Jul 21 15:33:45 2014 +0000 SCORE: Fill 'collect_regset' in regset structure. Also rewrite the 'supply_regset' method, making it platform independent. To avoid code duplication, move the logic for both to a register map in regcache_map_entry format. commit 81580573ba47d0047d76d4fddabe150b49ee3b54 Author: Andreas Arnez Date: Tue Apr 1 07:08:11 2014 +0000 NIOS2 Linux: Fill 'collect_regset' in regset structure. commit ba199d7d3b21c201d73cdbf108b41f62c9b18ab0 Author: Andreas Arnez Date: Tue Apr 1 07:06:59 2014 +0000 M32R Linux: Fill 'collect_regset' in regset structure. commit 0006a9dadfe758d244b1b5309d5975cb2a69cbab Author: Andreas Arnez Date: Tue Apr 1 07:04:53 2014 +0000 HPPA Linux: Fill 'collect_regset' in regset structures. commit 901e1b2377f80ed54e9f5d79d842c94a2dcb4c76 Author: Andreas Arnez Date: Tue Apr 1 09:50:32 2014 +0000 FRV Linux: Fill 'collect_regset' in regset structures. commit 1d6e7555155ecf7ac7e24380c776febdf1e469be Author: Andreas Arnez Date: Tue Apr 1 06:57:34 2014 +0000 ALPHA Linux: Fill 'collect_regset' in regset structures. commit d4d793bfeb836e833e36237f9e22d91d629ff0df Author: Andreas Arnez Date: Tue Apr 1 09:42:46 2014 +0000 AARCH64 Linux: Fill 'collect_regset' in regset structures. In order to provide 'collect_regset' support, the generic function regcache_collect_regset is exploited. Since this requires writing appropriate register maps, these can be used for supply_regset as well. commit 99b7da5d7acfeabdd186ee15e9b182db20feabac Author: Andreas Arnez Date: Tue Jul 15 11:18:35 2014 +0000 S390: Migrate to regcache_supply/collect_regset. Rather than supplying own supply/collect functions, use the generic functions regcache_supply_regset and regcache_collect_regset instead. The register maps are rewritten accordingly and become much shorter (and better readable) than before. commit 0b3092721e5cfa1697f1dafe81efefdbb0236f21 Author: Andreas Arnez Date: Tue Jul 22 10:28:32 2014 +0000 regcache: Add functions suitable for regset_supply/collect. These functions are intended to suit all targets that don't require too special logic in their regset supply/collect methods. Having such generic functions helps reducing target-specific complexity. commit 7fefa8d7d6359ec905dbc59bb4e616f386ea2e3d Author: Andreas Arnez Date: Tue Jun 3 19:11:35 2014 +0200 Rename 'descr' field in regset structure to 'regmap'. The regset structure's 'descr' field is intended to represent some kind of "register map". Thus, before making more use of it, this change renames it to 'regmap' and adjusts the comment appropriately. (See: https://sourceware.org/ml/gdb-patches/2014-05/msg00664.html) commit 96c4f946a8c8d53141189852c0ba28c45366830b Author: Yao Qi Date: Wed Aug 6 14:02:35 2014 +0800 Replace 0 with TARGET_XFER_EOF in to_xfer_partial I run splint in gdb source and get the following warnings: ../../../git/gdb/corelow.c:740: Return value type int does not match declared type enum target_xfer_status: 0 'TARGET_XFER_EOF' (enum target_xfer_status) is expected to be returned, but 0 is returned. This patch is to replace 0 with TARGET_XFER_EOF in the implementations of to_xfer_partial. gdb: 2014-08-07 Yao Qi * corelow.c (core_xfer_partial): Replace 0 with TARGET_XFER_EOF. * remote-m32r-sdi.c (m32r_xfer_memory): Likewise. * remote.c (remote_read_bytes): Likewise. commit fffbe6a8c835b16b1c973766303a9e75ea646898 Author: Yao Qi Date: Mon Aug 4 14:44:46 2014 +0800 Tweak comments in struct dwarf2_per_cu_data When I read the comments to field 'u' of struct dwarf2_per_cu_data, I don't think the comments say anything useful. I update it per my understanding. gdb: 2014-08-07 Yao Qi * dwarf2read.c (struct dwarf2_per_cu_data) : Tweak comments. commit 5ee8a82c47856b204ad76407780e454f8cfd9a72 Author: Yao Qi Date: Wed Aug 6 13:27:57 2014 +0800 Fix remote/17230 This patch is to fix PR remote/17230, which is a leftover of the to_xfer_partial interface change. I tried splint and it reprots this problem like this, ../../../git/gdb/remote-mips.c:2236: Return value type unsigned long long does not match declared type enum target_xfer_status: len and this problem only exists in remote-mips.c. gdb: 2014-08-07 Yao Qi PR remote/17230 * remote-mips.c (mips_xfer_memory): Set *xfered_len and return TARGET_XFER_OK instead of 0. commit bb974a2493495923903631bab3de9f340526d353 Author: Gary Benson Date: Wed Jul 30 13:21:40 2014 +0100 Move errno.h to common-defs.h This commit moves the inclusion of errno.h to common-defs.h and removes all other inclusions. Note that prior to this commit server.h included errno.h protected by "#ifdef HAVE_ERRNO_H". This protection was added with the Windows CE port, which is currently broken. Since no other platform needs this, I have removed the protection and the configury to support it. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include errno.h. * defs.h: Do not include errno.h. * ada-typeprint.c: Likewise. * c-typeprint.c: Likewise. * core-regset.c: Likewise. * corefile.c: Likewise. * corelow.c: Likewise. * event-loop.c: Likewise. * f-typeprint.c: Likewise. * gnu-nat.c: Likewise. * go32-nat.c: Likewise. * i386gnu-nat.c: Likewise. * m2-typeprint.c: Likewise. * nat/linux-btrace.c: Likewise. * p-typeprint.c: Likewise. * procfs.c: Likewise. * remote-sim.c: Likewise. * rs6000-nat.c: Likewise. * target.c: Likewise. * typeprint.c: Likewise. * ui-file.c: Likewise. * valops.c: Likewise. * valprint.c: Likewise. gdb/gdbserver/ 2014-08-07 Gary Benson * configure.ac (AC_CHECK_HEADERS): Remove errno.h. * configure: Regenerate. * config.in: Likewise. * server.h: Do not include errno.h. * event-loop.c: Likewise. * hostio-errno.c: Likewise. * linux-low.c: Likewise. * remote-utils.c: Likewise. * spu-low.c: Likewise. * utils.c: Likewise. * gdbreplay.c: Unconditionally include errno.h. commit 6d3d12ebef6fa7dd6bc8c34fbc5e440ac8d0a8c6 Author: Gary Benson Date: Tue Jul 29 15:06:51 2014 +0100 Include string.h in common-defs.h This commit includes string.h in common-defs.h and removes all other inclusions. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include string.h. * aarch64-tdep.c: Do not include string.h. * ada-exp.y: Likewise. * ada-lang.c: Likewise. * ada-lex.l: Likewise. * ada-typeprint.c: Likewise. * ada-valprint.c: Likewise. * aix-thread.c: Likewise. * alpha-linux-tdep.c: Likewise. * alpha-mdebug-tdep.c: Likewise. * alpha-nat.c: Likewise. * alpha-osf1-tdep.c: Likewise. * alpha-tdep.c: Likewise. * alphanbsd-tdep.c: Likewise. * amd64-dicos-tdep.c: Likewise. * amd64-linux-tdep.c: Likewise. * amd64-nat.c: Likewise. * amd64-sol2-tdep.c: Likewise. * amd64fbsd-tdep.c: Likewise. * amd64obsd-tdep.c: Likewise. * arch-utils.c: Likewise. * arm-linux-nat.c: Likewise. * arm-linux-tdep.c: Likewise. * arm-tdep.c: Likewise. * arm-wince-tdep.c: Likewise. * armbsd-tdep.c: Likewise. * armnbsd-nat.c: Likewise. * armnbsd-tdep.c: Likewise. * armobsd-tdep.c: Likewise. * avr-tdep.c: Likewise. * ax-gdb.c: Likewise. * ax-general.c: Likewise. * bcache.c: Likewise. * bfin-tdep.c: Likewise. * breakpoint.c: Likewise. * build-id.c: Likewise. * buildsym.c: Likewise. * c-exp.y: Likewise. * c-lang.c: Likewise. * c-typeprint.c: Likewise. * c-valprint.c: Likewise. * charset.c: Likewise. * cli-out.c: Likewise. * cli/cli-cmds.c: Likewise. * cli/cli-decode.c: Likewise. * cli/cli-dump.c: Likewise. * cli/cli-interp.c: Likewise. * cli/cli-logging.c: Likewise. * cli/cli-script.c: Likewise. * cli/cli-setshow.c: Likewise. * cli/cli-utils.c: Likewise. * coffread.c: Likewise. * common/agent.c: Likewise. * common/buffer.c: Likewise. * common/buffer.h: Likewise. * common/common-utils.c: Likewise. * common/filestuff.c: Likewise. * common/filestuff.c: Likewise. * common/format.c: Likewise. * common/print-utils.c: Likewise. * common/rsp-low.c: Likewise. * common/signals.c: Likewise. * common/vec.h: Likewise. * common/xml-utils.c: Likewise. * core-regset.c: Likewise. * corefile.c: Likewise. * corelow.c: Likewise. * cp-abi.c: Likewise. * cp-name-parser.y: Likewise. * cp-support.c: Likewise. * cp-valprint.c: Likewise. * cris-tdep.c: Likewise. * d-exp.y: Likewise. * darwin-nat.c: Likewise. * dbxread.c: Likewise. * dcache.c: Likewise. * demangle.c: Likewise. * dicos-tdep.c: Likewise. * disasm.c: Likewise. * doublest.c: Likewise. * dsrec.c: Likewise. * dummy-frame.c: Likewise. * dwarf2-frame.c: Likewise. * dwarf2loc.c: Likewise. * dwarf2read.c: Likewise. * elfread.c: Likewise. * environ.c: Likewise. * eval.c: Likewise. * event-loop.c: Likewise. * exceptions.c: Likewise. * exec.c: Likewise. * expprint.c: Likewise. * f-exp.y: Likewise. * f-lang.c: Likewise. * f-typeprint.c: Likewise. * f-valprint.c: Likewise. * fbsd-nat.c: Likewise. * findcmd.c: Likewise. * findvar.c: Likewise. * fork-child.c: Likewise. * frame.c: Likewise. * frv-linux-tdep.c: Likewise. * frv-tdep.c: Likewise. * gdb.c: Likewise. * gdb_bfd.c: Likewise. * gdbarch.c: Likewise. * gdbarch.sh: Likewise. * gdbtypes.c: Likewise. * gnu-nat.c: Likewise. * gnu-v2-abi.c: Likewise. * gnu-v3-abi.c: Likewise. * go-exp.y: Likewise. * go-lang.c: Likewise. * go32-nat.c: Likewise. * guile/guile.c: Likewise. * guile/scm-auto-load.c: Likewise. * hppa-hpux-tdep.c: Likewise. * hppa-linux-nat.c: Likewise. * hppanbsd-tdep.c: Likewise. * hppaobsd-tdep.c: Likewise. * i386-cygwin-tdep.c: Likewise. * i386-dicos-tdep.c: Likewise. * i386-linux-tdep.c: Likewise. * i386-nto-tdep.c: Likewise. * i386-sol2-tdep.c: Likewise. * i386-tdep.c: Likewise. * i386bsd-tdep.c: Likewise. * i386gnu-nat.c: Likewise. * i386nbsd-tdep.c: Likewise. * i386obsd-tdep.c: Likewise. * i387-tdep.c: Likewise. * ia64-libunwind-tdep.c: Likewise. * ia64-linux-nat.c: Likewise. * inf-child.c: Likewise. * inf-ptrace.c: Likewise. * inf-ttrace.c: Likewise. * infcall.c: Likewise. * infcmd.c: Likewise. * inflow.c: Likewise. * infrun.c: Likewise. * interps.c: Likewise. * iq2000-tdep.c: Likewise. * irix5-nat.c: Likewise. * jv-exp.y: Likewise. * jv-lang.c: Likewise. * jv-typeprint.c: Likewise. * jv-valprint.c: Likewise. * language.c: Likewise. * linux-fork.c: Likewise. * linux-nat.c: Likewise. * lm32-tdep.c: Likewise. * m2-exp.y: Likewise. * m2-typeprint.c: Likewise. * m32c-tdep.c: Likewise. * m32r-linux-nat.c: Likewise. * m32r-linux-tdep.c: Likewise. * m32r-rom.c: Likewise. * m32r-tdep.c: Likewise. * m68hc11-tdep.c: Likewise. * m68k-tdep.c: Likewise. * m68kbsd-tdep.c: Likewise. * m68klinux-nat.c: Likewise. * m68klinux-tdep.c: Likewise. * m88k-tdep.c: Likewise. * machoread.c: Likewise. * macrocmd.c: Likewise. * main.c: Likewise. * mdebugread.c: Likewise. * mem-break.c: Likewise. * memattr.c: Likewise. * memory-map.c: Likewise. * mep-tdep.c: Likewise. * mi/mi-cmd-break.c: Likewise. * mi/mi-cmd-disas.c: Likewise. * mi/mi-cmd-env.c: Likewise. * mi/mi-cmd-stack.c: Likewise. * mi/mi-cmd-var.c: Likewise. * mi/mi-cmds.c: Likewise. * mi/mi-console.c: Likewise. * mi/mi-getopt.c: Likewise. * mi/mi-interp.c: Likewise. * mi/mi-main.c: Likewise. * mi/mi-parse.c: Likewise. * microblaze-rom.c: Likewise. * microblaze-tdep.c: Likewise. * mingw-hdep.c: Likewise. * minidebug.c: Likewise. * minsyms.c: Likewise. * mips-irix-tdep.c: Likewise. * mips-linux-tdep.c: Likewise. * mips-tdep.c: Likewise. * mips64obsd-tdep.c: Likewise. * mipsnbsd-tdep.c: Likewise. * mipsread.c: Likewise. * mn10300-linux-tdep.c: Likewise. * mn10300-tdep.c: Likewise. * monitor.c: Likewise. * moxie-tdep.c: Likewise. * mt-tdep.c: Likewise. * nat/linux-btrace.c: Likewise. * nat/linux-osdata.c: Likewise. * nat/linux-procfs.c: Likewise. * nat/linux-ptrace.c: Likewise. * nat/linux-waitpid.c: Likewise. * nbsd-tdep.c: Likewise. * nios2-linux-tdep.c: Likewise. * nto-procfs.c: Likewise. * nto-tdep.c: Likewise. * objc-lang.c: Likewise. * objfiles.c: Likewise. * opencl-lang.c: Likewise. * osabi.c: Likewise. * osdata.c: Likewise. * p-exp.y: Likewise. * p-lang.c: Likewise. * p-typeprint.c: Likewise. * parse.c: Likewise. * posix-hdep.c: Likewise. * ppc-linux-nat.c: Likewise. * ppc-sysv-tdep.c: Likewise. * ppcfbsd-tdep.c: Likewise. * ppcnbsd-tdep.c: Likewise. * ppcobsd-tdep.c: Likewise. * printcmd.c: Likewise. * procfs.c: Likewise. * prologue-value.c: Likewise. * python/py-auto-load.c: Likewise. * python/py-gdb-readline.c: Likewise. * ravenscar-thread.c: Likewise. * regcache.c: Likewise. * registry.c: Likewise. * remote-fileio.c: Likewise. * remote-m32r-sdi.c: Likewise. * remote-mips.c: Likewise. * remote-notif.c: Likewise. * remote-sim.c: Likewise. * remote.c: Likewise. * reverse.c: Likewise. * rs6000-aix-tdep.c: Likewise. * ser-base.c: Likewise. * ser-go32.c: Likewise. * ser-mingw.c: Likewise. * ser-pipe.c: Likewise. * ser-tcp.c: Likewise. * ser-unix.c: Likewise. * serial.c: Likewise. * sh-tdep.c: Likewise. * sh64-tdep.c: Likewise. * shnbsd-tdep.c: Likewise. * skip.c: Likewise. * sol-thread.c: Likewise. * solib-dsbt.c: Likewise. * solib-frv.c: Likewise. * solib-osf.c: Likewise. * solib-som.c: Likewise. * solib-spu.c: Likewise. * solib-target.c: Likewise. * solib.c: Likewise. * somread.c: Likewise. * source.c: Likewise. * sparc-nat.c: Likewise. * sparc-sol2-tdep.c: Likewise. * sparc-tdep.c: Likewise. * sparc64-tdep.c: Likewise. * sparc64fbsd-tdep.c: Likewise. * sparc64nbsd-tdep.c: Likewise. * sparcnbsd-tdep.c: Likewise. * spu-linux-nat.c: Likewise. * spu-multiarch.c: Likewise. * spu-tdep.c: Likewise. * stabsread.c: Likewise. * stack.c: Likewise. * std-regs.c: Likewise. * symfile.c: Likewise. * symmisc.c: Likewise. * symtab.c: Likewise. * target.c: Likewise. * thread.c: Likewise. * tilegx-linux-nat.c: Likewise. * tilegx-tdep.c: Likewise. * top.c: Likewise. * tracepoint.c: Likewise. * tui/tui-command.c: Likewise. * tui/tui-data.c: Likewise. * tui/tui-disasm.c: Likewise. * tui/tui-file.c: Likewise. * tui/tui-layout.c: Likewise. * tui/tui-out.c: Likewise. * tui/tui-regs.c: Likewise. * tui/tui-source.c: Likewise. * tui/tui-stack.c: Likewise. * tui/tui-win.c: Likewise. * tui/tui-windata.c: Likewise. * tui/tui-winsource.c: Likewise. * typeprint.c: Likewise. * ui-file.c: Likewise. * ui-out.c: Likewise. * user-regs.c: Likewise. * utils.c: Likewise. * v850-tdep.c: Likewise. * valarith.c: Likewise. * valops.c: Likewise. * valprint.c: Likewise. * value.c: Likewise. * varobj.c: Likewise. * vax-tdep.c: Likewise. * vaxnbsd-tdep.c: Likewise. * vaxobsd-tdep.c: Likewise. * windows-nat.c: Likewise. * xcoffread.c: Likewise. * xml-support.c: Likewise. * xstormy16-tdep.c: Likewise. * xtensa-linux-nat.c: Likewise. gdb/gdbserver/ 2014-08-07 Gary Benson * server.h: Do not include string.h. * event-loop.c: Likewise. * linux-low.c: Likewise. * regcache.c: Likewise. * remote-utils.c: Likewise. * spu-low.c: Likewise. * utils.c: Likewise. commit dccbb60975cdbcd6a906a79d0c4308b040fdac1b Author: Gary Benson Date: Tue Jul 29 14:47:21 2014 +0100 Include gdb_assert.h in common-defs.h This commit includes gdb_assert.h in common-defs.h and removes all other inclusions. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include gdb_assert.h. * aarch64-tdep.c: Do not include gdb_assert.h. * addrmap.c: Likewise. * aix-thread.c: Likewise. * alpha-linux-tdep.c: Likewise. * alpha-mdebug-tdep.c: Likewise. * alphanbsd-tdep.c: Likewise. * amd64-nat.c: Likewise. * amd64-tdep.c: Likewise. * amd64bsd-nat.c: Likewise. * amd64fbsd-nat.c: Likewise. * amd64fbsd-tdep.c: Likewise. * amd64nbsd-nat.c: Likewise. * amd64nbsd-tdep.c: Likewise. * amd64obsd-nat.c: Likewise. * amd64obsd-tdep.c: Likewise. * arch-utils.c: Likewise. * arm-tdep.c: Likewise. * armbsd-tdep.c: Likewise. * auxv.c: Likewise. * bcache.c: Likewise. * bfin-tdep.c: Likewise. * blockframe.c: Likewise. * breakpoint.c: Likewise. * bsd-kvm.c: Likewise. * bsd-uthread.c: Likewise. * buildsym.c: Likewise. * c-exp.y: Likewise. * c-lang.c: Likewise. * charset.c: Likewise. * cleanups.c: Likewise. * cli-out.c: Likewise. * cli/cli-decode.c: Likewise. * cli/cli-dump.c: Likewise. * cli/cli-logging.c: Likewise. * cli/cli-script.c: Likewise. * cli/cli-utils.c: Likewise. * coffread.c: Likewise. * common/common-utils.c: Likewise. * common/queue.h: Likewise. * common/signals.c: Likewise. * common/vec.h: Likewise. * complaints.c: Likewise. * completer.c: Likewise. * corelow.c: Likewise. * cp-abi.c: Likewise. * cp-name-parser.y: Likewise. * cp-namespace.c: Likewise. * cp-support.c: Likewise. * cris-tdep.c: Likewise. * dbxread.c: Likewise. * dictionary.c: Likewise. * doublest.c: Likewise. * dsrec.c: Likewise. * dummy-frame.c: Likewise. * dwarf2-frame-tailcall.c: Likewise. * dwarf2-frame.c: Likewise. * dwarf2expr.c: Likewise. * dwarf2loc.c: Likewise. * dwarf2read.c: Likewise. * eval.c: Likewise. * event-loop.c: Likewise. * exceptions.c: Likewise. * expprint.c: Likewise. * f-valprint.c: Likewise. * fbsd-nat.c: Likewise. * findvar.c: Likewise. * frame-unwind.c: Likewise. * frame.c: Likewise. * frv-tdep.c: Likewise. * gcore.c: Likewise. * gdb-dlfcn.c: Likewise. * gdb_bfd.c: Likewise. * gdbarch.c: Likewise. * gdbarch.sh: Likewise. * gdbtypes.c: Likewise. * gnu-nat.c: Likewise. * gnu-v3-abi.c: Likewise. * go-lang.c: Likewise. * guile/scm-exception.c: Likewise. * guile/scm-gsmob.c: Likewise. * guile/scm-lazy-string.c: Likewise. * guile/scm-math.c: Likewise. * guile/scm-pretty-print.c: Likewise. * guile/scm-safe-call.c: Likewise. * guile/scm-utils.c: Likewise. * guile/scm-value.c: Likewise. * h8300-tdep.c: Likewise. * hppa-hpux-nat.c: Likewise. * hppa-tdep.c: Likewise. * hppanbsd-tdep.c: Likewise. * hppaobsd-tdep.c: Likewise. * i386-darwin-nat.c: Likewise. * i386-darwin-tdep.c: Likewise. * i386-nto-tdep.c: Likewise. * i386-tdep.c: Likewise. * i386bsd-nat.c: Likewise. * i386fbsd-tdep.c: Likewise. * i386gnu-nat.c: Likewise. * i386nbsd-tdep.c: Likewise. * i386obsd-tdep.c: Likewise. * i387-tdep.c: Likewise. * ia64-libunwind-tdep.c: Likewise. * ia64-tdep.c: Likewise. * inf-ptrace.c: Likewise. * inf-ttrace.c: Likewise. * infcall.c: Likewise. * infcmd.c: Likewise. * infrun.c: Likewise. * inline-frame.c: Likewise. * interps.c: Likewise. * jv-lang.c: Likewise. * jv-typeprint.c: Likewise. * linux-fork.c: Likewise. * linux-nat.c: Likewise. * linux-thread-db.c: Likewise. * m32c-tdep.c: Likewise. * m32r-linux-nat.c: Likewise. * m32r-tdep.c: Likewise. * m68k-tdep.c: Likewise. * m68kbsd-nat.c: Likewise. * m68kbsd-tdep.c: Likewise. * m88k-tdep.c: Likewise. * machoread.c: Likewise. * macroexp.c: Likewise. * macrotab.c: Likewise. * maint.c: Likewise. * mdebugread.c: Likewise. * memory-map.c: Likewise. * mep-tdep.c: Likewise. * mi/mi-common.c: Likewise. * microblaze-tdep.c: Likewise. * mingw-hdep.c: Likewise. * mips-linux-nat.c: Likewise. * mips-linux-tdep.c: Likewise. * mips-tdep.c: Likewise. * mips64obsd-tdep.c: Likewise. * mipsnbsd-tdep.c: Likewise. * mn10300-linux-tdep.c: Likewise. * mn10300-tdep.c: Likewise. * moxie-tdep.c: Likewise. * mt-tdep.c: Likewise. * nat/linux-btrace.c: Likewise. * nat/linux-osdata.c: Likewise. * nat/linux-ptrace.c: Likewise. * nat/mips-linux-watch.c: Likewise. * nios2-linux-tdep.c: Likewise. * nios2-tdep.c: Likewise. * objc-lang.c: Likewise. * objfiles.c: Likewise. * obsd-nat.c: Likewise. * opencl-lang.c: Likewise. * osabi.c: Likewise. * parse.c: Likewise. * ppc-linux-nat.c: Likewise. * ppc-sysv-tdep.c: Likewise. * ppcfbsd-nat.c: Likewise. * ppcfbsd-tdep.c: Likewise. * ppcnbsd-nat.c: Likewise. * ppcnbsd-tdep.c: Likewise. * ppcobsd-nat.c: Likewise. * ppcobsd-tdep.c: Likewise. * printcmd.c: Likewise. * procfs.c: Likewise. * prologue-value.c: Likewise. * psymtab.c: Likewise. * python/py-lazy-string.c: Likewise. * python/py-value.c: Likewise. * regcache.c: Likewise. * reggroups.c: Likewise. * registry.c: Likewise. * remote-sim.c: Likewise. * remote.c: Likewise. * rs6000-aix-tdep.c: Likewise. * rs6000-tdep.c: Likewise. * s390-linux-tdep.c: Likewise. * score-tdep.c: Likewise. * ser-base.c: Likewise. * ser-mingw.c: Likewise. * sh-tdep.c: Likewise. * sh64-tdep.c: Likewise. * solib-darwin.c: Likewise. * solib-spu.c: Likewise. * solib-svr4.c: Likewise. * source.c: Likewise. * sparc-nat.c: Likewise. * sparc-sol2-tdep.c: Likewise. * sparc-tdep.c: Likewise. * sparc64-sol2-tdep.c: Likewise. * sparc64-tdep.c: Likewise. * sparc64fbsd-tdep.c: Likewise. * sparc64nbsd-tdep.c: Likewise. * sparc64obsd-tdep.c: Likewise. * sparcnbsd-tdep.c: Likewise. * sparcobsd-tdep.c: Likewise. * spu-multiarch.c: Likewise. * spu-tdep.c: Likewise. * stabsread.c: Likewise. * stack.c: Likewise. * symfile.c: Likewise. * symtab.c: Likewise. * target-descriptions.c: Likewise. * target-memory.c: Likewise. * target.c: Likewise. * tic6x-linux-tdep.c: Likewise. * tic6x-tdep.c: Likewise. * tilegx-linux-nat.c: Likewise. * tilegx-tdep.c: Likewise. * top.c: Likewise. * tramp-frame.c: Likewise. * tui/tui-out.c: Likewise. * tui/tui-winsource.c: Likewise. * ui-out.c: Likewise. * user-regs.c: Likewise. * utils.c: Likewise. * v850-tdep.c: Likewise. * valops.c: Likewise. * value.c: Likewise. * varobj.c: Likewise. * vax-nat.c: Likewise. * xml-syscall.c: Likewise. * xml-tdesc.c: Likewise. * xstormy16-tdep.c: Likewise. * xtensa-linux-nat.c: Likewise. * xtensa-tdep.c: Likewise. gdb/gdbserver/ 2014-08-07 Gary Benson * server.h: Do not include gdb_assert.h. commit e76df0d08686820dee6d6f440431d962c7631bd3 Author: Gary Benson Date: Mon Jul 28 14:35:17 2014 +0100 Move common-utils.h to common-defs.h This commit moves the inclusion of common-utils.h to common-defs.h and removes all other inclusions. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include common-utils.h. * defs.h: Do not include common-utils.h. * common/gdb_assert.h: Likewise. * darwin-nat.h: Likewise. * nat/linux-btrace.c: Likewise. * target/waitstatus.h: Likewise. gdb/gdbserver/ 2014-08-07 Gary Benson * server.h: Do not include common-utils.h. commit 4cb9c816469ef3373d9cdde76e8ab5007cf3739e Author: Gary Benson Date: Mon Jul 28 14:28:06 2014 +0100 Move ptid.h to common-defs.h This commit moves the inclusion of ptid.h to common-defs.h and removes all other inclusions. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include ptid.h. * defs.h: Do not include ptid.h. * inferior.h: Likewise. * infrun.h: Likewise. * nat/linux-btrace.h: Likewise. * nat/linux-osdata.h: Likewise. * target/waitstatus.h: Likewise. gdb/gdbserver/ 2014-08-07 Gary Benson * server.h: Do not include ptid.h. * notif.h: Likewise. commit 3995eeeeacd9f6630d46e3d1be226365ef5a6652 Author: Gary Benson Date: Mon Jul 28 14:21:31 2014 +0100 Move gdb_locale.h to common-defs.h This commit moves the inclusion of gdb_locale.h to common-defs.h and removes all other inclusions. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include gdb_locale.h. * defs.h: Do not include gdb_locale.h. gdb/gdbserver/ 2014-08-07 Gary Benson * server.h: Do not include gdb_locale.h. commit cb9f1a9bcdd26a6f460a033e641804ba798937fc Author: Gary Benson Date: Mon Jul 28 14:09:12 2014 +0100 Move gdb/signals.h to common-defs.h This commit moves the inclusion of gdb/signals.h to common-defs.h and removes all other inclusions. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include gdb/signals.h. * defs.h: Do not include gdb/signals.h. gdb/gdbserver/ 2014-08-07 Gary Benson * server.h: Do not include gdb/signals.h. * win32-low.c: Likewise. commit a5fceff840e2928ee7a5cc34196b639d7e65016b Author: Gary Benson Date: Mon Jul 28 14:04:00 2014 +0100 Move pathmax.h to common-defs.h This commit moves the inclusion of pathmax.h to common-defs.h and removes all other inclusions. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include pathmax.h. * defs.h: Do not include pathmax.h. gdb/gdbserver/ 2014-08-07 Gary Benson * server.h: Do not include pathmax.h. commit b939114242762636cfdcf9a45949cb54cdaacc8c Author: Gary Benson Date: Mon Jul 28 13:52:38 2014 +0100 Move libiberty.h to common-defs.h This commit moves the inclusion of libiberty.h to common-defs.h and removes all other inclusions. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include libiberty.h. * defs.h: Do not include libiberty.h. * common/queue.h: Likewise. * cp-name-parser.y: Likewise. * mi/mi-cmd-catch.c: Likewise. * python/python.c: Likewise. gdb/gdbserver/ 2014-08-07 Gary Benson * server.h: Do not include libiberty.h. * linux-bfin-low.c: Likewise. commit 0e443c875f4f3f2dcaf9cc09d2518139fee0e76b Author: Gary Benson Date: Mon Jul 28 12:03:31 2014 +0100 Move ansidecl.h to common-defs.h This commit moves the inclusion of ansidecl.h to common-defs.h and removes all other inclusions. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include ansidecl.h. * defs.h: Do not include ansidecl.h. * common/buffer.h: Likewise. * common/common-utils.h: Likewise. gdb/gdbserver/ 2014-08-07 Gary Benson * server.h: Do not include ansidecl.h. commit 8ebb3f5606b361b30e854335fa5a9ce0fd018d41 Author: Gary Benson Date: Mon Jul 28 13:15:41 2014 +0100 Move stddef.h to common-defs.h This commit moves the inclusion of stddef.h to common-defs.h and removes all other inclusions. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include stddef.h. * defs.h: Do not include stddef.h. * common/common-utils.h: Likewise. * amd64fbsd-nat.c: Likewise. * bcache.c: Likewise. * charset.c: Likewise. * common/buffer.h: Likewise. * common/vec.h: Likewise. * i386bsd-nat.c: Likewise. * nat/linux-btrace.h: Likewise. * ppcfbsd-nat.c: Likewise. * ppcnbsd-tdep.h: Likewise. * ppcobsd-nat.c: Likewise. * ppcobsd-tdep.h: Likewise. * python/py-gdb-readline.c: Likewise. gdb/gdbserver/ 2014-08-07 Gary Benson * linux-x86-low.c: Do not include stddef.h. * lynx-ppc-low.c: Likewise. * tracepoint.c: Likewise. commit 8980bdf628f991be9c13f2d66753af2bbe5f53f5 Author: Gary Benson Date: Mon Jul 28 11:32:37 2014 +0100 Move stdarg.h to common-defs.h This commit moves the inclusion of stdarg.h to common-defs.h and removes all other inclusions. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include stdarg.h. * defs.h: Do not include stdarg.h. * ada-lang.c: Likewise. * common/common-utils.h: Likewise. * guile/scm-string.c: Likewise. * guile/scm-utils.c: Likewise. * m32c-tdep.c: Likewise. gdb/gdbserver/ 2014-08-07 Gary Benson * server.h: Do not include stdarg.h. * nto-low.c: Likewise. commit d7096f716534f280fba72a5b2ec3712ad1aea42e Author: Gary Benson Date: Fri Jul 25 17:35:30 2014 +0100 Move stdlib.h to common-defs.h This commit moves the inclusion of stdlib.h to common-defs.h and removes all other inclusions. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include stdlib.h. * defs.h: Do not include stdlib.h. * addrmap.c: Likewise. * bcache.c: Likewise. * common/buffer.c: Likewise. * common/common-utils.c: Likewise. * cp-name-parser.y: Likewise. * go32-nat.c: Likewise. * mn10300-linux-tdep.c: Likewise. * nat/linux-osdata.c: Likewise. * tui/tui.c: Likewise. * windows-nat.c: Likewise. gdb/gdbserver/ 2014-08-07 Gary Benson * server.h: Do not include stdlib.h. * inferiors.c: Likewise. * linux-low.c: Likewise. * regcache.c: Likewise. * spu-low.c: Likewise. * tracepoint.c: Likewise. * utils.c: Likewise. commit d02f550d39f0229f7c190e6509b3b466f1a60732 Author: Gary Benson Date: Fri Jul 25 16:29:40 2014 +0100 Move stdio.h to common-defs.h This commit moves the inclusion of stdio.h to common-defs.h and removes all other inclusions. gdb/ 2014-08-07 Gary Benson * common/common-defs.h: Include stdio.h. * defs.h: Do not include stdio.h. * ada-lang.c: Likewise. * common/buffer.c: Likewise. * common/common-utils.c: Likewise. * cp-name-parser.y: Likewise. * gnu-nat.c: Likewise. * go32-nat.c: Likewise. * i386gnu-nat.c: Likewise. * proc-api.c: Likewise. * proc-events.c: Likewise. * proc-flags.c: Likewise. * proc-why.c: Likewise. * python/python-internal.h: Likewise. * target-memory.c: Likewise. * tui/tui-io.c: Likewise. * tui/tui.c: Likewise. gdb/gdbserver/ 2014-08-07 Gary Benson * server.h: Do not include stdio.h. * linux-low.c: Likewise. * remote-utils.c: Likewise. * spu-low.c: Likewise. * utils.c: Likewise. * wincecompat.c: Likewise. commit 7f59d2acb6971695c36a73ce4a061cdc4b892f29 Author: Chen Gang Date: Thu Aug 7 15:36:36 2014 +0930 Ensure coff-ppc local symbols are zero terminated * coff-ppc.c (coff_ppc_relocate_section): Ensure local symbols are zero terminated. commit db7129469b10a701659f0e38e3edeb2191236831 Author: H.J. Lu Date: Thu Aug 7 09:53:46 2014 +0930 Don't issue a warning for references in LTO IR to warning symbols bfd/ PR ld/16746 * linker.c (_bfd_generic_link_add_one_symbol): Don't issue a warning for references in LTO IR to warning symbols. ld/testsuite/ PR ld/16746 * ld-plugin/lto.exp: Add 4 tests for PR ld/16746. * ld-plugin/pr16746a.c: New file. * ld-plugin/pr16746b.c: Likewise. * ld-plugin/pr16746c.c: Likewise. * ld-plugin/pr16746d.c: Likewise. commit 59c2656733ccb54660f48c10608f4c1753dcaf01 Author: Alan Modra Date: Thu Aug 7 10:14:13 2014 +0930 missing changelog for last commit commit a42e82976aac3aed9b966e611b3cfa98974c4978 Author: Alan Modra Date: Thu Aug 7 09:49:32 2014 +0930 Merge WARN and CWARN cases in _bfd_generic_link_add_one_symbol WARN has always been able to be handled by the CWARN case (WARN was used when the previous symbols was undef, undefweak or common and thus must be on the undefs list, so the CWARN test passes). So let's merge those two cases. * linker.c (WARN, CWARN): Collapse these states to WARN. (_bfd_generic_link_add_one_symbol): Use old CWARN case for new WARN. commit 44714a840a6cd1cdf555809dc6211adb48f0842b Author: Alan Modra Date: Thu Aug 7 09:30:51 2014 +0930 daily update commit b6d7a4bf2932e5ae173dd7fb0213c3b004da8462 Author: Simon Marchi Date: Fri Aug 1 18:09:06 2014 -0400 Rename variable with confusing name I saw this gem of not so legible code in solib-svr4.c (scan_dyntag): if (dyn_tag == dyntag) and thought it deserved a small rename. This just renames variables to be a bit more clear for those who read the code. I also constified the parameter because, why not. The same was done in scan_dyntag_auxv as well. Tested only by rebuilding, since the change was done mechanically. gdb/Changelog: 2014-08-01 Simon Marchi * solib-svr4.c (scan_dyntag): Rename dyntag and dyn_tag variables. (scan_dyntag_auxv): Same. commit d022bddd4fd93428a7fa3cc7ad404c912ed20dbf Author: Ilya Tocar Date: Fri Aug 1 17:58:32 2014 +0400 Add -momit_lock_prefix=[no|yes] option This option serves as a workaround for processors, which fail on lock prefix. gas/ * config/tc-i386.c (omit_lock_prefix): New. (output_insn): Omit lock prefix if omit_lock_prefix is true. (OPTION_omit_lock_prefix): New. (md_longopts): Add momit-lock-prefix. (md_parse_option): Handle momit-lock-prefix. (md_show_usage): Add momit-lock-prefix=[no|yes]. * doc/c-i386.texi (momit-lock-prefix): Document. gas/testsuite/ * gas/i386/i386.exp: Run new tests. * gas/i386/omit-lock-no.d: New. * gas/i386/omit-lock-yes.d: Ditto. * gas/i386/omit-lock.s: Ditto. commit ad9fe6c108abf73f47219655ff19a5ec68b68124 Author: Alan Modra Date: Wed Aug 6 22:07:04 2014 +0930 Modify new gold test to pass on powerpc64le * testsuite/defsym_test.sh: Allow ppc64le localentry annotation. commit 87f6c4e3e64fe41df2afc45745437e7584fd97f4 Author: Gary Benson Date: Wed Aug 6 13:39:39 2014 +0100 Rearrange awkwardly-nested conditionals gdbserver's init_register_cache has some preprocessor conditionals awkwardly nested around an if..else block. This commit moves the conditionals inside the braces to make the code more readable. gdb/gdbserver/ 2014-08-06 Gary Benson * regcache.c (init_register_cache): Move conditionals inside if. commit af19829b117d124842b41da499b3161690bbca1a Author: Yao Qi Date: Wed Aug 6 17:26:27 2014 +0800 Remove duplicated include file File x86-linux-nat.h is included twice in amd64-linux-nat.c and i386-linux-nat.c. This patch is to remove one. gdb: 2014-08-06 Yao Qi * amd64-linux-nat.c: Remove duplicated include "x86-linux-nat.h". * i386-linux-nat.c: Likewise. commit 7089dca47b1738d9b65b8c3795e14aa92ac30f43 Author: Gary Benson Date: Wed Aug 6 11:50:24 2014 +0100 Replace hardwired target-is-async check This commit replaces a hardwired target-is-async check. gdb/gdbserver/ 2014-08-06 Gary Benson * linux-low.c (linux_supports_non_stop): Use target_is_async_p. commit 97964ab320d2fd9557ad84e6c8b7b500c518a686 Author: Alan Modra Date: Wed Aug 6 13:29:38 2014 +0930 PR14918, lto always links in libgcc_s.so PR14918 * plugin.c (plugin_opt_plugin_arg): Drop --pass-through. commit c3e11cbe51085fed6ca1c90f56611b8cbbabe3eb Author: Alan Modra Date: Wed Aug 6 13:26:18 2014 +0930 Allow lto tests to run with older compilers * lib/ld-lib.exp (check_lto_fat_available): New. (check_lto_available): Remove -ffat-lto-objects test. * ld-plugin/lto.exp: Use [list ] rather than { } to set up list variables, allowing substition of vars. Set lto_fat and plug_opt and add to various tests. commit 7cd4e5b756fa5c1ebe0ba7dd04e45d46330a7675 Author: Alan Modra Date: Wed Aug 6 12:40:00 2014 +0930 Warn for gold on lto objects without plugin PR 13227 * symtab.cc (Symbol_table::add_from_relobj): Warn on __gnu_lto_slim. commit 8e07a239c12ba3b746ef0cf2c53d572315aef654 Author: Yao Qi Date: Wed Jul 30 16:50:49 2014 +0800 Fix comment in dwarf_decode_lines_1 When I read dwarf_decode_lines_1 comments today, it should be called "special opcode" rather than "special operand", as said in DWARF spec. It is obvious to me. I'll push it in if no comments in three days. gdb: 2014-08-06 Yao Qi * dwarf2read.c (dwarf_decode_lines_1): Replace "Special operand" with "Special opcode" in comments. commit d37497d68fd80e0b6edd08604eab7d0472b7e0ac Author: Alan Modra Date: Wed Aug 6 09:31:04 2014 +0930 daily update commit aaffae57f3b2b2f3d353924934accffea527dc6e Author: Doug Evans Date: Tue Aug 5 09:00:40 2014 -0700 Fix outputdots so that it doesn't errantly discard the first line of, e.g., CODE_FRAGMENT. Also fix skip_past_newline to not skip past NUL. * bfd-in2.h: Regenerate. * libcoff.h: Regenerate. doc/ * chew.c (skip_past_newline_1): New function. (outputdots): Call it. (skip_past_newline): Ditto. commit e034b2cc9d2125f80dabb698271a346cbcff8d76 Author: Maciej W. Rozycki Date: Tue Aug 5 16:17:15 2014 +0100 MIPS: Fix a .pdr section linker buffer overrun * elfxx-mips.c (_bfd_mips_elf_discard_info): Set section's rawsize if changing size. commit 7bfe824172e6bd8759f30b4f6b6fe2036845ec5b Author: Gary Benson Date: Tue Aug 5 15:03:36 2014 +0100 Remove pointless function initialize_interps This commit removes the pointless function initialize_interps. gdb/ 2014-08-05 Gary Benson * interps.c (initialize_interps): Remove prototype. (interpreter_initialized): Remove static global. (interp_add): Do not call initialize_interps. (initialize_interps): Remove function. commit d6c95504f0d3e51709f50c6e82cf78e18b188430 Author: Gary Benson Date: Tue Aug 5 13:06:19 2014 +0100 Remove spurious va_end in vwarning This commit removes a spurious va_end in vwarning. gdb/ 2014-08-05 Gary Benson * utils.c (vwarning): Remove spurious va_end. commit c26fd07110bd0d3197bb7a9ef9feab79c1fdb069 Author: Alan Modra Date: Tue Aug 5 11:24:42 2014 +0930 Regen ld/Makefile.in * Makefile.in: Regenerate. commit 52cdd0bc317c2dfb8cd84b441a72a312b23841b7 Author: Alan Modra Date: Tue Aug 5 11:24:23 2014 +0930 gas/testuite ChangeLog typo commit 13ce3c11a1ea74166a530c576ffacf6e9915baf9 Author: Alan Modra Date: Tue Aug 5 11:23:58 2014 +0930 chew.c warning fix * chew.c (print_stack_level, main): Cast result of pointer difference to match format string. commit 7833fb7b8e4d0c75138ef715935a5040bc9b2e78 Author: Alan Modra Date: Tue Aug 5 10:49:54 2014 +0930 Fix PR17226, ld --gc-sections segfaults on sparc-linux PR ld/17226 * elfxx-sparc.c (_bfd_sparc_elf_gc_sweep_hook): Typo fix. commit 02eb0a49bceb35e4b0503e6ffc11e85151dbc571 Author: Alan Modra Date: Tue Aug 5 10:48:47 2014 +0930 Fix load of archive element with common def for -u sym * linker.c (generic_link_check_archive_element): Move handling of command link -u symbols with a common symbol def to the code handling non-common symbols so that archive element symbols are loaded. Use generic_link_add_object_symbols. commit 13e570f80cbfb299a8858ce6830e91a6cb40ab7b Author: Alan Modra Date: Tue Aug 5 10:46:57 2014 +0930 Fix LTO vs. COFF archives Avoid scan of symbols on objects in coff archives since we don't need to do anything special with common symbols. The scan is quite useless, and breaks LTO due to slim LTO objects not having symbols available until after the plugin has claimed them. Instead we can add objects based on their archive symbol map. Also, rip out the archive symbol hash table used by the generic linker. Using a hash breaks one feature of unix archive linking; The first object file in an archive defining any given symbol should be the object extracted to satisfy that symbol. What's more a hash isn't much faster except in pathological cases where object file ordering causes many scans of the archive. See the comment which I'm removing from elf_link_add_archive_symbols. Finally, tidy elflink.c archive handling a little. PR 13557 * linker.c (struct archive_list, struct archive_hash_entry, struct archive_hash_table, archive_hash_newfunc, archive_hash_table_init, archive_hash_lookup, archive_hash_allocate, archive_hash_table_free): Delete. (_bfd_generic_link_add_archive_symbols): Add h and name params to checkfn. Rewrite using a straight-forward scan over archive map. (generic_link_check_archive_element_no_collect, generic_link_check_archive_element_collect, generic_link_check_archive_element): Add h and name params. * aoutx.h (aout_link_check_archive_element): Likewise. * pdp11.c (aout_link_check_archive_element): Likewise. * xcofflink.c (xcoff_link_check_archive_element): Likewise. * cofflink.c (coff_link_check_archive_element): Likewise. Don't scan symbols, simply add archive element whenever h is undefined. (coff_link_check_ar_symbols): Delete. * ecoff.c (read_ext_syms_and_strs): Delete. (reread_ext_syms_and_strs): Delete. (ecoff_link_check_archive_element): Add h and name param. Don't scan symbols, simply add based on h. Use ecoff_link_add_object_symbols. * elflink.c (elf_link_is_defined_archive_symbol): Don't test archive_pass. (elf_link_add_archive_symbols): Delete "defined" array, merge functionality into "included". Make "included" a char array. Don't set or test archive_pass. * libbfd-in.h (_bfd_generic_link_add_archive_symbols): Update. * libbfd.h: Regenerate. commit 241fd515ad94fa11d4608d4fe8108c382792d3be Author: Alan Modra Date: Tue Aug 5 10:37:38 2014 +0930 Prepare gdb for 64-bit obstacks * charset.c (convert_between_encodings): Cast result of obstack_base. * cp-valprint.c (cp_print_value_fields): Use size_t locals. * hppa-tdep.c (internalize_unwinds): Change "size" parm to size_t. (read_unwind_info): Use size_t for some locals. * jit.c (finalize_symtab): Likewise. * utils.c (hashtab_obstack_allocate): Likewise. * symmisc.c (print_objfile_statistics): Update format strings. commit 8479caa19304089b2ef42867e406a008bf5fbc4d Author: Alan Modra Date: Tue Aug 5 09:31:09 2014 +0930 daily update commit dc304a9424abb58973ffde431264af1deb6abd22 Author: Jan Kratochvil Date: Mon Aug 4 21:32:06 2014 +0200 Fix incorrect placement of two Intel gdb/NEWS items there were two commits which placed new gdb/NEWS items to the bottom of the NEWS file (such as for gdb-4.0) instead at their right place under: *** Changes in GDB 7.8 https://sourceware.org/git/?p=binutils-gdb.git;a=blobdiff;f=gdb/NEWS;h=ae84e009b8008f9da2707829c0cbab358abc17fb;hp=a8ae8c7b7a5ddce9b5779914dd1e6a87463d7d60;hb=ca8941bbd088002cb8ff87abe16d02ecc8d58d1e;hpb=489e41ddf4bb5616a7471fb4072df5efbb9a706e commit ca8941bbd088002cb8ff87abe16d02ecc8d58d1e Author: Walfred Tedeschi Date: Tue Dec 3 13:31:03 2013 +0000 Documentation for MPX. Message-Id: <1386074172-14177-1-git-send-email-walfred.tedeschi@intel.com> https://sourceware.org/ml/gdb-patches/2013-12/msg00082.html and https://sourceware.org/git/?p=binutils-gdb.git;a=blobdiff;f=gdb/NEWS;h=a7067fdf9a7af422572a29d1fdd6ef011c87cd9f;hp=b72d64db313d0785edec19a9c4b441b854698e6a;hb=01f9f808e2e86187c95e7cff4aeb014a421a53ce;hpb=93ee1e3683a12f4774b8beb4f821910982e21ce2 commit 01f9f808e2e86187c95e7cff4aeb014a421a53ce Author: Michael Sturm Date: Mon Dec 16 16:43:05 2013 +0100 Add AVX512 registers support to GDB and GDBserver. Message-Id: <1398258160-9070-4-git-send-email-michael.sturm@intel.com> https://sourceware.org/ml/gdb-patches/2013-12/msg00818.html gdb/ 2014-08-04 Jan Kratochvil * NEWS (Changes in GDB-4.0): Move Intel MPX and Intel AVX-512 items ... (Changes in GDB 7.8): ... here. Message-ID: <20140804165708.GA12824@host2.jankratochvil.net> commit 3cecbbbef197fdcdc833155ba4c3f3233a10e5c7 Author: Tom Tromey Date: Mon Jul 28 12:53:35 2014 -0600 make "set debug target" take effect immediately Right now, "set debug target" acts a bit strangely. Most target APIs only notice that it has changed when the target stack is changed in some way. This is because many methods implement the setting using the special debug target. However, a few spots do change their behavior immediately -- any place explicitly checking "targetdebug". Some of this peculiar behavior is documented. However, I think that it just isn't very useful for it to work this way. So, this patch changes "set debug target" to take effect immediately in all cases. This is done by simply calling update_current_target when the setting is changed. This required one small change in the test suite. Here a test was expecting the current behavior. Built and regtested on x86-64 Fedora 20. 2014-08-04 Tom Tromey * target.c (set_targetdebug): New function. (initialize_targets): Pass set_targetdebug when creating "set debug target". 2014-08-04 Tom Tromey * gdb.texinfo (Debugging Output): Update for change to "set debug target". 2014-08-04 Tom Tromey * gdb.base/sss-bp-on-user-bp-2.exp: Expect output from "set debug target 0". commit 00b51ff5835770104952dca3f9addb8f1025a24b Author: Tom Tromey Date: Tue Jul 29 13:31:00 2014 -0600 fix test suite regression This fixes a test suite regession that Yao noticed. This test checks for some specific "target debug" output that has changed since the test was written. 2014-08-04 Tom Tromey * gdb.base/sss-bp-on-user-bp-2.exp: Match "to_resume", not "target_resume". commit 78a4993b90b00289d015305a9eb1948fab9baf91 Author: Alan Modra Date: Mon Aug 4 09:31:06 2014 +0930 daily update commit 3160d18c899270a771fb9c7dca5e09b318e77a78 Author: Alan Modra Date: Sun Aug 3 09:31:03 2014 +0930 daily update commit a12a279b547e715e4a3b056b40680a939a3dbcaa Author: Alan Modra Date: Sat Aug 2 09:31:10 2014 +0930 daily update commit 90debf20f4cc4ddd7cfb6356fe0d3876a18604a6 Author: Masaki Muranaka Date: Fri Aug 1 08:01:48 2014 -0700 [gdb/doc] Add target triplet to man files After applying hash 43662968, gdb.1 and other man pages are not added target triplet even if we configure with --target=. It causes conflicts on some distributions. And uninstall rules requires $(transform) variable. gdb/doc/ChangeLog: * Makefile.in (transform): New variable. (install-man1, install-man5): Apply $(transform) to man file names. Tested by installing both native and cross debugger. commit 6908c50982bc70ff9e035028b3bc300f80fed7e4 Author: Joel Brobecker Date: Tue Jul 8 08:15:35 2014 -0700 Handle variable-sized fields in the interior of structure type In Ada, variable-sized field can be located at any position of a structure. Consider for instance the following declarations: Dyn_Size : Integer := 1; type Table is array (Positive range <>) of Integer; type Inner is record T1 : Table (1 .. Dyn_Size) := (others => 1); T2 : Table (1 .. Dyn_Size) := (others => 2); end record; type Inner_Array is array (1 .. 2) of Inner; type Outer is record I0 : Integer := 0; A1 : Inner_Array; Marker : Integer := 16#01020304#; end record; Rt : Outer; What this does is declare a variable "Rt" of type Outer, which contains 3 fields where the second (A1) is of type Inner_Array. type Inner_Array is an array with 2 elements of type Inner. Because type Inner contains two arrays whose upper bound depend on a variable, the size of the array, and therefore the size of type Inner is dynamic, thus making field A1 a dynamically-size field. When trying to print the value of Rt, we hit the following limitation: (gdb) print rt Attempt to resolve a variably-sized type which appears in the interior of a structure type The limitation was somewhat making sense in C, but needs to be lifted for Ada. This patch mostly lifts that limitation. As a result of this patch, the type length computation had to be reworked a little bit. gdb/ChangeLog: * gdbtypes.c (resolve_dynamic_struct): Do not generate an error if detecting a variable-sized field that is not the last field. Fix struct type length computation. gdb/testsuite/ChangeLog: * gdb.base/vla-datatypes.c (vla_factory): Add new variable inner_vla_struct_object_size. * gdb.base/vla-datatypes.exp: Adjust last test, and mark it as xfail. commit 53e8f97d571973c3bfb04ef3d9a358ea4a0e8e62 Author: Joel Brobecker Date: Wed Jun 11 14:31:20 2014 +0200 Add debug trace in amd64-windows-tdep.c::amd64_windows_frame_decode_insns This is a trace which would have been useful when trying to understand why the debugger was not decoding the stream of unwind codes I was expecting. This patch adds a trace first informing us that we are following the unwind info to the next unwind record in that chain. gdb/ChangeLog: * amd64-windows-tdep.c (amd64_windows_frame_decode_insns): Add debug trace. commit e068c55d5e2f73e85d0d51a39d2a8921ce262d55 Author: Joel Brobecker Date: Wed Jun 11 14:07:27 2014 +0200 x64-windows: Fix extraction of chained UNWIND_INFO On x86_64-windows, GDB is unable to unwind past some code in mswsock.dll. For instance: (gdb) bt #0 0x00000000778712fa in ntdll!ZwWaitForSingleObject () from C:\Windows\SYSTEM32\ntdll.dll #1 0x000007fefcfb0f75 in WSPStartup () from C:\Windows\system32\mswsock.dll Backtrace stopped: previous frame inner to this frame (corrupt stack?) The UNWIND_INFO record for frame #1's PC has a UNW_FLAG_CHAININFO flag, and so after having decoded this unwind record, GDB's decoder next tries to locate the next unwind record on the chain. Unfortunately, the location of that unwind info appears to be miscomputed. This is the expression used: chain_vma = cache->image_base + unwind_info + sizeof (ex_ui) + ((codes_count + 1) & ~1) * 2 + 8; The chain-info is expected to be right after the "Unwind codes array" which is itself after all the fields of ex_ui's struct. So the "+ 8" offset at the end should not be there. Because of that extra offset, we were reading no longer processing correct unwind info, leading the unwinder computing the wrong frame size, computing the wrong return address, etc. gdb/ChangeLog: * amd64-windows-tdep.c (amd64_windows_frame_decode_insns): Remove "+ 8" offset in computation of CHAIN_VMA. commit 8c7840168031ab93432214580bf14ce63d638d22 Author: Kaz Kojima Date: Fri Aug 1 19:17:47 2014 +0900 Fix PR10373 which is SH relax bug. commit b131d1fcfa5978f105a9ac39057475f54bab9202 Author: Kaz Kojima Date: Fri Aug 1 19:13:39 2014 +0900 Fix PR10378 which is SH relax bug. commit 22d64076c87f4fe82a3dbb1bdf3df576d36ab4c0 Author: Alan Modra Date: Fri Aug 1 09:30:42 2014 +0930 daily update commit 4d4ca2a15d2e3008d14bf7cda9b353f7fcc11bdc Author: Doug Evans Date: Thu Jul 31 11:48:24 2014 -0700 * inflow.c (child_terminal_inferior): Add comment. (child_terminal_ours_for_output): Add comment. (child_terminal_ours): Add comment. * linux-nat.c (linux_nat_terminal_inferior): Add comment. (linux_nat_terminal_ours): Add comment. commit 462f517e5020a464e84d2b8535b1b68d39329dc2 Author: Gary Benson Date: Thu Jul 31 13:25:01 2014 +0100 Do not include defs.h or server.h in any header file This commit removes all inclusions of defs.h and server.h from header files. gdb/ 2014-07-31 Gary Benson * common/btrace-common.h: Do not include defs.h or server.h. * nat/mips-linux-watch.h: Likewise. * gdb-dlfcn.h: Do not include defs.h. * tracefile.h: Likewise. gdb/gdbserver/ 2014-07-31 Gary Benson * ax.h: Do not include server.h. * gdbthread.h: Likewise. * lynx-low.h: Likewise. * notif.h: Likewise. commit 678f6f20d08aea2b9ecf8a5ef9491ea672774494 Author: Alan Modra Date: Thu Jul 31 09:30:44 2014 +0930 daily update commit 74228e779003e841dd9cfe5780a2c9dc703699b4 Author: Roland McGrath Date: Wed Jul 30 13:06:52 2014 -0700 Fix incomplete constification in remote-sim.c 2014-07-30 Roland McGrath * remote-sim.c (gdbsim_open): Apply constification to forward decl. commit 014f9477f4bdb04ca3accad0a7c986c2dff90e1f Author: Tom Tromey Date: Tue Jul 22 10:56:01 2014 -0600 constify to_open This makes target_ops::to_open take a const string and then fixes the fallout. There were a few of these I could not build. However I eyeballed it and in any case the fixes should generally be trivial. This is based on the patch to fix up the target debugging for to_open, because that changes gdb to not directly install to_open as the target command 2014-07-30 Tom Tromey * bsd-kvm.c (bsd_kvm_open): Constify. * corelow.c (core_open): Constify. * ctf.c (ctf_open): Constify. * dbug-rom.c (dbug_open): Constify. * exec.c (exec_open): Constify. * m32r-rom.c (m32r_open, mon2000_open): Constify. * microblaze-rom.c (picobug_open): Constify. * nto-procfs.c (procfs_open_1, procfs_open, procfs_native_open): Constify. * ppcbug-rom.c (ppcbug_open0, ppcbug_open1): Constify. * record-btrace.c (record_btrace_open): Constify. * record-full.c (record_full_core_open_1, record_full_open_1) (record_full_open): Constify. * remote-m32r-sdi.c (m32r_open): Constify. * remote-mips.c (common_open, mips_open, pmon_open, ddb_open) (rockhopper_open, lsi_open): Constify. * remote-sim.c (gdbsim_open): Constify. * remote.c (remote_open, extended_remote_open, remote_open_1): Constify. * target.h (struct target_ops) : Make "arg" const. * tracefile-tfile.c (tfile_open): Constify. commit e799154c3bf1aac0bffd869df5eed7a959305d00 Author: Tom Tromey Date: Tue Jul 22 10:47:53 2014 -0600 constify some cli-utils stuff This constifies a few functions in cli-utils -- get_number_trailer and friends -- and then fixes the fallout. 2014-07-30 Tom Tromey * breakpoint.c (map_breakpoint_numbers): Update. * cli/cli-utils.c (get_number_trailer): Make "pp" const. Update. (get_number_const): New function. (get_number): Rewrite using get_number_const. (init_number_or_range): Make "string" const. (number_is_in_list): Make "list" const. * cli/cli-utils.h (get_number_const): Declare. (struct get_number_or_range_state) : Now const. (init_number_or_range, number_is_in_list): Update. * printcmd.c (map_display_numbers): Update. * value.c (value_from_history_ref): Constify. * value.h (value_from_history_ref): Update. commit 5f08566b92f63e60559577dedfabf9ed517a3ddf Author: Tom Tromey Date: Tue Jul 22 10:09:27 2014 -0600 constify exec_file_attach This constifies exec_file_attach and updates the rest of gdb. Insight will need some minor tweaks after this, though it's worth noting that I think all that hook stuff can actually just go away. I sent a patch to this effect once, but since the Insight source repository situation isn't currently resolved there wasn't a convenient way to test it. 2014-07-30 Tom Tromey * corefile.c (hook_type, call_extra_exec_file_hooks) (specify_exec_file_hook): Constify. * exec.c (exec_file_attach): Make "filename" const. * gdbcore.h (deprecated_exec_file_display_hook) (specify_exec_file_hook, exec_file_attach): Constify. * main.c (captured_main): Use catch_command_errors_const. commit 8981c75857ec8ef645ccb4f7ccc70fccc609085d Author: Tom Tromey Date: Mon Jul 21 14:32:43 2014 -0600 fix to_open debug setting This is a follow-on to the patch to auto-generate target debug methods. While working on that patch I noticed that the to_open debug setting will never work. There is no path by which debug_to_open can be called. This patch fixes the problem by using a generic function as the implementation of the various "target" subcommands, and then putting the debug printing there. This is also a tiny step toward fixing PR 7250 (and apparently why command contexts were introduced). Built and regtested on x86-64 Fedora 20. 2014-07-30 Tom Tromey * target.c (open_target): New function. (add_target_with_completer, add_deprecated_target_alias): Use set_cmd_sfunc, set_cmd_context. (debug_to_open): Remove. (setup_target_debug): Update. commit cc6563d29b6f86b23c4f9a8ea73dabf9f7fc0d91 Author: Pedro Alves Date: Wed Jul 30 12:19:30 2014 +0100 gdb.threads/signal-command-handle-nopass.exp: Add comment Explain why we do "info threads". gdb/testsuite/ 2014-07-30 Pedro Alves * gdb.threads/signal-command-handle-nopass.exp (test): Add comment. commit a1c7835a2f1755e815a662e2d6caeb6f9e1b1ecc Author: Yao Qi Date: Fri Jul 25 19:35:23 2014 +0800 Update comments to operator_check Hello, I happen to read the code and find the comments to operator_check are incorrect. This patch is to fix the comments per my understanding. The comments and field operator_check was added by this patch https://sourceware.org/ml/gdb-patches/2010-04/msg00556.html but the inconsistency between code and comments wasn't pointed out during the review. gdb: 2014-07-30 Yao Qi * parser-defs.h (struct exp_descriptor) : Update comments. * parse.c (exp_iterate): Update comments. commit 976411d6b6aa5cae05259eb92b87a04262052e09 Author: Gary Benson Date: Thu Jul 24 15:35:45 2014 +0100 Introduce common/common-defs.h This commit creates a new header, common/common-defs.h, to hold definitions common to all code under gdb/. Both gdb/defs.h and gdb/gdbserver/server.h are modified to include common-defs.h as their first non-comment line; all code under gdb/ includes either defs.h or server.h as appropriate, so common-defs.h will be the first actual code the compiler sees. For this initial commit common-defs.h includes only the two config.h files. Future commits will move more code currently duplicated across defs.h and server.h such that shared code in gdb/{common,target,nat} can be modified to include common-defs.h rather than defs.h or server.h. gdb/ 2014-07-30 Gary Benson * common/common-defs.h: New file. * Makefile.in (HFILES_NO_SRCDIR): Add common/common-defs.h. * defs.h: Include common-defs.h. Do not include config.h or build-gnulib/config.h. gdb/gdbserver/ 2014-07-30 Gary Benson * server.h: Include common-defs.h. Do not include config.h or build-gnulib-gdbserver/config.h. commit 5d4848a4bda0cb79d61dcb9987ef6116cf1e6f67 Author: Gary Benson Date: Thu Jul 24 16:20:50 2014 +0100 Do not include config.h directly All source files under gdb/ that include headers from gdb/ include either defs.h or server.h before any other code with the exception of gdb/gdbserver/gdbreplay.c which seems to be a special case. Both defs.h and server.h include both our and gnulib's config.h files as their first non-comment line, so no other file ever needs to directly include any config.h. This commit removes two such direct config.h includes. gdb/ 2014-07-30 Gary Benson * common/common-utils.h: Do not include config.h. * nat/linux-btrace.h: Likewise. commit d41f6d8ea2868ed247c149c252741d02293c6659 Author: Gary Benson Date: Fri Jul 25 12:18:00 2014 +0100 Make all source files include defs.h or server.h first This commit makes all source files under gdb/ that include headers from gdb/ include either defs.h or server.h before any other code. This ensures that definitions and macros from the two config.h files are always in place for our code. An exception has been made for gdb/gdbserver/gdbreplay.c which seems to be a special case. gdb/ 2014-07-30 Gary Benson * btrace.c: Include defs.h. * common/ptid.c: Include defs.h or server.h as appropriate. * nat/mips-linux-watch.c: Likewise. gdb/gdbserver/ 2014-07-30 Gary Benson * hostio-errno.c: Move server.h to top of includes list. * inferiors.c: Likewise. * linux-x86-low.c: Likewise. * notif.c: Include server.h. commit f2120acddc665a9adbd90e2dd32a3f589d9230c4 Author: Alan Modra Date: Wed Jul 30 09:30:59 2014 +0930 daily update commit 84202f9c998c3f1bf0aa5d6457de7c9cad5f8500 Author: Tom Tromey Date: Fri Jul 18 08:48:43 2014 -0600 simplify target_is_pushed While working on target_is_pushed, I noticed that it is written in a strange way. The code currently keeps an extra indirection, where a simple linked list traversal is all that is needed. It seems likely this was done by copying and pasting other code. However, there is no reason to do this and the more obvious code is simpler to reason about. So, this patch change the implementation. 2014-07-29 Tom Tromey * target.c (target_is_pushed): Simplify. commit 2530441cef6408cb50b9e96670d766104d6123c8 Author: Joel Brobecker Date: Tue Jul 29 06:13:57 2014 -0700 Document the gdb-7.8 release in GDB's ChangeLog. commit 43885403ede73aa83b37cfa0e7a254b6f255d5af Author: Matthew Fortune Date: Tue Jul 29 13:18:07 2014 +0100 [MIPS] Rename COPROC related macros gas/ * config/tc-mips.c: Rename INSN_LOAD_COPROC_DELAY to INSN_LOAD_COPROC and INSN_COPROC_MOVE_DELAY to INSN_COPROC_MOVE throughout. include/opcode/ * mips.h (INSN_LOAD_COPROC_DELAY): Rename to... (INSN_LOAD_COPROC): New define. (INSN_COPROC_MOVE_DELAY): Rename to... (INSN_COPROC_MOVE): New define. opcodes/ * micromips-opc.c (COD): Rename throughout to... (CM): New define, update to use INSN_COPROC_MOVE. (LCD): Rename throughout to... (LC): New define, update to use INSN_LOAD_COPROC. * mips-opc.c: Likewise. commit ea99bdb59dfddd883c70428f24d16bf1ad3ded93 Author: Anthony Green Date: Tue Jul 29 07:04:52 2014 -0400 Import config.sub from upstream config repo commit 351cdf24d223290b15fa991e5052ec9e9bd1e284 Author: Matthew Fortune Date: Tue Jul 29 11:27:59 2014 +0100 [MIPS] Implement O32 FPXX, FP64 and FP64A ABI extensions Specification: https://dmz-portal.mips.com/wiki/MIPS_O32_ABI_-_FR0_and_FR1_Interlinking include/ * elf/mips.h (PT_MIPS_ABIFLAGS, SHT_MIPS_ABIFLAGS): Define. (Val_GNU_MIPS_ABI_FP_OLD_64): Rename from Val_GNU_MIPS_ABI_FP_64. (Val_GNU_MIPS_ABI_FP_64): Redefine. (Val_GNU_MIPS_ABI_FP_XX): Define. (Elf_External_ABIFlags_v0, Elf_Internal_ABIFlags_v0): New structures. (AFL_REG_NONE, AFL_REG_32, AFL_REG_64, AFL_REG_128): Define. (AFL_ASE_DSP, AFL_ASE_DSPR2, AFL_ASE_EVA, AFL_ASE_MCU): Likewise. (AFL_ASE_MDMX, AFL_ASE_MIPS3D, AFL_ASE_MT, AFL_ASE_SMARTMIPS): Likewise. (AFL_ASE_VIRT, AFL_ASE_MSA, AFL_ASE_MIPS16): Likewise. (AFL_ASE_MICROMIPS, AFL_ASE_XPA): Likewise. (AFL_EXT_XLR, AFL_EXT_OCTEON2, AFL_EXT_OCTEONP): Likewise. (AFL_EXT_LOONGSON_3A, AFL_EXT_OCTEON, AFL_EXT_5900): Likewise. (AFL_EXT_4650, AFL_EXT_4010, AFL_EXT_4100, AFL_EXT_3900): Likewise. (AFL_EXT_10000, AFL_EXT_SB1, AFL_EXT_4111, AFL_EXT_4120): Likewise. (AFL_EXT_5400, AFL_EXT_5500, AFL_EXT_LOONGSON_2E): Likewise. (AFL_EXT_LOONGSON_2F): Likewise. (bfd_mips_elf_swap_abiflags_v0_in): Prototype. (bfd_mips_elf_swap_abiflags_v0_out): Likewise. (bfd_mips_isa_ext): Likewise. bfd/ * elfxx-mips.c (ABI_O32_P, MIPS_ELF_ABIFLAGS_SECTION_NAME_P): New macro. (mips_elf_obj_tdata): Add abiflags and abiflags_valid fields. (bfd_mips_elf_swap_abiflags_v0_in): New function. (bfd_mips_elf_swap_abiflags_v0_out): Likewise. (_bfd_mips_elf_section_from_shdr): Handle SHT_MIPS_ABIFLAGS. (_bfd_mips_elf_fake_sections): Likewise. (_bfd_mips_elf_always_size_sections): Handle .MIPS.abiflags. (_bfd_mips_elf_additional_program_headers): Account for new PT_MIPS_ABIFLAGS program header. (_bfd_mips_elf_modify_segment_map): Create PT_MIPS_ABIFLAGS segment and associate with .MIPS.abiflags. (_bfd_mips_elf_gc_mark_extra_sections): New function. (bfd_mips_isa_ext, update_mips_abiflags_isa): New static function. (infer_mips_abiflags): Likewise. (_bfd_mips_elf_final_link): Handle .MIPS.abiflags. (mips_32bit_flags_p): Moved higher. (mips_elf_merge_obj_attributes, _bfd_mips_fp_abi_string): Error checking for FP ABIs. (_bfd_mips_elf_merge_private_bfd_data): Restructure and add abiflags checks. Check EF_MIPS_FP64 flag consistency. (print_mips_ases, print_mips_isa_ext): New static function. (print_mips_fp_abi_value, get_mips_reg_size): Likewise. (_bfd_mips_elf_print_private_bfd_data): Display abiflags data. (_bfd_mips_post_process_headers): Set EI_ABIVERSION = 3 for Val_GNU_MIPS_ABI_FP_64 or Val_GNU_MIPS_ABI_FP_64A. * elfxx-mips.h (_bfd_mips_elf_gc_mark_extra_sections): New prototype. * elf32-mips.c (elf_backend_gc_mark_extra_sections): Implement. * elfn32-mips.c (elf_backend_gc_mark_extra_sections): Implement. * elf64-mips.c (elf_backend_gc_mark_extra_sections): Implement. binutils/ * readelf.c (get_mips_segment_type): Display name for PT_MIPS_ABIFLAGS. (get_mips_section_type_name): Display name for SHT_MIPS_ABIFLAGS. (display_mips_gnu_attribute): Abstracted fp abi printing to... (print_mips_fp_abi_value): New static function. Handle new FP ABIs. (print_mips_ases, print_mips_isa_ext): New static functions. (get_mips_reg_size): Likewise. (process_mips_specific): Display abiflags data. elfcpp/ * elfcpp.h (PT_MIPS_ABIFLAGS): New program header type. gas/ * config/tc-mips.c (mips_flags_frag): New static global. (struct mips_set_options): Add oddspreg field. (file_mips_opts, mips_opts): Initialize oddspreg. (ISA_HAS_ODD_SINGLE_FPR): Add CPU argument and update for R5900 and Loongson-3a. (enum options, md_longopts, md_parse_option): Add -mfpxx, -modd-spreg and -mno-odd-spreg options. (md_begin): Create .MIPS.abiflags section. (fpabi_incompatible_with, fpabi_requires): New static function. (check_fpabi): Likewise. (mips_check_options): Handle fp=xx and oddspreg restrictions. (file_mips_check_options): Set oddspreg by default for fp=xx. (mips_oddfpreg_ok): Re-write function. (check_regno): Check odd numbered registers regardless of FPR size. For fp != 32 use as_bad instead of as_warn. (match_float_constant): Rewrite check regarding FP register width. Add support for generating constants when MXHC1 is present. Handle fp=xx to comply with the ABI. (macro): Update M_LI_DD similarly to match_float_constant. Generate MTHC1 when available. Check that correct code can be generated for fp=xx and fp=64 ABIs. (parse_code_option, s_mipsset): Add fp=xx, oddspreg and nooddspreg options. (mips_convert_ase_flags): New static function. (mips_elf_final_processing): Use fpabi == Val_GNU_MIPS_ABI_FP_OLD_64 to determine when to add the EF_MIPS_FP64 flag. Populate the .MIPS.abiflags section. (md_mips_end): Update .gnu_attribute based on command line and .module as applicable. Use check_fpabi to ensure .gnu.attribute and command line/.module options are consistent. * doc/as.texinfo: Add missing -mgp64/-mfp64 options and document new -mfpxx, -modd-spreg and -mno-odd-spreg options. * doc/c-mips.texi: Document -mfpxx, -modd-spreg, -mno-odd-spreg, gnu_attribute values and FP ABIs. ld/ * emulparams/elf32bmip.sh: Add .MIPS.abiflags. * emulparams/elf32bmipn32-defs.sh: Likewise. * emulparams/elf64bmip-defs.sh: Likewise. opcodes/ * micromips-opc.c (COD, LCD) New macros. (cfc1, ctc1): Remove FP_S attribute. (dmfc1, mfc1, mfhc1): Add LCD attribute. (dmtc1, mtc1, mthc1): Add COD attribute. * mips-opc.c (cfc1, cftc1, ctc, cttc1): Remove FP_S attribute. binutils/testsuite/ * binutils-all/readelf.s: Account for .MIPS.abiflags and .gnu.attributes. * binutils-all/readelf.ss-tmips: Likewise. * binutils-all/strip-3.d: Likewise. gas/testsuite/ * gas/mips/attr-gnu-4-0.d: New. * gas/mips/attr-gnu-4-0.s: Likewise. * gas/mips/attr-gnu-4-1-mfp32.l: Likewise. * gas/mips/attr-gnu-4-1-mfp32.s: Likewise. * gas/mips/attr-gnu-4-1-mfp64.l: Likewise. * gas/mips/attr-gnu-4-1-mfp64.s: Likewise. * gas/mips/attr-gnu-4-1-mfpxx.s: Likewise. * gas/mips/attr-gnu-4-1-msingle-float.l: Likewise. * gas/mips/attr-gnu-4-1-msingle-float.s: Likewise. * gas/mips/attr-gnu-4-1-msoft-float.l: Likewise. * gas/mips/attr-gnu-4-1-msoft-float.s: Likewise. * gas/mips/attr-gnu-4-1.d: Likewise. * gas/mips/attr-gnu-4-1.s: Likewise. * gas/mips/attr-gnu-4-2-mdouble-float.l: Likewise. * gas/mips/attr-gnu-4-2-mdouble-float.s: Likewise. * gas/mips/attr-gnu-4-2-msoft-float.l: Likewise. * gas/mips/attr-gnu-4-2-msoft-float.s: Likewise. * gas/mips/attr-gnu-4-2.d: Likewise. * gas/mips/attr-gnu-4-2.s: Likewise. * gas/mips/attr-gnu-4-3-mhard-float.l: Likewise. * gas/mips/attr-gnu-4-3-mhard-float.s: Likewise. * gas/mips/attr-gnu-4-3.d: Likewise. * gas/mips/attr-gnu-4-3.s: Likewise. * gas/mips/attr-gnu-4-4.l: Likewise. * gas/mips/attr-gnu-4-4.s: Likewise. * gas/mips/attr-gnu-4-5-64.l: Likewise. * gas/mips/attr-gnu-4-5-64.s: Likewise. * gas/mips/attr-gnu-4-5.d: Likewise. * gas/mips/attr-gnu-4-5.l: Likewise. * gas/mips/attr-gnu-4-5.s: Likewise. * gas/mips/attr-gnu-4-6-64.l: Likewise. * gas/mips/attr-gnu-4-6-64.s: Likewise. * gas/mips/attr-gnu-4-6.d: Likewise. * gas/mips/attr-gnu-4-6.l: Likewise. * gas/mips/attr-gnu-4-6.s: Likewise. * gas/mips/attr-gnu-4-6-msingle-float.l: Likewise. * gas/mips/attr-gnu-4-6-msingle-float.s: Likewise. * gas/mips/attr-gnu-4-6-msoft-float.l: Likewise. * gas/mips/attr-gnu-4-6-msoft-float.s: Likewise. * gas/mips/attr-gnu-4-6-noodd.l: Likewise. * gas/mips/attr-gnu-4-6-noodd.s: Likewise. * gas/mips/attr-gnu-4-7-64.l: Likewise. * gas/mips/attr-gnu-4-7-64.s: Likewise. * gas/mips/attr-gnu-4-7-msingle-float.l: Likewise. * gas/mips/attr-gnu-4-7-msingle-float.s: Likewise. * gas/mips/attr-gnu-4-7-msoft-float.l: Likewise. * gas/mips/attr-gnu-4-7-msoft-float.s: Likewise. * gas/mips/attr-gnu-4-7-odd.l: Likewise. * gas/mips/attr-gnu-4-7-odd.s: Likewise. * gas/mips/attr-gnu-4-7.d: Likewise. * gas/mips/attr-gnu-4-7.l: Likewise. * gas/mips/attr-gnu-4-7.s: Likewise. * gas/mips/attr-none-double.d: Likewise. * gas/mips/attr-none-o32-fp64.d: Likewise. * gas/mips/attr-none-o32-fp64-nooddspreg.d * gas/mips/attr-none-o32-fpxx.d: Likewise. * gas/mips/attr-none-single-float.d: Likewise. * gas/mips/attr-none-soft-float.d: Likewise. * gas/mips/elf_arch_mips32r3.d: Likewise. * gas/mips/elf_arch_mips32r5.d: Likewise. * gas/mips/elf_arch_mips64r3.d: Likewise. * gas/mips/elf_arch_mips64r5.d: Likewise. * gas/mips/li-d.d: Likewise. * gas/mips/li-d.s: Likewise. * gas/mips/module-check-warn.l: Likewise. * gas/mips/module-check-warn.s: Likewise. * gas/mips/module-check.d: Likewise. * gas/mips/module-check.s: Likewise. * gas/mips/module-mfp32.d: Likewise. * gas/mips/module-mfp32.s: Likewise. * gas/mips/module-mfp64.d: Likewise. * gas/mips/module-mfp64.s: Likewise. * gas/mips/module-mfp64-noodd.d: Likewise. * gas/mips/module-mfp64-noodd.s: Likewise. * gas/mips/module-mfpxx.d: Likewise. * gas/mips/module-mfpxx.s: Likewise. * gas/mips/module-msingle-float.d: Likewise. * gas/mips/module-msingle-float.s: Likewise. * gas/mips/module-msoft-float.d: Likewise. * gas/mips/module-msoft-float.s: Likewise. * gas/mips/module-set-mfpxx.d: Likewise. * gas/mips/module-set-mfpxx.s: Likewise. * gas/mips/fpxx-oddfpreg.d: Likewise. * gas/mips/fpxx-oddfpreg.l: Likewise. * gas/mips/fpxx-oddfpreg.s: Likewise. * gas/mips/no-odd-spreg.d: Likewise. * gas/mips/odd-spreg.d: Likewise. * gas/elf/section2.e-mips: Adjust expected output. * gas/mips/attr-gnu-abi-fp-1.d: Likewise. * gas/mips/attr-gnu-abi-msa-1.d: Likewise. * gas/mips/call-nonpic-1.d: Likewise. * gas/mips/elf_arch_mips1.d: Likewise. * gas/mips/elf_arch_mips2.d: Likewise. * gas/mips/elf_arch_mips3.d: Likewise. * gas/mips/elf_arch_mips32.d: Likewise. * gas/mips/elf_arch_mips32r2.d: Likewise. * gas/mips/elf_arch_mips4.d: Likewise. * gas/mips/elf_arch_mips5.d: Likewise. * gas/mips/elf_arch_mips64.d: Likewise. * gas/mips/elf_arch_mips64r2.d: Likewise. * gas/mips/elf_ase_micromips-2.d: Likewise. * gas/mips/elf_ase_micromips.d: Likewise. * gas/mips/elf_ase_mips16-2.d: Likewise. * gas/mips/elf_ase_mips16.d: Likewise. * gas/mips/module-defer-warn1.d: Likewise. * gas/mips/module-override.d: Likewise. * gas/mips/n32-consec.d: Likewise. * gas/mips/nan-2008-1.d: Likewise. * gas/mips/nan-2008-2.d: Likewise. * gas/mips/nan-2008-3.d: Likewise. * gas/mips/nan-2008-4.d: Likewise. * gas/mips/nan-legacy-1.d: Likewise. * gas/mips/nan-legacy-2.d: Likewise. * gas/mips/nan-legacy-3.d: Likewise. * gas/mips/nan-legacy-4.d: Likewise. * gas/mips/nan-legacy-5.d: Likewise. * gas/mips/tmips16-e.d: Likewise. * gas/mips/tmips16-f.d: Likewise. * gas/mips/tmipsel16-e.d: Likewise. * gas/mips/tmipsel16-f.d: Likewise. * gas/testsuite/gas/mips/mips.exp: Add new tests. ld/testsuite/ * ld-mips-elf/abiflags-strip1-ph.d: New. * ld-mips-elf/abiflags-strip2-ph.d: Likewise. * ld-mips-elf/abiflags-strip3-ph.d: Likewise. * ld-mips-elf/abiflags-strip4-ph.d: Likewise. * ld-mips-elf/abiflags-strip5-ph.d: Likewise. * ld-mips-elf/abiflags-strip6-ph.d: Likewise. * ld-mips-elf/abiflags-strip7-ph.d: Likewise. * ld-mips-elf/abiflags-strip8-ph.d: Likewise. * ld-mips-elf/abiflags-strip9-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-0-n32-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-0-n64-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-0-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-06.d: Likewise. * ld-mips-elf/attr-gnu-4-07.d: Likewise. * ld-mips-elf/attr-gnu-4-08.d: Likewise. * ld-mips-elf/attr-gnu-4-1-n32-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-1-n64-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-1-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-16.d: Likewise. * ld-mips-elf/attr-gnu-4-17.d: Likewise. * ld-mips-elf/attr-gnu-4-18.d: Likewise. * ld-mips-elf/attr-gnu-4-2-n32-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-2-n64-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-2-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-26.d: Likewise. * ld-mips-elf/attr-gnu-4-27.d: Likewise. * ld-mips-elf/attr-gnu-4-28.d: Likewise. * ld-mips-elf/attr-gnu-4-3-n32-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-3-n64-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-3-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-36.d: Likewise. * ld-mips-elf/attr-gnu-4-37.d: Likewise. * ld-mips-elf/attr-gnu-4-38.d: Likewise. * ld-mips-elf/attr-gnu-4-4-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-46.d: Likewise. * ld-mips-elf/attr-gnu-4-47.d: Likewise. * ld-mips-elf/attr-gnu-4-48.d: Likewise. * ld-mips-elf/attr-gnu-4-5-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-50.d: Likewise. * ld-mips-elf/attr-gnu-4-52.d: Likewise. * ld-mips-elf/attr-gnu-4-53.d: Likewise. * ld-mips-elf/attr-gnu-4-54.d: Likewise. * ld-mips-elf/attr-gnu-4-55.d: Likewise. * ld-mips-elf/attr-gnu-4-56.d: Likewise. * ld-mips-elf/attr-gnu-4-57.d: Likewise. * ld-mips-elf/attr-gnu-4-58.d: Likewise. * ld-mips-elf/attr-gnu-4-6-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-6.s: Likewise. * ld-mips-elf/attr-gnu-4-60.d: Likewise. * ld-mips-elf/attr-gnu-4-61.d: Likewise. * ld-mips-elf/attr-gnu-4-62.d: Likewise. * ld-mips-elf/attr-gnu-4-63.d: Likewise. * ld-mips-elf/attr-gnu-4-64.d: Likewise. * ld-mips-elf/attr-gnu-4-65.d: Likewise. * ld-mips-elf/attr-gnu-4-66.d: Likewise. * ld-mips-elf/attr-gnu-4-67.d: Likewise. * ld-mips-elf/attr-gnu-4-68.d: Likewise. * ld-mips-elf/attr-gnu-4-7-ph.d: Likewise. * ld-mips-elf/attr-gnu-4-7.s: Likewise. * ld-mips-elf/attr-gnu-4-70.d: Likewise. * ld-mips-elf/attr-gnu-4-71.d: Likewise. * ld-mips-elf/attr-gnu-4-72.d: Likewise. * ld-mips-elf/attr-gnu-4-73.d: Likewise. * ld-mips-elf/attr-gnu-4-74.d: Likewise. * ld-mips-elf/attr-gnu-4-75.d: Likewise. * ld-mips-elf/attr-gnu-4-76.d: Likewise. * ld-mips-elf/attr-gnu-4-77.d: Likewise. * ld-mips-elf/attr-gnu-4-78.d: Likewise. * ld-mips-elf/attr-gnu-4-8.s: Likewise. * ld-mips-elf/attr-gnu-4-81.d: Likewise. * ld-mips-elf/empty.s: Likewise. * ld-mips-elf/attr-gnu-4-00.d: Adjust expected output. * ld-mips-elf/attr-gnu-4-01.d: Likewise. * ld-mips-elf/attr-gnu-4-02.d: Likewise. * ld-mips-elf/attr-gnu-4-03.d: Likewise. * ld-mips-elf/attr-gnu-4-04.d: Likewise. * ld-mips-elf/attr-gnu-4-05.d: Likewise. * ld-mips-elf/attr-gnu-4-10.d: Likewise. * ld-mips-elf/attr-gnu-4-11.d: Likewise. * ld-mips-elf/attr-gnu-4-14.d: Likewise. * ld-mips-elf/attr-gnu-4-15.d: Likewise. * ld-mips-elf/attr-gnu-4-2.s: Likewise. * ld-mips-elf/attr-gnu-4-20.d: Likewise. * ld-mips-elf/attr-gnu-4-22.d: Likewise. * ld-mips-elf/attr-gnu-4-24.d: Likewise. * ld-mips-elf/attr-gnu-4-25.d: Likewise. * ld-mips-elf/attr-gnu-4-3.s: Likewise. * ld-mips-elf/attr-gnu-4-30.d: Likewise. * ld-mips-elf/attr-gnu-4-33.d: Likewise. * ld-mips-elf/attr-gnu-4-34.d: Likewise. * ld-mips-elf/attr-gnu-4-35.d: Likewise. * ld-mips-elf/attr-gnu-4-40.d: Likewise. * ld-mips-elf/attr-gnu-4-41.d: Likewise. * ld-mips-elf/attr-gnu-4-42.d: Likewise. * ld-mips-elf/attr-gnu-4-43.d: Likewise. * ld-mips-elf/attr-gnu-4-44.d: Likewise. * ld-mips-elf/attr-gnu-4-45.d: Likewise. * ld-mips-elf/attr-gnu-4-5.s: Likewise. * ld-mips-elf/attr-gnu-4-51.d: Likewise. * ld-mips-elf/attr-gnu-8-00.d: Likewise. * ld-mips-elf/attr-gnu-8-01.d: Likewise. * ld-mips-elf/attr-gnu-8-02.d: Likewise. * ld-mips-elf/attr-gnu-8-10.d: Likewise. * ld-mips-elf/attr-gnu-8-11.d: Likewise. * ld-mips-elf/attr-gnu-8-20.d: Likewise. * ld-mips-elf/attr-gnu-8-22.d: Likewise. * ld-mips-elf/jalx-2.dd: Likewise. * ld-mips-elf/mips16-pic-1.gd: Likewise. * ld-mips-elf/mips16-pic-2.gd: Likewise. * ld-mips-elf/mips16-pic-3.gd: Likewise. * ld-mips-elf/mips16-pic-4a.gd: Likewise. * ld-mips-elf/multi-got-no-shared.d: Likewise. * ld-mips-elf/nan-2008.d: Likewise. * ld-mips-elf/nan-legacy.d: Rework test. * ld-mips-elf/pic-and-nonpic-3a.gd: Likewise. * ld-mips-elf/pic-and-nonpic-3b.gd: Likewise. * ld-mips-elf/pic-and-nonpic-5b.gd: Likewise. * ld-mips-elf/pic-and-nonpic-6.ld: Likewise. * ld-mips-elf/rel32-n32.d: Likewise. * ld-mips-elf/rel32-o32.d: Likewise. * ld-mips-elf/rel64.d: Likewise. * ld-mips-elf/tls-multi-got-1.r: Likewise. * ld-elf/group.ld: Discard .MIPS.abiflags and .gnu.attributes. * ld-elf/orphan-region.ld: Likewise. * ld-elf/orphan.ld: Likewise. * ld-mips-elf/compressed-plt-1.ld: Likewise. * ld-mips-elf/dyn-sec64.ld: Likewise. * ld-mips-elf/got-dump-1.ld: Likewise. * ld-mips-elf/got-dump-2.ld: Likewise. * ld-mips-elf/got-page-1.ld: Likewise. * ld-mips-elf/mips-dyn.ld: Likewise. * ld-mips-elf/mips-lib.ld: Likewise. * ld-mips-elf/pic-and-nonpic-3a.ld: Likewise. * ld-mips-elf/pic-and-nonpic-3b.ld: Likewise. * ld-mips-elf/pic-and-nonpic-4b.ld: Likewise. * ld-mips-elf/pic-and-nonpic-5b.ld: Likewise. * ld-mips-elf/region1.t: Likewise. * ld-mips-elf/stub-dynsym-1.ld: Likewise. * ld-mips-elf/tls-hidden3.ld: Likewise. * ld-mips-elf/vxworks1.ld: Likewise. * ld-scripts/overlay-size.t: Likewise. * ld-mips-elf/elf-rel-got-n32-embed.d: Remove .MIPS.abiflags from objects. * ld-mips-elf/elf-rel-got-n32.d: Likewise. * ld-mips-elf/elf-rel-got-n64-embed.d: Likewise. * ld-mips-elf/elf-rel-got-n64-linux.d: Likewise. * ld-mips-elf/elf-rel-got-n64.d: Likewise. * ld-mips-elf/elf-rel-xgot-n32.d: Likewise. * ld-mips-elf/elf-rel-xgot-n32-embed.d: Likewise. * ld-mips-elf/elf-rel-xgot-n64.d: Likewise. * ld-mips-elf/elf-rel-xgot-n64-linux.d: Likewise. * ld-mips-elf/elf-rel-xgot-n64-embed.d: Likewise. * ld-mips-elf/mips-elf.exp: Add new tests. commit 7e09a22367934a6d53f79d8b01135832b80ab246 Author: Yao Qi Date: Mon Jul 28 13:44:57 2014 +0800 Fix PR 17206 As reported in PR 17206, an internal error is triggered when command until is executed. In infcmd.c:until_next_command, step_range_end is set to 'pc', if (!func) { struct bound_minimal_symbol msymbol = lookup_minimal_symbol_by_pc (pc); if (msymbol.minsym == NULL) error (_("Execution is not within a known function.")); tp->control.step_range_start = BMSYMBOL_VALUE_ADDRESS (msymbol); tp->control.step_range_end = pc; } and later in infrun.c:resume, the assert below is triggered in PR 17206. if (tp->control.may_range_step) { /* If we're resuming a thread with the PC out of the step range, then we're doing some nested/finer run control operation, like stepping the thread out of the dynamic linker or the displaced stepping scratch pad. We shouldn't have allowed a range step then. */ gdb_assert (pc_in_thread_step_range (pc, tp)); } In until_next_command, we set step range to [XXX, pc), so pc isn't within the range. pc_in_thread_step_range returns false and the assert is triggered. AFAICS, the range we want in until_next_command is [XXX, pc] instead of [XXX, pc), because we want to program step until greater than pc. This patch is to set step_range_end to 'pc + 1'. Running until-nodebug.exp with unpatched GDB will get the following fail, FAIL: gdb.base/until-nodebug.exp: until 2 (GDB internal error) and the fail goes away when the fix is applied. gdb: 2014-07-29 Yao Qi PR gdb/17206 * infcmd.c (until_next_command): Set step_range_end to PC + 1. gdb/testsuite: 2014-07-29 Yao Qi PR gdb/17206 * gdb.base/until-nodebug.exp: New. commit 7ebdbe9292e4b696740b021938369adb1484da27 Author: Doug Evans Date: Mon Jul 28 19:20:30 2014 -0700 PR guile/17203 * guile/scm-param.c (pascm_parameter_defined_p): New function. (gdbscm_register_parameter_x): Call it. Raise error for pre-existing parameters. testsuite/ * gdb.guile/scm-parameter.exp: Add tests for trying to create previously existing parameter, and previously ambiguously spelled parameter. commit 385f635ae0be0077dad606c12118bbe0f886f28f Author: Alan Modra Date: Tue Jul 29 09:30:44 2014 +0930 daily update commit f347ffc90a320a26394715e6f1629c856458ae15 Author: Will Newton Date: Tue Jul 22 17:10:51 2014 +0100 gdb/arm-linux-tdep.c: Handle Thumb2 signal trampolines Recent versions of glibc have assembled the signal trampoline code as Thumb2, which causes gdb to misinterpret them and a number of testsuite tests to fail. Educate gdb about these trampolines and get the tests running again. gdb/ChangeLog: 2014-07-28 Will Newton * arm-linux-tdep.c (THUMB2_SET_R7_SIGRETURN1): New define. (THUMB2_SET_R7_SIGRETURN2): Likewise. (THUMB2_SET_R7_RT_SIGRETURN1): Likewise. (THUMB2_SET_R7_RT_SIGRETURN2): Likewise. (THUMB2_EABI_SYSCALL): Likewise. (thumb2_eabi_linux_sigreturn_tramp_frame): Create new struct tramp_frame. (thumb2_eabi_linux_rt_sigreturn_tramp_frame): Likewise. (arm_linux_init_abi): Add Thumb2 tramp frame unwinders. commit fdb1adc6854e4240bd8ad940c57c93d48abcc040 Author: Will Newton Date: Tue Jul 22 17:16:48 2014 +0100 gdb/testsuite/gdb.base/varargs.exp: Remove ARM KFAILs These tests used to fail on ARM but now pass, so remove the KFAIL. gdb/testsuite/ChangeLog: 2014-07-28 Will Newton * gdb.base/varargs.exp: Remove KFAILs for ARM. commit b794fc1d1c3a3dfb65b74a36fe96c474fee65000 Author: Alan Modra Date: Mon Jul 28 22:18:25 2014 +0930 Warn for ar/nm/ranlib/ld on lto objects without plugin PR 13227 bfd/ * archive.c (_bfd_compute_and_write_armap): Warn on adding __gnu_lto_slim to armap. * linker.c (_bfd_generic_link_add_one_symbol): Warn on adding __gnu_lto_slim to linker hash table. binutils/ * nm.c (filter_symbols): Warn on __gnu_lto_slim. commit 774bb79e9b9e192bcecc38da919edffaf9b5d236 Author: Alan Modra Date: Mon Jul 28 09:30:43 2014 +0930 daily update commit 1f995db6ad2c9325a8db45b73fea29c8ab9200e1 Author: Joel Sherrill Date: Mon Jul 21 18:49:17 2014 -0500 or1k: GDB not supported for or1k*-*-rtems* * configure.ac (or1k*-*-rtems*): gdb not supported. The ordering of the stanzas results in this not being caught by or1k*-*-* later. * configure. Regenerated. Signed-off-by: Christian Svensson commit 8a196b99a86d56775aa60043aa41a8a4fa228013 Author: Joel Sherrill Date: Mon Jul 21 19:10:52 2014 -0500 or1k: RTEMS target support and simplify matching * gas/configure.tgt (or1k*-*-rtems*): Ensure a match. (or1k*-*-*): Use or1k* to match or1knd and or1kZ. Signed-off-by: Christian Svensson commit 37c5f1f7d2bcad988a038c19b29c199c11ffdd40 Author: Doug Evans Date: Sun Jul 27 07:50:49 2014 -0700 * guile/scm-param.c (pascm_print_param_smob): Fix output. commit 0c3abbc7473db6be7618d2261f604ef1489f2755 Author: Doug Evans Date: Sun Jul 27 07:41:01 2014 -0700 * guile/guile.c (gdbscm_execute_gdb_command): Fix typo in comment. commit 48494700d58ee0dc781d288191679072cbaf9d16 Author: Anthony Green Date: Sun Jul 27 08:51:20 2014 -0400 Add moxiebox target commit e76c5d173bbf7137555919dd136004a7c0118af7 Author: Doug Evans Date: Sat Jul 26 18:16:27 2014 -0700 PR guile/17146 * acinclude.m4 (GDB_GUILE_PROGRAM_NAMES): New macro. (GDB_GUILD_TARGET_FLAG, GDB_TRY_GUILD): New macros. * configure.ac: Try to use guild to compile an scm file, if it fails then disable guile support. * configure: Regenerate. * data-directory/Makefile.in (GUILE_SOURCE_FILES): Renamed from GUILE_FILE_LIST. (GUILE_COMPILED_FILES): New variable. (GUILE_FILES) Update. (GUILD, GUILD_TARGET_FLAG, GUILD_COMPILE_FLAGS): New variables. (stamp-guile): Compile scm files. * guile/guile.c (boot_guile_support): New function. (standard_throw_args_p): New function. (print_standard_throw_error, print_throw_error): New functions. (handle_boot_error): New function. (initialize_scheme_side): Rewrite to call boot_guile_support. * guile/lib/gdb/boot.scm: Update %load-compiled-path. Load gdb.go. * guile/lib/gdb/init.scm (%silence-compiler-warnings%): New function. commit 186fcde0c6134aed28526d925b1360db95d47171 Author: Doug Evans Date: Sat Jul 26 17:01:09 2014 -0700 PR guile/17146 preparatory work. * data-directory/Makefile.in (GUILE_FILES): Add support.scm. * guile/lib/gdb/support.scm: New file. * guile/guile.c (gdbscm_init_module_name): Change to "gdb". * guile/lib/gdb.scm: Load gdb/init.scm as an include file. All uses updated. * guile/lib/gdb/init.scm (SCM_ARG1, SCM_ARG2): Moved to support.scm. All uses updated. (%assert-type): Ditto, and renamed to assert-type. (%exception-print-style): Delete. testsuite/ * gdb.guile/types-module.exp: Add tests for wrong type arguments. commit 4122867a4227d29b46377c2a44eae803a482d89f Author: Alan Modra Date: Sun Jul 27 09:30:58 2014 +0930 daily update commit 4df427550679698832ea9c01e0b561e77d98249c Author: Doug Evans Date: Sat Jul 26 16:41:29 2014 -0700 PR build/17105. Tested with/without guile,python on amd64-linux. I'm not sure we still have to deal with shells that can't handle empty for lists, but I played it safe. Otherwise this patch would be a lot smaller (though a diff -b will still show the real changes). PR build/17105 * configure.ac: Add AM_CONDITIONALs for HAVE_PYTHON, HAVE_GUILE. * configure: Regenerate. * data-directory/Makefile.in (PYTHON_FILE_LIST): Renamed from PYTHON_FILES. (PYTHON_FILES): New variable. (GUILE_FILE_LIST): Renamed from GUILE_FILES. (GUILE_FILES): New variable. (stamp-python, install-python, uninstall-python): Handle empty file list. (stamp-guile, install-guile, uninstall-guile): Ditto. commit ee7333ae06f46f3a6909a0059c2f0bd441a54bfe Author: Doug Evans Date: Sat Jul 26 14:58:58 2014 -0700 PR guile/17177 * guile/lib/gdb.scm (pretty-printers): Export. (set-pretty-printers!): Export. * guile/lib/gdb/printing.scm (gdb module): Update. (prepend-pretty-printer!, append-pretty-printer!): Update. * guile/scm-pretty-print.c (pretty_printer_list_name): Delete. (pretty_printer_list_var): Delete. (pretty_printer_list): New static global. (gdbscm_pretty_printers): New function. (gdbscm_set_pretty_printers_x): New function. (ppscm_find_pretty_printer_from_gdb): Update. (pretty_printer_functions): Add pretty-printers, set-pretty-printers!. (gdbscm_initialize_pretty_printers): Update. doc/ * guile.texi (Guile Pretty Printing API): Fix typo. Document set-pretty-printers!, pretty-printers. (Selecting Guile Pretty-Printers): Update. Mention program-space based pretty-printers. commit 74edf51613b507d1f27d66360cd8fdd8a253e88a Author: Doug Evans Date: Sat Jul 26 14:49:04 2014 -0700 PR 17185 PR 17185 describes a problem with using gdb+guile with libgc 7.4.0. The symptom is a hang in sigsuspend. [The thread referenced in the PR has the details.] It's not clear what the right fix is, or even where the bug is yet. This patch applies the same workaround Guile has applied. There is no functionality or real performance loss with this, and Guile has been using it for awhile. * configure.ac: Add check for header gc/gc.h. Add check for function setenv. * configure: Regenerate. * config.in: Regenerate. * guile/guile.c (_initialize_guile): Add workaround for libgc 7.4.0. commit e57e6ddc2e768323732a7eed6a5d25d3ee350638 Author: Alan Modra Date: Sat Jul 26 21:00:50 2014 +0930 Prepare gas for 64-bit obstacks Use size_t in a few places involved with obstacks, and don't include obstack.h in files that don't use obstacks. gas/ * config/bfin-parse.y: Don't include obstack.h. * config/obj-aout.c: Likewise. * config/obj-coff.c: Likewise. * config/obj-som.c: Likewise. * config/tc-bfin.c: Likewise. * config/tc-i960.c: Likewise. * config/tc-rl78.c: Likewise. * config/tc-rx.c: Likewise. * config/tc-tic4x.c: Likewise. * expr.c: Likewise. * listing.c: Likewise. * config/obj-elf.c (elf_file_symbol): Make name_length a size_t. * config/tc-aarch64.c (symbol_locate): Likewise. * config/tc-arm.c (symbol_locate): Likewise. * config/tc-mmix.c (mmix_handle_mmixal): Make len_0 a size_t. * config/tc-score.c (s3_build_score_ops_hsh): Make len a size_t. (s3_build_dependency_insn_hsh): Likewise. * config/tc-score7.c (s7_build_score_ops_hsh): Likewise. (s7_build_dependency_insn_hsh): Likewise. * frags.c (frag_grow): Make parameter a size_t, and use size_t locals. (frag_new): Make parameter a size_t. (frag_var_init): Make max_chars and var parameters size_t. (frag_var, frag_variant): Likewise. (frag_room): Return a size_t. (frag_align_pattern): Make n_fill parameter a size_t. * frags.h: Update function prototypes. * symbols.c (save_symbol_name): Make name_length a size_t. commit cd9ac21580fa2e2068388d86349b8deb85eafce8 Author: Alan Modra Date: Sat Jul 26 09:30:48 2014 +0930 daily update commit a843ea33df65b47d5ff525231a5b582e9cd4e5b3 Author: Samuel Bronson Date: Thu Jun 19 21:59:19 2014 -0400 Add a .gitattributes file for use with git-merge-changelog Individual users will still have to: 1. Install git-merge-changelog 2. Set up the merge driver in their git config See gnulib's lib/git-merge-changelog.c [1] for details. For example, I: 1. Patched Debian's gnulib package to build git-merge-changelog, and sent the patch to the Debian maintainer, who then proceeded to not only accept my patch but even write a *manpage* for git-merge-changelog! (Let's hear it for Ian Beckwith.) So now, I can install it simply by running "apt-get install git-merge-changelog". (Except, of course, that I already have it installed from when I was testing my patch.) 2. Did step (2) from .gitattributes With this patch applied and the above two steps done by whatever means you deem best, you can say goodbye to merge conflicts in ChangeLog files -- at least *IF* people stop renaming the danged things, anyway. If you don't do step 2, you will continue to suffer from ChangeLog merge conflicts exactly as before, whether or not you did step 1. If you do step 2 but not step 1, git will likely start complaining that it can't find any "git-merge-changelog" to run. [1]: http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=lib/git-merge-changelog.c [Note: The docs for git-merge-changelog (the comments at the top) say that you need a .gitattributes in every directory. The docs are wrong. Ignore the docs. Well, not the whole docs; just that part. You really only need one at the top level, since .gitattributes uses the same pattern matching rules as .gitignore, which match files in any subdirectory unless you prefix the pattern with a "/", as explained in the gitignore(5) manpage.] commit d54398a79e97eff8f51aed2035cb513cdc4fb319 Author: Maciej W. Rozycki Date: Fri Jul 25 18:57:06 2014 +0100 MIPS: Respect the "set mips compression" command This fixes gdbarch matching, making sure one for the opposite compressed ISA variation is not chosen. That in turn makes "set mips compression" work; right now the setting sticks to the initial value, either inferred from the ELF header of the binary first loaded or the default value if no binary has been used. This only affects debugging with no symbol table available or no binary chosen at all, as otherwise symbol annotations determine the compressed ISA variation. * mips-tdep.c (mips_gdbarch_init): Also check the compressed ISA variation in gdbarch matching. commit ab16fce80e60f15058b594f624024219c3a7a000 Author: Tom Tromey Date: Sat Jul 13 11:19:14 2013 -0600 remove using_exec_ops global This removes the using_exec_ops global from exec.c, in favor of querying the target stack directly using target_is_pushed. This is more in keeping with other code in gdb, and is also more future-proof as it is more multi-target-ready. Built and regtested on x86-64 Fedora 20. 2014-07-25 Tom Tromey * exec.c (using_exec_ops): Remove. (exec_close_1): Update. Remove extraneous block, reindent. (add_target_sections): Use target_is_pushed. commit 88056fbbf4fc603517ce2e09c0ee4398ab354836 Author: Pedro Alves Date: Fri Jul 25 17:34:05 2014 +0100 fix build: update clear_proceed_status callers A previous patch added a new parameter to clear_proceed_status, but forgot to update a few callers. Tested by building on x86_64 Fedora 20, with --enable-targets=all. gdb/ 2014-07-25 Pedro Alves * go32-nat.c (go32_create_inferior): Pass 0 to clear_proceed_status. * monitor.c (monitor_create_inferior): Likewise. * remote-m32r-sdi.c (m32r_create_inferior): Likewise. * remote-sim.c (gdbsim_create_inferior): Likewise. * solib-irix.c (irix_solib_create_inferior_hook): Likewise. * solib-osf.c (osf_solib_create_inferior_hook): Likewise. * windows-nat.c (do_initial_windows_stuff): Likewise. commit 705096250d59d9aaf3855a350edd2f3946777dd4 Author: Pedro Alves Date: Fri Jul 25 16:57:31 2014 +0100 Always pass signals to the right thread Currently, GDB can pass a signal to the wrong thread in several different but related scenarios. E.g., if thread 1 stops for signal SIGFOO, the user switches to thread 2, and then issues "continue", SIGFOO is actually delivered to thread 2, not thread 1. This obviously messes up programs that use pthread_kill to send signals to specific threads. This has been a known issue for a long while. Back in 2008 when I made stop_signal be per-thread (2020b7ab), I kept the behavior -- see code in 'proceed' being removed -- wanting to come back to it later. The time has finally come now. The patch fixes this -- on resumption, intercepted signals are always delivered to the thread that had intercepted them. Another example: if thread 1 stops for a breakpoint, the user switches to thread 2, and then issues "signal SIGFOO", SIGFOO is actually delivered to thread 1, not thread 2, because 'proceed' first switches to thread 1 to step over its breakpoint... If the user deletes the breakpoint before issuing "signal FOO", then the signal is delivered to thread 2 (the current thread). "signal SIGFOO" can be used for two things: inject a signal in the program while the program/thread had stopped for none, bypassing "handle nopass"; or changing/suppressing a signal the program had stopped for. These scenarios are really two faces of the same coin, and GDB can't really guess what the user is trying to do. GDB might have intercepted signals in more than one thread even (see the new signal-command-multiple-signals-pending.exp test). At least in the inject case, it's obviously clear to me that the user means to deliver the signal to the currently selected thread, so best is to make the command's behavior consistent and easy to explain. Then, if the user is trying to suppress/change a signal the program had stopped for instead of injecting a new signal, but, the user had changed threads meanwhile, then she will be surprised that with: (gdb) continue Thread 1 stopped for signal SIGFOO. (gdb) thread 2 (gdb) signal SIGBAR ... GDB actually delivers SIGFOO to thread 1, and SIGBAR to thread 2 (with scheduler-locking off, which is the default, because then "signal" or any other resumption command resumes all threads). So the patch makes GDB detect that, and ask for confirmation: (gdb) thread 1 [Switching to thread 1 (Thread 10979)] (gdb) signal SIGUSR2 Note: Thread 3 previously stopped with signal SIGUSR2, User defined signal 2. Thread 2 previously stopped with signal SIGUSR1, User defined signal 1. Continuing thread 1 (the current thread) with specified signal will still deliver the signals noted above to their respective threads. Continue anyway? (y or n) All these scenarios are covered by the new tests. Tested on x86_64 Fedora 20, native and gdbserver. gdb/ 2014-07-25 Pedro Alves * NEWS: Mention signal passing and "signal" command changes. * gdbthread.h (struct thread_suspend_state) : Extend comment. * breakpoint.c (until_break_command): Adjust clear_proceed_status call. * infcall.c (run_inferior_call): Adjust clear_proceed_status call. * infcmd.c (proceed_thread_callback, continue_1, step_once) (jump_command): Adjust clear_proceed_status call. (signal_command): Warn if other thread that are resumed have signals that will be delivered. Adjust clear_proceed_status call. (until_next_command, finish_command) (proceed_after_attach_callback, attach_command_post_wait) (attach_command): Adjust clear_proceed_status call. * infrun.c (proceed_after_vfork_done): Likewise. (proceed_after_attach_callback): Adjust comment. (clear_proceed_status_thread): Clear stop_signal if not in pass state. (clear_proceed_status_callback): Delete. (clear_proceed_status): New 'step' parameter. Only clear the proceed status of threads the command being prepared is about to resume. (proceed): If passed in an explicit signal, override stop_signal with it. Don't pass the last stop signal to the thread we're resuming. (init_wait_for_inferior): Adjust clear_proceed_status call. (switch_back_to_stepped_thread): Clear the signal if it should not be passed. * infrun.h (clear_proceed_status): New 'step' parameter. (user_visible_resume_ptid): Add comment. * linux-nat.c (linux_nat_resume_callback): Don't check whether the signal is in pass state. * remote.c (append_pending_thread_resumptions): Likewise. * mi/mi-main.c (proceed_thread): Adjust clear_proceed_status call. gdb/doc/ 2014-07-25 Pedro Alves Eli Zaretskii * gdb.texinfo (Signaling) : Explain what happens with multi-threaded programs. gdb/testsuite/ 2014-07-25 Pedro Alves * gdb.threads/signal-command-handle-nopass.c: New file. * gdb.threads/signal-command-handle-nopass.exp: New file. * gdb.threads/signal-command-multiple-signals-pending.c: New file. * gdb.threads/signal-command-multiple-signals-pending.exp: New file. * gdb.threads/signal-delivered-right-thread.c: New file. * gdb.threads/signal-delivered-right-thread.exp: New file. commit d8be293957340f1cbe16d65d78d64aebc01df18f Author: Tom Tromey Date: Fri Jul 25 09:20:03 2014 -0600 properly parenthesize two macros I happened to notice that a couple of macros in target.h weren't properly using parens and as a result had a strange definition. This patch adds the parens and then fixes the macros to be written as must have been intended. Tested by rebuilding. I'm pushing this as obvious. 2014-07-25 Tom Tromey * target.h (target_stopped_data_address) (target_watchpoint_addr_within_range): Use "->", not ".". Fix parentheses. commit 7d0d9d2bee341b1e88c559c476f15fc24b6de346 Author: Pierre Langlois Date: Fri Jul 25 14:45:03 2014 +0100 Clarify the address and pointer conversions on AVR. This patch adds additional comments about the conversion of addresses to pointers and vice-versa on AVR. Special conversion needs to be done when dealing with an address in the flash address space, where both code and read-only data can be stored. Code and data pointers to flash are not addressed the same way: A code pointer is 16 bit addressed. A data pointer is 8 bit addressed, even if the data is in flash. 2014-07-25 Pierre Langlois * avr-tdep.c (avr_address_to_pointer): Clarify the conversion in the comments. (avr_pointer_to_address): Likewise. commit c3f814a14336b9d395f3abad739592929e2faaa0 Author: Pedro Alves Date: Fri Jul 25 10:07:38 2014 +0100 Fix paginate-*.exp races Jan pointed out in that these testcases have racy results: gdb.base/double-prompt-target-event-error.exp gdb.base/paginate-after-ctrl-c-running.exp gdb.base/paginate-bg-execution.exp gdb.base/paginate-execution-startup.exp gdb.base/paginate-inferior-exit.exp This is easily reproducible with "read1" from: [reproducer for races of expect incomplete reads] http://sourceware.org/bugzilla/show_bug.cgi?id=12649 The '-notransfer -re "" { exp_continue }' trick in the current tests doesn't actually work. The issue that led to the -notransfer trick was that "---Type to continue, or q to quit---" has two ""s. If one wants gdb_test_multiple to not hit the built-in "" match that results in FAIL, one has to expect the pagination prompt in chunks, first up to the first "", then again, up to the second. Something around these lines: gdb_test_multiple "" $test { -re "" { exp_continue } -re "to quit ---" { pass $test } } The intent was for -notransfer+exp_continue to make expect fetch more input, and rerun the matches against the now potentially fuller buffer, and then eventually the -re that includes the full pagination prompt regex would match instead (because it's listed higher up, it would match first). But, once that "" -notransfer -re matches, it keeps re-matching forever. It seems like with exp_continue, expect immediately retries matching, instead of first reading in more data into the buffer, if available. Fix this like I should have done in the first place. There's actually no good reason for gdb_test_multiple to only match "". We can make gdb_test_multiple expect the whole pagination prompt text instead, which is store in the 'pagination_prompt' global (similar to 'gdb_prompt'). Then a gdb_test_multiple caller that doesn't want the default match to trigger, because it wants to see one pagination prompt, does simply: gdb_test_multiple "" $test { -re "$pagination_prompt$" { pass $test } } which is just like when we don't want the default $gdb_prompt match within gdb_test_multiple to trigger, like: gdb_test_multiple "" $test { -re "$gdb_prompt $" { pass $test } } Tested on x86_64 Fedora 20. In addition, I've let the racy tests run all in parallel in a loop for 30 minutes, and they never failed. gdb/testsuite/ 2014-07-25 Pedro Alves * gdb.base/double-prompt-target-event-error.exp (cancel_pagination_in_target_event): Remove '-notransfer ' match. (cancel_pagination_in_target_event): Rework double prompt detection. * gdb.base/paginate-after-ctrl-c-running.exp (test_ctrlc_while_target_running_paginates): Remove '-notransfer ' match. * gdb.base/paginate-bg-execution.exp (test_bg_execution_pagination_return) (test_bg_execution_pagination_cancel): Remove '-notransfer ' matches. * gdb.base/paginate-execution-startup.exp (test_fg_execution_pagination_return) (test_fg_execution_pagination_cancel): Remove '-notransfer ' matches. * gdb.base/paginate-inferior-exit.exp (test_paginate_inferior_exited): Remove '-notransfer ' match. * lib/gdb-utils.exp (string_to_regexp): Move here from lib/gdb.exp. * lib/gdb.exp (pagination_prompt): Run text through string_to_regexp. (gdb_test_multiple): Match $pagination_prompt instead of "". (string_to_regexp): Move to lib/gdb-utils.exp. commit a3673aac3c2904957579a23f9d61bd3fd13d4d55 Author: Alan Modra Date: Fri Jul 25 09:30:39 2014 +0930 daily update commit e9e7f7240542809f82286e4043ca05409dc761a9 Author: Tom Tromey Date: Mon Jul 21 20:57:15 2014 -0600 constify target fields This constifies the target_ops fields to_shortname, to_longname, and to_doc. 2014-07-24 Tom Tromey * monitor.c (compile_pattern): Update. * target.h (struct target_ops) : Now const. commit 1947513d924efec8b839718cda515ecfc21dd293 Author: Tom Tromey Date: Mon Jul 21 20:55:16 2014 -0600 constify command docs This makes the command "doc" parameter const. 2014-07-24 Tom Tromey * cli/cli-decode.c (add_cmd, add_prefix_cmd) (add_abbrev_prefix_cmd, add_set_or_show_cmd, add_info) (add_info_alias, add_com): Make "doc" const. (print_doc_line): Make "str" const. (delete_cmd): Update. * cli/cli-decode.h (struct cmd_list_element) : Now const. (print_doc_line): Update. * cli/cli-script.c (document_command): Update. * command.h (add_cmd, add_prefix_cmd, add_abbrev_prefix_cmd) (add_com, add_info, add_info_alias): Update. * guile/scm-cmd.c (cmdscm_destroyer): Update. * python/py-cmd.c (cmdpy_destroyer): Update. commit 64e61d290ec53c27767d0d828f01ab6ae95a7478 Author: Tom Tromey Date: Mon Jul 21 20:43:04 2014 -0600 constify command prefix This constifies the "prefix" argument to the various command-adding functions. 2014-07-24 Tom Tromey * cli/cli-decode.c (print_help_for_command): Make "prefix" const. (add_prefix_cmd, add_abbrev_prefix_cmd, apropos_cmd, help_list) (help_cmd_list): Constify. (lookup_cmd): Update. * cli/cli-decode.h (struct cmd_list_element) : Now const. (help_cmd_list, apropos_cmd): Update. * cli/cli-script.c (show_user): Update. * cli/cli-setshow.c (cmd_show_list): Make "prefix" const. * cli/cli-setshow.h (cmd_show_list): Update. * command.h (add_prefix_cmd, add_abbrev_prefix_cmd, help_list) (cmd_show_list): Update. * guile/scm-cmd.c (cmdscm_destroyer): Update. * python/py-cmd.c (cmdpy_destroyer): Update. commit 429e55ea941f54f8e0481dd2048dc15af751ed71 Author: Tom Tromey Date: Mon Jul 21 20:37:34 2014 -0600 constify deprecate_cmd This constifies deprecate_cmd and the "replacement" field in struct cmd_list_element. 2014-07-24 Tom Tromey * cli/cli-decode.c (deprecate_cmd): Make "replacement" const. * cli/cli-decode.h (struct cmd_list_element) : Now const. * command.h (deprecate_cmd): Update. * maint.c (maintenance_do_deprecate): Add casts. commit 64669f3b4bab4096df75b7279c5b2d0a4784b835 Author: Tom Tromey Date: Mon Jul 21 17:35:10 2014 -0600 constify help_cmd This constifies help_cmd. 2014-07-24 Tom Tromey * cli/cli-decode.c (help_cmd): Make parameter "const". * cli/cli-decode.h (help_cmd): Update. commit d3d3328bca04f0a5d0c9216c53f737d94f5f947b Author: Tom Tromey Date: Mon Jul 21 17:06:20 2014 -0600 constify stack.c This constifies a couple of functions in stack.c. 2014-07-24 Tom Tromey * stack.c (up_silently_base, down_silently_base): Make argument const. commit 414842dc7ae1d398fca1bda9a20a89d51b7c2f09 Author: Tom Tromey Date: Mon Jul 21 17:05:16 2014 -0600 constify solib_add This constifies the "pattern" argument to solib_add. 2014-07-24 Tom Tromey * solib.c (solib_add): Make "pattern" const. * solib.h (solib_add): Update. commit baa336ce7b5d6e56bd52d7493c3f77b0953a7f18 Author: Tom Tromey Date: Mon Jul 21 17:01:55 2014 -0600 constify remote.c This does some more constification in remote.c. 2014-07-24 Tom Tromey * remote.c (remote_serial_open, print_packet, putpkt) (putpkt_binary): Constify. * remote.h (putpkt): Update. commit 5a19e2d0fe40c852ea1ccc46c596764bb35d4d7d Author: Tom Tromey Date: Mon Jul 21 16:56:28 2014 -0600 constify monitor_open This constifies an argument to monitor_open. 2014-07-24 Tom Tromey * monitor.c (monitor_open): Make "args" const. * monitor.h (monitor_open): Update. commit fc4baa5e1f016c27eab4b2593a1ba9db60e11bee Author: Tom Tromey Date: Mon Jul 21 16:54:06 2014 -0600 constify maint.c This does a bit of constification in maint.c, making print_bfd_section_info a bit cleaner in the process. 2014-07-24 Tom Tromey * maint.c (match_bfd_flags): Make "string" const. (print_bfd_section_info): Remove casts. (print_objfile_section_info): Make "string" const. commit 0d5f0dbeb03bab0ce02bf9a4e61d298ad7f1c9bb Author: Tom Tromey Date: Mon Jul 21 16:49:09 2014 -0600 constify inf_child_open_target This constifies an argument to inf_child_open_target. 2014-07-24 Tom Tromey * inf-child.c (inf_child_open_target): Make "arg" const. * inf-child.h (inf_child_open_target): Update. commit 41c77899672db7a30d09d2e68524f0eb3faf937b Author: Tom Tromey Date: Mon Jul 21 16:33:21 2014 -0600 constify unset_in_environ This constifies an argument to unset_in_environ. 2014-07-24 Tom Tromey * environ.c (unset_in_environ): Make "var" const. * environ.h (unset_in_environ): Update. commit 93db0d79de0c2676edffb8e36109ca3f6faa822b Author: Tom Tromey Date: Mon Jul 21 16:20:24 2014 -0600 constify cli-dump.c This does some minor constification in cli-dump.c. 2014-07-24 Tom Tromey * cli/cli-dump.c (scan_expression_with_cleanup): Return const. Make "cmd" const. (scan_filename_with_cleanup): Likewise. (dump_memory_to_file, dump_value_to_file, restore_binary_file): Make arguments const. (restore_command): Update. commit 36d6eb95c1de72b1c5703c5204124abe589d34b1 Author: Pedro Alves Date: Thu Jul 24 15:51:21 2014 +0100 Fix pagination crash when the TUI is active The TUI currently crashes when the user types in response to a pagination prompt: $ gdb --tui ... *the TUI is now active* (gdb) set height 2 (gdb) help List of classes of commands: Program received signal SIGSEGV, Segmentation fault. strlen () at ../sysdeps/x86_64/strlen.S:106 106 movdqu (%rax), %xmm12 (top-gdb) bt #0 strlen () at ../sysdeps/x86_64/strlen.S:106 #1 0x000000000086be5f in xstrdup (s=0x0) at ../src/libiberty/xstrdup.c:33 #2 0x00000000005163f9 in tui_prep_terminal (notused1=1) at ../src/gdb/tui/tui-io.c:296 #3 0x000000000077a7ee in _rl_callback_newline () at ../src/readline/callback.c:82 #4 0x000000000077a853 in rl_callback_handler_install (prompt=0x0, linefunc=0x618b60 ) at ../src/readline/callback.c:102 #5 0x0000000000718a5c in gdb_readline_wrapper_cleanup (arg=0xfd14d0) at ../src/gdb/top.c:788 #6 0x0000000000596d08 in do_my_cleanups (pmy_chain=0xcf0b38 , old_chain=0x1043d10) at ../src/gdb/cleanups.c:155 #7 0x0000000000596d75 in do_cleanups (old_chain=0x1043d10) at ../src/gdb/cleanups.c:177 #8 0x0000000000718bd9 in gdb_readline_wrapper (prompt=0x7fffffffcfa0 "---Type to continue, or q to quit---") at ../src/gdb/top.c:835 #9 0x000000000071cf74 in prompt_for_continue () at ../src/gdb/utils.c:1894 #10 0x000000000071d434 in fputs_maybe_filtered (linebuffer=0x1043db0 "List of classes of commands:\n\n", stream=0xf72e20, filter=1) at ../src/gdb/utils.c:2111 #11 0x000000000071da0f in vfprintf_maybe_filtered (stream=0xf72e20, format=0x89aef8 "List of classes of %scommands:\n\n", args=0x7fffffffd118, filter=1) at ../src/gdb/utils.c:2339 #12 0x000000000071da4a in vfprintf_filtered (stream=0xf72e20, format=0x89aef8 "List of classes of %scommands:\n\n", args=0x7fffffffd118) at ../src/gdb/utils.c:2347 #13 0x000000000071dc72 in fprintf_filtered (stream=0xf72e20, format=0x89aef8 "List of classes of %scommands:\n\n") at ../src/gdb/utils.c:2399 #14 0x00000000004f90ab in help_list (list=0xe6d100, cmdtype=0x89ad8c "", class=all_classes, stream=0xf72e20) at ../src/gdb/cli/cli-decode.c:1038 #15 0x00000000004f8dba in help_cmd (arg=0x0, stream=0xf72e20) at ../src/gdb/cli/cli-decode.c:946 Git 0017922 added: @@ -776,6 +777,12 @@ gdb_readline_wrapper_cleanup (void *arg) gdb_assert (input_handler == gdb_readline_wrapper_line); input_handler = cleanup->handler_orig; + + /* Reinstall INPUT_HANDLER in readline, without displaying a + prompt. */ + if (async_command_editing_p) + rl_callback_handler_install (NULL, input_handler); and tui_prep_terminal simply misses handling the case of a NULL rl_prompt. I also checked that readline's sources do similar checks. gdb/ 2014-07-24 Pedro Alves * tui/tui-io.c (tui_prep_terminal): Handle NULL rl_prompt. commit 8009206ae2dec541b55edc488103c6c1ccb1416a Author: Tom Tromey Date: Fri Jan 3 10:55:52 2014 -0700 Remove some GDBSERVER checks from linux-ptrace This patch removes some GDBSERVER checks from nat/linux-ptrace.c. Currently the code uses a compile-time check to decide whether some flags should be used. This changes the code to instead let users of the module specify an additional set of flags; and then changes gdb's linux-nat.c to call this function. At some later date, when the back ends are fully merged, we will be able to remove this function again. gdb/ 2014-07-24 Tom Tromey Gary Benson * nat/linux-ptrace.c (additional_flags): New global. (linux_test_for_tracesysgood, linux_test_for_tracefork): Use additional_flags; don't check GDBSERVER. (linux_ptrace_set_additional_flags): New function. * nat/linux-ptrace.h (linux_ptrace_set_additional_flags): Declare. * linux-nat.c (_initialize_linux_nat): Call linux_ptrace_set_additional_flags. commit 314c6a3559393741f22fdd9836f83d9f364fbd2a Author: Tom Tromey Date: Fri Jun 13 09:22:09 2014 -0600 Make gdbserver CORE_ADDR unsigned gdbserver defines CORE_ADDR to be signed. This seems erroneous to me; and furthermore likely to cause problems in common/, as it is different from gdb's definition. gdb/gdbserver/ 2014-07-24 Tom Tromey Gary Benson * server.h (CORE_ADDR): Now unsigned. commit a7068b601288f8f5df45ca1113069b44dc759b11 Author: Tom Tromey Date: Sun Jun 15 21:28:57 2014 -0600 auto-generate most target debug methods The target debug methods are inconsistently maintained. Most to_* methods have some kind of targetdebug awareness, but not all of them do. The ones that do vary in the quantity and quality of output they generate. This patch changes most of the target debug methods to be automatically generated. All the arguments are printed, and separate lines are printed for entering and existing the outermost call to the target stack. For example now you'd see: -> multi-thread->to_terminal_ours (...) -> multi-thread->to_is_async_p (...) <- multi-thread->to_is_async_p (0x1ebb580) = 1 <- multi-thread->to_terminal_ours (0x1ebb580) -> multi-thread->to_thread_address_space (...) <- multi-thread->to_thread_address_space (0x1ebb580, 26802) = 1 In this case you can see nested calls. The "multi-thread" on the left hand side is the topmost target's shortname. There are some oddities with this patch. I'm on the fence about it all, I really just wrote it on a whim. It's not simple to convert every possible method, since a few don't participate in target delegation. Printing is done by type, so I introduced some new debug-printing-specific typedefs to handle cases where it is nicer to do something else. On the plus side, this lays the groundwork for making targetdebug affect every layer of the target stack. The idea would be to wrap each target_ops in the stack with its own debug_target, and then you could see calls propagate down the stack and back up; I suppose with indentation to make it prettier. (That said there are some gotchas lurking in this idea due to target stack introspection.) Regtested on x86-64 Fedora 20. 2014-07-24 Tom Tromey * make-target-delegates (munge_type, write_debugmethod): New functions. (debug_names): New global. ($TARGET_DEBUG_PRINTER): New global. (write_function_header): Strip TARGET_DEBUG_PRINTER from the type name. Write debug methods. Generate init_debug_target. * target-debug.h: New file. * target-delegates.c: Rebuild. * target.c: Include target-debug.h. (debug_target): Hoist definition. (target_kill, target_get_section_table, target_memory_map) (target_flash_erase, target_flash_done, target_detach) (target_disconnect, target_wait, target_resume) (target_pass_signals, target_program_signals, target_follow_fork) (target_mourn_inferior, target_search_memory) (target_thread_address_space, target_close) (target_find_new_threads, target_core_of_thread) (target_verify_memory, target_insert_mask_watchpoint) (target_remove_mask_watchpoint): Remove targetdebug code. (debug_to_post_attach, debug_to_prepare_to_store) (debug_to_files_info, debug_to_insert_breakpoint) (debug_to_remove_breakpoint, debug_to_can_use_hw_breakpoint) (debug_to_region_ok_for_hw_watchpoint) (debug_to_can_accel_watchpoint_condition) (debug_to_stopped_by_watchpoint, debug_to_stopped_data_address) (debug_to_watchpoint_addr_within_range) (debug_to_insert_hw_breakpoint, debug_to_remove_hw_breakpoint) (debug_to_insert_watchpoint, debug_to_remove_watchpoint) (debug_to_terminal_init, debug_to_terminal_inferior) (debug_to_terminal_ours_for_output, debug_to_terminal_ours) (debug_to_terminal_save_ours, debug_to_terminal_info) (debug_to_load, debug_to_post_startup_inferior) (debug_to_insert_fork_catchpoint) (debug_to_remove_fork_catchpoint) (debug_to_insert_vfork_catchpoint) (debug_to_remove_vfork_catchpoint) (debug_to_insert_exec_catchpoint) (debug_to_remove_exec_catchpoint, debug_to_has_exited) (debug_to_can_run, debug_to_thread_architecture, debug_to_stop) (debug_to_rcmd, debug_to_pid_to_exec_file): Remove. (setup_target_debug): Call init_debug_target. * target.h (TARGET_DEBUG_PRINTER): New macro. (struct target_ops) : Use TARGET_DEBUG_PRINTER. commit 2c51604d3adbcc77a25d78ce900f5be4597c2504 Author: Gary Benson Date: Wed Jul 23 14:51:26 2014 +0100 Rationalize "fatal" error handling outside of gdbserver GDB and gdbserver have functions named "fatal" that are used in completely different ways. In gdbserver "fatal" is used to handle critical errors: it differs from "error" in that "fatal" causes gdbserver to exit whereas "error" does not. In GDB "fatal" is used to abort the current operation and return to the command level. This is implemented by throwing a non-error "RETURN_QUIT" exception. This commit removes GDB's "fatal" and "vfatal" functions entirely. The exception-throwing function "throw_vfatal" is renamed as "throw_vquit", and a new convenience function "throw_quit" is added. The small number of calls to "fatal" are replaced with calls to "throw_quit", making what is happening more obvious. This commit also modifies GDB's "throw_error" to call "throw_verror" rather than calling "throw_it" directly. This change means the assignment of RETURN_ERROR as the exception type now happens in precisely one place in GDB rather than two. gdb/ 2014-07-24 Gary Benson * exceptions.h (throw_vfatal): Renamed to... (throw_vquit): New declaration. (throw_quit): Likewise. * exceptions.c (throw_vfatal): Renamed to... (throw_vquit): New function. (throw_quit): Likewise. (throw_error): Call throw_verror rather than throw_it. * utils.h (vfatal): Removed. (fatal): Likewise. * utils.c (vfatal): Removed. (fatal): Likewise. (internal_verror): Replaced call to fatal with call to throw_quit. (quit): Replaced calls to fatal with calls to throw_quit. commit 342119630e4612856017d03f2892f5a693d85d8e Author: Michael Eager Date: Wed Jul 23 19:27:20 2014 -0700 This patch uses target_read_code instead of target_read_memory in microblaze_fetch instruction in order to use cache memory accesses requested in target_read_code. ChangeLog: 2014-06-17 Ajit Agarwal * microblaze-tdep.c (microblaze_fetch_instruction): Use of target_read_code. commit a52b4d3e268c10b84a48572db632d5011018e3ef Author: Michael Eager Date: Wed Jul 23 19:21:42 2014 -0700 se typecast 'size_t' on 'reg', not only avoid the related warning, but also check whether less than zero -- for 'reg' is type 'int', and sizeof (dwarf2_to_reg_map) is less than 0x7fff. It is quoted in gdb_assert(), so need check 'reg' whether less than zero. And the related warning (with '-W'): ../../binutils-gdb/gdb/microblaze-tdep.c:667:3: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] ChangeLog: * microblaze-tdep.c (microblaze_dwarf2_reg_to_regnum): Check whether less tha zero in conditional expression. commit 11961ad8055910ed653d1d4ed0a20efeeb9ae717 Author: Alan Modra Date: Thu Jul 24 09:30:40 2014 +0930 daily update commit a8bdc56b4e36451f197f9522e2bbfcc39c5d90dd Author: Tom Tromey Date: Tue Jul 15 12:08:54 2014 -0600 rewrite make-target-delegates matching code This patch rewrites the make-target-delegates matching code a little bit. The result is functionally the same (the output has some small whitespace differences), but the new code is more forgiving regarding the formatting of target.h. In particular now there's no need to ensure that the return type and the method name appear on the same line. 2014-07-23 Tom Tromey * make-target-delegates ($ARGS_PART): Match trailing close paren. ($INTRO_PART): Don't match whitespace. ($METHOD_TRAILER): Move earlier. Remove trailing semicolon and argument matching. ($METHOD): Add $METHOD_TRAILER. (trim): Rewrite. (scan_target_h): New sub. Change main loop not to collect state. * target-delegates.c: Rebuild. commit 91b522404e7eee8b4101bccabc29821792e6a627 Author: Gary Benson Date: Wed Jul 23 15:25:05 2014 +0100 Fix build on systems without sigaltstack. This commit fixes the build on systems without sigaltstack. gdb/ 2014-07-23 Gary Benson * cp-support.c (gdb_demangle): Fix build on systems without sigaltstack. commit e294541cdab0373f6097862de1068cc985e7e242 Author: Alan Modra Date: Wed Jul 23 09:30:42 2014 +0930 daily update commit 45326f6fbe28ef5bac22dac447a4181c44cb945a Author: Jan Kratochvil Date: Tue Jul 22 22:15:27 2014 +0200 Remove setting value address for reference entry value target data value. I cannot reproduce any wrong case having the code removed. I just do not find it correct to have it disabled. But at the same time I do like much / I do not find correct the code myself. It is a bit problematic to have struct value describing a memory content which is no longer present there. What happens there: ------------------------------------------------------------------------------ volatile int vv; static __attribute__((noinline)) int bar (int &ref) { ref = 20; vv++; /* break-here */ return ref; } int main (void) { int var = 10; return bar (var); } ------------------------------------------------------------------------------ <4>: Abbrev Number: 13 (DW_TAG_GNU_call_site_parameter) DW_AT_location : 1 byte block: 55 (DW_OP_reg5 (rdi)) DW_AT_GNU_call_site_value: 2 byte block: 91 74 (DW_OP_fbreg: -12) DW_AT_GNU_call_site_data_value: 1 byte block: 3a (DW_OP_lit10) ------------------------------------------------------------------------------ gdb -ex 'b value_addr' -ex r --args ../gdb ./1 -ex 'watch vv' -ex r -ex 'p &ref@entry' -> 6 return ref; bar (ref=@0x7fffffffd944: 20, ref@entry=@0x7fffffffd944: 10) at 1.C:25 ------------------------------------------------------------------------------ At /* break-here */ struct value variable 'ref' is TYPE_CODE_REF. With FSF GDB HEAD: (gdb) x/gx arg1.contents 0x6004000a4ad0: 0x00007fffffffd944 (gdb) p ((struct value *)arg1.location.computed.closure).lval $1 = lval_memory (gdb) p/x ((struct value *)arg1.location.computed.closure).location.address $3 = 0x7fffffffd944 With your #if0-ed code: (gdb) x/gx arg1.contents 0x6004000a4ad0: 0x00007fffffffd944 (gdb) p ((struct value *)arg1.location.computed.closure).lval $8 = not_lval (gdb) p/x ((struct value *)arg1.location.computed.closure).location.address $9 = 0x0 I do not see how to access ((struct value *)arg1.location.computed.closure).location.address from GDB CLI. Trying (gdb) p &ref@entry will invoke value_addr()'s: if (TYPE_CODE (type) == TYPE_CODE_REF) /* Copy the value, but change the type from (T&) to (T*). We keep the same location information, which is efficient, and allows &(&X) to get the location containing the reference. */ and therefore the address gets fetched already from arg1.contents and not from ((struct value *)arg1.location.computed.closure).location.address . And for any other type than TYPE_CODE_REF this code you removed does not get executed at all. This DW_AT_GNU_call_site_data_value DWARF was meant primarily for Fortran but with -O0 entry values do not get produced and with -Og and higher Fortran always optimizes out the passing by reference. If you do not like the removed code there I am OK with removing it as I do not know how to make it's use reproducible for user anyway. In the worst case - if there really is some way how to exploit it - one should just get Attempt to take address of value not located in memory. instead of some wrong value and it may be easy to fix then. gdb/ 2014-07-22 Jan Kratochvil * dwarf2loc.c (value_of_dwarf_reg_entry): Remove setting value address for reference entry value target data value. Message-ID: <20140720150727.GA18488@host2.jankratochvil.net> commit e214cf6c2e05bcfc85dc6f335d8ffdc3629cf0cf Author: Jan Kratochvil Date: Tue Jul 22 22:09:35 2014 +0200 Fix read_frame_arg for optimized-out entry values. gdb/ 2014-07-22 Jan Kratochvil * stack.c (read_frame_arg): Verify value_optimized_out before calling value_available_contents_eq. gdb/testsuite/ 2014-07-22 Jan Kratochvil * gdb.arch/amd64-entry-value-paramref.S: New file. * gdb.arch/amd64-entry-value-paramref.cc: New file. * gdb.arch/amd64-entry-value-paramref.exp: New file. * gdb.arch/amd64-optimout-repeat.S: New file. * gdb.arch/amd64-optimout-repeat.c: New file. * gdb.arch/amd64-optimout-repeat.exp: New file. Message-ID: <20140720150727.GA18488@host2.jankratochvil.net> Message-ID: <20140711153757.GA452@host2.jankratochvil.net> commit bddbbedd70665b48d358e457ef122c4df075b76b Author: Pedro Alves Date: Tue Jul 22 19:56:28 2014 +0100 Fix crash on optimized-out entry data values The tests at show that comparing a fully optimized out value's contents with a value that has not been optimized out, or is partially optimized out crashes GDB: (gdb) bt #0 __memcmp_sse4_1 () at ../sysdeps/x86_64/multiarch/memcmp-sse4.S:816 #1 0x00000000005a1914 in memcmp_with_bit_offsets (ptr1=0x202b2f0 "\n", offset1_bits=0, ptr2=0x0, offset2_bits=0, length_bits=32) at /home/pedro/gdb/mygit/build/../src/gdb/value.c:678 #2 0x00000000005a1a05 in value_available_contents_bits_eq (val1=0x2361ad0, offset1=0, val2=0x23683b0, offset2=0, length=32) at /home/pedro/gdb/mygit/build/../src/gdb/value.c:717 #3 0x00000000005a1c09 in value_available_contents_eq (val1=0x2361ad0, offset1=0, val2=0x23683b0, offset2=0, length=4) at /home/pedro/gdb/mygit/build/../src/gdb/value.c:769 #4 0x00000000006033ed in read_frame_arg (sym=0x1b78d20, frame=0x19bca50, argp=0x7fff4aba82b0, entryargp=0x7fff4aba82d0) at /home/pedro/gdb/mygit/build/../src/gdb/stack.c:416 #5 0x0000000000603abb in print_frame_args (func=0x1b78cb0, frame=0x19bca50, num=-1, stream=0x1aea450) at /home/pedro/gdb/mygit/build/../src/gdb/stack.c:671 #6 0x0000000000604ae8 in print_frame (frame=0x19bca50, print_level=0, print_what=SRC_AND_LOC, print_args=1, sal=...) at /home/pedro/gdb/mygit/build/../src/gdb/stack.c:1205 #7 0x0000000000604050 in print_frame_info (frame=0x19bca50, print_level=0, print_what=SRC_AND_LOC, print_args=1, set_current_sal=1) at /home/pedro/gdb/mygit/build/../src/gdb/stack.c:857 #8 0x00000000006029b3 in print_stack_frame (frame=0x19bca50, print_level=0, print_what=SRC_AND_LOC, set_current_sal=1) at /home/pedro/gdb/mygit/build/../src/gdb/stack.c:169 #9 0x00000000005fc4b8 in print_stop_event (ws=0x7fff4aba8790) at /home/pedro/gdb/mygit/build/../src/gdb/infrun.c:6068 #10 0x00000000005fc830 in normal_stop () at /home/pedro/gdb/mygit/build/../src/gdb/infrun.c:6214 The 'ptr2=0x0' in frame #1 is val2->contents, and since git 4f14910f: gdb/ChangeLog 2013-11-26 Andrew Burgess * value.c (allocate_optimized_out_value): Mark value as non-lazy. ... a fully optimized-out value can have it's value contents buffer NULL. As a spotgap fix, revert 4f14910f, with a comment. A full fix would be too invasive for 7.8. gdb/ 2014-07-22 Pedro Alves * value.c (allocate_optimized_out_value): Don't mark value as non-lazy. commit 90a915bf0c95859e90e79c8264825ad6423eea6f Author: Ilya Tocar Date: Tue Jul 15 13:33:39 2014 +0400 Add AVX512DQ instructions and their AVX512VL variants. gas/ * config/tc-i386.c (cpu_arch): Add .avx512dq, CPU_AVX512DQ_FLAGS. * doc/c-i386.texi: Document avx512dq/.avx512dq. gas/testsuite/ * gas/i386/avx512dq-intel.d: New. * gas/i386/avx512dq.d: New. * gas/i386/avx512dq.s: New. * gas/i386/avx512dq_vl-intel.d: New. * gas/i386/avx512dq_vl.d: New. * gas/i386/avx512dq_vl.s: New. * gas/i386/i386.exp: Run new AVX-512 tests. * gas/i386/x86-64-avx512dq-intel.d: New. * gas/i386/x86-64-avx512dq.d: New. * gas/i386/x86-64-avx512dq.s: New. * gas/i386/x86-64-avx512dq_vl-intel.d: New. * gas/i386/x86-64-avx512dq_vl.d: New. * gas/i386/x86-64-avx512dq_vl.s: New. opcodes/ * i386-dis-evex.h: Updated. * i386-dis.c (PREFIX enum): Add PREFIX_EVEX_0F54, PREFIX_EVEX_0F55, PREFIX_EVEX_0F56, PREFIX_EVEX_0F57, PREFIX_EVEX_0F3A16, PREFIX_EVEX_0F3A22, PREFIX_EVEX_0F3A50, PREFIX_EVEX_0F3A51, PREFIX_EVEX_0F3A56, PREFIX_EVEX_0F3A57, PREFIX_EVEX_0F3A66, PREFIX_EVEX_0F3A67. (VEX_LEN enum): Add VEX_LEN_0F92_P_2, VEX_LEN_0F93_P_2, VEX_W_0F92_P_2_LEN_0, VEX_W_0F93_P_2_LEN_0. (VEX_W enum): Add EVEX_W_0F54_P_0, EVEX_W_0F54_P_2, EVEX_W_0F55_P_0, EVEX_W_0F55_P_2, EVEX_W_0F56_P_0, EVEX_W_0F56_P_2, EVEX_W_0F57_P_0, EVEX_W_0F57_P_2, EVEX_W_0F78_P_2, EVEX_W_0F79_P_2, EVEX_W_0F7A_P_2, EVEX_W_0F7B_P_2, EVEX_W_0F3838_P_1, EVEX_W_0F3839_P_1, EVEX_W_0F3A16_P_2, EVEX_W_0F3A22_P_2, EVEX_W_0F3A50_P_2, EVEX_W_0F3A51_P_2, EVEX_W_0F3A56_P_2, EVEX_W_0F3A57_P_2, EVEX_W_0F3A66_P_2, EVEX_W_0F3A67_P_2. (prefix_table): Add entries for new instructions. (vex_len_table): Ditto. (vex_w_table): Ditto. (OP_E_memory): Update xmmq_mode handling. * i386-gen.c (cpu_flag_init): Add CPU_AVX512DQ_FLAGS. (cpu_flags): Add CpuAVX512DQ. * i386-init.h: Regenerared. * i386-opc.h (CpuAVX512DQ): New. (i386_cpu_flags): Add cpuavx512dq. * i386-opc.tbl: Add AVX512DQ instructions. * i386-tbl.h: Regenerate. commit 1ba585e8f4ec2ed043539e57640945ff6ff3359b Author: Ilya Tocar Date: Fri Jul 11 16:32:29 2014 +0400 Add support for AVX512BW instructions and their AVX512VL versions. gas/ * config/tc-i386.c (cpu_arch): Add .avx512bw, CPU_AVX512BW_FLAGS. * doc/c-i386.texi: Document avx512bw/.avx512bw. gas/testsuite/ * gas/i386/avx512bw-intel.d: New. * gas/i386/avx512bw-opts-intel.d: New. * gas/i386/avx512bw-opts.d: New. * gas/i386/avx512bw-opts.s: New. * gas/i386/avx512bw-wig.s: New. * gas/i386/avx512bw-wig1-intel.d: New. * gas/i386/avx512bw-wig1.d: New. * gas/i386/avx512bw.d: New. * gas/i386/avx512bw.s: New. * gas/i386/avx512bw_vl-intel.d: New. * gas/i386/avx512bw_vl-opts-intel.d: New. * gas/i386/avx512bw_vl-opts.d: New. * gas/i386/avx512bw_vl-opts.s: New. * gas/i386/avx512bw_vl-wig.s: New. * gas/i386/avx512bw_vl-wig1-intel.d: New. * gas/i386/avx512bw_vl-wig1.d: New. * gas/i386/avx512bw_vl.d: New. * gas/i386/avx512bw_vl.s: New. * gas/i386/i386.exp: Run new AVX-512 tests. * gas/i386/x86-64-avx512bw-intel.d: New. * gas/i386/x86-64-avx512bw-opts-intel.d: New. * gas/i386/x86-64-avx512bw-opts.d: New. * gas/i386/x86-64-avx512bw-opts.s: New. * gas/i386/x86-64-avx512bw-wig.s: New. * gas/i386/x86-64-avx512bw-wig1-intel.d: New. * gas/i386/x86-64-avx512bw-wig1.d: New. * gas/i386/x86-64-avx512bw.d: New. * gas/i386/x86-64-avx512bw.s: New. * gas/i386/x86-64-avx512bw_vl-intel.d: New. * gas/i386/x86-64-avx512bw_vl-opts-intel.d: New. * gas/i386/x86-64-avx512bw_vl-opts.d: New. * gas/i386/x86-64-avx512bw_vl-opts.s: New. * gas/i386/x86-64-avx512bw_vl-wig.s: New. * gas/i386/x86-64-avx512bw_vl-wig1-intel.d: New. * gas/i386/x86-64-avx512bw_vl-wig1.d: New. * gas/i386/x86-64-avx512bw_vl.d: New. * gas/i386/x86-64-avx512bw_vl.s: New. opcodes/ * i386-dis-evex.h: Add new instructions (prefixes bellow). * i386-dis.c (fetch_data): Add EdqwS, Edb, Edw, MaskBDE. (enum): Add dqw_swap_mode, db_mode, dw_mode, mask_bd_mode, REG_EVEX_0F71. (PREFIX enum): Add PREFIX_VEX_0F4A, PREFIX_VEX_0F99, PREFIX_VEX_0F3A31, PREFIX_VEX_0F3A33, PREFIX_EVEX_0F60, PREFIX_EVEX_0F61, PREFIX_EVEX_0F63, PREFIX_EVEX_0F64, PREFIX_EVEX_0F65, PREFIX_EVEX_0F67, PREFIX_EVEX_0F68, PREFIX_EVEX_0F69, PREFIX_EVEX_0F6B, PREFIX_EVEX_0F71_REG_2, PREFIX_EVEX_0F71_REG_4, PREFIX_EVEX_0F71_REG_6, PREFIX_EVEX_0F73_REG_3, PREFIX_EVEX_0F73_REG_7, PREFIX_EVEX_0F74, PREFIX_EVEX_0F75, PREFIX_EVEX_0FC4, PREFIX_EVEX_0FC5, PREFIX_EVEX_0FD1, PREFIX_EVEX_0FD5, PREFIX_EVEX_0FD8, PREFIX_EVEX_0FD9, PREFIX_EVEX_0FDA, PREFIX_EVEX_0FDC, PREFIX_EVEX_0FDD, PREFIX_EVEX_0FDE, PREFIX_EVEX_0FE0, PREFIX_EVEX_0FE1, PREFIX_EVEX_0FE3, PREFIX_EVEX_0FE4, PREFIX_EVEX_0FE5, PREFIX_EVEX_0FE8, PREFIX_EVEX_0FE9, PREFIX_EVEX_0FEA, PREFIX_EVEX_0FEC, PREFIX_EVEX_0FED, PREFIX_EVEX_0FEE, PREFIX_EVEX_0FF1, PREFIX_EVEX_0FF5, PREFIX_EVEX_0FF6, PREFIX_EVEX_0FF8, PREFIX_EVEX_0FF9, PREFIX_EVEX_0FFC, PREFIX_EVEX_0FFD, PREFIX_EVEX_0F3800, PREFIX_EVEX_0F3804, PREFIX_EVEX_0F380B, PREFIX_EVEX_0F3810, PREFIX_EVEX_0F381C, PREFIX_EVEX_0F381D, PREFIX_EVEX_0F3820, PREFIX_EVEX_0F3826, PREFIX_EVEX_0F382B, PREFIX_EVEX_0F3830, PREFIX_EVEX_0F3838, PREFIX_EVEX_0F383C, PREFIX_EVEX_0F383E, PREFIX_EVEX_0F3866, PREFIX_EVEX_0F3875, PREFIX_EVEX_0F3878, PREFIX_EVEX_0F3879, PREFIX_EVEX_0F387A, PREFIX_EVEX_0F387B, PREFIX_EVEX_0F387D, PREFIX_EVEX_0F388D, PREFIX_EVEX_0F3A0F, PREFIX_EVEX_0F3A14, PREFIX_EVEX_0F3A15, PREFIX_EVEX_0F3A20, PREFIX_EVEX_0F3A3E, PREFIX_EVEX_0F3A3F, PREFIX_EVEX_0F3A42. (VEX_LEN enum): Add VEX_LEN_0F41_P_2, VEX_LEN_0F42_P_2, VEX_LEN_0F44_P_2, VEX_LEN_0F45_P_2, VEX_LEN_0F46_P_2, VEX_LEN_0F47_P_2, VEX_LEN_0F4A_P_0, VEX_LEN_0F4A_P_2, VEX_LEN_0F4B_P_0, VEX_LEN_0F90_P_2, VEX_LEN_0F91_P_2, VEX_LEN_0F92_P_3, VEX_LEN_0F93_P_3, VEX_LEN_0F98_P_2, VEX_LEN_0F99_P_0, VEX_LEN_0F99_P_2, VEX_LEN_0F3A31_P_2, VEX_LEN_0F3A33_P_2, VEX_W_0F41_P_2_LEN_1, VEX_W_0F42_P_2_LEN_1, VEX_W_0F44_P_2_LEN_0, VEX_W_0F45_P_2_LEN_1, VEX_W_0F46_P_2_LEN_1, VEX_W_0F47_P_2_LEN_1, VEX_W_0F4A_P_0_LEN_1, VEX_W_0F4A_P_2_LEN_1, VEX_W_0F4B_P_0_LEN_1, VEX_W_0F90_P_2_LEN_0, VEX_W_0F91_P_2_LEN_0, VEX_W_0F92_P_3_LEN_0, VEX_W_0F93_P_3_LEN_0, VEX_W_0F98_P_2_LEN_0, VEX_W_0F99_P_0_LEN_0, VEX_W_0F99_P_2_LEN_0, VEX_W_0F3A31_P_2_LEN_0, VEX_W_0F3A33_P_2_LEN_0. (VEX_W enum): Add EVEX_W_0F6B_P_2, EVEX_W_0F6F_P_3, EVEX_W_0F7F_P_3, EVEX_W_0F3810_P_1, EVEX_W_0F3810_P_2, EVEX_W_0F3811_P_2, EVEX_W_0F3812_P_2, EVEX_W_0F3820_P_1, EVEX_W_0F3826_P_1, EVEX_W_0F3826_P_2, EVEX_W_0F3828_P_1, EVEX_W_0F3829_P_1, EVEX_W_0F382B_P_2, EVEX_W_0F3830_P_1, EVEX_W_0F3866_P_2, EVEX_W_0F3875_P_2, EVEX_W_0F3878_P_2, EVEX_W_0F3879_P_2, EVEX_W_0F387A_P_2, EVEX_W_0F387B_P_2, EVEX_W_0F387D_P_2, EVEX_W_0F388D_P_2, EVEX_W_0F3A3E_P_2, EVEX_W_0F3A3F_P_2, EVEX_W_0F3A42_P_2. (prefix_table): Add entries for new instructions. (vex_table) : Ditto. (vex_len_table): Ditto. (vex_w_table): Ditto. (intel_operand_size): Add db_mode, dw_mode, dqw_swap_mode, mask_bd_mode handling. (OP_E_register): Add dqw_swap_mode, dw_mode, db_mode, mask_bd_mode handling. (OP_E_memory): Add dqw_mode, dw_mode, dqw_swap_mode, dqb_mode, db_mode handling. (OP_G): Add db_mode, dw_mode, dqw_swap_mode, mask_bd_mode handling. (OP_EX): Add dqw_swap_mode handling. (OP_VEX): Add mask_bd_mode handling. (OP_Mask): Add mask_bd_mode handling. * i386-gen.c (cpu_flag_init): Add CPU_AVX512BW_FLAGS. (cpu_flags): Add CpuAVX512BW. * i386-init.h: Regenerated. * i386-opc.h (CpuAVX512BW): New. (i386_cpu_flags): Add cpuavx512bw. * i386-opc.tbl: Add AVX512BW instructions. * i386-tbl.h: Regenerate. commit 99282af656bee8092850664de135c4a1a9017032 Author: Ilya Tocar Date: Thu Jul 10 14:21:48 2014 +0400 Add support for AVX512VL versions of AVX512CD instructions. gas/testsuite/ * gas/i386/avx512cd_vl-intel.d: New. * gas/i386/avx512cd_vl.d: New. * gas/i386/avx512cd_vl.s: New. * gas/i386/i386.exp: Run new AVX-512 tests. * gas/i386/x86-64-avx512cd_vl-intel.d: New. * gas/i386/x86-64-avx512cd_vl.d: New. * gas/i386/x86-64-avx512cd_vl.s: New. opcodes/ * i386-opc.tbl: Add AVX512VL and AVX512CD instructions. * i386-tbl.h: Regenerate. commit b28d1bda54728d10ae189a323c343b6d76f94b8e Author: Ilya Tocar Date: Fri Jul 18 14:59:54 2014 +0400 Add support for AVX512VL. Add AVX512VL versions of AVX512F instructions. gas/ * config/tc-i386.c (cpu_arch): Add .avx512vl, CPU_AVX512VL_FLAGS. (build_vex_prefix): Don't abort on VEX.W. (check_VecOperands): Support BROADCAST_1TO4 and BROADCAST_1TO2. (check_VecOperations): Ditto. * doc/c-i386.texi: Document avx512vl/.avx512vl. gas/testsuite/ * gas/i386/avx512f_vl-intel.d: New. * gas/i386/avx512f_vl-opts-intel.d: New. * gas/i386/avx512f_vl-opts.d: New. * gas/i386/avx512f_vl-opts.s: New. * gas/i386/avx512f_vl-wig.s: New. * gas/i386/avx512f_vl-wig1-intel.d: New. * gas/i386/avx512f_vl-wig1.d: New. * gas/i386/avx512f_vl.d: New. * gas/i386/avx512f_vl.s: New. * gas/i386/i386.exp: Run new AVX-512 tests. * gas/i386/x86-64-avx512f_vl-intel.d: New. * gas/i386/x86-64-avx512f_vl-opts-intel.d: New. * gas/i386/x86-64-avx512f_vl-opts.d: New. * gas/i386/x86-64-avx512f_vl-opts.s: New. * gas/i386/x86-64-avx512f_vl-wig.s: New. * gas/i386/x86-64-avx512f_vl-wig1-intel.d: New. * gas/i386/x86-64-avx512f_vl-wig1.d: New. * gas/i386/x86-64-avx512f_vl.d: New. * gas/i386/x86-64-avx512f_vl.s: New. opcodes/ * i386-dis.c (intel_operand_size): Support 128/256 length in vex_vsib_q_w_dq_mode. (OP_E_memory): Add ymmq_mode handling, handle new broadcast. * i386-gen.c (cpu_flag_init): Add CPU_AVX512VL_FLAGS. (cpu_flags): Add CpuAVX512VL. * i386-init.h: Regenerated. * i386-opc.h (CpuAVX512VL): New. (i386_cpu_flags): Add cpuavx512vl. (BROADCAST_1TO4, BROADCAST_1TO2): Define. * i386-opc.tbl: Add AVX512VL instructions. * i386-tbl.h: Regenerate. commit 50d13ae760ccae7ba30244985397240dfb67a431 Author: Jiong Wang Date: Tue Jul 22 16:22:50 2014 +0100 Fix typo in my email address. commit 45c7148402788483773d2a2240a8bedf501d7cde Author: Jiong Wang Date: Tue Jul 22 16:18:02 2014 +0100 Update email address in gdb MAINTAINERS list. commit 80bfb74d3655a6c9f648401f9ac484bdaa6a5db7 Author: Alan Modra Date: Tue Jul 22 09:30:38 2014 +0930 daily update commit cfbc1a6ceba60d30e46ee82af8ea6803fec4a449 Author: Joel Sherrill Date: Mon Jul 21 17:38:56 2014 -0500 Disable gdb for or1k*-*-* until supported * configure.ac (or1k*-*-*): Disable gdb. * configure: Regenerated. Signed-off-by: Christian Svensson commit 3d52a869b2e09d88fc0ebae762d25428d891dd11 Author: Joel Sherrill Date: Mon Jul 21 17:27:05 2014 -0500 Add or reactivate or1k-*-rtems* * bfd/config.bfd (or1k-*-rtems*): Reactivate. * gas/configure.tgt (or1k-*-rtems*): Add. Signed-off-by: Christian Svensson commit 7c16d96edb2d4f586ae2dcd4b10a8083206fa3bd Author: Sriraman Tallam Date: Mon Jul 21 11:15:38 2014 -0700 Fix ChangeLog entry: 2014-07-21 Sriraman Tallam * object.cc (Relobj::is_section_name_included): Add ".rodata.nptl_version" to not garbage collect this section. commit 5ad9b0a77316bf2f1dd9e257ee683b90ae9f9da9 Author: Sriraman Tallam Date: Mon Jul 21 11:12:05 2014 -0700 2014-07-21 Sriraman Tallam * object.cc (Relobj::is_section_name_included): Add ".rodata.nptl_version". commit 1b396721c945d5129a296205dfe8873ffe975ffe Author: Alan Modra Date: Mon Jul 21 09:31:37 2014 +0930 daily update commit 9597b22adf3552a5617d73104d8facd6a7aea881 Author: Doug Evans Date: Sun Jul 20 15:36:23 2014 -0700 Improve error message to cope with pr 17147. PR server/17147 * remote.c (putpkt_binary): Add text to error message. commit 91101fe524e5ae8a912880bf3350ad93d511181a Author: Yao Qi Date: Thu Apr 17 09:14:34 2014 +0800 Remove Chill from comments gdb: 2014-07-20 Yao Qi * eval.c: Remove "Chill" from comments. * gdbtypes.h: Likewise. * symtab.h: Likewise. commit c9402c95796b6b734bdeecf69a57ca08140f677e Author: Yao Qi Date: Tue Apr 15 11:39:26 2014 +0800 Update comments to TERNOP_SLICE TERNOP_SLICE was added for language Chill, but it is used for Ada and D later. Since language Chill was removed from GDB, TERNOP_SLICE is only used for Ada and D. This patch is to update its comments. gdb: 2014-07-20 Yao Qi * std-operator.def: Update comments to TERNOP_SLICE. commit ae8fddda32d161ea0d8606fdd71349230d5b0ad6 Author: Yao Qi Date: Tue Apr 15 11:28:15 2014 +0800 Remove operator BINOP_RANGE BINOP_RANGE was added by the following commit for chill language. commit badefd2800f5ee2dc6a0eef870771af9dc29bba7 Author: Per Bothner Date: Wed Nov 29 22:59:31 1995 +0000 * expression.h (enum exp_opcode): Add BINOP_RANGE. * expprint.c (dump_expression): Support BINOP_RANGE. * eval.c (evaluate_subexp_standard): Handle BINOP_RANGE (as error). (case MULTI_SUBSCRIPT): Fix broken f77 value->int ad hoc conversion. * ch-lang.c (chill_op_print_tab): Support BINOP_RANGE. (evaluate_subexp_chill): Error on BINOP_COMMA. Chill language is no longer supported, so we can remove BINOP_RANGE too. This patch is to remove BINOP_RANGE. gdb: 2014-07-20 Yao Qi * std-operator.def: Remove BINOP_RANGE. * breakpoint.c (watchpoint_exp_is_const): Update. * expprint.c (dump_subexp_body_standard): Likewise. * eval.c (init_array_element): Remove dead code. (evaluate_subexp_standard): Likewise. commit 9c81664074faf6028036d9b3615ab860396b0c81 Author: Yao Qi Date: Tue Apr 15 11:10:56 2014 +0800 Remove operator BINOP_IN Chill language support was removed several years ago, and BINOP_IN isn't used for Pascal. This patch is to remove BINOP_IN. gdb: 2014-07-20 Yao Qi * std-operator.def: Remove BINOP_IN. * breakpoint.c (watchpoint_exp_is_const): Update. * eval.c (evaluate_subexp_standard): Likewise. * expprint.c (dump_subexp_body_standard): Likewise. commit 018dc9bedf40d528f1d05d56555e20ed54a77dc3 Author: Stefan Kristiansson Date: Sun Jul 20 20:26:09 2014 +0300 or1k: add missing l.msync, l.psync and l.psync instructions. Even though the opcodes were defined for these instructions, the actual instruction definitions were lacking. cpu/ * or1korbis.cpu (l-msync, l-psync, l-csync): New instructions. opcodes/ * or1k-desc.c, * or1k-desc.h, * or1k-opc.c, * or1k-opc.h, * or1k-opinst.c: Regenerate. commit 164224e96ca270d6cbb61d3e326fc1b0453b30a6 Author: Michael Eager Date: Sat Jul 19 17:47:52 2014 -0700 Fix for remote G Packet message too long error for baremetal. Prior to version MicroBlaze v8.10.a,EDK 13.1, XMD's gdbserver stub returned 57 registers in response to GDB's G request. Starting with version MicroBlaze v8.10.a, EDK 13.1, XMD added the slr and shr register, for a count of 59 registers. This patch adds these registers to the expected G response. This patch fixes the above problem for baremetal and also supports the backward compatibility. ChangeLog: 2014-07-02 Ajit Agarwal * microblaze-tdep.c (microblaze_register_names): Add the rshr and rslr register names. (microblaze_gdbarch_init): Use of tdesc_has_registers. Use of tdesc_find_feature. Use of tdesc_data_alloc. Use of tdesc_numbered_register. Use of microblaze_register_g_packet_guesses. Use of tdesc_use_registers. Use of set_gdbarch_register_type. (microblaze_register_g_packet_guesses): New. * microblaze-tdep.h (microblaze_reg_num): Add field MICROBLAZE_SLR_REGNUM MICROBLAZE_SHR_REGNUM MICROBLAZE_NUM_REGS and MICROBLAZE_NUM_CORE_REGS. (microblaze_frame_cache): Use of MICROBLAZE_NUM_REGS. * features/microblaze-core.xml: New file. * features/microblaze-stack-protect.xml: New file. * features/microblaze-with-stack-protect.c: New file. * features/microblaze-with-stack-protect.xml: New file. * features/microblaze.xml: New file. * features/microblaze.c: New file. * features/Makefile (microblaze-with-stack-protect): Add microblaze-with-stack-protect microblaze and microblaze-expedite. * regformats/microblaze-with-stack-protect.dat: New file. * regformats/microblaze.dat: New file. * doc/gdb.texinfo (MicroBlaze Features): New. Signed-off-by:Ajit Agarwal ajitkum@xilinx.com commit 57319490943d7ce425c515356f6758ff81bf6c58 Author: Alan Modra Date: Sun Jul 20 09:30:36 2014 +0930 daily update commit e45c2fe6a7358698d6df244f141713960ae419b4 Author: Alan Modra Date: Sat Jul 19 09:30:38 2014 +0930 daily update commit e8b2341cd2c3663d245651129202f22548766a64 Author: Tom Tromey Date: Fri Jul 18 09:27:17 2014 -0600 make exec_ops static While working on some target stack changes, I noticed that exec_ops is only used from exec.c. This patch makes it "static". This is cleaner and makes it simpler to reason about the use of the target. Tested by rebuilding. I'm checking this in as obvious. 2014-07-18 Tom Tromey * exec.c (exec_ops): Now static. * exec.h (exec_ops): Don't declare. commit 44e89118cb33b71a1eaf6514ea2b686aac1974dd Author: Tom Tromey Date: Fri Jul 11 09:39:12 2014 -0600 fix calls to find_target_beneath A long time ago Pedro pointed out that there are some calls to find_target_beneath that pass in an explicit target_ops; but which should instead use the ops provided to the method in question. See: https://sourceware.org/ml/gdb-patches/2014-01/msg00429.html This patch is just a minor cleanup to fix all such calls. There were only three. 2014-07-18 Tom Tromey * spu-multiarch.c (spu_region_ok_for_hw_watchpoint): Pass "self" to find_target_beneath. * ravenscar-thread.c (ravenscar_prepare_to_store): Pass "ops" to find_target_beneath. (ravenscar_mourn_inferior): Pass "self" to find_target_beneath. commit b0ed115fa5895ccb20d73e26d89a3b8430fe0f0a Author: Tom Tromey Date: Fri Jul 11 08:30:34 2014 -0600 fix PR gdb/17130 This fixes PR gdb/17130. The bug is that some code in utils.c was not updated during the target delegation change: if (job_control /* If there is no terminal switching for this target, then we can't possibly get screwed by the lack of job control. */ || current_target.to_terminal_ours == NULL) fatal ("Quit"); else fatal ("Quit (expect signal SIGINT when the program is resumed)"); After the delegation change, to_terminal_ours will never be NULL. I think this bug can be seen before the target delegation change by enabling target debugging -- this would also cause to_terminal_ours to be non-NULL. The fix is to introduce a new target_supports_terminal_ours function, that properly checks the target stack. This is not perhaps ideal, but I think is a reasonable-enough approach, and in keeping with some other existing code of the same form. This patch also fixes a similar bug in target_supports_delete_record. 2014-07-18 Tom Tromey PR gdb/17130: * utils.c (quit): Use target_supports_terminal_ours. * target.h (target_supports_terminal_ours): Declare. * target.c (target_supports_delete_record): Don't check to_delete_record against NULL. (target_supports_terminal_ours): New function. commit e75fdfcad1c868eae5396a95be9dd18010406306 Author: Tom Tromey Date: Fri Jul 11 08:02:03 2014 -0600 clean up some target delegation cases This patch cleans up some minor inconsistencies in target delegation. It's primary purpose is to avoid confusion in the code. A few spots were checking the "beneath" target; however this can only be NULL for the dummy target, so such tests are not needed. Some other spots were iterating over the beneath targets, looking for a method implementation. This is not needed for methods handled by make-target-delegates, as there is always an implementation. 2014-07-18 Tom Tromey PR gdb/17130: * spu-multiarch.c (spu_region_ok_for_hw_watchpoint) (spu_fetch_registers, spu_store_registers, spu_xfer_partial) (spu_search_memory, spu_mourn_inferior): Simplify delegation. * linux-thread-db.c (thread_db_pid_to_str): Always delegate. * windows-nat.c (windows_xfer_partial): Always delegate. * record-btrace.c (record_btrace_xfer_partial): Simplify delegation. (record_btrace_fetch_registers, record_btrace_store_registers) (record_btrace_prepare_to_store, record_btrace_resume) (record_btrace_wait, record_btrace_find_new_threads) (record_btrace_thread_alive): Likewise. * procfs.c (procfs_xfer_partial): Always delegate. * corelow.c (core_xfer_partial): Always delegate. * sol-thread.c (sol_find_new_threads): Simplify delegation. commit 83814951ff9b8f73dcf7c860ad7b4f34a31f2be6 Author: Tom Tromey Date: Fri Jul 18 09:35:04 2014 -0600 move exec_make_note_section earlier This patch moves exec_make_note_section a bit earlier in exec.c. This lets us remove an otherwise unnecessary forward declaration and it also makes the file a bit more in line with other code, as now _initialize_exec is the final function in the file. Tested by rebuilding. I'm committing this as obvious. 2014-07-18 Tom Tromey * exec.c (exec_make_note_section): Move earlier. commit fe1873d01904620c71a309249c0ae029e53ae0b6 Author: Alan Modra Date: Fri Jul 18 09:30:39 2014 +0930 daily update commit d3bb6b49b6f13617b953bfa0ef25a992b41128ef Author: Ilya Tocar Date: Thu Jul 17 13:59:32 2014 +0400 Properly handle EVEX register aliases gas/ * config/tc-i386.c (parse_register): Set need_vrex. gas/testsuite/ * gas/i386/x86-64-equ.d: New. * gas/i386/x86-64-equ.s: New. * gas/i386/i386.exp: Run x86-64-equ. commit e6cf2ae8bb4c675ebfafb137bf13e92ba96225e8 Author: Jan Kratochvil Date: Thu Jul 17 13:59:03 2014 +0200 PR 17170 - testcase for GDB global --statistics regression - fix up. Add missing file to previous entry. commit 17d0c5c8f07d43142bb35157a0df720b17b8a5ed Author: Jan Kratochvil Date: Thu Jul 17 13:56:24 2014 +0200 PR 17170 - testcase for GDB global --statistics regression. gdb/testsuite/ 2014-07-17 Jan Kratochvil PR gdb/17170 * gdb.base/statistics.exp: New file. Message-ID: <20140712174217.GA1478@host2.jankratochvil.net> commit 74b49205e07fcba1273df4c4bed6ec40951cee03 Author: Doug Evans Date: Thu Jul 17 02:42:55 2014 -0700 Add reference to PR 17170 to previous entry. commit b8b8facf90dda8363c989c263715d46125b2c301 Author: Doug Evans Date: Thu Jul 17 02:38:32 2014 -0700 Fix 17170. * maint.c (count_symtabs_and_blocks): Handle NULL current_program_space. (report_command_stats): Check global enabled flag in addition to recorded enabled flag. (make_command_stats_cleanup): Handle msg_type == 0, startup. testsuite/ * gdb.base/maint.exp: Update testing of per-command stats. commit 93c3fd0ec85cf35c87917a0ac48f10bfc3e6cc9f Author: Alan Modra Date: Thu Jul 17 09:30:48 2014 +0930 daily update commit 8d14e1918d16b5f700d7cde8bf40f1e0309bbfc6 Author: Stefan Kristiansson Date: Thu Jul 17 00:25:20 2014 +0300 or1k: increase linux TEXT_START_ADDR to 0x2000 Override the default value of 0x0000 defined in TEXT_START_ADDR to avoid linux executables to be mapped at zero page. ld/ * emulparams/elf32or1k_linux.sh (TEXT_START_ADDR): Increase from 0x0 to first page boundary at 0x2000. commit 69ff6be55c0e6181223f2b9c93d90ffc9f7fb0f5 Author: Pedro Alves Date: Wed Jul 16 20:06:55 2014 +0100 Linux: Use kill_lwp/tkill instead of kill when killing a process Since we use tkill everywhere, using kill to try to kill each lwp individually looks suspiciously odd. We should really be using tgkill everywhere, but at least while we don't get there this makes us consistent. gdb/gdbserver/ 2014-07-16 Pedro Alves * linux-low.c (linux_kill_one_lwp): Use kill_lwp, not kill. gdb/ 2014-07-16 Pedro Alves * linux-nat.c (kill_callback): Use kill_lwp, not kill. commit 1b5d0ab34c53d6e896d2c0958b1176e324bb7878 Author: Pedro Alves Date: Wed Jul 16 19:25:41 2014 +0100 gdb.trace/tfile.c: Remove Thumb bit in one more more, general cleanup I noticed that the existing code casts a function's address to 'long', but that doesn't work correctly on some ABIs, like Win64, where long is 32-bit and while pointers are 64-bit: func_addr = (long) &write_basic_trace_file; Fixing that showed there's actually another place in the file that writes a function address to file, and therefore should clear the Thumb bit. This commit adds a macro+function pair to centralize the Thumb bit handling, and uses it in both places. The rest is just enough changes to make the file build without warnings with "-Wall -Wextra" with x86_64-w64-mingw32-gcc and i686-w64-mingw32-gcc cross compilers, and with -m32/-m64 on x86_64 GNU/Linux. Currently with x86_64-w64-mingw32-gcc we get: $ x86_64-w64-mingw32-gcc tfile.c -Wall -DTFILE_DIR=\"\" tfile.c: In function 'start_trace_file': tfile.c:51:23: error: 'S_IRGRP' undeclared (first use in this function) S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); ^ tfile.c:51:23: note: each undeclared identifier is reported only once for each function it appears in tfile.c:51:31: error: 'S_IROTH' undeclared (first use in this function) S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); ^ tfile.c: In function 'add_memory_block': tfile.c:79:10: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] ll_x = (unsigned long) addr; ^ tfile.c: In function 'write_basic_trace_file': tfile.c:113:15: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] func_addr = (long) &write_basic_trace_file; ^ tfile.c:137:3: warning: passing argument 1 of 'add_memory_block' from incompatible pointer type [enabled by default] add_memory_block (&testglob, sizeof (testglob)); ^ tfile.c:72:1: note: expected 'char *' but argument is of type 'int *' add_memory_block (char *addr, int size) ^ tfile.c:139:3: warning: passing argument 1 of 'add_memory_block' from incompatible pointer type [enabled by default] add_memory_block (&testglob2, 1); ^ tfile.c:72:1: note: expected 'char *' but argument is of type 'int *' add_memory_block (char *addr, int size) ^ tfile.c: In function 'write_error_trace_file': tfile.c:185:3: warning: implicit declaration of function 'alloca' [-Wimplicit-function-declaration] char *hex = alloca (len * 2 + 1); ^ tfile.c:185:15: warning: incompatible implicit declaration of built-in function 'alloca' [enabled by default] char *hex = alloca (len * 2 + 1); ^ tfile.c:211:6: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] (long) &write_basic_trace_file); ^ Tested on x86_64 Fedora 20, -m64 and -m32. Tested by Yao on arm targets. gdb/testsuite/ 2014-07-16 Pedro Alves * gdb.trace/tfile.c: Include unistd.h and stdint.h. (start_trace_file): Guard S_IRGRP and S_IROTH uses behind #ifdef. (tfile_write_64, tfile_write_16, tfile_write_8, tfile_write_addr) (tfile_write_buf): New functions. (add_memory_block): Rewrite using the above. (adjust_function_address): New function. (FUNCTION_ADDRESS): New macro. (write_basic_trace_file): Remove short_x local, and use tfile_write_16. Change type of func_addr local to unsigned long long. Use FUNCTION_ADDRESS instead of handling the Thumb bit here. Cast argument of add_memory_block to char pointer. (write_error_trace_file): Avoid alloca. Use FUNCTION_ADDRESS. (main): Remove parameters. * gdb.trace/tfile.exp: Remove nowarnings. commit cca5b8b64b3286bb96cd7a2c18232d1acea85cd9 Author: H.J. Lu Date: Wed Jul 16 11:15:56 2014 -0700 Match PLT entry only for ELFOSABI_GNU input * elf32-i386.c (elf_i386_plt_sym_val): Match PLT entry only for ELFOSABI_GNU input. * elf64-x86-64.c (elf_x86_64_plt_sym_val): Likewise. (elf_x86_64_plt_sym_val_offset_plt_bnd): Likewise. commit 144bed8d4d8a1bdc0067f55f2ee71c07e5594677 Author: H.J. Lu Date: Wed Jul 16 08:16:24 2014 -0700 Properly match PLT entry against .got.plt relocation Relocations against .got.plt section may not be in the same order as entries in PLT section. It is incorrect to assume that the Ith reloction index against .got.plt section always maps to the (I + 1)th entry in PLT section. This patch matches the .got.plt relocation offset/index in PLT entry against the index in .got.plt relocation table. It only checks R_*_JUMP_SLOT and R_*_IRELATIVE relocations. It ignores R_*_TLS_DESC and R_*_TLSDESC relocations since they have different PLT entries. bfd/ PR binutils/17154 * elf32-i386.c (elf_i386_plt_sym_val): Only match R_*_JUMP_SLOT and R_*_IRELATIVE relocation offset with PLT entry. * elf64-x86-64.c (elf_x86_64_plt_sym_val): Likewise. (elf_x86_64_plt_sym_val_offset_plt_bnd): New. (elf_x86_64_get_synthetic_symtab): Use it. ld/testsuite/ PR binutils/17154 * ld-ifunc/pr17154-i386.d: New file. * ld-ifunc/pr17154-x86-64.d: Likewise. * ld-ifunc/pr17154-x86.s: Likewise. * ld-x86-64/bnd-ifunc-2.d: Likewise. * ld-x86-64/bnd-ifunc-2.s: Likewise. * ld-x86-64/mpx.exp: Run bnd-ifunc-2. * ld-x86-64/tlsdesc-nacl.pd: Updated. * ld-x86-64/tlsdesc.pd: Likewise. commit 4d974e8854dbc506f154efca8879da3f310bb2b9 Author: Simon Marchi Date: Tue Jul 15 13:04:31 2014 -0400 Add test for string evaluation with "debug expression" on As Joel pointed out in... https://sourceware.org/ml/gdb-patches/2014-07/msg00391.html ...it would be nice to add a test for that. Tested on Linux x86_64 (Ubuntu 14.10). gdb/testsuite/ChangeLog 2014-07-15 Simon Marchi * gdb.base/debug-expr.exp: Test string evaluation with "debug expression" on. commit 252db1b5de059d292f54216e4541e3ee8370d624 Author: Tom Tromey Date: Wed Jul 16 08:09:27 2014 -0600 reformat comment in target.h A comment in target.h went past the column limit. This patch reformats it. I'm pushing this as obvious. 2014-07-16 Tom Tromey * target.h (struct target_ops) : Reformat comment. commit a432721e612746b3a70a3b19f579c66cb8253ac8 Author: Tom Tromey Date: Wed Jul 16 08:05:03 2014 -0600 rebuild target-delegates.c target-delegates.c was out of date. This patch rebuilds it. Built and regtested on x86-64 Fedora 20. Committed as obvious. 2014-07-16 Tom Tromey * target-delegates.c: Rebuild. commit 0a45ee16bce8552abe77c74091b36878ff3816df Author: Alan Modra Date: Wed Jul 16 09:30:55 2014 +0930 daily update commit 998d811a23ca3f2c463dfaf40259486ff9958244 Author: H.J. Lu Date: Tue Jul 15 13:09:55 2014 -0700 Update elf_i386_compute_jump_table_size Commit e1f987424b7b3f5ac63a2a6ae044a202a44b8ff8 changed how next_tls_desc_index was set up. This patch updates elf_i386_compute_jump_table_size to use elf.srelplt->reloc_count instead of next_tls_desc_index. bfd/ PR ld/17057 * elf32-i386.c (elf_i386_compute_jump_table_size): Replace next_tls_desc_index with elf.srelplt->reloc_count. ld/testsuite/ PR ld/17057 * ld-i386/i386.exp: Run pr17057. * ld-i386/pr17057.d: New file. * ld-i386/pr17057.s: Likewise. commit 41e995687391695e16550eb9c18da8e5d0dcffa9 Author: Pedro Alves Date: Tue Jul 15 17:30:34 2014 +0100 gdb.base/reread.exp: Really restart GDB The other day I noticed that default_gdb_start reuses the GDB process if it has been spawned already: proc default_gdb_start { } { ... if [info exists gdb_spawn_id] { return 0 } I was a bit surprised, and so I hacked in an error to check whether anything is relying on it: + if [info exists gdb_spawn_id] { + error "GDB already spawned" + } And lo, that tripped on a funny buglet (see below). The comment in reread.exp says "Restart GDB entirely", but in reality, due to the above, that's not what is happening, as a gdb_exit call is missing. The test is proceeding with the previous GDB process... I don't really want to go hunt for whether there's an odd setup out there that assumes this in its board file or something, so for now, I'm taking the simple route of just making the test do what it says it does. I think this much makes it an obvious fix. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (gdb) PASS: gdb.base/reread.exp: run to foo() second time ERROR: tcl error sourcing ../src/gdb/testsuite/gdb.base/reread.exp. ERROR: GDB already spawned while executing "error "GDB already spawned"" invoked from within "if [info exists gdb_spawn_id] { error "GDB already spawned" }" (procedure "default_gdb_start" line 22) invoked from within "default_gdb_start" (procedure "gdb_start" line 2) invoked from within "gdb_start" invoked from within "if [is_remote target] { unsupported "second pass: GDB should check for changes before running" } else { # Put the older executable back in pl..." (file "../src/gdb/testsuite/gdb.base/reread.exp" line 114) invoked from within "source ../src/gdb/testsuite/gdb.base/reread.exp" ("uplevel" body line 1) invoked from within "uplevel #0 source ../src/gdb/testsuite/gdb.base/reread.exp" invoked from within "catch "uplevel #0 source $test_file_name"" testcase ../src/gdb/testsuite/gdb.base/reread.exp completed in 1 seconds ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ gdb/testsuite/ 2014-07-15 Pedro Alves * gdb.base/reread.exp: Use clean_restart. commit 487d975399dfcb2bb2f0998a7d12bd62acdd9fa1 Author: Pierre Langlois Date: Tue Jul 15 17:03:09 2014 +0100 Add support for the __flash qualifier on AVR The __flash qualifier is part of the named address spaces for AVR [1]. It allows putting read-only data in the flash memory, normally reserved for code. When used together with a pointer, the DW_AT_address_class attribute is set to 1 and allows GDB to detect that when it will be dereferenced, the data will be loaded from the flash memory (with the LPM instruction). We can now properly debug the following code: ~~~ const __flash char data_in_flash = 0xab; int main (void) { const __flash char *pointer_to_flash = &data_in_flash; } ~~~ ~~~ (gdb) print pointer_to_flash $1 = 0x1e8 "\253" (gdb) print/x *pointer_to_flash $2 = 0xab (gdb) x/x pointer_to_flash 0x1e8 : 0xXXXXXXab ~~~ Whereas previously, GDB would revert to the default address space which is RAM and mapped in higher memory: ~~~ (gdb) print pointer_to_flash $1 = 0x8001e8 "" ~~~ [1] https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html 2014-07-15 Pierre Langlois gdb/ * avr-tdep.c (AVR_TYPE_ADDRESS_CLASS_FLASH): New macro. (AVR_TYPE_INSTANCE_FLAG_ADDRESS_CLASS_FLASH): Likewise. (avr_address_to_pointer): Check for AVR_TYPE_ADDRESS_CLASS_FLASH. (avr_pointer_to_address): Likewise. (avr_address_class_type_flags): New function. (avr_address_class_type_flags_to_name): Likewise. (avr_address_class_name_to_type_flags): Likewise. (avr_gdbarch_init): Set address_class_type_flags, address_class_type_flags_to_name and address_class_name_to_type_flags. gdb/testsuite/ * gdb.arch/avr-flash-qualifer.c: New. * gdb.arch/avr-flash-qualifer.exp: New. commit 57745c903f78ffdb10a6198a6e35e5a1e63ea4b0 Author: Pedro Alves Date: Tue Jul 15 16:22:14 2014 +0100 [GDB/Linux] Avoid stale errno The fix that went into GDBserver is also needed on the GDB side. Although most compilers follow right-to-left evaluation order, the order of evaluation of a function call's arguments is really unspecified. target_pid_to_str may well clobber errno when we get to evaluate the third argument to fprintf_unfiltered. gdb/ 2014-07-15 Pedro Alves * linux-nat.c (kill_callback): Save errno and work with saved copy. commit 2d40be181fad7aed4aeabafd36529f3684b8bcab Author: Simon Marchi Date: Thu Jun 19 10:45:33 2014 -0400 Handle OP_STRING in dump_subexp_body_standard For some reason, OP_STRING is not handled in dump_subexp_body_standard. This makes the output of "set debug expression 1" very bad when a string is involved. Example: (gdb) set debug expression 1 (gdb) print "hello" ... (random garbage, possibly segfault) This commit handles OP_STRING and skips the appropriate number of exp elements. The line corresponding to the string now looks like: 0 OP_STRING Language-specific string type: 0 gdb/ChangeLog: 2014-07-15 Simon Marchi * expprint.c (dump_subexp_body_standard): Handle OP_STRING. commit ce9e3fe795c05bd7458a1466e14104f489f2b483 Author: Pedro Alves Date: Tue Jul 15 15:35:28 2014 +0100 [GDBserver] Avoid stale errno Although most compilers follow right-to-left evaluation order, the order of evaluation of a function call's arguments is really unspecified. target_pid_to_str or ptid_of may well clobber errno when we get to evaluate the third argument to debug_printf. gdb/gdbserver/ 2014-07-15 Pedro Alves * linux-low.c (linux_kill_one_lwp): Save errno and work with saved copy. commit 19f2f6a9c4aeb0e37d448cb5593164e25ab055a9 Author: Jiong Wang Date: Tue Jul 15 10:15:43 2014 +0100 [ARM] Fix 32-bit host build failure. gas/ * config/tc-arm.c (add_to_lit_pool): Use "inst.operands[1].imm" for * sign extension. Casting the type of imm1 and imm2 to offsetT. Fix one logic error when checking X_op. commit d6f18fe6cac35e68f86bda603620ebacaf59b1e6 Author: Jiong Wang Date: Tue Jul 15 10:08:55 2014 +0100 [AArch64] Fix ld testcase linker script glitch. Specify -T relocs.ld for emit-relocs-local-addend.d to be consistent will all other emit-relocs* testcases ld/testsuite/ * ld-aarch64/emit-relocs-local-addend.d: Use target linker script. commit ea7cc5bfc8ed2c139aeb50afe5652f8c4bb4d81a Author: Andreas Schwab Date: Mon Jul 14 20:59:50 2014 +0200 Don't complain about dbCC to long branch conversion * config/tc-m68k.c (md_convert_frag_1): Don't complain with --pcrel about TAB (DBCCLBR, LONG) conversion. commit 87f14779da25380b2e1ee67edcf984f0f8c922c4 Author: Alan Modra Date: Wed Jul 9 20:04:40 2014 +0930 Account for trailing bytes read from bfd_bread * cache.c (cache_bread_1): Don't return -1 when fread returns a positive value. commit cd3416da32a950d8ff4fee2863df57bb3f4b7c51 Author: Alan Modra Date: Wed Jul 9 14:53:00 2014 +0930 tidy elf_merge_st_other So that we munge isym->st_other once per symbol. * elflink.c (elf_merge_st_other): Update comments. Simplify visibility handling. Make isym const. Move code modifying isym->st_other for --exclude-libs to.. (elf_link_add_object_symbols): ..here. commit 98d4551685ad23284e258604b4a3adc175bfa664 Author: Alan Modra Date: Tue Jul 15 09:30:48 2014 +0930 daily update commit 572f65559b461133292118cee522b7e437714a07 Author: Edjunior Barbosa Machado Date: Mon Jul 14 20:18:10 2014 -0300 2014-07-14 Edjunior Barbosa Machado * ppc-linux-nat.c (ppc_linux_can_use_hw_breakpoint): Report no hardware breakpoint support correctly. commit cc1c52ad653224e0804fa03e3af9affaa7062dc8 Author: Pedro Alves Date: Mon Jul 14 20:39:53 2014 +0100 Add missing ChangeLog entry for 15cd413a Put GDB's terminal settings into effect when paginating gdb/ 2014-07-14 Pedro Alves * utils.c (prompt_for_continue): Call target_terminal_ours. gdb/testsuite/ 2014-07-14 Pedro Alves * gdb.base/paginate-after-ctrl-c-running.c: New file. * gdb.base/paginate-after-ctrl-c-running.exp: New file. commit 8258415802426fd3e6956cc8dc7aa093052177a5 Author: Pedro Alves Date: Mon Jul 14 19:55:32 2014 +0100 Put GDB's terminal settings into effect when paginating When the target is resumed in the foreground, we put the inferior's terminal settings into effect, and remove stdin from the event loop. When the target stops, we put GDB's terminal settings into effect again, and re-register stdin in the event loop, ready for user input. The former is done by target_terminal_inferior, and the latter by target_terminal_ours. There's an intermediate -- target_terminal_ours_for_output -- that is called when printing output related to target events, and we don't know yet whether we'll stop the program. That puts our terminal settings into effect, enough to get proper results from our output, but leaves input wired into the inferior. If such output paginates, then we need the full target_terminal_ours in order for the user to be able to provide input to answer the pagination query. The test in this commit hangs in async-capable targets without the fix (as the user/test can't answer the pagination query). It doesn't hang on sync targets because on those we don't unregister stdin from the event loop while the target is running (because we block in target_wait instead of in the event loop in that case). gdb/ 2014-07-14 Pedro Alves * utils.c (prompt_for_continue): Call target_terminal_ours. gdb/testsuite/ 2014-07-14 Pedro Alves * gdb.base/paginate-after-ctrl-c-running.c: New file. * gdb.base/paginate-after-ctrl-c-running.exp: New file. commit 1e9735707b34b8141ea3bfd88205ea26e99891fc Author: Pedro Alves Date: Mon Jul 14 19:55:32 2014 +0100 Fix double prompt If an error is thrown while handling a target event (within fetch_inferior_event), and, the interpreter is not async (but the target is), then GDB prints the prompt twice. One way to see that in action is throw a QUIT while in a pagination prompt issued from within fetch_inferior_event (or one of its callees). E.g. from the test: ---Type to continue, or q to quit--- ^CQuit (gdb) (gdb) p 1 ^^^^^^^^^^^ $1 = 1 (gdb) The issue is that inferior_event_handler swallows errors and notifies the observers (the interpreters) about the command error, even if the interpreter is forced sync while we're handling a nested event loop (for execute_command). The observers print a prompt, and then when we get back to the top event loop, we print another (in start_event_loop). I see no reason the error should be swallowed here. Just cancel the execution related bits and let the error propagate to the top level (start_event_loop), which re-enables stdin and notifies observers. gdb/ 2014-07-14 Pedro Alves * inf-loop.c (inferior_event_handler): Use TRY_CATCH instead of catch_errors. Don't re-enable stdin or notify observers where, and rethrow error. (fetch_inferior_event_wrapper): Delete. gdb/testsuite/ 2014-07-14 Pedro Alves * gdb.base/double-prompt-target-event-error.c: New file. * gdb.base/double-prompt-target-event-error.exp: New file. commit 93d6eb10ede1d8b72b274345c63f66439eaf7fd0 Author: Pedro Alves Date: Mon Jul 14 19:55:32 2014 +0100 Remove the target from the event loop while in secondary prompts If a pagination prompt triggers while the target is running, and the target exits before the user responded to the pagination query, this happens: Starting program: foo ---Type to continue, or q to quit---No unwaited-for children left. Couldn't get registers: No such process. Couldn't get registers: No such process. Couldn't get registers: No such process. (gdb) Couldn't get registers: No such process. (gdb) To reiterate, the user hasn't replied to the pagination prompt above. A pagination query nests an event loop (in gdb_readline_wrapper). In async mode, in addition to stdin and signal handlers, we'll have the target also installed in the event loop still. So if the target reports an event, that wakes up the nested event loop, which calls into fetch_inferior_event etc. to handle the event which generates further output, all while we should be waiting for pagination confirmation... (TBC, any target event that generates output ends up spuriously waking up the pagination, though exits seem to be the worse kind.) I've played with a couple different approaches to fixing this, while at the same time trying to avoid being invasive. Both revolve around not listening to target events while in a pagination prompt (doing anything else I think would be a much bigger change). The approach taken just removes the target from the event loop while within gdb_readline_wrapper. The other approach used gdb_select directly, with only input_fd installed, but that had the issue that it didn't handle the async signal handlers, and turned out to be a bit more code than the first version. gdb/ 2014-07-14 Pedro Alves PR gdb/17072 * top.c: Include "inf-loop.h". (struct gdb_readline_wrapper_cleanup) : New field. (gdb_readline_wrapper_cleanup): Make the target async again, if it was async before. (gdb_readline_wrapper): Store whether the target is async, and make it sync. gdb/testsuite/ 2014-07-14 Pedro Alves PR gdb/17072 * gdb.base/paginate-inferior-exit.c: New file. * gdb.base/paginate-inferior-exit.exp: New file. commit 0017922d0292d8c374584f6100874580659c9973 Author: Pedro Alves Date: Mon Jul 14 19:55:32 2014 +0100 Background execution + pagination aborts readline/gdb If pagination occurs as result of output sent as response to a target event while the target is executing in the background, subsequent input aborts readline/gdb: $ gdb program ... (gdb) continue& Continuing. (gdb) ---Type to continue, or q to quit--- *return* ---Type to continue, or q to quit--- Breakpoint 2, after_sleep () at paginate-bg-execution.c:21 ---Type to continue, or q to quit--- 21 return; /* after sleep */ p 1 readline: readline_callback_read_char() called with no handler! *abort/SIGABRT* $ gdb_readline_wrapper_line removes the handler after a line is processed. Usually, we'll end up re-displaying the prompt, and that reinstalls the handler. But if the output is coming out of handling a stop event, we don't re-display the prompt, and nothing restores the handler. So the next input wakes up the event loop and calls into readline, which aborts. We should do better with the prompt handling while the target is running (I think we should coordinate with readline, and hide/redisplay it around output), but that's a more invasive change better done post 7.8, so this patch is conservative and just reinstalls the handler as soon as we're out of the readline line callback. gdb/ 2014-07-14 Pedro Alves PR gdb/17072 * top.c (gdb_readline_wrapper_line): Tweak comment. (gdb_readline_wrapper_cleanup): If readline is enabled, reinstall the input handler callback. gdb/testsuite/ 2014-07-14 Pedro Alves PR gdb/17072 * gdb.base/paginate-bg-execution.c: New file. * gdb.base/paginate-bg-execution.exp: New file. commit 94696ad31c3fac4a3bc17391e42362d83be1fb56 Author: Pedro Alves Date: Mon Jul 14 19:55:31 2014 +0100 Canceling pagination caused by execution command from command line aborts readline/gdb This fixes: $ ./gdb program -ex "set height 2" -ex "start" ... Reading symbols from /home/pedro/gdb/tests/threads...done. ---Type to continue, or q to quit---^CQuit << ctrl-c triggers a Quit *type something* readline: readline_callback_read_char() called with no handler! Aborted $ Usually, if an error propagates all the way to the top level, we'll re-enable stdin, in case the command that was running was a synchronous command. That's done in the event loop's actual loop (event-loop.c:start_event_loop). However, if a foreground execution command is run before the event loop starts and throws, nothing is presently reenabling stdin, which leaves sync_execution set. When we do start the event loop, because sync_execution is still (mistakenly) set, display_gdb_prompt removes the readline input callback, even though stdin is registered in the event loop. Any input from here on results in readline aborting. Such commands are run through catch_command_errors, catch_command_errors_const, so add the tweak there. gdb/ 2014-07-14 Pedro Alves PR gdb/17072 * main.c: Include event-top.h. (handle_command_errors): New function. (catch_command_errors, catch_command_errors_const): Use it. gdb/testsuite/ 2014-07-14 Pedro Alves PR gdb/17072 * gdb.base/paginate-execution-startup.c: New file. * gdb.base/paginate-execution-startup.exp: New file. * lib/gdb.exp (pagination_prompt): New global. (default_gdb_spawn): New procedure, factored out from default_gdb_spawn. (default_gdb_start): Adjust to call default_gdb_spawn. (gdb_spawn): New procedure. commit bd29394088b5685d336a501fadca88b25ed777bc Author: Pedro Alves Date: Mon Jul 14 19:55:31 2014 +0100 testsuite: Introduce gdb_assert Often we'll do something like: if {$ok} { fail "whatever" } else { pass "whatever" } This adds a helper procedure for that, and converts one random place to use it, as an example. 2014-07-14 Pedro Alves * lib/gdb.exp (gdb_assert): New procedure. * gdb.trace/backtrace.exp (gdb_backtrace_tdp_4): Use it. commit 9d1e69a21488cb5b8b7553c8df18ee5c3f4d82e3 Author: Pedro Alves Date: Mon Jul 14 19:55:31 2014 +0100 Move catch_command_errors and catch_command_errors_const to main.c We'll need to add error handling code to commands run before the event loop starts (commands in .gdbinit, -ex commands, etc.). Turns out those are run through catch_command_errors, and, catch_command_errors is used nowhere else. Move it (and the _const variant) to main.c, so that we can further specialize it freely. gdb/ 2014-07-14 Pedro Alves * exceptions.c (catch_command_errors, catch_command_errors_const): Moved to main.c. * exceptions.h (catch_command_errors_ftype) (catch_command_errors_const_ftype): Moved to main.c. (catch_command_errors, catch_command_errors_const): Delete declarations. * main.c (catch_command_errors_ftype) (catch_command_errors_const_ftype): Moved here from exceptions.h. (catch_command_errors, catch_command_errors_const)): Moved here from exceptions.c and make static. commit feefc97b5942325a8b7793e7ae089d87ecdee11c Author: Pedro Alves Date: Mon Jul 14 19:55:30 2014 +0100 Eliminate exceptions.c:print_any_exception. exception_print and exception_fprintf call print_flush, which does all the same flushing and annotation things that print_any_exception does, and more. gdb/ 2014-07-14 Pedro Alves * exceptions.c (print_any_exception): Delete. (catch_exceptions_with_msg): Use exception_print instead of print_any_exception. (catch_errors): Use exception_fprintf instead of print_any_exception. (catch_command_errors, catch_command_errors_const): Use exception_print instead of print_any_exception. commit c933f875f4416a2a06c14fb9e483dd888a948eb2 Author: Pedro Alves Date: Mon Jul 14 19:55:30 2014 +0100 Put the inferior's terminal settings in effect while running (fg) infcalls The "call" and "print" commands presently always run synchronously, in the foreground, but GDB currently forgets to put the inferior's terminal settings into effect while running them, on async-capable targets, resulting in: (gdb) print func () hello world Program received signal SIGTTOU, Stopped (tty output). 0x000000373bceb8d0 in __libc_tcdrain (fd=1) at ../sysdeps/unix/sysv/linux/tcdrain.c:29 29 return INLINE_SYSCALL (ioctl, 3, fd, TCSBRK, 1); The program being debugged was signaled while in a function called from GDB. GDB remains in the frame where the signal was received. To change this behavior use "set unwindonsignal on". Evaluation of the expression containing the function (func) will be abandoned. When the function is done executing, GDB will silently stop. (gdb) That's because target_terminal_inferior skips actually doing anything if running in the background, and, nothing is setting sync_execution while running infcalls: void target_terminal_inferior (void) { /* A background resume (``run&'') should leave GDB in control of the terminal. Use target_can_async_p, not target_is_async_p, since at this point the target is not async yet. However, if sync_execution is not set, we know it will become async prior to resume. */ if (target_can_async_p () && !sync_execution) return; This would best be all cleaned up by making GDB not even call target_terminal_inferior and try to pass the terminal to the inferior if running in the background, but that's a more invasive fix that is better done post-7.8. This was originally caught by a patch later in this series that makes catch_command_errors use exception_print instead of print_any_exception. Note that print_flush calls serial_drain_output while print_any_exception doesnt't have that bit. And, gdb.gdb/python-selftest.exp does: gdb_test "call catch_command_errors(execute_command, \"python print 5\", 0, RETURN_MASK_ALL)" \ "Python not initialized.* = 0" which without this fix results in SIGTTOU... gdb/ 2014-07-14 Pedro Alves * infcall.c (run_inferior_call): Set 'sync_execution' while running the inferior call. gdb/testsuite/ 2014-07-14 Pedro Alves * gdb.base/execution-termios.c: New file. * gdb.base/execution-termios.exp: New file. commit feb6f816c2246f29e1f71db11a757cbf99c25492 Author: Pedro Alves Date: Mon Jul 14 18:48:09 2014 +0100 Garbage collect value_contents_equal. Hasn't been used in years. gdb/ 2014-07-14 Pedro Alves * value.c (value_contents_equal): Delete function. * value.h (value_contents_equal): Delete declaration. commit d98b7a16a982e4a17995536250b55f7ff82bd78e Author: Tom Tromey Date: Wed Jul 2 15:53:31 2014 -0600 fix PR 17106 This fixes PR 17106, a regression in printing. The bug is that resolve_dynamic_type follows struct members and references, but doesn't consider the possibility of infinite recursion. This patch fixes the problem by limiting reference following to the topmost layer of calls -- that is, reference-typed struct members are never considered as being VLAs. Built and regtested on x86-64 Fedora 20. New test case included. 2014-07-14 Tom Tromey PR exp/17106: * gdbtypes.c (is_dynamic_type_internal): New function, from is_dynamic_type. (is_dynamic_type): Rewrite. (resolve_dynamic_union): Use resolve_dynamic_type_internal. (resolve_dynamic_struct): Likewise. (resolve_dynamic_type_internal): New function, from resolve_dynamic_type. (resolve_dynamic_type): Rewrite. 2014-07-14 Tom Tromey * gdb.cp/vla-cxx.cc: New file. * gdb.cp/vla-cxx.exp: New file. commit 548740d6bdd115da2c9c17b194016c2c4c0a4c69 Author: Tom Tromey Date: Tue Jul 1 11:43:00 2014 -0600 fix record "run" regression This fixes the record "run" regression pointed out by Marc Khouzam: https://sourceware.org/ml/gdb/2014-06/msg00096.html The bug is that target_require_runnable must agree with the handling of the "run" target, but currently it is out of sync. This patch fixes the problem by changing target_require_runnable to also ignore the record_stratum. Built and regtested on x86-64 Fedora 20. New test case included. 2014-07-14 Tom Tromey * target.c (target_require_runnable): Also check record_stratum. Update comment. 2014-07-14 Tom Tromey * gdb.reverse/rerun-prec.c: New file. * gdb.reverse/rerun-prec.exp: New file. commit 0ed82684efcb5243b66f918552403ff4ec1d7ee1 Author: Alan Modra Date: Mon Jul 14 09:30:59 2014 +0930 daily update commit 152cc38b0aadfa17df5f6fa50b15901988776541 Author: Alan Modra Date: Sun Jul 13 09:30:58 2014 +0930 daily update commit 76bd66cfb5207137dac01534cf7d8af8f708743b Author: Alan Modra Date: Sat Jul 12 17:05:35 2014 +0930 Don't force "set" symbols local for PE gas/ * read.c (assign_symbol): Don't force "set" symbols local for PE. gas/testsuite/ * gas/pe/set.s, * gas/pe/set.d: New test. * gas/pe/pe.exp: Run it. commit a25eb0280d6ae5a791e0e613f42e3197c82d3030 Author: Maciej W. Rozycki Date: Sat Jul 12 01:22:25 2014 +0100 gdb/testsuite: Add a way to send multiple init commands Right now we provide a board info entry, `gdb_init_command', that allows one to send a single command to GDB before the program to be debugged is started. This is useful e.g. for slow remote targets to change the default "remotetimeout" setting. Occasionally I found a need to send multiple commands instead, however this cannot be achieved with `gdb_init_command'. This change therefore extends the mechanism by adding a TCL list of GDB commands to send, via a board info entry called `gdb_init_commands'. There is no limit as to the number of commands put there. The old `gdb_init_command' mechanism remains supported for compatibility with existing people's environments. * lib/gdb-utils.exp: New file. * lib/gdb.exp (gdb_run_cmd): Call gdb_init_commands, replacing inline `gdb_init_command' processing. (gdb_start_cmd): Likewise. * lib/mi-support.exp (mi_run_cmd): Likewise. * README: Document `gdb_init_command' and `gdb_init_commands'. commit 2836d43109bdad96f14b405b8996011b5f8879a9 Author: Alan Modra Date: Sat Jul 12 09:31:38 2014 +0930 daily update commit 218c2655603748b844dcaf103e34fd14d8ee8aef Author: Jan Kratochvil Date: Fri Jul 11 17:26:42 2014 +0200 Fix false argv0-symlink.exp FAIL running under a very long directory name Starting program: /home/jkratoch/redhat/gdb-test-fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff/gdb/testsuite/gdb.base/argv0-symlink-filelink ^M [...] (gdb) print argv[0]^M $1 = 0x7fffffffda39 "/home/jkratoch/redhat/gdb-test-", 'f' ...^M (gdb) FAIL: gdb.base/argv0-symlink.exp: kept file symbolic link name after "set print repeats 10000": print argv[0]^M $1 = 0x7fffffffda39 "/home/jkratoch/redhat/gdb-test-fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"...^M (gdb) FAIL: gdb.base/argv0-symlink.exp: kept file symbolic link name after "set print elements 10000": print argv[0]^M $1 = 0x7fffffffda39 "/home/jkratoch/redhat/gdb-test-fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff/gdb/testsuite/gdb.base/argv0-symlink-filelink"^M (gdb) PASS: gdb.base/argv0-symlink.exp: kept file symbolic link name gdb/testsuite/ 2014-07-11 Jan Kratochvil Fix false FAIL running under a very long directory name. * gdb.base/argv0-symlink.exp: Add "set print repeats 10000" and "set print elements 10000". Twice. commit 17ca87fc69f554aecc4a7f8d6d354a6ad9bec7be Author: Maks Naumov Date: Fri Jul 11 23:55:30 2014 +0930 Fix typo in _bfd_elf_strtab_add PR 17141 * elf.c (_bfd_elf_strtab_add): Check strtab name for failure. commit 808f7ab1fc88da40007c17a20e49928359f27491 Author: Yao Qi Date: Wed Jul 2 15:16:26 2014 +0800 Stop prologue analysis when past the epilogue We see a fail in gdb.trace/entry-values.exp on armv4t thumb, bt^M #0 0x000086fc in foo (i=0, i@entry=, j=2, j@entry=)^M #1 0x00000002 in ?? ()^M Backtrace stopped: previous frame identical to this frame (corrupt stack?)^M (gdb) FAIL: gdb.trace/entry-values.exp: bt (1) (pattern 1) The fail is caused by incorrect prologue analysis, which can be illustrated by setting a breakpoint on function foo, (gdb) disassemble foo Dump of assembler code for function foo: 0x000086e8 <+0>: push {r7, lr} 0x000086ea <+2>: sub sp, #8 0x000086ec <+4>: add r7, sp, #0 0x000086ee <+6>: str r0, [r7, #4] 0x000086f0 <+8>: str r1, [r7, #0] 0x000086f2 <+10>: movs r3, #0 0x000086f4 <+12>: adds r0, r3, #0 0x000086f6 <+14>: mov sp, r7 0x000086f8 <+16>: add sp, #8 0x000086fa <+18>: pop {r7} 0x000086fc <+20>: pop {r1} 0x000086fe <+22>: bx r1 End of assembler dump. (gdb) b foo Breakpoint 1 at 0x86fc As we can see, GDB analyzes the prologue and skip the prologue to the last instruction but one. The breakpoint is set within the epilogue, and GDB skips too many instruction for prologue. This patch teaches GDB to stop prologue analysis when goes into the epilogue. With this patch applied, GDB is able to unwind correctly, (gdb) bt #0 0x000086f6 in foo (i=0, i@entry=2, j=2, j@entry=3) #1 0x00008718 in bar (i=) #2 0x00008758 in main () gdb: 2014-07-11 Yao Qi * arm-tdep.c (thumb_analyze_prologue): Break the loop if thumb_instruction_restores_sp return true. commit 540314bdd87c7478d21b44dd4856d937bcc1479b Author: Yao Qi Date: Wed Jul 2 14:45:12 2014 +0800 Match instruction adjusts SP in thumb This is a refactor patch, that moves matching instructions adjusting SP into a new function, thumb_instruction_restores_sp. The second call to thumb_instruction_restores_sp in thumb_in_function_epilogue_p is a little different from the original. The original code matches 'POP without PC', but thumb_in_function_epilogue_p matches 'POP (with and without PC)'. However, GDB found one instruction about return and is scanning the previous instruction, which should be an instruction about return too, so the code change doesn't affect the functionality. gdb: 2014-07-11 Yao Qi * arm-tdep.c (thumb_instruction_restores_sp): New function. (thumb_in_function_epilogue_p): Call thumb_instruction_restores_sp. commit 1db01f22f58cc01768dc921a7443a1bad4e48eb5 Author: Yao Qi Date: Tue Jul 1 15:36:44 2014 +0800 Restrict matching add/sub sp, #imm Currently, GDB matches both add/sub sp, #imm in prologue and epilogue, which is not very precise. On the instruction level, the immediate number in both instruction can't be negative, so 'sub sp, #imm' only appears in prologue while 'add sp, #imm' only appears in epilogue. Note that on assembly level, we can write 'add sp, -8', but gas will translate to 'sub sp, 8' instruction. This patch is to only match 'sub sp, #imm' in prologue and match 'add sp, #immm' in epilogue. It paves the way for the following patch. gdb: 2014-07-11 Yao Qi * arm-tdep.c (thumb_analyze_prologue): Don't match instruction 'add sp, #imm'. (thumb_in_function_epilogue_p): Don't match 'sub sp, #imm'. commit 3116063bd617de56fbc3bad046a692b1fb363a9d Author: Gary Benson Date: Fri Jun 27 09:52:29 2014 +0100 Tidy #include lists This commit tidies up the #include lists in {i386,amd64}-linux-nat.c, removing headers that are no longer required and reordering some lines so that both files roughly match. Additionally, an unused definition was removed from the middle of the #include list in i386-linux-nat.c. gdb/ 2014-07-11 Gary Benson * amd64-linux-nat.c (gdbcore.h): Remove include. (regset.h): Likewise. (nat/linux-btrace.h): Likewise. (btrace.h): Likewise. (gdb_assert.h): Likewise. (string.h): Likewise. (sys/uio.h): Likewise. (sys/debugreg.h): Likewise. (sys/syscall.h): Likewise. (sys/procfs.h): Likewise. (sys/user.h): Likewise. (asm/ptrace.h): Likewise. (i386-nat.h): Likewise. * i386-linux-nat.c (i386-nat.h): Likewise. (regset.h): Likewise. (target.h): Likewise. (linux-nat.h): Likewise. (nat/linux-btrace.h): Likewise. (btrace.h): Likewise. (gdb_assert.h): Likewise. (string.h): Likewise. (sys/uio.h): Likewise. (sys/user.h): Likewise. (sys/procfs.h): Likewise. (sys/reg.h): Likewise. (sys/debugreg.h): Likewise. (ORIG_EAX): Remove definition. commit 040baaf6deeec9f92645169f3f6e84996e23c986 Author: Gary Benson Date: Thu Jul 10 15:43:56 2014 +0100 Move duplicated code into new files This commit moves the duplicated code in {i386,amd64}-linux-nat.c into the new files x86-linux-nat.[ch]. Additionally, a new file i386-linux-nat.h was required to expose a value required by the 32-bit code in x86-linux-nat.c. gdb/ 2014-07-11 Gary Benson * i386-linux-nat.h: New file. * x86-linux-nat.h: Likewise. * x86-linux-nat.c: Likewise. * Makefile.in (HFILES_NO_SRCDIR): Add the above new headers. * config/i386/linux.mh (NATDEPFILES): Add x86-linux-nat.o. * config/i386/linux64.mh (NATDEPFILES): Likewise. * amd64-linux-nat.c (x86-linux-nat.h): New include. (PTRACE_GETREGSET): Now in x86-linux-nat.h. (PTRACE_SETREGSET): Likewise. (arch_lwp_info): Now in x86-linux-nat.c. (have_ptrace_getregset): Now in x86-linux-nat.h. (x86_linux_dr_get): Now in x86-linux-nat.c. (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. (x86_linux_new_fork): Likewise. (x86_linux_get_thread_area): Likewise. (super_post_startup_inferior): Likewise. (x86_linux_child_post_startup_inferior): Likewise. (AMD64_LINUX_USER64_CS): Likewise. (AMD64_LINUX_X32_DS): Likewise. (x86_linux_read_description): Likewise. (x86_linux_enable_btrace): Likewise. (x86_linux_disable_btrace): Likewise. (x86_linux_teardown_btrace): Likewise. (x86_linux_read_btrace): Likewise. (x86_linux_create_target): Likewise. (x86_linux_add_target): Likewise. * i386-linux-nat.c (x86-linux-nat.h): New include. (PTRACE_GETREGSET): Now in x86-linux-nat.h. (PTRACE_SETREGSET): Likewise. (arch_lwp_info): Now in x86-linux-nat.c. (have_ptrace_getregset): Now in x86-linux-nat.h. (x86_linux_dr_get): Now in x86-linux-nat.c. (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. (x86_linux_new_fork): Likewise. (x86_linux_get_thread_area): Likewise. (super_post_startup_inferior): Likewise. (x86_linux_child_post_startup_inferior): Likewise. (AMD64_LINUX_USER64_CS): Likewise. (AMD64_LINUX_X32_DS): Likewise. (x86_linux_read_description): Likewise. (x86_linux_enable_btrace): Likewise. (x86_linux_disable_btrace): Likewise. (x86_linux_teardown_btrace): Likewise. (x86_linux_read_btrace): Likewise. (x86_linux_create_target): Likewise. (x86_linux_add_target): Likewise. commit 1aa7e42c3f5c5295f81ff94301c642642be86395 Author: Gary Benson Date: Wed Jun 25 14:57:42 2014 +0100 Comment and whitespace changes This commit merges the comments and whitespace in the common parts of i386-linux-nat.c and amd64-linux-nat.c. gdb/ 2014-07-11 Gary Benson * amd64-linux-nat.c: Comment and whitespace changes. * i386-linux-nat.c: Comment and whitespace changes. commit c1e246a060dd1eab0c2551d86844edb199994ff7 Author: Gary Benson Date: Tue Jun 24 13:43:30 2014 +0100 Pull out common parts of _initialize_{i386,amd64}_linux_nat This commit adds two new helpers, x86_linux_create_target and x86_linux_add_target, to hold the parts of _initialize_i386_linux_nat and _initialize_amd64_linux_nat which are common. gdb/ 2014-07-11 Gary Benson * amd64-linux-nat.c (x86_linux_create_target): New function. (x86_linux_add_target): Likewise. (_initialize_amd64_linux_nat): Delegate to the above new functions. * i386-linux-nat.c (x86_linux_create_target): New function. (x86_linux_add_target): Likewise. (_initialize_i386_linux_nat): Delegate to the above new functions. commit 8c420b8d59e8e045aa733f478adb1d0509d447e3 Author: Gary Benson Date: Wed Jun 25 11:49:55 2014 +0100 Merge ps_get_thread_area This commit adds a new helper, x86_linux_get_thread_area, to hold the common parts of the ps_get_thread_area functions in i386-linux-nat.c and amd64-linux-nat.c. gdb/ 2014-07-11 Gary Benson * amd64-linux-nat.c (x86_linux_get_thread_area): New function. (ps_get_thread_area): Delegate to the above in 32-bit mode. * i386-linux-nat.c (x86_linux_get_thread_area): New function. (ps_get_thread_area): Delegate to the above. commit cb1da100b6291ad35ad886555a0f7114925ed29f Author: Gary Benson Date: Fri Jun 27 09:29:06 2014 +0100 Merge {i386,amd64}_linux_read_description This commit merges i386_ and amd64_linux_read_description, renaming both to x86_linux_read_description. gdb/ 2014-07-11 Gary Benson * amd64-linux-nat.c (amd64_linux_read_description): Renamed to x86_linux_read_description. All uses updated. amd64-specific code conditionalized. Conditionalized i386-specific code added. Redundant cast removed. * i386-linux-nat.c (i386_linux_read_description): Renamed to x86_linux_read_description. All uses updated. i386-specific code conditionalized. Conditionalized amd64-specific code added. One sizeof replaced with the actual type it is describing. commit 2acf3cd06577b80adb96df754f910da8b754c7dc Author: Gary Benson Date: Tue Jun 24 10:07:12 2014 +0100 Rename identical functions amd64-linux-nat.c and i386-linux-nat.c contain a number of functions which are identical but for prefix on their names. This commit renames all such functions to have the prefix x86_ instead of the prefixes amd64_ or i386_ and updates all uses of those functions. The now-identical x86_ functions will be pulled out to a separate shared file in a later commit. gdb/ 2014-07-11 Gary Benson * amd64-linux-nat.c (amd64_linux_dr_get): Renamed to x86_linux_dr_get. All uses updated. (amd64_linux_dr_set): Renamed to x86_linux_dr_set. All uses updated. (amd64_linux_dr_get_addr): Renamed to x86_linux_dr_get_addr. All uses updated. (amd64_linux_dr_get_control): Renamed to x86_linux_dr_get_control. All uses updated. (amd64_linux_dr_get_status): Renamed to x86_linux_dr_get_status. All uses updated. (amd64_linux_dr_set_control): Renamed to x86_linux_dr_set_control. All uses updated. (amd64_linux_dr_set_addr): Renamed to x86_linux_dr_set_addr. All uses updated. (amd64_linux_prepare_to_resume): Renamed to x86_linux_prepare_to_resume. All uses updated. (amd64_linux_new_thread): Renamed to x86_linux_new_thread. All uses updated. (amd64_linux_new_fork): Renamed to x86_linux_new_fork. All uses updated. (amd64_linux_child_post_startup_inferior): Renamed to x86_linux_child_post_startup_inferior. All uses updated. (amd64_linux_enable_btrace): Renamed to x86_linux_enable_btrace. All uses updated. (amd64_linux_disable_btrace): Renamed to x86_linux_disable_btrace. All uses updated. (amd64_linux_teardown_btrace): Renamed to x86_linux_teardown_btrace. All uses updated. (amd64_linux_read_btrace): Renamed to x86_linux_read_btrace. All uses updated. * i386-linux-nat.c (i386_linux_dr_get): Renamed to x86_linux_dr_get. All uses updated. (i386_linux_dr_set): Renamed to x86_linux_dr_set. All uses updated. (i386_linux_dr_get_addr): Renamed to x86_linux_dr_get_addr. All uses updated. (i386_linux_dr_get_control): Renamed to x86_linux_dr_get_control. All uses updated. (i386_linux_dr_get_status): Renamed to x86_linux_dr_get_status. All uses updated. (i386_linux_dr_set_control): Renamed to x86_linux_dr_set_control. All uses updated. (i386_linux_dr_set_addr): Renamed to x86_linux_dr_set_addr. All uses updated. (i386_linux_prepare_to_resume): Renamed to x86_linux_prepare_to_resume. All uses updated. (i386_linux_new_thread): Renamed to x86_linux_new_thread. All uses updated. (i386_linux_new_fork): Renamed to x86_linux_new_fork. All uses updated. (i386_linux_child_post_startup_inferior): Renamed to x86_linux_child_post_startup_inferior. All uses updated. (i386_linux_enable_btrace): Renamed to x86_linux_enable_btrace. All uses updated. (i386_linux_disable_btrace): Renamed to x86_linux_disable_btrace. All uses updated. (i386_linux_teardown_btrace): Renamed to x86_linux_teardown_btrace. All uses updated. (i386_linux_read_btrace): Renamed to x86_linux_read_btrace. All uses updated. commit 5401fde353cbd1d5d32a3fcc7721b1a29147b5ba Author: Yao Qi Date: Fri Jul 11 18:46:33 2014 +0800 Don't print symbol on address 0x0 We see the following fails on arm-none-eabi target, print (void*)v_signed_char^M $190 = (void *) 0x0 <_ftext>^M (gdb) FAIL: gdb.base/exprs.exp: print (void*)v_signed_char (print (void*)v_signed_char) GDB behaves correctly but the test assumes there is no symbol on address 0x0. This patch is set print symbol off, so that tests below can match the address only. gdb/testsuite: 2014-07-11 Yao Qi * gdb.base/exprs.exp: "set print symbol off". commit e76126e8d1fc8e244fbfce03bda4a41a7b7722b1 Author: Pedro Alves Date: Fri Jul 11 11:07:13 2014 +0100 GDBserver crashes when killing a multi-thread process Here's an example, with the new test: gdbserver :9999 gdb.threads/kill gdb gdb.threads/kill (gdb) b 52 Breakpoint 1 at 0x4007f4: file kill.c, line 52. Continuing. Breakpoint 1, main () at kill.c:52 52 return 0; /* set break here */ (gdb) k Kill the program being debugged? (y or n) y gdbserver :9999 gdb.threads/kill Process gdb.base/watch_thread_num created; pid = 9719 Listening on port 1234 Remote debugging from host 127.0.0.1 Killing all inferiors Segmentation fault (core dumped) Backtrace: (gdb) bt #0 0x00000000004068a0 in find_inferior (list=0x66b060 , func=0x427637 , arg=0x7fffffffd3fc) at src/gdb/gdbserver/inferiors.c:199 #1 0x00000000004277b6 in linux_kill (pid=15708) at src/gdb/gdbserver/linux-low.c:966 #2 0x000000000041354d in kill_inferior (pid=15708) at src/gdb/gdbserver/target.c:163 #3 0x00000000004107e9 in kill_inferior_callback (entry=0x6704f0) at src/gdb/gdbserver/server.c:2934 #4 0x0000000000406522 in for_each_inferior (list=0x66b050 , action=0x4107a6 ) at src/gdb/gdbserver/inferiors.c:57 #5 0x0000000000412377 in process_serial_event () at src/gdb/gdbserver/server.c:3767 #6 0x000000000041267c in handle_serial_event (err=0, client_data=0x0) at src/gdb/gdbserver/server.c:3880 #7 0x00000000004189ff in handle_file_event (event_file_desc=4) at src/gdb/gdbserver/event-loop.c:434 #8 0x00000000004181c6 in process_event () at src/gdb/gdbserver/event-loop.c:189 #9 0x0000000000418f45 in start_event_loop () at src/gdb/gdbserver/event-loop.c:552 #10 0x0000000000411272 in main (argc=3, argv=0x7fffffffd8d8) at src/gdb/gdbserver/server.c:3283 The problem is that linux_wait_for_event deletes lwps that have exited (even those not passed in as lwps of interest), while the lwp/thread list is being walked on with find_inferior. find_inferior can handle the current iterated inferior being deleted, but not others. When killing lwps, we don't really care about any of the pending status handling of linux_wait_for_event. We can just waitpid the lwps directly, which is also what GDB does (see linux-nat.c:kill_wait_callback). This way the lwps are not deleted while we're walking the list. They'll be deleted by linux_mourn afterwards. This crash triggers several times when running the testsuite against GDBserver with the native-gdbserver board (target remote), but as GDB can't distinguish between GDBserver crashing and "kill" being sucessful, as in both cases the connection is closed (the 'k' packet doesn't require a reply), and the inferior is gone, that results in no FAIL. The patch adds a generic test that catches the issue with extended-remote mode (and works fine with native testing too). Here's how it fails with the native-extended-gdbserver board without the fix: (gdb) info threads Id Target Id Frame 6 Thread 15367.15374 0x000000373bcbc98d in nanosleep () at ../sysdeps/unix/syscall-template.S:81 5 Thread 15367.15373 0x000000373bcbc98d in nanosleep () at ../sysdeps/unix/syscall-template.S:81 4 Thread 15367.15372 0x000000373bcbc98d in nanosleep () at ../sysdeps/unix/syscall-template.S:81 3 Thread 15367.15371 0x000000373bcbc98d in nanosleep () at ../sysdeps/unix/syscall-template.S:81 2 Thread 15367.15370 0x000000373bcbc98d in nanosleep () at ../sysdeps/unix/syscall-template.S:81 * 1 Thread 15367.15367 main () at .../gdb.threads/kill.c:52 (gdb) kill Kill the program being debugged? (y or n) y Remote connection closed ^^^^^^^^^^^^^^^^^^^^^^^^ (gdb) FAIL: gdb.threads/kill.exp: kill Extended remote should remain connected after the kill. gdb/gdbserver/ 2014-07-11 Pedro Alves * linux-low.c (kill_wait_lwp): New function, based on kill_one_lwp_callback, but use my_waitpid directly. (kill_one_lwp_callback, linux_kill): Use it. gdb/testsuite/ 2014-07-11 Pedro Alves * gdb.threads/kill.c: New file. * gdb.threads/kill.exp: New file. commit b9c1d481cc639a9c1f31aea164f8716a85edd89f Author: Adrian Sendroiu Date: Fri Jul 11 10:51:48 2014 +0100 remote: call remote_check_symbols after attaching When debugging a remote bare-metal target with "target extended-remote" + attach, GDB won't send a qSymbol packet to initiate symbol lookup. This happens because all the previous places in which GDB might have done this are guarded by conditions that don't hold in the said scenario: there are no shared libraries, no vsyscall page and the binary file didn't change in the time passed between the "file" and the "attach" commands. To solve this problem remote_check_symbols is called in the target_post_attach hook. gdb/ 2014-07-11 Adrian Sendroiu * remote.c (extended_remote_post_attach): New function. (init_extended_remote_ops): Install it as to_post_attach method. commit 68372333a2467491f007d59c390d67f58df0bb77 Author: Alan Modra Date: Fri Jul 11 09:31:14 2014 +0930 daily update commit e86c23a851f8b20d50e67217750853b8c89bbf55 Author: Doug Evans Date: Thu Jul 10 12:30:05 2014 -0700 Revert gdbthread.h (any_running): Declare. Not properly marked as 1/2. This reverts commit 1a76d598884a052dacd8feb49f1999e1a0d537f1. commit 1a76d598884a052dacd8feb49f1999e1a0d537f1 Author: Doug Evans Date: Thu Jul 10 11:15:32 2014 -0700 * gdbthread.h (any_running): Declare. * thread.c (any_running): New function. commit e7d17e71cdc10a2e81e454ce3b9637f1b2a587f2 Author: Max Filippov Date: Thu Jul 10 01:47:33 2014 +0400 Fix xtensa ld segfault when linking linux modules is_inconsistent_linkonce_section makes an assumption that section name that starts with ".gnu.linkonce.prop." has one more dot in its suffix. However gas generates such section name by insertion of "prop." right after ".gnu.linkonce." part of the name of the original section. So, for section named ".gnu.linkonce.this_module" corresponding property section name does not satisfy the assumption. Such section names are common in linux modules. This bug was exposed by the patch "a35d5e8 Fix alignment for the first section frag on xtensa", that makes gas produce property section for each section that has ".align" directive in it. Use suffix that immediately follows ".gnu.linkonce.prop." when there are no more dots following it. 2014-07-10 Max Filippov ld/ * emultempl/xtensaelf.em (is_inconsistent_linkonce_section): correctly handle missing dot in section name after ".gnu.linkonce.prop.". commit 0b42baa397bcacec234090eaac043d3d261b2908 Author: Will Newton Date: Tue Jul 8 10:23:27 2014 +0100 gas/ARM: Fix testsuite failure for arm-elf At some point the arm-elf output became the same as arm-eabi. Remove the special handling of arm-elf. gas/testsuite/ChangeLog: 2014-07-10 Will Newton * gas/elf/elf.exp: Remove special handling of arm-elf for section2 test. * gas/elf/section2.e-armeabi: Rename to... * gas/elf/section2.e-arm: ...here. * gas/elf/section2.e-armelf: Remove file. commit 6a2619f95336f522e6a5e9a7fcbfd6d4ce47014b Author: Will Newton Date: Mon Jul 7 17:33:34 2014 +0100 Fix tests when configured for arm-linux and arm-elf With this change all gas and most ld tests pass when configured for arm-linux. It doesn't look like these configurations have been tested in a long time but this attempts to stem the bit-rot slightly. gas/testsuite/ChangeLog: 2014-07-10 Will Newton * gas/arm/bl-local-2.d: Only enable the test on EABI and NaCl configurations. * gas/arm/bl-local-v4t.d: Likewise. * gas/arm/blx-local.d: Likewise. * gas/arm/branch-reloc.d: Likewise. ld/testsuite/ChangeLog: 2014-07-10 Will Newton * ld-arm/arm-elf.exp (armelftests_nonacl): Move Cortex-A8 fix tests, IFUNC tests and other EABI requiring tests to... (armeabitests_nonacl): ...here. * ld-arm/arm-app-abs32.d: Loosen regex for architecture type to allow test to pass on configurations without an attributes section. * ld-arm/arm-app.d: Likewise. * ld-arm/arm-lib-plt32.d: Likewise. * ld-arm/arm-lib.d: Likewise. * ld-arm/arm-static-app.d: Likewise. * ld-arm/armthumb-lib.d: Likewise. * ld-arm/cortex-a8-far.d: Likewise. * ld-arm/farcall-mixed-app.d: Likewise. * ld-arm/farcall-mixed-lib-v4t.d: Likewise. * ld-arm/farcall-mixed-lib.d: Likewise. * ld-arm/mixed-app-v5.d: Likewise. * ld-arm/mixed-app.d: Likewise. * ld-arm/mixed-lib.d: Likewise. * ld-arm/tls-app.d: Likewise. * ld-arm/tls-descrelax-be32.d: Likewise. * ld-arm/tls-descrelax.d: Likewise. * ld-arm/tls-descseq.d: Likewise. * ld-arm/tls-gdesc-got.d: Likewise. * ld-arm/tls-gdesc.d: Likewise. * ld-arm/tls-gdierelax.d: Likewise. * ld-arm/tls-gdierelax2.d: Likewise. * ld-arm/tls-gdlerelax.d: Likewise. * ld-arm/tls-lib-loc.d: Likewise. * ld-arm/tls-lib.d: Likewise. * ld-arm/tls-thumb1.d: Likewise. commit 15635cff5fc339e9819b975232933a0fb133899d Author: Will Newton Date: Mon Jul 7 17:26:48 2014 +0100 binutils/testsuite: Disable strip-10 test on ARM non-EABI Non-EABI ARM targets set OSABI to ARM regardless of whether or not GNU features have been used which causes this test to fail. binutils/testsuite/ChangeLog: 2014-07-10 Will Newton * binutils-all/objcopy.exp: Disable the strip-10 test on non-EABI ARM configurations. commit 6f86b3b00029344e8aebadf1bb10c9ee46d2d512 Author: Will Newton Date: Mon Jul 7 17:30:58 2014 +0100 ld/testsuite: Disable non-PIC shared library tests on ARM ARM doesn't support non-PIC shared libraries so don't run those tests. ld/testsuite/ChangeLog: 2014-07-10 Will Newton * ld-elfvers/vers.exp: Set pic to yes for ARM targets. commit 2d6f0de676f46ebd8bb7d98a0093aa081e17e94b Author: Yao Qi Date: Mon Jun 30 11:47:51 2014 +0800 Tweak gdb.trace/tfile.c for thumb mode We see the fail below happens on thumb related multi-libs (-mthumb -march={armv4t,armv7-a}), target tfile tfile-basic.tf ^M warning: Uploaded tracepoint 1 has no source location, using raw address^M warning: Breakpoint address adjusted from 0x00008959 to 0x00008958.^M Tracepoint 3 at 0x8958: file /scratch/yqi/arm-none-linux-gnueabi/src/gdb-trunk/gdb/testsuite/gdb.trace/tfile.c, line 91.^M Created tracepoint 3 for target's tracepoint 1 at 0x8959.^M warning: Breakpoint address adjusted from 0x00008959 to 0x00008958.^M warning: Breakpoint address adjusted from 0x00008959 to 0x00008958.^M warning: Breakpoint address adjusted from 0x00008959 to 0x00008958.^M (gdb) FAIL: gdb.trace/tfile.exp: complete-command 'target tfile' The address of write_basic_trace_file is two-bytes aligned, (gdb) p write_basic_trace_file $1 = {void (void)} 0x8958 but the ld sets the LSB of every reference to the function address (indicating the address is in thumb mode), so "&write_basic_trace_file" in the program becomes 0x8959, which is saved in the trace file. That is why the warnnings are emitted. This patch is to clear the LSB of the function address written to trace file in thumb and thumb2 mode. This patch fixes the fail above. gdb/testsuite: 2014-07-10 Yao Qi * gdb.trace/tfile.c (write_basic_trace_file) [__thumb__||__thumb2__]: Clear the Thumb bit of the function address written to trace file. commit 67ad4d71d6e7f2a58fa9034d3b4ffbf418da29f4 Author: Alan Modra Date: Thu Jul 10 09:31:24 2014 +0930 daily update commit 7180e04a36d812bbea2c280f2db33a7e8ce6b07b Author: Pedro Alves Date: Wed Jul 9 15:59:02 2014 +0100 Fix "attach" command vs user input race On async targets, a synchronous attach is done like this: #1 - target_attach is called (PTRACE_ATTACH is issued) #2 - a continuation is installed #3 - we go back to the event loop #4 - target reports stop (SIGSTOP), event loop wakes up, and attach continuation is called #5 - among other things, the continuation calls target_terminal_inferior, which removes stdin from the event loop Note that in #3, GDB is still processing user input. If the user is fast enough, e.g., with something like: echo -e "attach PID\nset xxx=1" | gdb ... then the "set" command is processed before the attach completes. We get worse behavior even, if input is a tty and therefore readline/editing is enabled, with e.g.,: (gdb) attach PID\nset xxx=1 we then crash readline/gdb, with: Attaching to program: attach-wait-input, process 14537 readline: readline_callback_read_char() called with no handler! Aborted $ Fix this by calling target_terminal_inferior before #3 above. The test covers both scenarios by running with editing/readline forced to both on and off. gdb/ 2014-07-09 Pedro Alves * infcmd.c (attach_command_post_wait): Don't call target_terminal_inferior here. (attach_command): Call it here instead. gdb/testsuite/ 2014-07-09 Pedro Alves * gdb.base/attach-wait-input.exp: New file. * gdb.base/attach-wait-input.c: New file. commit 9a9a76082919371f4ceb571f6c9892325b80a2e0 Author: Andrew Burgess Date: Mon Jul 7 19:22:36 2014 +0100 Improve MI -var-info-path-expression for nested struct/union case. https://sourceware.org/ml/gdb-patches/2014-05/msg00383.html The MI command -var-info-path-expression currently does not handle non-anonymous structs / unions nested within other structs / unions, it will skip parts of the expression. Consider this example: ## START EXAMPLE ## $ cat ex.c #include int main () { struct s1 { int a; }; struct ss { struct s1 x; }; struct ss an_ss; memset (&an_ss, 0, sizeof (an_ss)); return 0; } $ gcc -g -o ex.x ex.c $ gdb ex.x (gdb) break 18 Breakpoint 1 at 0x80483ba: file ex.c, line 18. (gdb) run Starting program: /home/user/ex.x Breakpoint 1, main () at ex.c:18 18 return 0; (gdb) interpreter-exec mi "-var-create an_ss * an_ss" (gdb) interpreter-exec mi "-var-list-children an_ss" ^done,numchild="1",children=[child={name="an_ss.x",exp="x",numchild="1",type="struct s1",thread-id="1"}],has_more="0" (gdb) interpreter-exec mi "-var-list-children an_ss.x" ^done,numchild="1",children=[child={name="an_ss.x.a",exp="a",numchild="0",type="int",thread-id="1"}],has_more="0" (gdb) interpreter-exec mi "-var-list-children an_ss.x.a" ^done,numchild="0",has_more="0" (gdb) interpreter-exec mi "-var-info-path-expression an_ss.x.a" ^done,path_expr="(an_ss).a" (gdb) print (an_ss).a There is no member named a. ## END EXAMPLE ## Notice that the path expression returned is wrong, and as a result the print command fails. This patch adds a new method to the varobj_ops structure called is_path_expr_parent, to allow language specific control over finding the parent varobj, the current logic becomes the C/C++ version and is extended to handle the nested cases. No other language currently uses this code, so all other languages just get a default method. With this patch, the above example now finishes like this: ## START EXAMPLE ## $ gdb ex.x (gdb) break 18 Breakpoint 1 at 0x80483ba: file ex.c, line 18. (gdb) run Starting program: /home/user/ex.x Breakpoint 1, main () at ex.c:18 18 return 0; (gdb) interpreter-exec mi "-var-list-children an_ss" ^done,numchild="1",children=[child={name="an_ss.x",exp="x",numchild="1",type="struct s1",thread-id="1"}],has_more="0" (gdb) interpreter-exec mi "-var-list-children an_ss.x" ^done,numchild="1",children=[child={name="an_ss.x.a",exp="a",numchild="0",type="int",thread-id="1"}],has_more="0" (gdb) interpreter-exec mi "-var-list-children an_ss.x.a" ^done,numchild="0",has_more="0" (gdb) interpreter-exec mi "-var-info-path-expression an_ss.x.a" ^done,path_expr="((an_ss).x).a" (gdb) print ((an_ss).x).a $1 = 0 ## END EXAMPLE ## Notice that the path expression is now correct, and the print is a success. gdb/ChangeLog: * ada-varobj.c (ada_varobj_ops): Fill in is_path_expr_parent field. * c-varobj.c (c_is_path_expr_parent): New function, moved core from varobj.c, with additional checks. (c_varobj_ops): Fill in is_path_expr_parent field. (cplus_varobj_ops): Fill in is_path_expr_parent field. * jv-varobj.c (java_varobj_ops): Fill in is_path_expr_parent field. * varobj.c (is_path_expr_parent): Call is_path_expr_parent varobj ops method. (varobj_default_is_path_expr_parent): New function. * varobj.h (lang_varobj_ops): Add is_path_expr_parent field. (varobj_default_is_path_expr_parent): Declare new function. gdb/testsuite/ChangeLog: * gdb.mi/var-cmd.c (do_nested_struct_union_tests): New function setting up test structures. (main): Call new test function. * gdb.mi/mi2-var-child.exp: Create additional breakpoint in new test function, continue into test function and walk test structures. commit e051745c838bf29e564fb2665339f97c8383b9e8 Author: Cary Coutant Date: Tue Jul 8 22:34:27 2014 -0700 Fix --defsym to copy symbol attributes. Alan Modra committed a patch to Gnu ld to fix a problem encountered on PPC where the --defsym option wasn't copying the st_other bits to the newly-defined symbol. https://sourceware.org/ml/binutils/2014-07/msg00094.html Gold has the same problem, and additionally wasn't copying the symbol type. This patch fixes both problems, by copying the symbol type, visibility, and the remaining st_other bits to the new symbol for --defsym=sym1=sym2 assignments. gold/ * expression.cc (struct Expression::Expression_eval_info): Add new fields type_pointer, vis_pointer, and nonvis_pointer. (Expression::eval_maybe_dot): Add type_pointer, vis_pointer, and nonvis_pointer parameters. Adjust all calls. (Symbol_expression::value): Update type, visibility, and nonvis bits in caller. * script.cc (Symbol_assignment::sized_finalize): Update type, visibility, and remaining st_other bits for new symbol. * script.h: (Expression::eval_maybe_dot): Add type_pointer, vis_pointer, and nonvis_pointer parameters. * symtab.h (Symbol::set_type): New method. * testsuite/Makefile.am (defsym_test): New test. * testsuite/Makefile.in: Regenerate. * testsuite/defsym_test.c: New file. * testsuite/defsym_test.sh: New file. commit ecf3e831f71257e8ff7bf794f394f23b26d75137 Author: Alan Modra Date: Wed Jul 9 09:31:22 2014 +0930 daily update commit f35c4853cc5b0e51d8a460be390f7a20cd44ba44 Author: Cary Coutant Date: Mon Jul 7 10:14:45 2014 -0700 Fix internal error with LTO on ARM. This prevents the target-specific do_read_symbols methods from being called twice when do_layout_deferred_sections needs to layout an .eh_frame section. gold/ PR gold/15639 * dynobj.h (Sized_dynobj::base_read_symbols): New method. * dynobj.cc (Sized_dynobj::do_read_symbols): Move body to... (Sized_dynobj::base_read_symbols): ...new method. * object.h (Sized_relobj_file::base_read_symbols): New method. * object.cc (Sized_relobj_file::do_read_symbols): Move body to... (Sized_relobj_file::base_read_symbols): ...new method. * arm.cc (Arm_relobj::do_read_symbols): Call base_read_symbols. * mips.cc: (Mips_relobj::do_read_symbols): Likewise. * powerpc.cc (Powerpc_dynobj::do_read_symbols): Likewise. commit b484180108158f427f3637987de02199416ed53a Author: Denis Chertykov Date: Tue Jul 8 20:15:18 2014 +0400 * scripttempl/avr.sc: Remove KEEP for .data and force .bss VMA to end of .data VMA. commit 5bc8cb6f842e588e7ae9f3b9f52f9f41fb97bf34 Author: Nick Clifton Date: Tue Jul 8 16:20:48 2014 +0100 This fixes PR 17110 which shows that the SH section relocation code can be called for input BFDs as well as output BFDs. PR ld/17110 * elf32-sh.c (sh_elf_osec_to_segment): Do not look for output segments in input bfds. commit 792f7758e3cdbe72b82a5014d74e87e9c1ee0c3b Author: Ilya Tocar Date: Tue Jul 8 13:45:43 2014 +0400 Fix disasm of vmovsd/vmovss with different length values. gas/testsuite * gas/i386/evex-lig256-intel.d: Updated. * gas/i386/evex-lig256.d: Updated. * gas/i386/evex-lig512-intel.d: Updated. * gas/i386/evex-lig512-intel.d: Updated. * gas/i386/x86-64-evex-lig256-intel.d: Updated. * gas/i386/x86-64-evex-lig256.d: Updated. * gas/i386/x86-64-evex-lig512-intel.d: Updated. * gas/i386/x86-64-evex-lig512-intel.d: Updated. opcodes * i386-dis-evex.h (EVEX_W_0F10_P_1_M_1): Fix vmovss. (EVEX_W_0F10_P_3_M_1): Fix vmovsd. commit 7572ca8989ead4c3425a1500bc241eaaeffa2c89 Author: Will Newton Date: Thu Jun 26 15:23:31 2014 +0100 ld/ARM: Increase maximum page size to 64kB Increase the maximum page size to 64kB and align the TEXT_START_ADDR to a 64kB boundary. This brings AArch32 in line with AArch64 and improves compatability under certain conditions. bfd/ChangeLog: 2014-07-08 Will Newton * elf32-arm.c (ELF_MAXPAGESIZE): Increase the default value to 64kB and remove custom setting for NaCl. ld/ChangeLog: 2014-07-08 Will Newton * emulparams/armelf_linux.sh (TEXT_START_ADDR): Increase alignment to 64kB boundary. ld/testsuite/ChangeLog: 2014-07-08 Will Newton * ld-arm/arm-lib.ld: Increase MAXPAGESIZE value to match bfd. * ld-arm/cortex-a8-fix-bl-rel-plt.d: Update offsets to take into account increased segment alignment. * ld-arm/ifunc-gdesc.r: Likewise. * ld-arm/tls-lib.d: Likewise. commit 8335d6aa34b88ce31b62e1b578d54ab4aa364435 Author: Jiong Wang Date: Tue Jul 8 12:14:56 2014 +0100 Fix PR 16722 by adding support for 8-byte vector constants. * config/tc-arm.c (literal_pool): New field "alignment". (find_or_make_literal_pool): Initialize "alignment" to 2. (s_ltorg): Align the pool using value of "alignment" (parse_big_immediate): New parameter "in_exp". Return parsed expression if "in_exp" is not null. (parse_address_main): Invoke "parse_big_immediate" for constant parameter. (add_to_lit_pool): Add one parameter 'nbytes'. Split 8 byte entry into two 4 byte entry. Add padding to align 8 byte entry to 8 byte boundary. (encode_arm_cp_address): Generate literal pool entry if possible. (move_or_literal_pool): Generate entry for vldr case. (enum lit_type): New enum type. (do_ldst): Use new enum type. (do_ldstv4): Likewise. (do_t_ldst): Likewise. (neon_write_immbits): Support Thumb-2 mode. * gas/arm/ldconst.s: Add test cases for symbol literal. * gas/arm/ldconst.d: Likewise. * gas/arm/vldconst.s: Add test cases for vldr. * gas/arm/thumb2_vpool.s: Likewise. * gas/arm/vldconst.d: New pattern for little-endian. * gas/arm/thumb2_vpool.d: Likewise. * gas/arm/vldconst_be.d: New pattern for big-endian. * gas/arm/thumb2_vpool_be.d: Likewise. commit bffebb6ba5b4ddbca7353626d682f9f974584dbf Author: Alan Modra Date: Tue Jul 8 15:24:06 2014 +0930 Copy st_other for linker script symbol assignments This fixes a problem seen on powerpc64le ELFv2 when creating a function symbol alias with ld --defsym. st_other needs to be copied from the source symbol to the alias in order to set up the local entry offset for the alias. I decided to make this change in the generic ELF code rather than in elf64-ppc.c since it looks like other targets that use st_other bits might benefit too. bfd/ * elflink.c (_bfd_elf_copy_link_hash_symbol_type): Copy st_other bits from source to dest. * linker.c (_bfd_generic_copy_link_hash_symbol_type): Update comment. * targets.c (struct bfd_target <_bfd_copy_link_hash_symbol_type>): Likewise. * bfd-in2.h: Regenerate. ld/testsuite/ * ld-powerpc/defsym.s, * ld-powerpc/defsym.d: New test. * ld-powerpc/powerpc.exp: Run it. commit 161ac41e03a819bc34e8c70a3fd1bc26f43858a2 Author: Yao Qi Date: Tue Jul 1 19:30:54 2014 +0800 Fix gdb.trace/entry-values.exp for thumb mode We see some fails in gdb.trace/entry-values.exp in thumb mode (-mthumb -march={armv4t,armv7-a}). In thumb mode, the lsb of references to 'foo' and 'bar' in the assembly (produced by dwarf assember) is set, so the generated debug information is incorrect. This patch copies the approach used by [PATCH 4/4] Fix dw2-ifort-parameter.exp on PPC64 https://sourceware.org/ml/gdb-patches/2014-03/msg00202.html to introduce new labels 'foo_start' and 'bar_start' which are about the correct function address (without lsb set). This patch fixes these fails we've seen. gdb/testsuite: 2014-07-08 Yao Qi * gdb.trace/entry-values.c: Define labels 'foo_start' and 'bar_start' at the beginning of functions 'foo' and 'bar' respectively. * gdb.trace/entry-values.exp: Use 'foo_start' and 'bar_start' instead of 'foo' and 'bar'. commit 2e0488d33f8abbbc5bec214e1723d07048d7afcc Author: Jiong Wang Date: Tue Jul 8 09:29:06 2014 +0100 Enable elf_backend_rela_normal for AArch64 If we are generating non-relocatable object and --emit-relocs specified, aarch64 ld is actually generating wrong addend for rela entry when relocate against local symbol. for example, for simple testcase foo.c === const char * const a = "foo"; const char * foo () { return a; } bar.c === const char * const b = "bar"; const char * bar () { return b; } aarch64-none-linux-gnu-ld --emit-relocs -o x.o foo.o bar.o aarch64-none-linux-gnu-readelf -r x.o ... R_AARCH64_ADR_PRE 0000000000400018 .rodata + 0 ... R_AARCH64_ADD_ABS 0000000000400018 .rodata + 0 ... R_AARCH64_ADR_PRE 0000000000400018 .rodata + 0 ... R_AARCH64_ADD_ABS 0000000000400018 .rodata + 0 while it should be: ... R_AARCH64_ADR_PRE 0000000000400018 .rodata + 0 ... R_AARCH64_ADD_ABS 0000000000400018 .rodata + 0 ... R_AARCH64_ADR_PRE 0000000000400018 .rodata + 10 ... R_AARCH64_ADD_ABS 0000000000400018 .rodata + 10 bfd generic code could actually handle this properly, but only when elf_backend_rela_normal set to '1'. this patch enable this and remove those target specific hack. bfd/ * elfnn-aarch64.c (elf_backend_rela_normal): Set to 1. (elfNN_aarch64_relocate_section): Remove duplicated addend adjustment when info->relocatable be true. ld/testsuite/ * ld-aarch64/emit-relocs-local-addend-bar.s: * New source file. * ld-aarch64/emit-relocs-local-addend-foo.s: * Likewise. * ld-aarch64/emit-relocs-local-addend.d: * New testcase. * ld-aarch64/local-addend-r.d: Likewise. commit 1f267ae3d18c165f8b4327aa423b909eae92f4d6 Author: Markus Metzger Date: Mon Jun 30 11:47:30 2014 +0200 reverse-finish: turn internal error into normal error The reverse-finish command results in an internal error if it cannot determine the current function. (gdb) c Continuing. Program received signal SIGSEGV, Segmentation fault. 0x0000000000000000 in ?? () (gdb) reverse-finish Run back to call of #0 0x0000000000000000 in ?? () gdb/infcmd.c:1576: internal-error: Finish: couldn't find function. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) y This is not an internal error case since the command may be used in scenarios where there is no function at the current PC, e.g. after calling through a bad function pointer. Turn this into a normal error. gdb/ * infcmd.c (finish_backward): Turn internal error into normal error. testsuite/ * gdb.btrace/segv.c: New. * gdb.btrace/segv.exp: New. commit 37a6ac445daf5075d9058d7f01505f96a43f592a Author: Alan Modra Date: Sat Jul 5 12:05:01 2014 +0930 Run ar with --plugin for LTO 11 test Objects built with -fno-fat-lto-objects (the default for gcc-4.9) have no normal symbols, except things like __gnu_lto_slim. These useless symbols are the ones put into the archive index, and of course nothing references them so no objects are extracted by the linker. Running ar with --plugin changes ar behaviour to put the lto symbols into the archive index. PR 17112 * ld-plugin/lto.exp: When building liblti-11.a, pass --plugin path_to_gcc/liblto_plugin.so to ar. commit e29c73ebde63ce95bfbb4be28eb797b55c8e3842 Author: Alan Modra Date: Tue Jul 8 09:30:45 2014 +0930 daily update commit 8a869bcaa54364e8ea6583097a4a6e8414470c4f Author: Pedro Alves Date: Mon Jul 7 19:05:04 2014 +0100 Mention PR gdb/17096 in ChangeLog commit b2ee242b93e9580406e03abb18ff969de7de1976 Author: Pedro Alves Date: Mon Jul 7 17:51:04 2014 +0100 PR gdb/17096: async support breaks remote debugging on Windows On Windows, with "maint set target-async on" (the default since a09dd441), Ctrl-C fails to stop a remote target. With maint target-async on, the SIGINT signal handler doesn't send the remote interrupt request immediately. Instead, it marks an async handler as ready, and then the main event loop wakes up and notices that the SIGINT async signal handler token was set, and calls the corresponding event handler, which sends the remote interrupt request. On POSIX-like systems, the SIGINT signal makes the select/poll in the main event loop wake up / return with EINTR. However, on Windows, signal handlers run on a separate thread, and Windows doesn't really have a concept of EINTR. So, just marking the async handler (effectively just setting a flag) does not wake up gdb_select. Instead, we need to call gdb_call_async_signal_handler from the signal handler. The Windows version (in mingw-hdep.c) sets a Windows event that gdb_select's WaitForMultipleObjects is waiting for. Confirmed that with this, Ctrl-C interrupts the remote target on Windows. Also regression tested on x86_64 Fedora 20 against GDBserver. gdb/ 2014-07-07 Pedro Alves * remote.c (async_handle_remote_sigint) (async_handle_remote_sigint_twice): Call gdb_call_async_signal_handler instead of mark_async_signal_handler. commit 3510a7b805f8ad1345b9d2671a21a40a09d9f2a2 Author: Nick Clifton Date: Mon Jul 7 17:46:05 2014 +0100 Remove an accidental commit. * readelf.c (get_symbol_type): Revert accidental change to detection of thumb function symbols. commit 75f580857a7c65525a98a701c65d0814be04155f Author: Barney Stratford Date: Mon Jul 7 16:15:19 2014 +0100 Adds support for writing values to AVR system I/O registers. * elf32-avr.c: Handle R_AVR_PORT5 and R_AVR_PORT6. * reloc.c: Add BFD_RELOC_AVR_PORT5 and BFD_RELOC_AVR_PORT6. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * avr.h: Add R_AVR_PORT5 and R_AVR_PORT6. * config/tc-avr.c (avr_operand): Permit referring to r26-r31 by name as [xyz][hl]. Permit using a symbol whoes name begins with `r' to refer to a register. Allow arbitrary expressions for the P and p operators. (md_apply_fix): Check the BFD_RELOC_AVR_PORT5 and BFD_RELOC_AVR_PORT6 relocations. commit 38e229b2b3b5cc28c40ae114146bcdb45f60fc46 Author: Tom Tromey Date: Wed Jun 25 10:23:35 2014 -0600 change to_info_record to use target delegation This changes to_info_record to use target delegation. Also, target_info_record was unused, so this patch removes it. 2014-07-07 Tom Tromey * target-delegates.c: Rebuild. * target.c (target_info_record): Remove. * record.c (info_record_command): Unconditionally call to_info_record. * target.h (struct target_ops) : Use TARGET_DEFAULT_IGNORE. (target_info_record): Remove. commit f0f9ff9530992cb86c7022310af223b2721117d1 Author: Tom Tromey Date: Wed Jun 25 10:16:55 2014 -0600 convert to_get_thread_local_address to use target delegation This converts to_get_thread_local_address to use TARGET_DEFAULT_NORETURN. One possible oddity is that this changes the text of the kind of exception thrown in some cases. This doesn't seem to be a problem; in fact perhaps the final call to 'error' in target_translate_tls_address should be changed to call generic_tls_error. 2014-07-07 Tom Tromey * target.h (struct target_ops) : Use TARGET_DEFAULT_NORETURN. * target.c (generic_tls_error): New function. (target_translate_tls_address): Don't search target stack. * target-delegates.c: Rebuild. * ppc-linux-tdep.c (ppc_linux_spe_context): Don't search target stack. * linux-thread-db.c (thread_db_get_thread_local_address): Unconditionally call beneath target. commit 3bb9e7b43fb3bef0ecfef14b9185661afbe5f4c5 Author: Alan Modra Date: Mon Jul 7 23:42:45 2014 +0930 Reinstate compiler check * lib/ld-lib.exp (check_lto_shared_available): Reinstate compiler check here too. commit 19aef622f37ae4f940d6e3ef6835fd5519289178 Author: Nick Clifton Date: Mon Jul 7 14:41:10 2014 +0100 This patch prevents a linker testsuite error if the checks are run with a toolchain that just contains the binutils - ie without a compiler. * lib/ld-lib.exp (check_lto_available): Check that a compiler is available before testing for LTO support. commit f1d7f4a64c4d92911127abe6dbab95a219405c2b Author: Alan Modra Date: Mon Jul 7 13:37:16 2014 +0930 Ensure ld testsuite gcc -B options precede $CC -B options Various ld-elf/shared.exp and ld-plugin/lto.exp tests simply appended the testsuite -B options intended to force gcc use the linker under test. This fails if $CC itself has -B options, as when setting CC to run gcc out of a build directory. Net result is that tests were run using the gcc build dir collect-ld. * config/default.exp: Don't make tmpdir/gas. Put as symlink into tmpdir/ld. (gcc_gas_flag, gcc_ld_flag): Delete. (gcc_B_opt, ld_L_opt): New globals. ld-elf/shared.exp: Remove all refs to gcc_gas_flag and gcc_ld_flag. ld-plugin/lto.exp: Likewise. lib/ld-lib.exp (run_host_cmd): Add gcc_B_opt and ld_L_opt here. (ld_simple_link): Remove -B handling now that this is done in run_host_cmd. Simplify. (default_ld_compile): Simplify. (check_lto_available): Use run_host_cmd_yesno. (check_lto_shared_available): Likewise. commit f60ec1cfa8f5e8aa27ffc5db5a344b5db2efe97b Author: Alan Modra Date: Mon Jul 7 09:30:39 2014 +0930 daily update commit e9021bb48fbe808bf99b5349f35c6ce9239ac13f Author: Alan Modra Date: Sun Jul 6 09:30:56 2014 +0930 daily update commit abc868c6090192b9bf3059da81e518bd744b8da3 Author: Alan Modra Date: Sat Jul 5 11:59:53 2014 +0930 Rid libdummy.a from lto.exp libdummy.a is used to make run_cc_link_tests compile objects and archive them. libdummy.a isn't used. What we're really doing is preventing a final link. So do that directly. * lib/ld-lib.exp (run_ld_link_tests): Stop after assembling objects if binfile is empty. (run_ld_link_exec_tests, run_cc_link_tests): Likewise. Tidy status checks. * ld-plugin/lto.exp: Don't use libdummy.a trick to compile objects. Instead use an empty output file. commit 878f7dc7d15cd4f47943bef53c8201f4781d1807 Author: Alan Modra Date: Sat Jul 5 09:31:46 2014 +0930 daily update commit 1110793abe7dca4b2092e69da0d5356eb4b25c77 Author: Alan Modra Date: Fri Jul 4 15:06:40 2014 +0930 Update "configure.in" in comments and doco bfd/ * Makefile.am: Update "configure.in" comments. * PORTING: Likewise. * aoutx.h: Likewise. * configure.host: Likewise. * doc/bfdint.texi: Likewise. * targets.c: Likewise. * warning.m4: Likewise. * Makefile.in: Regenerate. gas/ * doc/internals.texi: Update "configure.in" comments. * acinclude.m4: Likewise. * config/tc-sparc.c: Likewise. ld/ * configure.ac: Update "configure.in" comments. * configure: Regenerate. commit 35eafcc71b8a54330704656fb6df0b5d6665ed15 Author: Alan Modra Date: Fri Jul 4 12:59:42 2014 +0930 Rename configure.in to configure.ac bfd/ * configure.ac: Rename from configure.in. * Makefile.in: Regenerate. * config.in: Regenerate. * doc/Makefile.in: Regenerate. opcodes/ * configure.ac: Rename from configure.in. * Makefile.in: Regenerate. * config.in: Regenerate. binutils/ * configure.ac: Rename from configure.in. * Makefile.in: Regenerate. * config.in: Regenerate. * doc/Makefile.in: Regenerate. gas/ * configure.ac: Rename from configure.in. * Makefile.in: Regenerate. * config.in: Regenerate. * doc/Makefile.in: Regenerate. gprof/ * configure.ac: Rename from configure.in. * configure.ac: Rename from configure.in. * Makefile.in: Regenerate. * gconfig.in: Regenerate. ld/ * configure.ac: Rename from configure.in. * Makefile.in: Regenerate. * config.in: Regenerate. commit 82b57a900fdac5664c678206348f403aa7ef53f0 Author: Alan Modra Date: Fri Jul 4 13:12:07 2014 +0930 Remove some more bfd/configure.in dependencies Missed from 2e98a7bd bfd/ * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Remove configure.in. * Makefile.in: Regenerate. gas/ * doc/Makefile.am (CONFIG_STATUS_DEPENDENCIES): Delete. * doc/Makefile.in: Regenerate. commit 2e98a7bd882356a23076ad4a51a251d9ab1ce070 Author: Alan Modra Date: Fri Jul 4 11:35:16 2014 +0930 Use modern AC_INIT in configure.in This removes usage of the obsolete AC_INIT and AM_INIT_AUTOMAKE in all binutils configure.in files. The BFD version is now in bfd/version.m4 rather than bfd/configure.in, which allows automake to automatically track this dependency. bfd/ * version.m4: New file. * configure.in: Include version.m4. (AC_INIT): Update. * Makefile.am (RELEASE): Delete. (bfdver.h): Depend on development.sh, use instead of RELEASE. * Makefile.in: Regenerate. * doc/Makefile.in: Regenerate. opcodes/ * configure.in: Include bfd/version.m4. (AC_INIT, AM_INIT_AUTOMAKE): Use modern form. (BFD_VERSION): Delete. * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Remove bfd/configure.in. * configure: Regenerate. * Makefile.in: Regenerate. binutils/ * configure.in: Include bfd/version.m4. (AC_INIT, AM_INIT_AUTOMAKE): Use modern form. (BFD_VERSION): Delete. * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Remove bfd/configure.in. * configure: Regenerate. * Makefile.in: Regenerate. * doc/Makefile.in: Regenerate. gas/ * configure.in: Include bfd/version.m4. (AC_INIT, AM_INIT_AUTOMAKE): Use modern form. (BFD_VERSION): Delete. * configure.com: Get bfd version from bfd/version.m4. * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Remove bfd/configure.in. * configure: Regenerate. * Makefile.in: Regenerate. * doc/Makefile.in: Regenerate. gprof/ * configure.in: Include bfd/version.m4. (AC_INIT, AM_INIT_AUTOMAKE): Use modern form. (BFD_VERSION): Delete. * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Remove bfd/configure.in. * configure: Regenerate. * Makefile.in: Regenerate. ld/ * configure.in: Include bfd/version.m4. (AC_INIT, AM_INIT_AUTOMAKE): Use modern form. (BFD_VERSION): Delete. * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Remove bfd/configure.in. * configure: Regenerate. * Makefile.in: Regenerate. commit 2900af2d0ad6f939640bbc497ea15f9fb6f3ff52 Author: Alan Modra Date: Fri Jul 4 11:33:38 2014 +0930 Update gold POTFILES.in for recent aarch64 and mips support. * po/POTFILES.in: Regenerate commit 1455e8c2e5fb8844716da9471a30acc1aec9eb1e Author: Alan Modra Date: Fri Jul 4 09:31:17 2014 +0930 daily update commit 4a5be5ee6838648fb92f7c835507a61789cd4ba5 Author: Marc Khouzam Date: Thu Jul 3 14:55:36 2014 -0400 Assign 'targerr' instead of 'targ' to gdb_stdtargerr. commit 8d112f9ecbe59b0eee3ec636a86891a6a82e4d9b Author: Tristan Gingold Date: Thu Jul 3 17:30:49 2014 +0200 Clarify doc on addr2line output. binutils/ * doc/binutils.texi: Clarify addr2line output. commit 92c3b204c714996d00cb93afdbfed554ed58fef0 Author: Andrew Burgess Date: Thu Jul 3 14:26:04 2014 +0100 Update email address in MAINTAINERS list. commit d215621ebe5a6b60dff2e60c788a0f761e3cb5bd Author: Alan Modra Date: Thu Jul 3 16:32:45 2014 +0930 Reload --as-needed libraries inside groups When a shared library appears within --start-group/--end-group ld may only discover a need for loading the library on the second or subsequent pass over archive libraries, as more objects are extracted. ld/ PR 17068 * ldlang.c (load_symbols): Always check flags.reload. (open_input_bfds): Always reload --as-needed shared libraries, not just when rescanning. * ldlang.h (struct lang_input_statement_flags): Update reload comment. * plugin.c (plugin_should_reload): Assume shared library arg. * plugin.h (plugin_should_reload): Update comment. ld/testsuite * ld-elf/pr17068.s: New. * ld-elf/pr17068a.s: New. * ld-elf/pr17068b.s: New. * ld-elf/pr17068c.s: New. * ld-elf/pr17068d.s: New. * ld-elf/pr17068e.s: New. * ld-elf/pr17068ez.s: New. * ld-elf/elf.exp: Run new test. commit fd48cee0093fef69608959d0f577c0c81fe24eec Author: Alan Modra Date: Thu Jul 3 09:31:38 2014 +0930 daily update commit 053a4d680b6b870079e7ba094b52a12a4861ce9b Author: Jing Yu Date: Wed Jul 2 16:21:23 2014 -0700 2014-07-02 Jing Yu Initial patch to enable gold aarch64 backend. This patch is just a skeleton which almost does nothing. It does not support ILP32 now. gold/ChangeLog: * aarch64.cc: New file * Makefile.am (TARGETSOURCES): Add aarch64.cc (ALL_TARGETOBJS): Add aarch64.$(OBJEXT) * Makefile.in: Regenerate. * configure.tgt: Add entries for aarch64*. * configure.ac: Likewise. * configure: Likewise. elfcpp/ChangeLog: * aarch64.h: New file. New enums for aarch64-elf64 relocations. * elfcpp.h (EM_AARCH64, SHT_AARCH64_ATTRIBUTES, PT_AARCH64_ARCHEXT, PT_AARCH64_UNWIND): New enum constant. commit 2b239efbec446a0c213710b7c5258f2926ef78a4 Author: Luis Machado Date: Wed Jul 2 11:59:02 2014 +0100 This testcase currently does not handle powerpc branches. It kinda does in a way, because the arm/aarch64 branch instruction is the same as powerpc's, but the target triplet pattern is not there. In summary, the testcase fails to locate the branch offset and causes a failure and the early termination of the test. The following patch adds a separate conditional block for powerpc (to keep things organized), allowing the testcase to continue. 2014-07-02 Luis Machado * gdb.trace/entry-values.exp: Handle powerpc-specific branch instruction. commit d1eca1e41ddae8c3cd925be827640de919301432 Author: Alan Modra Date: Wed Jul 2 15:07:18 2014 +0930 Taking an undefined function's address in an executable doesn't always mean you need to define a function symbol on plt code. If all references are in read-write sections, then using dynamic relocs is OK. bfd/ * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Clear pointer_equality_needed when !readonly_dynrelocs. * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise. ld/testsuite/ * ld-powerpc/ambiguousv1.d: Match symbol table too. * ld-powerpc/ambiguousv2.d: Likewise. * ld-powerpc/ambiguousv1b.d: New. * ld-powerpc/ambiguousv2b.d: New. * ld-powerpc/powerpc.exp: Run new tests. commit 9b11e3a7327f7b1fd5d40a6450a3cc323a78380c Author: Gary Benson Date: Tue Jul 1 15:07:24 2014 +0100 Remove unused Linux libthread_db callbacks gdb/proc-service.c includes several libthread_db callbacks that do not exist in gdb/gdbserver/proc-service.c. Other than in proc_service.h, there is no reference to any of these callbacks in any revision of nptl_db or linuxthreads_db in glibc's git repo so it seems likely that these functions have never been called. This commit removes them. gdb/ 2014-07-02 Gary Benson * proc-service.c (ps_xfer_memory): Update comment. (ps_pstop): Remove unused function. (ps_pcontinue): Likewise. (ps_lstop): Likewise. (ps_lcontinue): Likewise. (ps_lgetxregsize): Likewise. (ps_lgetxregs): Likewise. (ps_lsetxregs): Likewise. (ps_plog): Likewise. (ps_ptread): Likewise. (ps_ptwrite): Likewise. commit afb933145e2869c73c08db0995171d0d2e5b6296 Author: Alan Modra Date: Wed Jul 2 14:04:21 2014 +0930 Set DF_STATIC_TLS for PIEs If we can dlopen an object then DF_STATIC_TLS is relevant. * elf32-ppc.c (ppc_elf_check_relocs): Set DF_STATIC_TLS for PIEs too. * elf64-ppc.c (ppc64_elf_check_relocs): Likewise. commit 53a8cffa625b1b4fdf76e2dd0f0e9fc4b1bf0ab4 Author: Alan Modra Date: Wed Jul 2 09:31:18 2014 +0930 daily update commit cf363f183d9a87faeda74f33b58a6c4a22e7d1e2 Author: Mark Wielaard Date: Mon Jun 30 23:21:52 2014 +0200 Handle volatile array types in dwarf2read.c. read_tag_const_type propagates the cv-qualifier to the array element type, but read_tag_volatile_type didn't. Make sure that both cv-qualifiers that apply to array types are handled the same. gdb/ChangeLog * dwarf2read.c (add_array_cv_type): New function. (read_tag_const_type): Call add_array_cv_type for TYPE_CODE_ARRAY. (read_tag_volatile_type): Likewise. gdb/testsuite/ChangeLog * gdb.base/constvars.c (violent, violet, vips, virgen, vulgar, vulture, vilify, villar): New volatile array constants. (vindictive, vegetation): New const volatile array constants. * gdb.base/volatile.exp: Test volatile and const volatile array types. commit 82ae6c8d79c426e1b4d6f7b8d4be5292b3e9a8c5 Author: Tom Tromey Date: Sun Nov 18 19:24:22 2012 -0700 use cmd_sfunc_ftype and cmd_cfunc_ftype more This patch changes a few more spots to use either cmd_sfunc_ftype or cmd_cfunc_ftype, as appropriate. This is a bit cleaner. Tested by rebuilding. 2014-07-01 Tom Tromey * breakpoint.c (add_catch_command): Use cmd_sfunc_ftype. * breakpoint.h (add_catch_command): Use cmd_sfunc_ftype. * cli/cli-decode.c (cmd_cfunc_eq, add_cmd, add_prefix_cmd) (add_abbrev_prefix_cmd, add_info, add_com): Use cmd_cfunc_ftype. * command.h (cmd_cfunc_ftype): Move earlier. (add_cmd, add_prefix_cmd, add_abbrev_prefix_cmd, cmd_cfunc_eq) (add_com, add_info): Use cmd_cfunc_ftype. commit b6a1c03a9547590a35fccda9ae358fb1cfd8befa Author: Alan Modra Date: Tue Jul 1 20:43:14 2014 +0930 Reorganise struct bfd for better packing. Removes a field and a flag that are never set. bfd/ * bfd.c (struct bfd): Reorganise for better packing. Delete "ifd" field. Make "format", "direction" and "flags" bitfields. (HAS_LOAD_PAGE): Delete, renumber following flags. * bfd-in2.h: Regenerate. * coff-tic4x.c: Remove HAS_LOAD_PAGE from extra flags in target vecs. binutils/ * objdump.c (dump_bfd_header): Don't print HAS_LOAD_PAGE. commit 7341d5e22f1061016411734ba162d362ac5928db Author: Alan Modra Date: Tue Jul 1 19:32:25 2014 +0930 Add symbols for global entry stub, and report stats The undefined function symbols (with non-zero value) on global entry stubs are discarded by objdump when disassembling, so give objdump another symbol to mark the stubs. Also fixes a couple of bugs: - entry_section was set to .opd for ELFv2, which meant a hard error rather than a warning when _start wasn't defined. - global entry stubs were not built if they were the only type of stub in an executable. bfd/ * elf64-ppc.c (ppc_stub_type): Add ppc_stub_global_entry. (struct ppc_link_hash_table): Increase size of stub_count array. (build_global_entry_stubs): Emit symbol on global entry stub. (ppc64_elf_build_stubs): NULL check htab->brlt. Add global entry stub stats. ld/ * emultempl/ppc64elf.em (stub_added): Delete. (gld${EMULATION_NAME}_finish): Call ppc64_elf_build_stubs even when none of the usual stubs have been added. Only change entry_section for ELFv1. commit 2dc0e7b400e46f105960c0dfcd431013f0013c6a Author: Alan Modra Date: Tue Jul 1 18:10:25 2014 +0930 Don't include sys/param.h sys/param.h on recent versions of powerpc glibc ends up including asm/elf.h via asm/sigcontex.h. asm/elf.h defines R_PPC_* and R_PPC64_* macros, which clash with our include/elf/ppc.h and include/elf/ppc64.h. It turns out that no current source uses LD_PATHMAX, so there is no need for limits.h or sys/param.h, except for one occurrence of UINT_MAX. I don't have a quarrel with limits.h, but it seems unnecessary just for UINT_MAX. * sysdep.h: Don't include limits.h and sys/param.h. Don't include unistd.h twice. (LD_PATHMAX): Don't define. * ldlang.c (lang_common): Don't use UINT_MAX. commit 810d4e754dad3e5431399de7b5bacb831b899320 Author: Alan Modra Date: Tue Jul 1 13:06:20 2014 +0930 Linker foreign output format support for PowerPC64 ELFv2 Makes the ld srec tests pass. Uses a horrible scan through symbols to find ELF fields for symbol definitions, but the generic linker doesn't offer anything better. Might be slow. Anyway, sane people will link to ELF output then objcopy to convert formats. * elf64-ppc.c (abiversion, set_abiversion): Move earlier. (ppc64_elf_branch_reloc): Adjust addend for ELFv2 local offset. (ppc64_elf_set_toc): Set ".TOC." symbol value when using generic linker. (ppc64_elf_relocate_section): Disable ELFv2 function entry optimisation when --traditional-format. commit f36e88862f94c15a88fa27df7af906ad75a42e7f Author: Barney Stratford Date: Tue Jul 1 10:20:17 2014 +0100 Add support for the AVR Tiny series of microcontrollers. * archures.c: add avrtiny architecture for avr target. * bfd-in2.h: Regenerate. * cpu-avr.c (arch_info_struct): add avrtiny arch info. * elf32-avr.c (elf_avr_howto_table): new relocation R_AVR_LDS_STS_16 added for 16 bit LDS/STS instruction of avrtiny arch. (avr_reloc_map): reloc R_AVR_LDS_STS_16 is mapped to BFD_RELOC_AVR_LDS_STS_16. (bfd_elf_avr_final_write_processing): select machine number avrtiny arch. (elf32_avr_object_p): set machine number for avrtiny arch. * libbfd.h: Regenerate. * reloc.c: Add documentation for BFD_RELOC_AVR_LDS_STS_16 reloc. * config/tc-avr.c (mcu_types): Add avrtiny arch. Add avrtiny arch devices attiny4, attiny5, attiny9, attiny10, attiny20 and attiny40. (md_show_usage): Add avrtiny arch in usage message. (avr_operand): validate and issue error for invalid register for avrtiny. add new reloc exp for 16 bit lds/sts instruction. (md_apply_fix): check 16 bit lds/sts operand for out of range and encode. (md_assemble): check ISA for arch and issue diagnostic. * include/elf/avr.h (E_AVR_MACH_AVRTINY): define avrtiny machine number. (R_AVR_LDS_STS_16): define 16 bit lds/sts reloc number. * include/opcode/avr.h (AVR_ISA_TINY): define avrtiny specific ISA. (AVR_ISA_2xxxa): define ISA without LPM. (AVR_ISA_AVRTINY): define avrtiny arch ISA. Add doc for contraint used in 16 bit lds/sts. Adjust ISA group for icall, ijmp, pop and push. Add 16 bit lds/sts encoding and update 32 bit lds/sts constraints. * opcodes/avr-dis.c (avr_operand): Handle constraint j for 16 bit lds/sts. (print_insn_avr): do not select opcode if insn ISA is avrtiny and machine is not avrtiny. * Makefile.am (ALL_EMULATION_SOURCES): add avrtiny emulation source. (eavrtiny.c): add rules for avrtiny emulation source. * Makefile.in: Regenerate. * configure.tgt: Add avrtiny to avr target emulations. * scripttempl/avrtiny.sc: New file. linker script template for avrtiny arch. * emulparams/avrtiny.sh: New file. emulation parameters for avrtiny arch. commit ba8e7d1e24bc53269b5814c99a321783dab3812a Author: Michael Eager Date: Mon Jun 30 17:38:15 2014 -0700 Sim - Use long int format instead of int to avoid compiling warning 2014-07-01 Chen Gang * sim/microblaze/interp.c: Use long int format instead of int format to avoid compiling warnings. commit 422b1cb0912f88f0509f75b9fee055c8259c13be Author: Michael Eager Date: Tue Jan 7 09:15:48 2014 -0800 2014-01-07 Michael Eager * dwarf2read.c (read_structure_type): Set stub if ICC & length == 0. commit 9ef5ddf51cc4d5e9dfc779dea29d97047fa232bf Author: Alan Modra Date: Tue Jul 1 09:30:39 2014 +0930 daily update commit 961427268a863e614a79f25449e79d54696690ad Author: Tom Tromey Date: Thu Mar 28 11:08:31 2013 -0600 constify search_symbols This constifies the parameters to search_symbols and fixes up the fallout. Tested by rebuilding. 2014-06-30 Tom Tromey * symtab.c (operator_chars): Make parameters and return type const. (file_matches): Make "files" const. (struct search_symbols_data) : Now const. (search_symbols): Make "regexp" and "files" parameters const. Update. (symtab_symbol_info): Remove cast. (rbreak_command): Update. * symtab.h (search_symbols): Update. commit aebf9d247e4026189a0f612ee03c19cdf4bf86ac Author: Andreas Arnez Date: Thu Jun 26 17:21:08 2014 +0200 watchpoint-reuse-slot.exp: Correctly skip unsupported commands. The test case "watchpoint-reuse-slot.exp" yields a lot of failures on s390/s390x: all instances of awatch, rwatch, and hbreak are performed even though they aren't supported on these targets. This is because the test case ignores non-support error messages when probing for support of these commands, like: (gdb) rwatch buf.byte[0] Target does not support this type of hardware watchpoint. The patch adds handling for this case in the appropriate gdb_test_multiple invocations. gdb/testsuite/ * gdb.base/watchpoint-reuse-slot.exp: Handle the case that the target lacks support for awatch, rwatch, or hbreak. commit b00548197542a46df0e46d848ac61a00827943ea Author: Ulrich Drepper Date: Mon Jun 30 06:58:52 2014 -0400 lexsup.c (parse_args): Check whether provided SONAME is empty string. If yes, warn and ignore it. Don't overwrite valid SONAME with empty string. commit 3f201179cc5fe9c0b338fd545d26d1e2ed434f22 Author: Alan Modra Date: Mon Jun 30 10:12:59 2014 +0930 daily update commit 727d6f7cb02648cbd4428546c97a486667a7678d Author: Alan Modra Date: Sat Jun 28 09:30:39 2014 +0930 daily update commit a03f9b1acf6cb11689f053892919b8ab675713f8 Author: Alan Modra Date: Fri Jun 27 10:54:03 2014 +0930 Avoid cascading errors due to write_object_file change * config/obj-macho.c (obj_mach_o_set_symbol_qualifier): Don't set SYM_MACHO_FIELDS_NOT_VALIDATED after reporting an error. (obj_mach_o_frob_label): Avoid cascading errors. (obj_mach_o_frob_symbol): Don't set SYM_MACHO_FIELDS_NOT_VALIDATED. commit b67a2c6fd4862b79c04c254fe2ba37c180b73d60 Author: Yao Qi Date: Wed Jun 25 11:52:52 2014 +0800 Associate dummy_frame with ptid This patch is to add ptid into dummy_frame and extend frame_id to dummy_frame_id (which has a ptid field). With this change, GDB uses dummy_frame_id (thread ptid and frame_id) to find the dummy frames. Currently, dummy frames are looked up by frame_id, which isn't accurate in non-stop or multi-process mode. The test case gdb.multi/dummy-frame-restore.exp shows the problem and this patch can fix it. Test dummy-frame-restore.exp makes two inferiors stop at different functions, say, inferior 1 stops at f1 while inferior 2 stops at f2. Set a breakpoint to a function, do the inferior call in two inferiors, and GDB has two dummy frames of the same frame_id. When the inferior call is finished, GDB will look up a dummy frame from its stack/list and restore the inferior's regcache. Two inferiors are finished in different orders, the inferiors' states are restored differently, which is wrong. Running dummy-frame-restore.exp under un-patched GDB, we'll get two fails: FAIL: gdb.multi/dummy-frame-restore.exp: inf 2 first: after infcall: bt in inferior 2 FAIL: gdb.multi/dummy-frame-restore.exp: inf 2 first: after infcall: bt in inferior 1 With this patch applied, GDB will choose the correct dummy_frame to restore for a given inferior, because ptid is considered when looking up dummy frames. Two fails above are fixed. Regression tested on x86_64-linux, both native and gdbserver. gdb: 2014-06-27 Yao Qi * breakpoint.c (check_longjmp_breakpoint_for_call_dummy): Change parameter type to 'struct thread_info *'. Caller updated. * breakpoint.h (check_longjmp_breakpoint_for_call_dummy): Update declaration. * dummy-frame.c (struct dummy_frame_id): New. (dummy_frame_id_eq): New function. (struct dummy_frame) : Change its type to 'struct dummy_frame_id'. (dummy_frame_push): Add parameter ptid and save it in dummy_frame_id. (pop_dummy_frame_bpt): Use ptid of dummy_frame instead of inferior_ptid. (pop_dummy_frame): Assert that the ptid of dummy_frame equals to inferior_ptid. (lookup_dummy_frame): Change parameter type to 'struct dummy_frame_id *'. Callers updated. Call dummy_frame_id_eq instead of frame_id_eq. (dummy_frame_pop): Add parameter ptid. Callers updated. Update comments. Compose dummy_frame_id and pass it to lookup_dummy_frame. (dummy_frame_discard): Add parameter ptid. (dummy_frame_sniffer): Compose dummy_frame_id and call dummy_frame_id_eq instead of frame_id_eq. (fprint_dummy_frames): Print ptid. * dummy-frame.h: Remove comments. (dummy_frame_push): Add ptid in declaration. (dummy_frame_pop, dummy_frame_discard): Likewise. gdb/testsuite: 2014-06-27 Yao Qi * gdb.multi/dummy-frame-restore.exp: New. * gdb.multi/dummy-frame-restore.c: New. gdb/doc: 2014-06-27 Yao Qi * gdb.texinfo (Maintenance Commands): Update the output of 'maint print dummy-frames' command. commit 9393ab1c00601a01ec25bbe0d8dc8430f62c9c13 Author: Ludovic Courtès Date: Mon May 5 17:33:16 2014 +0200 PR external/{16327,16328}: Remove etc/configure.texi and etc/standards.texi. etc/ChangeLog 2014-06-27 Ludovic Courtès PR external/16327 PR external/16328 * Makefile.in (MAKEINFO, TEXI2DVI, TEXI2PDF, TEXI2HTML, DVIPS) (TEXIDIR, INFOFILES, DVIFILES, PDFFILES, HTMLFILES): Remove. (all): Remove dependency on 'info'. (install): Remove dependency on 'install-info'. (standards.info, standards.html, standards.dvi, standards.ps) (standards.pdf, configure.info, configure.dvi, configure.ps) (configure.pdf, configure.pdf): Remove. (info, install-info, html, install-html, dvi, pdf, install-pdf) clean, maintainer-clean, realclean): Remove body. * etc/configbuild.ein, etc/configbuild.fig, etc/configbuild.jin, etc/configbuild.tin, etc/configdev.ein, etc/configdev.fig, etc/configdev.jin, etc/configdev.tin, etc/configure.texi, etc/fdl.texi, etc/gnu-oids.texi, etc/make-stds.texi, etc/standards.texi: Remove. commit 7b5490456670ef187c1b7c07ba2e9e09512a6d70 Author: Alan Modra Date: Fri Jun 27 10:41:31 2014 +0930 Fix undefined symbol errors from mips.cc * symtab.cc (Symbol::should_add_dynsym_entry): Don't make inline. commit e2ca13570cb87f5257be8a19aa0bdc6e8b13c272 Author: Alan Modra Date: Fri Jun 27 09:30:38 2014 +0930 daily update commit 5b10184c5844524e59621dd40cefd1db69680f95 Author: Tom Tromey Date: Fri Dec 27 14:36:35 2013 -0700 constify error_no_arg This is a trivial patch to make error_no_arg take a const argument. 2014-06-26 Tom Tromey * cli/cli-cmds.c (error_no_arg): Make "why" const. * command.h (error_no_arg): Update. commit 069003265c89fab0c46c5a831c2beeec4bcfb501 Author: Tom Tromey Date: Thu Dec 26 22:31:32 2013 -0700 constify do_set_command and do_show_command This changes do_set_command and do_show_command to take const arguments. 2014-06-26 Tom Tromey * cli/cli-setshow.c (do_set_command): Make "arg" const. (do_show_command): Make "arg" const. * cli/cli-setshow.h (do_set_command, do_show_command): Update. commit c2bcbb1d04bb46a130f2c84de05cbbdccc0645fc Author: Tom Tromey Date: Mon Apr 15 08:59:03 2013 -0600 constify get_bookmark and goto_bookmark This makes arguments to to_get_bookmark and to_goto_bookmark const and fixes the fallout. Tested by rebuilding. The only thing of note is the new split between cmd_record_goto and record_goto -- basically separating the CLI function from a new internal API, to allow const propagation. 2014-06-26 Tom Tromey * record-full.c (record_full_get_bookmark): Make "args" const. (record_full_goto_bookmark): Make "raw_bookmark" const. * record.c (record_goto): New function. (cmd_record_goto): Use it. Now static. * record.h (record_goto): Declare. (cmd_record_goto): Remove declaration. * target-delegates.c: Rebuild. * target.h (struct target_ops) : Make parameter const. commit 9cbe5fff2b47da85dbc628bdc8c6a85d5344749a Author: Tom Tromey Date: Wed Mar 27 14:14:26 2013 -0600 constify to_load This makes the argument to the target_ops to_load method "const", and fixes up the fallout. Tested by rebuilding all the affected files. 2014-06-26 Tom Tromey * defs.h (generic_load): Update. * m32r-rom.c (m32r_load_gen): Make "filename" const. * monitor.c (monitor_load): Make "args" const. * remote-m32r-sdi.c (m32r_load): Make "args" const. * remote-mips.c (mips_load_srec, pmon_load_fast): Make "args" const. (mips_load): Make "file" const. * remote-sim.c (gdbsim_load): Make "args" const. * remote.c (remote_load): Make "name" const. * symfile.c (generic_load): Make "args" const. * target-delegates.c: Rebuild. * target.c (target_load): Make "arg" const. (debug_to_load): Make "args" const. * target.h (struct target_ops) : Make parameter const. (target_load): Update. commit 34a68019ccc3879801a291a00bad5bc10558bf5d Author: Tom Tromey Date: Mon Jun 16 03:17:19 2014 -0600 fix memory errors with demangled name hash This fixes a regression that Jan pointed out. The bug is that some names were allocated by dwarf2read on the objfile obstack, but then passed to SYMBOL_SET_NAMES with copy_name=0. This violates the invariant that the names must have a lifetime tied to the lifetime of the BFD. The fix is to allocate names on the per-BFD obstack. I looked at all callers, direct or indirect, of SYMBOL_SET_NAMES that pass copy_name=0. Note that only the ELF and DWARF readers do this; other symbol readers were never updated (and perhaps cannot be, depending on the details of the formats). This is why the patch is relatively small. Built and regtested on x86-64 Fedora 20. 2014-06-26 Tom Tromey PR symtab/16902: * dwarf2read.c (fixup_go_packaging, dwarf2_compute_name) (dwarf2_physname, read_partial_die) (guess_partial_die_structure_name, fixup_partial_die) (guess_full_die_structure_name, anonymous_struct_prefix) (dwarf2_name): Use per-BFD obstack. commit 334ac421efca80df2f95960d917ea9cb5823fb18 Author: Erik Akermann Date: Thu Jun 26 14:10:48 2014 +0100 This adds the ability to the strings program to display strings that contain \n and \r characters. * strings.c: Add -w/--include-all-whitespace option to include any whitespace character in the displayed strings. * NEWS: Mention the new feature. * doc/binutils.texi (strings): Document the new command line option. commit 6ddf779d8ed3d9411976716e2b617c2aa1b9c6c6 Author: Philippe De Muyter Date: Thu Jun 26 13:18:04 2014 +0100 Fix a compile time warning on 32-bit hosts. * or1k-desc.h (spr_field_masks): Add U suffix to the end of long constants. commit eeb14e5a5b378450ca2ed139e76f317f491f4613 Author: Linda Zhang Date: Thu Jun 26 12:18:39 2014 +0100 Change the default behaviour of the PE targeted linker so that timestamps are inserted. This is for compatibility with other, non-GNU tools. Deterministic binaries can still be created by using the new --no-insert-timestamp command line option. * emultempl/pe.em: Initialise insert_timestamp to true. Add a --no-insert-timestamp command line option. * emultempl/pep.em: Likewise. * ld.texinfo: Document that --insert-timestamp is enabled by default and that it now has an inverse command line option. * NEWS: Mention the new behaviour. commit df565f326e62eacf41fb880f1acc65b9fdb5052c Author: Nick Clifton Date: Thu Jun 26 09:32:25 2014 +0100 Fixes part of a problem reading deliberately non-conforming ELF binaries - where a note segment is present but no note section. * readelf.c (process_note_sections): If there are no note sections try processing note segments instead. commit efc889c1a86826b6619485bf379467daaea1ad3e Author: Yao Qi Date: Tue Jun 24 21:47:14 2014 +0800 Move local variables to inner block dummy_frame_sniffer has two local variables dummyframe and this_id, but they are only used in the if block below. This patch is to move them into the inner block. gdb: 2014-06-26 Yao Qi * dummy-frame.c (dummy_frame_sniffer): Move local variables dummyframe and this_id into inner block below. commit 60d77146a249ae9b51d7ce98930cdbedb2cfa352 Author: Nick Clifton Date: Thu Jun 26 09:12:55 2014 +0100 Fixes a problem displaying the contents of a binary containing corrupt debug information, specifically a DW_AT_MIPS_linkage_name attribute that has a numeric value rather than a string value. PR binutils/16949 * dwarf2.c (is_str_attr): New function. (find_abstract_instance_name): Use it to determine when an attribute has a string value. commit 4395285e33e6d67c8a82db744ebfd041034b005a Author: Yao Qi Date: Thu Jun 26 14:25:22 2014 +0800 Typo fix in signal_pass initialization When I read the code, I happen to see this: signal_pass = (unsigned char *) xmalloc (sizeof (signal_program[0]) * numsigs); ^^^^^^^^^^^^^^ It is a typo, and this patch is to fix it. gdb: 2014-06-26 Yao Qi * infrun.c (_initialize_infrun): Replace "signal_program[0]" with "signal_pass[0]" in the initialization of signal_pass. commit cbac4466d7e683855ff72897919791442d5ef756 Author: Alan Modra Date: Thu Jun 26 09:30:37 2014 +0930 daily update commit 9d069ac37fb121b2794681480f8691d5699de9f7 Author: Nick Clifton Date: Wed Jun 25 16:35:58 2014 +0100 Fixes to allow a toolchain configured with --enable-all to build on a 32-bit host. * Makefile.am (ALL_EMULATION_SOURCES): Move ei386pep.c from here... (ALL_64_EMULATION_SOURCES): ... to here. (ALL_EMUL_EXTRA_OFILES): Move pep-dll.o from here... (ALL_64_EMUL_EXTRA_OFILES): New. ... to here. * configure.in (EMUL_EXTRA_OFILES): Include ALL_64_EMUL_EXTRA_OFILES when making a 64-bit enabled build. * Makefile.in: Regenerate. * configure: Regenerate. commit 28bf260962673c554b926a013af27c77fe82870c Author: Kyle McMartin Date: Wed Jun 25 10:57:45 2014 -0400 ld/arm: adjust offsets in tls-gdierelax2.d Addition of DF_STATIC_TLS in eea6dad2 results in the addition of flags to the dynamic section, which in turn changes these addresses. Fix them up to match their new positions. ld/testsuite/Changelog: 2014-06-24 Kyle McMartin * ld-arm/tls-gdierelax2.d: Fix expected offsets. commit aef929023e3f9c68126564a96431935d35ce032e Author: Markus Metzger Date: Tue May 20 15:53:44 2014 +0200 btrace: pretend we're not replaying when generating a core file When generating a core file using the "generate-core-file" command while replaying with the btrace record target, we won't be able to access all registers and all memory. This leads to the following assertion: gdb/regcache.c:1034: internal-error: regcache_raw_supply: Assertion `regnum >= 0 && regnum < regcache->descr->nr_raw_registers' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) FAIL: gdb.btrace/gcore.exp: generate-core-file core (GDB internal error) Resyncing due to internal error. Pretend that we are not replaying while generating a core file. This will forward fetch and store registers as well as xfer memory calls to the target beneath. gdb/ * record-btrace.c (record_btrace_generating_corefile) (record_btrace_prepare_to_generate_core) (record_btrace_done_generating_core): New. (record_btrace_xfer_partial, record_btrace_fetch_registers) (record_btrace_store_registers, record_btrace_prepare_to_store): Forward request when generating a core file. (record_btrace_open): Set record_btrace_generating_corefile to zero. (init_record_btrace_ops): Set to_prepare_to_generate_core and to_done_generating_core. testsuite/ * gdb.btrace/gcore.exp: New. commit 5fff78c4e0d938bb4fc1375792ffae02a134943c Author: Markus Metzger Date: Tue May 20 15:22:53 2014 +0200 gcore, target: allow target to prepare/cleanup for/after core file generation Add new target functions to_prepare_to_generate_core and to_done_generating_core that are called before and after generating a core file, respectively. This allows targets to prepare for core file generation and to clean up afterwards. gdb/ * target.h (target_ops) : New. (target_prepare_to_generate_core, target_done_generating_core): New. * target.c (target_prepare_to_generate_core) (target_done_generating_core): New. * target-delegates.c: Regenerate. * gcore.c: (write_gcore_file): Rename to ... (write_gcore_file_1): ...this. (write_gcore_file): Call target_prepare_to_generate_core and target_done_generating_core. commit 1d1f1ccb331f1fe9825c3bb6f6231a3aeb560d6f Author: Markus Metzger Date: Thu May 22 08:47:42 2014 +0200 make_corefile_notes: have caller free returned memory The various make_corefile_notes implementations for gdbarch as well as target currently make an xfree cleanup on the data they return. This causes problems when trying to put a TRY_CATCH around the make_corefile_notes call. Specifically, we get a stale cleanup error in restore_my_cleanups. Omit the make_cleanup and have the caller free the memory. gdb/ * fbsd-nat.c (fbsd_make_corefile_notes): Remove make_cleanup call. * gcore.c (write_gcore_file): Free memory returned from make_corefile_notes. * linux-tdep.c (linux_make_corefile_notes): Remove make_cleanup call. * procfs.c (procfs_make_note_section): Remove make_cleanup call. commit 31f0c4c1c653b59ce8552402ecc1b3249273f2de Author: Alan Modra Date: Wed Jun 25 09:30:37 2014 +0930 daily update commit cb818dbff5d914dccffadfdba68e32a324aa4334 Author: Cary Coutant Date: Tue Jun 24 12:17:09 2014 -0700 Fix dwp to allow intermediate .dwp files with no .debug_types sections. gold/ * dwp.cc (Dwo_file::read): Allow files with no .debug_types sections. (Dwo_file::sized_read_unit_index): Likewise. commit f179cf97a071940bfce6879aa59dbac66ffca391 Author: Eli Zaretskii Date: Tue Jun 24 19:28:40 2014 +0300 Minor improvements in manual indexing. * doc/gdb.texinfo (Screen Size): Add more index entries. commit 15bfcc77681f423fd872815eb140c450d69b8a60 Author: Alan Modra Date: Tue Jun 24 13:23:04 2014 +0930 Don't strip section defining _SDA_BASE_ Prior to 93d1b056 _SDA_BASE_ used to be defined in a linker script output section. Now _SDA_BASE_ is defined in an input section that is subject to being stripped. If the section is stripped we don't output the symbol, which results in --emit-relocs trying to emit relocs with dangling references to _SDA_BASE_. * elf32-ppc.c (ppc_elf_size_dynamic_sections): Arrange to keep .sdata/.sdata2 when _SDA_BASE_/_SDA2_BASE_ should be output for --emit-relocs. commit 3343ef86879b9348bb038bc7adecb665236ca4d8 Author: Yao Qi Date: Fri May 30 16:08:10 2014 +0800 Skip 'bx reg' on arm-linux In arm-tdep.c, arm_skip_stub is installed to gdbarch skip_trampoline_code, but in arm-linux-tdep.c, find_solib_trampoline_target is installed to skip_trampoline_code. That means gdb configured for arm-linux target doesn't recognize some arm specific trampolines or stubs. Beside handling generic solib trampoline, gdb for arm-linux target should be able to handle arm specific trampolines. This patch is to skip arm specific stubs, if any, and as a fallback, skip the generic solib trampoline. gdb: 2014-06-24 Yao Qi * arm-linux-tdep.c (arm_linux_skip_trampoline_code): New. (arm_linux_init_abi): Set skip_trampoline_code with gdbarch_skip_trampoline_code instead of find_solib_trampoline_target. commit 18d18ac8105647241a4e24a3a4d0196955666e73 Author: Yao Qi Date: Fri May 30 16:06:32 2014 +0800 Apply stub unwinder to 'bx reg' trampoline In target arm-none-eabi, prologue unwinder is used for trampoline 'bx reg'. However, in target arm-linux, exidx unwinder is selected for trampoline at first, which is not expected. The main function and the trampoline is, 0x00009dfc : push {r4, r5, r6, r7, lr} ...... 0x0000ac30 : ldrdeq r3, [r1], -r8 0x0000ac34: bx r2 0x0000ac36: bx r4 and .ARM.exidx is: 0x9dfc
: @0xb404 Compact model index: 1 0x97 vsp = r7 0x20 vsp = vsp + 132 0x3f vsp = vsp + 256 0x80 0xf0 pop {r8, r9, r10, r11} 0xab pop {r4, r5, r6, r7, r14} 0xac38 <__aeabi_drsub>: 0x1 [cantunwind] Trampolines 'bx r2' and 'bx r4' doesn't belong to main, but the exidx for main is still selected form them because there is no end address of each exidx entry. Instead of teaching exidx unwinder ignore this trampoline (which looks complicated and error prone), I decide to let stub unwinder to handle trampoline, because stub undwinder is installed before exidx unwinder, and this trampoline can be regarded as a stub too. This patch is to add the code to match 'bx reg' trampoline in the sniffer of stub unwinder. gdb: 2014-06-24 Yao Qi * arm-tdep.c (arm_stub_unwind_sniffer): Return 1 if arm_skip_bx_reg returns non-zero. commit 80d8d3908b7ef70c325fcdfb455bf5dbc2c68e16 Author: Yao Qi Date: Fri May 30 15:51:45 2014 +0800 Skip 'bx reg' trampoline on arm-none-eabi After this patch applied to GCC, a new trampoline is generated but GDB doesn't recognize it. This patch is to teach GDB to understand this trampoline. See details about this trampoline and the heuristics in the comments. gdb: 2014-06-24 Yao Qi * arm-tdep.c (arm_skip_bx_reg): New function. (arm_skip_stub): Call arm_skip_bx_reg. commit 03e46fbd3584d08285cb80e5ca235c48d2fa849c Author: Alan Modra Date: Tue Jun 24 09:31:18 2014 +0930 daily update commit 9810d34d76d19f63d4bbe7390fa36ceb85d10cde Author: Sasa Stankovic Date: Mon Jun 23 11:52:34 2014 -0700 gold/ * mips.cc: New file. * Makefile.am (TARGETSOURCES): Add mips.cc (ALL_TARGETOBJS): Add mips.$(OBJEXT) * configure.tgt: Add entries for mips*. * configure.ac: Likewise. * Makefile.in: Regenerate. * configure: Likewise. commit 6a18a01c33083320b86274bdb84e81bc76b286f9 Author: Don Breazeal Date: Mon Jun 23 11:24:43 2014 -0700 Add myself as write-after-approval maintainer. commit 8e9db26e299e5c9d03102d7c9551113db18719b1 Author: Pedro Alves Date: Mon Jun 23 16:44:04 2014 +0100 x86 Linux watchpoints: Couldn't write debug register: Invalid argument. This patch fixes this on x86 Linux: (gdb) watch *buf@2 Hardware watchpoint 8: *buf@2 (gdb) si 0x00000000004005a7 34 for (i = 0; i < 100000; i++); /* stepi line */ (gdb) del Delete all breakpoints? (y or n) y (gdb) watch *(buf+1)@1 Hardware watchpoint 9: *(buf+1)@1 (gdb) si 0x00000000004005a7 in main () at ../../../src/gdb/testsuite/gdb.base/watchpoint-reuse-slot.c:34 34 for (i = 0; i < 100000; i++); /* stepi line */ Couldn't write debug register: Invalid argument. (gdb) In the example above the debug registers are being switched from this state: CONTROL (DR7): 0000000000050101 STATUS (DR6): 0000000000000000 DR0: addr=0x0000000000601040, ref.count=1 DR1: addr=0x0000000000000000, ref.count=0 DR2: addr=0x0000000000000000, ref.count=0 DR3: addr=0x0000000000000000, ref.count=0 to this: CONTROL (DR7): 0000000000010101 STATUS (DR6): 0000000000000000 DR0: addr=0x0000000000601041, ref.count=1 DR1: addr=0x0000000000000000, ref.count=0 DR2: addr=0x0000000000000000, ref.count=0 DR3: addr=0x0000000000000000, ref.count=0 That is, before, DR7 was setup for watching a 2 byte region starting at what's in DR0 (0x601040). And after, DR7 is setup for watching a 1 byte region starting at what's in DR0 (0x601041). We always write DR0..DR3 before DR7, because if we enable a slot's bits in DR7, you need to have already written the corresponding DR0..DR3 registers -- the kernel rejects the DR7 write with EINVAL otherwise. The error shown above is the opposite scenario. When we try to write 0x601041 to DR0, DR7's bits still indicate intent of watching a 2-byte region. That DR0/DR7 combination is invalid, because 0x601041 is unaligned. To watch two bytes, we'd have to use two slots. So the kernel errors out with EINVAL. Fix this by always first clearing DR7, then writing DR0..DR3, and then setting DR7's bits. A little optimization -- if we're disabling the last watchpoint, then we can clear DR7 just once. The changes to nat/i386-dregs.c make that easier to detect, and as bonus, they make it a little easier to make sense of DR7 in the debug logs, as we no longer need to remember we're seeing stale bits. Tested on x86_64 Fedora 20, native and GDBserver. This adds an exhaustive test that switches between many different combinations of watchpoint types and addresses and widths. gdb/ 2014-06-23 Pedro Alves * amd64-linux-nat.c (amd64_linux_prepare_to_resume): Clear DR_CONTROL before setting DR0..DR3. * i386-linux-nat.c (i386_linux_prepare_to_resume): Likewise. * nat/i386-dregs.c (i386_remove_aligned_watchpoint): Clear all bits of DR_CONTROL related to the debug register slot being disabled. If all slots are vacant, clear local slowdown as well, and assert DR_CONTROL is 0. gdb/gdbserver/ 2014-06-23 Pedro Alves * linux-x86-low.c (x86_linux_prepare_to_resume): Clear DR_CONTROL before setting DR0..DR3. gdb/testsuite/ 2014-06-23 Pedro Alves * gdb.base/watchpoint-reuse-slot.c: New file. * gdb.base/watchpoint-reuse-slot.exp: New file. commit 70afc5b72d36dabf0a152e219ac981b2b45c138a Author: Siva Chandra Date: Wed Jun 18 03:46:37 2014 -0700 Align behavior of xmethod commands with that of pretty-printer commands. Currently, the xmethod commands lookup xmethod matchers in the current progspace even if the locus regular expression matches the progspace's filename. Pretty printer commands do not match the current progspace's filename. gdb/ * python/lib/gdb/command/xmethods.py (get_method_matchers_in_loci): Lookup xmethod matchers in the current progspace only if the string "progspace" matches LOCUS_RE. gdb/testsuite * gdb.python/py-xmethods.exp: Use "progspace" instead of the progspace's filename in 'info', 'enable' and 'disable' command tests. commit b972bd9c133c8acd3f5ce8d05a4fdfc85aee2c15 Author: Jan Kratochvil Date: Mon Jun 23 08:24:36 2014 +0200 testsuite: Use istarget and is_lp64_target for 3 testcases. On x86_64 with -m32 or on i686 it will: Running ./gdb.arch/amd64-stap-special-operands.exp ... gdb compile failed, amd64-stap-triplet.c: Assembler messages: amd64-stap-triplet.c:35: Error: bad register name `%rbp' amd64-stap-triplet.c:38: Error: bad register name `%rsp' amd64-stap-triplet.c:40: Error: bad register name `%rbp)' amd64-stap-triplet.c:41: Error: bad register name `%rsi' amd64-stap-triplet.c:42: Error: bad register name `%rbp)' /tmp/ccjOdmpl.s:63: Error: bad register name `%rbp' 2014-06-23 Jan Kratochvil * gdb.arch/amd64-stap-special-operands.exp: Use is_lp64_target. * gdb.arch/amd64-stap-optional-prefix.exp: Likewise. * gdb.dwarf2/dw2-error.exp: Use istarget and is_lp64_target. Message-ID: <20140622211401.GA3716@host2.jankratochvil.net> commit 6bd23fd2c74eed21a7824f0d1bd2785b96c32c7c Author: Alan Modra Date: Mon Jun 23 09:30:34 2014 +0930 daily update commit d17c74c1d41a077567291e1990f4309df65b3f4d Author: Alan Modra Date: Sun Jun 22 09:30:37 2014 +0930 daily update commit aed4ab287aa846ad40cf1eedb2c4bbdfb4bdd5e5 Author: Alan Modra Date: Sat Jun 21 09:30:43 2014 +0930 daily update commit 886aba9eff0eba428e634f579e8999b67da01b57 Author: Philippe De Muyter Date: Sat Jun 21 09:16:15 2014 +0930 Fix fallout from 6d00b590 * targets.c (_bfd_target_vector): Add missing #ifdef BFD64 for a number of targets. commit 840ed64d1c1335328e0c4763dc5041d3cdb85c90 Author: Jan Kratochvil Date: Fri Jun 20 17:43:56 2014 +0200 Fix --with-system-readline with readline-6.3 patch 5 I have filed now: --with-system-readline uses bundled readline include files https://sourceware.org/bugzilla/show_bug.cgi?id=17077 To see any effect of the patch below you have to do: rm -rf readline Otherwise readline include files get used the bundled ones from GDB which are currently 6.2 while system readline may be 6.3 already. You also have to use system readline-6.3 including its upstream patch: [Bug-readline] Readline-6.3 Official Patch 5 http://lists.gnu.org/archive/html/bug-readline/2014-04/msg00018.html Message-ID: <140415125618.AA57598.SM@caleb.ins.cwru.edu> In short it happens on Fedora Rawhide since: readline-6.3-1.fc21 https://koji.fedoraproject.org/koji/buildinfo?buildID=538941 The error is: ../../gdb/tui/tui-io.c:132:1: error: 'Function' is deprecated [-Werror=deprecated-declarations] static Function *tui_old_rl_getc_function; ^ ../../gdb/tui/tui-io.c:133:1: error: 'VFunction' is deprecated [-Werror=deprecated-declarations] static VFunction *tui_old_rl_redisplay_function; ^ ../../gdb/tui/tui-io.c:134:1: error: 'VFunction' is deprecated [-Werror=deprecated-declarations] static VFunction *tui_old_rl_prep_terminal; ^ ../../gdb/tui/tui-io.c:135:1: error: 'VFunction' is deprecated [-Werror=deprecated-declarations] static VFunction *tui_old_rl_deprep_terminal; ^ It is since bash change: lib/readline/rltypedefs.h - remove old Function/VFunction/CPFunction/CPPFunction typedefs as suggested by Tom Tromey The new typedefs used below are present in readline/rltypedefs.h since: git://git.savannah.gnu.org/bash.git commit 28ef6c316f1aff914bb95ac09787a3c83c1815fd Date: Fri Apr 6 19:14:31 2001 +0000 gdb/ 2014-06-20 Jan Kratochvil Fix --with-system-readline with readline-6.3 patch 5. * tui/tui-io.c (tui_old_rl_getc_function, tui_old_rl_redisplay_function) (tui_old_rl_prep_terminal, tui_old_rl_deprep_terminal): Use rl_*_t types. Message-ID: <20140620105004.GA22236@host2.jankratochvil.net> commit 26f2dc3065ea8621b898fe5b98ef19afbf02aaf7 Author: Tom Tromey Date: Fri Jun 13 13:08:23 2014 -0600 make obstack object allocators more type-safe This changes OBSTACK_ZALLOC and OBSTACK_CALLOC to cast their value to the correct type. This is more type-safe and also is more in line with the other object-allocation macros in libiberty.h. Making this change revealed one trivial error in dwarf2read.c. On the whole that seems pretty good to me. Tested by rebuilding. 2014-06-20 Tom Tromey * dwarf2read.c (dw2_get_real_path): Use correct type in OBSTACK_CALLOC. * gdb_obstack.h (OBSTACK_ZALLOC, OBSTACK_CALLOC): Cast result. commit 698b3e08336ffac76d45d9ddb6a85ae166098140 Author: Gary Benson Date: Fri Jun 20 15:41:28 2014 +0100 Fix mingw32 build on x86-64 RHEL 6.5 This commit fixes the mingw32 build on x86-64 RHEL 6.5. gdb/gdbserver/ 2014-06-20 Gary Benson * configure.ac (AC_REPLACE_FUNCS) : Removed. * configure: Regenerated. * config.in: Likewise. commit 125f8a3ddedd413a2290dae011f0bed9ffc78278 Author: Gary Benson Date: Thu Jun 19 14:46:38 2014 +0100 Move shared native target specific code to gdb/nat https://sourceware.org/gdb/wiki/Common describes the following directory structure: gdb/nat/ Native target backend files. Code that interfaces with the host debug API. E.g., ptrace code, Windows debug API code, procfs code should go here. gdb/target/ Host-independent, target vector specific code (target_ops). gdb/common/ All other shared code. This commit moves all native target backend files currently in gdb/common to gdb/nat. gdb/ 2014-06-20 Gary Benson * common/gdb_thread_db.h: Moved to nat. All includes updated. * common/glibc_thread_db.h: Likewise. * common/i386-cpuid.h: Likewise. * common/i386-gcc-cpuid.h: Likewise. * common/linux-btrace.h: Likewise. * common/linux-osdata.h: Likewise. * common/linux-procfs.h: Likewise. * common/linux-ptrace.h: Likewise. * common/mips-linux-watch.h: Likewise. * common/linux-btrace.c: Moved to nat. * common/linux-osdata.c: Likewise. * common/linux-procfs.c: Likewise. * common/linux-ptrace.c: Likewise. * common/mips-linux-watch.c: Likewise. * nat/gdb_thread_db.h: Moved from common. * nat/glibc_thread_db.h: Likewise. * nat/i386-cpuid.h: Likewise. * nat/i386-gcc-cpuid.h: Likewise. * nat/linux-btrace.c: Likewise. * nat/linux-btrace.h: Likewise. * nat/linux-osdata.c: Likewise. * nat/linux-osdata.h: Likewise. * nat/linux-procfs.c: Likewise. * nat/linux-procfs.h: Likewise. * nat/linux-ptrace.c: Likewise. * nat/linux-ptrace.h: Likewise. * nat/mips-linux-watch.c: Likewise. * nat/mips-linux-watch.h: Likewise. * Makefile.in (HFILES_NO_SRCDIR): Reflect new locations. (object file files): Reordered. * gdb/copyright.py (EXCLUDE_LIST): Reflect new location of glibc_thread_db.h. gdb/gdbserver/ 2014-06-20 Gary Benson * Makefile.in (SFILES): Update locations for files moved from common to nat. (object file files): Reordered. gdb/testsuite/ 2014-06-20 Gary Benson * gdb.arch/i386-avx.exp: Fix include file location. * gdb.arch/i386-sse.exp: Likewise. commit 42995dbda646ff0291a36f83a7f1a9f45e3fda8a Author: Gary Benson Date: Thu Jun 19 11:55:26 2014 +0100 Vectorize gdbserver x86 debug register accessors This commit makes gdbserver access the x86 debug register accessor functions via the same function vector as GDB proper. This removes a chunk of conditional code that was previously in i386-{nat,low}.h and leaves a single macro as the only GDB/gdbserver difference in nat/i386-dregs.c. gdb/ 2014-06-20 Gary Benson * i386-nat.h (debug_hw_points): Moved to nat/i386-dregs.c. (i386_dr_low_type): Moved to nat/i386-dregs.h. (i386_dr_low): Likewise. (i386_dr_low_can_set_addr): Moved to nat/i386-dregs.c. (i386_dr_low_set_addr): Likewise. (i386_dr_low_get_addr): Likewise. (i386_dr_low_can_set_control): Likewise. (i386_dr_low_set_control): Likewise. (i386_dr_low_get_control): Likewise. (i386_dr_low_get_status): Likewise. (i386_get_debug_register_length): Likewise. * nat/i386-dregs.h (i386_dr_low_type): Moved from i386-nat.h. (i386_dr_low): Likewise. * nat/i386-dregs.c (i386-low.h): Remove include. (i386-nat.h): Likewise. (nat/i386-dregs.h): New include. (i386_dr_low_can_set_addr): Moved from i386-nat.h. (i386_dr_low_set_addr): Likewise. (i386_dr_low_get_addr): Likewise. (i386_dr_low_can_set_control): Likewise. (i386_dr_low_set_control): Likewise. (i386_dr_low_get_control): Likewise. (i386_dr_low_get_status): Likewise. (i386_get_debug_register_length): Likewise. (debug_hw_points): Likewise. gdb/gdbserver/ 2014-06-20 Gary Benson * i386-low.h (i386_dr_low_can_set_addr): Removed. (i386_dr_low_set_addr): Likewise. (i386_dr_low_get_addr): Likewise. (i386_dr_low_can_set_control): Likewise. (i386_dr_low_set_control): Likewise. (i386_dr_low_get_control): Likewise. (i386_dr_low_get_status): Likewise. (i386_get_debug_register_length): Likewise. * linux-x86-low.c (i386_dr_low_set_addr): Changed signature. Made static. (i386_dr_low_get_addr): Likewise. (i386_dr_low_set_control): Likewise. (i386_dr_low_get_control): Likewise. (i386_dr_low_get_status): Likewise. (i386_dr_low): New global variable. * win32-i386-low.c (i386_dr_low_set_addr): Changed signature. Made static. (i386_dr_low_get_addr): Likewise. (i386_dr_low_set_control): Likewise. (i386_dr_low_get_control): Likewise. (i386_dr_low_get_status): Likewise. (i386_dr_low): New global variable. commit e1d2394b50c7b174f48e38efb398034d75e67c99 Author: Marcus Shawcroft Date: Fri Jun 20 11:48:15 2014 +0100 Fix gdbserver cross build. The recent libiberty patch caused issues when cross building gdbserver. The Makefile ends invoking the build machine's "ar" instead of the --host version: ar ./libiberty.a \ ./regex.o (...) ar: illegal option -- . Usage: ar [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file... ar -M [ * configure.ac: Invoke. AC_CHECK_TOOL(AR, ar). * Makefile.in (AR, AR_FLAGS): Define. * configure: Regenerate. commit eea6dad2b3ae91189caa91145dd133bae0398d21 Author: Kyle McMartin Date: Fri Jun 20 11:14:09 2014 +0100 Similarly to the AArch64 patch, set DF_STATIC_TLS for consistency with other architectures when we emit IE relocs in a shared library. * elf32-arm.c (elf32_arm_check_relocs): Set DF_STATIC_TLS when emitting initial-exec relocs when not linking an executable. commit db988f621f38b0123334c7e481deb113b9b5b9bf Author: Alan Modra Date: Fri Jun 20 09:30:42 2014 +0930 daily update commit 3ed9baed43c5253b2e88e5576773957432e268c4 Author: Iain Buclaw Date: Thu Jun 19 19:29:26 2014 +0100 Initial pass at D language expression parser support. gdb/ 2014-06-05 Iain Buclaw * Makefile.in (SFILES): Add d-exp.y. (YYFILES): Add d-exp.c. (YYOBJ): Add d-exp.o. (local-maintainer-clean): Delete d-exp.c. * d-exp.y: New file. * d-lang.h (d_parse): New declaration. (d_error): New declaration. * d-lang.c (d_op_print_tab): Add entry for BINOP_CONCAT and BINOP_EXP. Set BINOP_EQUAL and BINOP_NOTEQUAL to same precedence as other PREC_ORDER operators. (d_language_defn): Use d_parse, d_error instead of c_parse, c_error. gdb/testsuite/ 2014-06-05 Iain Buclaw * gdb.dlang/expression.exp: New file. commit 78c164b00654c7f422694035bc0e1817f90c86b5 Author: Yao Qi Date: Wed Jun 18 22:03:20 2014 +0800 Remove any_running Function any_running isn't used. This patch is to remove it. Rebuild GDB for linux and mingw. gdb: 2014-06-19 Yao Qi * gdbthread.h (any_running): Remove the declaration. * thread.c (any_running): Remove. commit f6e29b6ec0a4fd410ddaaddacf045c4cb4e890f2 Author: Yao Qi Date: Wed Jun 18 22:00:54 2014 +0800 Use enum thread_state This patch is to change field state's type to 'enum thread_state', and replace RUNNING with THREAD_RUNNING and STOPPED with THREAD_STOPPED respectively in comments. gdb: 2014-06-19 Yao Qi * gdbthread.h (struct thread_info) : Change its type to 'enum thread_state'. Update comments. commit 034f788c5ec1e5b20fae3b6efc7fe961631e014d Author: Pedro Alves Date: Thu Jun 19 11:59:03 2014 +0100 Fix next over threaded execl with "set scheduler-locking step". Running gdb.threads/thread-execl.exp with scheduler-locking set to "step" reveals a problem: (gdb) next^M [Thread 0x7ffff7fda700 (LWP 27168) exited]^M [New LWP 27168]^M [Thread 0x7ffff74ee700 (LWP 27174) exited]^M process 27168 is executing new program: /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.threads/thread-execl^M [Thread debugging using libthread_db enabled]^M Using host libthread_db library "/lib64/libthread_db.so.1".^M infrun.c:5225: internal-error: switch_back_to_stepped_thread: Assertion `!schedlock_applies (1)' failed.^M A problem internal to GDB has been detected,^M further debugging may prove unreliable.^M Quit this debugging session? (y or n) FAIL: gdb.threads/thread-execl.exp: schedlock step: get to main in new image (GDB internal error) The assertion is correct. The issue is that GDB is mistakenly trying to switch back to an exited thread, that was previously stepping when it exited. This is exactly the sort of thing the test wants to make sure doesn't happen: # Now set a breakpoint at `main', and step over the execl call. The # breakpoint at main should be reached. GDB should not try to revert # back to the old thread from the old image and resume stepping it We don't see this bug with schedlock off only because a different sequence of events makes GDB manage to delete the thread instead of marking it exited. This particular internal error can be fixed by making the loop over all threads in switch_back_to_stepped_thread skip exited threads. But, looking over other ALL_THREADS users, all either can or should be skipping exited threads too. So for simplicity, this patch replaces ALL_THREADS with a new macro that skips exited threads itself, and updates everything to use it. Tested on x86_64 Fedora 20. gdb/ 2014-06-19 Pedro Alves * gdbthread.h (ALL_THREADS): Delete. (ALL_NON_EXITED_THREADS): New macro. * btrace.c (btrace_free_objfile): Use ALL_NON_EXITED_THREADS instead of ALL_THREADS. * infrun.c (find_thread_needs_step_over) (switch_back_to_stepped_thread): Use ALL_NON_EXITED_THREADS instead of ALL_THREADS. * record-btrace.c (record_btrace_open) (record_btrace_stop_recording, record_btrace_close) (record_btrace_is_replaying, record_btrace_resume) (record_btrace_find_thread_to_move, record_btrace_wait): Likewise. * remote.c (append_pending_thread_resumptions): Likewise. * thread.c (thread_apply_all_command): Likewise. gdb/testsuite/ 2014-06-19 Pedro Alves * gdb.threads/thread-execl.exp (do_test): New procedure, factored out from ... (top level): ... here. Iterate running tests under different scheduler-locking settings. commit 46e3325277e604face2848eec78247826b94d5c9 Author: Gary Benson Date: Thu Jun 19 10:54:15 2014 +0100 Directly call i386-dregs functions Three target_ops functions in i386-nat.c call other local target_ops functions. This commit changes those functions to call the functions in i386-dregs.c directly. gdb/ 2014-06-19 Gary Benson * i386-nat.c (i386_stopped_by_watchpoint): Use i386_dr_stopped_by_watchpoint. (i386_insert_hw_breakpoint): Use i386_dr_insert_watchpoint. (i386_remove_hw_breakpoint): Use i386_dr_remove_watchpoint. commit 3a8ee006fb19680c444993a99a4fe3a64dd40a39 Author: Gary Benson Date: Thu Jun 19 10:53:12 2014 +0100 Create nat/i386-dregs.c This commit moves code to be shared from i386-{nat,low}.[ch] into a new file, nat/i386-dregs.c. gdb/ 2014-06-19 Gary Benson * nat/i386-dregs.c: New file. * Makefile.in (i386-dregs.o): New rule. * config/i386/cygwin.mh (NATDEPFILES): Add i386-dregs.o. * config/i386/cygwin64.mh (NATDEPFILES): Likewise. * config/i386/darwin.mh (NATDEPFILES): Likewise. * config/i386/fbsd.mh (NATDEPFILES): Likewise. * config/i386/fbsd64.mh (NATDEPFILES): Likewise. * config/i386/go32.mh (NATDEPFILES): Likewise. * config/i386/linux.mh (NATDEPFILES): Likewise. * config/i386/linux64.mh (NATDEPFILES): Likewise. * config/i386/mingw.mh (NATDEPFILES): Likewise. * config/i386/mingw64.mh (NATDEPFILES): Likewise. * i386-nat.h (debug_hw_points): New declaration. * i386-nat.c (breakpoint.h): Remove include. (command.h): Likewise. (target.h): Likewise. (gdb_assert.h): Likewise. (debug_hw_points): Made nonstatic. (debug_printf): Now in i386-dregs.c. (TARGET_HAS_DR_LEN_8): Likewise. (DR_CONTROL_SHIFT): Likewise. (DR_CONTROL_SIZE): Likewise. (DR_RW_EXECUTE): Likewise. (DR_RW_WRITE): Likewise. (DR_RW_READ): Likewise. (DR_RW_IORW): Likewise. (DR_LEN_1): Likewise. (DR_LEN_2): Likewise. (DR_LEN_4): Likewise. (DR_LEN_8): Likewise. (DR_LOCAL_ENABLE_SHIFT): Likewise. (DR_GLOBAL_ENABLE_SHIFT): Likewise. (DR_ENABLE_SIZE): Likewise. (DR_LOCAL_SLOWDOWN): Likewise. (DR_GLOBAL_SLOWDOWN): Likewise. (DR_CONTROL_RESERVED): Likewise. (I386_DR_CONTROL_MASK): Likewise. (I386_DR_VACANT): Likewise. (I386_DR_LOCAL_ENABLE): Likewise. (I386_DR_GLOBAL_ENABLE): Likewise. (I386_DR_DISABLE): Likewise. (I386_DR_SET_RW_LEN): Likewise. (I386_DR_GET_RW_LEN): Likewise. (I386_DR_WATCH_HIT): Likewise. (i386_wp_op_t): Likewise. (i386_show_dr): Likewise. (i386_length_and_rw_bits): Likewise. (i386_insert_aligned_watchpoint): Likewise. (i386_remove_aligned_watchpoint): Likewise. (i386_handle_nonaligned_watchpoint): Likewise. (i386_update_inferior_debug_regs): Likewise. (i386_insert_watchpoint): Use i386_dr_insert_watchpoint. (i386_remove_watchpoint): Use i386_dr_remove_watchpoint. (i386_region_ok_for_watchpoint): Use i386_dr_region_ok_for_watchpoint. (i386_stopped_data_address): Use i386_dr_stopped_data_address. gdb/gdbserver/ 2014-06-19 Gary Benson * Makefile.in (i386-dregs.o): New rule. * configure.srv: Add i386-dregs.o to all targets using i386-low.o. * i386-low.c (target.h): Remove include. (TARGET_HAS_DR_LEN_8): Now in i386-dregs.c. (DR_CONTROL_SHIFT): Likewise. (DR_CONTROL_SIZE): Likewise. (DR_RW_EXECUTE): Likewise. (DR_RW_WRITE): Likewise. (DR_RW_READ): Likewise. (DR_RW_IORW): Likewise. (DR_LEN_1): Likewise. (DR_LEN_2): Likewise. (DR_LEN_4): Likewise. (DR_LEN_8): Likewise. (DR_LOCAL_ENABLE_SHIFT): Likewise. (DR_GLOBAL_ENABLE_SHIFT): Likewise. (DR_ENABLE_SIZE): Likewise. (DR_LOCAL_SLOWDOWN): Likewise. (DR_GLOBAL_SLOWDOWN): Likewise. (DR_CONTROL_RESERVED): Likewise. (I386_DR_CONTROL_MASK): Likewise. (I386_DR_VACANT): Likewise. (I386_DR_LOCAL_ENABLE): Likewise. (I386_DR_GLOBAL_ENABLE): Likewise. (I386_DR_DISABLE): Likewise. (I386_DR_SET_RW_LEN): Likewise. (I386_DR_GET_RW_LEN): Likewise. (I386_DR_WATCH_HIT): Likewise. (i386_wp_op_t): Likewise. (i386_show_dr): Likewise. (i386_length_and_rw_bits): Likewise. (i386_insert_aligned_watchpoint): Likewise. (i386_remove_aligned_watchpoint): Likewise. (i386_handle_nonaligned_watchpoint): Likewise. i386_update_inferior_debug_regs(): Likewise. (i386_dr_insert_watchpoint): Likewise. (i386_dr_remove_watchpoint): Likewise. (i386_dr_region_ok_for_watchpoint): Likewise. (i386_dr_stopped_data_address): Likewise. (i386_dr_stopped_by_watchpoint): Likewise. commit 322a8e06b9675df9dfaaae956538b6cc8a695d4a Author: Gary Benson Date: Thu Jun 19 10:50:20 2014 +0100 Refactor i386_{insert,remove}_hw_breakpoint This commit refactors i386_{insert,remove}_hw_breakpoint to call i386_{insert,remove}_watchpoint rather than duplicating functionality. gdb/ 2014-06-19 Gary Benson * i386-nat.c (i386_insert_hw_breakpoint): Use i386_insert_watchpoint. (i386_remove_hw_breakpoint): Use i386_remove_watchpoint. commit 8f26655c9e3a038159ce4e6f4ad027fd40a99333 Author: Gary Benson Date: Wed Jun 18 15:17:02 2014 +0100 Partially revert 4be83cc2b28ea09aa8ff789839e6520df60836f8 The above commit did two things: 1) A number of functions were renamed and made nonstatic. 2) A number of other functions were renamed only. This commit reverts #1 but not #2. In addition, prototypes for functions now remade static have been removed from i386-dregs.h. gdb/ 2014-06-19 Gary Benson * i386-nat.c (i386_dr_show): Renamed to i386_show_dr and made static. All uses updated. (i386_dr_length_and_rw_bits): Renamed to i386_length_and_rw_bits and made static. All uses updated. (i386_dr_insert_aligned_watchpoint): Renamed to i386_insert_aligned_watchpoint and made static. All uses updated. (i386_dr_remove_aligned_watchpoint): Renamed to i386_remove_aligned_watchpoint and made static. All uses updated. (i386_dr_update_inferior_debug_regs): Renamed to i386_update_inferior_debug_regs and made static. All uses updated. * nat/i386-dregs.h (i386_dr_show): Removed. (i386_dr_length_and_rw_bits): Likewise. (i386_dr_insert_aligned_watchpoint): Likewise. (i386_dr_remove_aligned_watchpoint): Likewise. (i386_dr_update_inferior_debug_regs): Likewise. gdb/gdbserver/ 2014-06-19 Gary Benson * i386-low.c (i386_dr_show): Renamed to i386_show_dr and made static. All uses updated. (i386_dr_length_and_rw_bits): Renamed to i386_length_and_rw_bits and made static. All uses updated. (i386_dr_insert_aligned_watchpoint): Renamed to i386_insert_aligned_watchpoint and made static. All uses updated. (i386_dr_remove_aligned_watchpoint): Renamed to i386_remove_aligned_watchpoint and made static. All uses updated. (i386_dr_update_inferior_debug_regs): Renamed to i386_update_inferior_debug_regs and made static. All uses updated. commit 992c7d700f99002ed455b0588488e0e42719ba81 Author: Gary Benson Date: Thu Jun 19 09:13:57 2014 +0100 Demangler crash handler This commit wraps calls to the demangler with a segmentation fault handler. The first time a segmentation fault is caught a core file is generated and the user is prompted to file a bug and offered the choice to exit or to continue their GDB session. A maintainence option is provided to allow the user to disable the crash handler if required. gdb/ 2014-06-19 Gary Benson * configure.ac [AC_CHECK_FUNCS] : New check. * configure: Regenerate. * config.in: Likewise. * main.c (signal.h): New include. (setup_alternate_signal_stack): New function. (captured_main): Call the above. * cp-support.c (signal.h): New include. (catch_demangler_crashes): New flag. (SIGJMP_BUF): New define. (SIGSETJMP): Likewise. (SIGLONGJMP): Likewise. (gdb_demangle_jmp_buf): New static global. (gdb_demangle_attempt_core_dump): Likewise. (gdb_demangle_signal_handler): New function. (gdb_demangle): If catch_demangler_crashes is set, install the above signal handler before calling bfd_demangle, and restore the original signal handler afterwards. Display the offending symbol and call demangler_warning the first time a segmentation fault is caught. (_initialize_cp_support): New maint set/show command. gdb/doc/ 2014-06-19 Gary Benson * gdb.texinfo (Maintenance Commands): Document new "maint set/show catch-demangler-crashes" option. commit eae7090bea9d7f129be7dddf89f8e177cdb2003d Author: Gary Benson Date: Thu Jun 19 09:12:26 2014 +0100 Refactor and expose core-dumping functionality This commit exposes the functions that dump core outside utils.c. can_dump_core gains a new parameter, "limit_kind", to allow either the soft or hard limit to be checked, and its printing has separated into the new function warn_cant_dump_core. The new function can_dump_core_warn does what can_dump_core previously did (print and warn). gdb/ 2014-06-19 Gary Benson * utils.h (resource_limit_kind): New enum. (can_dump_core): New declaration. (warn_cant_dump_core): Likewise. (dump_core): Likewise. * utils.c (dump_core): Made nonstatic. Added new parameter "limit_kind". (can_dump_core): Made nonstatic. Moved printing code to... (warn_cant_dump_core): New function. (can_dump_core_warn): Likewise. (internal_vproblem): Replace calls to can_dump_core with calls to can_dump_core_warn. Supply new argument to each. commit 57fcfb1b202c09bf83e0e98dfb1d518e7be71d2c Author: Gary Benson Date: Thu Jun 19 09:10:44 2014 +0100 Add new internal problem for demangler warnings This commit adds a new category of internal problem for demangler warnings. Demangler warnings behave in much the same way as internal warnings except that they do not create core files and no option to change this is presented to the user. gdb/ 2014-06-19 Gary Benson * utils.h (demangler_vwarning): New declaration. (demangler_warning): Likewise. * utils.c (struct internal_problem) : New field. : Likewise (internal_error_problem): Add values for above new fields. (internal_warning_problem): Likewise. (demangler_warning_problem): New static global. (demangler_vwarning): New function. (demangler_warning): Likewise. (add_internal_problem_command): Selectively add commands. (_initialize_utils): New internal problem command. * maint.c (maintenance_demangler_warning): New function. (_initialize_maint_cmds): New command. gdb/doc/ 2014-06-19 Gary Benson * gdb.texinfo (Maintenance Commands): Document new "maint demangler-warning" command and new "maint set/show demangler-warning" option. commit 45371d0ceec9e0771306060c49f378eea01b1269 Author: Luis Machado Date: Thu Jun 19 07:07:48 2014 +0100 The testcase was generating DW_AT_high_pc and DW_AT_low_pc entries with type DW_FORM_string, which is wrong. GDB was using that information to load data as strings, and then proceeded to use the string pointers as addresses. Even then, the test was passing just fine, because we were lucky enough to have the low_pc string pointer smaller than the high_pc string pointer. Two issues are fixed. The first one is the DW_FORM_string type. The second one is adjusting the addresses so that they are non-zero, since GDB doesn't like seeing 0 in these fields due to a check contained in dwarf2_get_pc_bounds: if (low == 0 && !dwarf2_per_objfile->has_section_at_zero) return 0; With both fixes, the testcase passes deterministically. 2014-06-19 Luis Machado * gdb.cp/nsalias.exp: Set type of low_pc and high_pc entries to DW_FORM_addr and use non-zero addresses. commit da58fb67f2f9fa8ff22591a0eede8804eb59743e Author: Alan Modra Date: Thu Jun 19 09:31:16 2014 +0930 daily update commit 827dfb62b3a0162007942fe1cd1fd0411c547405 Author: DJ Delorie Date: Wed Jun 18 17:16:30 2014 -0400 [rx] Make .B suffix optional when possible. * config/rx-parse.y (BSET, BCLR, BTST, BNOT, BMCMD): Make .B suffix optional. commit 1804dbce5a7c0298a98dcedde14ab4d432fad754 Author: Andreas Tobler Date: Wed Jun 18 21:58:19 2014 +0200 ld/ARM: Add target arm*b-*-freebsd*, update target arm*-*-freebsd*. ld/ChangeLog: 2014-06-18 Andreas Tobler * configure.tgt (arm*-*-freebsd*): Update targ_extra_emuls. (arm*b-*-freebsd*): Add target. * emulparams/armelfb_fbsd.sh: Added. * emulparams/armelf_fbsd.sh: Updated. * Makefile.am (ALL_EMULATION_SOURCES): Add earmelfb_fbsd.c. * Makefile.in: Regenerate. commit 17a40b44e2aa89d2df08897ea05a42e1afedd06a Author: Tom Tromey Date: Wed Jun 11 08:02:48 2014 -0600 make common_block const This changes general_symbol_info to make "common_block" const. 2014-06-18 Tom Tromey * f-valprint.c (info_common_command_for_block): Update. * symtab.h (struct general_symbol_info) : Now const. commit 346d1dfebdbc5b7c8ce7d84f9250cbb8f4ec3e6c Author: Tom Tromey Date: Tue Jun 10 13:11:19 2014 -0600 constify some blockvector APIs Generally, the blockvector ought to be readonly. So, this patch makes the blockvector const in the symtab, and also changes various blockvector APIs to be const. This patch has a couple of spots that cast away const. I consider these to be ok because they occur in mdebugread and are used while constructing the blockvector. I have added comments at these spots. 2014-06-18 Tom Tromey * symtab.h (struct symtab) : Now const. * ada-lang.c (ada_add_global_exceptions): Update. * buildsym.c (augment_type_symtab): Update. * dwarf2read.c (dw2_lookup_symbol): Update. * jit.c (finalize_symtab): Update. * jv-lang.c (add_class_symtab_symbol): Update. * mdebugread.c (parse_symbol, add_block, sort_blocks, new_symtab): Update. * objfiles.c (objfile_relocate1): Update. * psymtab.c (lookup_symbol_aux_psymtabs) (maintenance_check_psymtabs): Update. * python/py-symtab.c (stpy_global_block, stpy_static_block): Update. * spu-tdep.c (spu_catch_start): Update. * symmisc.c (dump_symtab_1): Update. * symtab.c (lookup_global_symbol_from_objfile) (lookup_symbol_aux_objfile, lookup_symbol_aux_quick) (basic_lookup_transparent_type_quick) (basic_lookup_transparent_type, find_pc_sect_symtab) (find_pc_sect_line, search_symbols): Update. * block.c (find_block_in_blockvector): Make "bl" const. (blockvector_for_pc_sect, blockvector_for_pc): Make return type const. (blockvector_contains_pc): Make "bv" const. (block_for_pc_sect): Update. * block.h (blockvector_for_pc, blockvector_for_pc_sect) (blockvector_contains_pc): Update. * breakpoint.c (resolve_sal_pc): Update. * inline-frame.c (block_starting_point_at): Update. commit 1834676b5f9a7f425b68d181da85f96fe246e03b Author: Tom Tromey Date: Mon Apr 15 10:22:12 2013 -0600 constify complete_line This changes complete_line to take a const parameter. 2014-06-18 Tom Tromey * completer.c (complete_line): Make "line_buffer" const. * completer.h (complete_line): Update. commit ac1a991b1c00891d29607a6f97d98d66312af83f Author: Tom Tromey Date: Thu Mar 28 11:09:08 2013 -0600 remove unneeded cast in symtab.c This removes an unneeded const cast from symtab.c:add_macro_name. 2014-06-18 Tom Tromey * symtab.c (add_macro_name): Remove unneeded cast. commit 5bc98e5269423c49d5543079c824f551db4028f0 Author: Tom Tromey Date: Wed Mar 27 10:35:35 2013 -0600 constify parse_cli_boolean_value This changes a parameter of parse_cli_boolean_value to be const. 2014-06-18 Tom Tromey * cli/cli-setshow.h (parse_cli_boolean_value): Update. * cli/cli-setshow.c (parse_cli_boolean_value): Make "arg" const. commit 8236def8eb5276731a00eb21c2e687e4484aeb59 Author: Tom Tromey Date: Tue Jun 10 11:25:18 2014 -0600 constify probe.c function This constifies an argument to info_probes_for_ops. 2014-06-18 Tom Tromey * probe.c (info_probes_for_ops): Make "arg" const. * probe.h (info_probes_for_ops): Update. commit 3977b71f1dfd04b6ac2c14e1405ce251c31a38aa Author: Tom Tromey Date: Tue Mar 12 09:51:37 2013 -0600 constify struct block in some places This makes some spots in gdb, particularly general_symbol_info, use a "const struct block", then fixes the fallout. The justification is that, ordinarily, blocks ought to be readonly. Note though that we can't add "const" in the blockvector due to block relocation. This can be done once blocks are made independent of the program space. 2014-06-18 Tom Tromey * varobj.c (varobj_create): Update. * valops.c (value_of_this): Update. * tracepoint.c (add_local_symbols, scope_info): Update. * symtab.h (struct general_symbol_info) : Now const. * symtab.c (skip_prologue_sal) (default_make_symbol_completion_list_break_on) (skip_prologue_using_sal): Update. * stack.h (iterate_over_block_locals) (iterate_over_block_local_vars): Update. * stack.c (print_frame_args): Update. (iterate_over_block_locals, iterate_over_block_local_vars): Make parameter const. (get_selected_block): Make return type const. * python/py-frame.c (frapy_block): Update. * python/py-block.c (gdbpy_block_for_pc): Update. * p-exp.y (%union) : Now const. * mi/mi-cmd-stack.c (list_args_or_locals): Update. * mdebugread.c (mylookup_symbol, parse_procedure): Update. * m2-exp.y (%union) : Now const. * linespec.c (get_current_search_block): Make return type const. (create_sals_line_offset, find_label_symbols): Update. * inline-frame.c (inline_frame_sniffer, skip_inline_frames): Update. (block_starting_point_at): Make "block" const. * infrun.c (insert_exception_resume_breakpoint): Make "b" const. (check_exception_resume): Update. * guile/scm-frame.c (gdbscm_frame_block): Update. * guile/scm-block.c (gdbscm_lookup_block): Update. * frame.h (get_frame_block): Update. (get_selected_block): Make return type const. * frame.c (frame_id_inner): Update. * f-valprint.c (info_common_command_for_block) (info_common_command): Update. * dwarf2loc.c (dwarf2_find_location_expression) (dwarf_expr_frame_base, dwarf2_compile_expr_to_ax) (locexpr_describe_location_piece): Update. * c-exp.y (%union) : Now const. * breakpoint.c (resolve_sal_pc): Update. * blockframe.c (get_frame_block):Make return type const. (get_pc_function_start, get_frame_function, find_pc_sect_function) (block_innermost_frame): Update. * block.h (blockvector_for_pc, blockvector_for_pc_sect) (block_for_pc, block_for_pc_sect): Update. * block.c (blockvector_for_pc_sect, blockvector_for_pc): Make 'pblock' const. (block_for_pc_sect, block_for_pc): Make return type const. * ax-gdb.c (gen_expr): Update. * alpha-mdebug-tdep.c (find_proc_desc): Update. * ada-lang.c (ada_read_renaming_var_value): Make 'block' const. (ada_make_symbol_completion_list, ada_add_exceptions_from_frame) (ada_read_var_value): Update. * ada-exp.y (struct name_info) : Now const. (%union): Likewise. (block_lookup): Constify. commit 5d376983ca914e1cf36f4968cc87957f9033ebcd Author: Siva Chandra Date: Thu Jun 5 07:03:56 2014 -0700 Make xmethods tests not to depend on inferior IO. gdb/testsuite/ PR gdb/17017 * gdb.python/py-xmethods.cc: Add global function call counters and increment them in their respective functions. Remove "cout" statements. * gdb.python/py-xmethods.exp: Make tests check the global function call counters instead of depending on inferior IO. commit 5171def394398d2a3cc6583747e2f19602f0e1da Author: Gary Benson Date: Mon Jun 16 15:19:21 2014 +0100 Move macros from i386-{nat,low}.c to i386-{nat,low}.h This commit moves macros required by the soon-to-be-created nat/i386-dregs.c into i386-{nat,low}.h. commit b9228891286aec649c0c53d9b2eff0d5bea7f642 Author: Gary Benson Date: Mon Jun 16 12:18:41 2014 +0100 Create nat/i386-dregs.h This commit moves code to be shared from i386-{nat,low}.[ch] into a new file, nat/i386-dregs.h. gdb/ 2014-06-18 Gary Benson * nat/i386-dregs.h: New file. * Makefile.in (HFILES_NO_SRCDIR): Add the above. * i386-nat.h (i386-dregs.h): New include. (DR_FIRSTADDR): Now in i386-dregs.h. (DR_LASTADDR): Likewise. (DR_NADDR): Likewise. (DR_STATUS): Likewise. (DR_CONTROL): Likewise. (i386_debug_reg_state): Likewise. * i386-nat.c (ALL_DEBUG_REGISTERS): Likewise. gdb/gdbserver/ 2014-06-18 Gary Benson * i386-low.h (i386-dregs.h): New include. (DR_FIRSTADDR): Now in i386-dregs.h. (DR_LASTADDR): Likewise. (DR_NADDR): Likewise. (DR_STATUS): Likewise. (DR_CONTROL): Likewise. (i386_debug_reg_state): Likewise. (i386_dr_insert_watchpoint): Likewise. (i386_dr_remove_watchpoint): Likewise. (i386_dr_region_ok_for_watchpoint): Likewise. (i386_dr_stopped_data_address): Likewise. (i386_dr_stopped_by_watchpoint): Likewise. * i386-low.c (ALL_DEBUG_REGISTERS): Likewise. commit a1aa2221cbe340d23c6abf4d68cb509aa16cf8c0 Author: Luis Machado Date: Wed Jun 18 10:25:47 2014 +0100 Symptom: Using the test program gdb.base/foll-fork.c, with follow-fork-mode set to "child" and detach-on-fork set to "off", stepping or running past the fork call results in the child process running to completion, when it should just finish the single step. In addition, the breakpoint is not removed from the parent process, so if it is resumed it receives a SIGTRAP. Cause: No matter what the setting for detach-on-fork, when stepping past a fork, the single-step breakpoint (step_resume_breakpoint) is not handled correctly in the parent. The SR breakpoint is cloned for the child process, but before the clone is associated with the child it is treated as a duplicate of the original, associated wth the parent. This results in the insertion state of the original SR breakpoint and the clone being "swapped" by breakpoint.c:update_global_location_list, so that the clone is marked as inserted. In the case where the parent is not detached, the two breakpoints remain in that state. The breakpoint is never inserted in the child, because although the cloned SR breakpoint is associated with the child, it is marked as inserted. When the child is resumed, it runs to completion. The breakpoint is never removed from the parent, so that if it is resumed after the child exits, it gets a SIGTRAP. Here is the sequence of events: 1) handle_inferior_event: FORK event is recognized. 2) handle_inferior_event: detach_breakpoints removes all breakpoints from the child. 3) follow_fork: the parent SR breakpoint is cloned. Part of this procedure is to call update_global_location_list, which swaps the insertion state of the original and cloned SR breakpoints as part of ensuring that duplicate breakpoints are only inserted once. At this point the original SR breakpoint is not marked as inserted, and the clone is. The breakpoint is actually inserted in the parent but not the child. 4) follow_fork: the original breakpoint is deleted by calling delete_step_resume_breakpoint. Since the original is not marked as inserted, the actual breakpoint remains in the parent process. update_global_location_list is called again as part of the deletion. The clone is still associated with the parent, but since it is marked as enabled and inserted, the breakpoint is left in the parent. 5) follow_fork: if detach-on-fork is 'on', the actual breakpoint will be removed from the parent in target_detach, based on the cloned breakpoint still associated with the parent. Then the clone is no longer marked as inserted. In follow_inferior_reset_breakpoints the clone is associated with the child, and can be inserted. If detach-on-fork is 'off', the actual breakpoint in the parent is never removed (although the breakpoint had been deleted from the list). Since the clone continues to be marked 'inserted', the SR breakpoint is never inserted in the child. Fix: Set the cloned breakpoint as disabled from the moment it is created. This is done by modifying clone_momentary_breakpoint to take an additional argument, LOC_ENABLED, which is used as the value of the bp_location->enabled member. The clone must be disabled at that point because clone_momentary_breakpoint calls update_global_location_list, which will swap treat the clone as a duplicate of the original breakpoint if it is enabled. All the calls to clone_momentary_breakpoint had to be modified to pass '1' or '0'. I looked at implementing an enum for the enabled member, but concluded that readability would suffer because there are so many places it is used as a boolean, e.g. "if (bl->enabled)". In follow_inferior_reset_breakpoints the clone is set to enabled once it has been associated with the child process. With this, the bp_location 'inserted' member is maintained correctly throughout the follow-fork procedure and the behavior is as expected. The same treatment is given to the exception_resume_breakpoint when following a fork. Testing: Ran 'make check' on Linux x64. Along with the fix above, the coverage of the follow-fork test gdb.base/foll-fork.exp was expanded to: 1) cover all the combinations of values for follow-fork-mode and detach-on-fork 2) make sure that both user breakpoints and single-step breakpoints are propagated correctly to the child 3) check that the inferior list has the expected contents after following the fork. 4) check that unfollowed, undetached inferiors can be resumed. gdb/ 2014-06-18 Don Breazeal * breakpoint.c (set_longjmp_breakpoint): Call momentary_breakpoint_from_master with additional argument. (set_longjmp_breakpoint_for_call_dummy): Call momentary_breakpoint_from_master with additional argument. (set_std_terminate_breakpoint): Call momentary_breakpoint_from_master with additional argument. (momentary_breakpoint_from_master): Add argument to function definition and use it to initialize structure member flag. (clone_momentary_breakpoint): Call momentary_breakpoint_from_master with additional argument. * infrun.c (follow_inferior_reset_breakpoints): Clear structure member flags set in momentary_breakpoint_from_master. gdb/testsuite/ 2014-06-18 Don Breazeal * gdb.base/foll-fork.exp (default_fork_parent_follow): Deleted procedure. (explicit_fork_parent_follow): Deleted procedure. (explicit_fork_child_follow): Deleted procedure. (test_follow_fork): New procedure. (do_fork_tests): Replace calls to deleted procedures with calls to test_follow_fork and reset GDB for subsequent procedure calls. commit 4be83cc2b28ea09aa8ff789839e6520df60836f8 Author: Gary Benson Date: Mon Jun 16 11:06:43 2014 +0100 Rename functions and make nonstatic as necessary This commit renames the functions that are to be shared. Functions to be shared that were static are made nonstatic. gdb/ 2014-06-18 Gary Benson * i386-nat.c (i386_show_dr): Renamed to i386_dr_show and made nonstatic. All uses updated. (i386_length_and_rw_bits): Renamed to i386_dr_length_and_rw_bits and made nonstatic. All uses updated. (i386_insert_aligned_watchpoint): Renamed to i386_dr_insert_aligned_watchpoint and made nonstatic. All uses updated. (i386_remove_aligned_watchpoint): Renamed to i386_dr_remove_aligned_watchpoint and made nonstatic. All uses updated. (i386_update_inferior_debug_regs): Renamed to i386_dr_update_inferior_debug_regs and made nonstatic. All uses updated. gdb/gdbserver/ 2014-06-18 Gary Benson * i386-low.h (i386_low_insert_watchpoint): Renamed to i386_dr_insert_watchpoint. (i386_low_remove_watchpoint): Renamed to i386_dr_remove_watchpoint. (i386_low_region_ok_for_watchpoint): Renamed to i386_dr_region_ok_for_watchpoint. (i386_low_stopped_data_address): Renamed to i386_dr_stopped_data_address. (i386_low_stopped_by_watchpoint): Renamed to i386_dr_stopped_by_watchpoint. * i386-low.c (i386_show_dr): Renamed to i386_dr_show and made nonstatic. All uses updated. (i386_length_and_rw_bits): Renamed to i386_dr_length_and_rw_bits and made nonstatic. All uses updated. (i386_insert_aligned_watchpoint): Renamed to i386_dr_insert_aligned_watchpoint and made nonstatic. All uses updated. (i386_remove_aligned_watchpoint): Renamed to i386_dr_remove_aligned_watchpoint and made nonstatic. All uses updated. (i386_update_inferior_debug_regs): Renamed to i386_dr_update_inferior_debug_regs and made nonstatic. All uses updated. (i386_low_insert_watchpoint): Renamed to i386_dr_insert_watchpoint. All uses updated. (i386_low_remove_watchpoint): Renamed to i386_dr_remove_watchpoint. All uses updated. (i386_low_region_ok_for_watchpoint): Renamed to i386_dr_region_ok_for_watchpoint. All uses updated. (i386_low_stopped_data_address): Renamed to i386_dr_stopped_data_address. All uses updated. (i386_low_stopped_by_watchpoint): Renamed to i386_dr_stopped_by_watchpoint. All uses updated. commit 131aa0d4fe4126c53dcb3a73217a39578b73f2ea Author: Gary Benson Date: Mon Jun 16 15:06:09 2014 +0100 Abstract i386_dr_low access This commit adds macros to abstract access to the i386_dr_low function vector used by i386-nat.c. The macros are named so as to match the names of the functions that do the same work in gdbserver. gdb/ 2014-06-18 Gary Benson * i386-nat.c (i386_dr_low_can_set_addr): New macro. (i386_dr_low_can_set_control): Likewise. (i386_dr_low_set_addr): Likewise. (i386_dr_low_set_control): Likewise. (i386_dr_low_get_addr): Likewise. (i386_dr_low_get_status): Likewise. (i386_dr_low_get_control): Likewise. (i386_insert_aligned_watchpoint): Use new macros. (i386_update_inferior_debug_regs): Likewise. (i386_stopped_data_address): Likewise. gdb/gdbserver/ 2014-06-18 Gary Benson * i386-low.c (i386_dr_low_can_set_addr): New macro. (i386_dr_low_can_set_control): Likewise. (i386_insert_aligned_watchpoint): New check. commit d9305f7fef566159dd940a11155107407f43ec15 Author: Gary Benson Date: Thu Jun 12 12:01:11 2014 +0100 Merge i386_update_inferior_debug_regs This commit synchronizes the i386_update_inferior_debug_regs functions in i386-nat.c and i386-low.c. gdb/ 2014-06-18 Gary Benson * i386-nat.c (i386_update_inferior_debug_regs) : New parameter. All uses updated. gdb/gdbserver/ 2014-06-18 Gary Benson * i386-low.c (i386_update_inferior_debug_regs) : Renamed to state. commit ea008da432a185fccb9ef967b32092eea98d3c9e Author: Gary Benson Date: Wed Jun 11 15:30:50 2014 +0100 Rename maint_show_dr to debug_hw_points This commit renames maint_show_dr to debug_hw_points in i386-nat.c. gdb/ 2014-06-18 Gary Benson * i386-nat.c (maint_show_dr): Renamed to debug_hw_points. All uses updated. commit e927c9fccb149b2a7bbdce1efd1a07d4367444a2 Author: Gary Benson Date: Wed Jun 11 15:42:34 2014 +0100 Merge error handling This commit makes all error handling in i386-low.c use internal_error rather than fatal and error. gdb/gdbserver/ 2014-06-18 Gary Benson * i386-low.c (i386_length_and_rw_bits): Use internal_error instead of fatal and error. (i386_handle_nonaligned_watchpoint): Likewise. commit 1b6d4134c776d54513114199f1478f83894f490b Author: Gary Benson Date: Tue Jun 17 11:32:58 2014 +0100 Merge printing code This commit synchronizes the debug printing code in i386-nat.c and i386-low.c. gdb/ 2014-06-18 Gary Benson * i386-nat.c (debug_printf): New macro. (i386_get_debug_register_length): Likewise. (TARGET_HAS_DR_LEN_8): Use above macro. (i386_show_dr): Use debug_printf instead of puts_unfiltered and printf_unfiltered. Use phex to format values. gdb/gdbserver/ 2014-06-18 Gary Benson * i386-low.c (i386_get_debug_register_length): New macro. (TARGET_HAS_DR_LEN_8): Remove conditional. Use above macro. (i386_show_dr): Use debug_printf instead of fprintf. Use phex to format values. commit 9b4550ef5e4223bf03a343dc8dd29285bf635e8b Author: Gary Benson Date: Tue Jun 10 10:44:00 2014 +0100 Add a const This commit adds a const that was in i386-low.c but not in i386-nat.c. gdb/ 2014-06-18 Gary Benson * i386-nat.c (i386_handle_nonaligned_watchpoint) : Make const. commit 6e62758f0249b3b8e4f2f82af6074eed44246cb5 Author: Gary Benson Date: Tue Jun 17 11:32:26 2014 +0100 Comment changes This commit fixes various comment differences between i386-nat.[ch] and i386-low.[ch]. gdb/ 2014-06-18 Gary Benson * i386-nat.c: Comment changes. gdb/gdbserver/ 2014-06-18 Gary Benson * i386-low.h: Comment changes. * i386-low.c: Likewise. commit 51c79e94b2a4572cd983e47089f6b7beea7c5ea9 Author: Gary Benson Date: Mon Jun 16 10:47:02 2014 +0100 Remove unused macro This commit removes an unused macro from i386-nat.c. gdb/ 2014-06-18 Gary Benson * i386-nat.c (I386_DR_WATCH_MASK): Remove macro. commit 3e11889a6e22823270024e8f5f0b2478807a2a54 Author: Gary Benson Date: Thu Jun 12 14:15:58 2014 +0100 Remove unnecessary prototypes This commit removes four unnecessary prototypes from i386-nat.c. gdb/ 2014-06-18 Gary Benson * i386-nat.c (i386_length_and_rw_bits): Remove prototype. (i386_insert_aligned_watchpoint): Likewise. (i386_remove_aligned_watchpoint): Likewise. (i386_handle_nonaligned_watchpoint): Likewise. commit fc6e2f03be9f8b49cc017413f7d2c4f3645f46df Author: Gary Benson Date: Tue Jun 17 13:11:56 2014 +0100 Whitespace changes This commit fixes various whitespace differences between i386-nat.c and i386-low.c. gdb/ 2014-06-18 Gary Benson * i386-nat.c: Whitespace changes. gdb/gdbserver/ 2014-06-18 Gary Benson * i386-low.c: Whitespace changes. commit 6a83deeaa80479ac9cf5ad8302bf933dd0b27faa Author: Samuel Bronson Date: Wed Jun 18 00:26:46 2014 -0400 Brown paper bag: left out part of the ChangeLog entry ... commit 2afe7d509a64b31a91d31ddc9e2c555e9fe25bb9 Author: Samuel Bronson Date: Wed Jun 18 00:12:57 2014 -0400 * MAINTAINERS: Update Roland McGrath's email address. Thanks to Sergio Durigan Junior for pointing out that he left Red Hat a while ago, and giving me a current address. commit fc68cc33b16d73595e9ccafb8b34ea7baa1acb7e Author: Alan Modra Date: Wed Jun 18 09:53:09 2014 +0930 daily update commit a968e61d8eddf228173019b0265ac6cf6a52cccf Author: Hans-Peter Nilsson Date: Wed Jun 18 00:11:01 2014 +0200 GAS: Fix MMIX err-fb-2.s regression caused by recent generic GAS changes. commit 3bca49eec22679298a36f7fb2059169c61b7cbfa Author: Tom Tromey Date: Tue Jun 17 12:57:06 2014 -0600 remove redundant savestring declaration I happened to notice that savestring is still declared in utils.h, despite the fact that it was moved to common/ a while back. This patch removes the redundant declaration. Tested by rebuilding. I'm committing this as obvious. 2014-06-17 Tom Tromey * utils.h (savestring): Remove declaration. commit 6e366df19d789254b8e26cc7620218ce98df324f Author: Tom Tromey Date: Tue Jun 17 11:43:21 2014 -0600 use make_cleanup_freeargv This replaces a function cast with a call to make_cleanup_freeargv. I'm checking this in as obvious. 2014-06-17 Tom Tromey * remote.c (extended_remote_run): Use make_cleanup_freeargv. commit 6d1ace6861e999361b30d1bc27459ab8094e0d4a Author: Chris Metcalf Date: Tue Jun 17 17:21:08 2014 +0100 This fixes a bug whereby #line directives inside a macro would be ignored, thus resulting in bad line debug information. PR gas/16908 * macro.c (buffer_and_nest): Honour #line directives inside macros. commit 548a23572832015e1d457188c5962e349825e86e Author: Nick Clifton Date: Tue Jun 17 16:50:15 2014 +0100 Prevent large (or negative) version values from overflowing into other fields when parsing version strings. PR binutils/16923 * rcparse.y (fixedverinfo): Prevent large version numbers from corrupting other values. commit 0fc059972058a4afb22882a61143c7cc48eca883 Author: Yao Qi Date: Tue May 27 19:56:21 2014 +0800 Different outputs affected by hosts We find the following fails in gdb test on mingw host. FAIL: gdb.base/wchar.exp: print repeat FAIL: gdb.base/wchar.exp: print repeat_p FAIL: gdb.base/wchar.exp: print repeat (print null on) FAIL: gdb.base/wchar.exp: print repeat (print elements 3) FAIL: gdb.base/wchar.exp: print repeat_p (print elements 3) print repeat^M $7 = L"A", '¢' , "B", '\000' ^M (gdb) FAIL: gdb.base/wchar.exp: print repeat the \242 is expected in the test but cent sign is displayed. In valprint.c:print_wchar, wchar_printable is called to determine whether a wchar is printable. wchar_printable calls iswprint but the iswprint's return value depends on LC_CTYPE setting of locale [1, 2]. The output may vary with different locale settings and OS. IMO, '¢' (cent sign) is a correct output on Windows. [1] http://pubs.opengroup.org/onlinepubs/009604499/functions/iswprint.html [2] http://msdn.microsoft.com/en-us/library/ewx8s4kw.aspx This patch is set $cent to cent sign if the GDB is running on a Windows host. gdb/testsuite: 2014-06-17 Yao Qi * gdb.base/wchar.exp: Set $cent to \u00A2 if "host-charset" is CP1252. commit 70795c525e5b8ca5e9fb8ffbaf33a5f281d53320 Author: Luis Machado Date: Tue Jun 17 10:42:23 2014 +0100 In a couple functions (type_update_when_use_rtti_test and skip_type_update_when_not_use_rtti_test) the testcase assumes an uninitialized object has a specific type. In particular, 'ptr' and 's'. In reality the compiler is free to do what it wants with that uninitialized variable, even initialize it beforehand with the future assignment's value. This is exactly what happens on some targets. ptr should have type 'Base *', but it really has type 'Derived *' because it is already initialized (earlier) by the compiler. The same thing happens to 's'. The following patch addresses this by explicitly initializing those variables so the compiler doesn't optimize their assignments and GDB can print their correct values. 2014-06-17 Luis Machado * gdb.mi/mi-var-rtti.cc (type_update_when_use_rtti_test): Initialize ptr and S explicitly. (skip_type_update_when_not_use_rtti_test): Likewise. commit c8de034b6ae75f0b23d45d15c927daac61c33a3c Author: Jiong Wang Date: Tue Jun 17 10:06:00 2014 +0100 gas/ARM: Misses deprecated IT instruction warning for ARMv8 Add sp increment and decrement to ARMv8 IT block deprecate pattern. gas/ * config/tc-arm.c (depr_it_insns): New check for inc/dec sp. gas/testsuite/ * gas/arm/armv8-a-it-bad.s: New check for inc/dec sp. * gas/arm/armv8-a-it-bad.l: Likewise. commit dfac1fa730b83b4f4e42d1fff5778e7127297f76 Author: Alan Modra Date: Tue Jun 17 09:31:07 2014 +0930 daily update commit 29cf29a2cf1a5df53c9b77cce8916e8c0fc82e12 Author: Hans-Peter Nilsson Date: Tue Jun 17 00:56:01 2014 +0200 GAS: Fix CRIS double-error reports caused by recent generic GAS changes. commit 6be47f0c48cbd58921a25e7493ca79a6f596dffe Author: Keith Seitz Date: Wed Jun 11 13:26:50 2014 -0700 Fix for PR mi/15863 If an MI client creates a varobj and attempts to update the root /before/ the inferior is started, gdb will throw an internal error: (gdb) -var-create * - batch_flag ^done,name="var1",numchild="0",value="0",type="int",has_more="0" (gdb) -var-update var1 ^done,changelist=[] (gdb) -var-update * ~"../../src/gdb/thread.c:628: internal-error: is_thread_state: Assertion `tp' failed.\nA problem internal to GDB has been detected,\nfurther debugging may prove unreliable.\nQuit this debugging session? " ~"(y or n) " The function that handles the varobj update in the failing case, mi_cmd_var_udpate_iter, checks if the thread/inferior is stopped before attempting to update the varobj. It calls is_stopped (inferior_ptid) which calls is_thread_state: tp = find_thread_ptid (ptid); gdb_assert (tp); When there is no inferior, ptid is null_ptid, and find_thread_ptid (null_ptid) returns NULL and the assertion is triggered. This patch changes mi_cmd_var_update_iter to behave the same way "-var-update var1" does: by calling the thread "stopped" if there is no inferior (and thereby calling varobj_update_one). ChangeLog 2014-06-16 Keith Seitz PR mi/15863 * mi/mi-cmd-var.c (mi_cmd_var_update_iter): Do not attempt to update the varobj if inferior_ptid is null_ptid. testsuite/ChangeLog 2014-06-16 Keith Seitz PR mi/15863 * gdb.mi/mi-var-cmd.exp: Add test for -var-update before the inferior is started. commit b97e87cc01703e2e612b1fc21c54f90b1a0f4519 Author: Nick Clifton Date: Mon Jun 16 17:37:46 2014 +0100 Fixes a problem exposed by the aarcg64/illegal.s test case - where the assembler was generating too many error messages. * config/tc-aarch64.c (md_apply_fix): Ignore unused relocs. commit 7bc112c1b9bc6e6346e2afff9174fe4adbce909f Author: Tom Tromey Date: Fri Jun 6 13:38:16 2014 -0600 constify to_info_proc and friends This makes a parameter of to_info_proc const and then fixes up some fallout, including parameters in a couple of gdbarch methods. I could not test the procfs.c change. I verified it by inspection. If this causes an error here, it will be trivial to fix. 2014-06-16 Tom Tromey * target.h (struct target_ops) : Make parameter const. (target_info_proc): Update. * target.c (target_info_proc): Make "args" const. * procfs.c (procfs_info_proc): Update. * linux-tdep.c (linux_info_proc): Update. (linux_core_info_proc_mappings): Make "args" const. (linux_core_info_proc): Update. * gdbarch.sh (info_proc, core_info_proc): Make "args" const. * gdbarch.c: Rebuild. * gdbarch.h: Rebuild. * corelow.c (core_info_proc): Update. commit fee354eeef0b5bb9b1b799e2ce313fc805b2af1a Author: Tom Tromey Date: Fri Jun 6 13:26:53 2014 -0600 constify to_disconnect This constifies an parameter of to_disconnect and updates target_disconnect as well. 2014-06-16 Tom Tromey * target.h (struct target_ops) : Make parameter const. (target_disconnect): Update. * target.c (target_disconnect): Make "args" const. * target-delegates.c: Rebuild. * remote.c (remote_disconnect): Update. * record.h (record_disconnect): Update. * record.c (record_disconnect): Update. * inf-child.c (inf_child_disconnect): Update. commit a30bf1f15c51b82a0134713bc44175cda296d3ae Author: Tom Tromey Date: Fri Jun 6 13:19:53 2014 -0600 constify to_rcmd This makes the "command" parameter of the to_rcmd target method const. 2014-06-16 Tom Tromey * target.h (struct target_ops) : Make "command" const. * target.c (debug_to_rcmd, default_rcmd): Update. * target-delegates.c: Rebuild. * remote.c (remote_rcmd): Update. * monitor.c (monitor_rcmd): Update. commit f4c51f600ed2fcf9f29bdaae71aa767b9b1bc4ac Author: Jiong Wang Date: Mon Jun 16 17:22:19 2014 +0100 This fixes the aarch64 assembler so that it will generate error messages when a syntax error is detected in an optional operand. * config/tc-aarch64.c (END_OF_INSN): New macro. (parse_operands): Handle operand given and be in wrong format when operand is optional. * gas/aarch64/diagnostic.s: New test patterns. * gas/aarch64/diagnostic.l: Likewise. commit 9f19ab6dfa13c3971423624d18f20d90ab70c9cc Author: Will Newton Date: Mon Jun 16 15:49:07 2014 +0100 ld/ARM: Fix IFUNC and TLS descriptors in the same shared object Combining TLS descriptors and GNU indirect functions in the same object could lead to assertions or multiple dynamic relocations for the same GOT slot. Fix the bookkeeping so this doesn't happen. This allows building and make checking glibc with -mtls-dialect=gnu2. bfd/ChangeLog: 2014-06-16 Will Newton * elf32-arm.c (elf32_arm_allocate_plt_entry): Increment htab->next_tls_desc_index in the non-IPLT case. Calculate GOT offset correctly for the non-IPLT case. (allocate_dynrelocs_for_symbol): Don't increment htab->next_tls_desc_index here. ld/testsuite/ChangeLog: 2014-06-16 Will Newton * ld-arm/arm-elf.exp: Add ifunc-gdesc test. * ld-arm/ifunc-gdesc.r: New file. * ld-arm/ifunc-gdesc.s: Likewise. * ld-arm/ifunc-gdesc.ver: Likewise. commit d03de42190b3b55fb195340dde8e595714a35090 Author: Pedro Alves Date: Mon Jun 16 15:38:13 2014 +0100 "$ gdb PROGRAM" vs "(gdb) file PROGRAM" difference; warn on failure to remove breakpoint. Turns out there's a difference between loading the program with "gdb PROGRAM", vs loading it with "(gdb) file PROGRAM". The latter results in the objfile ending up with OBJF_USERLOADED set, while not with the former. (That difference seems bogus, but still that's not the point of this patch. We can revisit that afterwards.) The new code that suppresses breakpoint removal errors for add-symbol-file objects ends up being too greedy: /* In some cases, we might not be able to remove a breakpoint in a shared library that has already been removed, but we have not yet processed the shlib unload event. Similarly for an unloaded add-symbol-file object - the user might not yet have had the chance to remove-symbol-file it. shlib_disabled will be set if the library/object has already been removed, but the breakpoint hasn't been uninserted yet, e.g., after "nosharedlibrary" or "remove-symbol-file" with breakpoints always-inserted mode. */ if (val && (bl->loc_type == bp_loc_software_breakpoint && (bl->shlib_disabled || solib_name_from_address (bl->pspace, bl->address) || userloaded_objfile_contains_address_p (bl->pspace, bl->address)))) val = 0; as it turns out that OBJF_USERLOADED can be set for objfiles loaded by some other means not add-symbol-file. In this case, symbol-file (or "file", which is really just "exec-file"+"symbol-file"). Recall that add-symbol-file is documented as: (gdb) help add-symbol-file Load symbols from FILE, assuming FILE has been dynamically loaded. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ And it's the "dynamically loaded" aspect that the breakpoint.c code cares about. So make add-symbol-file set OBJF_SHARED on its objfiles too, and tweak the breakpoint.c code to look for OBJF_SHARED instead of OBJF_USERLOADED. This restores back the missing breakpoint removal warning when we let sss-bp-on-user-bp-2.exp run on native GNU/Linux (https://sourceware.org/ml/gdb-patches/2014-06/msg00335.html): (gdb) PASS: gdb.base/sss-bp-on-user-bp-2.exp: define stepi_del_break stepi_del_break warning: Error removing breakpoint 3 (gdb) FAIL: gdb.base/sss-bp-on-user-bp-2.exp: stepi_del_break I say "restores" because this was GDB's behavior in 7.7 and earlier. And, likewise, "file" with no arguments only started turning breakpoints set in the main executable to "" with the remote-symbol-file patch (63644780). The old behavior is now restored, and we break-unload-file.exp test now exercizes both "gdb; file PROGRAM" and "gdb PROGRAM". gdb/ 2014-06-16 Pedro Alves * breakpoint.c (insert_bp_location, remove_breakpoint_1): Adjust. (disable_breakpoints_in_freed_objfile): Skip objfiles that don't have OBJF_SHARED set. * objfiles.c (userloaded_objfile_contains_address_p): Rename to... (shared_objfile_contains_address_p): ... this. Check OBJF_SHARED instead of OBJF_USERLOADED. * objfiles.h (OBJF_SHARED): Update comment. (userloaded_objfile_contains_address_p): Rename to ... (shared_objfile_contains_address_p): ... this, and update comments. * symfile.c (add_symbol_file_command): Also set OBJF_SHARED in the new objfile. (remove_symbol_file_command): Skip objfiles that don't have OBJF_SHARED set. gdb/testsuite/ 2014-06-16 Pedro Alves * gdb.base/break-main-file-remove-fail.c: New file. * gdb.base/break-main-file-remove-fail.exp: New file. * gdb.base/break-unload-file.exp: Use build_executable instead of prepare_for_testing. (test_break): New parameter "initial_load". Handle it. (top level): Add initial_load cmdline/file axis. commit 99f4262f2c7e3457f45bd9921889456285d8b025 Author: Tom Tromey Date: Mon Jun 16 02:07:50 2014 -0600 fix incorrect comments in minsyms.h minsyms.h incorrectly claims that a couple of functions call prim_record_minimal_symbol_full with COPY_NAME=0 -- but actually they pass 1. Passing 1 is the correct behavior, so this patch fixes the documentation. I'm checking this in as obvious. 2014-06-16 Tom Tromey * minsyms.h (prim_record_minimal_symbol) (prim_record_minimal_symbol_and_info): Update comments. commit e1279d1d6b5f9205c6603cc661ce7af64e09b5e8 Author: Alan Modra Date: Mon Jun 16 22:21:16 2014 +0930 Fix duplicated assignments to __rel_iplt and __rela_iplt symbols and fix more nds32 dependencies. * scripttempl/elf.sc: Edit out __rela_iplt symbol assignments from .rel sections, and __rel_iplt from .rela sections. * scripttempl/nds32elf.sc: Likewise. * Makefile.am (ends32*.c): Depend on nds32elf.sc. * Makefile.in: Regenerate. commit 85024cd8bcb93f4112470ecdbd6c10fc2aea724f Author: Alan Modra Date: Mon Jun 16 11:04:04 2014 +0930 Run write_object_file after errors This is to fix unitialised memory access when printing listings. Many targets don't initialise parts of insn frags or data frags that have fixups, relying on md_apply_fix to finalise the frag. Which is fine normally, but means we need to run write_object_file after errors, for listings. Otherwise MALLOC_PERTURB_=1 causes errors like: x86_64-linux +FAIL: i386 mpx-inval-1 x86_64-linux +FAIL: i386 inval-equ-1 x86_64-linux +FAIL: i386 x86-64-mpx-inval-1 Running write_object_file after errors requires some tweaking to the testsuite, since we then get extra errors reported from md_apply_fix. gas/ * write.h (subsegs_finish): Delete declaration. * write.c (subsegs_finish): Make static. (write_object_file): Call subsegs_finish from here. Don't print warning and error count here.. * as.c (main): ..do so here instead. Remove dead code for "no object file generated". Split out count strings to better support internationalisation. Don't call subsegs_finish. Tidy setting of "keep_it". Run write_object_file even after errors. (keep_it): Make static. * config/obj-elf.c (elf_frob_symbol): Remove assert. (elf_frob_file_before_adjust): Likewise. gas/testsuite/ * gas/elf/bad-group.s: Use %function. * gas/elf/bad-group.err: Expect correct line number. Allow other errors. * gas/elf/bad-size.err: Allow other errors. Match expected error somewhat more rigorously. * gas/i386/reloc32.l: Allow other errors. * gas/i386/mpx-inval-1.l: Match applied relocs. * gas/i386/x86-64-mpx-inval-1.l: Likewise, and nop padding. * gas/i386/x86-64-mpx-inval-2.l: Match nop padding, and allow other errors. * gas/macros/dot.s: Use .balign. * gas/macros/dot.l: Update alignment output. * gas/symver/symver6.l: Allow other errors. commit 97d24fbbf5300d5b03e48018454335772d9304e8 Author: Alan Modra Date: Mon Jun 16 10:02:59 2014 +0930 Don't leave DLX the_insn uninitialised In particular the_insn.reloc must be initialised, otherwise the early exit cases for bad opcodes will result in cascading errors if write_object_file is called after an error. * config/tc-dlx.c (machine_ip): Move initialisation of the_insn earlier. commit 1ab668bf2a42ad6c9ef2f691257118faba65bfe9 Author: Alan Modra Date: Mon Jun 16 11:28:26 2014 +0930 Report an error on x86 pcrel BFD_RELOC_SIZE64 * config/tc-i386.c (reloc): Don't avoid pcrel check for BFD_RELOC_SIZE64. Return NO_RELOC on failing pcrel check. commit 7e9def1e93c408b5df80ed67b79ef7ac9d5c9289 Author: Alan Modra Date: Mon Jun 16 10:56:56 2014 +0930 Fix unintitialised TIC6X data MALLOC_PERTURB_=1 results in the following fails due to uninitialised exindx data: FAIL: C6X unwinding directives 1 (little endian) FAIL: C6X unwinding directives 2 (big endian) FAIL: C6X unwinding directives 3 (segment change) FAIL: ld-tic6x/unwind-1 FAIL: ld-tic6x/unwind-2 FAIL: ld-tic6x/unwind-3 FAIL: ld-tic6x/unwind-4 FAIL: ld-tic6x/unwind-6 * config/tc-tic6x.c (s_tic6x_ehtype): Clear after frag_more. (tic6x_output_exidx_entry): Likewise. (md_apply_fix): Simplify 1 byte md_number_to_chars. commit 6e210b4129b522c1a0b0c6dee24ee469d5020583 Author: Alan Modra Date: Mon Jun 16 10:33:26 2014 +0930 Fix TIC54X buffer overruns MALLOC_PERTURB_=1 results in "FAIL: c54x macros". * config/tc-tic54x.c (tic54x_mlib): Don't write garbage past end of archive to temp file. (tic54x_start_line_hook): Start scan for parallel on next line, not one char into next line (which may overrun the buffer). commit ee0738df021c42217828f02858c1f882a1546557 Author: Alan Modra Date: Mon Jun 16 10:17:50 2014 +0930 Fix uninitialised VAX insn MALLOC_PERTURB_=1 results in "FAIL: VAX ELF relocations", due to object file being emitted with uninitialised fields. Since these fields had RELA relocs the field value won't be used at final link time, so the problem is only seen in relocatable object files. This rewrite of md_apply_fix clears all fields with relocs, whereas before some fields had non-zero values. gas/ * config/tc-vax.c (md_apply_fix): Rewrite. (tc_gen_reloc, vax_cons, vax_cons_fix_new): Style: Use NO_RELOC define rather than the equivalent BFD_RELOC_NONE. gas/testsuite/ * gas/vax/elf-rel.d: Update. commit eb9a5ecfacc42b9b741a3f83f433252b3c7cd77e Author: Alan Modra Date: Mon Jun 16 10:12:12 2014 +0930 Fix uninitialised VAX .got and .got.plt section Cures these failures with MALLOC_PERTURB_=1 FAIL: GOT test (executable) FAIL: GOT test (shared library) FAIL: VAX export class call relocation test FAIL: VAX export class data relocation test * elf32-vax.c (elf_vax_size_dynamic_sections): Clear linker created sections. commit 4b1a927e92e49f333838f8f11e621608cccb3a03 Author: Alan Modra Date: Mon Jun 16 09:56:29 2014 +0930 Fix uninitialised ARM data MALLOC_PERTURB_=1 results in "FAIL: PIC" on arm-vxworks, due to garbage in words with got relocs. * config/tc-arm.c (s_arm_elf_cons): Initialise after frag_more. (md_apply_fix): Delete now unnecessary zeroing for BFD_RELOC_ARM_GOT* and BFD_RELOC_ARM_TLS* relocs. Simplify BFD_RELOC_8 case. commit 44ed9ef26f62c4b348236c4dcea1de78d03900d9 Author: Alan Modra Date: Mon Jun 16 09:50:15 2014 +0930 Fix uninitialised CRIS insn gas/ * config/tc-cris.c (md_create_long_jump): Follow "short" jump with a nop rather than leaving uninitialised. gas/testsuite/ * gas/cris/rd-bkw4v32.d: Update. commit cc0c4d535e50adc3fb928943a1945f8e62c933bf Author: Alan Modra Date: Mon Jun 16 09:30:38 2014 +0930 daily update commit 2de2a6d098be72656a338c2fea81f132094a1217 Author: Alan Modra Date: Sun Jun 15 09:31:08 2014 +0930 daily update commit 97d66cc602ec5abfcb6fc6baaf3d6edbde4fcbfb Author: Eli Zaretskii Date: Sat Jun 14 20:54:16 2014 +0300 Include --with-guile in 'show configuration's output. * top.c (print_gdb_configuration) [HAVE_GUILE]: Print --with-guile or --without-guile, according to how GDB was built. commit 05629c769a68b5953898adfc9d272e2db3ff930a Author: Alan Modra Date: Sat Jun 14 09:31:18 2014 +0930 daily update commit d0ae9fbda7513c1cab463bf1a9b21fdef40e7c56 Author: Omair Javaid Date: Fri Jun 13 17:07:21 2014 +0100 Add support for reading Aarch64 core dumps. * elfxx-aarch64.c (stdarg.h): Include. (string.h): Include. (_bfd_aarch64_elf_grok_prstatus): Updated. (_bfd_aarch64_elf_grok_psinfo): New function. (_bfd_aarch64_elf_write_core_note): New function. * elfxx-aarch64.h (elf_backend_grok_psinfo): Define. (elf_backend_write_core_note): Define. commit 635c7e8a0521e985921ea3189ab2db5e05fdd41f Author: Tom Tromey Date: Thu Jun 5 08:25:00 2014 -0600 make calls to help_list use enumerator Currently there are many calls to help_list that pass the constant -1 as the "class" value. However, the parameter is declared as being of type enum command_class, and uses of the constant violate this abstraction. This patch fixes the error everywhere it occurs in the gdb sources. Tested by rebuilding. 2014-06-13 Tom Tromey * cp-support.c (maint_cplus_command): Pass all_commands, not -1, to help_list. * guile/guile.c (info_guile_command): Pass all_commands, not -1, to help_list. * tui/tui-win.c (tui_command): Pass all_commands, not -1, to help_list. * tui/tui-regs.c (tui_reg_command): Pass all_commands, not -1, to help_list.Pass all_commands, not -1, to help_list. * cli/cli-dump.c (dump_command, append_command) (srec_dump_command, ihex_dump_command, tekhex_dump_command) (binary_dump_command, binary_append_command): Pass all_commands, not -1, to help_list. * cli/cli-cmds.c (info_command, set_debug): Pass all_commands, not -1, to help_list. * valprint.c (set_print, set_print_raw): Pass all_commands, not -1, to help_list. * typeprint.c (set_print_type): Pass all_commands, not -1, to help_list. * top.c (set_history): Pass all_commands, not -1, to help_list. * target-descriptions.c (set_tdesc_cmd, unset_tdesc_cmd): Pass all_commands, not -1, to help_list. * symfile.c (overlay_command): Pass all_commands, not -1, to help_list. * spu-tdep.c (info_spu_command): Pass all_commands, not -1, to help_list. * serial.c (serial_set_cmd): Pass all_commands, not -1, to help_list. * ser-tcp.c (set_tcp_cmd, show_tcp_cmd): Pass all_commands, not -1, to help_list. * remote.c (remote_command, set_remote_cmd): Pass all_commands, not -1, to help_list. * ravenscar-thread.c (set_ravenscar_command): Pass all_commands, not -1, to help_list. * maint.c (maintenance_command, maintenance_info_command) (maintenance_print_command, maintenance_set_cmd): Pass all_commands, not -1, to help_list. * macrocmd.c (macro_command): Pass all_commands, not -1, to help_list. * language.c (set_check): Pass all_commands, not -1, to help_list. * infcmd.c (unset_command): Pass all_commands, not -1, to help_list. * frame.c (set_backtrace_cmd): Pass all_commands, not -1, to help_list. * dwarf2read.c (set_dwarf2_cmd): Pass all_commands, not -1, to help_list. * dcache.c (set_dcache_command): Pass all_commands, not -1, to help_list. * breakpoint.c (save_command): Pass all_commands, not -1, to help_list. * ada-lang.c (maint_set_ada_cmd, set_ada_command): Pass all_commands, not -1, to help_list. commit f26c187e2933a0e99a9fbe1ccbcd97260c74b913 Author: Chen Gang Date: Fri Jun 13 16:07:21 2014 +0100 Fix seg-faults when fetching the frags of local symbols. * config/tc-score7.c: (s7_b32_relax_to_b16): Use symbol_get_frag() to access a symbol's frag. * config/tc-score.c (s3_relax_branch_inst16): Likewise. (s3_relax_cmpbranch_inst32): Likewise. commit 2132b4072fb1368afbc0405f909bdf67fcfee427 Author: Chen Gang Date: Fri Jun 13 15:52:55 2014 +0100 A simple replacement of sprintf (xxx, "%s", xxx) with strcpy. * config/tc-score7.c: Replace sprintf with strcpy where appropriate. commit b94ade42840d1b0fbf818db49d98da9ba80c1d53 Author: Pierre Langlois Date: Tue May 20 15:13:20 2014 +0100 Invalidate a register in cache when a remote target failed to write it. As shown by the bug report, GDB crashes when the remote target was unable to write to a register (the program counter) with the 'P' packet. This was reported for AVR but can be reproduced on any architecture with a gdbserver that fails to handle a 'P' packet. Issue ===== This GDB session was done with a custom gdbserver patched to send an error packet when trying to set the program counter with a 'P' packet: ~~~ (gdb) file Debug/ATMega2560-simple-program.elf Reading symbols from Debug/ATMega2560-simple-program.elf...done. (gdb) target remote :51000 Remote debugging using :51000 0x00000000 in __vectors () (gdb) load Loading section .text, size 0x1fc lma 0x0 Start address 0x0, load size 508 Transfer rate: 248 KB/sec, 169 bytes/write. (gdb) b main Breakpoint 1 at 0x164: file .././ATMega2560-simple-program.c, line 39. (gdb) c Continuing. Program received signal SIGTRAP, Trace/breakpoint trap. main () at .././ATMega2560-simple-program.c:42 42 DDRD |= LED0_MASK;// | LED1_MASK; (gdb) info line 43 Line 43 of ".././ATMega2560-simple-program.c" is at address 0x178 but contains no code. (gdb) set $pc=0x178 Could not write register "PC2"; remote failure reply 'E00' (gdb) info registers pc pc 0x178 0x178 (gdb) s ../../unisrc-mainline/gdb/infrun.c:1978: internal-error: resume: Assertion `pc_in_thread_step_range (pc, tp)' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) ../../unisrc-mainline/gdb/infrun.c:1978: internal-error: resume: Assertion `pc_in_thread_step_range (pc, tp)' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Create a core file of GDB? (y or n) ~~~ We can see that even though GDB reports that writing to the register failed, the register cache was updated: ~~~ (gdb) set $pc=0x178 Could not write register "PC2"; remote failure reply 'E00' (gdb) info registers pc pc 0x178 0x178 ~~~ The root of the problem is of course in the gdbserver but I thought GDB should keep a register cache consistent with the hardware even in case of a failure. Changes ======= This patch adds routines to add a regcache_invalidate cleanup to the current chain. We can then register one before calling target_store_registers. This way if the target throws an error, the register we wanted to write to will be invalidated in cache. If target_store_registers succeeds, we can discard the new cleanup. 2014-06-12 Pierre Langlois * regcache.c (struct register_to_invalidate): New structure. (do_register_invalidate, make_cleanup_regcache_invalidate): New functions. (regcache_raw_write): Call make_cleanup_regcache_invalidate. commit d495ab0d843def702a6641fa4fc31708d7fc97b1 Author: Alan Modra Date: Fri Jun 13 19:11:39 2014 +0930 Free linker hash table from bfd_close. Also tidies numerous error exit paths in various link_hash_table_create functions that failed to free memory. include/ * bfdlink.h (struct bfd_link_hash_table): Add hash_table_free field. bfd/ * archive.c: Include bfdlink.h. (_bfd_archive_close_and_cleanup): Call linker hash_table_free. * bfd.c (struct bfd): Add is_linker_output field. * elf-bfd.h (_bfd_elf_link_hash_table_free): Update prototype. * linker.c (_bfd_link_hash_table_init): Set up hash_table_free, link.hash and is_linker_output. (_bfd_generic_link_hash_table_free): Replace bfd_link_hash_table* param with bfd*. Assert is_linker_output and link.hash, and clear them before exit. * elf-m10300.c (elf32_mn10300_link_hash_table_free): Replace bfd_link_hash_table* param with bfd*. Hack is_linker_output and link.hash so we can free two linker hash tables. (elf32_mn10300_link_hash_table_create): Create static_hash_table first. Clean up on errors. Set hash_table_free pointer. * elf32-arm.c (elf32_arm_link_hash_table_free): Replace bfd_link_hash_table* param with bfd*. (elf32_arm_link_hash_table_create): Clean up on errors. Set hash_table_free pointer. * elf32-avr.c, * elf32-hppa.c, * elf32-i386.c, * elf32-m68hc1x.c, * elf32-m68k.c, * elf32-metag.c, * elf32-nios2.c, * elf32-xgate.c, * elf64-ia64-vms.c, * elf64-ppc.c, * elf64-x86-64.c, * elflink.c, * elfnn-aarch64.c, * elfnn-ia64.c, * elfxx-sparc.c, * xcofflink.c: Similarly. * simple.c (bfd_simple_get_relocated_section_contents): Save and clear link.next before creating linker hash table. Clean up on errors, and restore link.next on exit. * elf32-m68hc1x.h (m68hc11_elf_bfd_link_hash_table_free): Delete. * elf32-xgate.h (xgate_elf_bfd_link_hash_table_free): Delete. * elfxx-sparc.h (_bfd_sparc_elf_link_hash_table_free): Delete. * libcoff-in.h (_bfd_xcoff_bfd_link_hash_table_free): Delete. * hash.c (bfd_hash_table_init_n): Free table on error. * libbfd-in.h (_bfd_generic_link_hash_table_free): Update proto. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * libcoff.h: Regenerate. commit caa4096e844a000ff63c4fa9180d70ca2093fd2a Author: Alan Modra Date: Fri Jun 13 19:11:29 2014 +0930 Don't call bfd_link_hash_table_free Freeing the linker hash table is a royal pain. It can't be freed before the _bfd_write_contents call in bfd_close, because some target bfd_write_contents functions access the hash table. It can't be freed after bfd_close either, since bfd_alloc memory holding side data structures disappears (PR17047). Clearly the only place it can be freed is actually in bfd_close. This patch doesn't do that, but kills off the existing means of freeing the hash table via a bfd target xvec call. bfd/ PR 17047 * targets.c (BFD_JUMP_TABLE): Delete NAME##_bfd_link_hash_table_free. (struct bfd_target <_bfd_link_hash_table_free>): Delete. * bfd.c (bfd_link_hash_table_free): Don't define. * aout-adobe.c, * aout-target.h, * aout-tic30.c, * binary.c, * bout.c, * coff64-rs6000.c, * coffcode.h, * elf-m10300.c, * elf32-arm.c, * elf32-avr.c, * elf32-hppa.c, * elf32-i386.c, * elf32-m68hc11.c, * elf32-m68hc12.c, * elf32-m68k.c, * elf32-metag.c, * elf32-nios2.c, * elf32-sparc.c, * elf32-xgate.c, * elf64-ia64-vms.c, * elf64-ppc.c, * elf64-sparc.c, * elf64-x86-64.c, * elfnn-aarch64.c, * elfnn-ia64.c, * elfxx-target.h, * i386msdos.c, * i386os9k.c, * ieee.c, * ihex.c, * libbfd-in.h, * libecoff.h, * mach-o-target.c, * mmo.c, * nlm-target.h, * oasys.c, * pef.c, * plugin.c, * ppcboot.c, * som.c, * srec.c, * tekhex.c, * verilog.c, * versados.c, * vms-alpha.c, * xsym.c: Don't define various link_hash_table_free defines, and remove from bfd_target vars. Temporarily reference some of the target link_hash_table_free functions to avoid warnings. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. ld/ PR 17047 * ldlang.c (output_bfd_hash_table_free_fn): Delete. (open_output): Don't set it.. * ldmain.c (ld_cleanup): ..or call it. commit 68faa6378d757de1fdf29f7d27025c5eadd897ec Author: Alan Modra Date: Fri Jun 13 19:11:19 2014 +0930 Move link_hash_table_free functions earlier Move some code around, in preparation for a followup patch. * elf-m10300.c, * elf32-arm.c, * elf32-avr.c, * elf32-hppa.c, * elf32-i386.c, * elf32-m68hc1x.c, * elf32-m68k.c, * elf32-metag.c, * elf32-nios2.c, * elf64-ia64-vms.c, * elf64-ppc.c, * elf64-x86-64.c, * elfnn-aarch64.c, * elfnn-ia64.c, * elfxx-sparc.c, * xcofflink.c: Move link_hash_table_free functions before their corresponding link_hash_table_create functions. commit c72f2fb2bb6a3e1850b081dbfce4040970fae8e6 Author: Alan Modra Date: Fri Jun 13 19:10:57 2014 +0930 Make bfd.link_next field a union This field of struct bfd is currently only used to chain together linker input files. This patch prepares to use the field to stash the linker hash table, which is always created on the linker output file. bfd/ * bfd.c (struct bfd): Replace link_next with a union. * aoutx.h, * bfd.c, * coff-ppc.c, * coff-rs6000.c, * cofflink.c, * ecoff.c, * elf-m10300.c, * elf32-arm.c, * elf32-avr.c, * elf32-hppa.c, * elf32-i386.c, * elf32-lm32.c, * elf32-m32c.c, * elf32-m32r.c, * elf32-m68hc1x.c, * elf32-metag.c, * elf32-microblaze.c, * elf32-nds32.c, * elf32-nios2.c, * elf32-or1k.c, * elf32-ppc.c, * elf32-rl78.c, * elf32-s390.c, * elf32-score.c, * elf32-score7.c, * elf32-sh.c, * elf32-spu.c, * elf32-tic6x.c, * elf32-tilepro.c, * elf32-xstormy16.c, * elf32-xtensa.c, * elf64-alpha.c, * elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mmix.c, * elf64-ppc.c, * elf64-s390.c, * elf64-x86-64.c, * elflink.c, * elfnn-aarch64.c, * elfxx-mips.c, * elfxx-sparc.c, * elfxx-tilegx.c, * linker.c, * pdp11.c, * peXXigen.c, * simple.c, * sunos.c, * vms-alpha.c, * xcofflink.c: Update for above. * bfd-in2.h: Regenerate. include/ * bfdlink.h: Update for bfd.link_next change. ld/ * emultempl/cr16elf.em, * emultempl/elf32.em, * emultempl/genelf.em, * emultempl/m68kcoff.em, * emultempl/m68kelf.em, * emultempl/nds32elf.em, * emultempl/pe.em, * emultempl/pep.em, * ldlang.c, * ldmain.c, * pe-dll.c: Update for bfd.link_next change. commit 07cccc39f31f4b77607fd9487f33e242969475ca Author: Alan Modra Date: Fri Jun 13 12:28:18 2014 +0930 Add missing ld makefile dependency for nios. * Makefile.am (ALL_EMULATION_SOURCES): Add enios2elf.c, enios2linux.c. * Makefile.in: Regenerate. commit 8b48a0d6197dfb70b56558701fb456d6c8a2499b Author: Alan Modra Date: Fri Jun 13 09:31:18 2014 +0930 daily update commit f9d1eeed58ec0b3063e014273164179586b1f141 Author: Tom Tromey Date: Sun Jan 19 19:34:23 2014 -0700 delete gdbserver's freeargv gdbserver defines freeargv, but it is now trivial to just use the one in libiberty. 2014-06-12 Tom Tromey * utils.c (freeargv): Remove. commit 0b04e52316079981b2b77124198a405d826a05cd Author: Tom Tromey Date: Sun Jan 19 14:33:37 2014 -0700 link gdbserver against libiberty This builds a libiberty just for gdbserver and arranges for gdbserver to use it. I've tripped across the lack of libiberty in gdbserver at least once, and I have seen other threads where it would have been useful. 2014-06-12 Tom Tromey * debug.c (debug_printf): Remove HAVE_GETTIMEOFDAY checks. * server.c (monitor_show_help): Remove HAVE_GETTIMEOFDAY check. (parse_debug_format_options): Likewise. (gdbserver_usage): Likewise. * Makefile.in (LIBIBERTY_BUILDDIR, LIBIBERTY): New variables. (SUBDIRS, REQUIRED_SUBDIRS): Add libiberty. (gdbserver$(EXEEXT), gdbreplay$(EXEEXT)): Depend on and link against libiberty. ($(LIBGNU)): Depend on libiberty. (all-lib): Recurse into all subdirs. (install-only): Invoke "install" target in subdirs. (vasprintf.o, vsnprintf.o, safe-ctype.o, lbasename.o): Remove targets. * configure: Rebuild. * configure.ac: Add ACX_CONFIGURE_DIR for libiberty. Don't check for vasprintf, vsnprintf, or gettimeofday. * configure.srv: Don't add safe-ctype.o or lbasename.o to srv_tgtobj. commit f9579b990244a7f49757ca8bc3bcf48f7bc8505b Author: Tom Tromey Date: Thu Jun 12 12:04:54 2014 -0600 don't use directory in test name I noticed that a few tests in completion.exp put the directory name into the name of the resulting test. While the directory name is relative, this still makes for spurious differences depending on whether the test was run in serial or parallel mode. This patch fixes the problem. I'm checking it in. 2014-06-12 Tom Tromey * gdb.base/completion.exp: Don't use directory name in test. commit b4b01d36ac91ddc2c96cfac76726e13c404d9483 Author: Pedro Alves Date: Thu Jun 12 18:47:54 2014 +0100 Move ChangeLog entry to proper place. gdb/ 2014-06-09 Pedro Alves * linux-nat.c (linux_child_follow_fork): Initialize status with W_STOPCODE (0) instead of 0. Remove shodowing 'status' local from inner block. Only pass the signal to PTRACE_DETACH if in pass state. commit 31f628ae8f5aada207d489fbcf5436bdc3b4b3f7 Author: Yao Qi Date: Sat Nov 23 16:05:58 2013 +0800 Use varobj_is_dynamic_p more widely Use varobj_is_dynamic_p more widely so that the callers of varobj_is_dynamic_p are unchanged when we add available-children-only stuff in varobj_is_dynamic_p. gdb: 2014-06-12 Yao Qi * varobj.c (varobj_get_num_children): Call varobj_is_dynamic_p. (varobj_list_children): Likewise. (varobj_update): Likewise. Update comments. commit cde5ef40f807cf37ac4fc5adcf621c615049eda9 Author: Yao Qi Date: Sat Nov 23 15:58:04 2013 +0800 Rename varobj_pretty_printed_p to varobj_is_dynamic_p We think varobj with --available-children-only behaves like a dynamic varobj, so dyanmic varobj is not pretty-printer specific. We rename varobj_pretty_printed_p to varobj_is_dynamic_p, so that we can handle available-children-only checking in varobj_is_dynamic_p in the next patch. gdb: 2014-06-12 Yao Qi * varobj.c (varobj_pretty_printed_p): Rename to ... (varobj_is_dynamic_p): ... this. New function. * varobj.h (varobj_pretty_printed_p): Remove declaration. (varobj_is_dynamic_p): Declare. * mi/mi-cmd-var.c (print_varobj): All callers updated. (mi_print_value_p, varobj_update_one): Likewise. commit 576ea0910f0bdb3b4705d6faa24d30c86ccf7a09 Author: Yao Qi Date: Fri Aug 30 16:30:32 2013 +0800 Remove #if HAVE_PYTHON This patch removes some unnecessary "#if HAVE_PYTHON" so that more code is generalized. gdb: 2014-06-12 Pedro Alves Yao Qi * varobj.c: Remove "#if HAVE_PYTHON" and "#endif". (varobj_get_iterator): Wrap up code for pretty-printer by "#if HAVE_PYTHON" and "#endif". (update_dynamic_varobj_children): Likewise. commit 827f100cee10ed58ef9d22de35ba1d61db73e541 Author: Yao Qi Date: Tue Nov 12 20:49:52 2013 +0800 Iterate over 'struct varobj_item' instead of PyObject In previous patch, "saved_item" is still a PyOjbect and iteration is still performed over PyObject. This patch continues to decouple iteration from python code, so it changes its type to "struct varobj_item *", so that the iterator itself is independent of python. V2: - Call varobj_delete_iter in free_variable. - Fix changelog entries. - Use XNEW. V3: - Return NULL early in py_varobj_iter_next if gdb_python_initialized is false. gdb: 2014-06-12 Pedro Alves Yao Qi * python/py-varobj.c (py_varobj_iter_next): Return NULL if gdb_python_initialized is false. Move some code from varobj.c. * varobj-iter.h (struct varobj_item): Moved from varobj.c. * varobj.c: Move "varobj-iter.h" inclusion earlier. (struct varobj_item): Moved to varobj-iter.h". (varobj_clear_saved_item): New function. (update_dynamic_varobj_children): Move python-related code to py-varobj.c. (free_variable): Call varobj_clear_saved_item and varobj_iter_delete. commit e525021603958709381fc4dc296cc2586aaa5dd7 Author: Yao Qi Date: Fri Aug 30 09:44:46 2013 +0800 Generalize varobj iterator This patch generalizes varobj iterator, in a python-independent way. Note varobj_item is still a typedef of PyObject, we can only focus on API changes, and leave the data type changes to the next patch. As a result, we include "varobj-iter.h" after the typedef of PyObject in varobj.c, but it is an intermediate state. Finally, varobj-iter.h is independent of PyObject. This change is helpful to move some python-related code out of varobj.c. V2: - Fix a missing cleanup. - Fix typos. - Use XNEW. - Check against NULL explicitly. - Update copyright year for new added files. V3: - Call PyGILState_Ensure before Py_XDECREF. - Use CPYCHECKER_STEALS_REFERENCE_TO_ARG. - Code indentation. V4: - use varobj_ensure_python_env instead of PyGILState_Ensure. gdb: 2014-06-12 Pedro Alves Yao Qi * Makefile.in (SUBDIR_PYTHON_OBS): Add "py-varobj.o". (SUBDIR_PYTHON_SRCS): Add "python/py-varobj.c". (HFILES_NO_SRCDIR): Add "varobj-iter.h". (py-varobj.o): New rule. * python/py-varobj.c: New file. * python/python-internal.h (py_varobj_get_iterator): Declare. * varobj-iter.h: New file. * varobj.c: Include "varobj-iter.h" (struct varobj) : Change its type from "PyObject *" to "struct varobj_iter *". : Likewise. [HAVE_PYTHON] (varobj_ensure_python_env): Make it extern. [HAVE_PYTHON] (varobj_get_iterator): New function. (update_dynamic_varobj_children) [HAVE_PYTHON]: Move python-specific code to python/py-varobj.c. (install_visualizer): Call varobj_iter_delete instead of Py_XDECREF. * varobj.h (varobj_ensure_python_env): Declare. commit 5a2e0d6e89f69f0c3d013cf43f3bd3d97b5e628b Author: Yao Qi Date: Tue Sep 10 08:58:23 2013 +0800 Use 'struct varobj_item' to represent name and value pair Hi, name and value pair is widely used in varobj.c. This patch is to add a new struct varobj_item to represent them, so that the number of function arguments can be reduced. Finally, the iteration is done on 'struct varobj_item' instead of PyObject after this patch series. V2: - Fix changelog entry. - Fix one grammatical mistake. gdb: 2014-06-12 Yao Qi * varobj.c (struct varobj_item): New structure. (create_child_with_value): Update declaration. (varobj_add_child): Replace arguments 'name' and 'value' with 'item'. All callers updated. (install_dynamic_child): Likewise. (update_dynamic_varobj_children): Likewise. (varobj_add_child): Likewise. (create_child_with_value): Likewise. commit c151b1c645a87136b61d9c16741b40f59694ed02 Author: Alan Modra Date: Thu Jun 12 12:04:06 2014 +0930 Whitespace fixes for cpu/or1k.opc * or1k.opc: Whitespace fixes. commit 58dca1635dc11f329242e888b0b582907a44a73e Author: Alan Modra Date: Thu Jun 12 09:30:43 2014 +0930 daily update commit 919b9a93779fae7da9995fd9d8543991fa869701 Author: Joel Brobecker Date: Wed Jun 11 18:52:29 2014 +0200 Update NEWS post GDB 7.8 branch creation. gdb/ChangeLog: * NEWS: Create a new section for the next release branch. Rename the section of the current branch, now that it has been cut. commit 71a55bdf7d3dc8f949ca7714be72603da82b0d62 Author: Joel Brobecker Date: Wed Jun 11 18:37:55 2014 +0200 Bump version to 7.8.50.DATE-cvs. Now that the GDB 7.8 branch has been created, we can bump the version number. gdb/ChangeLog: GDB 7.8 branch created (173373c6f6388171d1d62a217fae90a052395be2): * version.in: Bump version to 7.8.50.DATE-cvs. commit 173373c6f6388171d1d62a217fae90a052395be2 Author: Andrew Burgess Date: Tue May 27 11:57:33 2014 +0100 Delete temporary string within demangler even in failure cases. A call to demangle_template might allocate storage within a temporary string even if the call to demangle_template eventually returns failure. This will never cause the demangler to crash, but does leak memory, as a result I've not added any tests for this. Calling string_delete is safe, even if nothing is allocated into the string, the string is initialised with string_init, so we know the internal pointers are NULL. libiberty/ChangeLog * cplus-dem.c (do_type): Call string_delete even if the call to demangle_template fails. commit 364fe1f72265eb54bce08511233d06ed48e9c41a Author: Pedro Alves Date: Wed Jun 11 11:04:31 2014 +0100 PR remote/17028: GDB+GDBserver hangs on Windows Since target-async was turned on by default, debugging on Windows using GDB+GDBserver sometimes hangs while waiting for a RSP reply. The problem is a race in the gdb_select machinery. This is what we see for a faulty next on the GDB side: (gdb) n infrun: clear_proceed_status_thread (Thread 4424) infrun: proceed (addr=0xffffffff, signal=GDB_SIGNAL_DEFAULT, step=1) (...) infrun: resume (step=1, signal=GDB_SIGNAL_0), ... Sending packet: $vCont;s:1148;c#5e... *hang* At this point, attaching a debugger to the hanging GDB confirms that it is blocked, waiting for a socket event: #6 0x757841d8 in WaitForMultipleObjects () from C:\Windows\syswow64\kernel32.dll #7 0x004708e7 in gdb_select (n=469, readfds=0x88ca50 , writefds=0x88cb54 , exceptfds=0x88cc58 , timeout=0x0) at /[...]/gdb/mingw-hdep.c:172 #8 0x00527926 in gdb_wait_for_event (block=1) at /[...]/gdb/event-loop.c:831 #9 0x00526ff1 in gdb_do_one_event () at /[...]/gdb/event-loop.c:403 However, on the GDBserver side, we see that GDBserver already sent a T05 packet reply: gdbserver: kernel event EXCEPTION_DEBUG_EVENT for pid=4968 tid=1148 EXCEPTION_SINGLE_STEP Child Stopped with signal = 5 Writing resume reply for LWP 4968.4424:1 DEBUG: write_prim ($T0505:c8fe2800;04:a0fe2800;08:38164000;thread:1148;#f0) -> 55 To recap, on Windows, 'select' only works with sockets, so we have a wrapper, gdb_select, that uses the GDB serial abstraction to handle sockets, consoles, pipes, and serial ports. Each serial descriptor has a thread associated (we call those the select threads), and those threads communicate with the main thread by means of standard Windows events. It basically goes like this: gdb_select first loops through all fds of interest, calling their wait_handle hooks, which returns an event that WaitForMultipleObjects can wait on. gdb_select then blocks in WaitForMultipleObjects with all those event handles. The wait_handle hook is responsible for arranging for the returned event to become set once data is available. This is done by setting the descriptor's helper thread running, which itself knows how to wait for data from the type of handle it manages (sockets, pipes, consoles, files, etc.). Once data arrives, the select thread sets the corresponding event which unblocks WaitForMultipleObjects within gdb_select. However, the wait_handle hook can also apply an optimization: if data is already pending, then there's no need to set the thread running, and the descriptors event can be set immediately. It's around this latter aspect that lies the bug/race. Adding some ad hoc debug logs to ser-mingw.c and mingw-hdep.c, we see the following sequence of events, right after sending "$vCont;s:1148;c#5e". Thread 1 is the main thread, and thread 2 is the socket's helper/select thread. gdb_select was only passed one descriptor to wait on, the remote target's socket. net_windows_select_thread is the entry point of the select threads for sockets. #1 - thread 1: gdb_select: enter #2 - thread 2: net_windows_select_thread: WaitForMultipleObjects blocking gdb_select walked over the wait_handle hooks, and woke up the socket's helper thread. The helper thread is now blocked waiting for socket events. #3 - thread 1: gdb_select: WaitForMultipleObjects polling (timeout=0ms) #4 - thread 1: gdb_select: WaitForMultipleObjects returned 102 (WAIT_TIMEOUT) There was no pending data available yet, and gdb_select was passed timeout==0ms, and so WaitForMultipleObjects times out immediately. #5 - thread 2: net_windows_select_thread: WaitForMultipleObjects returned 1 Just afterwards, socket data arrives, and thread 2 wakes up. Thread 2 calls WSAEnumNetworkEvents, which clears state->sock_event, and marks the serial's read_event event, telling the main thread that data is available. #6 - thread 1: gdb_select: call serial_done_wait_handle on each serial gdb_select stops all the helper/select threads. #7 - thread 1: gdb_select: return 0 (WAIT_TIMEOUT) gdb_select in the main thread returns to the caller. Note that at this point, data is pending on the socket, the serial's read_event is set, but the socket's sock_event event is not set, until _further_ data arrives. Now GDB does its thing and goes back to the event loop. That calls gdb_select, but with timeout==INFINITE. Again, gdb_select calls the socket serial's wait_handle hook. It first clears its events, starting from a clean slate: ResetEvent (state->base.read_event); ResetEvent (state->base.except_event); ResetEvent (state->base.stop_select); That cleared read_event, which was previously set in #5 above. And then it checks for pending events, in the sock_event event: /* Check any pending events. This both avoids starting the thread unnecessarily, and handles stray FD_READ events (see below). */ if (WaitForSingleObject (state->sock_event, 0) == WAIT_OBJECT_0) { That also fails because state->sock_event was cleared in #5 too... So the wait_handle hook erroneously decides that it needs to start the helper thread to wait for input: #8 - thread 2: net_windows_select_thread: WaitForMultipleObjects blocking #9 - thread 1: gdb_select: WaitForMultipleObjects blocking (INFINITE) But, GDBserver already sent all it had to send, so both threads waits forever... At first I thought that net_windows_wait_handle shouldn't be resetting state->base.read_event or state->base.except_event, but looking deeper, the pipe and console wait_handle hooks reset all events too. It actually makes sense that way -- consuming an event from different threads is bad practice, and, we should always be able to query pending state without looking at the state->sock_event from within net_windows_wait_handle. The end result is much simpler, and makes net_windows_select_thread look a lot like console_select_thread, actually. gdb/ 2014-06-11 Pedro Alves PR remote/17028 * ser-mingw.c (net_windows_socket_check_pending): New function. (net_windows_select_thread): Ignore spurious wakeups. Use net_windows_socket_check_pending. (net_windows_wait_handle): Check for pending events with ioctlsocket, through net_windows_socket_check_pending, instead of checking the socket's event. commit 7ed689ad61de0cbfe4e5a6f18f097776128202e4 Author: Alan Modra Date: Wed Jun 11 19:11:12 2014 +0930 Fix silly thinko * linker.c (unwrap_hash_lookup): Add missing parens. commit 07821655a9fb9ed966984db4c324abbaea67ddb6 Author: Kai Tietz Date: Wed Jun 11 09:15:54 2014 +0200 * libcoff-in.h (coff_tdata): Make relocbase member unsigned. * libcoff.h: Regenerated. commit bad1a9f77e3e3548aeb4e4eda9f482b9093346b3 Author: Kai Tietz Date: Thu Jun 5 10:59:08 2014 +0200 * libcoff-in.h (coff_tdata): Make relocbase member unsigned. * libcoff.h: Regenerated. commit e8de474960b6866797bec0bd35b3c720aa2e9053 Author: Alan Modra Date: Wed Jun 11 09:31:20 2014 +0930 daily update commit 5a6c770930a54585c6d4bd9257ce7636b469d7c1 Author: Siva Chandra Date: Wed Jun 4 10:50:11 2014 -0700 Wrap PyObject_Get/HasAttrString in a function with second arg having const qualifier. This is done to avoid errors when compiled with -Werror against Python-2.4 which did not have the const qualifier for the second argument of these functions. gdb/ * python/python-internal.h (gdb_PyObject_GetAttrString) (gdb_PyObject_HasAttrString): New inline function definitions. * py-value.c (get_field_flag): Remove the now unnecessary cast to char * of the second argument to PyObject_GetAttrString. commit d9949a367352c66b7d90ca32bdbd5cac38c14b53 Author: H.J. Lu Date: Tue Jun 10 11:16:41 2014 -0700 Only print prefixes before fwait gas/testsuite/ * gas/i386/prefix.s: Add another fwait test. * gas/i386/prefix.d: Updated. opcodes/ * i386-dis.c (fwait_prefix): New. (ckprefix): Set fwait_prefix. (print_insn): Properly print prefixes before fwait. commit b71c404358dbc78d3e84c4299c6139c5291ac441 Author: Alan Modra Date: Tue Jun 10 23:07:52 2014 +0930 add pr number to changelog commit 7b8e2718e4412ddc1e42c6a68166de919eb62221 Author: Alan Modra Date: Tue Jun 10 23:02:55 2014 +0930 missing changelog entries for 8a5da09b9 commit 8a5da09b9e326a19e78b20a1021a5148ea0484b0 Author: Alan Modra Date: Tue Jun 10 21:50:21 2014 +0930 Unwrap symbols for debug information Fixes issues with dwz multi-file (-m) and ld's -wrap option. Symbols referenced from DWARF debug info in a separate file, eg. to specify low and high pc, must use the real symbol. The DWARF info is specifying attributes of the real function, not one interposed with --wrap. include/ * bfdlink.h (unwrap_hash_lookup): Declare. bfd/ * linker.c (unwrap_hash_lookup): New function. * elf-bfd (RELOC_FOR_GLOBAL_SYMBOL): Call unwrap_hash_lookup. * elf32-i370.c (i370_elf_relocate_section): Likewise. * elf32-m32c.c (m32c_elf_relocate_section): Likewise. * elf32-m32r.c (m32r_elf_relocate_section): Likewise. * elf32-score.c (s3_bfd_score_elf_relocate_section): Likewise. * elf32-score7.c (s7_bfd_score_elf_relocate_section): Likewise. * elf32-spu.c (spu_elf_relocate_section): Likewise. * elf64-hppa.c (elf64_hppa_relocate_section): Likewise. commit 0e58ee40a2cec3c4bf796980fb05f93540e40ec2 Author: Joel Brobecker Date: Fri Jun 6 11:28:27 2014 -0400 thinko in serial.c::serial_write debug trace I noticed that, when using 'set debug serial 1', the "write" traces would always be NUL characters: [ w \x00][\x00][\x00][\x00][\x00][etc] This is due to a small thinko in the loop that output each character, where we accidently used the loop boundary instead of the loop index to index the character to be printed. After this patch is applied, the output now becomes: [ w $][v][C][o][n][t][?][#][4][9] gdb/ChangeLog: * serial.c (serial_write): Fix index of character to be printed in call to serial_logchar when serial debug traces are enabled. commit d190df30a147b90e2f189c2038b8ffab5fd8af60 Author: Joel Brobecker Date: Tue Jun 10 10:48:16 2014 +0200 gdbtypes.resolve_dynamic_range: Add function description. gdb/ChangeLog: * gdbtypes (resolve_dynamic_range): Add function description. commit ef94b0f0427936cd9b02183824a96b3a1f050017 Author: Alan Modra Date: Tue Jun 10 09:30:40 2014 +0930 daily update commit 9baa787b14d9a92067ecb1731407c5abe37d7c3c Author: Cary Coutant Date: Mon Jun 9 14:55:02 2014 -0700 Add check to keep from segfaulting on a corrupt .debug_pubnames section. gold/ * dwarf_reader.cc (Dwarf_pubnames_table::read_header): Check that unit_length is within section bounds. commit 8f89af0abe40c9231f42ad3193a45e8fccb35720 Author: Cary Coutant Date: Mon Jun 9 12:57:31 2014 -0700 Print unattached sections in the link map. gold/ PR gold/16980 * layout.cc (Layout::print_to_mapfile): Print unattached sections in map. ----------------------------------------------------------------------- hooks/post-receive -- Repository for Project Archer.