From: "Guillermo E. Martinez" <guillermo.e.martinez@oracle.com>
To: libabigail@sourceware.org
Subject: [PATCH] kmidiff: Add --ctf option to compare kernel trees
Date: Mon, 4 Jul 2022 10:44:35 -0500 [thread overview]
Message-ID: <20220704154435.37568-1-guillermo.e.martinez@oracle.com> (raw)
Hello,
This patch add a new option to kmidiff tool to compare Kernel trees
with CTF debug information. Please let me know your thoughts.
Regards,
guillermo
---
* tools/kmidiff.cc (option::use_ctf option): Declare new option.
(display_usage): Create new option entry for `--ctf'.
(parse_command_line): Handle `--ctf' option.
(main): Set `corpus::origin' to {CTF,DWARF}_ORIGIN depending of
command line arguments.
* tools/kmidiff.cc: Add documentation for new option.
Signed-off-by: Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
---
doc/manuals/kmidiff.rst | 4 ++++
tools/kmidiff.cc | 25 +++++++++++++++++++++++--
2 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/doc/manuals/kmidiff.rst b/doc/manuals/kmidiff.rst
index 011dbafd..ce8168ae 100644
--- a/doc/manuals/kmidiff.rst
+++ b/doc/manuals/kmidiff.rst
@@ -165,6 +165,10 @@ Options
the :ref:`default suppression specification files
<abidiff_default_supprs_label>` are loaded .
+ * ``--ctf``
+
+ Extract ABI information from CTF debug information, if present in
+ the Kernel and Modules.
* ``--impacted-interfaces | -i``
diff --git a/tools/kmidiff.cc b/tools/kmidiff.cc
index d89026f9..8fd3fed9 100644
--- a/tools/kmidiff.cc
+++ b/tools/kmidiff.cc
@@ -9,6 +9,7 @@
///
/// The source code of the Kernel Module Interface Diff tool.
+#include "config.h"
#include <sys/types.h>
#include <dirent.h>
#include <cstring>
@@ -59,6 +60,9 @@ struct options
bool show_hexadecimal_values;
bool show_offsets_sizes_in_bits;
bool show_impacted_interfaces;
+#ifdef WITH_CTF
+ bool use_ctf;
+#endif
string wrong_option;
string kernel_dist_root1;
string kernel_dist_root2;
@@ -80,6 +84,10 @@ struct options
show_hexadecimal_values(true),
show_offsets_sizes_in_bits(false),
show_impacted_interfaces(false)
+#ifdef WITH_CTF
+ ,
+ use_ctf(false)
+#endif
{}
}; // end struct options.
@@ -106,6 +114,9 @@ display_usage(const string& prog_name, ostream& out)
<< " --suppressions|--suppr <path> specify a suppression file\n"
<< " --kmi-whitelist|-w <path> path to a kernel module interface "
"whitelist\n"
+#ifdef WITH_CTF
+ << " --ctf use CTF instead of DWARF in ELF files\n"
+#endif
<< " --impacted-interfaces|-i show interfaces impacted by ABI changes\n"
<< " --full-impact|-f show the full impact of changes on top-most "
"interfaces\n"
@@ -241,6 +252,10 @@ parse_command_line(int argc, char* argv[], options& opts)
opts.suppression_paths.push_back(argv[j]);
++i;
}
+#ifdef WITH_CTF
+ else if (!strcmp(argv[i], "--ctf"))
+ opts.use_ctf = true;
+#endif
else if (!strcmp(argv[i], "--impacted-interfaces")
|| !strcmp(argv[i], "-i"))
opts.show_impacted_interfaces = true;
@@ -395,6 +410,12 @@ main(int argc, char* argv[])
corpus_group_sptr group1, group2;
string debug_info_root_dir;
+ corpus::origin origin =
+#ifdef WITH_CTF
+ opts.use_ctf ? corpus::CTF_ORIGIN :
+#endif
+ corpus::DWARF_ORIGIN;
+
if (!opts.kernel_dist_root1.empty())
{
file_type ftype = guess_file_type(opts.kernel_dist_root1);
@@ -412,7 +433,7 @@ main(int argc, char* argv[])
opts.kabi_whitelist_paths,
opts.read_time_supprs,
opts.verbose,
- env);
+ env, origin);
print_kernel_dist_binary_paths_under(opts.kernel_dist_root1, opts);
}
else if (ftype == FILE_TYPE_XML_CORPUS_GROUP)
@@ -438,7 +459,7 @@ main(int argc, char* argv[])
opts.kabi_whitelist_paths,
opts.read_time_supprs,
opts.verbose,
- env);
+ env, origin);
print_kernel_dist_binary_paths_under(opts.kernel_dist_root2, opts);
}
else if (ftype == FILE_TYPE_XML_CORPUS_GROUP)
--
2.35.1
next reply other threads:[~2022-07-04 15:44 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-04 15:44 Guillermo E. Martinez [this message]
2022-07-08 8:29 ` Dodji Seketeli
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=20220704154435.37568-1-guillermo.e.martinez@oracle.com \
--to=guillermo.e.martinez@oracle.com \
--cc=libabigail@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).