Re: [PATCH 1/1] selftests: timers: use LDLIBS instead of LDFLAGS to link against libpthread

From: Fathi Boudra
Date: Wed Jun 28 2017 - 11:56:52 EST


On 28 June 2017 at 18:11, Shuah Khan <shuah@xxxxxxxxxx> wrote:
> On 06/28/2017 09:00 AM, Fathi Boudra wrote:
>> On 28 June 2017 at 17:41, Shuah Khan <shuah@xxxxxxxxxx> wrote:
>>> On 06/28/2017 08:37 AM, Fathi Boudra wrote:
>>>> On 28 June 2017 at 17:20, Shuah Khan <shuah@xxxxxxxxxx> wrote:
>>>>> On 06/28/2017 03:18 AM, Fathi Boudra wrote:
>>>>>> timers test fails to build due to undefined reference:
>>>>>>
>>>>>> 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
>>>>>>
>>>>>> Use LDLIBS instead of LDFLAGS to properly link against libpthread and fix
>>>>>> this build issue.
>>>>>>
>>>>>> Signed-off-by: Denys Dmytriyenko <denys@xxxxxx>
>>>>>> Signed-off-by: Fathi Boudra <fathi.boudra@xxxxxxxxxx>
>>>>>
>>>>> I can't reproduce this on linux-kselftest next on x86_64. Is this arm64 speocific
>>>>> problem? Please try this on linux-kselftest latest.
>>>>
>>>> yes, I tried linux-kselftest next and can reproduce.
>>>> Maybe related to native build vs cross-build?
>>>> I don't think it's arm64 specific.
>>>>
>>>
>>> Can you confirm that this change doesn't cause problems in native
>>> build environments.
>>
>> yes, I tested on x86 in native build environment as well. It builds
>> and run fine.
>>
>> I noticed my patchset for LDFLAGS vs LDLIBS changes don't apply
>> cleanly on linux-kselftest next branch. I'm happy to respin the serie
>> on top of next branch if you're willing to take them.
>>
>
> Yeah. I knew your series won't apply on top of linux-kselftest next just
> looking at that patches. Hence the question whether or not these problems
> have been reproduced on linux-kselftest.
>
> Please redo the patches. The net patch needs to be done on top of
>
> SeongJae Park's fix
>
> selftest/net/Makefile: Specify output with $(OUTPUT)
>
> btw - with the the above fix, I don't see any failures on x86_64.
> I am curious why it fails in cross-build? Could you figure out if
> your cross-build environment is good.

I'm using openembedded to cross-build a full distro, not only kselftest.
I'm confident my cross-build environment is good.

The issue encountered is the same as
https://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git/commit/?h=next&id=dc816e5d84cbc28baf776799839a632d6002236f

Using LDFLAGS vs LDLIBS affects the ordering of the linker flags.
* with LDFLAGS
aarch64-linux-gnu-gcc -lrt -lpthread posix_timers.c -o posix_timers
* with LDLIBS
aarch64-linux-gnu-gcc posix_timers.c -lrt -lpthread -o posix_timers

> thanks,
> -- Shuah
>
> thanks,
> -- Shuah