[PATCH 0/4] Initial support for FreeBSD/riscv

John Baldwin jhb@FreeBSD.org
Wed Sep 19 23:20:00 GMT 2018


This series adds support for FreeBSD/riscv targets.  Note that I've
attempted to make the port support either RV32 or RV64, but FreeBSD
currently only supports RV64.

Patch 1 tries to make it easier to write handlers for signal frame by
allowing the register map structures used with register caches to be
used with trad-frame to supply a block of registers at a starting
address.  It gets somewhat squishy when thinking about how to handle
registers whose size doesn't match the "slot" size in a register map.
I've attempted to make the trad-frame handling match the semantics
that regcache uses.  However, these semantics aren't documented
anywhere and we should perhaps document them.  Also, in this patch I
used 'void *' for the map only because it matches what the regcache
functions do.  I'm happy to make the map argument type-safe instead if
others prefer that.  Also, the comments for regcache_map_entry should
perhaps be made more generic to say it isn't specific to regcache but
is used to describe the layout of a register block.  Arguably the type
should even be renamed to something less regcache-specific
(register_map_entry?).  If we do adopt this patch I will probably make
use of it in some other FreeBSD architectures (aarch64 and arm at
least, possibly x86).

Patch 2's commit log is a bit preachy perhaps and can be toned down if
needed.  I'm curious if my thoughts about using target descriptions
are correct?  It is what x86 does to handle 32-bit vs 64-bit as well
as handling various optional register sets.

John Baldwin (4):
  Add helper functions to trad_frame to support register cache maps.
  Fall back to a default value of 0 for the MISA register.
  Add FreeBSD/riscv architecture.
  Add native target for FreeBSD/riscv.

 gdb/ChangeLog         |  30 ++++++
 gdb/Makefile.in       |   4 +
 gdb/NEWS              |   2 +
 gdb/configure.host    |   1 +
 gdb/configure.nat     |   4 +
 gdb/configure.tgt     |   5 +
 gdb/doc/ChangeLog     |   5 +
 gdb/doc/gdb.texinfo   |   6 ++
 gdb/riscv-fbsd-nat.c  | 135 +++++++++++++++++++++++++++
 gdb/riscv-fbsd-tdep.c | 206 ++++++++++++++++++++++++++++++++++++++++++
 gdb/riscv-fbsd-tdep.h |  33 +++++++
 gdb/riscv-tdep.c      |  13 ++-
 gdb/trad-frame.c      |  69 ++++++++++++++
 gdb/trad-frame.h      |   8 ++
 14 files changed, 519 insertions(+), 2 deletions(-)
 create mode 100644 gdb/riscv-fbsd-nat.c
 create mode 100644 gdb/riscv-fbsd-tdep.c
 create mode 100644 gdb/riscv-fbsd-tdep.h

-- 
2.18.0



More information about the Gdb-patches mailing list