From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.0 required=3.0 tests=BAYES_00,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4364C433ED for ; Fri, 7 May 2021 05:41:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 849E560FE9 for ; Fri, 7 May 2021 05:41:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231580AbhEGFm1 convert rfc822-to-8bit (ORCPT ); Fri, 7 May 2021 01:42:27 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:62164 "EHLO mx0b-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230444AbhEGFm1 (ORCPT ); Fri, 7 May 2021 01:42:27 -0400 Received: from pps.filterd (m0109332.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 1475eICI017930 for ; Thu, 6 May 2021 22:41:27 -0700 Received: from maileast.thefacebook.com ([163.114.130.16]) by mx0a-00082601.pphosted.com with ESMTP id 38cspg9afy-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Thu, 06 May 2021 22:41:27 -0700 Received: from intmgw001.37.frc1.facebook.com (2620:10d:c0a8:1b::d) by mail.thefacebook.com (2620:10d:c0a8:82::d) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Thu, 6 May 2021 22:41:26 -0700 Received: by devbig012.ftw2.facebook.com (Postfix, from userid 137359) id 01CC72ED7617; Thu, 6 May 2021 22:41:22 -0700 (PDT) From: Andrii Nakryiko To: , , , CC: , Subject: [RFC PATCH bpf-next 0/7] BPF static linker: global symbols visibility Date: Thu, 6 May 2021 22:41:12 -0700 Message-ID: <20210507054119.270888-1-andrii@kernel.org> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT X-FB-Internal: Safe Content-Type: text/plain X-Proofpoint-GUID: uqOq9new3871lbJrQLzKP9jPZoQuuIlF X-Proofpoint-ORIG-GUID: uqOq9new3871lbJrQLzKP9jPZoQuuIlF X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.761 definitions=2021-05-07_01:2021-05-06,2021-05-07 signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 priorityscore=1501 lowpriorityscore=0 spamscore=0 suspectscore=0 mlxlogscore=999 mlxscore=0 clxscore=1015 impostorscore=0 adultscore=0 malwarescore=0 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2105070042 X-FB-Internal: deliver Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org This RFC explores dropping static variables from BPF skeleton and leaving them for use only within BPF object file. Instead, BPF static linker is extended with support for controlling global symbol visibility outside of a single BPF object file through STV_HIDDEN and STV_INTERNAL ELF symbol visibility. See patch #7 for all the details, justification, and comparison with user-space linker behavior. Andrii Nakryiko (7): bpftool: strip const/volatile/restrict modifiers from .bss and .data vars libbpf: add per-file linker opts selftests/bpf: stop using static variables for passing data to/from user-space bpftool: stop emitting static variables in BPF skeleton libbpf: fix ELF symbol visibility update logic libbpf: treat STV_INTERNAL same as STV_HIDDEN for functions libbpf: convert STV_HIDDEN symbols into STV_INTERNAL after linking tools/bpf/bpftool/gen.c | 8 ++- tools/lib/bpf/libbpf.c | 11 ++-- tools/lib/bpf/libbpf.h | 10 ++- tools/lib/bpf/linker.c | 62 +++++++++++++++---- .../selftests/bpf/prog_tests/send_signal.c | 2 +- .../selftests/bpf/prog_tests/skeleton.c | 6 +- .../selftests/bpf/prog_tests/static_linked.c | 5 -- .../selftests/bpf/progs/bpf_iter_test_kern4.c | 4 +- tools/testing/selftests/bpf/progs/kfree_skb.c | 4 +- tools/testing/selftests/bpf/progs/tailcall3.c | 2 +- tools/testing/selftests/bpf/progs/tailcall4.c | 2 +- tools/testing/selftests/bpf/progs/tailcall5.c | 2 +- .../selftests/bpf/progs/tailcall_bpf2bpf2.c | 2 +- .../selftests/bpf/progs/tailcall_bpf2bpf4.c | 2 +- .../selftests/bpf/progs/test_check_mtu.c | 4 +- .../selftests/bpf/progs/test_cls_redirect.c | 4 +- .../bpf/progs/test_global_func_args.c | 2 +- .../selftests/bpf/progs/test_rdonly_maps.c | 6 +- .../selftests/bpf/progs/test_skeleton.c | 4 +- .../bpf/progs/test_snprintf_single.c | 2 +- .../selftests/bpf/progs/test_sockmap_listen.c | 4 +- .../selftests/bpf/progs/test_static_linked1.c | 8 +-- .../selftests/bpf/progs/test_static_linked2.c | 8 +-- 23 files changed, 105 insertions(+), 59 deletions(-) -- 2.30.2