Subject: Re: linux-next: manual merge of the rust tree with Linus' tree

From: Peter Zijlstra <[email-masked]>
Date: Wed, 13 Jul 2022 13:39:31 +0200

On Wed, Jul 13, 2022 at 08:34:09PM +1000, Stephen Rothwell wrote:
> Hi all,
> 
> Today's linux-next merge of the rust tree got a conflict in:
> 
>   arch/x86/Makefile
> 
> between commit:
> 
>   f43b9876e857 ("x86/retbleed: Add fine grained Kconfig knobs")
> 
> from Linus' tree and commit:
> 
>   0ea4b9a1bece ("Kbuild: add Rust support")
> 
> from the rust tree.
> 
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging.  You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
> 
> -- 
> Cheers,
> Stephen Rothwell
> 
> diff --cc arch/x86/Makefile
> index 1f40dad30d50,5ac9b324751d..000000000000
> --- a/arch/x86/Makefile
> +++ b/arch/x86/Makefile
> @@@ -21,12 -21,8 +21,13 @@@ ifdef CONFIG_CC_IS_CLAN
>   RETPOLINE_CFLAGS	:= -mretpoline-external-thunk
>   RETPOLINE_VDSO_CFLAGS	:= -mretpoline
>   endif
> + RETPOLINE_RUSTFLAGS	:= -Ctarget-feature=+retpoline-external-thunk
>   
>  +ifdef CONFIG_RETHUNK
>  +RETHUNK_CFLAGS		:= -mfunction-return=thunk-extern
>  +RETPOLINE_CFLAGS	+= $(RETHUNK_CFLAGS)
>  +endif

Does Rust have the equivalent of -mfunction-return=thunk-extern ?

Related, how does Rust deal with all the various CC_HAS_ Kconfig stuff?
What if C has the relevant option but Rust does not; then we must not
have the feature enabled or there will be a mis-match.

Do we now have to litter everythign with RUSTC_HAS_ ?