* [Qemu-devel] [PATCH] memfd: fix configure test
@ 2017-11-28 11:32 Paolo Bonzini
2017-11-28 11:42 ` Marc-André Lureau
0 siblings, 1 reply; 5+ messages in thread
From: Paolo Bonzini @ 2017-11-28 11:32 UTC (permalink / raw)
To: qemu-devel; +Cc: crobinso, Marc-André Lureau
Recent glibc added memfd_create in sys/mman.h. This conflicts with
the definition in util/memfd.c:
/builddir/build/BUILD/qemu-2.11.0-rc1/util/memfd.c:40:12: error: static declaration of memfd_create follows non-static declaration
Fix the configure test, and remove the sys/memfd.h inclusion since the
file actually does not exist---it is a typo in the memfd_create(2) man
page.
Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 2 +-
util/memfd.c | 4 +---
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/configure b/configure
index e31d6a7fee..11eac205ec 100755
--- a/configure
+++ b/configure
@@ -3910,7 +3910,7 @@ fi
# check if memfd is supported
memfd=no
cat > $TMPC << EOF
-#include <sys/memfd.h>
+#include <sys/mman.h>
int main(void)
{
diff --git a/util/memfd.c b/util/memfd.c
index 4571d1aba8..412e94a405 100644
--- a/util/memfd.c
+++ b/util/memfd.c
@@ -31,9 +31,7 @@
#include "qemu/memfd.h"
-#ifdef CONFIG_MEMFD
-#include <sys/memfd.h>
-#elif defined CONFIG_LINUX
+#if defined CONFIG_LINUX && !defined CONFIG_MEMFD
#include <sys/syscall.h>
#include <asm/unistd.h>
--
2.14.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH] memfd: fix configure test
2017-11-28 11:32 [Qemu-devel] [PATCH] memfd: fix configure test Paolo Bonzini
@ 2017-11-28 11:42 ` Marc-André Lureau
2017-11-28 11:49 ` Paolo Bonzini
2017-11-28 12:06 ` Florian Weimer
0 siblings, 2 replies; 5+ messages in thread
From: Marc-André Lureau @ 2017-11-28 11:42 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: QEMU, Cole Robinson, fweimer
Hi
On Tue, Nov 28, 2017 at 12:32 PM, Paolo Bonzini <pbonzini@redhat.com> wrote:
> Recent glibc added memfd_create in sys/mman.h. This conflicts with
> the definition in util/memfd.c:
>
> /builddir/build/BUILD/qemu-2.11.0-rc1/util/memfd.c:40:12: error: static declaration of memfd_create follows non-static declaration
>
> Fix the configure test, and remove the sys/memfd.h inclusion since the
> file actually does not exist---it is a typo in the memfd_create(2) man
> page.
>
It is introduced by this commit, right?
https://sourceware.org/git/?p=glibc.git;a=commit;h=59d2cbb1fe4b8601d5cbd359c3806973eab6c62d
(I added Florian Weimer in cc)
So it's not part of glibc release yet.
Couldn't the declarations be put in sys/memfd.h like the man claimed
it would be for > 1y?
> Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> configure | 2 +-
> util/memfd.c | 4 +---
> 2 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/configure b/configure
> index e31d6a7fee..11eac205ec 100755
> --- a/configure
> +++ b/configure
> @@ -3910,7 +3910,7 @@ fi
> # check if memfd is supported
> memfd=no
> cat > $TMPC << EOF
> -#include <sys/memfd.h>
> +#include <sys/mman.h>
>
> int main(void)
> {
> diff --git a/util/memfd.c b/util/memfd.c
> index 4571d1aba8..412e94a405 100644
> --- a/util/memfd.c
> +++ b/util/memfd.c
> @@ -31,9 +31,7 @@
>
> #include "qemu/memfd.h"
>
> -#ifdef CONFIG_MEMFD
> -#include <sys/memfd.h>
> -#elif defined CONFIG_LINUX
> +#if defined CONFIG_LINUX && !defined CONFIG_MEMFD
> #include <sys/syscall.h>
> #include <asm/unistd.h>
> --
> 2.14.3
>
>
--
Marc-André Lureau
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH] memfd: fix configure test
2017-11-28 11:42 ` Marc-André Lureau
@ 2017-11-28 11:49 ` Paolo Bonzini
2017-11-28 11:57 ` Peter Maydell
2017-11-28 12:06 ` Florian Weimer
1 sibling, 1 reply; 5+ messages in thread
From: Paolo Bonzini @ 2017-11-28 11:49 UTC (permalink / raw)
To: Marc-André Lureau; +Cc: QEMU, Cole Robinson, fweimer
On 28/11/2017 12:42, Marc-André Lureau wrote:
> Hi
>
> On Tue, Nov 28, 2017 at 12:32 PM, Paolo Bonzini <pbonzini@redhat.com> wrote:
>> Recent glibc added memfd_create in sys/mman.h. This conflicts with
>> the definition in util/memfd.c:
>>
>> /builddir/build/BUILD/qemu-2.11.0-rc1/util/memfd.c:40:12: error: static declaration of memfd_create follows non-static declaration
>>
>> Fix the configure test, and remove the sys/memfd.h inclusion since the
>> file actually does not exist---it is a typo in the memfd_create(2) man
>> page.
>>
>
> It is introduced by this commit, right?
> https://sourceware.org/git/?p=glibc.git;a=commit;h=59d2cbb1fe4b8601d5cbd359c3806973eab6c62d
>
> (I added Florian Weimer in cc)
>
> So it's not part of glibc release yet.
>
> Couldn't the declarations be put in sys/memfd.h like the man claimed
> it would be for > 1y?
Yeah, that would have been better---certainly other software than QEMU
is likely to have a static memfd_create declaration, and polluting
sys/mman.h is going to trigger the same error. However, at least
systemd seems to have changed the test to sys/mman.h
(https://github.com/systemd/systemd/pull/7468), so I think we should
follow their lead now
Thanks,
Paolo
>
>> Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
>> configure | 2 +-
>> util/memfd.c | 4 +---
>> 2 files changed, 2 insertions(+), 4 deletions(-)
>>
>> diff --git a/configure b/configure
>> index e31d6a7fee..11eac205ec 100755
>> --- a/configure
>> +++ b/configure
>> @@ -3910,7 +3910,7 @@ fi
>> # check if memfd is supported
>> memfd=no
>> cat > $TMPC << EOF
>> -#include <sys/memfd.h>
>> +#include <sys/mman.h>
>>
>> int main(void)
>> {
>> diff --git a/util/memfd.c b/util/memfd.c
>> index 4571d1aba8..412e94a405 100644
>> --- a/util/memfd.c
>> +++ b/util/memfd.c
>> @@ -31,9 +31,7 @@
>>
>> #include "qemu/memfd.h"
>>
>> -#ifdef CONFIG_MEMFD
>> -#include <sys/memfd.h>
>> -#elif defined CONFIG_LINUX
>> +#if defined CONFIG_LINUX && !defined CONFIG_MEMFD
>> #include <sys/syscall.h>
>> #include <asm/unistd.h>
>> --
>> 2.14.3
>>
>>
>
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH] memfd: fix configure test
2017-11-28 11:49 ` Paolo Bonzini
@ 2017-11-28 11:57 ` Peter Maydell
0 siblings, 0 replies; 5+ messages in thread
From: Peter Maydell @ 2017-11-28 11:57 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: Marc-André Lureau, fweimer, QEMU, Cole Robinson
On 28 November 2017 at 11:49, Paolo Bonzini <pbonzini@redhat.com> wrote:
> On 28/11/2017 12:42, Marc-André Lureau wrote:
>> It is introduced by this commit, right?
>> https://sourceware.org/git/?p=glibc.git;a=commit;h=59d2cbb1fe4b8601d5cbd359c3806973eab6c62d
>>
>> (I added Florian Weimer in cc)
>>
>> So it's not part of glibc release yet.
>>
>> Couldn't the declarations be put in sys/memfd.h like the man claimed
>> it would be for > 1y?
>
> Yeah, that would have been better---certainly other software than QEMU
> is likely to have a static memfd_create declaration, and polluting
> sys/mman.h is going to trigger the same error. However, at least
> systemd seems to have changed the test to sys/mman.h
> (https://github.com/systemd/systemd/pull/7468), so I think we should
> follow their lead now
I don't see why systemd should control anything. If the documentation
has been around for ages and there hasn't been a released glibc with
the incorrect placement then the implementation in glibc should follow
the documentation.
thanks
-- PMM
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH] memfd: fix configure test
2017-11-28 11:42 ` Marc-André Lureau
2017-11-28 11:49 ` Paolo Bonzini
@ 2017-11-28 12:06 ` Florian Weimer
1 sibling, 0 replies; 5+ messages in thread
From: Florian Weimer @ 2017-11-28 12:06 UTC (permalink / raw)
To: Marc-André Lureau, Paolo Bonzini; +Cc: QEMU, Cole Robinson
On 11/28/2017 12:42 PM, Marc-André Lureau wrote:
> Couldn't the declarations be put in sys/memfd.h like the man claimed
> it would be for > 1y?
We discussed it. It was a typo in the manual page. There never was a
<sys/memfd.h> header file:
https://marc.info/?l=linux-man&m=150988359906012&w=2
The UAPI header is called <linux/memfd.h>.
The downside of using a separate header is that you cannot determine,
using the preprocessor alone, whether the toolchain provides the
memfd_create function. If we put everything in <sys/mman.h>, you can
use “#ifdef MFD_CLOEXEC” to see if the definitions and declarations are
there.
Thanks,
Florian
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-11-28 12:06 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-28 11:32 [Qemu-devel] [PATCH] memfd: fix configure test Paolo Bonzini
2017-11-28 11:42 ` Marc-André Lureau
2017-11-28 11:49 ` Paolo Bonzini
2017-11-28 11:57 ` Peter Maydell
2017-11-28 12:06 ` Florian Weimer
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).