mirror of
https://github.com/intel/llvm.git
synced 2026-02-02 02:00:03 +08:00
[Build Attributes] Standardize names according to convention. (#124556)
The de-facto convention for build attributes file and class names seems to be 'Attrs' in the class name and 'Attributes' in the file name. Accordingly, change file ARMBuildAttrs.cpp -> ARMBuildAttributes.cpp And class AArch64BuildAttrs --> AArch64BuildAttributes
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
|
||||
namespace llvm {
|
||||
|
||||
namespace AArch64BuildAttributes {
|
||||
namespace AArch64BuildAttrs {
|
||||
|
||||
/// AArch64 build attributes vendors IDs (a.k.a subsection name)
|
||||
enum VendorID : unsigned {
|
||||
@@ -69,7 +69,7 @@ enum FeatureAndBitsFlag : unsigned {
|
||||
Feature_PAC_Flag = 1 << 1,
|
||||
Feature_GCS_Flag = 1 << 2
|
||||
};
|
||||
} // namespace AArch64BuildAttributes
|
||||
} // namespace AArch64BuildAttrs
|
||||
} // namespace llvm
|
||||
|
||||
#endif // LLVM_SUPPORT_AARCH64BUILDATTRIBUTES_H
|
||||
@@ -10,9 +10,9 @@
|
||||
#include "llvm/ADT/StringSwitch.h"
|
||||
|
||||
using namespace llvm;
|
||||
using namespace llvm::AArch64BuildAttributes;
|
||||
using namespace llvm::AArch64BuildAttrs;
|
||||
|
||||
StringRef AArch64BuildAttributes::getVendorName(unsigned Vendor) {
|
||||
StringRef AArch64BuildAttrs::getVendorName(unsigned Vendor) {
|
||||
switch (Vendor) {
|
||||
case AEABI_FEATURE_AND_BITS:
|
||||
return "aeabi_feature_and_bits";
|
||||
@@ -25,14 +25,14 @@ StringRef AArch64BuildAttributes::getVendorName(unsigned Vendor) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
VendorID AArch64BuildAttributes::getVendorID(StringRef Vendor) {
|
||||
VendorID AArch64BuildAttrs::getVendorID(StringRef Vendor) {
|
||||
return StringSwitch<VendorID>(Vendor)
|
||||
.Case("aeabi_feature_and_bits", AEABI_FEATURE_AND_BITS)
|
||||
.Case("aeabi_pauthabi", AEABI_PAUTHABI)
|
||||
.Default(VENDOR_UNKNOWN);
|
||||
}
|
||||
|
||||
StringRef AArch64BuildAttributes::getOptionalStr(unsigned Optional) {
|
||||
StringRef AArch64BuildAttrs::getOptionalStr(unsigned Optional) {
|
||||
switch (Optional) {
|
||||
case REQUIRED:
|
||||
return "required";
|
||||
@@ -43,18 +43,18 @@ StringRef AArch64BuildAttributes::getOptionalStr(unsigned Optional) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
SubsectionOptional AArch64BuildAttributes::getOptionalID(StringRef Optional) {
|
||||
SubsectionOptional AArch64BuildAttrs::getOptionalID(StringRef Optional) {
|
||||
return StringSwitch<SubsectionOptional>(Optional)
|
||||
.Case("required", REQUIRED)
|
||||
.Case("optional", OPTIONAL)
|
||||
.Default(OPTIONAL_NOT_FOUND);
|
||||
}
|
||||
StringRef AArch64BuildAttributes::getSubsectionOptionalUnknownError() {
|
||||
StringRef AArch64BuildAttrs::getSubsectionOptionalUnknownError() {
|
||||
return "unknown AArch64 build attributes optionality, expected "
|
||||
"required|optional";
|
||||
}
|
||||
|
||||
StringRef AArch64BuildAttributes::getTypeStr(unsigned Type) {
|
||||
StringRef AArch64BuildAttrs::getTypeStr(unsigned Type) {
|
||||
switch (Type) {
|
||||
case ULEB128:
|
||||
return "uleb128";
|
||||
@@ -65,17 +65,17 @@ StringRef AArch64BuildAttributes::getTypeStr(unsigned Type) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
SubsectionType AArch64BuildAttributes::getTypeID(StringRef Type) {
|
||||
SubsectionType AArch64BuildAttrs::getTypeID(StringRef Type) {
|
||||
return StringSwitch<SubsectionType>(Type)
|
||||
.Cases("uleb128", "ULEB128", ULEB128)
|
||||
.Cases("ntbs", "NTBS", NTBS)
|
||||
.Default(TYPE_NOT_FOUND);
|
||||
}
|
||||
StringRef AArch64BuildAttributes::getSubsectionTypeUnknownError() {
|
||||
StringRef AArch64BuildAttrs::getSubsectionTypeUnknownError() {
|
||||
return "unknown AArch64 build attributes type, expected uleb128|ntbs";
|
||||
}
|
||||
|
||||
StringRef AArch64BuildAttributes::getPauthABITagsStr(unsigned PauthABITag) {
|
||||
StringRef AArch64BuildAttrs::getPauthABITagsStr(unsigned PauthABITag) {
|
||||
switch (PauthABITag) {
|
||||
case TAG_PAUTH_PLATFORM:
|
||||
return "Tag_PAuth_Platform";
|
||||
@@ -87,7 +87,7 @@ StringRef AArch64BuildAttributes::getPauthABITagsStr(unsigned PauthABITag) {
|
||||
}
|
||||
}
|
||||
|
||||
PauthABITags AArch64BuildAttributes::getPauthABITagsID(StringRef PauthABITag) {
|
||||
PauthABITags AArch64BuildAttrs::getPauthABITagsID(StringRef PauthABITag) {
|
||||
return StringSwitch<PauthABITags>(PauthABITag)
|
||||
.Case("Tag_PAuth_Platform", TAG_PAUTH_PLATFORM)
|
||||
.Case("Tag_PAuth_Schema", TAG_PAUTH_SCHEMA)
|
||||
@@ -95,7 +95,7 @@ PauthABITags AArch64BuildAttributes::getPauthABITagsID(StringRef PauthABITag) {
|
||||
}
|
||||
|
||||
StringRef
|
||||
AArch64BuildAttributes::getFeatureAndBitsTagsStr(unsigned FeatureAndBitsTag) {
|
||||
AArch64BuildAttrs::getFeatureAndBitsTagsStr(unsigned FeatureAndBitsTag) {
|
||||
switch (FeatureAndBitsTag) {
|
||||
case TAG_FEATURE_BTI:
|
||||
return "Tag_Feature_BTI";
|
||||
@@ -110,7 +110,7 @@ AArch64BuildAttributes::getFeatureAndBitsTagsStr(unsigned FeatureAndBitsTag) {
|
||||
}
|
||||
|
||||
FeatureAndBitsTags
|
||||
AArch64BuildAttributes::getFeatureAndBitsTagsID(StringRef FeatureAndBitsTag) {
|
||||
AArch64BuildAttrs::getFeatureAndBitsTagsID(StringRef FeatureAndBitsTag) {
|
||||
return StringSwitch<FeatureAndBitsTags>(FeatureAndBitsTag)
|
||||
.Case("Tag_Feature_BTI", TAG_FEATURE_BTI)
|
||||
.Case("Tag_Feature_PAC", TAG_FEATURE_PAC)
|
||||
|
||||
@@ -143,7 +143,7 @@ add_llvm_component_library(LLVMSupport
|
||||
APFloat.cpp
|
||||
APInt.cpp
|
||||
APSInt.cpp
|
||||
ARMBuildAttrs.cpp
|
||||
ARMBuildAttributes.cpp
|
||||
AArch64BuildAttributes.cpp
|
||||
ARMAttributeParser.cpp
|
||||
ARMWinEH.cpp
|
||||
|
||||
@@ -359,7 +359,7 @@ void AArch64AsmPrinter::emitStartOfAsmFile(Module &M) {
|
||||
if (const auto *BTE = mdconst::extract_or_null<ConstantInt>(
|
||||
M.getModuleFlag("branch-target-enforcement"))) {
|
||||
if (!BTE->isZero()) {
|
||||
BAFlags |= AArch64BuildAttributes::FeatureAndBitsFlag::Feature_BTI_Flag;
|
||||
BAFlags |= AArch64BuildAttrs::FeatureAndBitsFlag::Feature_BTI_Flag;
|
||||
GNUFlags |= ELF::GNU_PROPERTY_AARCH64_FEATURE_1_BTI;
|
||||
}
|
||||
}
|
||||
@@ -367,7 +367,7 @@ void AArch64AsmPrinter::emitStartOfAsmFile(Module &M) {
|
||||
if (const auto *GCS = mdconst::extract_or_null<ConstantInt>(
|
||||
M.getModuleFlag("guarded-control-stack"))) {
|
||||
if (!GCS->isZero()) {
|
||||
BAFlags |= AArch64BuildAttributes::FeatureAndBitsFlag::Feature_GCS_Flag;
|
||||
BAFlags |= AArch64BuildAttrs::FeatureAndBitsFlag::Feature_GCS_Flag;
|
||||
GNUFlags |= ELF::GNU_PROPERTY_AARCH64_FEATURE_1_GCS;
|
||||
}
|
||||
}
|
||||
@@ -375,7 +375,7 @@ void AArch64AsmPrinter::emitStartOfAsmFile(Module &M) {
|
||||
if (const auto *Sign = mdconst::extract_or_null<ConstantInt>(
|
||||
M.getModuleFlag("sign-return-address"))) {
|
||||
if (!Sign->isZero()) {
|
||||
BAFlags |= AArch64BuildAttributes::FeatureAndBitsFlag::Feature_PAC_Flag;
|
||||
BAFlags |= AArch64BuildAttrs::FeatureAndBitsFlag::Feature_PAC_Flag;
|
||||
GNUFlags |= ELF::GNU_PROPERTY_AARCH64_FEATURE_1_PAC;
|
||||
}
|
||||
}
|
||||
@@ -478,45 +478,35 @@ void AArch64AsmPrinter::emitAttributes(unsigned Flags,
|
||||
|
||||
if (PAuthABIPlatform || PAuthABIVersion) {
|
||||
TS->emitAtributesSubsection(
|
||||
AArch64BuildAttributes::getVendorName(
|
||||
AArch64BuildAttributes::AEABI_PAUTHABI),
|
||||
AArch64BuildAttributes::SubsectionOptional::REQUIRED,
|
||||
AArch64BuildAttributes::SubsectionType::ULEB128);
|
||||
TS->emitAttribute(AArch64BuildAttributes::getVendorName(
|
||||
AArch64BuildAttributes::AEABI_PAUTHABI),
|
||||
AArch64BuildAttributes::TAG_PAUTH_PLATFORM,
|
||||
PAuthABIPlatform, "", false);
|
||||
TS->emitAttribute(AArch64BuildAttributes::getVendorName(
|
||||
AArch64BuildAttributes::AEABI_PAUTHABI),
|
||||
AArch64BuildAttributes::TAG_PAUTH_SCHEMA, PAuthABIVersion,
|
||||
"", false);
|
||||
AArch64BuildAttrs::getVendorName(AArch64BuildAttrs::AEABI_PAUTHABI),
|
||||
AArch64BuildAttrs::SubsectionOptional::REQUIRED,
|
||||
AArch64BuildAttrs::SubsectionType::ULEB128);
|
||||
TS->emitAttribute(
|
||||
AArch64BuildAttrs::getVendorName(AArch64BuildAttrs::AEABI_PAUTHABI),
|
||||
AArch64BuildAttrs::TAG_PAUTH_PLATFORM, PAuthABIPlatform, "", false);
|
||||
TS->emitAttribute(
|
||||
AArch64BuildAttrs::getVendorName(AArch64BuildAttrs::AEABI_PAUTHABI),
|
||||
AArch64BuildAttrs::TAG_PAUTH_SCHEMA, PAuthABIVersion, "", false);
|
||||
}
|
||||
|
||||
unsigned BTIValue =
|
||||
(Flags & AArch64BuildAttributes::Feature_BTI_Flag) ? 1 : 0;
|
||||
unsigned PACValue =
|
||||
(Flags & AArch64BuildAttributes::Feature_PAC_Flag) ? 1 : 0;
|
||||
unsigned GCSValue =
|
||||
(Flags & AArch64BuildAttributes::Feature_GCS_Flag) ? 1 : 0;
|
||||
unsigned BTIValue = (Flags & AArch64BuildAttrs::Feature_BTI_Flag) ? 1 : 0;
|
||||
unsigned PACValue = (Flags & AArch64BuildAttrs::Feature_PAC_Flag) ? 1 : 0;
|
||||
unsigned GCSValue = (Flags & AArch64BuildAttrs::Feature_GCS_Flag) ? 1 : 0;
|
||||
|
||||
if (BTIValue || PACValue || GCSValue) {
|
||||
TS->emitAtributesSubsection(
|
||||
AArch64BuildAttributes::getVendorName(
|
||||
AArch64BuildAttributes::AEABI_FEATURE_AND_BITS),
|
||||
AArch64BuildAttributes::SubsectionOptional::OPTIONAL,
|
||||
AArch64BuildAttributes::SubsectionType::ULEB128);
|
||||
TS->emitAttribute(AArch64BuildAttributes::getVendorName(
|
||||
AArch64BuildAttributes::AEABI_FEATURE_AND_BITS),
|
||||
AArch64BuildAttributes::TAG_FEATURE_BTI, BTIValue, "",
|
||||
false);
|
||||
TS->emitAttribute(AArch64BuildAttributes::getVendorName(
|
||||
AArch64BuildAttributes::AEABI_FEATURE_AND_BITS),
|
||||
AArch64BuildAttributes::TAG_FEATURE_PAC, PACValue, "",
|
||||
false);
|
||||
TS->emitAttribute(AArch64BuildAttributes::getVendorName(
|
||||
AArch64BuildAttributes::AEABI_FEATURE_AND_BITS),
|
||||
AArch64BuildAttributes::TAG_FEATURE_GCS, GCSValue, "",
|
||||
false);
|
||||
TS->emitAtributesSubsection(AArch64BuildAttrs::getVendorName(
|
||||
AArch64BuildAttrs::AEABI_FEATURE_AND_BITS),
|
||||
AArch64BuildAttrs::SubsectionOptional::OPTIONAL,
|
||||
AArch64BuildAttrs::SubsectionType::ULEB128);
|
||||
TS->emitAttribute(AArch64BuildAttrs::getVendorName(
|
||||
AArch64BuildAttrs::AEABI_FEATURE_AND_BITS),
|
||||
AArch64BuildAttrs::TAG_FEATURE_BTI, BTIValue, "", false);
|
||||
TS->emitAttribute(AArch64BuildAttrs::getVendorName(
|
||||
AArch64BuildAttrs::AEABI_FEATURE_AND_BITS),
|
||||
AArch64BuildAttrs::TAG_FEATURE_PAC, PACValue, "", false);
|
||||
TS->emitAttribute(AArch64BuildAttrs::getVendorName(
|
||||
AArch64BuildAttrs::AEABI_FEATURE_AND_BITS),
|
||||
AArch64BuildAttrs::TAG_FEATURE_GCS, GCSValue, "", false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7843,10 +7843,10 @@ bool AArch64AsmParser::parseDirectiveAeabiSubSectionHeader(SMLoc L) {
|
||||
|
||||
// Consume the name (subsection name)
|
||||
StringRef SubsectionName;
|
||||
AArch64BuildAttributes::VendorID SubsectionNameID;
|
||||
AArch64BuildAttrs::VendorID SubsectionNameID;
|
||||
if (Parser.getTok().is(AsmToken::Identifier)) {
|
||||
SubsectionName = Parser.getTok().getIdentifier();
|
||||
SubsectionNameID = AArch64BuildAttributes::getVendorID(SubsectionName);
|
||||
SubsectionNameID = AArch64BuildAttrs::getVendorID(SubsectionName);
|
||||
} else {
|
||||
Error(Parser.getTok().getLoc(), "subsection name not found");
|
||||
return true;
|
||||
@@ -7863,14 +7863,14 @@ bool AArch64AsmParser::parseDirectiveAeabiSubSectionHeader(SMLoc L) {
|
||||
getTargetStreamer().getAtributesSubsectionByName(SubsectionName);
|
||||
|
||||
// Consume the first parameter (optionality parameter)
|
||||
AArch64BuildAttributes::SubsectionOptional IsOptional;
|
||||
AArch64BuildAttrs::SubsectionOptional IsOptional;
|
||||
// options: optional/required
|
||||
if (Parser.getTok().is(AsmToken::Identifier)) {
|
||||
StringRef Optionality = Parser.getTok().getIdentifier();
|
||||
IsOptional = AArch64BuildAttributes::getOptionalID(Optionality);
|
||||
if (AArch64BuildAttributes::OPTIONAL_NOT_FOUND == IsOptional) {
|
||||
IsOptional = AArch64BuildAttrs::getOptionalID(Optionality);
|
||||
if (AArch64BuildAttrs::OPTIONAL_NOT_FOUND == IsOptional) {
|
||||
Error(Parser.getTok().getLoc(),
|
||||
AArch64BuildAttributes::getSubsectionOptionalUnknownError() + ": " +
|
||||
AArch64BuildAttrs::getSubsectionOptionalUnknownError() + ": " +
|
||||
Optionality);
|
||||
return true;
|
||||
}
|
||||
@@ -7879,10 +7879,10 @@ bool AArch64AsmParser::parseDirectiveAeabiSubSectionHeader(SMLoc L) {
|
||||
Error(Parser.getTok().getLoc(),
|
||||
"optionality mismatch! subsection '" + SubsectionName +
|
||||
"' already exists with optionality defined as '" +
|
||||
AArch64BuildAttributes::getOptionalStr(
|
||||
AArch64BuildAttrs::getOptionalStr(
|
||||
SubsectionExists->IsOptional) +
|
||||
"' and not '" +
|
||||
AArch64BuildAttributes::getOptionalStr(IsOptional) + "'");
|
||||
AArch64BuildAttrs::getOptionalStr(IsOptional) + "'");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -7892,15 +7892,15 @@ bool AArch64AsmParser::parseDirectiveAeabiSubSectionHeader(SMLoc L) {
|
||||
return true;
|
||||
}
|
||||
// Check for possible IsOptional unaccepted values for known subsections
|
||||
if (AArch64BuildAttributes::AEABI_FEATURE_AND_BITS == SubsectionNameID) {
|
||||
if (AArch64BuildAttributes::REQUIRED == IsOptional) {
|
||||
if (AArch64BuildAttrs::AEABI_FEATURE_AND_BITS == SubsectionNameID) {
|
||||
if (AArch64BuildAttrs::REQUIRED == IsOptional) {
|
||||
Error(Parser.getTok().getLoc(),
|
||||
"aeabi_feature_and_bits must be marked as optional");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (AArch64BuildAttributes::AEABI_PAUTHABI == SubsectionNameID) {
|
||||
if (AArch64BuildAttributes::OPTIONAL == IsOptional) {
|
||||
if (AArch64BuildAttrs::AEABI_PAUTHABI == SubsectionNameID) {
|
||||
if (AArch64BuildAttrs::OPTIONAL == IsOptional) {
|
||||
Error(Parser.getTok().getLoc(),
|
||||
"aeabi_pauthabi must be marked as required");
|
||||
return true;
|
||||
@@ -7913,25 +7913,23 @@ bool AArch64AsmParser::parseDirectiveAeabiSubSectionHeader(SMLoc L) {
|
||||
}
|
||||
|
||||
// Consume the second parameter (type parameter)
|
||||
AArch64BuildAttributes::SubsectionType Type;
|
||||
AArch64BuildAttrs::SubsectionType Type;
|
||||
if (Parser.getTok().is(AsmToken::Identifier)) {
|
||||
StringRef Name = Parser.getTok().getIdentifier();
|
||||
Type = AArch64BuildAttributes::getTypeID(Name);
|
||||
if (AArch64BuildAttributes::TYPE_NOT_FOUND == Type) {
|
||||
Type = AArch64BuildAttrs::getTypeID(Name);
|
||||
if (AArch64BuildAttrs::TYPE_NOT_FOUND == Type) {
|
||||
Error(Parser.getTok().getLoc(),
|
||||
AArch64BuildAttributes::getSubsectionTypeUnknownError() + ": " +
|
||||
Name);
|
||||
AArch64BuildAttrs::getSubsectionTypeUnknownError() + ": " + Name);
|
||||
return true;
|
||||
}
|
||||
if (SubsectionExists) {
|
||||
if (Type != SubsectionExists->ParameterType) {
|
||||
Error(Parser.getTok().getLoc(),
|
||||
"type mismatch! subsection '" + SubsectionName +
|
||||
"' already exists with type defined as '" +
|
||||
AArch64BuildAttributes::getTypeStr(
|
||||
SubsectionExists->ParameterType) +
|
||||
"' and not '" + AArch64BuildAttributes::getTypeStr(Type) +
|
||||
"'");
|
||||
Error(
|
||||
Parser.getTok().getLoc(),
|
||||
"type mismatch! subsection '" + SubsectionName +
|
||||
"' already exists with type defined as '" +
|
||||
AArch64BuildAttrs::getTypeStr(SubsectionExists->ParameterType) +
|
||||
"' and not '" + AArch64BuildAttrs::getTypeStr(Type) + "'");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -7941,9 +7939,9 @@ bool AArch64AsmParser::parseDirectiveAeabiSubSectionHeader(SMLoc L) {
|
||||
return true;
|
||||
}
|
||||
// Check for possible unaccepted 'type' values for known subsections
|
||||
if (AArch64BuildAttributes::AEABI_FEATURE_AND_BITS == SubsectionNameID ||
|
||||
AArch64BuildAttributes::AEABI_PAUTHABI == SubsectionNameID) {
|
||||
if (AArch64BuildAttributes::NTBS == Type) {
|
||||
if (AArch64BuildAttrs::AEABI_FEATURE_AND_BITS == SubsectionNameID ||
|
||||
AArch64BuildAttrs::AEABI_PAUTHABI == SubsectionNameID) {
|
||||
if (AArch64BuildAttrs::NTBS == Type) {
|
||||
Error(Parser.getTok().getLoc(),
|
||||
SubsectionName + " must be marked as ULEB128");
|
||||
return true;
|
||||
@@ -7978,14 +7976,13 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
|
||||
StringRef ActiveSubsectionName = ActiveSubsection->VendorName;
|
||||
unsigned ActiveSubsectionType = ActiveSubsection->ParameterType;
|
||||
|
||||
unsigned ActiveSubsectionID = AArch64BuildAttributes::VENDOR_UNKNOWN;
|
||||
if (AArch64BuildAttributes::getVendorName(
|
||||
AArch64BuildAttributes::AEABI_PAUTHABI) == ActiveSubsectionName)
|
||||
ActiveSubsectionID = AArch64BuildAttributes::AEABI_PAUTHABI;
|
||||
if (AArch64BuildAttributes::getVendorName(
|
||||
AArch64BuildAttributes::AEABI_FEATURE_AND_BITS) ==
|
||||
unsigned ActiveSubsectionID = AArch64BuildAttrs::VENDOR_UNKNOWN;
|
||||
if (AArch64BuildAttrs::getVendorName(AArch64BuildAttrs::AEABI_PAUTHABI) ==
|
||||
ActiveSubsectionName)
|
||||
ActiveSubsectionID = AArch64BuildAttributes::AEABI_FEATURE_AND_BITS;
|
||||
ActiveSubsectionID = AArch64BuildAttrs::AEABI_PAUTHABI;
|
||||
if (AArch64BuildAttrs::getVendorName(
|
||||
AArch64BuildAttrs::AEABI_FEATURE_AND_BITS) == ActiveSubsectionName)
|
||||
ActiveSubsectionID = AArch64BuildAttrs::AEABI_FEATURE_AND_BITS;
|
||||
|
||||
StringRef TagStr = "";
|
||||
unsigned Tag;
|
||||
@@ -7995,21 +7992,21 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
|
||||
default:
|
||||
assert(0 && "Subsection name error");
|
||||
break;
|
||||
case AArch64BuildAttributes::VENDOR_UNKNOWN:
|
||||
case AArch64BuildAttrs::VENDOR_UNKNOWN:
|
||||
// Private subsection, accept any tag.
|
||||
break;
|
||||
case AArch64BuildAttributes::AEABI_PAUTHABI:
|
||||
Tag = AArch64BuildAttributes::getPauthABITagsID(TagStr);
|
||||
if (AArch64BuildAttributes::PAUTHABI_TAG_NOT_FOUND == Tag) {
|
||||
case AArch64BuildAttrs::AEABI_PAUTHABI:
|
||||
Tag = AArch64BuildAttrs::getPauthABITagsID(TagStr);
|
||||
if (AArch64BuildAttrs::PAUTHABI_TAG_NOT_FOUND == Tag) {
|
||||
Error(Parser.getTok().getLoc(), "unknown AArch64 build attribute '" +
|
||||
TagStr + "' for subsection '" +
|
||||
ActiveSubsectionName + "'");
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case AArch64BuildAttributes::AEABI_FEATURE_AND_BITS:
|
||||
Tag = AArch64BuildAttributes::getFeatureAndBitsTagsID(TagStr);
|
||||
if (AArch64BuildAttributes::FEATURE_AND_BITS_TAG_NOT_FOUND == Tag) {
|
||||
case AArch64BuildAttrs::AEABI_FEATURE_AND_BITS:
|
||||
Tag = AArch64BuildAttrs::getFeatureAndBitsTagsID(TagStr);
|
||||
if (AArch64BuildAttrs::FEATURE_AND_BITS_TAG_NOT_FOUND == Tag) {
|
||||
Error(Parser.getTok().getLoc(), "unknown AArch64 build attribute '" +
|
||||
TagStr + "' for subsection '" +
|
||||
ActiveSubsectionName + "'");
|
||||
@@ -8035,7 +8032,7 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
|
||||
unsigned ValueInt = unsigned(-1);
|
||||
std::string ValueStr = "";
|
||||
if (Parser.getTok().is(AsmToken::Integer)) {
|
||||
if (AArch64BuildAttributes::NTBS == ActiveSubsectionType) {
|
||||
if (AArch64BuildAttrs::NTBS == ActiveSubsectionType) {
|
||||
Error(
|
||||
Parser.getTok().getLoc(),
|
||||
"active subsection type is NTBS (string), found ULEB128 (unsigned)");
|
||||
@@ -8043,7 +8040,7 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
|
||||
}
|
||||
ValueInt = getTok().getIntVal();
|
||||
} else if (Parser.getTok().is(AsmToken::Identifier)) {
|
||||
if (AArch64BuildAttributes::ULEB128 == ActiveSubsectionType) {
|
||||
if (AArch64BuildAttrs::ULEB128 == ActiveSubsectionType) {
|
||||
Error(
|
||||
Parser.getTok().getLoc(),
|
||||
"active subsection type is ULEB128 (unsigned), found NTBS (string)");
|
||||
@@ -8051,7 +8048,7 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
|
||||
}
|
||||
ValueStr = Parser.getTok().getIdentifier();
|
||||
} else if (Parser.getTok().is(AsmToken::String)) {
|
||||
if (AArch64BuildAttributes::ULEB128 == ActiveSubsectionType) {
|
||||
if (AArch64BuildAttrs::ULEB128 == ActiveSubsectionType) {
|
||||
Error(
|
||||
Parser.getTok().getLoc(),
|
||||
"active subsection type is ULEB128 (unsigned), found NTBS (string)");
|
||||
@@ -8064,7 +8061,7 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
|
||||
}
|
||||
// Check for possible unaccepted values for known tags (AEABI_PAUTHABI,
|
||||
// AEABI_FEATURE_AND_BITS)
|
||||
if (!(ActiveSubsectionID == AArch64BuildAttributes::VENDOR_UNKNOWN) &&
|
||||
if (!(ActiveSubsectionID == AArch64BuildAttrs::VENDOR_UNKNOWN) &&
|
||||
TagStr != "") { // TagStr was a recognized string
|
||||
if (0 != ValueInt && 1 != ValueInt) {
|
||||
Error(Parser.getTok().getLoc(),
|
||||
|
||||
@@ -160,13 +160,13 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
|
||||
return;
|
||||
}
|
||||
|
||||
unsigned VendorID = AArch64BuildAttributes::getVendorID(VendorName);
|
||||
unsigned VendorID = AArch64BuildAttrs::getVendorID(VendorName);
|
||||
|
||||
switch (VendorID) {
|
||||
default:
|
||||
assert(0 && "Subsection name error");
|
||||
break;
|
||||
case AArch64BuildAttributes::VENDOR_UNKNOWN:
|
||||
case AArch64BuildAttrs::VENDOR_UNKNOWN:
|
||||
if (unsigned(-1) != Value) {
|
||||
OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value;
|
||||
AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
|
||||
@@ -179,7 +179,7 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
|
||||
}
|
||||
break;
|
||||
// Note: AEABI_FEATURE_AND_BITS takes only unsigned values
|
||||
case AArch64BuildAttributes::AEABI_FEATURE_AND_BITS:
|
||||
case AArch64BuildAttrs::AEABI_FEATURE_AND_BITS:
|
||||
switch (Tag) {
|
||||
default: // allow emitting any attribute by number
|
||||
OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value;
|
||||
@@ -188,19 +188,18 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
|
||||
AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
|
||||
Override);
|
||||
break;
|
||||
case AArch64BuildAttributes::TAG_FEATURE_BTI:
|
||||
case AArch64BuildAttributes::TAG_FEATURE_GCS:
|
||||
case AArch64BuildAttributes::TAG_FEATURE_PAC:
|
||||
case AArch64BuildAttrs::TAG_FEATURE_BTI:
|
||||
case AArch64BuildAttrs::TAG_FEATURE_GCS:
|
||||
case AArch64BuildAttrs::TAG_FEATURE_PAC:
|
||||
OS << "\t.aeabi_attribute" << "\t"
|
||||
<< AArch64BuildAttributes::getFeatureAndBitsTagsStr(Tag) << ", "
|
||||
<< Value;
|
||||
<< AArch64BuildAttrs::getFeatureAndBitsTagsStr(Tag) << ", " << Value;
|
||||
AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
|
||||
Override);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
// Note: AEABI_PAUTHABI takes only unsigned values
|
||||
case AArch64BuildAttributes::AEABI_PAUTHABI:
|
||||
case AArch64BuildAttrs::AEABI_PAUTHABI:
|
||||
switch (Tag) {
|
||||
default: // allow emitting any attribute by number
|
||||
OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value;
|
||||
@@ -209,10 +208,10 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
|
||||
AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
|
||||
Override);
|
||||
break;
|
||||
case AArch64BuildAttributes::TAG_PAUTH_PLATFORM:
|
||||
case AArch64BuildAttributes::TAG_PAUTH_SCHEMA:
|
||||
case AArch64BuildAttrs::TAG_PAUTH_PLATFORM:
|
||||
case AArch64BuildAttrs::TAG_PAUTH_SCHEMA:
|
||||
OS << "\t.aeabi_attribute" << "\t"
|
||||
<< AArch64BuildAttributes::getPauthABITagsStr(Tag) << ", " << Value;
|
||||
<< AArch64BuildAttrs::getPauthABITagsStr(Tag) << ", " << Value;
|
||||
AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
|
||||
Override);
|
||||
break;
|
||||
@@ -223,19 +222,18 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
|
||||
}
|
||||
|
||||
void emitAtributesSubsection(
|
||||
StringRef SubsectionName,
|
||||
AArch64BuildAttributes::SubsectionOptional Optional,
|
||||
AArch64BuildAttributes::SubsectionType ParameterType) override {
|
||||
StringRef SubsectionName, AArch64BuildAttrs::SubsectionOptional Optional,
|
||||
AArch64BuildAttrs::SubsectionType ParameterType) override {
|
||||
// The AArch64 build attributes assembly subsection header format:
|
||||
// ".aeabi_subsection name, optional, parameter type"
|
||||
// optional: required (0) optional (1)
|
||||
// parameter type: uleb128 or ULEB128 (0) ntbs or NTBS (1)
|
||||
unsigned SubsectionID = AArch64BuildAttributes::getVendorID(SubsectionName);
|
||||
unsigned SubsectionID = AArch64BuildAttrs::getVendorID(SubsectionName);
|
||||
|
||||
assert((0 == Optional || 1 == Optional) &&
|
||||
AArch64BuildAttributes::getSubsectionOptionalUnknownError().data());
|
||||
AArch64BuildAttrs::getSubsectionOptionalUnknownError().data());
|
||||
assert((0 == ParameterType || 1 == ParameterType) &&
|
||||
AArch64BuildAttributes::getSubsectionTypeUnknownError().data());
|
||||
AArch64BuildAttrs::getSubsectionTypeUnknownError().data());
|
||||
|
||||
std::string SubsectionTag = ".aeabi_subsection";
|
||||
StringRef OptionalStr = getOptionalStr(Optional);
|
||||
@@ -246,20 +244,20 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
|
||||
// Treated as a private subsection
|
||||
break;
|
||||
}
|
||||
case AArch64BuildAttributes::AEABI_PAUTHABI: {
|
||||
assert(AArch64BuildAttributes::REQUIRED == Optional &&
|
||||
case AArch64BuildAttrs::AEABI_PAUTHABI: {
|
||||
assert(AArch64BuildAttrs::REQUIRED == Optional &&
|
||||
"subsection .aeabi-pauthabi should be marked as "
|
||||
"required and not as optional");
|
||||
assert(AArch64BuildAttributes::ULEB128 == ParameterType &&
|
||||
assert(AArch64BuildAttrs::ULEB128 == ParameterType &&
|
||||
"subsection .aeabi-pauthabi should be "
|
||||
"marked as uleb128 and not as ntbs");
|
||||
break;
|
||||
}
|
||||
case AArch64BuildAttributes::AEABI_FEATURE_AND_BITS: {
|
||||
assert(AArch64BuildAttributes::OPTIONAL == Optional &&
|
||||
case AArch64BuildAttrs::AEABI_FEATURE_AND_BITS: {
|
||||
assert(AArch64BuildAttrs::OPTIONAL == Optional &&
|
||||
"subsection .aeabi_feature_and_bits should be "
|
||||
"marked as optional and not as required");
|
||||
assert(AArch64BuildAttributes::ULEB128 == ParameterType &&
|
||||
assert(AArch64BuildAttrs::ULEB128 == ParameterType &&
|
||||
"subsection .aeabi_feature_and_bits should "
|
||||
"be marked as uleb128 and not as ntbs");
|
||||
break;
|
||||
@@ -421,8 +419,8 @@ AArch64ELFStreamer &AArch64TargetELFStreamer::getStreamer() {
|
||||
}
|
||||
|
||||
void AArch64TargetELFStreamer::emitAtributesSubsection(
|
||||
StringRef VendorName, AArch64BuildAttributes::SubsectionOptional IsOptional,
|
||||
AArch64BuildAttributes::SubsectionType ParameterType) {
|
||||
StringRef VendorName, AArch64BuildAttrs::SubsectionOptional IsOptional,
|
||||
AArch64BuildAttrs::SubsectionType ParameterType) {
|
||||
AArch64TargetStreamer::emitAtributesSubsection(VendorName, IsOptional,
|
||||
ParameterType);
|
||||
}
|
||||
|
||||
@@ -153,8 +153,8 @@ MCTargetStreamer *llvm::createAArch64NullTargetStreamer(MCStreamer &S) {
|
||||
}
|
||||
|
||||
void AArch64TargetStreamer::emitAtributesSubsection(
|
||||
StringRef VendorName, AArch64BuildAttributes::SubsectionOptional IsOptional,
|
||||
AArch64BuildAttributes::SubsectionType ParameterType) {
|
||||
StringRef VendorName, AArch64BuildAttrs::SubsectionOptional IsOptional,
|
||||
AArch64BuildAttrs::SubsectionType ParameterType) {
|
||||
|
||||
// If exists, return.
|
||||
for (MCELFStreamer::AttributeSubSection &SubSection : AttributeSubSections) {
|
||||
|
||||
@@ -97,8 +97,8 @@ public:
|
||||
/// Build attributes implementation
|
||||
virtual void
|
||||
emitAtributesSubsection(StringRef VendorName,
|
||||
AArch64BuildAttributes::SubsectionOptional IsOptional,
|
||||
AArch64BuildAttributes::SubsectionType ParameterType);
|
||||
AArch64BuildAttrs::SubsectionOptional IsOptional,
|
||||
AArch64BuildAttrs::SubsectionType ParameterType);
|
||||
virtual void emitAttribute(StringRef VendorName, unsigned Tag, unsigned Value,
|
||||
std::string String, bool Override);
|
||||
void activateAtributesSubsection(StringRef VendorName);
|
||||
@@ -124,9 +124,8 @@ private:
|
||||
|
||||
/// Build attributes implementation
|
||||
void emitAtributesSubsection(
|
||||
StringRef VendorName,
|
||||
AArch64BuildAttributes::SubsectionOptional IsOptional,
|
||||
AArch64BuildAttributes::SubsectionType ParameterType) override;
|
||||
StringRef VendorName, AArch64BuildAttrs::SubsectionOptional IsOptional,
|
||||
AArch64BuildAttrs::SubsectionType ParameterType) override;
|
||||
void emitAttribute(StringRef VendorName, unsigned Tag, unsigned Value,
|
||||
std::string String, bool Override = false) override;
|
||||
void emitInst(uint32_t Inst) override;
|
||||
|
||||
Reference in New Issue
Block a user