| From 16c76940ec21eb3e636bc8a183e5086565adf85a Mon Sep 17 00:00:00 2001 |
| From: Fathi Boudra <fathi.boudra@linaro.org> |
| Date: Wed, 16 Jan 2019 11:43:18 -0600 |
| Subject: selftests: net: use LDLIBS instead of LDFLAGS |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| [ Upstream commit 870f193d48c25a97d61a8e6c04e3c29a2c606850 ] |
| |
| reuseport_bpf_numa fails to build due to undefined reference errors: |
| |
| aarch64-linaro-linux-gcc |
| --sysroot=/build/tmp-rpb-glibc/sysroots/hikey -Wall |
| -Wl,--no-as-needed -O2 -g -I../../../../usr/include/ -Wl,-O1 |
| -Wl,--hash-style=gnu -Wl,--as-needed -lnuma reuseport_bpf_numa.c |
| -o |
| /build/tmp-rpb-glibc/work/hikey-linaro-linux/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/net/reuseport_bpf_numa |
| /tmp/ccfUuExT.o: In function `send_from_node': |
| /build/tmp-rpb-glibc/work/hikey-linaro-linux/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/net/reuseport_bpf_numa.c:138: |
| undefined reference to `numa_run_on_node' |
| /tmp/ccfUuExT.o: In function `main': |
| /build/tmp-rpb-glibc/work/hikey-linaro-linux/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/net/reuseport_bpf_numa.c:230: |
| undefined reference to `numa_available' |
| /build/tmp-rpb-glibc/work/hikey-linaro-linux/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/net/reuseport_bpf_numa.c:233: |
| undefined reference to `numa_max_node' |
| |
| 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 |
| libnuma. |
| |
| Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org> |
| Signed-off-by: Shuah Khan <shuah@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| tools/testing/selftests/net/Makefile | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile |
| index 919aa2ac00af..9a3764a1084e 100644 |
| --- a/tools/testing/selftests/net/Makefile |
| +++ b/tools/testing/selftests/net/Makefile |
| @@ -18,6 +18,6 @@ TEST_GEN_PROGS += reuseport_dualstack reuseaddr_conflict tls |
| KSFT_KHDR_INSTALL := 1 |
| include ../lib.mk |
| |
| -$(OUTPUT)/reuseport_bpf_numa: LDFLAGS += -lnuma |
| +$(OUTPUT)/reuseport_bpf_numa: LDLIBS += -lnuma |
| $(OUTPUT)/tcp_mmap: LDFLAGS += -lpthread |
| $(OUTPUT)/tcp_inq: LDFLAGS += -lpthread |
| -- |
| 2.19.1 |
| |