Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp1599824pxk; Fri, 2 Oct 2020 13:56:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwCQe6U3Yjp5GfOBg5MNlElZnIrdnZcFwtxEs0YXGYNt9ZforuKEkH9YDsiZDXtOYYFx1sB X-Received: by 2002:a50:f0c1:: with SMTP id a1mr4619085edm.5.1601672218054; Fri, 02 Oct 2020 13:56:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601672218; cv=none; d=google.com; s=arc-20160816; b=vyyEOvvUQvSwpreoCIMtMbj/ijz9bvYYhSJobF7PeZOxQ+ZKqWkJYZaQQL3uqB0uOH jPTAS8J1CJBqw4u9lDKECw1kdug0NET70oxSfZqDKL12Sj9HbBSqDGtg1nuGHQKelMwx QN/onstbNt+UfXolXKijmRnTzJiZY+5o3bky3GFEif4zIvQ6PtGQ5Z6u8LFqC2vGm270 ycbctPo2TsgPWm7fmVqrhsg3DdutqlaQD6+wgRaYsSmcpgTssAacjJ9OXAQjWvkalh8f jHE0LPekxpbWg+DLIsk4yoRUx024itYWNggbfEC6pxucW4k6LUhcSFbfbJTEQyQo2zEE M02g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=wK7ZJWQqfUDyX3QmJPCxfHf/1EyEfa+B6qZMHs4wrzI=; b=ZlF7noNmE0arGGbfsLY5B962a1SwoiTwjeCgEIT8XyURnw6r0RnFUu52wvY7/5Vve9 J7YbX4E6hs1RdIpFQxTZRC07he6PhgCYiv8oNJXUmaBFkhitAh1PCxKGn/G/VQdgi08K Tr5hQtreqxitFaoTcKb7aw1pG5n+H/zNDqVHBlKkUDyB9lEngSvagKn1NyrELVmCqTWU ntS20WieZkaRXBlvyOJIL99jUvz3bwtOrQXRePFOi+jKkdwtzIfQcWahU1HZDJQ+jp2b h8/N3NeIFihPxjhBBpcVtyl+mb2uSCswHAoUBERt2OnETi8sZE99feNVDqY/0gVBhF74 q8gQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=VOkV36ai; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bx24si1956662ejb.449.2020.10.02.13.56.35; Fri, 02 Oct 2020 13:56:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=VOkV36ai; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725616AbgJBUzb (ORCPT + 99 others); Fri, 2 Oct 2020 16:55:31 -0400 Received: from mail.kernel.org ([198.145.29.99]:43498 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725283AbgJBUzb (ORCPT ); Fri, 2 Oct 2020 16:55:31 -0400 Received: from quaco.ghostprotocols.net (unknown [179.97.37.151]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 0A1242065D; Fri, 2 Oct 2020 20:55:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1601672130; bh=vn2dtzloDflamPSOR08Sc0E+h1XUXfZWBcTlMtsslCU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=VOkV36aitWp9zX/k/mj9ecGsl4PqTirYwgJz8IS3L99FpkIXJxlih8A3LNu169t5Y +WCOjWviLyoXgvNItcdjeh2ZJEbbprKz51IRu/0PIuIpdW8p3Ep+ZZvr4FAR3MIrmX H79xlsvGDRi+ybsEU/vM+J1YjPXlnETiGaarPr2M= Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id 68219403AC; Fri, 2 Oct 2020 17:55:27 -0300 (-03) Date: Fri, 2 Oct 2020 17:55:27 -0300 From: Arnaldo Carvalho de Melo To: Ian Rogers Cc: Namhyung Kim , Jiri Olsa , Jiri Olsa , lkml , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Michael Petlan , Stephane Eranian Subject: Re: [PATCHv2 1/9] perf tools: Add build id shell test Message-ID: <20201002205527.GA7581@kernel.org> References: <20200930171512.3986425-1-jolsa@kernel.org> <20200930171512.3986425-2-jolsa@kernel.org> <20201001190530.GD3999500@krava> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Url: http://acmel.wordpress.com Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Fri, Oct 02, 2020 at 10:34:51AM -0700, Ian Rogers escreveu: > On Fri, Oct 2, 2020 at 6:07 AM Namhyung Kim wrote: > > > > Hi Jiri, > > > > On Fri, Oct 2, 2020 at 4:05 AM Jiri Olsa wrote: > > > > > > Adding test for build id cache that adds binary > > > with sha1 and md5 build ids and verifies it's > > > added properly. > > > > > > The test updates build id cache with perf record > > > and perf buildid-cache -a. > > > > > > Signed-off-by: Jiri Olsa > > > --- > > > v2 changes: > > > - detect perf build directory when checking for build-ex* binaries > > > > > > tools/perf/Makefile.perf | 14 +++++ > > > tools/perf/tests/shell/buildid.sh | 101 ++++++++++++++++++++++++++++++ > > > 2 files changed, 115 insertions(+) > > > create mode 100755 tools/perf/tests/shell/buildid.sh > > > > > > diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf > > > index 920d8afb9238..b2aeefa64e92 100644 > > > --- a/tools/perf/Makefile.perf > > > +++ b/tools/perf/Makefile.perf > > > @@ -126,6 +126,8 @@ include ../scripts/utilities.mak > > > # > > > # Define NO_LIBDEBUGINFOD if you do not want support debuginfod > > > # > > > +# Define NO_BUILDID_EX if you do not want buildid-ex-* binaries > > > +# > > > > > > # As per kernel Makefile, avoid funny character set dependencies > > > unexport LC_ALL > > > @@ -349,6 +351,11 @@ ifndef NO_PERF_READ_VDSOX32 > > > PROGRAMS += $(OUTPUT)perf-read-vdsox32 > > > endif > > > > > > +ifndef NO_BUILDID_EX > > > +PROGRAMS += $(OUTPUT)buildid-ex-sha1 > > > +PROGRAMS += $(OUTPUT)buildid-ex-md5 > > > +endif > > > + > > > LIBJVMTI = libperf-jvmti.so > > > > > > ifndef NO_JVMTI > > > @@ -756,6 +763,13 @@ $(OUTPUT)perf-read-vdsox32: perf-read-vdso.c util/find-map.c > > > $(QUIET_CC)$(CC) -mx32 $(filter -static,$(LDFLAGS)) -Wall -Werror -o $@ perf-read-vdso.c > > > endif > > > > > > +ifndef NO_BUILDID_EX > > > +$(OUTPUT)buildid-ex-sha1: > > > + $(QUIET_LINK)echo 'int main(void) { return 0; }' | $(CC) -Wl,--build-id=sha1 -o $@ -x c - > > > +$(OUTPUT)buildid-ex-md5: > > > + $(QUIET_LINK)echo 'int main(void) { return 0; }' | $(CC) -Wl,--build-id=md5 -o $@ -x c - > > > +endif > > > > Can we just build them in the test shell script instead? > > > > Thanks > > Namhyung > > That'd mean perf test having a dependency on a compiler :-/ That said > there are some existing dependencies for BPF compilers. If doing it in the test shell script ends up being advantageous, we could skip the test if a suitable compiler isn't available. - Arnaldo > Thanks, > Ian > > > > > > + > > > ifndef NO_JVMTI > > > LIBJVMTI_IN := $(OUTPUT)jvmti/jvmti-in.o > > > > > > diff --git a/tools/perf/tests/shell/buildid.sh b/tools/perf/tests/shell/buildid.sh > > > new file mode 100755 > > > index 000000000000..dd9f9c306c34 > > > --- /dev/null > > > +++ b/tools/perf/tests/shell/buildid.sh > > > @@ -0,0 +1,101 @@ > > > +#!/bin/sh > > > +# build id cache operations > > > +# SPDX-License-Identifier: GPL-2.0 > > > + > > > +ex_md5=buildid-ex-md5 > > > +ex_sha1=buildid-ex-sha1 > > > + > > > +# skip if there are no test binaries > > > +if [ ! -x buildid-ex-sha1 -a ! -x buildid-ex-md5 ]; then > > > + ex_dir=$(dirname `which perf`) > > > + ex_md5=${ex_dir}/buildid-ex-md5 > > > + ex_sha1=${ex_dir}/buildid-ex-sha1 > > > + > > > + if [ ! -x ${ex_sha1} -a ! -x ${ex_md5} ]; then > > > + echo "failed: no test binaries" > > > + exit 2 > > > + fi > > > +fi > > > + > > > +echo "test binaries: ${ex_sha1} ${ex_md5}" > > > + > > > +# skip if there's no readelf > > > +if [ ! -x `which readelf` ]; then > > > + echo "failed: no readelf, install binutils" > > > + exit 2 > > > +fi > > > + > > > +check() > > > +{ > > > + id=`readelf -n $1 2>/dev/null | grep 'Build ID' | awk '{print $3}'` > > > + > > > + echo "build id: ${id}" > > > + > > > + link=${build_id_dir}/.build-id/${id:0:2}/${id:2} > > > + echo "link: ${link}" > > > + > > > + if [ ! -h $link ]; then > > > + echo "failed: link ${link} does not exist" > > > + exit 1 > > > + fi > > > + > > > + file=${build_id_dir}/.build-id/${id:0:2}/`readlink ${link}`/elf > > > + echo "file: ${file}" > > > + > > > + if [ ! -x $file ]; then > > > + echo "failed: file ${file} does not exist" > > > + exit 1 > > > + fi > > > + > > > + diff ${file} ${1} > > > + if [ $? -ne 0 ]; then > > > + echo "failed: ${file} do not match" > > > + exit 1 > > > + fi > > > + > > > + echo "OK for ${1}" > > > +} > > > + > > > +test_add() > > > +{ > > > + build_id_dir=$(mktemp -d /tmp/perf.debug.XXX) > > > + perf="perf --buildid-dir ${build_id_dir}" > > > + > > > + ${perf} buildid-cache -v -a ${1} > > > + if [ $? -ne 0 ]; then > > > + echo "failed: add ${1} to build id cache" > > > + exit 1 > > > + fi > > > + > > > + check ${1} > > > + > > > + rm -rf ${build_id_dir} > > > +} > > > + > > > +test_record() > > > +{ > > > + data=$(mktemp /tmp/perf.data.XXX) > > > + build_id_dir=$(mktemp -d /tmp/perf.debug.XXX) > > > + perf="perf --buildid-dir ${build_id_dir}" > > > + > > > + ${perf} record --buildid-all -o ${data} ${1} > > > + if [ $? -ne 0 ]; then > > > + echo "failed: record ${1}" > > > + exit 1 > > > + fi > > > + > > > + check ${1} > > > + > > > + rm -rf ${build_id_dir} > > > + rm -rf ${data} > > > +} > > > + > > > +# add binaries manual via perf buildid-cache -a > > > +test_add ${ex_sha1} > > > +test_add ${ex_md5} > > > + > > > +# add binaries via perf record post processing > > > +test_record ${ex_sha1} > > > +test_record ${ex_md5} > > > + > > > +exit ${err} > > > -- > > > 2.26.2 > > > -- - Arnaldo