From: Bill Wendling <morbo@xxxxxxxxxx> exec_in_big_real_mode() uses inline asm that defines labels that are globally. Clang decides that it can inline this function, which causes the assembler to complain about duplicate symbols. Mark the function as "noinline" to prevent this. Signed-off-by: Bill Wendling <morbo@xxxxxxxxxx> [sean: use noinline from compiler.h, call out the globally visible aspect] Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx> --- x86/realmode.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x86/realmode.c b/x86/realmode.c index b4fa603..7a4423e 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1,3 +1,5 @@ +#include <linux/compiler.h> + #ifndef USE_SERIAL #define USE_SERIAL #endif @@ -178,7 +180,7 @@ static inline void init_inregs(struct regs *regs) inregs.esp = (unsigned long)&tmp_stack.top; } -static void exec_in_big_real_mode(struct insn_desc *insn) +static noinline void exec_in_big_real_mode(struct insn_desc *insn) { unsigned long tmp; static struct regs save; -- 2.33.0.309.g3052b89438-goog