Message ID | 20230108021450.120791-1-yakoyoku@gmail.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp1533108wrt; Sat, 7 Jan 2023 18:25:38 -0800 (PST) X-Google-Smtp-Source: AMrXdXsOMbz7YaOOU2NDoxk+mn825SL5q06mv1QAvF6JwLFH59DHdo37ZSGfznXViYxCU4s8ZNo5 X-Received: by 2002:a17:90a:bb07:b0:225:a3ff:8016 with SMTP id u7-20020a17090abb0700b00225a3ff8016mr64797923pjr.17.1673144737913; Sat, 07 Jan 2023 18:25:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673144737; cv=none; d=google.com; s=arc-20160816; b=IFSsyNSQbSCYaj/zPqmtejSfFk3b6ha/wKXodD2wqQlxpyL+Y7NG7dIwjXbIAsdFZq IN4Yk/70YMgABLfrnU2WI8gkvtG97mL3SSrXn0gFm9a+1g/Nfsuuj3eYA13SleQeYKWa m5AGMENeTmzHEohVm2ljv8l12w1Kb/0MRLTdkPt0SnsOK9pB0AmYymwbuOuLNbz+SA7A WWFhsd42wTi7M2C5by164rB7XzMJpntAMSkTjn9rwy/HG49mtNOeJ4+8NtIOgCcBU/JK YMFCHdpLMZZh5wBF9org5s8JC4sDNIJb3018dshrucPFve1CRsacaHrLcv22fOcWy8eW jlmA== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=TySYhQ0Jtcrqk14K9ELuTQHEFCCUvE5Ry0vMrhn1yNY=; b=GtZHuhDZgWfJdwQcfoh1oQQnXSrbYDUGoK7dZUG2Yvb2oUP1/5zC5+ujzp8GBTgKfM yWgpQFdtw28tPiQe0II35Zp12vVY29i10dQTTT4rd/fPgIjnICFcZfhMau0WRfnlSXbe EcS+4FJdAejWsVZ+LI66SCHrroriQrTyTenk8bDoApjzQNNL5PhB5/Szxs5agWaijR96 6x/jm8PS9qP4eR256UsPM10NsA4654egQJJDNNL3Hd71dqNdfddApGOpgtKHx1CMl+f7 jIJ4Z4IK68H5WRb6mCXQ7ixiSmINZNbK2XSCvjX2BW8QF1abhtwXEC13FZVTzMyCTpwx 9A1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=JziVO8er; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id r20-20020a6560d4000000b0045c88c3b799si3599488pgv.709.2023.01.07.18.25.22; Sat, 07 Jan 2023 18:25:37 -0800 (PST) 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=@gmail.com header.s=20210112 header.b=JziVO8er; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232675AbjAHCPD (ORCPT <rfc822;old.home.clock.tower@gmail.com> + 99 others); Sat, 7 Jan 2023 21:15:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54900 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231551AbjAHCPB (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Sat, 7 Jan 2023 21:15:01 -0500 Received: from mail-oa1-x32.google.com (mail-oa1-x32.google.com [IPv6:2001:4860:4864:20::32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A731215F01; Sat, 7 Jan 2023 18:15:00 -0800 (PST) Received: by mail-oa1-x32.google.com with SMTP id 586e51a60fabf-14fb7fdb977so5575670fac.12; Sat, 07 Jan 2023 18:15:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=TySYhQ0Jtcrqk14K9ELuTQHEFCCUvE5Ry0vMrhn1yNY=; b=JziVO8erlR05YSjzCQZt0BCL2ljqtoT13d1EiOPj3llCyuuzbjSXJ7y60dww0xtf5F gQqzj9T0z/iX+z5of9StpzewndFGf9XIqaIrDIOWPRBN2AWQgSv/wRC0BrfsLJelyowA odUSwyqGGkDxy/Scnm19JB+EapDjJzHjeFPfr8v+/5Jt/YUmg/JnJICbSRLoXtHxbAcV uU3PCSG5Ee9AW4mpw9vUUI5zdO+qc1y1dIP0ZlBZOpY1DbCmSt1HAgaEDfQLxJsInJ7D KbVhrKA0fF4HopRBbM4a8Lvdv2ytGiNx9rlzurPfQ3WHSJGWG9h5Zi2a04g1BtEh+TTk MdCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=TySYhQ0Jtcrqk14K9ELuTQHEFCCUvE5Ry0vMrhn1yNY=; b=f9N2BknGMSTewWobKq10uEVqhc32s+R2z3qpq0sPWomHhekWDWEqdxH1q3PI8EsuG4 8AqA4/jJdGw09wL1yl6BEw0BfM58+TJPCKohjRN9+CT081Yc/10dVX9ytIS431D7RL6t KCf+vpLzH1x6yl8qhJdKxKcI1Ot6SB/3UdW77nmgzrNT4OSoevUgQXoVFhJgdEOQ2Z1g 9XEOd3x15xW8hi/R4rqxSHMzIfn1AV8cMBfP7M6KIaeRrdp4g9bk8vUP209mQKfd2ARI 4K6S97YEkAUWKrDUP399N1vlg/MO0rOEdFd9rZfDuLi3kihyF6N2rb9RnISe/qIMqhot 390Q== X-Gm-Message-State: AFqh2kqBrG94okBqAVe3CWxwup0KvEB0H8arLjLwUdEz7D4yv56XClDa tcQd+TTupl2f67sU35NZfjELNSJKlnI= X-Received: by 2002:a05:6870:8a0a:b0:144:1ba:3c67 with SMTP id p10-20020a0568708a0a00b0014401ba3c67mr33940922oaq.51.1673144099655; Sat, 07 Jan 2023 18:14:59 -0800 (PST) Received: from tx3000mach.io (static.220.238.itcsa.net. [190.15.220.238]) by smtp.gmail.com with ESMTPSA id y6-20020a056870418600b00144e18d8525sm2367553oac.25.2023.01.07.18.14.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Jan 2023 18:14:59 -0800 (PST) From: Martin Rodriguez Reboredo <yakoyoku@gmail.com> To: linux-kernel@vger.kernel.org Cc: Arnaldo Carvalho de Melo <acme@kernel.org>, Eric Curtin <ecurtin@redhat.com>, Neal Gompa <neal@gompa.dev>, bpf@vger.kernel.org, rust-for-linux@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>, Andrii Nakryiko <andrii@kernel.org>, Jiri Olsa <jolsa@kernel.org>, Yonghong Song <yhs@fb.com>, Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> Subject: [PATCH v2] scripts: Exclude Rust CUs with pahole Date: Sat, 7 Jan 2023 23:14:50 -0300 Message-Id: <20230108021450.120791-1-yakoyoku@gmail.com> X-Mailer: git-send-email 2.39.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS 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: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1754419416993371178?= X-GMAIL-MSGID: =?utf-8?q?1754419416993371178?= |
Series |
[v2] scripts: Exclude Rust CUs with pahole
|
|
Commit Message
Martin Rodriguez Reboredo
Jan. 8, 2023, 2:14 a.m. UTC
Version 1.24 of pahole has the capability to exclude compilation units (CUs) of specific languages. Rust, as of writing, is not currently supported by pahole and if it's used with a build that has BTF debugging enabled it results in malformed kernel and module binaries (see Rust-for-Linux/linux#735). So it's better for pahole to exclude Rust CUs until support for it arrives. Reviewed-by: Eric Curtin <ecurtin@redhat.com> Tested-by: Eric Curtin <ecurtin@redhat.com> Reviewed-by: Neal Gompa <neal@gompa.dev> Tested-by: Neal Gompa <neal@gompa.dev> Signed-off-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com> --- V1 -> V2: Removed dependency on auto.conf init/Kconfig | 2 +- lib/Kconfig.debug | 9 +++++++++ scripts/Makefile.modfinal | 4 ++++ scripts/link-vmlinux.sh | 4 ++++ 4 files changed, 18 insertions(+), 1 deletion(-)
Comments
On Sun, Jan 8, 2023 at 3:14 AM Martin Rodriguez Reboredo <yakoyoku@gmail.com> wrote: > > Version 1.24 of pahole has the capability to exclude compilation units It would be nice to have a reference ("...of pahole [1][2]") to the commits that introduced it in `pahole` -- especially the second one below has a nice commit message about the use case for this patch: Link: https://git.kernel.org/pub/scm/devel/pahole/pahole.git/commit/?id=49358dfe2aaae4e90b072332c3e324019826783f [1] Link: https://git.kernel.org/pub/scm/devel/pahole/pahole.git/commit/?id=8ee363790b7437283c53090a85a9fec2f0b0fbc4 [2] > (CUs) of specific languages. Rust, as of writing, is not currently > supported by pahole and if it's used with a build that has BTF debugging > enabled it results in malformed kernel and module binaries (see > Rust-for-Linux/linux#735). So it's better for pahole to exclude Rust I think this came from a rendered link from GitHub, so please transform it into a link since otherwise people may be confused where to find it: Link: https://github.com/Rust-for-Linux/linux/issues/735 [3] > Reviewed-by: Eric Curtin <ecurtin@redhat.com> > Tested-by: Eric Curtin <ecurtin@redhat.com> > Reviewed-by: Neal Gompa <neal@gompa.dev> > Tested-by: Neal Gompa <neal@gompa.dev> Given the patch has had non-trivial changes (in fact, in this case, it fundamentally changed the implementation), these tags should be removed and requested again. Thanks for this! Acked-by: Miguel Ojeda <ojeda@kernel.org> Cheers, Miguel
On Sun, 8 Jan 2023 at 02:15, Martin Rodriguez Reboredo <yakoyoku@gmail.com> wrote: > > Version 1.24 of pahole has the capability to exclude compilation units > (CUs) of specific languages. Rust, as of writing, is not currently > supported by pahole and if it's used with a build that has BTF debugging > enabled it results in malformed kernel and module binaries (see > Rust-for-Linux/linux#735). So it's better for pahole to exclude Rust > CUs until support for it arrives. > > Reviewed-by: Eric Curtin <ecurtin@redhat.com> > Tested-by: Eric Curtin <ecurtin@redhat.com> > Reviewed-by: Neal Gompa <neal@gompa.dev> > Tested-by: Neal Gompa <neal@gompa.dev> > Signed-off-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com> > --- > V1 -> V2: Removed dependency on auto.conf > > init/Kconfig | 2 +- > lib/Kconfig.debug | 9 +++++++++ > scripts/Makefile.modfinal | 4 ++++ > scripts/link-vmlinux.sh | 4 ++++ > 4 files changed, 18 insertions(+), 1 deletion(-) > > diff --git a/init/Kconfig b/init/Kconfig > index 694f7c160c9c..360aef8d7292 100644 > --- a/init/Kconfig > +++ b/init/Kconfig > @@ -1913,7 +1913,7 @@ config RUST > depends on !MODVERSIONS > depends on !GCC_PLUGINS > depends on !RANDSTRUCT > - depends on !DEBUG_INFO_BTF > + depends on !DEBUG_INFO_BTF || PAHOLE_HAS_LANG_EXCLUDE > select CONSTRUCTORS > help > Enables Rust support in the kernel. > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug > index ea4c903c9868..d473d491e709 100644 > --- a/lib/Kconfig.debug > +++ b/lib/Kconfig.debug > @@ -364,6 +364,15 @@ config PAHOLE_HAS_BTF_TAG > btf_decl_tag) or not. Currently only clang compiler implements > these attributes, so make the config depend on CC_IS_CLANG. > > +config PAHOLE_HAS_LANG_EXCLUDE > + def_bool PAHOLE_VERSION >= 124 > + help > + Support for the --lang_exclude flag which makes pahole exclude > + compilation units from the supplied language. Used in Kbuild to > + omit Rust CUs which are not supported in version 1.24 of pahole, > + otherwise it would emit malformed kernel and module binaries when > + using DEBUG_INFO_BTF_MODULES. > + > config DEBUG_INFO_BTF_MODULES > def_bool y > depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF > diff --git a/scripts/Makefile.modfinal b/scripts/Makefile.modfinal > index 25bedd83644b..a880f2d6918f 100644 > --- a/scripts/Makefile.modfinal > +++ b/scripts/Makefile.modfinal > @@ -30,6 +30,10 @@ quiet_cmd_cc_o_c = CC [M] $@ > > ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink) > > +ifdef CONFIG_RUST > +PAHOLE_FLAGS += --lang_exclude=rust > +endif > + > quiet_cmd_ld_ko_o = LD [M] $@ > cmd_ld_ko_o += \ > $(LD) -r $(KBUILD_LDFLAGS) \ > diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh > index 918470d768e9..69eb0bea89bf 100755 > --- a/scripts/link-vmlinux.sh > +++ b/scripts/link-vmlinux.sh > @@ -122,6 +122,10 @@ gen_btf() > return 1 > fi > > + if is_enabled CONFIG_RUST; then > + PAHOLE_FLAGS="${PAHOLE_FLAGS} --lang_exclude=rust" > + fi If it was me, I would do things more like v1 of the patch (instead just checking pahole version), because this is the only flag set in scripts/Makefile.modfinal, which is a little confusing and inconsistent. It's ok to set --lang_exclude=rust in all cases, as long as pahole_ver is recent enough. +if [ "${pahole_ver}" -ge "124" ]; then + # see PAHOLE_HAS_LANG_EXCLUDE + extra_paholeopt="${extra_paholeopt} --lang_exclude=rust" +fi But I'm not too opinionated either on this so... Reviewed-by: Eric Curtin <ecurtin@redhat.com> can be reapplied. I'm gonna test this again to see if it works in a Fedora Asahi rpm build. > + > vmlinux_link ${1} > > info "BTF" ${2} > -- > 2.39.0 >
On Sun, 8 Jan 2023 at 15:18, Eric Curtin <ecurtin@redhat.com> wrote: > > On Sun, 8 Jan 2023 at 02:15, Martin Rodriguez Reboredo > <yakoyoku@gmail.com> wrote: > > > > Version 1.24 of pahole has the capability to exclude compilation units > > (CUs) of specific languages. Rust, as of writing, is not currently > > supported by pahole and if it's used with a build that has BTF debugging > > enabled it results in malformed kernel and module binaries (see > > Rust-for-Linux/linux#735). So it's better for pahole to exclude Rust > > CUs until support for it arrives. > > > > Reviewed-by: Eric Curtin <ecurtin@redhat.com> > > Tested-by: Eric Curtin <ecurtin@redhat.com> > > Reviewed-by: Neal Gompa <neal@gompa.dev> > > Tested-by: Neal Gompa <neal@gompa.dev> > > Signed-off-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com> > > --- > > V1 -> V2: Removed dependency on auto.conf > > > > init/Kconfig | 2 +- > > lib/Kconfig.debug | 9 +++++++++ > > scripts/Makefile.modfinal | 4 ++++ > > scripts/link-vmlinux.sh | 4 ++++ > > 4 files changed, 18 insertions(+), 1 deletion(-) > > > > diff --git a/init/Kconfig b/init/Kconfig > > index 694f7c160c9c..360aef8d7292 100644 > > --- a/init/Kconfig > > +++ b/init/Kconfig > > @@ -1913,7 +1913,7 @@ config RUST > > depends on !MODVERSIONS > > depends on !GCC_PLUGINS > > depends on !RANDSTRUCT > > - depends on !DEBUG_INFO_BTF > > + depends on !DEBUG_INFO_BTF || PAHOLE_HAS_LANG_EXCLUDE > > select CONSTRUCTORS > > help > > Enables Rust support in the kernel. > > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug > > index ea4c903c9868..d473d491e709 100644 > > --- a/lib/Kconfig.debug > > +++ b/lib/Kconfig.debug > > @@ -364,6 +364,15 @@ config PAHOLE_HAS_BTF_TAG > > btf_decl_tag) or not. Currently only clang compiler implements > > these attributes, so make the config depend on CC_IS_CLANG. > > > > +config PAHOLE_HAS_LANG_EXCLUDE > > + def_bool PAHOLE_VERSION >= 124 > > + help > > + Support for the --lang_exclude flag which makes pahole exclude > > + compilation units from the supplied language. Used in Kbuild to > > + omit Rust CUs which are not supported in version 1.24 of pahole, > > + otherwise it would emit malformed kernel and module binaries when > > + using DEBUG_INFO_BTF_MODULES. > > + > > config DEBUG_INFO_BTF_MODULES > > def_bool y > > depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF > > diff --git a/scripts/Makefile.modfinal b/scripts/Makefile.modfinal > > index 25bedd83644b..a880f2d6918f 100644 > > --- a/scripts/Makefile.modfinal > > +++ b/scripts/Makefile.modfinal > > @@ -30,6 +30,10 @@ quiet_cmd_cc_o_c = CC [M] $@ > > > > ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink) > > > > +ifdef CONFIG_RUST > > +PAHOLE_FLAGS += --lang_exclude=rust > > +endif > > + > > quiet_cmd_ld_ko_o = LD [M] $@ > > cmd_ld_ko_o += \ > > $(LD) -r $(KBUILD_LDFLAGS) \ > > diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh > > index 918470d768e9..69eb0bea89bf 100755 > > --- a/scripts/link-vmlinux.sh > > +++ b/scripts/link-vmlinux.sh > > @@ -122,6 +122,10 @@ gen_btf() > > return 1 > > fi > > > > + if is_enabled CONFIG_RUST; then > > + PAHOLE_FLAGS="${PAHOLE_FLAGS} --lang_exclude=rust" > > + fi > > If it was me, I would do things more like v1 of the patch (instead > just checking pahole version), because this is the only flag set in > scripts/Makefile.modfinal, which is a little confusing and > inconsistent. It's ok to set --lang_exclude=rust in all cases, as long > as pahole_ver is recent enough. > > +if [ "${pahole_ver}" -ge "124" ]; then > + # see PAHOLE_HAS_LANG_EXCLUDE > + extra_paholeopt="${extra_paholeopt} --lang_exclude=rust" > +fi > > But I'm not too opinionated either on this so... > > Reviewed-by: Eric Curtin <ecurtin@redhat.com> > > can be reapplied. I'm gonna test this again to see if it works in a > Fedora Asahi rpm build. After testing I probably have to retract my Reviewed-by tag, apologies, bpf and all that did not work with this patch when I built in the fedora way, but, the good news is when I alter v1 of the patch to just check pahole version like so (instead of the is_enabled check): +if [ "${pahole_ver}" -ge "124" ]; then + # see PAHOLE_HAS_LANG_EXCLUDE + extra_paholeopt="${extra_paholeopt} --lang_exclude=rust" +fi it worked just fine, and that should satisfy the testbot and all the other ways we build too. Could we change to that @Martin Rodriguez Reboredo ? > > > > + > > vmlinux_link ${1} > > > > info "BTF" ${2} > > -- > > 2.39.0 > >
On 1/8/23 16:19, Eric Curtin wrote: > On Sun, 8 Jan 2023 at 15:18, Eric Curtin <ecurtin@redhat.com> wrote: >> >> On Sun, 8 Jan 2023 at 02:15, Martin Rodriguez Reboredo >> <yakoyoku@gmail.com> wrote: >>> >>> [ ... ] >> >> If it was me, I would do things more like v1 of the patch (instead >> just checking pahole version), because this is the only flag set in >> scripts/Makefile.modfinal, which is a little confusing and >> inconsistent. It's ok to set --lang_exclude=rust in all cases, as long >> as pahole_ver is recent enough. >> >> +if [ "${pahole_ver}" -ge "124" ]; then >> + # see PAHOLE_HAS_LANG_EXCLUDE >> + extra_paholeopt="${extra_paholeopt} --lang_exclude=rust" >> +fi >> >> But I'm not too opinionated either on this so... >> >> Reviewed-by: Eric Curtin <ecurtin@redhat.com> >> >> can be reapplied. I'm gonna test this again to see if it works in a >> Fedora Asahi rpm build. > > After testing I probably have to retract my Reviewed-by tag, > apologies, bpf and all that did not work with this patch when I built > in the fedora way, but, the good news is when I alter v1 of the patch > to just check pahole version like so (instead of the is_enabled > check): > > +if [ "${pahole_ver}" -ge "124" ]; then > + # see PAHOLE_HAS_LANG_EXCLUDE > + extra_paholeopt="${extra_paholeopt} --lang_exclude=rust" > +fi > > it worked just fine, and that should satisfy the testbot and all the > other ways we build too. Could we change to that @Martin Rodriguez > Reboredo ? > From my POV I don't like this way due to it being set regardless whether or not you are building the kernel with Rust. Though, because it doesn't affect non `CONFIG_RUST` builds, I _think_ it won't hurt if we use that way for now. Gonna send v3. >> >> >>> + >>> vmlinux_link ${1} >>> >>> info "BTF" ${2} >>> -- >>> 2.39.0 >>> >
On Wed, Jan 11, 2023 at 4:02 PM Martin Rodriguez Reboredo <yakoyoku@gmail.com> wrote: > > From my POV I don't like this way due to it being set regardless whether > or not you are building the kernel with Rust. Though, because it doesn't > affect non `CONFIG_RUST` builds, I _think_ it won't hurt if we use that > way for now. Gonna send v3. One advantage (in general, i.e. not talking about this case in particular) of having something always done is that it is one less moving part, so less complexity, everyone will test it all the time, etc. So if it is not expected to hurt, but it does for an unknown reason, then it would be nice to know as soon as possible, regardless of whether it is gated under `CONFIG_RUST` or not. Of course, it can always happen that something changes over time, and thus it may start to hurt in the future only, and therefore breaking everybody instead of a subset of people. But then again, the sooner we would know about that unexpected change, the better; especially since the goal is to eventually get to a point where `CONFIG_RUST` can start to be routinely enabled by common configurations etc. Cheers, Miguel
diff --git a/init/Kconfig b/init/Kconfig index 694f7c160c9c..360aef8d7292 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1913,7 +1913,7 @@ config RUST depends on !MODVERSIONS depends on !GCC_PLUGINS depends on !RANDSTRUCT - depends on !DEBUG_INFO_BTF + depends on !DEBUG_INFO_BTF || PAHOLE_HAS_LANG_EXCLUDE select CONSTRUCTORS help Enables Rust support in the kernel. diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index ea4c903c9868..d473d491e709 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -364,6 +364,15 @@ config PAHOLE_HAS_BTF_TAG btf_decl_tag) or not. Currently only clang compiler implements these attributes, so make the config depend on CC_IS_CLANG. +config PAHOLE_HAS_LANG_EXCLUDE + def_bool PAHOLE_VERSION >= 124 + help + Support for the --lang_exclude flag which makes pahole exclude + compilation units from the supplied language. Used in Kbuild to + omit Rust CUs which are not supported in version 1.24 of pahole, + otherwise it would emit malformed kernel and module binaries when + using DEBUG_INFO_BTF_MODULES. + config DEBUG_INFO_BTF_MODULES def_bool y depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF diff --git a/scripts/Makefile.modfinal b/scripts/Makefile.modfinal index 25bedd83644b..a880f2d6918f 100644 --- a/scripts/Makefile.modfinal +++ b/scripts/Makefile.modfinal @@ -30,6 +30,10 @@ quiet_cmd_cc_o_c = CC [M] $@ ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink) +ifdef CONFIG_RUST +PAHOLE_FLAGS += --lang_exclude=rust +endif + quiet_cmd_ld_ko_o = LD [M] $@ cmd_ld_ko_o += \ $(LD) -r $(KBUILD_LDFLAGS) \ diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh index 918470d768e9..69eb0bea89bf 100755 --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh @@ -122,6 +122,10 @@ gen_btf() return 1 fi + if is_enabled CONFIG_RUST; then + PAHOLE_FLAGS="${PAHOLE_FLAGS} --lang_exclude=rust" + fi + vmlinux_link ${1} info "BTF" ${2}