mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-07-22 02:44:53 +00:00
sysemu/os-win32: Test for and use _lock_file/_unlock_file
The bug referenced in os-win32.h was fixed in mingw-w64 v6. According to repology, version 5 used by ubuntu 18, which is not yet out of support, so provide a meson link test for it. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220417183019.755276-27-richard.henderson@linaro.org>
This commit is contained in:
parent
7fc493f8bd
commit
6391c772d7
|
@ -109,20 +109,22 @@ static inline char *realpath(const char *path, char *resolved_path)
|
||||||
return resolved_path;
|
return resolved_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ??? Mingw appears to export _lock_file and _unlock_file as the functions
|
/*
|
||||||
* with which to lock a stdio handle. But something is wrong in the markup,
|
* Older versions of MinGW do not import _lock_file and _unlock_file properly.
|
||||||
* either in the header or the library, such that we get undefined references
|
* This was fixed for v6.0.0 with commit b48e3ac8969d.
|
||||||
* to "_imp___lock_file" etc when linking. Since we seem to have no other
|
|
||||||
* alternative, and the usage within the logging functions isn't critical,
|
|
||||||
* ignore FILE locking.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline void qemu_flockfile(FILE *f)
|
static inline void qemu_flockfile(FILE *f)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE__LOCK_FILE
|
||||||
|
_lock_file(f);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void qemu_funlockfile(FILE *f)
|
static inline void qemu_funlockfile(FILE *f)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE__LOCK_FILE
|
||||||
|
_unlock_file(f);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We wrap all the sockets functions so that we can
|
/* We wrap all the sockets functions so that we can
|
||||||
|
|
12
meson.build
12
meson.build
|
@ -2030,6 +2030,18 @@ foreach k, v: config_host
|
||||||
endif
|
endif
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
|
# Older versions of MinGW do not import _lock_file and _unlock_file properly.
|
||||||
|
# This was fixed for v6.0.0 with commit b48e3ac8969d.
|
||||||
|
if targetos == 'windows'
|
||||||
|
config_host_data.set('HAVE__LOCK_FILE', cc.links('''
|
||||||
|
#include <stdio.h>
|
||||||
|
int main(void) {
|
||||||
|
_lock_file(NULL);
|
||||||
|
_unlock_file(NULL);
|
||||||
|
return 0;
|
||||||
|
}''', name: '_lock_file and _unlock_file'))
|
||||||
|
endif
|
||||||
|
|
||||||
########################
|
########################
|
||||||
# Target configuration #
|
# Target configuration #
|
||||||
########################
|
########################
|
||||||
|
|
Loading…
Reference in a new issue