Received: by 2002:a05:6a10:8395:0:0:0:0 with SMTP id n21csp614825pxh; Tue, 9 Nov 2021 16:12:54 -0800 (PST) X-Google-Smtp-Source: ABdhPJwsQEoaVpxW8Yr020NIEmX+Dou04uSqTBQrofCQLnBQ6VAkxy9EpCx08ttR3myzN8zuiwUk X-Received: by 2002:a05:6638:2728:: with SMTP id m40mr9006743jav.111.1636503174715; Tue, 09 Nov 2021 16:12:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1636503174; cv=none; d=google.com; s=arc-20160816; b=CQcqLVNfWUnP3jpBbjYyWMvJO2U917Ryhp536ICKDfWE7WqQUB4fkdrLnfhAeE9QYL jncwXMwMDcNNuOTg7vbvTiO0vTGcXq+/6RybUUWpXvz73Z24dSRbP6ccKe5IbwRZSufQ t2w/exrcyvv3hPHxxx6/otgUNrFySKR5Zna8HmKogLwzqtioFvJW1cnp3rAmQEfLH2Nh 6O7CgqMAPmOx5V24lo8D9qFPj1BWPFEHPJSNqB4iwCewN61u6WKkFgIYSg26RbZVLdyN Ig6rLbeilKUjC9NhSMle/kJ/sxch0RDU0nMUhm5PNvB5vv/OtsO8Lz3U2xcnx5m9k+v7 6k4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=C7ayoAZBsG7SmT52WD7mztV4zmoTtxtcqBtR1Gou9eQ=; b=X4IZV5ARInlmFK2yOUM81g3pxC+GgzNWP+JmaMlFKc4VgvygxDqtZAXM2znKNPFgSf 0fQLcNvTc9ycnH62sLX/y2pTWgpdEe/j10EG5HzlEYumAv9m5F6eZeSZtvBsUl8q5Ozf IPHUxv2uDRBznZhRotPCFspaQsJU96Vvd/9UY02F+bvY5VJhh/9UTsZOXAQcJ/PtZFN+ dqESPKj3+60M39qDYBO6+t6JhogtQX8LICBv96oijal96iLO/5Mn7PRNwHrTFroUmhuz /7lpcG0m4PgrUVzwd3+TAPTr6HJmUqsScurh1md25LXBDJoReLvCKkcjcphtD5DJK2ir /dGQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=FvvQNa7h; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a9si6960529iow.48.2021.11.09.16.12.42; Tue, 09 Nov 2021 16:12: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=@google.com header.s=20210112 header.b=FvvQNa7h; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242741AbhKISw4 (ORCPT + 97 others); Tue, 9 Nov 2021 13:52:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60182 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242639AbhKISwx (ORCPT ); Tue, 9 Nov 2021 13:52:53 -0500 Received: from mail-io1-xd29.google.com (mail-io1-xd29.google.com [IPv6:2607:f8b0:4864:20::d29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C3F61C061766 for ; Tue, 9 Nov 2021 10:50:07 -0800 (PST) Received: by mail-io1-xd29.google.com with SMTP id y16so6479272ioc.8 for ; Tue, 09 Nov 2021 10:50:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=C7ayoAZBsG7SmT52WD7mztV4zmoTtxtcqBtR1Gou9eQ=; b=FvvQNa7hOwEnvZKsAmcWroNO2el/XKh1p/kqLEDzVcYNdDaxpBYMhXrxVExMC0RjZx AQ2HupjCg/azmyN8xTDiF3G4QcXZY4XeOLDmOdZXmEbHtEJ2e/5VNnWhXKzC/CWgY1kW 9Ai0rjRqqNtSScIPx29vzaPCIub0xXk3lt2V97Jszg3O5VjlFdGALPtNNKfGwK/2H8ax TczdgUWx6k7X5kgvedEEip075SYscdOWJB9aVTUG582f/9GT8KTSj4VC0h6wjecdCVzL g0vAqZQZw5qy4aqR3vUPWoREoyPuSCP+sNvLeMcJ/9uMCvWUlq6SeFT/0QRWlTZ/zUjq tx5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=C7ayoAZBsG7SmT52WD7mztV4zmoTtxtcqBtR1Gou9eQ=; b=RkK0qMlvW19AQsadFHqzL5f/BC5955bpOIVauwupELj51zN0nT6crwwxSbARgwqX+2 D72KQjog5hL5oWiG7iA9Fm6fTvkxvzm3SCi+DijKm3nKoT++B+1IWTUTqXm1pF62q+Wc ZDuOn5DC46CwTnW7M2wYNUHpXjWh22+neEabGPQnIXV97GwPBGGJM6z4ha7ZTSkG+m1M FAF6AJQmyh18EeduuAdozwilEq12R0xsV5W+PTg3jeMF5N+z+I6t9Nh4+MNJzYaGcX9G FMbQ2G3aORE/6yFteDFdYxn/zkLH/tfRuv9sEWBDounGuJxiYRO+BxDkad7nmynR/9cd 8rCQ== X-Gm-Message-State: AOAM532NkRFIU8c2pIWLYYMVSGIa2+iqjBqerAKeCZXsa+8Fg34LwGmV f+LJnVM1fUZA33q+UWMmXpT9vB6yixzbUWQr72QZhSuRAuqypQ== X-Received: by 2002:a05:6638:144f:: with SMTP id l15mr7414854jad.21.1636483807037; Tue, 09 Nov 2021 10:50:07 -0800 (PST) MIME-Version: 1.0 References: <20211109140707.1689940-1-jolsa@kernel.org> <20211109140707.1689940-2-jolsa@kernel.org> In-Reply-To: <20211109140707.1689940-2-jolsa@kernel.org> From: Ian Rogers Date: Tue, 9 Nov 2021 10:49:53 -0800 Message-ID: Subject: Re: [PATCH 1/2] perf tools: Add more weak libbpf functions To: Jiri Olsa Cc: Arnaldo Carvalho de Melo , lkml , Peter Zijlstra , Ingo Molnar , Mark Rutland , Namhyung Kim , Alexander Shishkin , Michael Petlan , linux-perf-users@vger.kernel.org, Andrii Nakryiko Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Nov 9, 2021 at 6:07 AM Jiri Olsa wrote: > > We hit the window where perf uses libbpf functions, that did not > make it to the official libbpf release yet and it's breaking perf > build with dynamicly linked libbpf. > > Fixing this by providing the new interface as weak functions which > calls the original libbpf functions. Fortunatelly the changes were > just renames. Could we just provide these functions behind a libbpf version #if ? Weak symbols break things in subtle ways, under certain circumstances the weak symbol is preferred over the strong due to lazy object file resolution: https://maskray.me/blog/2021-06-20-symbol-processing#archive-processing This bit me last week, but in general you get away with it as the lazy object file will get processed in an archive exposing the strong symbol. With an #if you either get a linker error for 2 definitions or 0 definitions, and it's clear what is broken. In the past we had problems due to constant propagation from weak const variables, where #if was the solution: https://lore.kernel.org/lkml/20191001003623.255186-1-irogers@google.com/ There was some recent conversation on libbpf version for pahole here: https://lore.kernel.org/bpf/CAP-5=fUc3LtU0WYg-Py9Jf+9picaWHJdSw=sdOMA54uY3p1pdw@mail.gmail.com/T/ https://lore.kernel.org/bpf/20211021183330.460681-1-irogers@google.com/ Thanks, Ian > Signed-off-by: Jiri Olsa > --- > tools/perf/util/bpf-event.c | 27 +++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/tools/perf/util/bpf-event.c b/tools/perf/util/bpf-event.c > index 4d3b4cdce176..ceb96360fd12 100644 > --- a/tools/perf/util/bpf-event.c > +++ b/tools/perf/util/bpf-event.c > @@ -33,6 +33,33 @@ struct btf * __weak btf__load_from_kernel_by_id(__u32 id) > return err ? ERR_PTR(err) : btf; > } > > +struct bpf_program * __weak > +bpf_object__next_program(const struct bpf_object *obj, struct bpf_program *prev) > +{ > +#pragma GCC diagnostic push > +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" > + return bpf_program__next(prev, obj); > +#pragma GCC diagnostic pop > +} > + > +struct bpf_map * __weak > +bpf_object__next_map(const struct bpf_object *obj, const struct bpf_map *prev) > +{ > +#pragma GCC diagnostic push > +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" > + return bpf_map__next(prev, obj); > +#pragma GCC diagnostic pop > +} > + > +const void * __weak > +btf__raw_data(const struct btf *btf_ro, __u32 *size) > +{ > +#pragma GCC diagnostic push > +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" > + return btf__get_raw_data(btf_ro, size); > +#pragma GCC diagnostic pop > +} > + > static int snprintf_hex(char *buf, size_t size, unsigned char *data, size_t len) > { > int ret = 0; > -- > 2.31.1 >