1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
device: 0.708
files: 0.698
socket: 0.491
network: 0.428
PID: 0.419
performance: 0.326
graphic: 0.238
boot: 0.231
vnc: 0.228
semantic: 0.185
debug: 0.122
permissions: 0.119
KVM: 0.109
other: 0.106
trace: dynamic width format syntax not validated
The dtrace via stap backend cannot support the dynamic '*' width format.
Eric noted in https://lists.gnu.org/archive/html/qemu-devel/2019-09/msg04720.html:
https://sourceware.org/systemtap/langref.pdf
section 9.2 printf, states:
"The printf formatting directives are similar to those of C, except that
they are fully checked for type by the translator."
and does NOT list handling for '*' under precision or width.
Some trace events have been merged without checking this:
$ git ls-files|fgrep trace-event|xargs git grep '*\("\|x\)'
hw/block/trace-events:11:pflash_io_read(uint64_t offset, int width, int fmt_width, uint32_t value, uint8_t cmd, uint8_t wcycle) "offset:0x%04"PRIx64" width:%d value:0x%0*x cmd:0x%02x wcycle:%u"
hw/block/trace-events:12:pflash_io_write(uint64_t offset, int width, int fmt_width, uint32_t value, uint8_t wcycle) "offset:0x%04"PRIx64" width:%d value:0x%0*x wcycle:%u"
hw/block/trace-events:13:pflash_data_read(uint64_t offset, int width, uint32_t value) "data offset:0x%04"PRIx64" value:0x%0*x"
hw/block/trace-events:14:pflash_data_write(uint64_t offset, int width, uint32_t value, uint64_t counter) "data offset:0x%04"PRIx64" value:0x%0*x counter:0x%016"PRIx64
hw/mips/trace-events:2:gt64120_read(const char *regname, int width, uint64_t value) "gt64120 read %s value:0x%0*" PRIx64
hw/mips/trace-events:3:gt64120_write(const char *regname, int width, uint64_t value) "gt64120 write %s value:0x%0*" PRIx64
Fixed in v4.2.0 (commits abc7cf3655 & 10f9f1fbed).
|