Re: objtool warning breaks build for fs/dlm/lock.o

From: Arnd Bergmann
Date: Mon May 18 2020 - 15:58:12 EST


On Fri, May 8, 2020 at 1:29 AM Josh Poimboeuf <jpoimboe@xxxxxxxxxx> wrote:
>
> On Wed, May 06, 2020 at 04:07:25PM +0200, Arnd Bergmann wrote:
> > Hi,
> >
> > During randconfig testing with clang-10 I came across a number
> > of additional objtool warnings, I'll send another mail about those
> > when I have collected more information and some object files.
> >
> > This one sticks out however, as objtool returns an error code that
> > stops the build:
>
> > fs/dlm/lock.o: warning: objtool: __receive_convert_reply()+0x1e5: can't find jump dest instruction at .text+0xcaa7
>
> Thanks for sending the patch for this one. Objtool always gets confused
> by new compiler versions, I really think we need to revert
>
> 644592d32837 ("objtool: Fail the kernel build on fatal errors")
>
> because objtool is never going to be reliable enough such that we can be
> confident that failing the build is the right thing to do.

I'm now struggling with a clang -fintegrated-as related failure:

arch/x86/kernel/ftrace_64.o: warning: objtool: missing symbol for insn
at offset 0x16
make[4]: *** [/git/arm-soc/scripts/Makefile.build:355:
arch/x86/kernel/ftrace_64.o] Error 255

Using this as a local workaround, but I'd like to find out if this is a bug
in clang or in objtool:

diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
index e77261db2391..b4a0f3dd321d 100644
--- a/arch/x86/kernel/Makefile
+++ b/arch/x86/kernel/Makefile
@@ -38,6 +38,9 @@ OBJECT_FILES_NON_STANDARD_paravirt_patch.o := y
ifdef CONFIG_FRAME_POINTER
OBJECT_FILES_NON_STANDARD_ftrace_$(BITS).o := y
endif
+ifdef CONFIG_CC_IS_CLANG
+AFLAGS_ftrace_64.o += -fno-integrated-as
+endif

# If instrumentation of this dir is enabled, boot hangs during first second.
# Probably could be more selective here, but note that files related to irqs,

Attaching the broken object file fore reference.

Arnd

Attachment: ftrace_64.o
Description: application/object