Home | History | Annotate | Download | only in libunwind
History log of /src/sys/lib/libunwind/Registers.hpp
RevisionDateAuthorComments
 1.40  23-Aug-2023  rin libunwind: Drop unused/wrong reg_t typedef for alpha
 1.39  27-Jun-2022  martin Fix editing mishap, should fix the build
 1.38  26-Jun-2022  skrll Teach the LLVM-derived unwinder about the DWARF pseudo-registers defined
by GCC for HPPA to hold the return address where the signal trampoline
will resume. XXX Same treatment is needed for HPPA64, but not done as
part of this commit.

Thanks to thorpej for help with this. (ages ago)
 1.37  24-Nov-2021  thorpej Teach the LLVM-derived unwinder about the DWARF pseudo-registers defined
by GCC for SuperH for GBR, MACH, MACL, and SR.
 1.36  22-Nov-2021  thorpej Gah, fix two typos.
 1.35  22-Nov-2021  thorpej Teach the LLVM-derived unwinder about the DWARF pseudo-register defined
by GCC for AArch64 to hold the return address where the signal trampoline
will resume.
 1.34  21-Nov-2021  thorpej Teach the LLVM-derived unwinder about the alternate DWARF pseudo-register
that GCC defines for the PC / return address. This is simply an alias for
the same internal PC register number.
 1.33  21-Nov-2021  thorpej Teach the LLVM-derived unwinder about the DWARF pseudo-register defined
by GCC for PPC32 to hold the return address where the signal trampoline
will resume, as well as for the CTR and XER registers.
 1.32  21-Nov-2021  skrll Add parentheses
 1.31  20-Nov-2021  thorpej Teach the LLVM-derived unwinder about the DWARF pseudo-register defined
by GCC for Alpha to hold the return address where the signal trampoline
will resume.
 1.30  20-Nov-2021  thorpej - Teach the LLVM-derived unwinder about the DWARF pseudo-registers defined
by GCC for MIPS64 to hold the MDHI and MDLO registers, as well as the return
address where the signal trampoline will resume.
- In the MIPS64 validFloatVectorRegister(), compare against the internal
register numbers, not the DWARF register numbers.
 1.29  18-Nov-2021  thorpej - Teach the LLVM-derived unwinder about the DWARF pseudo-registers defined
by GCC for MIPS to hold the MDHI and MDLO registers, as well as the return
address where the signal trampoline will resume. XXX Same treatment is
needed for MIPS64, but not done as part of this commit.
- In the MIPS validFloatVectorRegister(), compare against the internal
register numbers, not the DWARF register numbers.
 1.28  31-May-2021  rin PR toolchain/55837

Stop using enum for flags, as per request from joerg.

#define constants and #undef after use.
 1.27  31-May-2021  rin PR toolchain/55837

Bump LAST_REGISTER and LAST_RESTORE_REG to REGNO_ARM32_S31 for arm.

There are two numbering schemes for VFPv2 registers: s0-s31 and d0-d15.
The former is used by GCC, and the latter is by LLVM. Since libunwind was
derived from LLVM, it has never supported the former. This results in
crashes for GCC-compiled binaries in exception handler of C++, if it
encounters VFPv2 registers when unwinding frames.

This commit adds support for s0-s31 numbering to libunwind. I choose an
implementation in which VFPv2 registers are ``double-counted'' as s0-s31
AND d0-d15. This does not cause real problems, since the former is only
used by GCC, and the later is by LLVM. That is, different numbering
schemes cannot appear in a same frame. To make sure, assertions are added
in order to check this.

I've confirmed that no regression for ATF both for GCC- and LLVM-compiled
userlands.
 1.26  31-May-2021  rin PR toolchain/55837

Fix logic error in copyFloatVectorRegister() for arm; copy s0-s31 or
d0-d31, not both.
 1.25  31-May-2021  rin PR toolchain/55837

Fix pointer arithmetic when copying s0-s31 registers for arm.
 1.24  31-May-2021  rin PR toolchain/55837

Fix DWARF/internal register numbers of s31 for arm.
 1.23  31-May-2021  rin PR toolchain/55837

copyFloatVectorRegister(): Assert register number is valid to make sure.
 1.22  31-May-2021  rin PR toolchain/55837

