aboutsummaryrefslogtreecommitdiff
path: root/gdb
AgeCommit message (Collapse)AuthorFilesLines
2015-04-22windows-nat: Report an error if ContinueDebugEvent() failsJon Turney2-0/+10
Using the 'catch-signal' test from the testsuite, on x86_64 Cygwin: $ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe [...] (gdb) catch signal Catchpoint 1 (standard signals) (gdb) r [...] Catchpoint 1 (signal SIGHUP), main () at ../../../gdb/testsuite/gdb.base/catch-signal.c:40 40 raise (SIGHUP); /* second HUP */ (gdb) c Continuing. [hangs] This is due to a defect in the way Cygwin signals are handled: When handle_output_debug_string processes a Cygwin signal message, it re-writes current_event.dwThreadId to reflect the thread that the signal will be delivered to. Subsequently, the call to ContinueDebugEvent will fail, because we're trying to resume the wrong thread. GDB is then stuck waiting forever for another event that will never come. This patch doesn't fix the problem, it just adds appropriate error handling. Using error() seems appropriate here, if ContinueDebugEvent() fails, the inferior is in an unknown state and we will probably not be debugging it anymore. With this patch applied, resuming the execution of the program now yields: $ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe [...] (gdb) catch signal Catchpoint 1 (standard signals) (gdb) r [...] Catchpoint 1 (signal SIGHUP), main () at ../../../gdb/testsuite/gdb.base/catch-signal.c:40 40 raise (SIGHUP); /* second HUP */ (gdb) c Continuing. main () at ../../../gdb/testsuite/gdb.base/catch-signal.c:40 40 raise (SIGHUP); /* second HUP */ Failed to resume program execution (ContinueDebugEvent failed, error 87) (gdb) gdb/ChangeLog: 2015-04-22 Jon Turney <jon.turney@dronecode.org.uk> * windows-nat.c (windows_continue): Report an error if ContinueDebugEvent() fails.
2015-04-22windows-nat: Fix misspelling in debug outputJon Turney2-1/+5
gdb/ChangeLog: 2015-04-16 Jon Turney <jon.turney@dronecode.org.uk> * windows-nat.c (windows_resume): Fix misspelling in debug output.
2015-04-22windows-nat: Cleanups in get_windows_debug_eventJon Turney2-15/+20
gdb/ChangeLog: 2015-04-16 Jon Turney <jon.turney@dronecode.org.uk> * windows-nat.c (get_windows_debug_event): Replace retval with thread_id throughout. Update stale comment.
2015-04-22windows-nat: Don't use ternary conditional operator in get_windows_debug_eventJon Turney2-1/+8
gdb/ChangeLog: 2015-04-16 Jon Turney <jon.turney@dronecode.org.uk> * windows-nat.c (get_windows_debug_event): Don't use ternary conditional operator.
2015-04-21Fix pascal behavior for class fields with testcasePierre Muller6-4/+157
Problem reported as PR pascal/17815 Part 1/3: Remember the case pattern that allowed finding a field of this. File gdb/p-exp.y modified This is the fix in the pascal parser (p-exp.y), to avoid the error that GDB does find normal variables case insensitively, but not fields of this, inside a class or object method. Part 2/3: Add "class" option for pascal compiler File gdb/testsuite/lib/pascal.exp This part of the patch series is unchanged. It adds class option to pascal compiler which adds the required command line option to accept pascal class types. Part 3/3: New file: gdb/testsuite/gdb.pascal/case-insensitive-symbols.exp New file: gdb/testsuite/gdb.pascal/case-insensitive-symbols.pas Here is an updated version of this test, using Pedro's suggestions. Test to check that PR 17815 is fixed.
2015-04-21Introduce new shared function fileio_to_host_openflagsGary Benson6-69/+56
This commit introduces a new shared function to replace identical functions in GDB and gdbserver.
2015-04-20Extend rl78 prologue analyzer to recognize more complicated prologuesKevin Buettner2-0/+89
This patch extends the rl78 prologue analyzer so that it can recognize this kind of prologue: 0x119f <main>: movw ax, sp 0x11a1 <main+2>: subw ax, #0x1fa6 0x11a4 <main+5>: movw sp, ax The test case for gdb.base/miscexprs.exp is now compiled to generate that sequence instead of a much longer and more inefficient sequence. gdb/ChangeLog: * rl78-tdep.c (RL78_SP_ADDR): Define. (opc_reg_to_gdb_regnum): New static function. (rl78_analyze_prologue): Recognize instructions forming slightly more interesting prologues.
2015-04-20Revert "Do not consider reference types as dynamic"Pierre-Marie de Rodat2-0/+28
This reverts commit 961f41602529c9cd4f88af6c02fb61fb55100e27. Note that the revert is partial: it keeps the new testcases gdb.ada/funcall_ref.exp.
2015-04-20Revert "gdbtypes.c: remove the usuned "top_level" parameter"Pierre-Marie de Rodat2-14/+31
This reverts commit 25755e2b85e2bd5b313ea87f32000bf9a47dbbf8.
2015-04-20Fix three test failures with extended remote targetsGary Benson2-4/+21
This commit fixes three gdb.base/attach.exp failures when using extended remote targets. The failures occurred because GDB now locates and loads files when attaching on remote targets if the remote target supports qXfer:exec-file:read; the filenames were shown but with "target:" prefixes which the test has been updated to handle. gdb/testsuite/ChangeLog: * gdb.base/attach.exp: Fix three extended remote failures.
2015-04-19Remove duplicated xmalloc in update_dprintf_command_listGabriel Krisman Bertazi2-1/+5
Code in update_dprintf_command_list performed a duplicated memory allocation which caused an obvious memory leak. This removes the duplication. gdb/ 2015-04-19 Gabriel Krisman Bertazi <gabriel@krisman.be> * breakpoint.c (update_dprintf_command_list): Remove duplicated xmalloc.
2015-04-20[GDB] Hurd: Robustify the reply_mig_hack.awk script.Thomas Schwinge2-1/+9
..., so that it also works with the GNU MIG 1.5 just released. gdb/ * reply_mig_hack.awk: Robustify parsing.
2015-04-20[GDB] Hurd: Simplify the reply_mig_hack.awk script.Thomas Schwinge2-9/+21
gdb/ * reply_mig_hack.awk: Don't bother to declare an intermediate function pointer variable. ... allowing us to simplify the parsing a little bit. And, instead of "warning: initialization from incompatible pointer type", we now get "warning: function called through a non-compatible type". Oh well.
2015-04-17solib-svr4.c (svr4_exec_displacement): Rename outer "displacement".Doug Evans2-6/+11
gdb/ChangeLog: * solib-svr4.c (svr4_exec_displacement): Rename outer "displacement" to "exec_displacement" to avoid confusion with inner use of the name.
2015-04-17gdbserver/xtensa: fix typo in XCHAL_HAVE_LOOPSMax Filippov2-2/+8
This fixes lbeg/lend/lcount registers handling through gdbserver. 2015-04-17 Max Filippov <jcmvbkbc@gmail.com> gdb/gdbserver/ * linux-xtensa-low.c (xtensa_fill_gregset) (xtensa_store_gregset): Check XCHAL_HAVE_LOOPS instead of XCHAL_HAVE_LOOP.
2015-04-17gdbserver/xtensa: drop xtensa_usrregs_infoMax Filippov2-7/+6
xtensa_usrregs_info refers to undefined variables xtensa_num_regs and xtensa_regmap. Drop xtensa_usrregs_info and replace pointer to usrregs in regs_info with NULL since all registers are read/set through regsets. 2015-04-17 Max Filippov <jcmvbkbc@gmail.com> gdb/gdbserver/ * linux-xtensa-low.c (xtensa_usrregs_info): Remove. (regs_info): Replace usrregs pointer with NULL.
2015-04-17return zero in arm_linux_can_use_hw_breakpoint if HW point isn't supportedYao Qi2-2/+15
This patch is to cherry-pick part of Pedro's patch here https://sourceware.org/ml/gdb-patches/2015-04/msg00527.html in which zero is returned if the HW point isn't supported. In arm-linux native gdb testing on a board doesn't support HW breakpoint, without this patch, the output in gdb.base/breakpoint-in-ro-region.exp is like: (gdb) hbreak *0x83bc^M Hardware breakpoints used exceeds limit.^M (gdb) PASS: gdb.base/breakpoint-in-ro-region.exp: probe hbreak support (support) with this patch, the output becomes: (gdb) hbreak *0x83bc^M No hardware breakpoint support in the target.^M (gdb) PASS: gdb.base/breakpoint-in-ro-region.exp: probe hbreak support (no support) As a result, the following fails are fixed. -FAIL: gdb.base/breakpoint-in-ro-region.exp: always-inserted off: auto-hw on: step in ro region (cannot insert hw break) -FAIL: gdb.base/breakpoint-in-ro-region.exp: always-inserted off: auto-hw on: thread advanced -FAIL: gdb.base/breakpoint-in-ro-region.exp: always-inserted on: auto-hw on: step in ro region (cannot insert hw break) -FAIL: gdb.base/breakpoint-in-ro-region.exp: always-inserted on: auto-hw on: thread advanced gdb: 2015-04-17 Pedro Alves <palves@redhat.com> * arm-linux-nat.c (arm_linux_can_use_hw_breakpoint): Return zero if HW point of TYPE isn't supported.
2015-04-17Update comments to target_can_use_hardware_watchpointYao Qi2-5/+14
The return value of target_can_use_hardware_watchpoint isn't well documented, so this patch is to update the comments to reflect the fact. This patch also removes a trailing ";" which is picked up from Pedro's patch https://sourceware.org/ml/gdb-patches/2015-04/msg00527.html gdb: 2015-04-17 Yao Qi <yao.qi@linaro.org> Pedro Alves <palves@redhat.com> * target.h (target_can_use_hardware_watchpoint): Update comments. Remove trailing ";".
2015-04-17Access executable from remote system when first inferior appearsGary Benson7-9/+49
This commit modifies remote_add_inferior to take an extra argument try_open_exec. If this is nonzero, remote_add_inferior will attempt to open this inferior's executable as the main executable if no main executable is open already. Callers are updated appropriately. With this commit, remote debugging can now be initiated using only a "target remote" or "target extended-remote" command; no "set sysroot" or "file" commands are required, e.g. bash$ gdb -q (gdb) target remote | gdbserver - /bin/sh Remote debugging using | gdbserver - /bin/sh Process /bin/sh created; pid = 32166 stdin/stdout redirected Remote debugging using stdio Reading symbols from target:/bin/bash... One testcase required updating as a result of this commit. The test checked that GDB's "info files" command does not crash if no main executable is open, and relied on GDB's inability to access the main executable over the remote protocol. The test was updated to inhibit this new behavior. gdb/ChangeLog: * remote.c (remote_add_inferior): New argument try_open_exec. If nonzero, attempt to open the inferior's executable file as the main executable if no main executable is open already. All callers updated. * NEWS: Mention that GDB now supports automatic location and retrieval of executable + files from remote targets. gdb/doc/ChangeLog: * gdb.texinfo (Connecting to a Remote Target): Mention that GDB can access program files from remote targets that support qXfer:exec-file:read and Host I/O packets. gdb/testsuite/ChangeLog: * gdb.server/server-exec-info.exp: Inhibit GDB from accessing the main executable over the remote protocol.
2015-04-17Implement qXfer:exec-file:read in gdbserverGary Benson4-0/+57
This commit implements the "qXfer:exec-file:read" packet in gdbserver. gdb/gdbserver/ChangeLog: * target.h (struct target_ops) <pid_to_exec_file>: New field. * linux-low.c (linux_target_ops): Initialize pid_to_exec_file. * server.c (handle_qxfer_exec_file): New function. (qxfer_packets): Add exec-file entry. (handle_query): Report qXfer:exec-file:read as supported packet.
2015-04-17Implement remote_pid_to_exec_file using qXfer:exec-file:readGary Benson6-1/+88
This commit adds a new packet "qXfer:exec-file:read" to the remote protocol that can be used to obtain the pathname of the file that was executed to create a process on the remote system. Support for this packet is added to GDB and remote_ops.to_pid_to_exec_file is implemented using it. gdb/ChangeLog: * target.h (TARGET_OBJECT_EXEC_FILE): New enum value. * remote.c (PACKET_qXfer_exec_file): Likewise. (remote_protocol_features): Register the "qXfer:exec-file:read" feature. (remote_xfer_partial): Handle TARGET_OBJECT_EXEC_FILE. (remote_pid_to_exec_file): New function. (init_remote_ops): Initialize to_pid_to_exec_file. (_initialize_remote): Register new "set/show remote pid-to-exec-file-packet" command. * NEWS: Announce new qXfer:exec-file:read packet. gdb/doc/ChangeLog: * gdb.texinfo (Remote Configuration): Document the "set/show remote pid-to-exec-file-packet" command. (General Query Packets): Document the qXfer:exec-file:read qSupported features. Document the qXfer:exec-file:read packet.
2015-04-17Introduce linux_proc_pid_to_exec_fileGary Benson4-9/+34
This commit introduces a new function linux_proc_pid_to_exec_file that shared Linux code can use to discover the filename of the executable that was run to create a process on the system. gdb/ChangeLog: * nat/linux-procfs.h (linux_proc_pid_to_exec_file): New declaration. * nat/linux-procfs.c (linux_proc_pid_to_exec_file): New function, factored out from... * linux-nat.c (linux_child_pid_to_exec_file): ...here.
2015-04-17Use gdb_sysroot for main executable on attachGary Benson5-16/+54
This commit updates exec_file_locate_attach to use exec_file_find to compute the full pathname of the main executable in some cases. The net effect of this is that the main executable's path will be prefixed with gdb_sysroot in the same way that shared library paths currently are. gdb/ChangeLog: * exec.c (solist.h): New include. (exec_file_locate_attach): Prefix absolute executable paths with gdb_sysroot if set. * NEWS: Mention that executable paths may be prepended with sysroot. gdb/doc/ChangeLog: * gdb.texinfo (set sysroot): Document that "set sysroot" also applies to executable paths if supplied to GDB as absolute.
2015-04-17Introduce exec_file_findGary Benson3-47/+110
This commit adds a new function, exec_file_find, which computes the full pathname of the main executable in much the same way solib_find does for pathnames of shared libraries. The bulk of the existing solib_find was moved into a new static function solib_find_1, with exec_file_find and solib_find being small wrappers for solib_find_1. gdb/ChangeLog: * solist.h (exec_file_find): New declaration. * solib.c (solib_find_1): New function, factored out from... (solib_find): ...here. (exec_file_find): New function.
2015-04-17Introduce exec_file_locate_attachGary Benson4-23/+47
This commit adds a new function, exec_file_locate_attach, which works like exec_file_attach except that, instead of a filename argument, it takes an integer process ID and attempts to determine the executable filename from that. gdb/ChangeLog: * gdbcore.h (exec_file_locate_attach): New declaration. * exec.c (exec_file_locate_attach): New function, factored out from... * infcmd.c (attach_command_post_wait): ...here.
2015-04-17gdb: add myself to blackfin/write-after-approvalMike Frysinger2-0/+6
2015-04-16Fix {mi-tracepoint-changed, mi-tsv-changed}.exp with native-extended-gdbserverPedro Alves2-2/+12
Fixes: -FAIL: gdb.trace/mi-tracepoint-changed.exp: reconnect: break-info 1 +PASS: gdb.trace/mi-tracepoint-changed.exp: reconnect: tracepoint created +PASS: gdb.trace/mi-tracepoint-changed.exp: reconnect: tracepoint on marker is installed +PASS: gdb.trace/mi-tracepoint-changed.exp: reconnect: break-info 1 -FAIL: gdb.trace/mi-tsv-changed.exp: upload: tsv1 created -FAIL: gdb.trace/mi-tsv-changed.exp: upload: tsv2 created +PASS: gdb.trace/mi-tsv-changed.exp: upload: tsv1 created +PASS: gdb.trace/mi-tsv-changed.exp: upload: tsv2 created These tests do something like this: #0 - start gdb/gdbserver normally #1 - setup some things in the debug session #2 - disconnect from gdbserver #3 - restart gdb #4 - reconnect to gdbserver The problem is that the native-extended-gdbserver board always spawns a new gdbserver instance in #3 (and has gdb connect to that). So when the test gets to #4, it connects to that new instance instead of the old one: (gdb) spawn ../gdbserver/gdbserver --multi :2354 Listening on port 2354 target extended-remote localhost:2354 Remote debugging using localhost:2354 ... spawn ../gdbserver/gdbserver --multi :2355 Listening on port 2355 47-target-select extended-remote localhost:2355 =tsv-created,name="trace_timestamp",initial="0"\n 47^connected (gdb) ... 47-target-select extended-remote localhost:2355 47^connected (gdb) FAIL: gdb.trace/mi-tsv-changed.exp: upload: tsv1 created FAIL: gdb.trace/mi-tsv-changed.exp: upload: tsv2 created testsuite/ChangeLog: 2015-04-16 Pedro Alves <palves@redhat.com> * boards/native-extended-gdbserver.exp (mi_gdb_start): Don't start a new gdbserver if gdbserver_reconnect_p is set.
2015-04-16Fix gdbserver_reconnect_p handlingPedro Alves2-0/+13
Commit 6423214f (testsuite: Don't use expect_background to reap gdbserver) broke a couple tests that set gdbserver_reconnect_p and restart gdb before reconnecting, because a gdb_exit (e.g., through clean_restart) exits gdbserver unconditionally. Fixes, with --target_board=native-gdbserver: -FAIL: gdb.trace/mi-tracepoint-changed.exp: reconnect: break-info 1 +PASS: gdb.trace/mi-tracepoint-changed.exp: reconnect: tracepoint created +PASS: gdb.trace/mi-tracepoint-changed.exp: reconnect: tracepoint on marker is installed +PASS: gdb.trace/mi-tracepoint-changed.exp: reconnect: break-info 1 -FAIL: gdb.trace/mi-tsv-changed.exp: upload: tsv1 created -FAIL: gdb.trace/mi-tsv-changed.exp: upload: tsv2 created +PASS: gdb.trace/mi-tsv-changed.exp: upload: tsv1 created +PASS: gdb.trace/mi-tsv-changed.exp: upload: tsv2 created gdb/testsuite/ 2015-04-16 Pedro Alves <palves@redhat.com> * lib/gdbserver-support.exp (gdb_exit): If gdbserver_reconnect_p is set, don't exit gdbserver.
2015-04-16Honour software single step in fallback of displaced steppingYao Qi2-2/+11
Hi, When I run gdb.threads/non-stop-fair-events.exp on arm-linux target, I see the following message in the debugging log, displaced: breakpoint is gone: Thread 22518, step(1)^M Sending packet: $vCont;s:p57f3.57f6#9d... ^^^^^^^^^ GDB sends vCont;s by mistake, and GDBserver fails on assert. GDB doesn't consider software single step in infrun.c:displaced_step_fixup, /* Go back to what we were trying to do. */ step = currently_stepping (tp); if (debug_displaced) fprintf_unfiltered (gdb_stdlog, "displaced: breakpoint is gone: %s, step(%d)\n", target_pid_to_str (tp->ptid), step); target_resume (ptid, step, GDB_SIGNAL_0); The patch is to let GDB consider software single step here. It fixes fails in gdb.threads/non-stop-fair-events.exp on arm. gdb: 2015-04-16 Yao Qi <yao.qi@linaro.org> * infrun.c (maybe_software_singlestep): Declare. (displaced_step_fixup): Call maybe_software_singlestep.
2015-04-16s390-vregs.exp: Avoid compile errors with older GCCs and on 31-bit targetsAndreas Arnez3-3/+11
The test case s390-vregs.exp yields compile errors on 31-bit targets as well as when using a GCC that defaults to an older "-march=". This patch fixes these issues. gdb/testsuite/ChangeLog: * gdb.arch/s390-vregs.S (change_vrs): Replace exrl by an appropriate .insn, such that an older assembler can be used. * gdb.arch/s390-vregs.exp: Add the compile flag -mzarch, to enable the z/Architecture instruction set on 31-bit targets as well.
2015-04-16GDB tests for Go language support: remove unnecessary first breakpointAndreas Arnez9-40/+24
On s390x targets some of the Go test cases fail because the first breakpoint happens to be at the same spot as the breakpoint at main.main. When such a test case tries to continue to the first breakpoint, the program runs until the end instead, and the test fails like this: FAIL: gdb.go/handcall.exp: Going to first breakpoint (the program exited) This patch removes all the handling related to the first breakpoint in those cases. After applying the patch, the tests run successfully on s390x. gdb/testsuite/ChangeLog: * gdb.go/handcall.exp: Remove all logic related to the first breakpoint and rely on go_runto_main instead. * gdb.go/strings.exp: Likewise. * gdb.go/unsafe.exp: Likewise. * gdb.go/hello.exp: Likewise. Also rename the remaining breakpoint marker to "breakpoint 1". * gdb.go/handcall.go: Remove comment "set breakpoint 1 here". * gdb.go/strings.go: Likewise. * gdb.go/unsafe.go: Likewise. * gdb.go/hello.go: Likewise. Also remove the second occurrence of "set breakpoint 2 here" and rename the remaining breakpoint marker to "breakpoint 1".
2015-04-15Make info fun|var|types interruptable for psyms.Doug Evans2-0/+6
gdb/ChangeLog: * psymtab.c (psym_expand_symtabs_matching): Add QUIT call.
2015-04-15Make info fun|var|types interruptable.Doug Evans2-0/+8
"info fun foo" can be a pain when it's not interruptable, especially if you're not exactly sure of what you're looking for and provide something that matches too much. gdb/ChangeLog: * dwarf2read.c (dw2_expand_symtabs_matching): Add some QUIT calls.
2015-04-15gdbserver: fix uClibc build whithout MMU.Romain Naour2-1/+5
Since commit d86d4aafd4fa22fa4cccb83253fb187b03f97f48, the pid must be retrieved from current_thread. The change has not been made in the function linux_read_offsets(). Fixes: http://autobuild.buildroot.net/results/9e4/9e4df085319e346803c26c65478accb27eb950ae/build-end.log 2015-04-14 Romain Naour <romain.naour@openwide.fr> (tiny change) * linux-low.c (linux_read_offsets): Remove get_thread_lwp. Signed-off-by: Romain Naour <romain.naour@openwide.fr>
2015-04-15Some Python 3 fixesSimon Marchi7-10/+27
Some missing parentheses and one itertools.imap (Py2) vs map (Py3) issue. gdb/ChangeLog: * python/lib/gdb/command/unwinders.py: Add parentheses. gdb/testsuite/ChangeLog: * gdb.python/py-framefilter.py (ErrorFilter.filter): Use map function if itertools.imap is not present. * gdb.python/py-objfile.exp: Add parentheses. * gdb.python/py-type.exp: Same. * gdb.python/py-unwind-maint.py: Same.
2015-04-15[arm] Update displaced stepping debug messageYao Qi2-2/+5
When I "set debug displaced 1" to fix fail in gdb.base/disp-step-syscall.exp, the debug message is wrong. This patch is to fix it. gdb: 2015-04-15 Yao Qi <yao.qi@linaro.org> * arm-linux-tdep.c (arm_linux_copy_svc): Update debug message.
2015-04-15Fix code indentationYao Qi2-41/+46
gdb: 2015-04-15 Yao Qi <yao.qi@linaro.org> * arm-linux-tdep.c (arm_linux_copy_svc): Fix indentation.
2015-04-15[arm] Fix fails in gdb.base/disp-step-syscall.expYao Qi2-3/+8
Hi, I see this fail on arm-linux target, FAIL: gdb.base/disp-step-syscall.exp: fork: single step over fork final pc which is caused by the PC isn't expected after displaced stepping the svc instruction. The code is: => 0xb6ead9a4 <__libc_do_syscall+4>: svc 0 0xb6ead9a6 <__libc_do_syscall+6>: pop {r7, pc} 0xb6ead9a8: nop.w^M 0xb6ead9ac: nop.w after single step svc instruction, pc should be 0xb6ead9a6, but the actual value of pc is 0xb6ead9a8. The problem is illustrated by turning on debug message of displaced stepping, stepi^M displaced: stepping Thread 12031 now^M displaced: saved 0x8574: 02 bc 6a 46 04 b4 01 b4 df f8 10 c0 4d f8 04 cd 03 48 04 4b ff f7 d2 ef ff f7 e8 ef 0d 87 00 00 ^M displaced: process thumb insn df00 at b6ead9a4^M displaced: copying svc insn df00^M displaced: read r7 value 00000078^M displaced: sigreturn/rt_sigreturn SVC call not in signal trampoline frame^M displaced: writing insn df00 at 00008574^M displaced: copy 0xb6ead9a4->0x8574: displaced: check mode of b6ead9a4 instead of 00008574^M displaced: displaced pc to 0x8574^M displaced: run 0x8574: 00 df 01 de ^M displaced: restored Thread 12031 0x8574^M displaced: PC is apparently 00008576 after SVC step (within scratch space)^M displaced: writing pc b6ead9a8 <----- WRONG ADDRESS GDB writes the wrong address back to pc because GDB thinks the instruction size is 4, which isn't true for thumb instruction. This patch is to replace 4 with dsc->insn_size. gdb: 2015-04-15 Yao Qi <yao.qi@linaro.org> * arm-linux-tdep.c (arm_linux_cleanup_svc): Use dsc->insn_size instead of 4.
2015-04-15Fix fails in gdb.dwarf2/dynarr-ptr.expYao Qi2-1/+6
I see many fails in gdb.dwarf2/dynarr-ptr.exp on arm-linux target, started from this print foo.three_ptr.all^M Cannot access memory at address 0x107c8^M (gdb) FAIL: gdb.dwarf2/dynarr-ptr.exp: print foo.three_ptr.all print foo.three_ptr.all(1)^M Cannot access memory at address 0x107c8 It turns out that ":$ptr_size" is used incorrectly. array_ptr_label: DW_TAG_pointer_type { {DW_AT_byte_size :$ptr_size } ^^^^^^^^^^ {DW_AT_type :$array_label} } Since the FORM isn't given, and it starts with the ":", it is regarded as a label reference by dwarf assembler. The generated asm file on x86_64 is .uleb128 6 /* Abbrev (DW_TAG_pointer_type) */ .4byte 8 - .Lcu1_begin <----- WRONG .4byte .Llabel2 - .Lcu1_begin Looks .Lcu1_begin is 0 on x86_64 and that is why this test passes on x86_64. On arm, .Lcu1_begin is an address somewhere, and the value of DW_AT_byte_size is a very large number, so memory read request of such large length failed. This patch is to remove ":" and set the form explicitly. The generated asm file on x86_64 becomes .uleb128 6 /* Abbrev (DW_TAG_pointer_type) */ .byte 8 .4byte .Llabel2 - .Lcu1_begin gdb/testsuite: 2015-04-15 Yao Qi <yao.qi@linaro.org> * gdb.dwarf2/dynarr-ptr.exp (assemble): Use $ptr_size instead of ":$ptr_size" and set its form explicitly.
2015-04-15Increase timeout in watch-bitfields.exp for software watchpointYao Qi6-54/+92
I see the following two timeout fails on pandaboard (arm-linux target), FAIL: gdb.base/watch-bitfields.exp: -location watch against bitfields: continue until exit (timeout) FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: continue until exit (timeout) In this test, more than one watchpoint is used, so the following watchpoint requests fall back to software watchpoint, so that GDB will single step all the way and it is very slow. This patch is to copy the fix from [PATCH] GDB/testsuite: Correct gdb.base/watchpoint-solib.exp timeout tweak https://sourceware.org/ml/gdb-patches/2014-07/msg00716.html I find the left-over of this patch review is to factor out code into a procedure, so I do that in this patch. Re-run tests watch-bitfields.exp, watchpoint-solib.exp, sigall-reverse.exp, and until-precsave.exp on pandaboard, no regression. gdb/testsuite: 2015-04-15 Pedro Alves <palves@redhat.com> Yao Qi <yao.qi@linaro.org> * gdb.base/watch-bitfields.exp (test_watch_location): Increase timeout by factor of 4. (test_regular_watch): Likewise. * gdb.base/watchpoint-solib.exp: Use with_timeout_factor. * gdb.reverse/sigall-reverse.exp: Likewise. * gdb.reverse/until-precsave.exp: Likewise. * lib/gdb.exp (with_timeout_factor): New proc. (gdb_expect): Move some code to ... (get_largest_timeout): ... here. New procedure.
2015-04-14Harden gdb.base/bp-permanent.expLuis Machado2-1/+6
Reinstate test message and replace hardcoded test command with a variable. gdb/testsuite/ChangeLog: 2015-04-14 Luis Machado <lgustavo@codesourcery.com> * gdb.base/bp-permanent.exp (test): Reinstate correct test message.
2015-04-14Zero supplied stat buffers in functions that pretend to statGary Benson5-0/+11
GDB has five places where it pretends to stat for bfd_openr_iovec. Four of these only set the incoming buffer's st_size, leaving the other fields unchanged, which is to say very likely populated with random values from the stack. remote_bfd_iovec_stat was fixed in 0a93529c56714b1da3d7106d3e0300764f8bb81c; this commit fixes the other four. gdb/ChangeLog: * jit.c (mem_bfd_iovec_stat): Zero supplied buffer. * minidebug.c (lzma_stat): Likewise. * solib-spu.c (spu_bfd_iovec_stat): Likewise. * spu-linux-nat.c (spu_bfd_iovec_stat): Likewise.
2015-04-13 * MAINTAINERS: Update my email address.Stan Shebs2-2/+6
diff --git a/gdb/MAINTAINERS b/gdb/MAINTAINERS index a67a1a8..0fdd8e5 100644 --- a/gdb/MAINTAINERS +++ b/gdb/MAINTAINERS @@ -156,7 +156,7 @@ Doug Evans dje@google.com Daniel Jacobowitz drow@false.org Mark Kettenis kettenis@gnu.org Yao Qi yao.qi@arm.com -Stan Shebs stan@codesourcery.com +Stan Shebs stanshebs@google.com Ulrich Weigand Ulrich.Weigand@de.ibm.com Elena Zannoni elena.zannoni@oracle.com Eli Zaretskii eliz@gnu.org @@ -631,7 +631,7 @@ Keith Seitz keiths@redhat.com Carlos Eduardo Seo cseo@linux.vnet.ibm.com Ozkan Sezer sezeroz@gmail.com Marcus Shawcroft marcus.shawcroft@arm.com -Stan Shebs stan@codesourcery.com +Stan Shebs stanshebs@google.com Joel Sherrill joel.sherrill@oarcorp.com Mark Shinwell shinwell@codesourcery.com Craig Silverstein csilvers@google.com
2015-04-13Add support for the x86 XSAVE extended state on FreeBSD/x86.John Baldwin14-6/+456
Recognize NT_X86_XSTATE notes in FreeBSD process cores. Recent FreeBSD versions include a note containing the XSAVE state for each thread in the process when XSAVE is in use. The note stores a copy of the current XSAVE mask in a reserved section of the machine-defined XSAVE state at the same offset as Linux's NT_X86_XSTATE note. For native processes, use the PT_GETXSTATE_INFO ptrace request to determine if XSAVE is enabled, and if so the active XSAVE state mask (that is, the value of %xcr0 for the target process) as well as the size of XSAVE state area. Use the PT_GETXSTATE and PT_SETXSTATE requests to fetch and store the XSAVE state, respectively, in the BSD x86 native targets. In addition, the FreeBSD amd64 and i386 native targets now include "read_description" target methods to determine the correct x86 target description for the current XSAVE mask. On FreeBSD amd64 this also properly returns an i386 target description for 32-bit binaries which allows the 64-bit GDB to run 32-bit binaries. Note that the ptrace changes are in the BSD native targets, not the FreeBSD-specific native targets since that is where the other ptrace register accesses occur. Of the other BSDs, NetBSD and DragonFly use XSAVE in the kernel but do not currently export the extended state via ptrace(2). OpenBSD does not currently support XSAVE. bfd/ChangeLog: * elf.c (elfcore_grok_note): Recognize NT_X86_XSTATE on FreeBSD. (elfcore_write_xstatereg): Use correct note name on FreeBSD. gdb/ChangeLog: * amd64-tdep.c (amd64_target_description): New function. * amd64-tdep.h: Export amd64_target_description and tdesc_amd64. * amd64bsd-nat.c [PT_GETXSTATE_INFO]: New variable amd64bsd_xsave_len. (amd64bsd_fetch_inferior_registers) [PT_GETXSTATE_INFO]: Handle x86 extended save area. (amd64bsd_store_inferior_registers) [PT_GETXSTATE_INFO]: Likewise. * amd64bsd-nat.h: Export amd64bsd_xsave_len. * amd64fbsd-nat.c (amd64fbsd_read_description): New function. (_initialize_amd64fbsd_nat): Set "to_read_description" to "amd64fbsd_read_description". * amd64fbsd-tdep.c (amd64fbsd_core_read_description): New function. (amd64fbsd_supply_xstateregset): New function. (amd64fbsd_collect_xstateregset): New function. Add "amd64fbsd_xstateregset". (amd64fbsd_iterate_over_regset_sections): New function. (amd64fbsd_init_abi): Set "xsave_xcr0_offset" to "I386_FBSD_XSAVE_XCR0_OFFSET". Add "iterate_over_regset_sections" gdbarch method. Add "core_read_description" gdbarch method. * i386-tdep.c (i386_target_description): New function. * i386-tdep.h: Export i386_target_description and tdesc_i386. * i386bsd-nat.c [PT_GETXSTATE_INFO]: New variable i386bsd_xsave_len. (i386bsd_fetch_inferior_registers) [PT_GETXSTATE_INFO]: Handle x86 extended save area. (i386bsd_store_inferior_registers) [PT_GETXSTATE_INFO]: Likewise. * i386bsd-nat.h: Export i386bsd_xsave_len. * i386fbsd-nat.c (i386fbsd_read_description): New function. (_initialize_i386fbsd_nat): Set "to_read_description" to "i386fbsd_read_description". * i386fbsd-tdep.c (i386fbsd_core_read_xcr0): New function. (i386fbsd_core_read_description): New function. (i386fbsd_supply_xstateregset): New function. (i386fbsd_collect_xstateregset): New function. Add "i386fbsd_xstateregset". (i386fbsd_iterate_over_regset_sections): New function. (i386fbsd4_init_abi): Set "xsave_xcr0_offset" to "I386_FBSD_XSAVE_XCR0_OFFSET". Add "iterate_over_regset_sections" gdbarch method. Add "core_read_description" gdbarch method. * i386fbsd-tdep.h: New file.
2015-04-13Harden gdb.base/bp-permanent.expLuis Machado2-1/+17
This testcase does not work as expected in QEMU (aarch64 QEMU in my case). It fails when trying to manually write the breakpoint instruction to a certain PC address. (gdb) p /x addr_bp[0] = buffer[0]^M Cannot access memory at address 0x400834^M (gdb) PASS: gdb.base/bp-permanent.exp: always_inserted=off, sw_watchpoint=0: setup: p /x addr_bp[0] = buffer[0] p /x addr_bp[1] = buffer[1]^M Cannot access memory at address 0x400835^M (gdb) PASS: gdb.base/bp-permanent.exp: always_inserted=off, sw_watchpoint=0: setup: p /x addr_bp[1] = buffer[1] p /x addr_bp[2] = buffer[2]^M Cannot access memory at address 0x400836^M (gdb) PASS: gdb.base/bp-permanent.exp: always_inserted=off, sw_watchpoint=0: setup: p /x addr_bp[2] = buffer[2] p /x addr_bp[3] = buffer[3]^M Cannot access memory at address 0x400837^M (gdb) PASS: gdb.base/bp-permanent.exp: always_inserted=off, sw_watchpoint=0: setup: p /x addr_bp[3] = buffer[3] The following patch prevents a number of failures by detecting this and bailing out in case the target has such a restriction. Writing to .text from within the program isn't any better. It just leads to a SIGSEGV. Before the patch: === gdb Summary === After the patch: === gdb Summary === gdb/testsuite/ChangeLog: 2015-04-13 Luis Machado <lgustavo@codesourcery.com> * gdb.base/bp-permanent.exp (test): Handle the case of being unable to write to the .text section.
2015-04-13Harden gdb.base/coredump-filter.expLuis Machado2-0/+17
This testcase seems to assume the target is running Linux, so bare metal, simulators and other debugging stubs running different OS' will have a hard time executing some of the commands the testcase issues. Even restricting the testcase to Linux systems (which the patch below does), there are still problems with, say, QEMU not providing PID information when "info inferior" is issued. As a consequence, the subsequent tests will either fail or will not make much sense. The attached patch checks if PID information is available. If not, it just bails out and avoids running into a number of failures. gdb/testsuite/ChangeLog: 2015-04-13 Luis Machado <lgustavo@codesourcery.com> * gdb.base/coredump-filter.exp: Restrict test to Linux systems only. Handle the case of targets that do not provide PID information.
2015-04-13Catch exception in lib/gdbserver-support.exp:gdb_exitYao Qi2-9/+22
I see the error when I run gdb-sigterm.exp with native-gdbserver on x86_64-linux. infrun: prepare_to_wait^M Cannot execute this command while the target is running.^M Use the "interrupt" command to stop the target^M and then try again.^M gdb.base/gdb-sigterm.exp: expect eof #0: got eof gdb.base/gdb-sigterm.exp: expect eof #0: stepped 12 times ERROR OCCURED: : spawn id exp8 not open while executing "expect { -i exp8 -timeout 10 -re "$gdb_prompt $" { exp_continue } -i "$server_spawn_id" eof { wait -i $expect_out(spawn_id) unse..." ("uplevel" body line 1) invoked from within In gdb-sigterm.exp, SIGTERM is sent to GDB and it exits. However, Dejagnu or tcl doesn't know this. This patch is to catch the exception, but error messages are still shown in the console and gdb.log. In order to avoid this, we also replace gdb_expect with expect. gdb/testsuite: 2015-04-13 Yao Qi <yao.qi@linaro.org> * lib/gdbserver-support.exp (gdb_exit): Catch exception and use expect instead of gdb_expect.
2015-04-13Rename variable "addr" to "coredump_var_addr" in gdb.base/coredump-filter.expSergio Durigan Junior2-4/+9
This commit renames the global array variable "addr" to an unique name "coredump_var_addr" in the test gdb.base/coredump-filter.exp. This is needed because global arrays can have name conflicts between tests. For example, this specific test was conflicting with dmsym.exp, causing errors like: ERROR: tcl error sourcing ../../../../../binutils-gdb/gdb/testsuite/gdb.base/dmsym.exp. ERROR: can't set "addr": variable is array while executing "set addr "0x\[0-9a-zA-Z\]+"" (file "../../../../../binutils-gdb/gdb/testsuite/gdb.base/dmsym.exp" line 45) invoked from within "source ../../../../../binutils-gdb/gdb/testsuite/gdb.base/dmsym.exp" ("uplevel" body line 1) invoked from within "uplevel #0 source ../../../../../binutils-gdb/gdb/testsuite/gdb.base/dmsym.exp" invoked from within "catch "uplevel #0 source $test_file_name"" This problem was reported by Yao Qi at: <https://sourceware.org/ml/gdb-patches/2015-04/msg00373.html> Message-Id: <1428666671-12926-1-git-send-email-qiyaoltc@gmail.com> gdb/testsuite/ChangeLog: 2015-04-13 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.base/coredump-filter.exp: Rename variable "addr" to "coredump_var_addr" to avoid naming conflict with other testcases.
2015-04-11Remove --xdbJan Kratochvil22-444/+53
Pedro Alves: The commands that enables aren't even documented in the manual. Judging from that, I assume that only wdb users would ever really be using the --xdb switch. I think it's time to drop "support" for the --xdb switch too. I looked through the commands that that exposes, the only that looked potentially interesting was "go", but then it's just an alias for "tbreak+jump", which can easily be done with "define go...end". I'd rather free up the "go" name for something potentially more interesting (either run control, or maybe even unrelated, e.g., for golang). gdb/ChangeLog 2015-04-11 Jan Kratochvil <jan.kratochvil@redhat.com> * NEWS (Changes since GDB 7.9): Add removed -xdb. * breakpoint.c (command_line_is_silent): Remove xdb_commands conditional. (_initialize_breakpoint): Remove xdb_commands for bc, ab, sb, db, ba and lb. * cli/cli-cmds.c (_initialize_cli_cmds): Remove xdb_commands for v and va. * cli/cli-decode.c (find_command_name_length): Remove xdb_commands conditional. * defs.h (xdb_commands): Remove declaration. * f-valprint.c (_initialize_f_valprint): Remove xdb_commands for lc. * guile/scm-cmd.c (command_classes): Remove xdb from comment. * infcmd.c (run_no_args_command, go_command): Remove. (_initialize_infcmd): Remove xdb_commands for S, go, g, R and lr. * infrun.c (xdb_handle_command): Remove. (_initialize_infrun): Remove xdb_commands for lz and z. * main.c (xdb_commands): Remove variable. (captured_main): Remove "xdb" from long_options. (print_gdb_help): Remove --xdb from help. * python/py-cmd.c (gdbpy_initialize_commands): Remove xdb from comment. * source.c (_initialize_source): Remove xdb_commands for D, ld, / and ?. * stack.c (backtrace_full_command, args_plus_locals_info) (current_frame_command): Remove. (_initialize_stack): Remove xdb_commands for t, T and l. * symtab.c (_initialize_symtab): Remove xdb_commands for lf and lg. * thread.c (_initialize_thread): Remove xdb_commands condition. * tui/tui-layout.c (tui_toggle_layout_command) (tui_toggle_split_layout_command, tui_handle_xdb_layout): Remove. (_initialize_tui_layout): Remove xdb_commands for td and ts. * tui/tui-regs.c (tui_scroll_regs_forward_command) (tui_scroll_regs_backward_command): Remove. (_initialize_tui_regs): Remove xdb_commands for fr, gr, sr, +r and -r. * tui/tui-win.c (tui_xdb_set_win_height_command): Remove. (_initialize_tui_win): Remove xdb_commands for U and w. * utils.c (pagination_on_command, pagination_off_command): Remove. (initialize_utils): Remove xdb_commands for am and sm. gdb/doc/ChangeLog 2015-04-11 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.texinfo (Mode Options): Remove -xdb.
2015-04-10Cleanup signal-while-stepping-over-bp-other-thread.expPedro Alves2-10/+15
gdb/testsuite/ChangeLog: 2015-04-10 Pedro Alves <palves@redhat.com> * gdb.threads/signal-while-stepping-over-bp-other-thread.exp: Use gdb_test_sequence and gdb_assert.