public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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




  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