From 79d729eef511f4db3c858765be39c38879074de9 Mon Sep 17 00:00:00 2001 From: Martin Pelikan Date: Tue, 30 Jan 2018 13:41:34 +0000 Subject: [PATCH] [XRay] clarify error messages when parsing broken traces Summary: When there's a mismatch of a function argument being right after the wrong function, print an offset into the file where that happened, to ease further debugging. Reviewers: dberris, eizan, kpw Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D42492 llvm-svn: 323758 --- llvm/lib/XRay/Trace.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/llvm/lib/XRay/Trace.cpp b/llvm/lib/XRay/Trace.cpp index d1fcf1c35b36..d8c54ddc2b93 100644 --- a/llvm/lib/XRay/Trace.cpp +++ b/llvm/lib/XRay/Trace.cpp @@ -120,9 +120,10 @@ Error loadNaiveFormatLog(StringRef Data, XRayFileHeader &FileHeader, auto TId = RecordExtractor.getU32(&OffsetPtr); if (Record.FuncId != FuncId || Record.TId != TId) return make_error( - Twine("Corrupted log, found payload following non-matching " - "function + thread record. Record for ") + - Twine(Record.FuncId) + " != " + Twine(FuncId), + Twine("Corrupted log, found arg payload following non-matching " + "function + thread record. Record for function ") + + Twine(Record.FuncId) + " != " + Twine(FuncId) + "; offset: " + + Twine(S.data() - Data.data()), std::make_error_code(std::errc::executable_format_error)); // Advance another four bytes to avoid padding. OffsetPtr += 4;