From nobody Tue Dec 2 01:36:23 2025 Received: from mail-pg1-f201.google.com (mail-pg1-f201.google.com [209.85.215.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C966C2FC03E for ; Sat, 22 Nov 2025 08:20:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763799606; cv=none; b=OYlL9izmE5QpmdvC4GEMZmwENs7wfWNNSS7S/U+P1MI+rgBYQpcaDqXivBXLcSp3Byhdq6sSg1tTOB5JE6/qHHyeWQyacWrwQV5dlOJGMC6r1ug2QiaqNmDZOwKFb7nFlomeBhzP6/0lud4ekxvacQiRxWUXz3t+vdsKoEaO6Y4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763799606; c=relaxed/simple; bh=fmBkDqhx1PttP/dB41nn3oTLi+QWzIEgzUqcslYwQqk=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=EfWqN4kuyc9XRr6U2Rz+Ows/9b9DRJh9Zer0Pko7ZP4aWMIHo3wpglG10vQ7/9sTx4SrTXo/HAUmRmyS+gojxjejyY1bAfd19PnXCt2TAepDzXOPKIl3Soz7dN8Z20/Xgggo+LMU4VAeS02oPOdDi6p42uWp1Gut/oM9TurJsBA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=Nk8F0XFl; arc=none smtp.client-ip=209.85.215.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Nk8F0XFl" Received: by mail-pg1-f201.google.com with SMTP id 41be03b00d2f7-bc4e9808b63so2220634a12.1 for ; Sat, 22 Nov 2025 00:20:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1763799604; x=1764404404; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=qagIg4uAZrdvXdo5hL885MqntgeUFGla68aYQTHhYq0=; b=Nk8F0XFlEbBgMTTIjOP//Ho/leXPGOeKhu2cZjsrKTqyDHTHqfJDelRSnKjHLvZaZS rtnnmXxc2rTQDse4jT9ul+Ig8r2VS8FCC0jeNvwBMK1MNz1CQ5WuGozNQEbRigOmqvbD s1dRJvTvijm/yuxlEng9jSSyU7EkeQMrVgXZU1qtR4ArxF4aHL/sUJILJKHKvp07sc+t FW5adExOqWYp0FLXOsHQsS1BstRsgn3aJYWPAwmz1iGp5EuwPxpwKkLrBzyW2RLDVMgM CIf0kuRLyGd93nu9IsluIxJmwzB6lFjF2p/HDZf1WFmFU0/MnNH7PKMrEIFYeIRd1x96 S6rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763799604; x=1764404404; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=qagIg4uAZrdvXdo5hL885MqntgeUFGla68aYQTHhYq0=; b=BWp3EFUN7fzOHJbNqmgRKRcQGA1Mea/BO/S8Tu7nAiysSboYVHtldQxMYagyDGkbHE facQzdG8emZy0giSsg/8+3mmWCVP6KvYUb/0f5WkG0iW+ynJ8oWbUl8MVhIpI1O3RaPZ TEFO0RoRulxS0gdoA6RjNUAdi/cfB+psKOG+46Fqgmn7RGk4Vja7mUvlmEPz530U2uVO PyDVMV2V2r4uR+YerAd6lN772damYgZRa4oQrLGEX/1hnmg1/allmYEG6o8dtbIE0Dqw Y8RVbKN9eho5gcUpBs5lOvu5YkyyXhIC9/ylvKHZIfJixnpSu1tKo/1pj2HZzbkoOFC5 V0Rw== X-Forwarded-Encrypted: i=1; AJvYcCWPTrs7jtLDSwRBJFHL+qP7VnWJ10BHlFnqNNmF+14K34zAkoTV0rN4Ms3WoOBfaKmH1O78dABnhv5z0hY=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+thDa0M86fWoilsRuWpL8NRuxxKBrmgnISfcbSLUBmASK7QDz TrRgxWAwnQ7b7ZgW+HOICn5jt5TmGBo//CIT4wRoEqnfWDUDXSGeqvRAQWY6HcBfiAkgYuHHbvK D7U3VzrOH7Q== X-Google-Smtp-Source: AGHT+IEt4dH04AqO+CjXIyoe+uYefmSRa8ceQS06YbtdgWzSj0GX2or7oPfZlPna9E6bEu5iEskG4hp2bqz1 X-Received: from dyt23.prod.google.com ([2002:a05:693c:8097:b0:2a2:454c:f92]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7300:d198:b0:2a4:3593:466c with SMTP id 5a478bee46e88-2a719098538mr1676208eec.8.1763799604030; Sat, 22 Nov 2025 00:20:04 -0800 (PST) Date: Sat, 22 Nov 2025 00:19:27 -0800 In-Reply-To: <20251122081929.7588-1-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251122081929.7588-1-irogers@google.com> X-Mailer: git-send-email 2.52.0.rc2.455.g230fcf2819-goog Message-ID: <20251122081929.7588-16-irogers@google.com> Subject: [PATCH v1 15/17] perf tests script dlfilter: Add a dlfilter test From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Collin Funk , Dmitry Vyukov , Andi Kleen , Thomas Falcon , Leo Yan , Yicong Yang , Greg Kroah-Hartman , "Masami Hiramatsu (Google)" , Stephen Brennan , Haibo Xu , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Compile a simple dlfilter and make sure it remove samples from everything other than a test_loop. Signed-off-by: Ian Rogers --- tools/perf/tests/shell/script_dlfilter.sh | 107 ++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100755 tools/perf/tests/shell/script_dlfilter.sh diff --git a/tools/perf/tests/shell/script_dlfilter.sh b/tools/perf/tests/s= hell/script_dlfilter.sh new file mode 100755 index 000000000000..45c97d4a7d5f --- /dev/null +++ b/tools/perf/tests/shell/script_dlfilter.sh @@ -0,0 +1,107 @@ +#!/bin/bash +# perf script --dlfilter tests +# SPDX-License-Identifier: GPL-2.0 + +set -e + +shelldir=3D$(dirname "$0") +# shellcheck source=3Dlib/setup_python.sh +. "${shelldir}"/lib/setup_python.sh + +# skip if there's no compiler +if ! [ -x "$(command -v cc)" ]; then + echo "failed: no compiler, install gcc" + exit 2 +fi + +err=3D0 +perfdata=3D$(mktemp /tmp/__perf_test.perf.data.XXXXX) +dlfilter_c=3D$(mktemp /tmp/__perf_test.dlfilter.test.c.XXXXX) +dlfilter_so=3D$(mktemp /tmp/__perf_test.dlfilter.so.XXXXX) + +cleanup() { + rm -f "${perfdata}" + rm -f "${dlfilter_c}" + rm -f "${dlfilter_so}" + rm -f "${dlfilter_so}.o" + + trap - EXIT TERM INT +} + +trap_cleanup() { + echo "Unexpected signal in ${FUNCNAME[1]}" + cleanup + exit 1 +} +trap trap_cleanup EXIT TERM INT + +cat < "${dlfilter_c}" +#include +#include +#include + +struct perf_dlfilter_fns perf_dlfilter_fns; + +int filter_event(void *data, const struct perf_dlfilter_sample *sample, vo= id *ctx) +{ + const struct perf_dlfilter_al *al; + + if (!sample->ip) + return 0; + + al =3D perf_dlfilter_fns.resolve_ip(ctx); + if (!al || !al->sym || strcmp(al->sym, "test_loop")) + return 1; + + return 0; +} +EOF + +test_dlfilter() { + echo "Basic --dlfilter test" + # Generate perf.data file + if ! perf record -o "${perfdata}" perf test -w thloop 1 2> /dev/null + then + echo "Basic --dlfilter test [Failed record]" + err=3D1 + return + fi + + # Build the dlfilter + if ! cc -c -I tools/perf/include -fpic -x c "${dlfilter_c}" -o "${dlfilte= r_so}.o" + then + echo "Basic --dlfilter test [Failed to build dlfilter object]" + err=3D1 + return + fi + + if ! cc -shared -o "${dlfilter_so}" "${dlfilter_so}.o" + then + echo "Basic --dlfilter test [Failed to link dlfilter shared object]" + err=3D1 + return + fi + + # Check that the output contains "test_loop" and nothing else + if ! perf script -i "${perfdata}" --dlfilter "${dlfilter_so}" | grep -q "= test_loop" + then + echo "Basic --dlfilter test [Failed missing output]" + err=3D1 + return + fi + + # The filter should filter out everything except test_loop, so ensure no = other symbols are present + # This is a simple check; we could be more rigorous + if perf script -i "${perfdata}" --dlfilter "${dlfilter_so}" | grep -v "te= st_loop" | grep -q "perf" + then + echo "Basic --dlfilter test [Failed filtering]" + err=3D1 + return + fi + + echo "Basic --dlfilter test [Success]" +} + +test_dlfilter +cleanup +exit $err --=20 2.52.0.rc2.455.g230fcf2819-goog