diff options
Diffstat (limited to 'llvm/tools/llvm-objdump')
-rw-r--r-- | llvm/tools/llvm-objdump/CMakeLists.txt | 1 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/COFFDump.cpp | 2 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/DXContainerDump.cpp | 30 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 5 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.h | 3 |
5 files changed, 39 insertions, 2 deletions
diff --git a/llvm/tools/llvm-objdump/CMakeLists.txt b/llvm/tools/llvm-objdump/CMakeLists.txt index 7e3197f..41d301c 100644 --- a/llvm/tools/llvm-objdump/CMakeLists.txt +++ b/llvm/tools/llvm-objdump/CMakeLists.txt @@ -28,6 +28,7 @@ add_llvm_tool(llvm-objdump llvm-objdump.cpp SourcePrinter.cpp COFFDump.cpp + DXContainerDump.cpp ELFDump.cpp MachODump.cpp OffloadDump.cpp diff --git a/llvm/tools/llvm-objdump/COFFDump.cpp b/llvm/tools/llvm-objdump/COFFDump.cpp index b22c9a4..de82561 100644 --- a/llvm/tools/llvm-objdump/COFFDump.cpp +++ b/llvm/tools/llvm-objdump/COFFDump.cpp @@ -187,7 +187,7 @@ void COFFDumper::printPEHeader(const PEHeader &Hdr) const { Size = Data->Size; } outs() << format("Entry %x ", I) << formatAddr(Addr) - << format(" %08x %s\n", uint32_t(Size), DirName[I]); + << format(" %08x %s\n", Size, DirName[I]); } } diff --git a/llvm/tools/llvm-objdump/DXContainerDump.cpp b/llvm/tools/llvm-objdump/DXContainerDump.cpp new file mode 100644 index 0000000..2fb0734 --- /dev/null +++ b/llvm/tools/llvm-objdump/DXContainerDump.cpp @@ -0,0 +1,30 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// This file implements the DXContainer-specific dumper for llvm-objdump. +/// +//===----------------------------------------------------------------------===// + +#include "llvm-objdump.h" +#include "llvm/Object/DXContainer.h" + +using namespace llvm; + +namespace { +class DXContainerDumper : public objdump::Dumper { +public: + DXContainerDumper(const object::DXContainerObjectFile &Obj) + : objdump::Dumper(Obj) {} +}; +} // namespace + +std::unique_ptr<objdump::Dumper> llvm::objdump::createDXContainerDumper( + const object::DXContainerObjectFile &Obj) { + return std::make_unique<DXContainerDumper>(Obj); +} diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 0316c4b..c19c698 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -50,6 +50,7 @@ #include "llvm/Object/BuildID.h" #include "llvm/Object/COFF.h" #include "llvm/Object/COFFImportFile.h" +#include "llvm/Object/DXContainer.h" #include "llvm/Object/ELFObjectFile.h" #include "llvm/Object/ELFTypes.h" #include "llvm/Object/FaultMapParser.h" @@ -386,6 +387,8 @@ static Expected<std::unique_ptr<Dumper>> createDumper(const ObjectFile &Obj) { return createWasmDumper(*O); if (const auto *O = dyn_cast<XCOFFObjectFile>(&Obj)) return createXCOFFDumper(*O); + if (const auto *O = dyn_cast<DXContainerObjectFile>(&Obj)) + return createDXContainerDumper(*O); return createStringError(errc::invalid_argument, "unsupported object file format"); @@ -2736,7 +2739,7 @@ void Dumper::printRelocations() { for (const SectionRef &Section : ToolSectionFilter(O, &Ndx)) { if (O.isELF() && (ELFSectionRef(Section).getFlags() & ELF::SHF_ALLOC)) continue; - if (Section.relocation_begin() == Section.relocation_end()) + if (Section.relocations().empty()) continue; Expected<section_iterator> SecOrErr = Section.getRelocatedSection(); if (!SecOrErr) diff --git a/llvm/tools/llvm-objdump/llvm-objdump.h b/llvm/tools/llvm-objdump/llvm-objdump.h index ce06429..3525be9 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.h +++ b/llvm/tools/llvm-objdump/llvm-objdump.h @@ -36,6 +36,7 @@ class ELFObjectFileBase; class MachOObjectFile; class WasmObjectFile; class XCOFFObjectFile; +class DXContainer; } // namespace object namespace objdump { @@ -105,6 +106,8 @@ std::unique_ptr<Dumper> createELFDumper(const object::ELFObjectFileBase &Obj); std::unique_ptr<Dumper> createMachODumper(const object::MachOObjectFile &Obj); std::unique_ptr<Dumper> createWasmDumper(const object::WasmObjectFile &Obj); std::unique_ptr<Dumper> createXCOFFDumper(const object::XCOFFObjectFile &Obj); +std::unique_ptr<Dumper> +createDXContainerDumper(const object::DXContainerObjectFile &Obj); // Various helper functions. |