Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp6930417ybc; Thu, 28 Nov 2019 07:53:55 -0800 (PST) X-Google-Smtp-Source: APXvYqxsvSGsu/Tu+cR3bLp+J/ge0f526Kt30bqgkitBuxnydtDGT51ED0ITFUKjJZ0O1QaBMRSI X-Received: by 2002:a17:906:3796:: with SMTP id n22mr36465151ejc.222.1574956435774; Thu, 28 Nov 2019 07:53:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574956435; cv=none; d=google.com; s=arc-20160816; b=FrKDBqqq3E6ouT2JB4SsSU78+5l62rQFTTlyjBNxnaKDIajAmfXndoTxSgVIGIMSh+ W8v2cxKntE5LYXinyjL9ZwG5IBPe5IPyFCCroJXyl9sQdjW9pJflZ7whT3COcj/ceiGW pH77GvLC7WwFHqscecpH8TyHWl6z932Z57Tvc3mwdVrGOiSVuflKtwtgcW+yEjeV8Nqi WzkMQl00quI6AlUVQOleU97exhWodMOrSL4Q6MpXZ06yxha29fmBe6Qkf03DSS4ADaAN 1evC9aDT2a0Z9jj6olN35kqAdUVFt3kLl9ibWjg2FmhPtSvVYL+9/pGRczpekBYR+6zm zUSQ== 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:mime-version :message-id:date:references:in-reply-to:subject:cc:to:from :dkim-signature; bh=b3fDLclsp32DrX7lHGecyNEsumQtWNMyutGYTGa++y0=; b=eiX7p5kfnrZPoxaf9M8S0g4FoT9wLjywPDr9uy5llGRoS9yZebSW4SApTpPXFtGTN/ Mdh9R1JDAonix9ioXe9YWk7nMfwqkcLC4UyDFI7NScLi9ocI/M7MKG2ClyzefnwkBgMO 5osVdNYE/UzvwtUjBU1e3Iwbaw3+0VvbczUba5l0LjXR1w04ITvQbTm7ZnfJFn2fLHDZ bxAJp1YRsqDAHXelxcMh16myh+amYdwjnl5v8m2T1YnbO+dQWVg+VAWD31P0VtBmARGw PYLKEe4oeKt5AUN83ub2Phckusz9xkiY6mwOshRVP1+FXoM9JfPFJWPKqeJPJvQRNPQQ lMjw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=ix8yuAd0; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n8si3216363edy.244.2019.11.28.07.53.31; Thu, 28 Nov 2019 07:53:55 -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; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=ix8yuAd0; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726593AbfK1Pw1 (ORCPT + 99 others); Thu, 28 Nov 2019 10:52:27 -0500 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:41568 "EHLO us-smtp-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726401AbfK1Pw0 (ORCPT ); Thu, 28 Nov 2019 10:52:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1574956345; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=b3fDLclsp32DrX7lHGecyNEsumQtWNMyutGYTGa++y0=; b=ix8yuAd0Kk5iCvHL5i15cTO5ZB+bloJnf03jXyqiEAIkE36m0ghe5rK109bWbYbPJCYCqF loW7hUaSo86NHpqq0odZMOsWXlvH826JbnO5m+07Npp/K1EERm2xtPpXqHByP1+9AdLCwG hpmNrrKNTykem1yrZqAlCc8dvExB+MM= Received: from mail-lf1-f71.google.com (mail-lf1-f71.google.com [209.85.167.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-83-QZYMkIMQMD2yjpMo7QCV7A-1; Thu, 28 Nov 2019 10:52:23 -0500 Received: by mail-lf1-f71.google.com with SMTP id y195so3429448lfa.0 for ; Thu, 28 Nov 2019 07:52:23 -0800 (PST) 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:in-reply-to:references:date :message-id:mime-version:content-transfer-encoding; bh=oTYDHNQIqswqEUFec83Wq4PCKAJTly7z4dAKA/xDHuk=; b=B7oSsvJMDO9Bc54TVVU99PTtKqkZs7tHsEfrQ4uSccON4C9iWUgoWA1tlV1FpfEwA2 EoRtGn+CeYOjincWtzHxb8GJ7iwY+7ju7sd7ECquplGty/l65PMyRaq42KlcWj5o3LoK pbbKvsHTDmYcXar9IgYbxroH+kLtZCeqzVQw9jyGYzFMoJSx3lrkXHgqGhAGz8KjW2Ay sgjg3XnKYXMC4witlU9UsKzteWfF7wruPYyZD4UFINhydnXJLagAh0I+D9G4TC9tabDg aWz7o01YyXd7/ekqTGafUs4mSv0ugoebYBxv8r+fp/+1+5dRwnJIa7pn+nqUZgxvXh51 gwFA== X-Gm-Message-State: APjAAAX7uqUHZtZpMyeAlspXvOOMAesBdnX5vXxojax2woq5/OMfkpjw jN81N0zNfiqnjEHlYpWXylh0LJds89nQFUl4ZdzM3No9G/feGqb0bd4OYeJad2Aeq2a1VWaUc5s BoC+K8l4TRsu6KK8On6u7R+mc X-Received: by 2002:ac2:41d8:: with SMTP id d24mr17468748lfi.98.1574956342342; Thu, 28 Nov 2019 07:52:22 -0800 (PST) X-Received: by 2002:ac2:41d8:: with SMTP id d24mr17468737lfi.98.1574956342155; Thu, 28 Nov 2019 07:52:22 -0800 (PST) Received: from alrua-x1.borgediget.toke.dk ([45.145.92.2]) by smtp.gmail.com with ESMTPSA id o26sm8597809lfi.57.2019.11.28.07.52.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Nov 2019 07:52:21 -0800 (PST) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id A69DA180339; Thu, 28 Nov 2019 16:52:20 +0100 (CET) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= To: Quentin Monnet , Daniel Borkmann , 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 Subject: Re: [PATCH bpf v2] bpftool: Allow to link libbpf dynamically In-Reply-To: <497b4151-9aad-f3a9-3aff-78d665e5f750@netronome.com> References: <20191128145316.1044912-1-toke@redhat.com> <497b4151-9aad-f3a9-3aff-78d665e5f750@netronome.com> X-Clacks-Overhead: GNU Terry Pratchett Date: Thu, 28 Nov 2019 16:52:20 +0100 Message-ID: <871rtsvw0b.fsf@toke.dk> MIME-Version: 1.0 X-MC-Unique: QZYMkIMQMD2yjpMo7QCV7A-1 X-Mimecast-Spam-Score: 0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Quentin Monnet writes: > 2019-11-28 15:53 UTC+0100 ~ Toke H=C3=B8iland-J=C3=B8rgensen >> From: Jiri Olsa >>=20 >> Currently we support only static linking with kernel's libbpf >> (tools/lib/bpf). This patch adds LIBBPF_DYNAMIC compile variable >> that triggers libbpf detection and bpf dynamic linking: >>=20 >> $ make -C tools/bpf/bpftool make LIBBPF_DYNAMIC=3D1 >>=20 >> If libbpf is not installed, build (with LIBBPF_DYNAMIC=3D1) stops with: >>=20 >> $ make -C tools/bpf/bpftool LIBBPF_DYNAMIC=3D1 >> Auto-detecting system features: >> ... libbfd: [ on ] >> ... disassembler-four-args: [ on ] >> ... zlib: [ on ] >> ... libbpf: [ OFF ] >>=20 >> Makefile:102: *** Error: No libbpf devel library found, please install= -devel or libbpf-dev. >>=20 >> Adding LIBBPF_DIR compile variable to allow linking with >> libbpf installed into specific directory: >>=20 >> $ make -C tools/lib/bpf/ prefix=3D/tmp/libbpf/ install_lib install_hea= ders >> $ make -C tools/bpf/bpftool/ LIBBPF_DYNAMIC=3D1 LIBBPF_DIR=3D/tmp/libb= pf/ >>=20 >> It might be needed to clean build tree first because features >> framework does not detect the change properly: >>=20 >> $ make -C tools/build/feature clean >> $ make -C tools/bpf/bpftool/ clean >>=20 >> Since bpftool uses bits of libbpf that are not exported as public API in >> the .so version, we also pass in libbpf.a to the linker, which allows it= to >> pick up the private functions from the static library without having to >> expose them as ABI. >>=20 >> Signed-off-by: Jiri Olsa >> Signed-off-by: Toke H=C3=B8iland-J=C3=B8rgensen >> --- >> v2: >> - Pass .a file to linker when dynamically linking, so bpftool can use >> private functions from libbpf without exposing them as API. >> =20 >> tools/bpf/bpftool/Makefile | 38 +++++++++++++++++++++++++++++++++++++- >> 1 file changed, 37 insertions(+), 1 deletion(-) >>=20 >> diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile >> index 39bc6f0f4f0b..397051ed9e41 100644 >> --- a/tools/bpf/bpftool/Makefile >> +++ b/tools/bpf/bpftool/Makefile >> @@ -1,6 +1,15 @@ >> # SPDX-License-Identifier: GPL-2.0-only >> +# LIBBPF_DYNAMIC to enable libbpf dynamic linking. >> + >> include ../../scripts/Makefile.include >> include ../../scripts/utilities.mak >> +include ../../scripts/Makefile.arch >> + >> +ifeq ($(LP64), 1) >> + libdir_relative =3D lib64 >> +else >> + libdir_relative =3D lib >> +endif >> =20 >> ifeq ($(srctree),) >> srctree :=3D $(patsubst %/,%,$(dir $(CURDIR))) >> @@ -55,7 +64,7 @@ ifneq ($(EXTRA_LDFLAGS),) >> LDFLAGS +=3D $(EXTRA_LDFLAGS) >> endif >> =20 >> -LIBS =3D $(LIBBPF) -lelf -lz >> +LIBS =3D -lelf -lz > > Hi Toke, > > You don't need to remove $(LIBBPF) here, because you add it in both > cases below (whether $(LIBBPF_DYNAMIC) is defined or not). Oh, right, good point; will fix :)