diff options
author | Martin Storsjo <martin@martin.st> | 2017-11-10 22:27:41 +0000 |
---|---|---|
committer | Martin Storsjo <martin@martin.st> | 2017-11-10 22:27:41 +0000 |
commit | ba664c1d047a7ec1ac86adaf178bf829cdfd5961 (patch) | |
tree | a3ef9fb34f0738f1c5de4f652eabe99bcd8125ca /llvm/lib | |
parent | 6b4a625438983ab8dc84b087a90c9d9bb94ffdde (diff) | |
download | bcm5719-llvm-ba664c1d047a7ec1ac86adaf178bf829cdfd5961.tar.gz bcm5719-llvm-ba664c1d047a7ec1ac86adaf178bf829cdfd5961.zip |
[llvm-cvtres] Add support for ARM64
Also change some default cases into llvm_unreachable in
WindowsResourceCOFFWriter, to make it easier to find if they
are triggerd from within e.g. lld, which supported ARM64 earlier
than llvm-cvtres did.
Differential Revision: https://reviews.llvm.org/D39892
llvm-svn: 317942
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Object/WindowsResource.cpp | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/llvm/lib/Object/WindowsResource.cpp b/llvm/lib/Object/WindowsResource.cpp index 693494a5084..b844955caa8 100644 --- a/llvm/lib/Object/WindowsResource.cpp +++ b/llvm/lib/Object/WindowsResource.cpp @@ -441,19 +441,7 @@ std::unique_ptr<MemoryBuffer> WindowsResourceCOFFWriter::write() { void WindowsResourceCOFFWriter::writeCOFFHeader() { // Write the COFF header. auto *Header = reinterpret_cast<coff_file_header *>(BufferStart); - switch (MachineType) { - case COFF::IMAGE_FILE_MACHINE_ARMNT: - Header->Machine = COFF::IMAGE_FILE_MACHINE_ARMNT; - break; - case COFF::IMAGE_FILE_MACHINE_AMD64: - Header->Machine = COFF::IMAGE_FILE_MACHINE_AMD64; - break; - case COFF::IMAGE_FILE_MACHINE_I386: - Header->Machine = COFF::IMAGE_FILE_MACHINE_I386; - break; - default: - Header->Machine = COFF::IMAGE_FILE_MACHINE_UNKNOWN; - } + Header->Machine = MachineType; Header->NumberOfSections = 2; Header->TimeDateStamp = getTime(); Header->PointerToSymbolTable = SymbolTableOffset; @@ -714,8 +702,11 @@ void WindowsResourceCOFFWriter::writeFirstSectionRelocations() { case COFF::IMAGE_FILE_MACHINE_I386: Reloc->Type = COFF::IMAGE_REL_I386_DIR32NB; break; + case COFF::IMAGE_FILE_MACHINE_ARM64: + Reloc->Type = COFF::IMAGE_REL_ARM64_ADDR32NB; + break; default: - Reloc->Type = 0; + llvm_unreachable("unknown machine type"); } CurrentOffset += sizeof(coff_relocation); } |