Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp642405pxf; Wed, 10 Mar 2021 14:04:55 -0800 (PST) X-Google-Smtp-Source: ABdhPJx7FKr2wCYxgmx3S6NcXb4szgjMf5KwFaTmmKr9sENuPD25IvZIyxmJiUM4Tgc4m/eXmnNs X-Received: by 2002:a50:e1c9:: with SMTP id m9mr5786453edl.307.1615413894950; Wed, 10 Mar 2021 14:04:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615413894; cv=none; d=google.com; s=arc-20160816; b=kx71Aq6QWPWLg6wT30dH2orvlLazo5m2fVmFvrSAC+4pWogzenedZQrcZPOBJliuud +UXfwTyo1jHUN6k0BfLMqdL6Os6efH89uswlhSKP4DdoKFl/TtZeP40dJ0hgxnpk7zqA H38/TgISkXK7klwsvb3o3A0lGOuBDBu6EC8wrYVe08w5WhUo084cxkQ3AxsqCwaxWEzf AbO6qvV/HKOg+UJwkfLkbQ/HU3tHF5cslqq2dtzFgQHVEydeE9IKRa/gM05z0Lfg6Na6 iWmkVoDc9vfxLJCd6iTPXl4R5vCLY2N1FJ6Dso4HMU/nB/1vpw0zuZw0kVqVl4tp8MMo ZpQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=BQ2hKQWhpJ/WTdKG9UWGdly9pe3CMhv89pfXyaQmgfE=; b=veAsyZszJMXNV8IE7rXKTMcpJFY1tKQwSrprLgHL6NbvxwspbC5S2azOBPjbwnMpDP ckgAGMWWZ8WTTNvb+LiUeTIVBVTjQnCwuNanS2CtPuPsm8oINBcRnABR+X1LPHhY04B4 AcEaJtDPVIj+pxPpy0EFChmqpAQ9kophxHDsRhfFOiRUwfnRLxZc8HcdAQGdj6nSXoyQ 4ZfDnFoXYeG3etYV0d+8C1uNZzCcFbfk/PyWvNO5r0Rhy3vXhvf7EGY/Kxr8VlC7kQma IQ8nHhkZR+M/H0cMK8sXX5+j4Dl+rnjN1f/SCWRhWy1Aq5fLNpbN8sXmT6/VIRxjbjfs adTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=YhsFvX1Q; 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=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i10si431304edy.452.2021.03.10.14.04.32; Wed, 10 Mar 2021 14:04:54 -0800 (PST) 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=@chromium.org header.s=google header.b=YhsFvX1Q; 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=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234246AbhCJWDT (ORCPT + 99 others); Wed, 10 Mar 2021 17:03:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45148 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234353AbhCJWCg (ORCPT ); Wed, 10 Mar 2021 17:02:36 -0500 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6F928C061763 for ; Wed, 10 Mar 2021 14:02:31 -0800 (PST) Received: by mail-wr1-x429.google.com with SMTP id w11so25046785wrr.10 for ; Wed, 10 Mar 2021 14:02:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BQ2hKQWhpJ/WTdKG9UWGdly9pe3CMhv89pfXyaQmgfE=; b=YhsFvX1QktFHIWBCy6YnZtuUwh/y9Vkf5pPz9uqPdkC55xYf3v7ff2d67tv52x/bo2 XFJR2svsqaTSYeQUOk+dnEj44wtY9uUjNHSXL7BK55ZFHhuB/HEToOG5uM9gc0VxPY4G y45qELB7GtbglYR6i+U8wM9UYYHCticWOwKBU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BQ2hKQWhpJ/WTdKG9UWGdly9pe3CMhv89pfXyaQmgfE=; b=T28AFn8OumEMuv54Jzgx+NTyxifKr4vcKMi0ANr2PmdSCrjdWuf/7I2sbdEJlgHnNE ubq5YMJROjClohAkTklROnJWEPFjJvGkX2wKUzdE7n92zhvaDj6OQB+eJKiIfjeksFJT 0PV1zlVhBfz/gFv787sTQtdnwTbtW3o8fGu4/wRmKn9KNELGgII9vmhGKGkiFDF89/Z/ YRJ09rCYbSb64beM2QLdQdqGGKljwmCL4545bHKLzfzjyLDbCohI3AkADY6oxDcm2Ey1 enaDVHgWFBO14djDyKQn9SzcoiYKTFRSvUBqLUHAk43fHe48qPpb/pBhqaPRUiyBV7EY f7qg== X-Gm-Message-State: AOAM530Z6JjYwHPu50zi/rS3Xl6cG8L8M4PY41rZPy3xgYwBJOrDq+1S PkY8pLjz9h7lpoAlwx1UCazwGA== X-Received: by 2002:a5d:4b06:: with SMTP id v6mr5676166wrq.41.1615413749649; Wed, 10 Mar 2021 14:02:29 -0800 (PST) Received: from revest.zrh.corp.google.com ([2a00:79e0:42:204:e08c:1e90:4e6b:365a]) by smtp.gmail.com with ESMTPSA id y16sm699234wrh.3.2021.03.10.14.02.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Mar 2021 14:02:29 -0800 (PST) From: Florent Revest To: bpf@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, yhs@fb.com, kpsingh@kernel.org, jackmanb@chromium.org, linux-kernel@vger.kernel.org, Florent Revest Subject: [PATCH bpf-next 3/5] libbpf: Initialize the bpf_seq_printf parameters array field by field Date: Wed, 10 Mar 2021 23:02:09 +0100 Message-Id: <20210310220211.1454516-4-revest@chromium.org> X-Mailer: git-send-email 2.30.1.766.gb4fecdf3b7-goog In-Reply-To: <20210310220211.1454516-1-revest@chromium.org> References: <20210310220211.1454516-1-revest@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When initializing the __param array with a one liner, if all args are const, the initial array value will be placed in the rodata section but because libbpf does not support relocation in the rodata section, any pointer in this array will stay NULL. This is a workaround, ideally the rodata relocation should be supported by libbpf but this would require a disproportionate amount of work given the actual usecases. (it is very unlikely that one uses a const array of relocated addresses) Signed-off-by: Florent Revest --- tools/lib/bpf/bpf_tracing.h | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/tools/lib/bpf/bpf_tracing.h b/tools/lib/bpf/bpf_tracing.h index f9ef37707888..f6a2deb3cd5b 100644 --- a/tools/lib/bpf/bpf_tracing.h +++ b/tools/lib/bpf/bpf_tracing.h @@ -413,6 +413,34 @@ typeof(name(0)) name(struct pt_regs *ctx) \ } \ static __always_inline typeof(name(0)) ____##name(struct pt_regs *ctx, ##args) +#define ___bpf_build_param0(narg, x) +#define ___bpf_build_param1(narg, x) ___param[narg - 1] = x +#define ___bpf_build_param2(narg, x, args...) ___param[narg - 2] = x; \ + ___bpf_build_param1(narg, args) +#define ___bpf_build_param3(narg, x, args...) ___param[narg - 3] = x; \ + ___bpf_build_param2(narg, args) +#define ___bpf_build_param4(narg, x, args...) ___param[narg - 4] = x; \ + ___bpf_build_param3(narg, args) +#define ___bpf_build_param5(narg, x, args...) ___param[narg - 5] = x; \ + ___bpf_build_param4(narg, args) +#define ___bpf_build_param6(narg, x, args...) ___param[narg - 6] = x; \ + ___bpf_build_param5(narg, args) +#define ___bpf_build_param7(narg, x, args...) ___param[narg - 7] = x; \ + ___bpf_build_param6(narg, args) +#define ___bpf_build_param8(narg, x, args...) ___param[narg - 8] = x; \ + ___bpf_build_param7(narg, args) +#define ___bpf_build_param9(narg, x, args...) ___param[narg - 9] = x; \ + ___bpf_build_param8(narg, args) +#define ___bpf_build_param10(narg, x, args...) ___param[narg - 10] = x; \ + ___bpf_build_param9(narg, args) +#define ___bpf_build_param11(narg, x, args...) ___param[narg - 11] = x; \ + ___bpf_build_param10(narg, args) +#define ___bpf_build_param12(narg, x, args...) ___param[narg - 12] = x; \ + ___bpf_build_param11(narg, args) +#define ___bpf_build_param(args...) \ + unsigned long long ___param[___bpf_narg(args)]; \ + ___bpf_apply(___bpf_build_param, ___bpf_narg(args))(___bpf_narg(args), args) + /* * BPF_SEQ_PRINTF to wrap bpf_seq_printf to-be-printed values * in a structure. @@ -422,7 +450,7 @@ static __always_inline typeof(name(0)) ____##name(struct pt_regs *ctx, ##args) _Pragma("GCC diagnostic push") \ _Pragma("GCC diagnostic ignored \"-Wint-conversion\"") \ static const char ___fmt[] = fmt; \ - unsigned long long ___param[] = { args }; \ + ___bpf_build_param(args); \ _Pragma("GCC diagnostic pop") \ int ___ret = bpf_seq_printf(seq, ___fmt, sizeof(___fmt), \ ___param, sizeof(___param)); \ -- 2.30.1.766.gb4fecdf3b7-goog