mirror of
https://github.com/intel/llvm.git
synced 2026-01-30 14:07:28 +08:00
[trace] Add a flag to the decoder to output the instruction type
To build complex binding upon instruction trace, additional metadata 'instruction type' is needed. This diff has followings: - Add a flag -k / --kind for instruction dump - Remove SetGranularity and SetIgnoreErros from Trace cursor Sample output: ``` (lldb) thread trace dump instruction -k thread #1: tid = 3198805 libc.so.6`_IO_puts + 356 2107: 0x00007ffff7163594 ( return) retq 2106: 0x00007ffff7163592 ( other) popq %r13 2105: 0x00007ffff7163590 ( other) popq %r12 2104: 0x00007ffff716358f ( other) popq %rbp 2103: 0x00007ffff716358e ( other) popq %rbx 2102: 0x00007ffff716358c ( other) movl %ebx, %eax 2101: 0x00007ffff7163588 ( other) addq $0x8, %rsp 2100: 0x00007ffff7163570 ( cond jump) je 0x89588 ; <+344> 2099: 0x00007ffff716356e ( other) decl (%rdx) 2098: 0x00007ffff7163565 ( cond jump) je 0x8956e ; <+318> 2097: 0x00007ffff716355e ( other) cmpl $0x0, 0x33c02b(%rip) ; __libc_multiple_threads 2096: 0x00007ffff7163556 ( other) movq $0x0, 0x8(%rdx) 2095: 0x00007ffff7163554 ( cond jump) jne 0x89588 ; <+344> 2094: 0x00007ffff7163550 ( other) subl $0x1, 0x4(%rdx) 2093: 0x00007ffff7163549 ( other) movq 0x88(%rbp), %rdx 2092: 0x00007ffff7163547 ( cond jump) jne 0x89588 ; <+344> 2091: 0x00007ffff7163540 ( other) testl $0x8000, (%rbp) ; imm = 0x8000 2090: 0x00007ffff716353c ( other) cmovaq %rax, %rbx 2089: 0x00007ffff7163535 ( other) cmpq $0x7fffffff, %rbx ; imm = 0x7FFFFFFF 2088: 0x00007ffff7163530 ( other) movl $0x7fffffff, %eax ; imm = 0x7FFFFFFF ``` Reviewed By: wallace Differential Revision: https://reviews.llvm.org/D128477
This commit is contained in:
@@ -241,7 +241,8 @@ bool SBInstruction::GetDescription(lldb::SBStream &s) {
|
||||
// didn't have a stream already created, one will get created...
|
||||
FormatEntity::Entry format;
|
||||
FormatEntity::Parse("${addr}: ", format);
|
||||
inst_sp->Dump(&s.ref(), 0, true, false, nullptr, &sc, nullptr, &format, 0);
|
||||
inst_sp->Dump(&s.ref(), 0, true, false, /*show_control_flow_kind=*/false,
|
||||
nullptr, &sc, nullptr, &format, 0);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -275,8 +276,8 @@ void SBInstruction::Print(FileSP out_sp) {
|
||||
StreamFile out_stream(out_sp);
|
||||
FormatEntity::Entry format;
|
||||
FormatEntity::Parse("${addr}: ", format);
|
||||
inst_sp->Dump(&out_stream, 0, true, false, nullptr, &sc, nullptr, &format,
|
||||
0);
|
||||
inst_sp->Dump(&out_stream, 0, true, false, /*show_control_flow_kind=*/false,
|
||||
nullptr, &sc, nullptr, &format, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user