[ELF] Properly reject unsupported e_machine
Fix an incorrect llvm_unreachable.
GitOrigin-RevId: f7c2c32c019275e88fd14e401aaa68b760f32a28
diff --git a/ELF/Target.cpp b/ELF/Target.cpp
index 671d22c..286db1e 100644
--- a/ELF/Target.cpp
+++ b/ELF/Target.cpp
@@ -89,8 +89,9 @@
return getSPARCV9TargetInfo();
case EM_X86_64:
return getX86_64TargetInfo();
+ default:
+ fatal("unsupported e_machine value: " + Twine(config->emachine));
}
- llvm_unreachable("unknown target machine");
}
ErrorPlace elf::getErrorPlace(const uint8_t *loc) {
diff --git a/test/ELF/unsupported-emachine.test b/test/ELF/unsupported-emachine.test
new file mode 100644
index 0000000..43d907e
--- /dev/null
+++ b/test/ELF/unsupported-emachine.test
@@ -0,0 +1,11 @@
+# RUN: yaml2obj %s -o %t.o
+# RUN: not ld.lld %t.o -o /dev/null 2>&1 | FileCheck %s
+
+# CHECK: error: unsupported e_machine value: 9
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_S370