В файле AddressSanitizer.cpp есть функция AddressSanitizer::instrumentStoreInstruction(...)
void AddressSanitizer::instrumentStoreInstruction(StoreInst *S, Instruction *I) {
assert(nullptr != S);
assert(nullptr != I);
Value* V = S->getValueOperand();
assert(nullptr != V);
Value* P = S->getPointerOperand();
assert(nullptr != P);
DEBUG(dbgs() << "ASAN Store Value : " << " " <<*V << "\n");
DEBUG(dbgs() << "ASAN Store Pointer" << " " <<*P << "\n");
Value* vL = 0;
if (isa<Instruction>(V)) {
vL = getStoreInstructionValueShadowBit(V, I);
handleStorePointerOperand(P, I, vL);
} else if (isa<ConstantExpr>(V)) {
instrumentConstantExprStoreInstruction(V, P, I);
} else if (isa<ConstantInt>(V) || isa<ConstantFP>(V)) {
//TODO: need to change to ConstantData after LLVM porting
instrumentConstantIntStoreInstruction(V, P, I);
}
}
Нужно в нем добавить проверку является ли V параметром функции.
Как это реализовать?
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники