FreeBSD x86: Use tramp-frame for signal frames.
authorJohn Baldwin <jhb@FreeBSD.org>
Fri, 28 Jan 2022 19:14:37 +0000 (11:14 -0800)
committerJohn Baldwin <jhb@FreeBSD.org>
Fri, 28 Jan 2022 19:14:37 +0000 (11:14 -0800)
commit7384826ebff8a91a3f9b632e9e3982760fab966e
treec1a7e3eff5562eeec53ac44686864a8873fbfb4a
parenta423c9f39294b5cc6f658a145f3844d19f3f3cf1
FreeBSD x86: Use tramp-frame for signal frames.

Use a register map to describe the registers in mcontext_t as part of
the signal frame as is done on several other FreeBSD arches.  This
permits fetching the fsbase and gsbase register values from the signal
frame for both amd64 and i386 and permits fetching additional segment
registers stored as 16-bit values on amd64.

While signal frames on FreeBSD do contain floating point/XSAVE state,
these unwinders do not attempt to supply those registers.  The
existing x86 signal frame uwinders do not support these registers, and
the only existing functions which handle FSAVE/FXSAVE/XSAVE state all
work with regcaches.  In the future these unwinders could create a
tempory regcache, collect floating point registers, and then supply
values out of the regcache into the trad-frame.
gdb/amd64-fbsd-nat.c
gdb/amd64-fbsd-tdep.c
gdb/amd64-tdep.h
gdb/i386-bsd-nat.c
gdb/i386-fbsd-tdep.c
gdb/i386-tdep.h