On 11/07/2023 10:26, Pandey, Radhey Shyam wrote:
Hi all,
I am trying off Target Trace Decoding using arm-cs-trace-disasm.py but it doesn’t show
proper disassembly. There is unexpected warning "could not read first record".
Any pointers on what the issue could be?
Meanwhile I am trying to do trace decoding on aarch64 target and see if that helps.
I have taken simple example mentioned in [1].
[1]: http://events17.linuxfoundation.org/sites/events/files/slides/ELC-E16.pdf http://events17.linuxfoundation.org/sites/events/files/slides/ELC-E16.pdf
#include int coresight_test1(int val);
int main(void) {
int val; val = coresight_test1(10);
printf("val: %d\n", val);
return 0;
}
perf record -e cs_etm/@tmc_etf0/u --filter 'filter0x5a8/0x5e4@/home/root/libcstest.so.1.0' --per-thread ./main
tar czf cs_example.tgz perf.data ~/.debug
Off Target Trace Decoding: “perf report”
tar xf cs_example.tgz
$ rm -rf ~/.debug // remove previous trace data
$ cp -dpR .debug ~/ // copy the current trace data
$ perf report --stdio
linux-xlnx/tools/perf/perf --exec-path= <snip>/linux-xlnx/tools/perf script tools/perf/scripts/python/arm-cs-trace-disasm.py -- -d ${XTOOL_PATH}/aarch64-linux-gnu-objdump -v
I believe the perf script doesn't work with coresight trace decoding as we need a two pass approach for decoding the stream for figuring out the parameters for the queues. James Clark can give you the exact reason.
Suzuki
ARM CoreSight Trace Data Assembler Dump
addr2line /home/root/libcstest.so.1.0: could not read first record
main 748/748 [0000] 0.000000000 ffffad8c05d8 /home/root/libcstest.so.1.0
addr2line /home/root/libcstest.so.1.0: could not send request
main 748/748 [0000] 0.000000000 ffffad8c05d8
addr2line /home/root/libcstest.so.1.0: could not send request
main 748/748 [0000] 0.000000000 ffffad8c05d8
addr2line /home/root/libcstest.so.1.0: could not send request
main 748/748 [0000] 0.000000000 ffffad8c05d8
addr2line /home/root/libcstest.so.1.0: could not send request
main 748/748 [0000] 0.000000000 ffffad8c05d8
addr2line /home/root/libcstest.so.1.0: could not send request
main 748/748 [0000] 0.000000000 ffffad8c05e4
End
tools/perf/perf report -D
<snip>
0x680 [0x30]: PERF_RECORD_AUXTRACE size: 0x90 offset: 0 ref: 0x2890bdbd7cad6b6f idx: 0 tid: 748 cpu: -1
. ... CoreSight ETMV4I Trace data: size 0x20 bytes
Idx:0; ID:10; I_ASYNC : Alignment Synchronisation.
Idx:12; ID:10; I_TRACE_INFO : Trace Info.; INFO=0x0 { CC.0 }
. ... CoreSight ETMV4I Trace data: size 0x20 bytes
Idx:32; ID:10; I_ASYNC : Alignment Synchronisation.
Idx:44; ID:10; I_TRACE_INFO : Trace Info.; INFO=0x0 { CC.0 }
. ... CoreSight ETMV4I Trace data: size 0x50 bytes
Idx:64; ID:10; I_ASYNC : Alignment Synchronisation.
Idx:76; ID:10; I_TRACE_INFO : Trace Info.; INFO=0x0 { CC.0 }
Idx:81; ID:10; I_TRACE_ON : Trace On.
Idx:82; ID:10; I_ADDR_CTXT_L_64IS0 : Address & Context, Long, 64 bit, IS0.; Addr=0x0000FFFFAD8C05A8; Ctxt: AArch64,EL0, NS;
Idx:92; ID:10; I_ATOM_F6 : Atom format 6.; EEEEEEN
Idx:93; ID:10; I_ATOM_F1 : Atom format 1.; E
Idx:94; ID:10; I_ADDR_L_64IS0 : Address, Long, 64 bit, IS0.; Addr=0x0000AAAAAC9107E8;
Idx:104; ID:10; I_TRACE_ON : Trace On.
Idx:105; ID:10; I_ADDR_CTXT_L_64IS0 : Address & Context, Long, 64 bit, IS0.; Addr=0x0000FFFFAD8C05E8; Ctxt: AArch64,EL0, NS;
Idx:116; ID:10; I_ATOM_F1 : Atom format 1.; E
Idx:117; ID:10; I_ADDR_L_64IS0 : Address, Long, 64 bit, IS0.; Addr=0x0000FFFFAD8EB4E4;
0x740@perf.data mailto:0x740@perf.data [0x8]: event: 68
.
. ... raw event: size 8 bytes
. 0000: 44 00 00 00 00 00 08 00 D.......
0x740 [0x8]: PERF_RECORD_FINISHED_ROUND
Aggregated stats: (excludes AUX area (e.g. instruction trace) decoded / synthesized events)
Thanks,
Radhey