Skip to content

Commit 0984843

Browse files
committed
[NFC][hwasan] Return to one loop in CopyShadow
Looks simpler.
1 parent edefc18 commit 0984843

File tree

1 file changed

+10
-13
lines changed

1 file changed

+10
-13
lines changed

compiler-rt/lib/hwasan/hwasan_report.cpp

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -525,22 +525,19 @@ BaseReport::Shadow BaseReport::CopyShadow() const {
525525

526526
result.addr = GetPrintTagStart(untagged_addr + mismatch_offset);
527527
uptr tag_addr = result.addr;
528-
for (tag_t &tag_copy : result.tags) {
529-
if (MemIsShadow(tag_addr))
530-
tag_copy = *reinterpret_cast<tag_t *>(tag_addr);
531-
++tag_addr;
532-
}
533-
534-
uptr short_tags_addr = result.addr + kShortDumpOffset;
535-
for (tag_t &tag_copy : result.short_tags) {
536-
tag_t tag = GetTagCopy(short_tags_addr);
537-
uptr granule_addr = ShadowToMem(short_tags_addr);
538-
if (1 <= tag && tag <= kShadowAlignment &&
528+
uptr short_end = kShortDumpOffset + ARRAY_SIZE(shadow.short_tags);
529+
for (uptr i = 0; i < ARRAY_SIZE(result.tags); ++i, ++tag_addr) {
530+
if (!MemIsShadow(tag_addr))
531+
continue;
532+
result.tags[i] = *reinterpret_cast<tag_t *>(tag_addr);
533+
if (i < kShortDumpOffset || i >= short_end)
534+
continue;
535+
uptr granule_addr = ShadowToMem(tag_addr);
536+
if (1 <= result.tags[i] && result.tags[i] <= kShadowAlignment &&
539537
IsAccessibleMemoryRange(granule_addr, kShadowAlignment)) {
540-
tag_copy =
538+
result.short_tags[i - kShortDumpOffset] =
541539
*reinterpret_cast<tag_t *>(granule_addr + kShadowAlignment - 1);
542540
}
543-
++short_tags_addr;
544541
}
545542
return result;
546543
}

0 commit comments

Comments
 (0)