[PATCH 1/3] selftests: cachestat: properly link in librt

Andre Przywara posted 3 patches 2 years, 4 months ago
[PATCH 1/3] selftests: cachestat: properly link in librt
Posted by Andre Przywara 2 years, 4 months ago
Libraries should be listed last on the compiler's command line, so that
the linker can look for and find still unresolved symbols. The librt
library, required for the shm_* functions, was announced using CFLAGS,
which puts the library *before* the source files, and fails compilation
on my system:
======================
gcc -isystem /src/linux-selftests/usr/include -Wall -lrt test_cachestat.c
  -o /src/linux-selftests/kselftest/cachestat/test_cachestat
/usr/bin/ld: /tmp/cceQWO3u.o: in function `test_cachestat_shmem':
test_cachestat.c:(.text+0x890): undefined reference to `shm_open'
/usr/bin/ld: test_cachestat.c:(.text+0x99c): undefined reference to `shm_unlink'
collect2: error: ld returned 1 exit status
make[4]: *** [../lib.mk:181: /src/linux-selftests/kselftest/cachestat/test_cachestat] Error 1
======================

Announce the library using the LDLIBS variable, which ensures the proper
ordering on the command line.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
---
 tools/testing/selftests/cachestat/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/testing/selftests/cachestat/Makefile b/tools/testing/selftests/cachestat/Makefile
index fca73aaa7d141..778b54ebb0364 100644
--- a/tools/testing/selftests/cachestat/Makefile
+++ b/tools/testing/selftests/cachestat/Makefile
@@ -3,6 +3,6 @@ TEST_GEN_PROGS := test_cachestat
 
 CFLAGS += $(KHDR_INCLUDES)
 CFLAGS += -Wall
-CFLAGS += -lrt
+LDLIBS += -lrt
 
 include ../lib.mk
-- 
2.25.1
Re: [PATCH 1/3] selftests: cachestat: properly link in librt
Posted by Shuah Khan 2 years, 4 months ago
On 8/15/23 09:56, Andre Przywara wrote:
> Libraries should be listed last on the compiler's command line, so that
> the linker can look for and find still unresolved symbols. The librt
> library, required for the shm_* functions, was announced using CFLAGS,
> which puts the library *before* the source files, and fails compilation
> on my system:
> ======================
> gcc -isystem /src/linux-selftests/usr/include -Wall -lrt test_cachestat.c
>    -o /src/linux-selftests/kselftest/cachestat/test_cachestat
> /usr/bin/ld: /tmp/cceQWO3u.o: in function `test_cachestat_shmem':
> test_cachestat.c:(.text+0x890): undefined reference to `shm_open'
> /usr/bin/ld: test_cachestat.c:(.text+0x99c): undefined reference to `shm_unlink'
> collect2: error: ld returned 1 exit status
> make[4]: *** [../lib.mk:181: /src/linux-selftests/kselftest/cachestat/test_cachestat] Error 1
> ======================
> 
> Announce the library using the LDLIBS variable, which ensures the proper
> ordering on the command line.
> 
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
>   tools/testing/selftests/cachestat/Makefile | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/testing/selftests/cachestat/Makefile b/tools/testing/selftests/cachestat/Makefile
> index fca73aaa7d141..778b54ebb0364 100644
> --- a/tools/testing/selftests/cachestat/Makefile
> +++ b/tools/testing/selftests/cachestat/Makefile
> @@ -3,6 +3,6 @@ TEST_GEN_PROGS := test_cachestat
>   
>   CFLAGS += $(KHDR_INCLUDES)
>   CFLAGS += -Wall
> -CFLAGS += -lrt
> +LDLIBS += -lrt
>   
>   include ../lib.mk

Thank you. Applied to linux-kselftest next for Linux 6.6-rc1

thanks,
-- Shuah