[compiler-rt] [TSan][compiler-rt] Defer symbolization of Reports to as late as possible (PR #151120)
Dan Blackwell via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 30 06:32:30 PDT 2025
================
@@ -199,6 +198,55 @@ void ScopedReportBase::AddMemoryAccess(uptr addr, uptr external_tag, Shadow s,
}
}
+void ScopedReportBase::SymbolizeStackElems() {
+ // symbolize memory ops
+ for (usize i = 0; i < rep_->mops.Size(); i++) {
+ ReportMop *mop = rep_->mops[i];
+ mop->stack = SymbolizeStack(mop->stack_trace);
+ if (mop->stack)
+ mop->stack->suppressable = true;
+ }
+
+ // symbolize locations
+ for (usize i = 0; i < rep_->locs.Size(); i++) {
+ // added locations have a NULL placeholder - don't dereference them
+ if (ReportLocation *loc = rep_->locs[i])
+ loc->stack = SymbolizeStackId(loc->stack_id);
+ }
+
+ // symbolize any added locations
+ for (usize i = 0; i < rep_->added_location_addrs.Size(); i++) {
+ AddedLocationAddr *added_loc = &rep_->added_location_addrs[i];
+ if (ReportLocation *loc = SymbolizeData(added_loc->addr)) {
+ loc->suppressable = true;
+ rep_->locs[added_loc->locs_idx] = loc;
+ }
+ }
+
+ // Filter out any added location placeholders that could not be symbolized
+ Vector<ReportLocation *> filtered_locs;
+ for (usize i = 0; i < rep_->locs.Size(); i++)
+ if (rep_->locs[i] != nullptr)
+ filtered_locs.PushBack(rep_->locs[i]);
+ rep_->locs.Resize(filtered_locs.Size());
+ for (usize i = 0; i < filtered_locs.Size(); i++)
+ rep_->locs[i] = (filtered_locs[i]);
----------------
DanBlackwell wrote:
I have swapped this in-place in now
https://github.com/llvm/llvm-project/pull/151120
More information about the llvm-commits
mailing list