brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · be4d1f1 Raw
120 lines · cpp
1//===-- AArch64BuildAttributes.cpp - AArch64 Build Attributes -------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "llvm/Support/AArch64BuildAttributes.h"10#include "llvm/ADT/StringSwitch.h"11 12using namespace llvm;13using namespace llvm::AArch64BuildAttributes;14 15StringRef AArch64BuildAttributes::getVendorName(unsigned Vendor) {16  switch (Vendor) {17  case AEABI_FEATURE_AND_BITS:18    return "aeabi_feature_and_bits";19  case AEABI_PAUTHABI:20    return "aeabi_pauthabi";21  case VENDOR_UNKNOWN:22    return "";23  default:24    assert(0 && "Vendor name error");25    return "";26  }27}28VendorID AArch64BuildAttributes::getVendorID(StringRef Vendor) {29  return StringSwitch<VendorID>(Vendor)30      .Case("aeabi_feature_and_bits", AEABI_FEATURE_AND_BITS)31      .Case("aeabi_pauthabi", AEABI_PAUTHABI)32      .Default(VENDOR_UNKNOWN);33}34 35StringRef AArch64BuildAttributes::getOptionalStr(unsigned Optional) {36  switch (Optional) {37  case REQUIRED:38    return "required";39  case OPTIONAL:40    return "optional";41  case OPTIONAL_NOT_FOUND:42  default:43    return "";44  }45}46SubsectionOptional AArch64BuildAttributes::getOptionalID(StringRef Optional) {47  return StringSwitch<SubsectionOptional>(Optional)48      .Case("required", REQUIRED)49      .Case("optional", OPTIONAL)50      .Default(OPTIONAL_NOT_FOUND);51}52StringRef AArch64BuildAttributes::getSubsectionOptionalUnknownError() {53  return "unknown AArch64 build attributes optionality, expected "54         "required|optional";55}56 57StringRef AArch64BuildAttributes::getTypeStr(unsigned Type) {58  switch (Type) {59  case ULEB128:60    return "uleb128";61  case NTBS:62    return "ntbs";63  case TYPE_NOT_FOUND:64  default:65    return "";66  }67}68SubsectionType AArch64BuildAttributes::getTypeID(StringRef Type) {69  return StringSwitch<SubsectionType>(Type)70      .Cases({"uleb128", "ULEB128"}, ULEB128)71      .Cases({"ntbs", "NTBS"}, NTBS)72      .Default(TYPE_NOT_FOUND);73}74StringRef AArch64BuildAttributes::getSubsectionTypeUnknownError() {75  return "unknown AArch64 build attributes type, expected uleb128|ntbs";76}77 78StringRef AArch64BuildAttributes::getPauthABITagsStr(unsigned PauthABITag) {79  switch (PauthABITag) {80  case TAG_PAUTH_PLATFORM:81    return "Tag_PAuth_Platform";82  case TAG_PAUTH_SCHEMA:83    return "Tag_PAuth_Schema";84  case PAUTHABI_TAG_NOT_FOUND:85  default:86    return "";87  }88}89 90PauthABITags AArch64BuildAttributes::getPauthABITagsID(StringRef PauthABITag) {91  return StringSwitch<PauthABITags>(PauthABITag)92      .Case("Tag_PAuth_Platform", TAG_PAUTH_PLATFORM)93      .Case("Tag_PAuth_Schema", TAG_PAUTH_SCHEMA)94      .Default(PAUTHABI_TAG_NOT_FOUND);95}96 97StringRef98AArch64BuildAttributes::getFeatureAndBitsTagsStr(unsigned FeatureAndBitsTag) {99  switch (FeatureAndBitsTag) {100  case TAG_FEATURE_BTI:101    return "Tag_Feature_BTI";102  case TAG_FEATURE_PAC:103    return "Tag_Feature_PAC";104  case TAG_FEATURE_GCS:105    return "Tag_Feature_GCS";106  case FEATURE_AND_BITS_TAG_NOT_FOUND:107  default:108    return "";109  }110}111 112FeatureAndBitsTags113AArch64BuildAttributes::getFeatureAndBitsTagsID(StringRef FeatureAndBitsTag) {114  return StringSwitch<FeatureAndBitsTags>(FeatureAndBitsTag)115      .Case("Tag_Feature_BTI", TAG_FEATURE_BTI)116      .Case("Tag_Feature_PAC", TAG_FEATURE_PAC)117      .Case("Tag_Feature_GCS", TAG_FEATURE_GCS)118      .Default(FEATURE_AND_BITS_TAG_NOT_FOUND);119}120