| From b0a0d89478dfc609f770f0d69d948abe365190ca Mon Sep 17 00:00:00 2001 |
| From: Fathi Boudra <fathi.boudra@linaro.org> |
| Date: Wed, 16 Jan 2019 11:43:20 -0600 |
| Subject: selftests: timers: use LDLIBS instead of LDFLAGS |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| [ Upstream commit 7d4e591bc051d3382c45caaa2530969fb42ed23d ] |
| |
| posix_timers 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 -O3 -Wl,-no-as-needed -Wall |
| -DKTEST -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -lrt -lpthread |
| posix_timers.c |
| -o /build/tmp-rpb-glibc/work/hikey-linaro-linux/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/timers/posix_timers |
| /tmp/cc1FTZzT.o: In function `check_timer_create': |
| /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/timers/posix_timers.c:157: |
| undefined reference to `timer_create' |
| /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/timers/posix_timers.c:170: |
| undefined reference to `timer_settime' |
| collect2: error: ld returned 1 exit status |
| |
| 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: Denys Dmytriyenko <denys@ti.com> |
| 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/timers/Makefile | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/tools/testing/selftests/timers/Makefile b/tools/testing/selftests/timers/Makefile |
| index c02683cfb6c9..7656c7ce79d9 100644 |
| --- a/tools/testing/selftests/timers/Makefile |
| +++ b/tools/testing/selftests/timers/Makefile |
| @@ -1,6 +1,6 @@ |
| # SPDX-License-Identifier: GPL-2.0 |
| CFLAGS += -O3 -Wl,-no-as-needed -Wall |
| -LDFLAGS += -lrt -lpthread -lm |
| +LDLIBS += -lrt -lpthread -lm |
| |
| # these are all "safe" tests that don't modify |
| # system time or require escalated privileges |
| -- |
| 2.19.1 |
| |