lkml.org 
[lkml]   [2019]   [Mar]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 19/52] selftests: seccomp: use LDLIBS instead of LDFLAGS
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    [ Upstream commit 5bbc73a841d7f0bbe025a342146dde462a796a5a ]

    seccomp_bpf fails to build due to undefined reference errors:

    aarch64-linaro-linux-gcc --sysroot=/build/tmp-rpb-glibc/sysroots/hikey
    -O2 -pipe -g -feliminate-unused-debug-types -Wl,-no-as-needed -Wall
    -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -lpthread seccomp_bpf.c -o
    /build/tmp-rpb-glibc/work/hikey-linaro-linux/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf
    /tmp/ccrlR3MW.o: In function `tsync_sibling':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1920: undefined reference to `sem_post'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1920: undefined reference to `sem_post'
    /tmp/ccrlR3MW.o: In function `TSYNC_setup':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1863: undefined reference to `sem_init'
    /tmp/ccrlR3MW.o: In function `TSYNC_teardown':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1904: undefined reference to `sem_destroy'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1897: undefined reference to `pthread_kill'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1898: undefined reference to `pthread_cancel'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1899: undefined reference to `pthread_join'
    /tmp/ccrlR3MW.o: In function `tsync_start_sibling':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1941: undefined reference to `pthread_create'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1941: undefined reference to `pthread_create'
    /tmp/ccrlR3MW.o: In function `TSYNC_siblings_fail_prctl':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1978: undefined reference to `sem_wait'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1990: undefined reference to `pthread_join'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1992: undefined reference to `pthread_join'
    /tmp/ccrlR3MW.o: In function `tsync_start_sibling':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1941: undefined reference to `pthread_create'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1941: undefined reference to `pthread_create'
    /tmp/ccrlR3MW.o: In function `TSYNC_two_siblings_with_ancestor':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2016: undefined reference to `sem_wait'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2032: undefined reference to `pthread_join'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2034: undefined reference to `pthread_join'
    /tmp/ccrlR3MW.o: In function `tsync_start_sibling':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1941: undefined reference to `pthread_create'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1941: undefined reference to `pthread_create'
    /tmp/ccrlR3MW.o: In function `TSYNC_two_sibling_want_nnp':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2046: undefined reference to `sem_wait'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2058: undefined reference to `pthread_join'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2060: undefined reference to `pthread_join'
    /tmp/ccrlR3MW.o: In function `tsync_start_sibling':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1941: undefined reference to `pthread_create'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1941: undefined reference to `pthread_create'
    /tmp/ccrlR3MW.o: In function `TSYNC_two_siblings_with_no_filter':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2073: undefined reference to `sem_wait'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2098: undefined reference to `pthread_join'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2100: undefined reference to `pthread_join'
    /tmp/ccrlR3MW.o: In function `tsync_start_sibling':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1941: undefined reference to `pthread_create'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1941: undefined reference to `pthread_create'
    /tmp/ccrlR3MW.o: In function `TSYNC_two_siblings_with_one_divergence':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2125: undefined reference to `sem_wait'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2143: undefined reference to `pthread_join'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2145: undefined reference to `pthread_join'
    /tmp/ccrlR3MW.o: In function `tsync_start_sibling':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1941: undefined reference to `pthread_create'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1941: undefined reference to `pthread_create'
    /tmp/ccrlR3MW.o: In function `TSYNC_two_siblings_not_under_filter':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2169: undefined reference to `sem_wait'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2202: undefined reference to `pthread_join'
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:2227: undefined reference to `pthread_join'
    /tmp/ccrlR3MW.o: In function `tsync_start_sibling':
    /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/seccomp/seccomp_bpf.c:1941: undefined reference to `pthread_create'

    It's GNU Make and linker specific.

    The default Makefile rule looks like:

    $(CC) $(CFLAGS) $(LDFLAGS) $@ $^ $(LDLIBS)

    When linking is done by gcc itself, no issue, but when it needs to be passed
    to proper ld, only LDLIBS follows and then ld cannot know what libs to link
    with.

    More detail:
    https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html

    LDFLAGS
    Extra flags to give to compilers when they are supposed to invoke the linker,
    ‘ld’, such as -L. Libraries (-lfoo) should be added to the LDLIBS variable
    instead.

    LDLIBS
    Library flags or names given to compilers when they are supposed to invoke the
    linker, ‘ld’. LOADLIBES is a deprecated (but still supported) alternative to
    LDLIBS. Non-library linker flags, such as -L, should go in the LDFLAGS
    variable.

    https://lkml.org/lkml/2010/2/10/362

    tools/perf: libraries must come after objects

    Link order matters, use LDLIBS instead of LDFLAGS to properly link against
    libpthread.

    Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/testing/selftests/seccomp/Makefile | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/tools/testing/selftests/seccomp/Makefile b/tools/testing/selftests/seccomp/Makefile
    index fce7f4ce06925..1760b3e397306 100644
    --- a/tools/testing/selftests/seccomp/Makefile
    +++ b/tools/testing/selftests/seccomp/Makefile
    @@ -9,7 +9,7 @@ BINARIES := seccomp_bpf seccomp_benchmark
    CFLAGS += -Wl,-no-as-needed -Wall

    seccomp_bpf: seccomp_bpf.c ../kselftest_harness.h
    - $(CC) $(CFLAGS) $(LDFLAGS) -lpthread $< -o $@
    + $(CC) $(CFLAGS) $(LDFLAGS) $< -lpthread -o $@

    TEST_PROGS += $(BINARIES)
    EXTRA_CLEAN := $(BINARIES)
    --
    2.19.1


    \
     
     \ /
      Last update: 2019-03-04 09:47    [W:4.081 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site