[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