smd added inline comments.
================ Comment at: compiler-rt/lib/hwasan/hwasan.cpp:205 + if (registers_frame && stack->trace && stack->size > 0) { + stack->trace++; + stack->size--; ---------------- fmayer wrote: > fmayer wrote: > > fmayer wrote: > > > vitalybuka wrote: > > > > maybe we should pop everything up to "pc" to avoid issues with nested > > > > calls? > > > > > > > > For most users hwasan frames are not very useful. However if you work > > > > on sanitizer, some frames can be a useful info. So I don't mind we just > > > > relax test cases to accommodate this nesting. > > > > > > > > cc @smd > > > This is probably for another patch though, right? This is already like > > > this on the LHS. > > nevermind. i accidentally had this left, sent > > https://reviews.llvm.org/D131279 for that. > Sorry, please disregard everything I said here (incl the link). I confused > myself where this was posted, and this is all nonsense. @vitalybuka thanks for the reply. >However if you work on sanitizer, some frames can be a useful info From my experience most of the time while I'm working on sanitizers I spend in gdb, so I don't actually care about what backtrace is being printed. So it might be a good idea to avoid confusing regular hwasan user and skip printing service hwasan frames. Maybe we just could keep the current scheme, but get return address and frame pointer in __hwasan_tag_mismatch4 like it was before? Something like: ``` void HwasanTagMismatch(uptr addr, uptr pc, uptr frame, uptr access_info, uptr *registers_frame, size_t outsize) { __hwasan::AccessInfo ai; ai.is_store = access_info & 0x10; ai.is_load = !ai.is_store; ai.recover = access_info & 0x20; ai.addr = addr; if ((access_info & 0xf) == 0xf) ai.size = outsize; else ai.size = 1 << (access_info & 0xf); HandleTagMismatch(ai, pc, frame, nullptr, registers_frame); } ... void __hwasan_tag_mismat(uptr)__builtin_frame_address(0)ch4(uptr addr, uptr access_info, uptr *registers_frame, size_t outsize) { uptr ra = (uptr)__builtin_return_address(0); uptr fp = (uptr)__builtin_frame_address(0); __hwasan::HwasanTagMismatch(addr, ra, fp, access_info, registers_frame, outsize); } ``` @fmayer >LTO could conceivably inline this – in which case it would be one, right? Yes, you're totally right. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103562/new/ https://reviews.llvm.org/D103562 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits