Hardware-assisted AddressSanitizer (llvm part).
Summary: This is LLVM instrumentation for the new HWASan tool. It is basically a stripped down copy of ASan at this point, w/o stack or global support. Instrumenation adds a global constructor + runtime callbacks for every load and store. HWASan comes with its own IR attribute. A brief design document can be found in clang/docs/HardwareAssistedAddressSanitizerDesign.rst (submitted earlier). Reviewers: kcc, pcc, alekseyshl Subscribers: srhines, mehdi_amini, mgorny, javed.absar, eraman, llvm-commits, hiraditya Differential Revision: https://reviews.llvm.org/D40932 llvm-svn: 320217
This commit is contained in:
@@ -1156,6 +1156,7 @@ static uint64_t getRawAttributeMask(Attribute::AttrKind Val) {
|
||||
case Attribute::WriteOnly: return 1ULL << 53;
|
||||
case Attribute::Speculatable: return 1ULL << 54;
|
||||
case Attribute::StrictFP: return 1ULL << 55;
|
||||
case Attribute::SanitizeHWAddress: return 1ULL << 56;
|
||||
case Attribute::Dereferenceable:
|
||||
llvm_unreachable("dereferenceable attribute not supported in raw format");
|
||||
break;
|
||||
@@ -1368,6 +1369,8 @@ static Attribute::AttrKind getAttrFromCode(uint64_t Code) {
|
||||
return Attribute::StructRet;
|
||||
case bitc::ATTR_KIND_SANITIZE_ADDRESS:
|
||||
return Attribute::SanitizeAddress;
|
||||
case bitc::ATTR_KIND_SANITIZE_HWADDRESS:
|
||||
return Attribute::SanitizeHWAddress;
|
||||
case bitc::ATTR_KIND_SANITIZE_THREAD:
|
||||
return Attribute::SanitizeThread;
|
||||
case bitc::ATTR_KIND_SANITIZE_MEMORY:
|
||||
|
||||
Reference in New Issue
Block a user