summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorMartin Storsjo <martin@martin.st>2017-11-10 22:27:41 +0000
committerMartin Storsjo <martin@martin.st>2017-11-10 22:27:41 +0000
commitba664c1d047a7ec1ac86adaf178bf829cdfd5961 (patch)
treea3ef9fb34f0738f1c5de4f652eabe99bcd8125ca /llvm/lib
parent6b4a625438983ab8dc84b087a90c9d9bb94ffdde (diff)
downloadbcm5719-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.cpp19
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);
}
OpenPOWER on IntegriCloud