public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
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


             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).