diff options
| author | Shoaib Meenai <smeenai@fb.com> | 2019-07-04 00:17:02 +0000 | 
|---|---|---|
| committer | Shoaib Meenai <smeenai@fb.com> | 2019-07-04 00:17:02 +0000 | 
| commit | 995798d2d58499f598ba125810e8e18799d900b1 (patch) | |
| tree | 9476b4dc7f072188179493d4426906bb5eb32ab0 /llvm/lib | |
| parent | f5a885fddd63b7a07ddaf1c056bbef8c34a5f6c8 (diff) | |
| download | bcm5719-llvm-995798d2d58499f598ba125810e8e18799d900b1.tar.gz bcm5719-llvm-995798d2d58499f598ba125810e8e18799d900b1.zip  | |
[MachO] Add valid architecture function
Added array of valid architectures and function returning array.
Modified llvm-lipo to include list of valid architectures in error message for invalid arch.
Patch by Anusha Basana <anusha.basana@gmail.com>
Differential Revision: https://reviews.llvm.org/D63735
llvm-svn: 365099
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Object/MachOObjectFile.cpp | 29 | 
1 files changed, 10 insertions, 19 deletions
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp index 1b7392e1029..5aec844003c 100644 --- a/llvm/lib/Object/MachOObjectFile.cpp +++ b/llvm/lib/Object/MachOObjectFile.cpp @@ -57,6 +57,12 @@ namespace {  } // end anonymous namespace +static const std::array<StringRef, 17> validArchs = { +    "i386",   "x86_64", "x86_64h",  "armv4t",  "arm",    "armv5e", +    "armv6",  "armv6m", "armv7",    "armv7em", "armv7k", "armv7m", +    "armv7s", "arm64",  "arm64_32", "ppc",     "ppc64", +}; +  static Error malformedError(const Twine &Msg) {    return make_error<GenericBinaryError>("truncated or malformed object (" +                                              Msg + ")", @@ -2718,27 +2724,12 @@ Triple MachOObjectFile::getHostArch() {  }  bool MachOObjectFile::isValidArch(StringRef ArchFlag) { -  return StringSwitch<bool>(ArchFlag) -      .Case("i386", true) -      .Case("x86_64", true) -      .Case("x86_64h", true) -      .Case("armv4t", true) -      .Case("arm", true) -      .Case("armv5e", true) -      .Case("armv6", true) -      .Case("armv6m", true) -      .Case("armv7", true) -      .Case("armv7em", true) -      .Case("armv7k", true) -      .Case("armv7m", true) -      .Case("armv7s", true) -      .Case("arm64", true) -      .Case("arm64_32", true) -      .Case("ppc", true) -      .Case("ppc64", true) -      .Default(false); +  return std::find(validArchs.cbegin(), validArchs.cend(), ArchFlag) != +         validArchs.cend();  } +ArrayRef<StringRef> MachOObjectFile::getValidArchs() { return validArchs; } +  Triple::ArchType MachOObjectFile::getArch() const {    return getArch(getCPUType(*this));  }  | 

