From: Guillermo E. Martinez via Libabigail Date: Mon, 4 Jul 2022 15:44:35 +0000 (-0500) Subject: kmidiff: Add CTF support to comparing Kernel trees X-Git-Tag: libabigail-2.1~43 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=68f369f2182fe1f1fce5434111ced1742b27b31c;p=libabigail.git kmidiff: Add CTF support to comparing Kernel trees This patch adds a new --ctf option to kmidiff to make it support CTF type information when analysing Linux Kernel trees. * doc/manuals/kmidiff.rst: Add documentation for the new --ctf option. * tools/kmidiff.cc (options::use_ctf): Define new data member. (display_usage): Add a help string for the --ctf option. (main): Adjust call to pass build_corpus_group_from_kernel_dist_under with origin being corpus::CTF_ORIGIN when the user provides the --ctf option. Signed-off-by: Guillermo E. Martinez Signed-off-by: Dodji Seketeli --- 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 ` 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 #include #include @@ -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 specify a suppression file\n" << " --kmi-whitelist|-w 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)