util/osdep: Avoid madvise proto on modern Solaris
authorAndrew Deason <adeason@sinenomine.net>
Wed, 16 Mar 2022 03:52:25 +0000 (22:52 -0500)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 18 Mar 2022 11:31:41 +0000 (11:31 +0000)
commit8900c204df0e521361e2bd31131d5f9089d08000
tree146aa5d3a334d6c6f910df4309d83a948d6a177f
parenteb7a38ba664c8ab7f216fa701a0bea897d433763
util/osdep: Avoid madvise proto on modern Solaris

On older Solaris releases (before Solaris 11), we didn't get a
prototype for madvise, and so util/osdep.c provides its own prototype.
Some time between the public Solaris 11.4 release and Solaris 11.4.42
CBE, we started getting an madvise prototype that looks like this:

    extern int madvise(void *, size_t, int);

which conflicts with the prototype in util/osdeps.c. Instead of always
declaring this prototype, check if we're missing the madvise()
prototype, and only declare it ourselves if the prototype is missing.
Move the prototype to include/qemu/osdep.h, the normal place to handle
platform-specific header quirks.

The 'missing_madvise_proto' meson check contains an obviously wrong
prototype for madvise. So if that code compiles and links, we must be
missing the actual prototype for madvise.

Signed-off-by: Andrew Deason <adeason@sinenomine.net>
Message-id: 20220316035227.3702-2-adeason@sinenomine.net
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
include/qemu/osdep.h
meson.build
util/osdep.c