[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:
SivanShani-Arm
2025-01-28 09:53:45 +00:00
committed by GitHub
parent 9c92824dd6
commit de4bbbfdcc
9 changed files with 116 additions and 132 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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(),

View File

@@ -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);
}

View File

@@ -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) {

View File

@@ -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;