[Lldb-commits] [PATCH] D105531: [trace][intel pt] Implement the Intel PT cursor

Greg Clayton via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Jul 8 13:51:49 PDT 2021


clayborg requested changes to this revision.
clayborg added inline comments.
This revision now requires changes to proceed.


================
Comment at: lldb/source/Commands/CommandObjectThread.cpp:2111
   bool m_create_repeat_command_just_invoked;
-  size_t m_consecutive_repetitions = 0;
+  std::map<const Thread *, std::unique_ptr<TraceInstructionDumper>> m_dumpers;
 };
----------------
"Thread *" isn't a stable thing to use, I would suggest using the "tid" of the thread. Any reason you are making a map of thread to unique pointers? Can't this just be:
```
std::map<lldb::tid_t, TraceInstructionDumper> m_dumpers;
```


================
Comment at: lldb/source/Plugins/Trace/intel-pt/DecodedThread.cpp:41
+lldb::addr_t IntelPTInstruction::GetLoadAddress() const {
+  return IsError() ? LLDB_INVALID_ADDRESS : m_pt_insn.ip;
 }
----------------
Shouldn't the m_pt_insn.ip be set to LLDB_INVALID_ADDRESS already?


================
Comment at: lldb/source/Target/TraceInstructionDumper.cpp:1
+//===-- TraceCursor.cpp ---------------------------------------------------===//
+//
----------------
Filename should be TraceInstructionDumper.cpp


================
Comment at: lldb/source/Target/TraceInstructionDumper.cpp:22
+TraceInstructionDumper::TraceInstructionDumper(lldb::TraceCursorUP &&cursor_up,
+                                               bool forwards, size_t skip,
+                                               bool raw)
----------------
Seems like the "forwards" and "skip" parameter shouldn't be in this class at all? Just setup the cursor before giving it to this class?


================
Comment at: lldb/source/Target/TraceInstructionDumper.cpp:25-30
+  if (forwards)
+    m_cursor_up->SeekToBegin();
+  else
+    m_cursor_up->SeekToEnd();
+
+  Skip(skip);
----------------
Remove and have user set this up prior to creating one of these classes?


================
Comment at: lldb/source/Target/TraceInstructionDumper.cpp:35
+  if (m_forwards) {
+    if (!m_cursor_up->Next()) {
+      m_no_more_data = true;
----------------
Should we modify the TraceCursor API for Next(...) to be able to take a count? Seems like that might be much more efficient than recursively calling this function?


================
Comment at: lldb/source/Target/TraceInstructionDumper.cpp:41
+  } else {
+    if (!m_cursor_up->Prev()) {
+      m_no_more_data = true;
----------------
Ditto, should Prev(...) be able to take a count as well?


================
Comment at: lldb/source/Target/TraceInstructionDumper.cpp:156-159
+                            /*show_fullpath*/ false,
+                            /*show_module*/ true, /*show_inlined_frames*/ false,
+                            /*show_function_arguments*/ true,
+                            /*show_function_name*/ true);
----------------
to match llvm coding guidelines, add '=' after variable name


================
Comment at: lldb/source/Target/TraceInstructionDumper.cpp:167-171
+  insn.instruction->Dump(&s, /*show_address*/ false, /*show_bytes*/ false,
+                         /*max_opcode_byte_size*/ 0, &insn.exe_ctx, &insn.sc,
+                         /*prev_sym_ctx*/ nullptr,
+                         /*disassembly_addr_format*/ nullptr,
+                         /*max_address_text_size*/ 0);
----------------
Ditto about adding '=', same as above comment.


================
Comment at: lldb/source/Target/TraceInstructionDumper.cpp:291
+    s.Printf("\n");
+    TryMoveOneInstruction();
+  }
----------------
You should be watching the return value of this right? What if this returns false?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D105531/new/

https://reviews.llvm.org/D105531



More information about the lldb-commits mailing list