109467b48Spatrick //===- WindowsMachineFlag.cpp ---------------------------------------------===// 209467b48Spatrick // 309467b48Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 409467b48Spatrick // See https://llvm.org/LICENSE.txt for license information. 509467b48Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 609467b48Spatrick // 709467b48Spatrick //===----------------------------------------------------------------------===// 809467b48Spatrick // 909467b48Spatrick // Functions for implementing the /machine: flag. 1009467b48Spatrick // 1109467b48Spatrick //===----------------------------------------------------------------------===// 1209467b48Spatrick 1309467b48Spatrick #include "llvm/Object/WindowsMachineFlag.h" 1409467b48Spatrick 1509467b48Spatrick #include "llvm/ADT/StringRef.h" 1609467b48Spatrick #include "llvm/ADT/StringSwitch.h" 1709467b48Spatrick #include "llvm/BinaryFormat/COFF.h" 18*d415bd75Srobert #include "llvm/Support/ErrorHandling.h" 1909467b48Spatrick 2009467b48Spatrick using namespace llvm; 2109467b48Spatrick 2209467b48Spatrick // Returns /machine's value. getMachineType(StringRef S)2309467b48SpatrickCOFF::MachineTypes llvm::getMachineType(StringRef S) { 2409467b48Spatrick return StringSwitch<COFF::MachineTypes>(S.lower()) 2509467b48Spatrick .Cases("x64", "amd64", COFF::IMAGE_FILE_MACHINE_AMD64) 2609467b48Spatrick .Cases("x86", "i386", COFF::IMAGE_FILE_MACHINE_I386) 2709467b48Spatrick .Case("arm", COFF::IMAGE_FILE_MACHINE_ARMNT) 2809467b48Spatrick .Case("arm64", COFF::IMAGE_FILE_MACHINE_ARM64) 29*d415bd75Srobert .Case("arm64ec", COFF::IMAGE_FILE_MACHINE_ARM64EC) 3009467b48Spatrick .Default(COFF::IMAGE_FILE_MACHINE_UNKNOWN); 3109467b48Spatrick } 3209467b48Spatrick machineToStr(COFF::MachineTypes MT)3309467b48SpatrickStringRef llvm::machineToStr(COFF::MachineTypes MT) { 3409467b48Spatrick switch (MT) { 3509467b48Spatrick case COFF::IMAGE_FILE_MACHINE_ARMNT: 3609467b48Spatrick return "arm"; 3709467b48Spatrick case COFF::IMAGE_FILE_MACHINE_ARM64: 3809467b48Spatrick return "arm64"; 39*d415bd75Srobert case COFF::IMAGE_FILE_MACHINE_ARM64EC: 40*d415bd75Srobert return "arm64ec"; 4109467b48Spatrick case COFF::IMAGE_FILE_MACHINE_AMD64: 4209467b48Spatrick return "x64"; 4309467b48Spatrick case COFF::IMAGE_FILE_MACHINE_I386: 4409467b48Spatrick return "x86"; 4509467b48Spatrick default: 4609467b48Spatrick llvm_unreachable("unknown machine type"); 4709467b48Spatrick } 4809467b48Spatrick } 49