]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
Add basic Linux kernel support
authorPhilipp Rudo <prudo@linux.vnet.ibm.com>
Thu, 16 Mar 2017 09:50:24 +0000 (10:50 +0100)
committerAndreas Arnez <arnez@linux.vnet.ibm.com>
Thu, 16 Mar 2017 16:01:48 +0000 (17:01 +0100)
commit60a2f0378478f101e049dd622f69bf01f6d690a0
treeb9af920f0d17c4b5d5c135f9826f9a6ae2d914a6
parent09e978d277adb915ba9160de4012eccac55d0eb8
Add basic Linux kernel support

This patch implements a basic target_ops for Linux kernel support. In
particular it models Linux tasks as GDB threads such that you are able to
change to a given thread, get backtraces, disassemble the current frame
etc..

Currently the target_ops is designed only to work with static targets, i.e.
dumps. Thus it lacks implementation for hooks like to_wait, to_resume or
to_store_registers. Furthermore the mapping between a CPU and the
task_struct of the running task is only be done once at initialization. See
cover letter for a detailed discussion.

Nevertheless i made some design decisions different to Peter [1] which are
worth discussing. Especially storing the private data in a htab (or
std::unordered_map if i had the time...) instead of global variables makes
the code much nicer and less memory consuming.

[1] https://sourceware.org/ml/gdb-patches/2016-12/msg00382.html

gdb/ChangeLog:

    * gdbarch.sh (lk_init_private): New hook.
    * gdbarch.h: Regenerated.
    * gdbarch.c: Regenerated.
    * lk-low.h: New file.
    * lk-low.c: New file.
    * lk-lists.h: New file.
    * lk-lists.c: New file.
    * Makefile.in (SFILES, ALLDEPFILES): Add lk-low.c and lk-lists.c.
    (HFILES_NO_SRCDIR): Add lk-low.h and lk-lists.h.
    (ALL_TARGET_OBS): Add lk-low.o and lk-lists.o.
    * configure.tgt (lk_target_obs): New variable with object files for Linux
      kernel support.
      (s390*-*-linux*): Add lk_target_obs.
gdb/Makefile.in
gdb/configure.tgt
gdb/gdbarch.c
gdb/gdbarch.h
gdb/gdbarch.sh
gdb/lk-lists.c [new file with mode: 0644]
gdb/lk-lists.h [new file with mode: 0644]
gdb/lk-low.c [new file with mode: 0644]
gdb/lk-low.h [new file with mode: 0644]