Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp623519pxb; Tue, 12 Apr 2022 09:21:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxhYJU0BUZg2ETGls6qwcEZGniuRcKtZuvXv1ced/P4GvEEjKexlwoJghRPW3N65IY0L5yY X-Received: by 2002:a17:907:1c0b:b0:6e8:7ec7:a217 with SMTP id nc11-20020a1709071c0b00b006e87ec7a217mr13070793ejc.664.1649780495955; Tue, 12 Apr 2022 09:21:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649780495; cv=none; d=google.com; s=arc-20160816; b=RzHbcxXyrGrn4RLy7BsAZaY53FeqzKKPZUlzx6DNoTi+BdMnGuhRoXVEPYZtqI9/LR S6wbfV+8aD0QsOl4mvUg/gC5kpoVHawdgTMfkqEYxH/IKJ7ACoxHzd7lalpoiWoH6uym blo4Icu+KXVcxYoh6h0s59ypWAVf4z2ccajMSawfsnP1X8JZQf3fc6GnUq0T7eJbWQ4R MfQefX9URq2YbX3/QZBogEQUd7b9quco8TZfbhAanfBXmVGefzJsn8HDmsnqag6+Rmc2 2aE+YuO/e1fbPaNMljI9UGFJoDO0Wv3su+hMFSworJsVZi3DnFwskgiDbZGkd9Eb84CM kmdA== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=KJLTQYDFkL42nC2HncqMkbcNmzVftXesvtYN8wd3buk=; b=ytzxyGfNvAbz69+F8U/bQNaNsN3h9AKQsK+adb3/z09KOaDTvanaC2QpfDNnZUcIT9 9eJq2ACh6Bm3DjrSu9AZeSzmGjJ73AwdwNVYwXMnUcSXCWIKUzQLZeZQqMzy+SXbH7B/ hhBuSa4+pVFkpVHCOt5SwxJAIrHzdaL2IuNYUa4j7YFV26ZB3vXwr4337I00dcPlsOCX Cbrd1hOh0Mj9LSccyKAlvSSqlu4kksUza6XuqU4FNNrmyDXNbsXOxllkn6+NSdhwjlK3 FQgd2iko6tFeEHOByTlRdZzPmyhtIVibCzF3w0z86Z9E2v+vocgX4vcShQK6MMxwpDht kUvA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ougDMake; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z89-20020a509e62000000b0041d6b63af8fsi7730541ede.163.2022.04.12.09.21.10; Tue, 12 Apr 2022 09:21:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ougDMake; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240177AbiDLGib (ORCPT + 99 others); Tue, 12 Apr 2022 02:38:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50832 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349595AbiDLGge (ORCPT ); Tue, 12 Apr 2022 02:36:34 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D2D6635A8F; Mon, 11 Apr 2022 23:33:51 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 72BCC618CF; Tue, 12 Apr 2022 06:33:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 863BEC385A1; Tue, 12 Apr 2022 06:33:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649745230; bh=4mZg68EaX6st2qOzELCdeSZlE7Q16+vpvbWIb/ob8/0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ougDMakejOUWjedZ1MuFsRPNk0p5ARy7wSf28B7bHLl7sr28lZv/LXsIOdPHdycT+ YK9lsg82zLNfr49Vjiiw1FqHeMi0Z///O81jUXf2H2+V6NDFtaIzGsb1WGjF8zcPXS QhihA3iJZd/PaBgSAFJVsYyA1zszrW0Ok6uh6yh8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Delyan Kratunov , Yonghong Song , Andrii Nakryiko , Sasha Levin Subject: [PATCH 5.10 024/171] libbpf: Fix build issue with llvm-readelf Date: Tue, 12 Apr 2022 08:28:35 +0200 Message-Id: <20220412062928.584006122@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220412062927.870347203@linuxfoundation.org> References: <20220412062927.870347203@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yonghong Song [ Upstream commit 0908a66ad1124c1634c33847ac662106f7f2c198 ] There are cases where clang compiler is packaged in a way readelf is a symbolic link to llvm-readelf. In such cases, llvm-readelf will be used instead of default binutils readelf, and the following error will appear during libbpf build: # Warning: Num of global symbols in # /home/yhs/work/bpf-next/tools/testing/selftests/bpf/tools/build/libbpf/sharedobjs/libbpf-in.o (367) # does NOT match with num of versioned symbols in # /home/yhs/work/bpf-next/tools/testing/selftests/bpf/tools/build/libbpf/libbpf.so libbpf.map (383). # Please make sure all LIBBPF_API symbols are versioned in libbpf.map. # --- /home/yhs/work/bpf-next/tools/testing/selftests/bpf/tools/build/libbpf/libbpf_global_syms.tmp ... # +++ /home/yhs/work/bpf-next/tools/testing/selftests/bpf/tools/build/libbpf/libbpf_versioned_syms.tmp ... # @@ -324,6 +324,22 @@ # btf__str_by_offset # btf__type_by_id # btf__type_cnt # +LIBBPF_0.0.1 # +LIBBPF_0.0.2 # +LIBBPF_0.0.3 # +LIBBPF_0.0.4 # +LIBBPF_0.0.5 # +LIBBPF_0.0.6 # +LIBBPF_0.0.7 # +LIBBPF_0.0.8 # +LIBBPF_0.0.9 # +LIBBPF_0.1.0 # +LIBBPF_0.2.0 # +LIBBPF_0.3.0 # +LIBBPF_0.4.0 # +LIBBPF_0.5.0 # +LIBBPF_0.6.0 # +LIBBPF_0.7.0 # libbpf_attach_type_by_name # libbpf_find_kernel_btf # libbpf_find_vmlinux_btf_id # make[2]: *** [Makefile:184: check_abi] Error 1 # make[1]: *** [Makefile:140: all] Error 2 The above failure is due to different printouts for some ABS versioned symbols. For example, with the same libbpf.so, $ /bin/readelf --dyn-syms --wide tools/lib/bpf/libbpf.so | grep "LIBBPF" | grep ABS 134: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBBPF_0.5.0 202: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBBPF_0.6.0 ... $ /opt/llvm/bin/readelf --dyn-syms --wide tools/lib/bpf/libbpf.so | grep "LIBBPF" | grep ABS 134: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBBPF_0.5.0@@LIBBPF_0.5.0 202: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBBPF_0.6.0@@LIBBPF_0.6.0 ... The binutils readelf doesn't print out the symbol LIBBPF_* version and llvm-readelf does. Such a difference caused libbpf build failure with llvm-readelf. The proposed fix filters out all ABS symbols as they are not part of the comparison. This works for both binutils readelf and llvm-readelf. Reported-by: Delyan Kratunov Signed-off-by: Yonghong Song Signed-off-by: Andrii Nakryiko Link: https://lore.kernel.org/bpf/20220204214355.502108-1-yhs@fb.com Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- tools/lib/bpf/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/tools/lib/bpf/Makefile +++ b/tools/lib/bpf/Makefile @@ -147,7 +147,7 @@ GLOBAL_SYM_COUNT = $(shell readelf -s -- sort -u | wc -l) VERSIONED_SYM_COUNT = $(shell readelf --dyn-syms --wide $(OUTPUT)libbpf.so | \ sed 's/\[.*\]//' | \ - awk '/GLOBAL/ && /DEFAULT/ && !/UND/ {print $$NF}' | \ + awk '/GLOBAL/ && /DEFAULT/ && !/UND|ABS/ {print $$NF}' | \ grep -Eo '[^ ]+@LIBBPF_' | cut -d@ -f1 | sort -u | wc -l) CMD_TARGETS = $(LIB_TARGET) $(PC_FILE) @@ -216,7 +216,7 @@ check_abi: $(OUTPUT)libbpf.so $(VERSION_ sort -u > $(OUTPUT)libbpf_global_syms.tmp; \ readelf --dyn-syms --wide $(OUTPUT)libbpf.so | \ sed 's/\[.*\]//' | \ - awk '/GLOBAL/ && /DEFAULT/ && !/UND/ {print $$NF}'| \ + awk '/GLOBAL/ && /DEFAULT/ && !/UND|ABS/ {print $$NF}'| \ grep -Eo '[^ ]+@LIBBPF_' | cut -d@ -f1 | \ sort -u > $(OUTPUT)libbpf_versioned_syms.tmp; \ diff -u $(OUTPUT)libbpf_global_syms.tmp \