lkml.org 
[lkml]   [2022]   [Jan]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 01/15] kbuild: Add $(KBUILD_HOSTLDFLAGS) to has_libelf test
    Date
    From: Nathan Chancellor <nathan@kernel.org>

    commit f634ca650f724347892068489c7920631a3aac6a upstream.

    Normally, invocations of $(HOSTCC) include $(KBUILD_HOSTLDFLAGS), which
    in turn includes $(HOSTLDFLAGS), which allows users to pass in their own
    flags when linking. However, the 'has_libelf' test does not, meaning
    that if a user requests a specific linker via HOSTLDFLAGS=-fuse-ld=...,
    it is not respected and the build might error.

    For example, if a user building with clang wants to use all of the LLVM
    tools without any GNU tools, they might remove all of the GNU tools from
    their system or PATH then build with

    $ make HOSTLDFLAGS=-fuse-ld=lld LLVM=1 LLVM_IAS=1

    which says use all of the LLVM tools, the integrated assembler, and
    ld.lld for linking host executables. Without this change, the build will
    error because $(HOSTCC) uses its default linker, rather than the one
    requested via -fuse-ld=..., which is GNU ld in clang's case in a default
    configuration.

    error: Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please
    install libelf-dev, libelf-devel or elfutils-libelf-devel
    make[1]: *** [Makefile:1260: prepare-objtool] Error 1

    Add $(KBUILD_HOSTLDFLAGS) to the 'has_libelf' test so that the linker
    choice is respected.

    Link: https://github.com/ClangBuiltLinux/linux/issues/479
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Paul Barker <paul.barker@sancloud.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    Makefile | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/Makefile
    +++ b/Makefile
    @@ -1022,7 +1022,7 @@ HOST_LIBELF_LIBS = $(shell pkg-config li

    ifdef CONFIG_STACK_VALIDATION
    has_libelf := $(call try-run,\
    - echo "int main() {}" | $(HOSTCC) -xc -o /dev/null $(HOST_LIBELF_LIBS) -,1,0)
    + echo "int main() {}" | $(HOSTCC) $(KBUILD_HOSTLDFLAGS) -xc -o /dev/null $(HOST_LIBELF_LIBS) -,1,0)
    ifeq ($(has_libelf),1)
    objtool_target := tools/objtool FORCE
    else

    \
     
     \ /
      Last update: 2022-01-18 17:07    [W:2.658 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site