diff options
Diffstat (limited to 'gnu/llvm/tools/llvm-readobj/WindowsResourceDumper.cpp')
| -rw-r--r-- | gnu/llvm/tools/llvm-readobj/WindowsResourceDumper.cpp | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/gnu/llvm/tools/llvm-readobj/WindowsResourceDumper.cpp b/gnu/llvm/tools/llvm-readobj/WindowsResourceDumper.cpp deleted file mode 100644 index 1f568a96367..00000000000 --- a/gnu/llvm/tools/llvm-readobj/WindowsResourceDumper.cpp +++ /dev/null @@ -1,82 +0,0 @@ -//===-- WindowsResourceDumper.cpp - Windows Resource printer --------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file implements the Windows resource (.res) dumper for llvm-readobj. -// -//===----------------------------------------------------------------------===// - -#include "WindowsResourceDumper.h" -#include "Error.h" -#include "llvm/Object/WindowsResource.h" -#include "llvm/Support/ConvertUTF.h" -#include "llvm/Support/ScopedPrinter.h" - -namespace llvm { -namespace object { -namespace WindowsRes { - -std::string stripUTF16(const ArrayRef<UTF16> &UTF16Str) { - std::string Result; - Result.reserve(UTF16Str.size()); - - for (UTF16 Ch : UTF16Str) { - // UTF16Str will have swapped byte order in case of big-endian machines. - // Swap it back in such a case. - uint16_t ChValue = support::endian::byte_swap(Ch, support::little); - if (ChValue <= 0xFF) - Result += ChValue; - else - Result += '?'; - } - return Result; -} - -Error Dumper::printData() { - auto EntryPtrOrErr = WinRes->getHeadEntry(); - if (!EntryPtrOrErr) - return EntryPtrOrErr.takeError(); - auto EntryPtr = *EntryPtrOrErr; - - bool IsEnd = false; - while (!IsEnd) { - printEntry(EntryPtr); - - if (auto Err = EntryPtr.moveNext(IsEnd)) - return Err; - } - return Error::success(); -} - -void Dumper::printEntry(const ResourceEntryRef &Ref) { - if (Ref.checkTypeString()) { - auto NarrowStr = stripUTF16(Ref.getTypeString()); - SW.printString("Resource type (string)", NarrowStr); - } else - SW.printNumber("Resource type (int)", Ref.getTypeID()); - - if (Ref.checkNameString()) { - auto NarrowStr = stripUTF16(Ref.getNameString()); - SW.printString("Resource name (string)", NarrowStr); - } else - SW.printNumber("Resource name (int)", Ref.getNameID()); - - SW.printNumber("Data version", Ref.getDataVersion()); - SW.printHex("Memory flags", Ref.getMemoryFlags()); - SW.printNumber("Language ID", Ref.getLanguage()); - SW.printNumber("Version (major)", Ref.getMajorVersion()); - SW.printNumber("Version (minor)", Ref.getMinorVersion()); - SW.printNumber("Characteristics", Ref.getCharacteristics()); - SW.printNumber("Data size", (uint64_t)Ref.getData().size()); - SW.printBinary("Data:", Ref.getData()); - SW.startLine() << "\n"; -} - -} // namespace WindowsRes -} // namespace object -} // namespace llvm |
