From: Darren Hart <dvhart@linux.intel.com>
To: Shuah Khan <shuahkh@osg.samsung.com>, <linux-api@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
John Stultz <john.stultz@linaro.org>
Cc: Ingo Molnar <mingo@elte.hu>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
Davidlohr Bueso <dave@stgolabs.net>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Subject: Re: [PATCH 1/5] selftests: Add futex functional tests
Date: Mon, 11 May 2015 16:07:00 -0700 [thread overview]
Message-ID: <D1767EA1.CC3DA%dvhart@linux.intel.com> (raw)
In-Reply-To: <55512B86.2040900@osg.samsung.com>
On 5/11/15, 3:21 PM, "Shuah Khan" <shuahkh@osg.samsung.com> wrote:
>>>>No need for a new pull request. Have you seen these errors before:
>>>>
>>>>make[2]: Entering directory
>>>>'/mnt/data/lkml/linux-kselftest/tools/testing/selftests/futex'
>>>>for DIR in functional; do make -C $DIR all ; done
>>>>make[3]: Entering directory
>>>>'/mnt/data/lkml/linux-kselftest/tools/testing/selftests/futex/functiona
>>>>l'
>>>>gcc -g -O2 -Wall -D_GNU_SOURCE -I../include -I../../ -lpthread -lrt
>>>>futex_requeue_pi.c ../include/futextest.h -o futex_requeue_pi
>>>>/tmp/cc2UgUVs.o: In function `create_rt_thread':
>>>>/mnt/data/lkml/linux-kselftest/tools/testing/selftests/futex/functional
>>>>/fu
>>>>tex_requeue_pi.c:102:
>>>>undefined reference to `pthread_create'
>>>>/tmp/cc2UgUVs.o: In function `unit_test':
>>>>/mnt/data/lkml/linux-kselftest/tools/testing/selftests/futex/functional
>>>>/fu
>>>>tex_requeue_pi.c:342:
>>>>undefined reference to `pthread_join'
>>>>/mnt/data/lkml/linux-kselftest/tools/testing/selftests/futex/functional
>>>>/fu
>>>>tex_requeue_pi.c:347:
>>>>undefined reference to `pthread_join'
>>>>/mnt/data/lkml/linux-kselftest/tools/testing/selftests/futex/functional
>>>>/fu
>>>>tex_requeue_pi.c:346:
>>>>undefined reference to `pthread_join'
>>>>collect2: error: ld returned 1 exit status
>>>><builtin>: recipe for target 'futex_requeue_pi' failed
>>>>make[3]: *** [futex_requeue_pi] Error 1
>>>>make[3]: Leaving directory
>>>>'/mnt/data/lkml/linux-kselftest/tools/testing/selftests/futex/functiona
>>>>l'
>>>>Makefile:7: recipe for target 'all' failed
>>>>
>>>>I am running make kselftest target when I saw the above build failures.
>>>>kselftest run doesn't fail which is good, however futex tests won't
>>>>run with this failure.
>>>
>>>I have not seen these errors whilst developing with futextest for the
>>>kernel. That looks like you may be missing the pthread development
>>>headers
>>>from your build machine.
>>>
>>>Those are provided by libc6-dev on my Debian systems.
>>>
>>I do have lib6-dev installed. timers uses pthread compiles fine.
>>So does mqueue. I am not sure what is going on with futex tests
>>though. I am guessing it has to do with library link order.
>>The following fixed it for me:
>>-LDFLAGS := $(LDFLAGS) -lpthread -lrt
>>+LDFLAGS := $(LDFLAGS) -pthread -lrt
>>Could you please make this change and resend the patch series.
>>I prefer patch series over pull request.
>>thanks,
>>-- Shuah
>
>Sorry full diff:
>
>
>diff --git a/tools/testing/selftests/futex/functional/Makefile
>b/tools/testing/selftests/futex/functional/Makefile
>index e64d43b..b8a2e9b 100644
>--- a/tools/testing/selftests/futex/functional/Makefile
>+++ b/tools/testing/selftests/futex/functional/Makefile
>@@ -1,6 +1,6 @@
>INCLUDES := -I../include -I../../
>CFLAGS := $(CFLAGS) -g -O2 -Wall -D_GNU_SOURCE $(INCLUDES)
>-LDFLAGS := $(LDFLAGS) -lpthread -lrt
>+LDFLAGS := $(LDFLAGS) -pthread -lrt
I'm happy to do that, but I would like to make sure I'm doing the right
thing.
I'm building with:
$ gcc --version
gcc (Debian 4.9.2-10) 4.9.2
What's there now works for me:
LDFLAGS := $(LDFLAGS) -lpthread -lrt
What you propose also works for me:
LDFLAGS := $(LDFLAGS) -pthread -lrt
I notice that most other test cases list -lrt first, including timers:
LDFLAGS += -lrt -lpthread
Which works for me for timers - does that work for you? I assume so. It
also works for futexes for me. I've found references out there suggesting
-lrt should always come before -lpthread.
I suspect you are correct as -pthread provides flags for both the
preprocessor and the linker, however, I'm still concerned about the
ordering.
John - did you deliberately choose to use "-lrt -lpthread" ?
If ordering matters and -pthread is preferred over -lpthread, then perhaps
the "right way" is:
LDFLAGS += -lrt -pthread
Since -pthread also impacts the pre-processor, it seems that if used, it
should be present in both LDFLAGS as well as CFLAGS. However, I've also
read that -pthread is a non-standard compiler option and is best avoided.
If so, and if the reversed order works for you, "-lrt -lpthread", perhaps
that would be the "right fix".
I'd like to answer this once and for all for all tests we add to selftest.
--
Darren Hart
Intel Open Source Technology Center
next prev parent reply other threads:[~2015-05-11 23:07 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-08 22:09 [GIT PULL v2] selftest: Add futex functional tests Darren Hart
2015-05-08 22:09 ` [PATCH 1/5] selftests: " Darren Hart
2015-05-11 18:06 ` Shuah Khan
2015-05-11 18:22 ` Darren Hart
2015-05-11 18:55 ` Shuah Khan
2015-05-11 19:47 ` Darren Hart
2015-05-11 20:51 ` Shuah Khan
2015-05-11 21:50 ` Darren Hart
2015-05-11 22:21 ` Shuah Khan
2015-05-11 22:21 ` Shuah Khan
2015-05-11 23:07 ` Darren Hart [this message]
2015-05-11 23:23 ` John Stultz
2015-05-12 10:02 ` Cyril Hrubis
2015-05-12 16:10 ` Darren Hart
2015-05-12 16:47 ` Shuah Khan
2015-05-12 17:05 ` Darren Hart
2015-05-12 17:14 ` Shuah Khan
2015-05-12 20:05 ` Cyril Hrubis
2015-05-12 20:15 ` Darren Hart
2015-05-12 20:40 ` Shuah Khan
2015-05-12 20:54 ` Darren Hart
2015-05-12 21:17 ` Shuah Khan
2015-05-12 21:21 ` Shuah Khan
2015-05-13 3:34 ` Darren Hart
2015-05-08 22:09 ` [PATCH 2/5] selftest/futex: Update Makefile to use lib.mk Darren Hart
2015-05-08 22:09 ` [PATCH 3/5] selftest/futex: Increment ksft pass and fail counters Darren Hart
2015-05-08 22:09 ` [PATCH 4/5] selftest: Add futex tests to the top-level Makefile Darren Hart
2015-05-08 22:09 ` [PATCH 5/5] kselftest: Add exit code defines Darren Hart
-- strict thread matches above, loose matches on Subject: below --
2015-03-27 22:17 [GIT PULL] selftest: Add futex functional tests Darren Hart
2015-03-27 22:17 ` [PATCH 1/5] selftests: " Darren Hart
2015-05-06 17:28 ` Shuah Khan
2015-05-06 18:04 ` Darren Hart
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=D1767EA1.CC3DA%dvhart@linux.intel.com \
--to=dvhart@linux.intel.com \
--cc=dave@stgolabs.net \
--cc=john.stultz@linaro.org \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=shuahkh@osg.samsung.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox