From a4d39d4b69b265ee41b08cd04f5292e3ddb31aeb Mon Sep 17 00:00:00 2001 From: Mitch Phillips <31459023+hctim@users.noreply.github.com> Date: Wed, 1 Mar 2023 10:49:39 -0800 Subject: [llvm-readobj] Add --memtag This adds functionality to readelf/readobj to specifically handle MTE-related bits, like the AARCH64_MEMTAG_* dynamic entries, and a decoder for the Android-specific ELF note. Reviewed By: jhenderson, MaskRay Differential Revision: https://reviews.llvm.org/D143693 --- llvm/tools/llvm-readobj/llvm-readobj.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'llvm/tools/llvm-readobj/llvm-readobj.cpp') diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp index aa49e30..d72eec0 100644 --- a/llvm/tools/llvm-readobj/llvm-readobj.cpp +++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp @@ -136,6 +136,7 @@ static bool GnuHashTable; static bool HashSymbols; static bool HashTable; static bool HashHistogram; +static bool Memtag; static bool NeededLibraries; static bool Notes; static bool ProgramHeaders; @@ -266,6 +267,7 @@ static void parseOptions(const opt::InputArgList &Args) { opts::HashSymbols = Args.hasArg(OPT_hash_symbols); opts::HashTable = Args.hasArg(OPT_hash_table); opts::HashHistogram = Args.hasArg(OPT_histogram); + opts::Memtag = Args.hasArg(OPT_memtag); opts::NeededLibraries = Args.hasArg(OPT_needed_libs); opts::Notes = Args.hasArg(OPT_notes); opts::PrettyPrint = Args.hasArg(OPT_pretty_print); @@ -473,6 +475,8 @@ static void dumpObject(ObjectFile &Obj, ScopedPrinter &Writer, Dumper->printAddrsig(); if (opts::Notes) Dumper->printNotes(); + if (opts::Memtag) + Dumper->printMemtag(); } if (Obj.isCOFF()) { if (opts::COFFImports) @@ -684,6 +688,7 @@ int llvm_readobj_main(int argc, char **argv, const llvm::ToolContext &) { opts::Addrsig = true; opts::PrintStackSizes = true; } + opts::Memtag = true; } if (opts::Headers) { -- cgit v1.1