Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp821422ybl; Wed, 11 Dec 2019 08:02:23 -0800 (PST) X-Google-Smtp-Source: APXvYqzDjglC/0z3/pAXwLOL6OsSlTDCuFAQf7cFHRnhEk1GZ8tAcdmvWVRnst2au4iuFe6+Eggb X-Received: by 2002:a05:6830:1407:: with SMTP id v7mr2927551otp.58.1576080143308; Wed, 11 Dec 2019 08:02:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576080143; cv=none; d=google.com; s=arc-20160816; b=WUyp/yCjzbUegifXb6FroyIl6R+69j0mDP+VWTALSPmOgODexqe7/zAUY6YECJtTlZ W9EtenFeXguvF+/ENNsY+STtkGFLDDBD458QmYN508CETBOGtL0iaePKSZIM6/BBdCBb 6bJy/bBbq2tgxnssB1NWx6LIk+aplyarYWGuFtoUXiRcT6BPnUjho3a4FuLhIq6bTy+H f68y/53YqRSQmf3Ou4H0GwPQgqMlOUCLfCzxKS+IJdrH9IZ2wAUNoBx3XS7MITOUVsYt 5Lhm6hyHbb7DJDLHvpmTw7d9waxBa2+AN3b1bclmDwH5WwpFo58n1flQ2n2fvndL4ysp DcAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:mail-followup-to :message-id:subject:cc:to:from:date; bh=Hxq4s7+zabQfJ58hlwIIXuZ5ECUSSh1ZeJvZDSXHkvY=; b=CmaLfNhItLrVTzdtBGQsXZvCbUuBaVSbFFKyO/Jtboo2nefhVdLSDmCocqAiFC1EI8 MTT4eDDVl8+3Fss/dI3ND2yraZI+hiSUvpc3B7TyxVOrhlLo5P5PgkJ2ZckfF5tETl/L nf3j1Id/Uaiuq/6PYbTPfrjuRYfC5p2G8Ltuw5sUpl1o0YkeUTZSGxDpk6xYjGz43k8Y QljockgfDAgGmjwMIROeBgWCRGmdD40gEFpXybml5FfiMf/u+4X1WJiJ3NEZPgZWsnk9 KBglTO4XGACLy7wTm3rnTF0Ixffz9PyyzAV5irzCfAjjZ1UAaQMLBsV98u1bUNxVgBx9 xR8w== 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 l3si1350967otb.319.2019.12.11.08.02.05; Wed, 11 Dec 2019 08:02:23 -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 S2387433AbfLKQAw (ORCPT + 99 others); Wed, 11 Dec 2019 11:00:52 -0500 Received: from hall.aurel32.net ([195.154.113.88]:41108 "EHLO hall.aurel32.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731491AbfLKQAp (ORCPT ); Wed, 11 Dec 2019 11:00:45 -0500 Received: from aurel32 by hall.aurel32.net with local (Exim 4.92) (envelope-from ) id 1if4Pk-0008An-F6; Wed, 11 Dec 2019 17:00:36 +0100 Date: Wed, 11 Dec 2019 17:00:36 +0100 From: Aurelien Jarno To: Justin Forbes Cc: Thadeu Lima de Souza Cascardo , Daniel Borkmann , Song Liu , Andrii Nakryiko , Alexei Starovoitov , LKML , "open list:BPF (Safe dynamic programs and tools)" , Yonghong Song , "open list:BPF (Safe dynamic programs and tools)" , linuxppc-dev@lists.ozlabs.org, Martin KaFai Lau , debian-kernel@lists.debian.org Subject: Re: [PATCH] libbpf: fix readelf output parsing on powerpc with recent binutils Message-ID: <20191211160036.GV2974@aurel32.net> Mail-Followup-To: Justin Forbes , Thadeu Lima de Souza Cascardo , Daniel Borkmann , Song Liu , Andrii Nakryiko , Alexei Starovoitov , LKML , "open list:BPF (Safe dynamic programs and tools)" , Yonghong Song , "open list:BPF (Safe dynamic programs and tools)" , linuxppc-dev@lists.ozlabs.org, Martin KaFai Lau , debian-kernel@lists.debian.org References: <20191201195728.4161537-1-aurelien@aurel32.net> <87zhgbe0ix.fsf@mpe.ellerman.id.au> <20191202093752.GA1535@localhost.localdomain> <20191210222553.GA4580@calabresa> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2019-12-11 09:33, Justin Forbes wrote: > On Tue, Dec 10, 2019 at 4:26 PM Thadeu Lima de Souza Cascardo > wrote: > > > > On Tue, Dec 10, 2019 at 12:58:33PM -0600, Justin Forbes wrote: > > > On Mon, Dec 2, 2019 at 3:37 AM Daniel Borkmann wrote: > > > > > > > > On Mon, Dec 02, 2019 at 04:53:26PM +1100, Michael Ellerman wrote: > > > > > Aurelien Jarno writes: > > > > > > On powerpc with recent versions of binutils, readelf outputs an extra > > > > > > field when dumping the symbols of an object file. For example: > > > > > > > > > > > > 35: 0000000000000838 96 FUNC LOCAL DEFAULT [: 8] 1 btf_is_struct > > > > > > > > > > > > The extra "[: 8]" prevents the GLOBAL_SYM_COUNT variable to > > > > > > be computed correctly and causes the checkabi target to fail. > > > > > > > > > > > > Fix that by looking for the symbol name in the last field instead of the > > > > > > 8th one. This way it should also cope with future extra fields. > > > > > > > > > > > > Signed-off-by: Aurelien Jarno > > > > > > --- > > > > > > tools/lib/bpf/Makefile | 4 ++-- > > > > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > > > > > Thanks for fixing that, it's been on my very long list of test failures > > > > > for a while. > > > > > > > > > > Tested-by: Michael Ellerman > > > > > > > > Looks good & also continues to work on x86. Applied, thanks! > > > > > > This actually seems to break horribly on PPC64le with binutils 2.33.1 > > > resulting in: > > > Warning: Num of global symbols in sharedobjs/libbpf-in.o (32) does NOT > > > match with num of versioned symbols in libbpf.so (184). Please make > > > sure all LIBBPF_API symbols are versioned in libbpf.map. > > > > > > This is the only arch that fails, with x86/arm/aarch64/s390 all > > > building fine. Reverting this patch allows successful build across > > > all arches. > > > > > > Justin > > > > Well, I ended up debugging this same issue and had the same fix as Jarno's when > > I noticed his fix was already applied. > > > > I just installed a system with the latest binutils, 2.33.1, and it still breaks > > without such fix. Can you tell what is the output of the following command on > > your system? > > > > readelf -s --wide tools/lib/bpf/sharedobjs/libbpf-in.o | cut -d "@" -f1 | sed 's/_v[0-9]_[0-9]_[0-9].*//' | awk '/GLOBAL/ && /DEFAULT/ && !/UND/ {print $0}' > > > > readelf -s --wide tools/lib/bpf/sharedobjs/libbpf-in.o | cut -d "@" > -f1 | sed 's/_v[0-9]_[0-9]_[0-9].*//' | awk '/GLOBAL/ && /DEFAULT/ && > !/UND/ {print $0}' > 373: 00000000000141bc 1376 FUNC GLOBAL DEFAULT 1 libbpf_num_possible_cpus [: 8] > 375: 000000000001869c 176 FUNC GLOBAL DEFAULT 1 btf__free [: 8] It seems that in your case the localentry part is added after the symbol name. That doesn't match what is done in upstream binutils: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/readelf.c;hb=refs/heads/master#l11485 Which version of binutils are you using? It looks like your version has been modified to workaround this exact issue. -- Aurelien Jarno GPG: 4096R/1DDD8C9B aurelien@aurel32.net http://www.aurel32.net