[PATCH] Add gdb remote protocol backend to strace

Stan Cox scox at redhat.com
Wed Feb 12 03:03:26 UTC 2020


This is the latest version of the gdbserver backend patch.  It
integrates Eugene's ptrace instantiation of the backend dispatch
mechanism added for the gdbserver backend.  It is a large patch but
much of it is boilerplate changes due to adding and use of the
tracing_backend struct.  The code is located on the branch
'gdbserver0' in the repository:
  https://github.com/stanfordcox/strace

configure*: configure support

-tracing_backend.h:
  struct tracing_backend:  backend dispatch table.   All of the 
gdbserver/ptrace
  versions of these routines are independent and self contained except
  for get_regs which needs access to the register structures
  Any change not mentioned is only a change to allow for calling via a
  backend routine

-ptrace_backend.{c,h}:
  ptrace instantiation of tracing_backend.  It dispatches to existing 
routines

-strace.c/syscall.c
  dispatch to the ptrace_* routines defined in ptrace_backend.h
  Add 'G' option to indicate how to connect to gdbs backend
  start_init invokes gdbserver, startup_child, startup_attach (via
  attach_tcb) start or connect to the child,
-syscall.c
  invoke backend.get_regs, which needs to access the iovec.  gdbserver
  does not require a separate routine to get the syscall number.

-gdbserver.c
  the gdbserver of the backend methods are defined here.  Communicates
  with gdbserver via the gdb remote protocol and converts to the
  packets that strace expects.  gdbserver has a syscall mode that
  returns information on syscalls via stop packets.  gdbserver has two
  protocol modes, all stop and non stop; both are supported.
-protocol.c
  support routines: gdb remote packets are deciphered here
-protocol.h
-signals.def
-signals.h
  gdb to native signal translation
-gdb_get_regs.c
  Gets the register set from gdbserver and converts to strace structures.

-strace.1.in
  Document the -G gdbserver backend enabling option

-tests/gdbrsp.test
  New test

-tests/Makefile.am
-tests/gdbrsp.c
-tests/gdbrsp.test
-tests/gen_tests.in
-tests/gen_tests.sh
-tests/init.sh
-tests/options-syntax.test
  Added gdbserver versions of the generated tests
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gdb-pt-be.patch
Type: text/x-patch
Size: 159946 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20200211/208a2e8f/attachment.bin>


More information about the Strace-devel mailing list