diff --git a/lld/MachO/Config.h b/lld/MachO/Config.h --- a/lld/MachO/Config.h +++ b/lld/MachO/Config.h @@ -12,6 +12,7 @@ #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/StringRef.h" #include "llvm/BinaryFormat/MachO.h" +#include "llvm/TextAPI/MachO/Architecture.h" #include @@ -26,6 +27,7 @@ bool hasReexports = false; llvm::StringRef installName; llvm::StringRef outputFile; + llvm::MachO::Architecture arch; llvm::MachO::HeaderFileType outputType; std::vector searchPaths; llvm::DenseMap priorities; diff --git a/lld/MachO/Driver.cpp b/lld/MachO/Driver.cpp --- a/lld/MachO/Driver.cpp +++ b/lld/MachO/Driver.cpp @@ -27,6 +27,7 @@ #include "llvm/ADT/StringRef.h" #include "llvm/BinaryFormat/MachO.h" #include "llvm/BinaryFormat/Magic.h" +#include "llvm/Config/config.h" #include "llvm/Object/Archive.h" #include "llvm/Option/ArgList.h" #include "llvm/Option/Option.h" @@ -90,10 +91,16 @@ } static TargetInfo *createTargetInfo(opt::InputArgList &args) { - StringRef s = args.getLastArgValue(OPT_arch, "x86_64"); - if (s != "x86_64") - error("missing or unsupported -arch " + s); - return createX86_64TargetInfo(); + StringRef arch = llvm::Triple(LLVM_DEFAULT_TARGET_TRIPLE).getArchName(); + config->arch = + llvm::MachO::getArchitectureFromName(args.getLastArgValue(OPT_arch, arch)); + switch (config->arch) { + case llvm::MachO::AK_x86_64: + case llvm::MachO::AK_x86_64h: + return createX86_64TargetInfo(); + default: + fatal("missing or unsupported -arch " + args.getLastArgValue(OPT_arch)); + } } static std::vector getSearchPaths(opt::InputArgList &args) {