* [Qemu-devel] [PATCH] configure: Detect when glibc implements makecontext() to always fail
@ 2011-10-12 16:21 Peter Maydell
2011-10-13 14:26 ` Andreas Färber
0 siblings, 1 reply; 9+ messages in thread
From: Peter Maydell @ 2011-10-12 16:21 UTC (permalink / raw)
To: qemu-devel; +Cc: Andreas Färber, patches
Improve the configure test for presence of ucontext functions by
making linker warnings fatal; this allows us to detect when we are
linked with a glibc which implements makecontext() to always return
ENOSYS.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
Compiling on an Ubuntu Natty ARM host will hit this.
(Anybody think we should clean up our configure tests so we can
enable -Werror and -Wl,--fatal-warnings on all of them?)
configure | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
index 9b4fe34..4d9d9e0 100755
--- a/configure
+++ b/configure
@@ -2549,9 +2549,12 @@ ucontext_coroutine=no
if test "$darwin" != "yes"; then
cat > $TMPC << EOF
#include <ucontext.h>
-int main(void) { makecontext(0, 0, 0); }
+int main(void) { makecontext(0, 0, 0); return 0; }
EOF
- if compile_prog "" "" ; then
+ # Note that we enable fatal linker warnings to catch the
+ # glibc "makecontext is not implemented and will always fail"
+ # linker warning.
+ if compile_prog "-Wl,--fatal-warnings" "" ; then
ucontext_coroutine=yes
fi
fi
--
1.7.4.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] configure: Detect when glibc implements makecontext() to always fail
2011-10-12 16:21 [Qemu-devel] [PATCH] configure: Detect when glibc implements makecontext() to always fail Peter Maydell
@ 2011-10-13 14:26 ` Andreas Färber
2011-10-13 22:23 ` Andreas Färber
0 siblings, 1 reply; 9+ messages in thread
From: Andreas Färber @ 2011-10-13 14:26 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel, patches
Am 12.10.2011 18:21, schrieb Peter Maydell:
> Improve the configure test for presence of ucontext functions by
> making linker warnings fatal; this allows us to detect when we are
> linked with a glibc which implements makecontext() to always return
> ENOSYS.
>
> Signed-off-by: Peter Maydell<peter.maydell@linaro.org>
Tested-by: Andreas Färber <afaerber@suse.de>
> ---
> Compiling on an Ubuntu Natty ARM host will hit this.
Works on Ubuntu Maverick ARM host as well.
> (Anybody think we should clean up our configure tests so we can
> enable -Werror and -Wl,--fatal-warnings on all of them?)
In theory that would be nice. I noticed for example that a missing
glib2-devel package is not caught by configure, on openSUSE.
As a start for cleaning up...
> configure | 7 +++++--
> 1 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/configure b/configure
> index 9b4fe34..4d9d9e0 100755
> --- a/configure
> +++ b/configure
> @@ -2549,9 +2549,12 @@ ucontext_coroutine=no
> if test "$darwin" != "yes"; then
> cat> $TMPC<< EOF
> #include<ucontext.h>
> -int main(void) { makecontext(0, 0, 0); }
> +int main(void) { makecontext(0, 0, 0); return 0; }
...we could give a good example by adopting regular multi-line Coding
Style, like accept4() and others.
Andreas
> EOF
> - if compile_prog "" "" ; then
> + # Note that we enable fatal linker warnings to catch the
> + # glibc "makecontext is not implemented and will always fail"
> + # linker warning.
> + if compile_prog "-Wl,--fatal-warnings" "" ; then
> ucontext_coroutine=yes
> fi
> fi
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746, AG Nürnberg
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] configure: Detect when glibc implements makecontext() to always fail
2011-10-13 14:26 ` Andreas Färber
@ 2011-10-13 22:23 ` Andreas Färber
2011-10-14 12:30 ` Peter Maydell
0 siblings, 1 reply; 9+ messages in thread
From: Andreas Färber @ 2011-10-13 22:23 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel, patches
Am 13.10.2011 16:26, schrieb Andreas Färber:
> Am 12.10.2011 18:21, schrieb Peter Maydell:
>> Improve the configure test for presence of ucontext functions by
>> making linker warnings fatal; this allows us to detect when we are
>> linked with a glibc which implements makecontext() to always return
>> ENOSYS.
>>
>> Signed-off-by: Peter Maydell<peter.maydell@linaro.org>
>
> Tested-by: Andreas Färber <afaerber@suse.de>
>
>> ---
>> Compiling on an Ubuntu Natty ARM host will hit this.
>
> Works on Ubuntu Maverick ARM host as well.
Erm... This works great, also for accept4(), on Linux, but it's not
portable. Apple ld(1) doesn't seem to have --fatal-warnings.
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/Xcode-3.2.5/man1/ld.1.html
Sun/Oracle ld(1) does seem to have it as alias to -z fatal-warnings.
http://download.oracle.com/docs/cd/E19963-01/html/821-1461/ld-1.html
So, we'd have to check for valid linker options first?
Andreas
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] configure: Detect when glibc implements makecontext() to always fail
2011-10-13 22:23 ` Andreas Färber
@ 2011-10-14 12:30 ` Peter Maydell
2011-10-14 12:47 ` Paolo Bonzini
0 siblings, 1 reply; 9+ messages in thread
From: Peter Maydell @ 2011-10-14 12:30 UTC (permalink / raw)
To: Andreas Färber; +Cc: Anthony Liguori, qemu-devel, patches
On 13 October 2011 23:23, Andreas Färber <andreas.faerber@web.de> wrote:
> Am 13.10.2011 16:26, schrieb Andreas Färber:
>> Am 12.10.2011 18:21, schrieb Peter Maydell:
>>> Improve the configure test for presence of ucontext functions by
>>> making linker warnings fatal; this allows us to detect when we are
>>> linked with a glibc which implements makecontext() to always return
>>> ENOSYS.
>>> ---
>>> Compiling on an Ubuntu Natty ARM host will hit this.
>>
>> Works on Ubuntu Maverick ARM host as well.
>
> Erm... This works great, also for accept4(), on Linux, but it's not
> portable. Apple ld(1) doesn't seem to have --fatal-warnings.
I've also just discovered that it's no use on Oneiric,
where the linker warning has gone away but the syscall
still always returns ENOSYS.
I think we should just always use the gthread implementation
rather than preferring a non-portable-and-hard-to-detect
set of functions (which increases the set of different
configs we need to test with). If there's a performance problem
with that we should get it fixed in gthread :-)
-- PMM
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] configure: Detect when glibc implements makecontext() to always fail
2011-10-14 12:30 ` Peter Maydell
@ 2011-10-14 12:47 ` Paolo Bonzini
2011-10-14 12:55 ` Paolo Bonzini
0 siblings, 1 reply; 9+ messages in thread
From: Paolo Bonzini @ 2011-10-14 12:47 UTC (permalink / raw)
To: Peter Maydell; +Cc: Andreas Färber, patches, Anthony Liguori, qemu-devel
On 10/14/2011 02:30 PM, Peter Maydell wrote:
> I've also just discovered that it's no use on Oneiric,
> where the linker warning has gone away but the syscall
> still always returns ENOSYS.
>
> I think we should just always use the gthread implementation
> rather than preferring a non-portable-and-hard-to-detect
> set of functions (which increases the set of different
> configs we need to test with). If there's a performance problem
> with that we should get it fixed in gthread:-)
A user-space longjmp will always be slower than a mutex+condvar+context
switch. We're talking _orders of magnitude_ slower. At this point it's
better to write assembly, since we already support only a dozen TCG targets.
I played with an alternative implementation using a 2-barrier instead of
mutex+condvar, but it didn't give any speedup and was still much slower
than gthread.
Paolo
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH] configure: Detect when glibc implements makecontext() to always fail
@ 2012-02-23 16:16 Peter Maydell
2012-02-23 16:19 ` Peter Maydell
0 siblings, 1 reply; 9+ messages in thread
From: Peter Maydell @ 2012-02-23 16:16 UTC (permalink / raw)
To: qemu-devel; +Cc: patches
Improve the configure test for presence of ucontext functions by
making linker warnings fatal; this allows us to detect when we are
linked with a glibc which implements makecontext() to always return
ENOSYS.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
Compiling on an Ubuntu Natty ARM host will hit this.
(Anybody think we should clean up our configure tests so we can
enable -Werror and -Wl,--fatal-warnings on all of them?)
configure | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
index 9b4fe34..4d9d9e0 100755
--- a/configure
+++ b/configure
@@ -2549,9 +2549,12 @@ ucontext_coroutine=no
if test "$darwin" != "yes"; then
cat > $TMPC << EOF
#include <ucontext.h>
-int main(void) { makecontext(0, 0, 0); }
+int main(void) { makecontext(0, 0, 0); return 0; }
EOF
- if compile_prog "" "" ; then
+ # Note that we enable fatal linker warnings to catch the
+ # glibc "makecontext is not implemented and will always fail"
+ # linker warning.
+ if compile_prog "-Wl,--fatal-warnings" "" ; then
ucontext_coroutine=yes
fi
fi
--
1.7.4.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] configure: Detect when glibc implements makecontext() to always fail
2012-02-23 16:16 Peter Maydell
@ 2012-02-23 16:19 ` Peter Maydell
0 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2012-02-23 16:19 UTC (permalink / raw)
To: qemu-devel; +Cc: patches
On 23 February 2012 16:16, Peter Maydell <peter.maydell@linaro.org> wrote:
> Improve the configure test for presence of ucontext functions by
> making linker warnings fatal; this allows us to detect when we are
> linked with a glibc which implements makecontext() to always return
> ENOSYS.
Er, ignore this, emailed wrong patch by mistake!
-- PMM
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2012-02-23 16:19 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-12 16:21 [Qemu-devel] [PATCH] configure: Detect when glibc implements makecontext() to always fail Peter Maydell
2011-10-13 14:26 ` Andreas Färber
2011-10-13 22:23 ` Andreas Färber
2011-10-14 12:30 ` Peter Maydell
2011-10-14 12:47 ` Paolo Bonzini
2011-10-14 12:55 ` Paolo Bonzini
2011-10-14 13:01 ` Peter Maydell
-- strict thread matches above, loose matches on Subject: below --
2012-02-23 16:16 Peter Maydell
2012-02-23 16:19 ` Peter Maydell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).