binutils-gdb/gdb/testsuite/gdb.mi
Joel Brobecker 178d6a6386 (windows) GDB/MI crash when using "-list-thread-groups --available"
On Windows, using the "-list-thread-groups --available" GDB/MI command
before an inferior is being debugged:

    % gdb -q -i=mi
    =thread-group-added,id="i1"
    =cmd-param-changed,param="auto-load safe-path",value="/"
    (gdb)
    -list-thread-groups --available
    Segmentation fault

Ooops!

The SEGV happens because the -list-thread-groups --available command
triggers a windows_nat_target::xfer_partial call for a TARGET_OBJECT_OSDATA
object.  Until a program is being debugged, the target_ops layer that
gets the call is the Windows "native" layer. Except for a couple of
specific objects (TARGET_OBJECT_MEMORY and TARGET_OBJECT_LIBRARIES),
this layer's xfer_partial method delegates the xfer of other objects
to the target beneath:

    default:
      return beneath->xfer_partial (object, annex,
                                    readbuf, writebuf, offset, len,
                                    xfered_len);

Unfortunately, there is no "beneath layer" in this case, so
beneath is NULL and dereferencing it leads to the SEGV.

This patch fixes the issue by checking beneath before trying
to delegate the request.

gdb/ChangeLog:

        * windows-nat.c (windows_nat_target::xfer_partial): Return
        TARGET_XFER_E_IO if we need to delegate to the target beneath
        but BENEATH is NULL.

gdb/testsuite/ChangeLog:

        * gdb.mi/list-thread-groups-no-inferior.exp: New testcase.
2018-06-04 16:07:33 -04:00
..
ChangeLog-1999-2003
array.f Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
basics.c gdb: PR mi/20395: Fix -var-update for registers in frames 1 and up 2018-01-21 15:46:51 +00:00
dw2-ref-missing-frame-func.c [GDB/testsuite] Use %progbits in watch-loc.c 2018-03-02 11:52:54 +00:00
dw2-ref-missing-frame-main.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
dw2-ref-missing-frame.S Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
dw2-ref-missing-frame.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
gdb669.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
gdb680.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
gdb701.c
gdb701.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
gdb792.cc
gdb792.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
gdb2549.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
list-thread-groups-available.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
list-thread-groups-available.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
list-thread-groups-no-inferior.exp (windows) GDB/MI crash when using "-list-thread-groups --available" 2018-06-04 16:07:33 -04:00
mi-async-run.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-async-run.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-async.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-basics.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-break.exp wrong line number in breakpoint location 2018-01-21 23:14:50 -05:00
mi-breakpoint-changed.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-catch-load-so.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-catch-load.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-catch-load.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-cli.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-cmd-error.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-cmd-param-changed.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-condbreak-call-thr-state-mt.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-condbreak-call-thr-state-st.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-condbreak-call-thr-state.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-condbreak-call-thr-state.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-console.c
mi-console.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-detach.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-disassemble.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-dprintf-pending.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-dprintf-pending.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-dprintf-pendshr.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-dprintf.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-dprintf.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-editing.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-eval.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-exec-run.exp Testsuite: fully migrate to use_gdb_stub convenience func 2018-03-23 10:38:23 +01:00
mi-exit-code.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-exit-code.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-file-transfer.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-file.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-fill-memory.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-frame-regs.exp gdb: PR mi/20395: Fix -var-update for registers in frames 1 and up 2018-01-21 15:46:51 +00:00
mi-fullname-deleted.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-hack-cli.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-i-cmd.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-info-os.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-inheritance-syntax-error.cc
mi-inheritance-syntax-error.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-language.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-linespec-err-cp.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-linespec-err-cp.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-logging.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-memory-changed.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-nonstop-exit.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-nonstop.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-ns-stale-regcache.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-nsintrall.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-nsmoribund.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-nsthrexec.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-pending.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-pending.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-pendshr.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-pendshr2.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-pthreads.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-read-memory.c
mi-read-memory.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-record-changed.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-reg-undefined.S Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-reg-undefined.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-reg-undefined.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-regs.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-return.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-reverse.exp wrong line number in breakpoint location 2018-01-21 23:14:50 -05:00
mi-simplerun.exp wrong line number in breakpoint location 2018-01-21 23:14:50 -05:00
mi-solib.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-stack.c Fix gdb.mi/mi-stack.exp when gcc generates a stack protector 2018-04-07 14:09:14 -04:00
mi-stack.exp Fix gdb.mi/mi-stack.exp when gcc generates a stack protector 2018-04-07 14:09:14 -04:00
mi-start.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-start.exp Testsuite: fully migrate to use_gdb_stub convenience func 2018-03-23 10:38:23 +01:00
mi-stepi.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-stepn.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-stepn.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-syn-frame.c
mi-syn-frame.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-threads-interrupt.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-threads-interrupt.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-undefined-cmd.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-until.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-block.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-child-f.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-child.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-child.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-cmd.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-cp.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-cp.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-create-rtti.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-create-rtti.exp gdb: Don't store a thread-id for floating varobj 2018-01-21 15:47:28 +00:00
mi-var-display.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-invalidate.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-list-children-invalid-grandchild.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-list-children-invalid-grandchild.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-rtti.cc Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-var-rtti.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-vla-c99.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-vla-fortran.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-watch-nonstop.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-watch.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi2-amd64-entry-value.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi2-amd64-entry-value.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi2-amd64-entry-value.s Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi2-prompt.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi2-var-child.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
new-ui-mi-sync.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
new-ui-mi-sync.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
non-stop-exit.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
non-stop.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
ns-stale-regcache.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
nsintrall.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
nsmoribund.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
nsthrexec.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
pending.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
pendshr1.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
pendshr2.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
pr11022.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
pr11022.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
pthreads.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
solib-lib.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
solib-main.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
testcmds
until.c
user-selected-context-sync.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
user-selected-context-sync.exp Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
var-cmd.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
vla.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
vla.f90 Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
watch-nonstop.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00