From 1efceea97ed019d8ccbc30ce078928d730a08467 Mon Sep 17 00:00:00 2001 From: Eric Beckmann Date: Wed, 5 Jul 2017 19:04:33 +0000 Subject: [PATCH] Revert "Revert "Switch external cvtres.exe for llvm's own resource library."" This reverts commit 165e578e47f1cd38191120aad23a9020fb5476dd. Forgot to run tests on this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307190 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Object/WindowsResource.h | 3 --- lib/Object/WindowsResource.cpp | 3 ++- tools/llvm-cvtres/llvm-cvtres.cpp | 21 +++++++++++---------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/include/llvm/Object/WindowsResource.h b/include/llvm/Object/WindowsResource.h index 1ef00e2909f..844256478cf 100644 --- a/include/llvm/Object/WindowsResource.h +++ b/include/llvm/Object/WindowsResource.h @@ -43,13 +43,10 @@ #include namespace llvm { - namespace object { class WindowsResource; -enum class Machine { UNKNOWN, ARM, X64, X86 }; - class ResourceEntryRef { public: Error moveNext(bool &End); diff --git a/lib/Object/WindowsResource.cpp b/lib/Object/WindowsResource.cpp index 7d1da37a634..f675a8389e6 100644 --- a/lib/Object/WindowsResource.cpp +++ b/lib/Object/WindowsResource.cpp @@ -328,7 +328,7 @@ private: std::unique_ptr OutputBuffer; char *BufferStart; uint64_t CurrentOffset = 0; - Machine MachineType; + COFF::MachineTypes MachineType; const WindowsResourceParser::TreeNode &Resources; const ArrayRef> Data; uint64_t FileSize; @@ -350,6 +350,7 @@ WindowsResourceCOFFWriter::WindowsResourceCOFFWriter( : MachineType(MachineType), Resources(Parser.getTree()), Data(Parser.getData()), StringTable(Parser.getStringTable()) { performFileLayout(); + OutputBuffer = MemoryBuffer::getNewMemBuffer(FileSize); } diff --git a/tools/llvm-cvtres/llvm-cvtres.cpp b/tools/llvm-cvtres/llvm-cvtres.cpp index b331566d41c..36c15925e84 100644 --- a/tools/llvm-cvtres/llvm-cvtres.cpp +++ b/tools/llvm-cvtres/llvm-cvtres.cpp @@ -120,21 +120,21 @@ int main(int argc_, const char *argv_[]) { bool Verbose = InputArgs.hasArg(OPT_VERBOSE); - Machine MachineType; + COFF::MachineTypes MachineType; if (InputArgs.hasArg(OPT_MACHINE)) { std::string MachineString = InputArgs.getLastArgValue(OPT_MACHINE).upper(); - MachineType = StringSwitch(MachineString) - .Case("ARM", Machine::ARM) - .Case("X64", Machine::X64) - .Case("X86", Machine::X86) - .Default(Machine::UNKNOWN); - if (MachineType == Machine::UNKNOWN) + MachineType = StringSwitch(MachineString) + .Case("ARM", COFF::IMAGE_FILE_MACHINE_ARMNT) + .Case("X64", COFF::IMAGE_FILE_MACHINE_AMD64) + .Case("X86", COFF::IMAGE_FILE_MACHINE_I386) + .Default(COFF::IMAGE_FILE_MACHINE_UNKNOWN); + if (MachineType == COFF::IMAGE_FILE_MACHINE_UNKNOWN) reportError("Unsupported machine architecture"); } else { if (Verbose) outs() << "Machine architecture not specified; assumed X64.\n"; - MachineType = Machine::X64; + MachineType = COFF::IMAGE_FILE_MACHINE_AMD64; } std::vector InputFiles = InputArgs.getAllArgValues(OPT_INPUT); @@ -155,10 +155,10 @@ int main(int argc_, const char *argv_[]) { if (Verbose) { outs() << "Machine: "; switch (MachineType) { - case Machine::ARM: + case COFF::IMAGE_FILE_MACHINE_ARMNT: outs() << "ARM\n"; break; - case Machine::X86: + case COFF::IMAGE_FILE_MACHINE_I386: outs() << "X86\n"; break; default: @@ -207,6 +207,7 @@ int main(int argc_, const char *argv_[]) { std::copy(OutputBuffer->getBufferStart(), OutputBuffer->getBufferEnd(), FileBuffer->getBufferStart()); error(FileBuffer->commit()); + if (Verbose) { Expected> BinaryOrErr = createBinary(OutputFile); if (!BinaryOrErr) -- 2.50.0