Re: linux-next: build failure after merge of the tip tree

From: Ingo Molnar
Date: Thu May 13 2021 - 06:51:54 EST



* Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:

> Hi all,
>
> After merging the tip tree, today's linux-next build (x86_64 allmodconfig)
> failed like this:
>
> In file included from tools/arch/x86/include/asm/nops.h:5,
> from arch/x86/decode.c:15:
> tools/arch/x86/include/asm/asm.h:185:24: error: invalid register name for 'current_stack_pointer'
> 185 | register unsigned long current_stack_pointer asm(_ASM_SP);
> | ^~~~~~~~~~~~~~~~~~~~~
>
> Caused by commit
>
> eef23e72b78b ("x86/asm: Use _ASM_BYTES() in <asm/nops.h>")
>
> I have used the tip tree from next-20210512 for today.

Hm, this must be some cross-build artifact or toolchain version dependency
- as plain native build of x86-64 allmodconfig builds just fine:

CC arch/x86/decode.o
LD arch/x86/objtool-in.o

I tried with gcc-8, but that didn't trigger it.

I suppose the workaround below would make it build - but that's not a real
solution.

hpa, any ideas?

Thanks,

Ingo

diff --git a/tools/arch/x86/include/asm/asm.h b/tools/arch/x86/include/asm/asm.h
index 507a37a46027..ada5482c024a 100644
--- a/tools/arch/x86/include/asm/asm.h
+++ b/tools/arch/x86/include/asm/asm.h
@@ -176,14 +176,6 @@

/* For C file, we already have NOKPROBE_SYMBOL macro */

-/*
- * This output constraint should be used for any inline asm which has a "call"
- * instruction. Otherwise the asm may be inserted before the frame pointer
- * gets set up by the containing function. If you forget to do this, objtool
- * may print a "call without frame pointer save/setup" warning.
- */
-register unsigned long current_stack_pointer asm(_ASM_SP);
-#define ASM_CALL_CONSTRAINT "+r" (current_stack_pointer)
#endif /* __ASSEMBLY__ */

#endif /* _ASM_X86_ASM_H */