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

Message ID cover.1622321523.git.andrew.burgess@embecosm.com
Headers show
Series
  • Fix for an assertion when unwinding with inline frames
Related show

Message

Andrew Burgess May 29, 2021, 8:57 p.m.
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