From: Andrew Burgess <aburgess@redhat.com>
To: gdb-patches@sourceware.org
Cc: Andrew Burgess <aburgess@redhat.com>
Subject: [PATCHv5 0/5] Add Python API for the disassembler
Date: Fri, 6 May 2022 18:17:09 +0100 [thread overview]
Message-ID: <cover.1651857000.git.aburgess@redhat.com> (raw)
In-Reply-To: <cover.1650878049.git.aburgess@redhat.com>
Changes in v5:
- Patch #1, minor typo fixes, and reword some comments in line with
Simon's feedback. Have not restructured the class hierarchy, this
was mentioned in Simon's feedback, but he also said he'd accept
what I have right now. I think what I have right now does have
some benefits, so I've stuck with that for now.
- Patch #2, minor typo fixes based on Simon's feedback.
- Patch #3, lots of significant changes.
+ Documentation has been updated and expanded significantly,
+ Added a new 'maint info python-disassemblers' command,
+ Removed the memory_source argument to the builtin_disassembler
function, DisassembleInfo objects can now be sub-classed to
achieve the same result,
+ Added additional test to catch more of the error cases, and
updated the tests that related to the memory_source usage that
has now been removed.
+ Plus all the minor style issues and typos that Simon pointed
out.
Changes in v4:
- Patch #1 from v3 series has been merged,
- Addressed Eli's feedback on previous series,
- Rebased onto current upstream/master.
Changes in v3:
- Rebased to current master, and retested,
- Patch #1 is new in this series,
- Patch #2 is changed slightly from v2, I've reworked the
disassembler classes in a slightly different way now, in order to
prepare for patches #5 and #6.
- Patch #3 is unchanged from v2,
- Patch #4 is unchanged from v2,
- Patch #5 is new in v3. I've included it here as the changes in #2
only make sense knowing that patch #5 is coming,
- Patch #6 is a small cleanup only possible after #2 and #5 have landed.
Changes in v2:
- The first 3 patches from the v1 series were merged a while back,
these were all refactoring, or auxiliary features,
- There's a new #1 patch in the v2 series that does some new
refactoring of GDB's disassembler classes, this was required in
order to simplify the #3 patch,
- Patch #2 in the v2 series is largely unchanged from patch #4 in
the v1 series,
- The syntax highlighting work that was in the v1 series was spun
out into its own patch, and has been merged separately,
- The format_address helper function that appeared in the v1 series,
and that Simon suggested I make more general, was spun out into
its own patch, and merged separately,
- Finally, patch #3 in the v2 series is pretty much a complete
rewrite from the v1 series in order to follow the approach
suggested by Simon. Results are now returned directly, either via
'return' or by raising an exception, in contrast to the original
approach which involved "setting" the result into an existing
state object.
---
Andrew Burgess (5):
gdb: add new base class to gdb_disassembler
gdb: add extension language print_insn hook
gdb/python: implement the print_insn extension language hook
gdb: refactor the non-printing disassemblers
gdb: unify two dis_asm_read_memory functions in disasm.c
gdb/Makefile.in | 1 +
gdb/NEWS | 34 +
gdb/arc-linux-tdep.c | 15 +-
gdb/arc-tdep.c | 29 +-
gdb/arc-tdep.h | 5 -
gdb/arm-tdep.c | 4 +-
gdb/data-directory/Makefile.in | 1 +
gdb/disasm-selftests.c | 70 +-
gdb/disasm.c | 179 ++--
gdb/disasm.h | 207 ++++-
gdb/doc/gdb.texinfo | 41 +
gdb/doc/python.texi | 292 +++++++
gdb/extension-priv.h | 15 +
gdb/extension.c | 20 +
gdb/extension.h | 10 +
gdb/guile/guile.c | 6 +-
gdb/mips-tdep.c | 4 +-
gdb/python/lib/gdb/disassembler.py | 178 ++++
gdb/python/py-disasm.c | 1057 ++++++++++++++++++++++++
gdb/python/python-internal.h | 16 +
gdb/python/python.c | 3 +
gdb/s12z-tdep.c | 26 +-
gdb/testsuite/gdb.python/py-disasm.c | 25 +
gdb/testsuite/gdb.python/py-disasm.exp | 202 +++++
gdb/testsuite/gdb.python/py-disasm.py | 614 ++++++++++++++
25 files changed, 2857 insertions(+), 197 deletions(-)
create mode 100644 gdb/python/lib/gdb/disassembler.py
create mode 100644 gdb/python/py-disasm.c
create mode 100644 gdb/testsuite/gdb.python/py-disasm.c
create mode 100644 gdb/testsuite/gdb.python/py-disasm.exp
create mode 100644 gdb/testsuite/gdb.python/py-disasm.py
--
2.25.4
next prev parent reply other threads:[~2022-05-06 17:17 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-13 21:59 [PATCH " Andrew Burgess
2021-10-13 21:59 ` [PATCH 1/5] gdb: make disassembler fprintf callback a static member function Andrew Burgess
2021-10-20 20:40 ` Tom Tromey
2021-10-22 12:51 ` Andrew Burgess
2021-10-13 21:59 ` [PATCH 2/5] gdb/python: new gdb.architecture_names function Andrew Burgess
2021-10-14 6:52 ` Eli Zaretskii
2021-10-22 12:51 ` Andrew Burgess
2021-10-20 20:40 ` Tom Tromey
2021-10-22 13:02 ` Simon Marchi
2021-10-22 17:34 ` Andrew Burgess
2021-10-22 18:42 ` Simon Marchi
2021-10-13 21:59 ` [PATCH 3/5] gdb/python: move gdb.Membuf support into a new file Andrew Burgess
2021-10-20 20:42 ` Tom Tromey
2021-10-22 12:52 ` Andrew Burgess
2021-10-13 21:59 ` [PATCH 4/5] gdb: add extension language print_insn hook Andrew Burgess
2021-10-20 21:06 ` Tom Tromey
2021-10-13 21:59 ` [PATCH 5/5] gdb/python: implement the print_insn extension language hook Andrew Burgess
2021-10-14 7:12 ` Eli Zaretskii
2021-10-22 17:47 ` Andrew Burgess
2021-10-22 18:33 ` Eli Zaretskii
2021-10-22 13:30 ` Simon Marchi
2022-03-23 22:41 ` [PATCHv2 0/3] Add Python API for the disassembler Andrew Burgess
2022-03-23 22:41 ` [PATCHv2 1/3] gdb: add new base class to gdb_disassembler Andrew Burgess
2022-03-23 22:41 ` [PATCHv2 2/3] gdb: add extension language print_insn hook Andrew Burgess
2022-03-23 22:41 ` [PATCHv2 3/3] gdb/python: implement the print_insn extension language hook Andrew Burgess
2022-03-24 7:10 ` Eli Zaretskii
2022-03-24 19:51 ` Andrew Burgess
2022-04-04 22:19 ` [PATCHv3 0/6] Add Python API for the disassembler Andrew Burgess
2022-04-04 22:19 ` [PATCHv3 1/6] gdb: move gdb_disassembly_flag into a new disasm-flags.h file Andrew Burgess
2022-04-05 14:32 ` Tom Tromey
2022-04-06 12:18 ` Andrew Burgess
2022-04-04 22:19 ` [PATCHv3 2/6] gdb: add new base class to gdb_disassembler Andrew Burgess
2022-04-04 22:19 ` [PATCHv3 3/6] gdb: add extension language print_insn hook Andrew Burgess
2022-04-04 22:19 ` [PATCHv3 4/6] gdb/python: implement the print_insn extension language hook Andrew Burgess
2022-04-05 12:04 ` Eli Zaretskii
2022-04-04 22:19 ` [PATCHv3 5/6] gdb: refactor the non-printing disassemblers Andrew Burgess
2022-04-04 22:19 ` [PATCHv3 6/6] gdb: unify two dis_asm_read_memory functions in disasm.c Andrew Burgess
2022-04-25 9:15 ` [PATCHv4 0/5] Add Python API for the disassembler Andrew Burgess
2022-04-25 9:15 ` [PATCHv4 1/5] gdb: add new base class to gdb_disassembler Andrew Burgess
2022-05-03 13:34 ` Simon Marchi
2022-05-03 16:13 ` Andrew Burgess
2022-05-05 17:39 ` Andrew Burgess
2022-04-25 9:15 ` [PATCHv4 2/5] gdb: add extension language print_insn hook Andrew Burgess
2022-05-03 13:42 ` Simon Marchi
2022-04-25 9:15 ` [PATCHv4 3/5] gdb/python: implement the print_insn extension language hook Andrew Burgess
2022-04-25 11:26 ` Eli Zaretskii
2022-05-03 14:55 ` Simon Marchi
2022-05-05 18:17 ` Andrew Burgess
2022-05-24 1:16 ` Simon Marchi
2022-05-24 8:30 ` Andrew Burgess
2022-05-25 10:37 ` Andrew Burgess
2022-04-25 9:15 ` [PATCHv4 4/5] gdb: refactor the non-printing disassemblers Andrew Burgess
2022-04-25 9:15 ` [PATCHv4 5/5] gdb: unify two dis_asm_read_memory functions in disasm.c Andrew Burgess
2022-05-03 10:12 ` [PATCHv4 0/5] Add Python API for the disassembler Andrew Burgess
2022-05-06 17:17 ` Andrew Burgess [this message]
2022-05-06 17:17 ` [PATCHv5 1/5] gdb: add new base class to gdb_disassembler Andrew Burgess
2022-05-06 17:17 ` [PATCHv5 2/5] gdb: add extension language print_insn hook Andrew Burgess
2022-05-06 17:17 ` [PATCHv5 3/5] gdb/python: implement the print_insn extension language hook Andrew Burgess
2022-05-06 18:11 ` Eli Zaretskii
2022-05-18 10:08 ` Andrew Burgess
2022-05-18 12:08 ` Eli Zaretskii
2022-05-23 8:59 ` Andrew Burgess
2022-05-23 11:23 ` Eli Zaretskii
2022-05-06 17:17 ` [PATCHv5 4/5] gdb: refactor the non-printing disassemblers Andrew Burgess
2022-05-06 17:17 ` [PATCHv5 5/5] gdb: unify two dis_asm_read_memory functions in disasm.c Andrew Burgess
2022-05-25 10:49 ` [PATCHv6 0/6] Add Python API for the disassembler Andrew Burgess
2022-05-25 10:49 ` [PATCHv6 1/6] gdb/python: convert gdbpy_err_fetch to use gdbpy_ref Andrew Burgess
2022-05-25 10:49 ` [PATCHv6 2/6] gdb: add new base class to gdb_disassembler Andrew Burgess
2022-05-25 10:49 ` [PATCHv6 3/6] gdb: add extension language print_insn hook Andrew Burgess
2022-05-25 10:49 ` [PATCHv6 4/6] gdb/python: implement the print_insn extension language hook Andrew Burgess
2022-05-25 13:32 ` Eli Zaretskii
2022-05-25 10:49 ` [PATCHv6 5/6] gdb: refactor the non-printing disassemblers Andrew Burgess
2022-05-25 10:49 ` [PATCHv6 6/6] gdb: unify two dis_asm_read_memory functions in disasm.c Andrew Burgess
2022-06-15 9:04 ` [PUSHED 0/6] Add Python API for the disassembler Andrew Burgess
2022-06-15 9:04 ` [PUSHED 1/6] gdb/python: convert gdbpy_err_fetch to use gdbpy_ref Andrew Burgess
2022-06-15 9:04 ` [PUSHED 2/6] gdb: add new base class to gdb_disassembler Andrew Burgess
2022-06-15 9:04 ` [PUSHED 3/6] gdb: add extension language print_insn hook Andrew Burgess
2022-06-15 9:04 ` [PUSHED 4/6] gdb/python: implement the print_insn extension language hook Andrew Burgess
2022-06-15 9:04 ` [PUSHED 5/6] gdb: refactor the non-printing disassemblers Andrew Burgess
2022-06-15 9:04 ` [PUSHED 6/6] gdb: unify two dis_asm_read_memory functions in disasm.c Andrew Burgess
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1651857000.git.aburgess@redhat.com \
--to=aburgess@redhat.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).