Misc style fixes for clarity:

- Rename lazyVFP1() and lazyVFP3() to lazyVFPv2() and lazyVFPv3(),
respectively. Note that VFPv1 was obsoleted and replaced by VFPv2.

- Introduce enum for flags.

- Add few comments.

No functional changes.
 1.21  23-Feb-2021  joerg branches: 1.21.4; 1.21.6;
Redo the aarch64 support in libunwind. This included a number of bugs
starting from returning the wrong value from the constructor to
completely bogus offset computations. Drop the ELR support for now.
 1.20  13-Jul-2017  joerg branches: 1.20.18;
GCC 5.3 likes to emit unwind data with float registers, i.e. register
halfs. Compensate.
 1.19  27-Sep-2014  joerg branches: 1.19.2; 1.19.12;
Introduce a separate bit mask for the return address. Use it on HPPA.
 1.18  03-Sep-2014  matt Add OR1K support
 1.17  10-Aug-2014  matt branches: 1.17.4;
Changes to existing files to enable building AARCH64 userland.
evbarm64-el
This is clang only. While gcc4.8 supports aarch64, no netbsd support has
been written for aarch64 with gcc4.8.
 1.16  11-May-2014  joerg branches: 1.16.2; 1.16.4;
Support DWARFish unwind for ARM.
 1.15  26-Apr-2014  joerg Use the return address register from the CIE. Based on patch from Nick
Kledzik.
 1.14  26-Apr-2014  joerg Add initial unwind support for MIPS and MIPS64.
 1.13  19-Apr-2014  joerg Basic unwind support for HPPA.
 1.12  15-Apr-2014  joerg Add basic Alpha support to libunwind.
 1.11  15-Apr-2014  joerg Add initial unwind support for SPARC/SPARC64.
 1.10  14-Apr-2014  joerg Some architectures like SPARC need to apply a fixed offset to the return
address. Introduce such a constant.
 1.9  13-Apr-2014  joerg Move definition of what the native register layout is into
Registers.hpp.
 1.8  02-Apr-2014  joerg branches: 1.8.2;
Support SH3 in our unwinder.
 1.7  25-Mar-2014  joerg Save & restore FP registers.
 1.6  24-Mar-2014  joerg Add m68k support to our unwinder.
 1.5  18-Mar-2014  joerg Add basic unwind support for VAX. PSW handling and stack pointer after
resume is still incomplete.
 1.4  12-Mar-2014  joerg Add a dummy element as explicit padding for PPC32. Fix DWARF enumeration
to match the values created by GCC. Fix DWARFish -> index conversion.
 1.3  11-Mar-2014  joerg Rename IP_PSEUDO_REG to RETURN_REG. Fix PPC value. Sort.
 1.2  29-Jan-2014  matt Add support for non-EABI (DWARF) ARM exception handling.
 1.1  14-Oct-2013  joerg Add a heavily modified version of Apple's libunwind as released under
MIT license in libc++abi. At the moment, only x86 support is tested.
 1.8.2.1  10-Aug-2014  tls Rebase.
 1.16.4.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.16.4.1  11-May-2014  yamt file Registers.hpp was added on branch yamt-pagecache on 2014-05-22 11:41:05 +0000
 1.16.2.2  18-May-2014  rmind sync with head
 1.16.2.1  11-May-2014  rmind file Registers.hpp was added on branch rmind-smpnet on 2014-05-18 17:46:09 +0000
 1.17.4.3  03-Dec-2017  jdolecek update from HEAD
 1.17.4.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.17.4.1  10-Aug-2014  tls file Registers.hpp was added on branch tls-maxphys on 2014-08-20 00:04:30 +0000
 1.19.12.1  25-Jul-2017  snj Pull up following revision(s) (requested by joerg in ticket #134):
sys/lib/libunwind/Registers.hpp: revision 1.20
GCC 5.3 likes to emit unwind data with float registers, i.e. register
halfs. Compensate.
 1.19.2.1  28-Aug-2017  skrll Sync with HEAD
 1.20.18.1  03-Apr-2021  thorpej Sync with HEAD.
 1.21.6.1  31-May-2021  cjep sync with head
 1.21.4.1  17-Jun-2021  thorpej Sync w/ HEAD.

RSS XML Feed