From 50ca8edb1a0d94e057a28ae792e3b756bd08d809 Mon Sep 17 00:00:00 2001 From: Matt Davis Date: Fri, 1 Feb 2019 18:51:10 +0000 Subject: [llvm-readobj] Add a flag to dump just the section-to-segment mapping. Summary: The following patch introduces a new function `printSectionMapping` which is responsible for dumping just the section-to-segment mapping. This patch also introduces a n option `-section-mapping` that outputs that mapping without the program headers. Previously, this functionality was controlled by `printProgramHeaders`, and the output from `-program-headers` has not been changed. I am happy to change the option name, I copied the name that was displayed when outputting the mapping table. Reviewers: khemant, jhenderson, grimar, rupprecht Reviewed By: jhenderson, grimar, rupprecht Subscribers: rupprecht, jhenderson, llvm-commits Differential Revision: https://reviews.llvm.org/D57365 llvm-svn: 352896 --- llvm/tools/llvm-readobj/llvm-readobj.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (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 206b67b..74f21e3 100644 --- a/llvm/tools/llvm-readobj/llvm-readobj.cpp +++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp @@ -106,6 +106,11 @@ namespace opts { cl::opt SectionData("section-data", cl::desc("Display section data for each section shown.")); + // -section-mapping + cl::opt + SectionMapping("section-mapping", + cl::desc("Display the section to segment mapping.")); + // -relocations, -relocs, -r cl::opt Relocations("relocations", cl::desc("Display the relocation entries in the file")); @@ -474,8 +479,8 @@ static void dumpObject(const ObjectFile *Obj, ScopedPrinter &Writer) { Dumper->printDynamicTable(); if (opts::NeededLibraries) Dumper->printNeededLibraries(); - if (opts::ProgramHeaders) - Dumper->printProgramHeaders(); + if (opts::ProgramHeaders || opts::SectionMapping == cl::BOU_TRUE) + Dumper->printProgramHeaders(opts::ProgramHeaders, opts::SectionMapping); if (!opts::StringDump.empty()) llvm::for_each(opts::StringDump, [&Dumper, Obj](StringRef SectionName) { Dumper->printSectionAsString(Obj, SectionName); -- cgit v1.1