[PATCH 0/5] Fix for an assertion when unwinding with inline frames

Andrew Burgess
2021-05-29T20:57:23Z

This series fixes an assertion I ran into when unwinding a stack
containing inline frames (patch #4).

I also fix an assertion from the 'set debug frame 1' code when I ran
into when trying to debug the first assertion (patch #5).

I also fix an assertion in the Python unwinder API that I ran into
while trying to write a test for the first assertion, this ended up
with me extending the functionality of the unwinder API a little,
which is nice (patch #1).

Then I needed to add some additional methods to the Python
Frame/PendingFrame API so I could write the test for the first
assertion (patch #3).

Finally, there was a small drive by clean up which related to the new
Frame/PendingFrame API extension (patch #2).

Thoughts welcome,

thanks,
Andrew

---

Andrew Burgess (5):
gdb/python: handle saving user registers in a frame unwinder
gdb/python: move PyLong_From* calls into py-utils.c
gdb/python: add PendingFrame.level and Frame.level methods
gdb: prevent an assertion when computing the frame_id for an inline
frame
gdb: remove VALUE_FRAME_ID

gdb/ChangeLog | 34 +++++
gdb/doc/ChangeLog | 6 +
gdb/doc/python.texi | 9 ++
gdb/frame.c | 61 +++++---
gdb/frame.h | 4 -
gdb/python/py-frame.c | 23 +++
gdb/python/py-inferior.c | 2 +-
gdb/python/py-unwind.c | 40 +++++
gdb/python/py-utils.c | 12 ++
gdb/python/python-internal.h | 2 +
gdb/testsuite/ChangeLog | 23 +++
.../gdb.base/inline-frame-bad-unwind.c | 58 ++++++++
.../gdb.base/inline-frame-bad-unwind.exp | 139 ++++++++++++++++++
.../gdb.base/inline-frame-bad-unwind.py | 85 +++++++++++
gdb/testsuite/gdb.python/py-frame.exp | 11 ++
.../gdb.python/py-pending-frame-level.c | 49 ++++++
.../gdb.python/py-pending-frame-level.exp | 65 ++++++++
.../gdb.python/py-pending-frame-level.py | 55 +++++++
.../gdb.python/py-unwind-user-regs.c | 37 +++++
.../gdb.python/py-unwind-user-regs.exp | 98 ++++++++++++
.../gdb.python/py-unwind-user-regs.py | 72 +++++++++
gdb/valops.c | 17 ++-
gdb/value.c | 5 +-
gdb/value.h | 6 -
24 files changed, 874 insertions(+), 39 deletions(-)
create mode 100644 gdb/testsuite/gdb.base/inline-frame-bad-unwind.c
create mode 100644 gdb/testsuite/gdb.base/inline-frame-bad-unwind.exp
create mode 100644 gdb/testsuite/gdb.base/inline-frame-bad-unwind.py
create mode 100644 gdb/testsuite/gdb.python/py-pending-frame-level.c
create mode 100644 gdb/testsuite/gdb.python/py-pending-frame-level.exp
create mode 100644 gdb/testsuite/gdb.python/py-pending-frame-level.py
create mode 100644 gdb/testsuite/gdb.python/py-unwind-user-regs.c
create mode 100644 gdb/testsuite/gdb.python/py-unwind-user-regs.exp
create mode 100644 gdb/testsuite/gdb.python/py-unwind-user-regs.py

--
2.25.4