The iregs output was missing the newline at end as well as the leading
ABI output. This made it hard to compare the iregs and uregs values.
Instead, use a single function to output the register values and use
it for both, iregs and uregs, to ensure the output is consistent.

Before:

```
perf  7049 [-01]  1343.354347:          1 cycles:ppp:
        ffffffffa7bc21ce perf_event_exec+0x18e 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7c7ead3 setup_new_exec+0xf3 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7cd7be5 load_elf_binary+0x395 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7c7e540 search_binary_handler+0x80 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7c7f1aa __do_execve_file.isra.13+0x58a 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7c7f561 do_execve+0x21 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7c7f596 __x64_sys_execve+0x26 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7a041cb do_syscall_64+0x5b 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa840008c entry_SYSCALL_64+0x7c 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
   AX:0x80000000    BX:0x0    CX:0x0    DX:0x7    SI:0xf    DI:0x286    
BP:0xffff95bc8213a460    SP:0xffffacbf0ba97d18    IP:0xffffffffa7bc21cd 
FLAGS:0x28e    CS:0x10    SS:0x18    R8:0x2    R9:0x21440   R10:0x33816fb3b8c   
R11:0x1   R12:0xffff95bc8213a460   R13:0xffff95bc8213a400   
R14:0xffff95bc8213a400   R15:0x1  ABI:2    AX:0xffffffffffffffda    
BX:0xffffffffffffffff    CX:0x7f84ad85798b    DX:0x560209699d50    
SI:0x7ffe2c7a6820    DI:0x7ffe2c7a8c9b    BP:0x7ffe2c7a20d0    
SP:0x7ffe2c7a2058    IP:0x7f84ad85798b FLAGS:0x206    CS:0x33    SS:0x2b    
R8:0x7ffe2c7a2030    R9:0x7f84ae55f010   R10:0x8   R11:0x206   
R12:0xffffffffffffffff   R13:0xffffffffffffffff   R14:0xffffffffffffffff   
R15:0xffffffffffffffff

perf  7049 [-01]  1343.354363:          1 cycles:ppp:
        ...
```

After:

```
perf  7049 [-01]  1343.354347:          1 cycles:ppp:
        ffffffffa7bc21ce perf_event_exec+0x18e 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7c7ead3 setup_new_exec+0xf3 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7cd7be5 load_elf_binary+0x395 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7c7e540 search_binary_handler+0x80 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7c7f1aa __do_execve_file.isra.13+0x58a 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7c7f561 do_execve+0x21 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7c7f596 __x64_sys_execve+0x26 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa7a041cb do_syscall_64+0x5b 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
        ffffffffa840008c entry_SYSCALL_64+0x7c 
(/lib/modules/4.20.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux)
 ABI:2    AX:0x80000000    BX:0x0    CX:0x0    DX:0x7    SI:0xf    DI:0x286    
BP:0xffff95bc8213a460    SP:0xffffacbf0ba97d18    IP:0xffffffffa7bc21cd 
FLAGS:0x28e    CS:0x10    SS:0x18    R8:0x2    R9:0x21440   R10:0x33816fb3b8c   
R11:0x1   R12:0xffff95bc8213a460   R13:0xffff95bc8213a400   
R14:0xffff95bc8213a400   R15:0x1
 ABI:2    AX:0xffffffffffffffda    BX:0xffffffffffffffff    CX:0x7f84ad85798b   
 DX:0x560209699d50    SI:0x7ffe2c7a6820    DI:0x7ffe2c7a8c9b    
BP:0x7ffe2c7a20d0    SP:0x7ffe2c7a2058    IP:0x7f84ad85798b FLAGS:0x206    
CS:0x33    SS:0x2b    R8:0x7ffe2c7a2030    R9:0x7f84ae55f010   R10:0x8   
R11:0x206   R12:0xffffffffffffffff   R13:0xffffffffffffffff   
R14:0xffffffffffffffff   R15:0xffffffffffffffff

perf  7049 [-01]  1343.354363:          1 cycles:ppp:
        ...
```

Signed-off-by: Milian Wolff <milian.wo...@kdab.com>
Cc: Arnaldo Carvalho de Melo <a...@kernel.org>
---
 tools/perf/builtin-script.c | 40 ++++++++++++++++---------------------
 1 file changed, 17 insertions(+), 23 deletions(-)

diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index daf73832743e..04913136bac9 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -566,30 +566,10 @@ static int perf_session__check_output_opt(struct 
perf_session *session)
        return 0;
 }
 
-static int perf_sample__fprintf_iregs(struct perf_sample *sample,
-                                     struct perf_event_attr *attr, FILE *fp)
-{
-       struct regs_dump *regs = &sample->intr_regs;
-       uint64_t mask = attr->sample_regs_intr;
-       unsigned i = 0, r;
-       int printed = 0;
-
-       if (!regs)
-               return 0;
-
-       for_each_set_bit(r, (unsigned long *) &mask, sizeof(mask) * 8) {
-               u64 val = regs->regs[i++];
-               printed += fprintf(fp, "%5s:0x%"PRIx64" ", perf_reg_name(r), 
val);
-       }
-
-       return printed;
-}
-
-static int perf_sample__fprintf_uregs(struct perf_sample *sample,
-                                     struct perf_event_attr *attr, FILE *fp)
+static int perf_sample__fprintf_regs(struct regs_dump *regs, uint64_t mask,
+                                    FILE *fp
+)
 {
-       struct regs_dump *regs = &sample->user_regs;
-       uint64_t mask = attr->sample_regs_user;
        unsigned i = 0, r;
        int printed = 0;
 
@@ -608,6 +588,20 @@ static int perf_sample__fprintf_uregs(struct perf_sample 
*sample,
        return printed;
 }
 
+static int perf_sample__fprintf_iregs(struct perf_sample *sample,
+                                     struct perf_event_attr *attr, FILE *fp)
+{
+       return perf_sample__fprintf_regs(&sample->intr_regs,
+                                        attr->sample_regs_intr, fp);
+}
+
+static int perf_sample__fprintf_uregs(struct perf_sample *sample,
+                                     struct perf_event_attr *attr, FILE *fp)
+{
+       return perf_sample__fprintf_regs(&sample->user_regs,
+                                        attr->sample_regs_user, fp);
+}
+
 static int perf_sample__fprintf_start(struct perf_sample *sample,
                                      struct thread *thread,
                                      struct perf_evsel *evsel,
-- 
2.19.1

Reply via email to