aboutsummaryrefslogtreecommitdiff
path: root/gdb
AgeCommit message (Collapse)AuthorFilesLines
2015-06-30Correctly initialize the TUI locator windowPatrick Palka2-1/+6
The call to tui_alloc_content in tui_set_locator_info passes locator->type as the type of the window whose content is being allocated. This may seem correct but it's actually not because when this code path actually get executed locator->type has not yet been to set LOCATOR_WIN so it defaults to 0 i.e. SRC_WIN. Thus we allocate the content of the locator window as if it was the source window. This oversight turns out not to be a big deal in practice but the patch that follows depends on the locator's proc_name and full_name arrays to be initialized to the empty string which is done by tui_alloc_content if we pass to it LOCATOR_WIN. This patch fixes this bug by explicitly passing LOCATOR_WIN to tui_alloc_content. gdb/ChangeLog: * tui/tui-stack.c (tui_set_locator_info): Explicitly pass LOCATOR_WIN to tui_alloc_content.
2015-06-30Handle media instructions in arm software single step.Yao Qi2-0/+13
This patch fixes PR 18605 which is about incorrectly decoding media instructions in software single step. gdb: 2015-06-30 Yao Qi <yao.qi@linaro.org> PR tdep/18605 * arm-tdep.c (arm_get_next_pc_raw): Break for media instructions.
2015-06-29Turn on dwarf2 unwinding for Renesas RX architectureKevin Buettner2-4/+28
This change turns on dwarf2 unwinding in rx-tdep.c. I found it necessary to add rx_dwarf_reg_to_regnum in order to cause PC to be mapped correctly. gdb/ChangeLog: * rx-tdep.c (RX_PSW_REGNUM): New enum constant. (rx_dwarf_reg_to_regnum): New function. (rx_gdbarch_init): Register rx_dwarf_reg_to_regnum. Use dwarf2 unwinding.
2015-06-29PR threads/18127 - threads spawned by infcall end up stuck in "running" statePedro Alves6-18/+148
Refs: https://sourceware.org/ml/gdb/2015-03/msg00024.html https://sourceware.org/ml/gdb/2015-06/msg00005.html On GNU/Linux, if an infcall spawns a thread, that thread ends up with stuck running state. This happens because: - when linux-nat.c detects a new thread, it marks them as running, and does not report anything to the core. - we skip finish_thread_state when the thread that is running the infcall stops. As result, that new thread ends up with stuck "running" state, even though it really is stopped. On Windows, _all_ threads end up stuck in running state, not just the one that was spawned. That happens because when a new thread is detected, unlike linux-nat.c, windows-nat.c reports TARGET_WAITKIND_SPURIOUS to infrun. It's the fact that that event does not cause a user-visible stop that triggers the problem. When the target is re-resumed, we call set_running with a wildcard ptid, which marks all thread as running. That set_running is not suppressed because the (leader) thread being resumed does not have in_infcall set. Later, when the infcall finally finishes successfully, nothing marks all threads back to stopped. We can trigger the same problem on all targets by having a thread other than the one that is running the infcall report a breakpoint hit to infrun, and then have that breakpoint not cause a stop. That's what the included test does. The fix is to stop GDB from suppressing the set_running calls while doing an infcall, and then set the threads back to stopped when the call finishes, iff they were originally stopped before the infcall started. (Note the MI *running/*stopped event suppression isn't affected.) Tested on x86_64 GNU/Linux. gdb/ChangeLog: 2015-06-29 Pedro Alves <palves@redhat.com> PR threads/18127 * infcall.c (run_inferior_call): On infcall success, if the thread was marked stopped before, reset it back to stopped. * infrun.c (resume): Don't suppress the set_running calls when doing an infcall. (normal_stop): Only discard the finish_thread_state cleanup if the infcall succeeded. gdb/testsuite/ChangeLog: 2015-06-29 Pedro Alves <palves@redhat.com> PR threads/18127 * gdb.threads/hand-call-new-thread.c: New file. * gdb.threads/hand-call-new-thread.c: New file.
2015-06-29Fix email in ChangeLog entry.Pierre Langlois1-1/+1
2015-06-29[GDBServer][AArch64] Enable support for Z0 packetsPierre Langlois2-1/+6
This patch lets GDBServer handle software breakpoints instead of relying on GDB. gdb/gdbserver/ChangeLog: * linux-aarch64-low.c (aarch64_supports_z_point_type): Enable for Z_PACKET_SW_BP.
2015-06-29[GDBServer][AArch64] Use the same break instruction as GDBPierre Langlois2-6/+15
GDB uses a "brk #0" instruction to perform a software breakpoint while GDBServer uses an illegal instruction. Both instructions should match. When enabling support for the 'Z0' packet, we let GDBServer insert the breakpoint instruction instead of GDB. And in case of permanent breakpoints for example, GDB will check if a breakpoint is inserted in the inferior with `program_breakpoint_here_p (gdbarch, address)', and compare the instruction read from the inferior with the breakpoint instruction. On AArch64, instructions are always little endian so we need to represent it as an array of bytes, as done in aarch64-tdep.c. gdb/gdbserver/ChangeLog: * linux-aarch64-low.c: Remove comment about endianness. (aarch64_breakpoint): Change type to gdb_byte[]. Set to "brk #0". (aarch64_breakpoint_at): Change type of insn to gdb_byte[]. Use memcmp.
2015-06-29Update my email addressPierre Langlois2-1/+5
gdb/ChangeLog: * MAINTAINERS (Write After Approval): Update my email address.
2015-06-26PR 16253 revisitedKeith Seitz8-6/+259
Last year a patch was submitted/approved/commited to eliminate symbol_matches_domain which was causing this problem. It was later reverted because it introduced a (severe) performance regression. Recap: (gdb) list 1 enum e {A,B,C} e; 2 int main (void) { return 0; } 3 (gdb) p e Attempt to use a type name as an expression The parser attempts to find a symbol named "e" of VAR_DOMAIN. This gets passed down through lookup_symbol and (eventually) into block_lookup_symbol_primary, which iterates over the block's dictionary of symbols: for (sym = dict_iter_name_first (block->dict, name, &dict_iter); sym != NULL; sym = dict_iter_name_next (name, &dict_iter)) { if (symbol_matches_domain (SYMBOL_LANGUAGE (sym), SYMBOL_DOMAIN (sym), domain)) return sym; } The problem here is that we have a symbol named "e" in both STRUCT_DOMAIN and VAR_DOMAIN, and for languages like C++, Java, and Ada, where a tag name may be used as an implicit typedef of the type, symbol_matches_domain ignores the difference between VAR_DOMAIN and STRUCT_DOMAIN. As it happens, the STRUCT_DOMAIN symbol is found first, considered a match, and that symbol is returned to the parser, eliciting the (now dreaded) error message. Since this bug exists specifically because we have both STRUCT and VAR_DOMAIN symbols in a given block/CU, this patch rather simply/naively changes block_lookup_symbol_primary so that it continues to search for an exact domain match on the symbol if symbol_matches_domain returns a symbol which does not exactly match the requested domain. This "fixes" the immediate problem, but admittedly might uncover other, related bugs. [Paranoia?] However, it causes no regressions (functional or performance) in the test suite. A similar change has been made to block_lookup_symbol for other cases in which this bug might appear. The tests from the previous submission have been resurrected and updated. However since we can still be given a matching symbol with a different domain than requested, we cannot say that a symbol "was not found." The error messages today will still be the (dreaded) "Attempt to use a type name..." ChangeLog PR 16253 * block.c (block_lookup_symbol): For non-function blocks, continue to search for a symbol with an exact domain match Otherwise, return any previously found "best domain" symbol. (block_lookup_symbol_primary): Likewise. testsuite/ChangeLog PR 16253 * gdb.cp/var-tag-2.cc: New file. * gdb.cp/var-tag-3.cc: New file. * gdb.cp/var-tag-4.cc: New file. * gdb.cp/var-tag.cc: New file. * gdb.cp/var-tag.exp: New file.
2015-06-26Add option to remove duplicate command history entriesPatrick Palka7-1/+219
This patch implements the new option "history remove-duplicates", which controls the removal of duplicate history entries ("off" by default). The motivation for this option is to be able to reduce the prevalence of basic commands such as "up" and "down" in the history file. These common commands crowd out more unique commands in the history file (when the history file has a fixed size), and they make navigation of the history file via ^P, ^N and ^R more inconvenient. The option takes an integer denoting the number of history entries to look back at for a history entry that is a duplicate of the latest one. "history remove-duplicates 1" is equivalent to bash's ignoredups option, and "history remove-duplicates unlimited" is equivalent to bash's erasedups option. [ I decided to go with this integer approach instead of a tri-state enum because it's slightly more flexible and seemingly more intuitive than leave/erase/ignore. ] gdb/ChangeLog: * NEWS: Mention the new option "history remove-duplicates". * top.c (history_remove_duplicates): New static variable. (show_history_remove_duplicates): New static function. (gdb_add_history): Conditionally remove duplicate history entries. (init_main): Add "history remove-duplicates" option. gdb/doc/ChangeLog: * gdb.texinfo (Command History): Document the new option "history remove-duplicates". gdb/testsuite/ChangeLog: * gdb.base/history-duplicates.exp: New test.
2015-06-26Add tab completion for TUI's "focus" commandPatrick Palka4-1/+97
The implementation is pretty straightforward, with the only caveat being that the "src", "cmd", "next" and "prev" entries get delibrately added to the completion list even when the TUI has not yet been initialized (i.e. has never been enabled during the session), since invoking the "focus" command with these arguments already works when the TUI has not yet been initialized. gdb/ChangeLog: * tui/tui-win.c (focus_completer): New static function. (_initialize_tui_win): Set the completion function of the "focus" command to focus_completer. gdb/testsuite/ChangeLog: * gdb.base/completion.exp: Test the completion of the "focus" command.
2015-06-26Do not skip prologue for asm (.S) filesJan Kratochvil6-3/+105
GDB tries to skip prologue for .S files according to .debug_line but it then places the breakpoint to a location where it is never hit. This is because #defines in .S files cause prologue skipping which is completely inappropriate, for s390x: glibc/sysdeps/unix/syscall-template.S 78:/* This is a "normal" system call stub: if there is an error, 79: it returns -1 and sets errno. */ 80: 81:T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS) 82: ret 00000000000f4210 T __select Line Number Statements: Extended opcode 2: set Address to 0xf41c8 Advance Line by 80 to 81 Copy Advance PC by 102 to 0xf422e Special opcode 6: advance Address by 0 to 0xf422e and Line by 1 to 82 Special opcode 34: advance Address by 2 to 0xf4230 and Line by 1 to 83 Advance PC by 38 to 0xf4256 Extended opcode 1: End of Sequence Compilation Unit @ offset 0x28b3e0: <0><28b3eb>: Abbrev Number: 1 (DW_TAG_compile_unit) <28b3ec> DW_AT_stmt_list : 0x7b439 <28b3f0> DW_AT_low_pc : 0xf41c8 <28b3f8> DW_AT_high_pc : 0xf4256 <28b400> DW_AT_name : ../sysdeps/unix/syscall-template.S <28b423> DW_AT_comp_dir : /usr/src/debug////////glibc-2.17-c758a686/misc <28b452> DW_AT_producer : GNU AS 2.23.52.0.1 <28b465> DW_AT_language : 32769 (MIPS assembler) without debuginfo or with debuginfo and the fix - correct address: (gdb) b select Breakpoint 1 at 0xf4210 It is also where .dynsym+.symtab point to: 00000000000f4210 T __select 00000000000f4210 W select with debuginfo, without the fix: (gdb) b select Breakpoint 1 at 0xf41c8: file ../sysdeps/unix/syscall-template.S, line 81. One part is to behave for asm files similar way like for 'locations_valid': /* Symtab has been compiled with both optimizations and debug info so that GDB may stop skipping prologues as variables locations are valid already at function entry points. */ unsigned int locations_valid : 1; The other part is to extend the 'locations_valid'-like functionality more. Both minsym_found and find_function_start_sal need to be patched, otherwise their addresses do not match and GDB regresses on ppc64: gdb/ChangeLog 2015-06-26 Jan Kratochvil <jan.kratochvil@redhat.com> * linespec.c (minsym_found): Reset sal.PC for COMPUNIT_LOCATIONS_VALID and language_asm.. * symtab.c (find_function_start_sal): Likewise. gdb/testsuite/ChangeLog 2015-06-26 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.arch/amd64-prologue-skip.S: New file. * gdb.arch/amd64-prologue-skip.exp: New file.
2015-06-25py-prettyprint.exp: Add is_address_zero_readable checkSimon Marchi2-2/+9
gdb/testsuite/ChangeLog: * gdb.python/py-prettyprint.exp (run_lang_tests): Add is_address_zero_readable check.
2015-06-25Correctly notice empty sysroots in solib_find_1Gary Benson2-9/+14
Some parts of solib_find_1 should only operate if the sysroot is nonempty after processing, but the logic that checked this happened before trailing slashes were stripped so empty but non-NULL sysroots were possible. This commit moves the logic so it correctly notices all empty sysroots. gdb/ChangeLog: * solib.c (solib_find_1): Set local variable sysroot to NULL if it is the empty string after trailing slashes have been stripped.
2015-06-25Remove gdb_sysroot NULL checksGary Benson5-22/+22
Since fed040c6a50399617d8265cbddc7fd21b3f134ef gdb_sysroot is never NULL. This commit removes all gdb_sysroot NULL checks. gdb/ChangeLog: * exec.c (exec_file_locate_attach): Remove gdb_sysroot NULL check. * infrun.c (follow_exec): Likewise. * remote.c (remote_filesystem_is_local): Likewise. * solib.c (solib_find_1): Likewise.
2015-06-24Fix lrealpath memory leak in build_id_to_debug_bfdKeith Seitz2-0/+9
Valgrind reports memory leaking from build_id_to_debug_bfd: ==7261== 88 bytes in 2 blocks are definitely lost in loss record 31,319 of 35,132 ==7261== at 0x4A06BCF: malloc (vg_replace_malloc.c:296) ==7261== by 0x32CA88A9B9: strdup (strdup.c:42) ==7261== by 0xFE62AB: lrealpath (lrealpath.c:88) ==7261== by 0x7F7AD6: build_id_to_debug_bfd (build-id.c:116) ==7261== by 0x7F7BB5: find_separate_debug_file_by_buildid (build-id.c:149) ==7261== by 0x6D9382: elf_symfile_read (elfread.c:1348) ==7261== by 0x777F02: read_symbols (symfile.c:875) ==7261== by 0x778505: syms_from_objfile_1 (symfile.c:1078) ==7261== by 0x778548: syms_from_objfile (symfile.c:1094) ==7261== by 0x778746: symbol_file_add_with_addrs (symfile.c:1191) ==7261== by 0x77893B: symbol_file_add_from_bfd (symfile.c:1280) ==7261== by 0x8E51E3: solib_read_symbols (solib.c:706) ==7261== by 0x8E58AF: solib_add (solib.c:1029) This occurs because commit 1be5090b in bfd, addressing PR 11983, started taking a copy of the input filename instead of directly caching it. It appears that this code was never updated to reflect that API change. This simple patch creates a cleanup to free the return value for lrealpath. gdb/ChangeLog * build-id.c (build_id_to_debug_bfd): Add cleanup to free return value from lrealpath.
2015-06-24gdb: sim: merge the sysroot update logic togetherMike Frysinger2-3/+9
Initialize the local sysroot fully before we start using it. This keeps it all a bit simpler.
2015-06-24Add missing ChangeLog entries for yesterday's commmit below.Peter Bergner1-0/+5
gdb/testsuite/ * gdb.arch/powerpc-power.exp <rfebb>: Fixup test results. * gdb.arch/powerpc-power.s <rfebb>: Likewise.
2015-06-24gdb: sim: handle target sysroot prefixMike Frysinger2-2/+12
The default gdb sysroot now sets itself to "target:". This works for most remote targets, but when using the simulator, this causes problems as the sim will attempt to search for that path. Update the remote-sim logic to skip this leading prefix when it is found so that the sysroot isn't passed in as an invalid value.
2015-06-24Call set_gdbarch_get_siginfo_type in linux_init_abiYao Qi13-21/+23
linux_get_siginfo_type is installed to many linux gdbarch. This patch is to move this to a common area linux-tdep.c:linux_init_abi, so that linux_get_siginfo_type is installed to every linux gdbarch. If some linux gdbarch needs its own version, please override it in $ARCH_linux_init_abi. In the testsuite, we enable siginfo related tests for all linux targets. gdb: 2015-06-24 Yao Qi <yao.qi@linaro.org> * aarch64-linux-tdep.c (aarch64_linux_init_abi): Don't call set_gdbarch_get_siginfo_type. * amd64-linux-tdep.c (amd64_linux_init_abi_common): Likewise. * arm-linux-tdep.c (arm_linux_init_abi): Likewise. * i386-linux-tdep.c (i386_linux_init_abi): Likewise. * m68klinux-tdep.c (m68k_linux_init_abi): Likewise. * ppc-linux-tdep.c (ppc_linux_init_abi): Likewise. * s390-linux-tdep.c (s390_gdbarch_init): Likewise. * tilegx-linux-tdep.c (tilegx_linux_init_abi): Likewise. * linux-tdep.c (linux_get_siginfo_type): Change it to static. (linux_init_abi): Call set_gdbarch_get_siginfo_type. * linux-tdep.h (linux_get_siginfo_type): Remove the declaration. gdb/testsuite: 2015-06-24 Yao Qi <yao.qi@linaro.org> * lib/gdb.exp (supports_get_siginfo_type): Return 1 for all linux targets.
2015-06-24New proc supports_get_siginfo_typeYao Qi4-6/+21
Both siginfo-obj.exp and siginfo-thread.exp have the same code checking the support of geting a type of siginfo for a given arch. This patch is to move these code into a proc supports_get_siginfo_type. gdb/testsuite: 2015-06-24 Yao Qi <yao.qi@linaro.org> * lib/gdb.exp (supports_get_siginfo_type): New proc. * gdb.base/siginfo-obj.exp: Invoke supports_get_siginfo_type. * gdb.base/siginfo-thread.exp: Likewise.
2015-06-24Remove redundant include directives.Gary Benson26-45/+30
stdint.h was added to common-defs.h some months ago and should no longer be included directly by any file. gdb_assert.h was added to common-defs.h nearly a year ago, but three includes have crept in since then. This commit removes all such redundant include directives. gdb/ChangeLog: * common/buffer.c (stdint.h): Do not include. * common/print-utils.c (stdint.h): Likewise. * compile/compile-c-symbols.c (gdb_assert.h): Likewise. * compile/compile-c-types.c (gdb_assert.h): Likewise. * ft32-tdep.c (gdb_assert.h): Likewise. * guile/scm-utils.c (stdint.h): Likewise. * i386-linux-tdep.c (stdint.h): Likewise. * i386-tdep.c (stdint.h): Likewise. * nat/linux-btrace.c (stdint.h): Likewise. * nat/linux-btrace.h (stdint.h): Likewise. * nat/linux-ptrace.c (stdint.h): Likewise. * nat/mips-linux-watch.h (stdint.h): Likewise. * ppc-linux-nat.c (stdint.h): Likewise. * python/python-internal.h (stdint.h): Likewise. * stub-termcap.c (stdlib.h): Likewise. * target/target.h (stdint.h): Likewise. * xtensa-linux-nat.c (stdint.h): Likewise. gdb/gdbserver/ChangeLog: * linux-i386-ipa.c (stdint.h): Do not include. * lynx-i386-low.c (stdint.h): Likewise. * lynx-ppc-low.c (stdint.h): Likewise. * mem-break.c (stdint.h): Likewise. * thread-db.c (stdint.h): Likewise. * tracepoint.c (stdint.h): Likewise. * win32-low.c (stdint.h): Likewise.
2015-06-23Fix GDBHISTSIZE test failure on i686Patrick Palka2-1/+14
The test test_histsize_history_setting "99999999999999999999999999999999999" "unlimited" was failing on i686 because the condition in init_history() for determining whether to map a large GDBHISTSIZE value to infinity was long var = strtol (tmpenv); if (var > INT_MAX) history_size = unlimited; but this condition is never true on i686 because INT_MAX == LONG_MAX. So in order to properly map large out-of-range values of GDBHISTSIZE to infinity on targets where LONG_MAX > INT_MAX as well as on i686, we have to instead change the above condition to if (var > INT_MAX || (var == INT_MAX && errno == ERANGE)) history_size = unlimited; gdb/ChangeLog: * top.c (init_history): Look at errno after calling strtol to properly map large GDBHISTSIZE values to infinity.
2015-06-23inferior.h (struct inferior_suspend_state): Delete, unused.Doug Evans4-34/+6
gdb/ChangeLog: * inferior.h (struct inferior_suspend_state): Delete, unused. All references deleted.
2015-06-23Fix rfebb gdb test cases.Peter Bergner2-3/+3
The following patch fixed the assembly / disassembly of the rfebb instruction: https://sourceware.org/ml/binutils/2015-06/msg00190.html This patch updates the gdb testsuite to match the new disassembly behavior. gdb/testsuite/ * gdb.arch/powerpc-power.exp <rfebb>: Fixup test results. * gdb.arch/powerpc-power.s <rfebb>: Likewise.
2015-06-23gdb: microblaze: delete useless stubsMike Frysinger2-26/+7
These don't accomplish anything the common core doesn't already, so punt them as they purely waste code.
2015-06-23Convert have_ptrace_getregset to a tri-state booleanYao Qi7-29/+53
have_ptrace_getregset is a tri-state variable (-1, 0, 1), and we have some conditions like "if (have_ptrace_getregset)", which is not correct. I'll explain why it is not correct in the following example. This fix to this problem to replace the test (have_ptrace_getregset) to test (have_ptrace_getregset == 1) or (have_ptrace_getregset == -1) etc. However Doug thinks it hinders readability https://sourceware.org/ml/gdb-patches/2015-05/msg00692.html so I decide to add a new enum tribool and change have_ptrace_getregset to it, in order to make these tests more readable. have_ptrace_getregset is initialised to -1, and is adjusted to 0 or 1 in $ARCH_linux_read_description according to the capability of the kernel. However, it is possible that have_ptrace_getregset is used before it is set to 0 or 1, which means it is still -1. This is shown below. (gdb) run Starting program: gdb/testsuite/gdb.base/break Breakpoint 2, amd64_linux_fetch_inferior_registers (ops=0xceaa80, regcache=0xe72000, regnum=16) at git/gdb/amd64-linux-nat.c:128 128 { top?p have_ptrace_getregset $1 = TRIBOOL_UNKNOWN top?c Continuing. Breakpoint 2, amd64_linux_fetch_inferior_registers (ops=0xceaa80, regcache=0xe72000, regnum=16) at git/gdb/amd64-linux-nat.c:128 128 { top?c Continuing. Breakpoint 1, x86_linux_read_description (ops=0xceaa80) at git/gdb/x86-linux-nat.c:117 117 { PTRACE_GETREGSET command is used even GDB doesn't know whether PTRACE_GETREGSET is supported or not. It is wrong, but works on x86. However it doesn't work on arm-linux if the kernel doesn't support PTRACE_GETREGSET at all. We'll get: (gdb) run Starting program: gdb/testsuite/gdb.base/break warning: Unable to fetch general register. PC register is not available gdb: 2015-06-23 Yao Qi <yao.qi@linaro.org> * amd64-linux-nat.c (amd64_linux_fetch_inferior_registers): Check whether have_ptrace_getregset is TRIBOOL_TRUE explicitly. (amd64_linux_store_inferior_registers): Likewise. * arm-linux-nat.c (fetch_fpregister): Likewise. (fetch_fpregs, store_fpregister): Likewise. (store_fpregister, store_fpregs): Likewise. (fetch_register, fetch_regs): Likewise. (store_register, store_regs): Likewise. (fetch_vfp_regs, store_vfp_regs): Likewise. (arm_linux_read_description): Check have_ptrace_getregset is TRIBOOL_UNKNOWN. Set have_ptrace_getregset to TRIBOOL_TRUE or TRIBOOL_FALSE. * i386-linux-nat.c (fetch_xstateregs): Check have_ptrace_getregset is not TRIBOOL_TRUE. (store_xstateregs): Likewise. * linux-nat.c (have_ptrace_getregset): Change its type to enum tribool. * linux-nat.h (tribool): New enum. * x86-linux-nat.c (x86_linux_read_description): Use enum tribool. Check whether have_ptrace_getregset is TRIBOOL_TRUE.
2015-06-22Add comments on using board file remote-gdbserver-on-localhost.expYao Qi2-0/+7
This commit is to add comments on using this board file and the requirements on localhost. gdb/testsuite: 2015-06-22 Yao Qi <yao.qi@linaro.org> * boards/remote-gdbserver-on-localhost.exp: Add comments.
2015-06-22Don't skip hw breakpoint/watchpoint tests for aarch64 targetYao Qi2-1/+9
This patch is to let skip_hw_breakpoint_tests and skip_hw_watchpoint_tests return 0 for aarch64 target, since aarch64 has HW watchpoint and breakpoint registers. With this patch applied, about 1560 watchpoint/breakpoint related tests become enabled on aarch64-linux native testing. gdb/testsuite: 2015-06-22 Yao Qi <yao.qi@linaro.org> * lib/gdb.exp (skip_hw_breakpoint_tests): Return 0 for target aarch64*-*-*. (skip_hw_watchpoint_tests): Likewise.
2015-06-19Remove special support in gdb for Sun's version of stabs.Doug Evans13-264/+43
Discussion: https://sourceware.org/ml/gdb-patches/2015-05/msg00169.html gdb/ChangeLog: * NEWS: Mention Sun's version of stabs is no longer supported. * elfread.c (free_elfinfo): Delete. All uses updated. (elfstab_offset_sections): Delete. All uses updated. * gdb-stabs.h (stab_section_info): Delete. All uses updated. * psympriv.h (partial_symtab) <section_offsets>: Delete. All uses updated. * psymtab.c (start_psymtab_common): Delete arg section_offsets. All callers updated. gdb/doc/ChangeLog: * stabs.texinfo (ELF Linker Relocation): Mention Sun stabs is no longer supported.
2015-06-18remote: consider addressable unit size when reading/writing memorySimon Marchi6-112/+200
Adapt code in remote.c to take into account addressable unit size when reading/writing memory. A few variables are renamed and suffixed with _bytes or _units. This way, it's more obvious if there is any place where we add or compare values of different kinds (which would be a mistake). gdb/ChangeLog: * common/rsp-low.c (needs_escaping): New. (remote_escape_output): Add unit_size parameter. Refactor to support multi-byte addressable units. Rename parameters. * common/rsp-low.h (remote_escape_output): Add unit_size parameter and rename others. Update doc. * remote.c (align_for_efficient_write): New. (remote_write_bytes_aux): Add unit_size parameter and use it. Rename some variables. Update doc. (remote_xfer_partial): Get unit size and use it. (remote_read_bytes_1): Add unit_size parameter and use it. Rename some variables. Update doc. (remote_write_bytes): Same. (remote_xfer_live_readonly_partial): Same. (remote_read_bytes): Same. (remote_flash_write): Update call to remote_write_bytes_aux. (remote_write_qxfer): Update call to remote_escape_output. (remote_search_memory): Same. (remote_hostio_pwrite): Same. gdb/gdbserver/ChangeLog: * server.c (write_qxfer_response): Update call to remote_escape_output.
2015-06-18Test the interaction between GDBHISTSIZE and .gdbinitPatrick Palka2-3/+25
The value inside the GDBHISTSIZE environment variable, only if valid, should override setting the history size through one's .gdbinit file. gdb/testsuite/ChangeLog: * gdb.base/gdbinit-history.exp: Test the interaction between setting GDBHISTSIZE and setting the history size via .gdbinit.
2015-06-17Fix problems with finishing a dummy function call on simulators.Luis Machado2-30/+26
Some simulators don't handle permanent breakpoints properly and will sometimes terminate when hitting such a breakpoint instruction or have unwanted effects. When a permanent breakpoint is inserted, GDB will not attempt to insert other breakpoint locations on top of it, leading to the problem described above. By not marking permanent breakpoint locations as inserted, we allow the insertion of breakpoint locations on top of the permanent ones, preventing the simulators from running into that situation. gdb/ChangeLog: 2015-06-17 Luis Machado <lgustavo@codesourcery.com> * breakpoint.c (add_location_to_breakpoint): Don't mark permanent locations as inserted. Update and expand comment about permanent locations. (bp_loc_is_permanent): Don't return 0 for bp_call_dummy. Move comment to add_location_to_breakpoint. (update_global_location_list): Don't error out if a permanent breakpoint is not marked inserted. Don't error out if a non-permanent breakpoint location is inserted on top of a permanent breakpoint.
2015-06-17Remove unused function make_breakpoint_permanent.Luis Machado3-22/+6
make_breakpoint_permanent is no longer used anywhere and can be safely removed. gdb/ChangeLog: 2015-06-17 Luis Machado <lgustavo@codesourcery.com> * breakpoint.c (make_breakpoint_permanent): Remove unused function. * breakpoint.h (make_breakpoint_permanent): Remove declaration.
2015-06-17Make NEWS entry and manual regarding GDBHISTSIZE more consistentPatrick Palka2-3/+8
... by mentioning in the manual that setting GDBHISTSIZE to the empty string disables truncation, like the NEWS entry does. gdb/doc/ChangeLog: * gdb.texinfo (Command History): Mention that setting GDBHISTSIZE to the empty string disables history truncation.
2015-06-17Tweak the handling of $GDBHISTSIZE edge cases [PR gdb/16999]Patrick Palka7-19/+120
When GDB reads a nonsensical value for the GDBHISTSIZE environment variable, i.e. one that is non-numeric or negative, GDB then sets its history size to 0. This behavior is annoying and also inconsistent with the behavior of bash. This patch makes the behavior of invalid GDBHISTSIZE consistent with how bash handles HISTSIZE. When we encounter a null or out-of-range GDBHISTSIZE (outside of [0, INT_MAX]) we now set the history size to unlimited instead of 0. When we encounter a non-numeric GDBHISTSIZE we do nothing. gdb/ChangeLog: PR gdb/16999 * NEWS: Mention new GDBHISTSIZE behavior. * top.c (init_history): For null or out-of-range GDBHISTSIZE, set history size to unlimited. Ignore non-numeric GDBHISTSIZE. gdb/doc/ChangeLog: PR gdb/16999 * gdb.texinfo (Command History): Mention new GDBHISTSIZE behavior. gdb/testsuite/ChangeLog: PR gdb/16999 * gdb.base/gdbhistsize-history.exp: New test.
2015-06-17Read $GDBHISTSIZE instead of $HISTSIZEPatrick Palka8-14/+36
The HISTSIZE environment variable is generally expected to be read by shells, not by applications. Some distros for example globally export HISTSIZE in /etc/profile -- with the intention that it only affects shells -- and by doing so it renders useless GDB's own mechanism for setting the history size via .gdbinit. Also, annoyances may arise when HISTSIZE is not interpreted the same way by the shell and by GDB, e.g. PR gdb/16999. That can always be fixed on a shell-by-shell basis but it may be impossible to be consistent with the behavior of all shells at once. Finally it just makes sense to not confound shell environment variables with application environment variables. gdb/ChangeLog: * NEWS: Mention that GDBHISTSIZE is read instead of HISTSIZE. * top.c (init_history): Read from GDBHISTSIZE instead of HISTSIZE. (init_main): Refer to GDBHISTSIZE instead of HISTSIZE. gdb/doc/ChangeLog: * gdb.texinfo (Command History): Replace occurrences of HISTSIZE with GDBHISTSIZE. gdb/testsuite/ChangeLog: * gdb.base/gdbinit-history.exp: Replace occurrences of HISTSIZE with GDBHISTSIZE. * gdb.base/readline.exp: Likewise.
2015-06-17Fix tcl errorYao Qi2-3/+6
This patch fixes the following tcl error Running ../../../binutils-gdb/gdb/testsuite/gdb.base/break-interp.exp ... ERROR: (DejaGnu) proc "else" does not exist. The error code is NONE The info on the error is: invalid command name "else" while executing "::tcl_unknown else" ("uplevel" body line 1) invoked from within "uplevel 1 ::tcl_unknown $args" gdb/testsuite: 2015-06-17 Yao Qi <yao.qi@linaro.org> * lib/gdb.exp (get_build_id): Move braces and "else" to the same line.
2015-06-17Don't truncate the history file when history size is unlimitedPatrick Palka4-1/+70
We still do not handle "set history size unlimited" correctly. In particular, after writing to the history file, we truncate the history even if it is unlimited. This patch makes sure that we do not call history_truncate_file() if the history is not stifled (i.e. if it's unlimited). This bug causes the history file to be truncated to zero on exit when one has "set history size unlimited" in their gdbinit file. Although this code exists in GDB 7.8, the bug is masked by a pre-existing bug that's been only fixed in GDB 7.9 (PR gdb/17820). gdb/ChangeLog: * top.c (gdb_safe_append_history): Do not call history_truncate_file if the history is not stifled. gdb/testsuite/ChangeLog: * gdb.base/gdbinit-history.exp: Add test case to check that an unlimited history file does not get truncated on exit.
2015-06-17S390: Add syscall info for syscalls from 344 up to 354Andreas Arnez3-0/+27
Represent new Linux syscalls for s390 and s390x in GDB's syscall info. Add the syscalls from 344 (finit_module) up to 354 (execveat). gdb/ChangeLog: * syscalls/s390-linux.xml: Add syscalls 344 through 354. * syscalls/s390x-linux.xml: Likewise.
2015-06-17Add vector ABI tests to gnu_vector.expAndreas Arnez3-21/+152
So far the gnu_vector test was limited to "static" aspects of GDB's vector support, like evaluating vector-valued expressions. This patch enriches the test and adds checks for GDB's vector ABI support as well. The new checks particularly verify inferior function calls with vector arguments and GDB's handling of vector return values. The test now attempts to compile for the target's "native" architecture, such that a hardware vector ABI is used if available. Since GDB has no vector ABI support for x86 and x86_64 targets, most of the new checks are KFAILed there. gdb/testsuite/ChangeLog: * gdb.base/gnu_vector.c: Include stdarg.h and stdio.h. (VECTOR): New macro. Use it... (int4, uint4, char4, float4, int2, longlong2, float2, double2): ...for these typedefs. (int8, char1, int1, double1): New typedefs. (struct just_int2, struct two_int2): New structures. (add_some_intvecs, add_many_charvecs, add_various_floatvecs) (add_structvecs, add_singlevecs): New functions. (main): Call add_some_intvecs twice. * gdb.base/gnu_vector.exp: Drop GCC version check; just attempt the compile and exit upon failure. Try compiling for the "native" architecture. Test inferior function calls with vector arguments and vector return value handling with "finish" and "return".
2015-06-16GDB Namespaces - Define MSG_CMSG_CLOEXEC if not defined.Michael Eager2-0/+10
2015-06-16 Michael Eager <eager@eagercon.com> * nat/linux-namespaces.c (MSG_CMSG_CLOEXEC): Define if not defined.
2015-06-16Call target_terminal_ours_for_output() before refreshing TUI's frame infoPatrick Palka2-0/+13
In some cases tui_show_frame_info() may get called while the inferior's terminal settings are still in effect. But when we call this function we absolutely need to have our terminal settings in effect because the function is responsible for redrawing TUI's windows following a change in the selected frame or a change in the PC. If our terminal settings are not in effect, the screen does not get redrawn properly, causing temporary display artifacts (which can be fixed via ^L). This scenario happens most prominently when stepping through a program in TUI while a watchpoint is in effect. Here is an example backtrace for when tui_show_frame_info() gets called while target_terminal_is_inferior() == 1: #1 0x00000000004988ee in tui_selected_frame_level_changed_hook (level=0) #2 0x0000000000617b99 in select_frame (fi=0x18c9820) #3 0x0000000000617c3f in get_selected_frame (message=message@entry=0x0) #4 0x00000000004ce534 in update_watchpoint (b=b@entry=0x2d9a760, reparse=reparse@entry=0) #5 0x00000000004d625e in insert_breakpoints () #6 0x0000000000531cfe in keep_going (ecs=ecs@entry=0x7ffea7884ac0) #7 0x00000000005326d7 in process_event_stop_test (ecs=ecs@entry=0x7ffea7884ac0) #8 0x000000000053596e in handle_inferior_event_1 (ecs=0x7ffea7884ac0) The fix is simple: call target_terminal_ours_for_output() before calling tui_show_frame_info() in TUI's frame-changed hook, making sure to restore the original terminal settings afterwards. gdb/ChangeLog: * tui/tui-hooks.c (tui_selected_frame_level_changed_hook): Call target_terminal_ours_for_output() before calling tui_show_frame_info(), and restore the original terminal settings afterwards.
2015-06-16Fix compilation of gdb/arm-linux-nat.c on Raspbian GNU/Linux 7Martin Simmons2-0/+6
GDB trunk fails to compile on Raspbian GNU/Linux 7 because PTRACE_GETREGSET and PTRACE_SETREGSET are not defined in sys/ptrace.h. gcc -g -O2 -I. -I. -I./common -I./config -DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I./../include/opcode -I./../opcodes/.. -I./../readline/.. -I./../zlib -I../bfd -I./../bfd -I./../include -I../libdecnumber -I./../libdecnumber -I./gnulib/import -Ibuild-gnulib/import -DTUI=1 -Wall -Wpointer-arith -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wempty-body -Wpointer-sign -Wmissing-prototypes -Wdeclaration-after-statement -Wmissing-parameter-type -Wold-style-declaration -Wold-style-definition -Wformat-nonliteral -Werror -c -o arm-linux-nat.o -MT arm-linux-nat.o -MMD -MP -MF .deps/arm-linux-nat.Tpo arm-linux-nat.c arm-linux-nat.c: In function 'fetch_fpregister': arm-linux-nat.c:103:21: error: 'PTRACE_GETREGSET' undeclared (first use in this function) arm-linux-nat.c:103:21: note: each undeclared identifier is reported only once for each function it appears in arm-linux-nat.c: In function 'fetch_fpregs': arm-linux-nat.c:144:21: error: 'PTRACE_GETREGSET' undeclared (first use in this function) arm-linux-nat.c: In function 'store_fpregister': arm-linux-nat.c:184:21: error: 'PTRACE_GETREGSET' undeclared (first use in this function) arm-linux-nat.c:211:21: error: 'PTRACE_SETREGSET' undeclared (first use in this function) ... This patch includes the gdb header file nat/linux-ptrace.h, which provides fallback definitions. 2015-06-16 Martin Simmons <martin@lispworks.com> (tiny patch) * arm-linux-nat.c: Include nat/linux-ptrace.h.
2015-06-15MI: consider addressable unit size when reading/writing memorySimon Marchi2-22/+40
As a user of the target memory read/write interface, the MI code must adjust its memory allocations to take into account the addressable memory unitsize of the target. gdb/ChangeLog: mi/mi-main.c (mi_cmd_data_read_memory_bytes): Consider byte size. (mi_cmd_data_write_memory_bytes): Same.
2015-06-15Clarify doc about memory read/write and non-8-bits addressable memory unit sizesSimon Marchi3-29/+58
New in v3: * Change RSP documentation as well. The m, M and X packets now use lengths in addressable memory units. New in v2: * Change wording: use byte for 8-bits chunks and addressable memory unit for the unit of data associated to a single address. * Introduce definition of addressable memory unit in the Memory section. This patch modifies the manual to clarify the MI, RSP and Python APIs in regard to reading/writing memory on architectures with addressable memory unit that are not 8 bits. Care is taken to use the word "addressable memory unit" or "memory unit" when referring to one piece of the smallest addressable size on the current architecture and the word "byte" when referring to an 8-bits data piece. For MI, -data-{read,write}-memory are not modified, since they are deprecated. gdb/doc/ChangeLog: * gdb.texinfo (GDB/MI Data Manipulation): Clarify usage of bytes and memory units for -data-{read,write}-memory-bytes. (Packets): Same for m, M and X packets. * python.texi (Inferiors In Python): Same for read_memory and write_memory.
2015-06-15Cleanup write_memory docSimon Marchi3-6/+9
This doc about write_memory seems outdated. gdb/ChangeLog: * corefile.c (write_memory): Update doc. * gdbcore.h (write_memory): Same.
2015-06-15Code cleanup: Rename enum -> enum filterflagsJan Kratochvil2-6/+12
Bit mask ints are better to make enums as GDB already has support to automatically decode them: before this patch: (gdb) p filterflags $1 = 51 (gdb) p/x filterflags $2 = 0x33 after this patch: (gdb) p filterflags $1 = (COREFILTER_ANON_PRIVATE | COREFILTER_ANON_SHARED | COREFILTER_ELF_HEADERS | COREFILTER_HUGETLB_PRIVATE) gdb/ChangeLog 2015-06-15 Jan Kratochvil <jan.kratochvil@redhat.com> * linux-tdep.c (enum filterflags): Make it from anonymous enum. (dump_mapping_p): Use it for parameter filterflags. (linux_find_memory_regions_full): Use it for variable filterflags.
2015-06-15Merge multiple hex conversionsJan Kratochvil4-18/+18
gdb/ChangeLog 2015-06-15 Aleksandar Ristovski <aristovski@qnx.com Jan Kratochvil <jan.kratochvil@redhat.com> Merge multiple hex conversions. * monitor.c: Include rsp-low.h. (fromhex): Remove definition. gdb/gdbserver/ChangeLog 2015-06-15 Aleksandar Ristovski <aristovski@qnx.com Jan Kratochvil <jan.kratochvil@redhat.com> Merge multiple hex conversions. * gdbreplay.c (tohex): Rename to 'fromhex'. (logchar): Use fromhex.
2015-06-15Move utility functions to common/Jan Kratochvil10-175/+206
gdb/ChangeLog 2015-06-15 Aleksandar Ristovski <aristovski@qnx.com Jan Kratochvil <jan.kratochvil@redhat.com> Move utility functions to common/. * cli/cli-utils.c (skip_spaces, skip_spaces_const, skip_to_space_const): Move defs to common/common-utils.c. * cli/cli-utils.h (skip_spaces, skip_spaces_const, skip_to_space) (skip_to_space_const): Move decls to common/common-utils.h. * common/common-defs.h: Move include of common-types.h before common-utils.h. * common/common-utils.c: Include host-defs.h and ctype.h. (HIGH_BYTE_POSN, is_digit_in_base, digit_to_int, strtoulst): Move from utils.c. (skip_spaces, skip_spaces_const, skip_to_space_const): Move from cli/cli-utils.c. * common/common-utils.h (strtoulst): Move decl from utils.h. (skip_spaces, skip_spaces_const, skip_to_space, skip_to_space_const): Move from cli/cli-utils.h. * common/host-defs.h: Include limits.h. (TARGET_CHAR_BIT, HOST_CHAR_BIT): Moved from defs.h. (skip_spaces, skip_spaces_const): Move decls from cli/cli-utils.h. * defs.h (TARGET_CHAR_BIT, HOST_CHAR_BIT): Move to common/common-utils.h. * utils.c (HIGH_BYTE_POSN, is_digit_in_base, digit_to_int) (strtoulst): Move to common/common-utils.c. * utils.h (strtoulst): Moved decl to common/common-utils.h.