Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp149188imu; Wed, 7 Nov 2018 14:35:19 -0800 (PST) X-Google-Smtp-Source: AJdET5cSwcB+h3L/XdtH4e8LJchFeiYpxC16vHklLIVgK0lRUbWDJ4j5xIpUTaQojE499jnSy3ZQ X-Received: by 2002:a17:902:6948:: with SMTP id k8-v6mr2171310plt.22.1541630119712; Wed, 07 Nov 2018 14:35:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541630119; cv=none; d=google.com; s=arc-20160816; b=yRqB0L9xYeXaYWQHzUin97xrMAz+RZdNosmz8s+8IB8lutE8jcn2X2ZjDSKhcP5e8j YdzkYK2c+ZI3FBfx3h174Ul5TuyWLDyxh+KizJMsBMlqHVR7Bd2IGA2nFJ6HlF2DRPfK Z0eCu5ieltI6iO1tVbDUqVRjfSJpWhw/mib8jkOLhe90d2bheys3c9V9okZkUV1h7Q4V zHbZ++zy2kKZPU5k6jW7Gd2iirFiyIeQb6314npLCeo9GkvBfR46/NBzsCTj7iBC56SW pXe/rVR5wTSKhZgb9b8BSP/Ie9s+3BXjeiQzRjxSA893Yl8IIaGhLZ3HryfuwoLme6I8 /e/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=+St47CVkLCy3scR3OzbCKXkW7eVgZD8rF5Dw+IFH6xM=; b=JFIWQGDwN2g8zTFZuF7j/9jeoSetOytp4qtrNWARqXBYLEzNK9eocPJK2O4qDZ0MpW f7RBiUEhGGRPD0K0gJ8BMqV6sh1jTB/+TZdrFj6aPwFaOilaiRnp2af5OWjtPf8Qpaa2 cM/zGfQj6PMtq8I4epteVAf+9+W7mY67FZUm+IfCkQTYR2F+Lx8qrZ/XOjpUqIQ9qlRT Dx7P3o8kf3QarchzAjx1kFahEFxvWy8MPSaGbAk2kxlCO7L9tHOdv7OzDrgDlhgD06w+ OG03r5yPDe3+1pidjBLWgo1wb3GL6uJd6MWkMoLx8qOqUUtMybZpBQrEAIPoV3H9K/e9 khhg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kdab.com header.s=dkim header.b="si/v+yPn"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=kdab.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q61-v6si1870950plb.418.2018.11.07.14.35.04; Wed, 07 Nov 2018 14:35:19 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kdab.com header.s=dkim header.b="si/v+yPn"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=kdab.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728234AbeKHIHM (ORCPT + 99 others); Thu, 8 Nov 2018 03:07:12 -0500 Received: from mail.kdab.com ([176.9.126.58]:60632 "EHLO mail.kdab.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727591AbeKHIHL (ORCPT ); Thu, 8 Nov 2018 03:07:11 -0500 Authentication-Results: mail.kdab.com (amavisd-new); dkim=pass (1024-bit key) reason="pass (just generated, assumed good)" header.d=kdab.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kdab.com; h= content-transfer-encoding:mime-version:message-id:date:date :subject:subject:from:from; s=dkim; t=1541630080; x=1542494081; bh=+St47CVkLCy3scR3OzbCKXkW7eVgZD8rF5Dw+IFH6xM=; b=si/v+yPnTqb/ CdetbkLo3UcvWNRqxOlI8hw07GD3w53S4MnuJlCuwpXHwBa0vQPeLUyxyzI2cXY9 w6ZIVphcvU5/4kB+MFJFmW3K34OkLxNuZmbsPDUynxOZaagfrRnIwdQljYI5a0we xumhZA1e+8ZAVXr7rd//ltIhVCMZho0= X-Virus-Scanned: amavisd-new at kdab.com From: Milian Wolff To: acme@kernel.org, jolsa@kernel.org Cc: Linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Milian Wolff Subject: [PATCH] perf script: share code and output format for uregs and iregs output Date: Wed, 7 Nov 2018 23:34:37 +0100 Message-Id: <20181107223437.9071-1-milian.wolff@kdab.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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-rc1pe= rf-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-rc1pe= rf-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.2= 0.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux) ffffffffa7c7f561 do_execve+0x21 (/lib/modules/4.20.0-rc1perf-deve= l-05115-gc0bc98f76e39-dirty/build/vmlinux) ffffffffa7c7f596 __x64_sys_execve+0x26 (/lib/modules/4.20.0-rc1pe= rf-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-rc1pe= rf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux) AX:0x80000000 BX:0x0 CX:0x0 DX:0x7 SI:0xf DI:0x286 B= P:0xffff95bc8213a460 SP:0xffffacbf0ba97d18 IP:0xffffffffa7bc21cd FL= AGS:0x28e CS:0x10 SS:0x18 R8:0x2 R9:0x21440 R10:0x33816fb3b= 8c R11:0x1 R12:0xffff95bc8213a460 R13:0xffff95bc8213a400 R14:0xff= ff95bc8213a400 R15:0x1 ABI:2 AX:0xffffffffffffffda BX:0xffffffff= ffffffff CX:0x7f84ad85798b DX:0x560209699d50 SI:0x7ffe2c7a6820 = DI:0x7ffe2c7a8c9b BP:0x7ffe2c7a20d0 SP:0x7ffe2c7a2058 IP:0x7f8= 4ad85798b FLAGS:0x206 CS:0x33 SS:0x2b R8:0x7ffe2c7a2030 R9:0x= 7f84ae55f010 R10:0x8 R11:0x206 R12:0xffffffffffffffff R13:0xfffff= fffffffffff 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-rc1pe= rf-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-rc1pe= rf-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.2= 0.0-rc1perf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux) ffffffffa7c7f561 do_execve+0x21 (/lib/modules/4.20.0-rc1perf-deve= l-05115-gc0bc98f76e39-dirty/build/vmlinux) ffffffffa7c7f596 __x64_sys_execve+0x26 (/lib/modules/4.20.0-rc1pe= rf-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-rc1pe= rf-devel-05115-gc0bc98f76e39-dirty/build/vmlinux) ABI:2 AX:0x80000000 BX:0x0 CX:0x0 DX:0x7 SI:0xf DI:0x2= 86 BP:0xffff95bc8213a460 SP:0xffffacbf0ba97d18 IP:0xffffffffa7bc= 21cd FLAGS:0x28e CS:0x10 SS:0x18 R8:0x2 R9:0x21440 R10:0x33= 816fb3b8c R11:0x1 R12:0xffff95bc8213a460 R13:0xffff95bc8213a400 R= 14:0xffff95bc8213a400 R15:0x1 ABI:2 AX:0xffffffffffffffda BX:0xffffffffffffffff CX:0x7f84ad85= 798b 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:0xfffff= fffffffffff R15:0xffffffffffffffff perf 7049 [-01] 1343.354363: 1 cycles:ppp: ... ``` Signed-off-by: Milian Wolff Cc: Arnaldo Carvalho de Melo --- 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 pe= rf_session *session) return 0; } =20 -static int perf_sample__fprintf_iregs(struct perf_sample *sample, - struct perf_event_attr *attr, FILE *fp) -{ - struct regs_dump *regs =3D &sample->intr_regs; - uint64_t mask =3D attr->sample_regs_intr; - unsigned i =3D 0, r; - int printed =3D 0; - - if (!regs) - return 0; - - for_each_set_bit(r, (unsigned long *) &mask, sizeof(mask) * 8) { - u64 val =3D regs->regs[i++]; - printed +=3D 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 ma= sk, + FILE *fp +) { - struct regs_dump *regs =3D &sample->user_regs; - uint64_t mask =3D attr->sample_regs_user; unsigned i =3D 0, r; int printed =3D 0; =20 @@ -608,6 +588,20 @@ static int perf_sample__fprintf_uregs(struct perf_sa= mple *sample, return printed; } =20 +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, --=20 2.19.1