[Lldb-commits] [PATCH] D76872: [intel-pt] Fix existing support in LLDB
This revision was automatically updated to reflect the committed changes. Closed by commit rG128c0d037d32: [intel-pt] Fix existing support in LLDB (authored by Walter Erquinigo wall...@fb.com). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76872/new/ https://reviews.llvm.org/D76872 Files: lldb/tools/intel-features/CMakeLists.txt lldb/tools/intel-features/intel-pt/Decoder.cpp lldb/tools/intel-features/intel-pt/Decoder.h Index: lldb/tools/intel-features/intel-pt/Decoder.h === --- lldb/tools/intel-features/intel-pt/Decoder.h +++ lldb/tools/intel-features/intel-pt/Decoder.h @@ -245,6 +245,22 @@ lldb::SBError ) const; void DecodeTrace(struct pt_insn_decoder *decoder, Instructions _list, lldb::SBError ); + int HandlePTInstructionEvents(pt_insn_decoder *decoder, int errcode, +Instructions _list, +lldb::SBError ); + + int AppendErrorToInstructionList(int errcode, pt_insn_decoder *decoder, + Instructions _list, + lldb::SBError ); + + void AppendErrorWithOffsetToInstructionList(int errcode, + uint64_t decoder_offset, + Instructions _list, + lldb::SBError ); + + void AppendErrorWithoutOffsetToInstructionList(int errcode, + Instructions _list, + lldb::SBError ); // Function to diagnose and indicate errors during raw trace decoding void Diagnose(struct pt_insn_decoder *decoder, int errcode, Index: lldb/tools/intel-features/intel-pt/Decoder.cpp === --- lldb/tools/intel-features/intel-pt/Decoder.cpp +++ lldb/tools/intel-features/intel-pt/Decoder.cpp @@ -564,6 +564,61 @@ } } +void Decoder::AppendErrorWithOffsetToInstructionList( +int errcode, uint64_t decoder_offset, Instructions _list, +lldb::SBError ) { + sberror.SetErrorStringWithFormat( + "processor trace decoding library: \"%s\" [decoder_offset] => " + "[0x%" PRIu64 "]", + pt_errstr(pt_errcode(errcode)), decoder_offset); + instruction_list.emplace_back(sberror.GetCString()); +} + +void Decoder::AppendErrorWithoutOffsetToInstructionList( +int errcode, Instructions _list, lldb::SBError ) { + sberror.SetErrorStringWithFormat("processor trace decoding library: \"%s\"", + pt_errstr(pt_errcode(errcode))); + instruction_list.emplace_back(sberror.GetCString()); +} + +int Decoder::AppendErrorToInstructionList(int errcode, pt_insn_decoder *decoder, + Instructions _list, + lldb::SBError ) { + uint64_t decoder_offset = 0; + int errcode_off = pt_insn_get_offset(decoder, _offset); + if (errcode_off < 0) { +AppendErrorWithoutOffsetToInstructionList(errcode, instruction_list, + sberror); +return errcode_off; + } + AppendErrorWithOffsetToInstructionList(errcode, decoder_offset, + instruction_list, sberror); + return 0; +} + +int Decoder::HandlePTInstructionEvents(pt_insn_decoder *decoder, int errcode, + Instructions _list, + lldb::SBError ) { + while (errcode & pts_event_pending) { +pt_event event; +errcode = pt_insn_event(decoder, , sizeof(event)); +if (errcode < 0) + return errcode; + +// The list of events are in +// https://github.com/intel/libipt/blob/master/doc/man/pt_qry_event.3.md +if (event.type == ptev_overflow) { + int append_errcode = AppendErrorToInstructionList( + errcode, decoder, instruction_list, sberror); + if (append_errcode < 0) +return append_errcode; +} +// Other events don't signal stream errors + } + + return 0; +} + // Start actual decoding of raw trace void Decoder::DecodeTrace(struct pt_insn_decoder *decoder, Instructions _list, @@ -585,10 +640,8 @@ int errcode_off = pt_insn_get_offset(decoder, _offset); if (errcode_off < 0) { -sberror.SetErrorStringWithFormat( -"processor trace decoding library: \"%s\"", -pt_errstr(pt_errcode(errcode))); -instruction_list.emplace_back(sberror.GetCString()); +AppendErrorWithoutOffsetToInstructionList(errcode, instruction_list, + sberror); return; } @@ -619,16 +672,22 @@ // progress further. Hence, returning in this situation. return; } -
[Lldb-commits] [PATCH] D76872: [intel-pt] Fix existing support in LLDB
wallace updated this revision to Diff 253684. wallace added a comment. merge the commits of this diff Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76872/new/ https://reviews.llvm.org/D76872 Files: lldb/tools/intel-features/CMakeLists.txt lldb/tools/intel-features/intel-pt/Decoder.cpp lldb/tools/intel-features/intel-pt/Decoder.h Index: lldb/tools/intel-features/intel-pt/Decoder.h === --- lldb/tools/intel-features/intel-pt/Decoder.h +++ lldb/tools/intel-features/intel-pt/Decoder.h @@ -245,6 +245,22 @@ lldb::SBError ) const; void DecodeTrace(struct pt_insn_decoder *decoder, Instructions _list, lldb::SBError ); + int HandlePTInstructionEvents(pt_insn_decoder *decoder, int errcode, +Instructions _list, +lldb::SBError ); + + int AppendErrorToInstructionList(int errcode, pt_insn_decoder *decoder, + Instructions _list, + lldb::SBError ); + + void AppendErrorWithOffsetToInstructionList(int errcode, + uint64_t decoder_offset, + Instructions _list, + lldb::SBError ); + + void AppendErrorWithoutOffsetToInstructionList(int errcode, + Instructions _list, + lldb::SBError ); // Function to diagnose and indicate errors during raw trace decoding void Diagnose(struct pt_insn_decoder *decoder, int errcode, Index: lldb/tools/intel-features/intel-pt/Decoder.cpp === --- lldb/tools/intel-features/intel-pt/Decoder.cpp +++ lldb/tools/intel-features/intel-pt/Decoder.cpp @@ -564,6 +564,61 @@ } } +void Decoder::AppendErrorWithOffsetToInstructionList( +int errcode, uint64_t decoder_offset, Instructions _list, +lldb::SBError ) { + sberror.SetErrorStringWithFormat( + "processor trace decoding library: \"%s\" [decoder_offset] => " + "[0x%" PRIu64 "]", + pt_errstr(pt_errcode(errcode)), decoder_offset); + instruction_list.emplace_back(sberror.GetCString()); +} + +void Decoder::AppendErrorWithoutOffsetToInstructionList( +int errcode, Instructions _list, lldb::SBError ) { + sberror.SetErrorStringWithFormat("processor trace decoding library: \"%s\"", + pt_errstr(pt_errcode(errcode))); + instruction_list.emplace_back(sberror.GetCString()); +} + +int Decoder::AppendErrorToInstructionList(int errcode, pt_insn_decoder *decoder, + Instructions _list, + lldb::SBError ) { + uint64_t decoder_offset = 0; + int errcode_off = pt_insn_get_offset(decoder, _offset); + if (errcode_off < 0) { +AppendErrorWithoutOffsetToInstructionList(errcode, instruction_list, + sberror); +return errcode_off; + } + AppendErrorWithOffsetToInstructionList(errcode, decoder_offset, + instruction_list, sberror); + return 0; +} + +int Decoder::HandlePTInstructionEvents(pt_insn_decoder *decoder, int errcode, + Instructions _list, + lldb::SBError ) { + while (errcode & pts_event_pending) { +pt_event event; +errcode = pt_insn_event(decoder, , sizeof(event)); +if (errcode < 0) + return errcode; + +// The list of events are in +// https://github.com/intel/libipt/blob/master/doc/man/pt_qry_event.3.md +if (event.type == ptev_overflow) { + int append_errcode = AppendErrorToInstructionList( + errcode, decoder, instruction_list, sberror); + if (append_errcode < 0) +return append_errcode; +} +// Other events don't signal stream errors + } + + return 0; +} + // Start actual decoding of raw trace void Decoder::DecodeTrace(struct pt_insn_decoder *decoder, Instructions _list, @@ -585,10 +640,8 @@ int errcode_off = pt_insn_get_offset(decoder, _offset); if (errcode_off < 0) { -sberror.SetErrorStringWithFormat( -"processor trace decoding library: \"%s\"", -pt_errstr(pt_errcode(errcode))); -instruction_list.emplace_back(sberror.GetCString()); +AppendErrorWithoutOffsetToInstructionList(errcode, instruction_list, + sberror); return; } @@ -619,16 +672,22 @@ // progress further. Hence, returning in this situation. return; } -sberror.SetErrorStringWithFormat( -"processor trace decoding library: \"%s\" [decoder_offset] => " -
[Lldb-commits] [PATCH] D76872: [intel-pt] Fix existing support in LLDB
wallace added a comment. His last activity was in Jun 2017. I hope he's still around. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76872/new/ https://reviews.llvm.org/D76872 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D76872: [intel-pt] Fix existing support in LLDB
wallace updated this revision to Diff 252936. wallace added a comment. update commit message Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76872/new/ https://reviews.llvm.org/D76872 Files: lldb/tools/intel-features/CMakeLists.txt lldb/tools/intel-features/intel-pt/Decoder.cpp lldb/tools/intel-features/intel-pt/Decoder.h Index: lldb/tools/intel-features/intel-pt/Decoder.h === --- lldb/tools/intel-features/intel-pt/Decoder.h +++ lldb/tools/intel-features/intel-pt/Decoder.h @@ -245,6 +245,22 @@ lldb::SBError ) const; void DecodeTrace(struct pt_insn_decoder *decoder, Instructions _list, lldb::SBError ); + int HandlePTInstructionEvents(pt_insn_decoder *decoder, int errcode, +Instructions _list, +lldb::SBError ); + + int AppendErrorToInstructionList(int errcode, pt_insn_decoder *decoder, + Instructions _list, + lldb::SBError ); + + void AppendErrorWithOffsetToInstructionList(int errcode, + uint64_t decoder_offset, + Instructions _list, + lldb::SBError ); + + void AppendErrorWithoutOffsetToInstructionList(int errcode, + Instructions _list, + lldb::SBError ); // Function to diagnose and indicate errors during raw trace decoding void Diagnose(struct pt_insn_decoder *decoder, int errcode, Index: lldb/tools/intel-features/intel-pt/Decoder.cpp === --- lldb/tools/intel-features/intel-pt/Decoder.cpp +++ lldb/tools/intel-features/intel-pt/Decoder.cpp @@ -564,6 +564,61 @@ } } +void Decoder::AppendErrorWithOffsetToInstructionList( +int errcode, uint64_t decoder_offset, Instructions _list, +lldb::SBError ) { + sberror.SetErrorStringWithFormat( + "processor trace decoding library: \"%s\" [decoder_offset] => " + "[0x%" PRIu64 "]", + pt_errstr(pt_errcode(errcode)), decoder_offset); + instruction_list.emplace_back(sberror.GetCString()); +} + +void Decoder::AppendErrorWithoutOffsetToInstructionList( +int errcode, Instructions _list, lldb::SBError ) { + sberror.SetErrorStringWithFormat("processor trace decoding library: \"%s\"", + pt_errstr(pt_errcode(errcode))); + instruction_list.emplace_back(sberror.GetCString()); +} + +int Decoder::AppendErrorToInstructionList(int errcode, pt_insn_decoder *decoder, + Instructions _list, + lldb::SBError ) { + uint64_t decoder_offset = 0; + int errcode_off = pt_insn_get_offset(decoder, _offset); + if (errcode_off < 0) { +AppendErrorWithoutOffsetToInstructionList(errcode, instruction_list, + sberror); +return errcode_off; + } + AppendErrorWithOffsetToInstructionList(errcode, decoder_offset, + instruction_list, sberror); + return 0; +} + +int Decoder::HandlePTInstructionEvents(pt_insn_decoder *decoder, int errcode, + Instructions _list, + lldb::SBError ) { + while (errcode & pts_event_pending) { +pt_event event; +errcode = pt_insn_event(decoder, , sizeof(event)); +if (errcode < 0) + return errcode; + +// The list of events are in +// https://github.com/intel/libipt/blob/master/doc/man/pt_qry_event.3.md +if (event.type == ptev_overflow) { + int append_errcode = AppendErrorToInstructionList( + errcode, decoder, instruction_list, sberror); + if (append_errcode < 0) +return append_errcode; +} +// Other events don't signal stream errors + } + + return 0; +} + // Start actual decoding of raw trace void Decoder::DecodeTrace(struct pt_insn_decoder *decoder, Instructions _list, @@ -585,10 +640,8 @@ int errcode_off = pt_insn_get_offset(decoder, _offset); if (errcode_off < 0) { -sberror.SetErrorStringWithFormat( -"processor trace decoding library: \"%s\"", -pt_errstr(pt_errcode(errcode))); -instruction_list.emplace_back(sberror.GetCString()); +AppendErrorWithoutOffsetToInstructionList(errcode, instruction_list, + sberror); return; } @@ -619,16 +672,22 @@ // progress further. Hence, returning in this situation. return; } -sberror.SetErrorStringWithFormat( -"processor trace decoding library: \"%s\" [decoder_offset] => " -
[Lldb-commits] [PATCH] D76872: [intel-pt] Fix existing support in LLDB
clayborg added a comment. Looks fine to me, but the original author should probably approve this Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76872/new/ https://reviews.llvm.org/D76872 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits