Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp8753892ybc; Fri, 29 Nov 2019 16:14:53 -0800 (PST) X-Google-Smtp-Source: APXvYqwKeB03bOnrT0ClQPxH2wBQzkpzU4nUz6GZiWXHECKlLpGR8wlIW3chTVlqC+nlP1wVILRo X-Received: by 2002:aa7:cf83:: with SMTP id z3mr23841042edx.166.1575072893764; Fri, 29 Nov 2019 16:14:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575072893; cv=none; d=google.com; s=arc-20160816; b=b2+aOhLc6/RlbqM7CErC4ESRCgv8aRC4H9wIGwn5jPBd6Tn7csiBYaAqycMVeIG78V oL/DRSawin9MQY5bRCO9JqvfCRHQ7GrkoSxe7Jn8Y28cqIo0U0OuM2HU6KA0J84bJnhR lRVTUIfIOR1sdvru5x0m8TvCrQVoWQnfnfqjbVQiYryNrrbPXXm3rFVg9PZtvIktfF3p W3rDf+V14tEqO7VRWUylCNi3oIkOJESC6sscdzVwV70IVytooEqEEMxAieToZzagEZ5z tAUA6tgF9GV0qSD7xIbTWS5ZKu3fJ+MEh9Me2t1LkPXOSnAGNM4qOa2NljLuR7wW7iue RsEg== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=agPwXcOl4oRUi3eIsBa141ZyBO+jOaKD/BoHBYWrjls=; b=LuvZiSbj1ye+VV/lgYMdTmWwuNjgV7VWuxOGVaSv43om5Tp0oMk6pQKXXJVf6Cphl/ +Dl04x/xrCxwK7qis0EPTbnnTi8Ke2K4Woh1v2hQzThNiGmqPT7HMNHwI9IUtf8i1ynW F2HWRMwKTQ0deB6+AYSNToy9HNUt6dpVhytq8eA0AdRqjGdHpWr3wCLhvQabS55s13AP Xhkv8ZqL5wSE6hFXLNw18+/ebj1ssbkiDeCuGv1oAi3bStxYxVwnhYJXQvxdjy3fHC0l LIcWJjaN98+iMAulPfte0QWN+xL6YrhM0L0TsuCaZj6QzK+/eSXun/Tfn0LsKaPBlvXn X2YQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q28si19043864edb.334.2019.11.29.16.14.18; Fri, 29 Nov 2019 16:14:53 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727197AbfK3AM6 (ORCPT + 99 others); Fri, 29 Nov 2019 19:12:58 -0500 Received: from www62.your-server.de ([213.133.104.62]:43690 "EHLO www62.your-server.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727130AbfK3AM6 (ORCPT ); Fri, 29 Nov 2019 19:12:58 -0500 Received: from sslproxy06.your-server.de ([78.46.172.3]) by www62.your-server.de with esmtpsa (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256) (Exim 4.89_1) (envelope-from ) id 1iaq82-0002ph-Pq; Sat, 30 Nov 2019 00:56:50 +0100 Received: from [178.197.249.29] (helo=pc-9.home) by sslproxy06.your-server.de with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.89) (envelope-from ) id 1iaq82-000WjV-90; Sat, 30 Nov 2019 00:56:50 +0100 Subject: Re: [PATCH bpf v3] bpftool: Allow to link libbpf dynamically To: =?UTF-8?Q?Toke_H=c3=b8iland-J=c3=b8rgensen?= , Alexei Starovoitov Cc: Jiri Olsa , lkml , netdev@vger.kernel.org, bpf@vger.kernel.org, Ingo Molnar , Namhyung Kim , Alexander Shishkin , Peter Zijlstra , Michael Petlan , Jesper Dangaard Brouer , Martin KaFai Lau , Song Liu , Yonghong Song , Andrii Nakryiko , Arnaldo Carvalho de Melo , kubakici@wp.pl References: <20191128160712.1048793-1-toke@redhat.com> <87a78evl2v.fsf@toke.dk> From: Daniel Borkmann Message-ID: <9853054b-dc1f-35ba-ba3c-4d0ab01c8f14@iogearbox.net> Date: Sat, 30 Nov 2019 00:56:49 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2 MIME-Version: 1.0 In-Reply-To: <87a78evl2v.fsf@toke.dk> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Authenticated-Sender: daniel@iogearbox.net X-Virus-Scanned: Clear (ClamAV 0.101.4/25648/Fri Nov 29 10:44:54 2019) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/29/19 3:00 PM, Toke Høiland-Jørgensen wrote: > Daniel Borkmann writes: >> On 11/28/19 5:07 PM, Toke Høiland-Jørgensen wrote: >>> From: Jiri Olsa [...] >>> ifeq ($(srctree),) >>> srctree := $(patsubst %/,%,$(dir $(CURDIR))) >>> @@ -63,6 +72,19 @@ RM ?= rm -f >>> FEATURE_USER = .bpftool >>> FEATURE_TESTS = libbfd disassembler-four-args reallocarray zlib >>> FEATURE_DISPLAY = libbfd disassembler-four-args zlib >>> +ifdef LIBBPF_DYNAMIC >>> + FEATURE_TESTS += libbpf >>> + FEATURE_DISPLAY += libbpf >>> + >>> + # for linking with debug library run: >>> + # make LIBBPF_DYNAMIC=1 LIBBPF_DIR=/opt/libbpf >> >> The Makefile already has BPF_DIR which points right now to >> '$(srctree)/tools/lib/bpf/' and LIBBPF_PATH for the final one and >> where $(LIBBPF_PATH)libbpf.a is expected to reside. Can't we improve >> the Makefile to reuse and work with these instead of adding yet >> another LIBBPF_DIR var which makes future changes in this area more >> confusing? The libbpf build spills out libbpf.{a,so*} by default >> anyway. > > I see what you mean; however, LIBBPF_DIR is meant to be specifically an > override for the dynamic library, not just the path to libbpf. > > Would it be less confusing to overload the LIBBPF_DYNAMIC variable > instead? I.e., > > make LIBBPF_DYNAMIC=1 > > would dynamically link against the libbpf installed in the system, but > > make LIBBPF_DYNAMIC=/opt/libbpf > > would override that and link against whatever is in /opt/libbpf instead? > WDYT? Hm, given perf tool has similar LIB*_DIR vars in place for its libs, it probably makes sense to stick with this convention as well then. Perhaps better in this case to just rename s/BPF_DIR/BPF_SRC_DIR/, s/LIBBPF_OUTPUT/LIBBPF_BUILD_OUTPUT/, and s/LIBBPF_PATH/LIBBPF_BUILD_PATH/ to make their purpose more clear. One thing that would be good to do as well for this patch is to: i) Document both LIBBPF_DYNAMIC and LIBBPF_DIR in the Makefile comment you added at the top along with a simple usage example. ii) Extend tools/testing/selftests/bpf/test_bpftool_build.sh with a dynamic linking test case, e.g. building libbpf into a temp dir and pointing LIBBPF_DIR to it for bpftool LIBBPF_DYNAMIC=1 build. Thanks, Daniel