Hi, Tao
On Thu, Aug 21, 2025 at 6:58 AM <devel-request(a)lists.crash-utility.osci.io>
wrote:
Date: Thu, 21 Aug 2025 10:55:24 +1200
From: Tao Liu <ltao(a)redhat.com>
Subject: [Crash-utility] [PATCH v1 0/5] extension: Several
improvements on eppic extension
To: devel(a)lists.crash-utility.osci.io
Cc: Tao Liu <ltao(a)redhat.com>
Message-ID: <20250820225529.6369-1-ltao(a)redhat.com>
Content-Type: text/plain; charset="US-ASCII"; x-default=true
Eppic works as a crash extension for a long time, and it is a very
convenient
tool to extend crash's function:
1) People don't need to write an actual crash extension, which requires
knowledge of crash APIs, such as readmem(), gdb_interface() etc.
Implementing such an crash extension is hard for normal users.
2) Eppic programs are C-syntax-like scripting, no compile needed, so
friendly
to kernel developers who are already familiar with C. It's a good
alternative
for people who are unfamiliar with python (comparing to drgn/pykdump).
3) Writing eppic programs is similar to do kernel programming, people can
use
kernel data structures/global variables directly, again, friendly to
kernel
developers.
Personally I think eppic is a good tool and would like to push it forward
to
make it used more widely, improved consistently. However I hardly heard
anyone
who are using it, I guess it is due to it's extension position and unknown
to
others.
In this patchset, I will make several improvements on eppic, although it is
still a crash extension, but I think it is made more easily for
compile/run/scripting.
Thank you for your efforts and working on this.
Think it over, I have several comments about this:
[1] In this patchset, the patch[1] and patch[4] are fine to me, although I
haven't looked at the code details and tested them yet(plan to do it in v2)
[2] Currently the patch[2] and patch[3] seem to be unnecessary, the eppic
is an extension module, no need to load it by default, furthermore, this
should be good enough to compile extension modules with the "make
extensions" command, and it is also convenient to load the eppic module
with "extend eppic.so", not very complicated.
[3] The patch[5] is for alias, I do not recommend changing the user
interface(or user habits), and also there is a crash internal command
'alias' to do the same thing.
[4] Can you also add a doc(or description) to give some simple examples,
Eg: how to use it quickly? That can help other people understand the usage.
Thanks
Lianbo
To-do:
Some crash functions should be exposed to eppic, such as
maple_tree/rbtree etc, so people can iterate these kernel structures
with no problem, e.g. vma iteration. The exposure isn't hard and can be
implemented later.
Tao Liu (5):
extensions: modify search path and extension preload
Makefile: allow "make eppic" to create the eppic extension
configure: Add EPPIC to Cflags
eppic.patch: Add customized functions to eppic
alias: create "eppic" alias to run eppic programs
Makefile | 12 ++-
configure.c | 14 ++-
defs.h | 2 +-
extensions.c | 83 +++++++++++-------
extensions/Makefile | 2 +-
extensions/eppic.mk | 13 ++-
extensions/eppic.patch | 195 +++++++++++++++++++++++++++++++++++++++++
main.c | 16 +++-
8 files changed, 295 insertions(+), 42 deletions(-)
create mode 100644 extensions/eppic.patch
--
2.47.0