case llvm::COFF::IMAGE_FILE_MACHINE_AMD64:
result = Reference::KindArch::x86_64;
return std::error_code();
+ case llvm::COFF::IMAGE_FILE_MACHINE_ARMNT:
+ result = Reference::KindArch::ARM;
+ return std::error_code();
case llvm::COFF::IMAGE_FILE_MACHINE_UNKNOWN:
result = Reference::KindArch::all;
return std::error_code();
case llvm::COFF::IMAGE_FILE_MACHINE_AMD64:
relType = llvm::COFF::IMAGE_REL_AMD64_ADDR64;
break;
+ case llvm::COFF::IMAGE_FILE_MACHINE_ARMNT:
+ relType = llvm::COFF::IMAGE_REL_ARM_ADDR32;
+ break;
}
for (const auto *layout : _atomLayouts) {
--- /dev/null
+
+ .syntax unified
+ .thumb
+ .text
+
+ .def main
+ .scl 2
+ .type 32
+ .endef
+main:
+ bx lr
+
--- /dev/null
+---
+header:
+ Machine: IMAGE_FILE_MACHINE_ARMNT
+ Characteristics: [ ]
+sections:
+ - Name: .text
+ Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_PURGEABLE, IMAGE_SCN_MEM_16BIT, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
+ Alignment: 4
+ SectionData: '7047'
+symbols:
+ - Name: .text
+ Value: 0
+ SectionNumber: 1
+ SimpleType: IMAGE_SYM_TYPE_NULL
+ ComplexType: IMAGE_SYM_DTYPE_NULL
+ StorageClass: IMAGE_SYM_CLASS_STATIC
+ SectionDefinition:
+ Length: 2
+ NumberOfRelocations: 0
+ NumberOfLinenumbers: 0
+ CheckSum: 0
+ Number: 1
+ - Name: main
+ Value: 0
+ SectionNumber: 1
+ SimpleType: IMAGE_SYM_TYPE_NULL
+ ComplexType: IMAGE_SYM_DTYPE_FUNCTION
+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
+...
--- /dev/null
+# RUN: yaml2obj -format coff -o %t.obj %p/Inputs/armnt-obj.yaml
+# RUN: lld -flavor link /out:%t.dll /subsystem:console /entry:main %t.obj
+# RUN: llvm-readobj -sections %t.dll | FileCheck %s
+
+CHECK: Format: COFF-ARM
+