Fixes and cleanups for 7.0

Hi,
 
 A collection of fixes & cleanup patches that should be safe for 7.0 inclusion.
 -----BEGIN PGP SIGNATURE-----
 
 iQJQBAABCAA6FiEEh6m9kz+HxgbSdvYt2ujhCXWWnOUFAmI5vPIcHG1hcmNhbmRy
 ZS5sdXJlYXVAcmVkaGF0LmNvbQAKCRDa6OEJdZac5a7ED/9+DCc6b+yAeMsFR7SI
 kqxSvPW9RbgQrJo0LrJxX7H+xYs40JFpkNZFhuAGgWPrk6GlebMzg+aMgSlZi4XN
 B7y5/dAKUUPCC+kNQ7azP4Gp+xb+Pxg2ZZxQ9SnxsGgPWC1prliiB8Zbvs8f5lHl
 ACbh7wvfVOcSJoMaCAf5km4AFzWYQQkwn2w3CRl4CfWnuWUhjnnYL9DfjHrfaYPK
 JCbRCx534dy/amrMPgbAOcDRl0K9/9Tw+xATxOkQPLZ4Za4tclsAGZ9Hb2WoDuWS
 LYQ1ZJVouv37EnaPVMCyPyC2n4oLJ86L2RCSBqKgIgv7rmwTUcqlfYPVg7TZGxuw
 T234lIc8AXcm2UNQ4iTXLH/Od9RGHKseZSF8QYTVGNDtfvp3bDFVT6k5e2X/SpXY
 gVloTdFzmwYWM8dtREPepZlEhXNKz7XdltlrcwyDdKWW0OffLRyKkNIsuUja7EoL
 q4n8l4tq084iLTHpEUSWaFwZvu89b8n81hML0box6XXrOldk1qdf57Ka5gqxNrnk
 pJES7ocRoTANjZgASrJW8vPu3/GkdlmE/Khf5bnOzq/lWMwVxPqYEQY+PRoAU2zR
 MS1UJ9IITe3toJlx7+DqR8Lo6fUyralwKv/MUnBW65S45S7VkbCO4anELNnVvzAE
 CFfsa30VblNDEbppBMXwRFyX0Q==
 =fKgO
 -----END PGP SIGNATURE-----

Merge tag 'fixes-pull-request' of gitlab.com:marcandre.lureau/qemu into staging

Fixes and cleanups for 7.0

Hi,

A collection of fixes & cleanup patches that should be safe for 7.0 inclusion.

# gpg: Signature made Tue 22 Mar 2022 12:11:30 GMT
# gpg:                using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5
# gpg:                issuer "marcandre.lureau@redhat.com"
# gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>" [full]
# gpg:                 aka "Marc-André Lureau <marcandre.lureau@gmail.com>" [full]
# Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5

* tag 'fixes-pull-request' of gitlab.com:marcandre.lureau/qemu: (21 commits)
  qapi: remove needless include
  Remove trailing ; after G_DEFINE_AUTO macro
  tests: remove needless include
  error: use GLib to remember the program name
  qga: remove bswap.h include
  qapi: remove needless include
  meson: fix CONFIG_ATOMIC128 check
  meson: move int128 checks from configure
  qapi: remove needless include
  util: remove the net/net.h dependency
  util: remove needless includes
  scripts/modinfo-collect: remove unused/dead code
  Move HOST_LONG_BITS to compiler.h
  Simplify HOST_LONG_BITS
  compiler.h: replace QEMU_SENTINEL with G_GNUC_NULL_TERMINATED
  compiler.h: replace QEMU_WARN_UNUSED_RESULT with G_GNUC_WARN_UNUSED_RESULT
  Replace GCC_FMT_ATTR with G_GNUC_PRINTF
  Drop qemu_foo() socket API wrapper
  m68k/nios2-semi: fix gettimeofday() result check
  vl: typo fix in a comment
  ...

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2022-03-22 18:43:03 +00:00
commit 04ddcda6a2
93 changed files with 278 additions and 347 deletions

View file

@ -72,7 +72,7 @@ struct alsa_params_obt {
snd_pcm_uframes_t samples; snd_pcm_uframes_t samples;
}; };
static void GCC_FMT_ATTR (2, 3) alsa_logerr (int err, const char *fmt, ...) static void G_GNUC_PRINTF (2, 3) alsa_logerr (int err, const char *fmt, ...)
{ {
va_list ap; va_list ap;
@ -83,7 +83,7 @@ static void GCC_FMT_ATTR (2, 3) alsa_logerr (int err, const char *fmt, ...)
AUD_log (AUDIO_CAP, "Reason: %s\n", snd_strerror (err)); AUD_log (AUDIO_CAP, "Reason: %s\n", snd_strerror (err));
} }
static void GCC_FMT_ATTR (3, 4) alsa_logerr2 ( static void G_GNUC_PRINTF (3, 4) alsa_logerr2 (
int err, int err,
const char *typ, const char *typ,
const char *fmt, const char *fmt,

View file

@ -91,8 +91,8 @@ typedef struct QEMUAudioTimeStamp {
uint64_t old_ts; uint64_t old_ts;
} QEMUAudioTimeStamp; } QEMUAudioTimeStamp;
void AUD_vlog (const char *cap, const char *fmt, va_list ap) GCC_FMT_ATTR(2, 0); void AUD_vlog (const char *cap, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
void AUD_log (const char *cap, const char *fmt, ...) GCC_FMT_ATTR(2, 3); void AUD_log (const char *cap, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
void AUD_register_card (const char *name, QEMUSoundCard *card); void AUD_register_card (const char *name, QEMUSoundCard *card);
void AUD_remove_card (QEMUSoundCard *card); void AUD_remove_card (QEMUSoundCard *card);

View file

@ -211,7 +211,7 @@ static void coreaudio_logstatus (OSStatus status)
AUD_log (AUDIO_CAP, "Reason: %s\n", str); AUD_log (AUDIO_CAP, "Reason: %s\n", str);
} }
static void GCC_FMT_ATTR (2, 3) coreaudio_logerr ( static void G_GNUC_PRINTF (2, 3) coreaudio_logerr (
OSStatus status, OSStatus status,
const char *fmt, const char *fmt,
... ...
@ -226,7 +226,7 @@ static void GCC_FMT_ATTR (2, 3) coreaudio_logerr (
coreaudio_logstatus (status); coreaudio_logstatus (status);
} }
static void GCC_FMT_ATTR (3, 4) coreaudio_logerr2 ( static void G_GNUC_PRINTF (3, 4) coreaudio_logerr2 (
OSStatus status, OSStatus status,
const char *typ, const char *typ,
const char *fmt, const char *fmt,

View file

@ -222,7 +222,7 @@ static void dsound_log_hresult (HRESULT hr)
AUD_log (AUDIO_CAP, "Reason: %s\n", str); AUD_log (AUDIO_CAP, "Reason: %s\n", str);
} }
static void GCC_FMT_ATTR (2, 3) dsound_logerr ( static void G_GNUC_PRINTF (2, 3) dsound_logerr (
HRESULT hr, HRESULT hr,
const char *fmt, const char *fmt,
... ...
@ -237,7 +237,7 @@ static void GCC_FMT_ATTR (2, 3) dsound_logerr (
dsound_log_hresult (hr); dsound_log_hresult (hr);
} }
static void GCC_FMT_ATTR (3, 4) dsound_logerr2 ( static void G_GNUC_PRINTF (3, 4) dsound_logerr2 (
HRESULT hr, HRESULT hr,
const char *typ, const char *typ,
const char *fmt, const char *fmt,

View file

@ -63,7 +63,7 @@ struct oss_params {
int fragsize; int fragsize;
}; };
static void GCC_FMT_ATTR (2, 3) oss_logerr (int err, const char *fmt, ...) static void G_GNUC_PRINTF (2, 3) oss_logerr (int err, const char *fmt, ...)
{ {
va_list ap; va_list ap;
@ -74,7 +74,7 @@ static void GCC_FMT_ATTR (2, 3) oss_logerr (int err, const char *fmt, ...)
AUD_log (AUDIO_CAP, "Reason: %s\n", strerror (err)); AUD_log (AUDIO_CAP, "Reason: %s\n", strerror (err));
} }
static void GCC_FMT_ATTR (3, 4) oss_logerr2 ( static void G_GNUC_PRINTF (3, 4) oss_logerr2 (
int err, int err,
const char *typ, const char *typ,
const char *fmt, const char *fmt,

View file

@ -43,7 +43,7 @@ typedef struct {
static void qpa_conn_fini(PAConnection *c); static void qpa_conn_fini(PAConnection *c);
static void GCC_FMT_ATTR (2, 3) qpa_logerr (int err, const char *fmt, ...) static void G_GNUC_PRINTF (2, 3) qpa_logerr (int err, const char *fmt, ...)
{ {
va_list ap; va_list ap;

View file

@ -55,7 +55,7 @@ typedef struct SDLVoiceIn {
SDL_AudioDeviceID devid; SDL_AudioDeviceID devid;
} SDLVoiceIn; } SDLVoiceIn;
static void GCC_FMT_ATTR (1, 2) sdl_logerr (const char *fmt, ...) static void G_GNUC_PRINTF (1, 2) sdl_logerr (const char *fmt, ...)
{ {
va_list ap; va_list ap;

View file

@ -44,7 +44,7 @@ typedef struct BlkverifyRequest {
QEMUIOVector *raw_qiov; /* cloned I/O vector for raw file */ QEMUIOVector *raw_qiov; /* cloned I/O vector for raw file */
} BlkverifyRequest; } BlkverifyRequest;
static void GCC_FMT_ATTR(2, 3) blkverify_err(BlkverifyRequest *r, static void G_GNUC_PRINTF(2, 3) blkverify_err(BlkverifyRequest *r,
const char *fmt, ...) const char *fmt, ...)
{ {
va_list ap; va_list ap;

View file

@ -33,7 +33,9 @@
static int64_t alloc_clusters_noref(BlockDriverState *bs, uint64_t size, static int64_t alloc_clusters_noref(BlockDriverState *bs, uint64_t size,
uint64_t max); uint64_t max);
static int QEMU_WARN_UNUSED_RESULT update_refcount(BlockDriverState *bs,
G_GNUC_WARN_UNUSED_RESULT
static int update_refcount(BlockDriverState *bs,
int64_t offset, int64_t length, uint64_t addend, int64_t offset, int64_t length, uint64_t addend,
bool decrease, enum qcow2_discard_type type); bool decrease, enum qcow2_discard_type type);
@ -803,7 +805,7 @@ found:
/* XXX: cache several refcount block clusters ? */ /* XXX: cache several refcount block clusters ? */
/* @addend is the absolute value of the addend; if @decrease is set, @addend /* @addend is the absolute value of the addend; if @decrease is set, @addend
* will be subtracted from the current refcount, otherwise it will be added */ * will be subtracted from the current refcount, otherwise it will be added */
static int QEMU_WARN_UNUSED_RESULT update_refcount(BlockDriverState *bs, static int update_refcount(BlockDriverState *bs,
int64_t offset, int64_t offset,
int64_t length, int64_t length,
uint64_t addend, uint64_t addend,

View file

@ -838,7 +838,7 @@ int qcow2_update_header(BlockDriverState *bs);
void qcow2_signal_corruption(BlockDriverState *bs, bool fatal, int64_t offset, void qcow2_signal_corruption(BlockDriverState *bs, bool fatal, int64_t offset,
int64_t size, const char *message_format, ...) int64_t size, const char *message_format, ...)
GCC_FMT_ATTR(5, 6); G_GNUC_PRINTF(5, 6);
int qcow2_validate_table(BlockDriverState *bs, uint64_t offset, int qcow2_validate_table(BlockDriverState *bs, uint64_t offset,
uint64_t entries, size_t entry_len, uint64_t entries, size_t entry_len,

View file

@ -108,7 +108,7 @@ static void ssh_state_free(BDRVSSHState *s)
} }
} }
static void GCC_FMT_ATTR(3, 4) static void G_GNUC_PRINTF(3, 4)
session_error_setg(Error **errp, BDRVSSHState *s, const char *fs, ...) session_error_setg(Error **errp, BDRVSSHState *s, const char *fs, ...)
{ {
va_list args; va_list args;
@ -133,7 +133,7 @@ session_error_setg(Error **errp, BDRVSSHState *s, const char *fs, ...)
g_free(msg); g_free(msg);
} }
static void GCC_FMT_ATTR(3, 4) static void G_GNUC_PRINTF(3, 4)
sftp_error_setg(Error **errp, BDRVSSHState *s, const char *fs, ...) sftp_error_setg(Error **errp, BDRVSSHState *s, const char *fs, ...)
{ {
va_list args; va_list args;

View file

@ -175,7 +175,7 @@ abi_long do_netbsd_syscall(void *cpu_env, int num, abi_long arg1,
abi_long do_openbsd_syscall(void *cpu_env, int num, abi_long arg1, abi_long do_openbsd_syscall(void *cpu_env, int num, abi_long arg1,
abi_long arg2, abi_long arg3, abi_long arg4, abi_long arg2, abi_long arg3, abi_long arg4,
abi_long arg5, abi_long arg6); abi_long arg5, abi_long arg6);
void gemu_log(const char *fmt, ...) GCC_FMT_ATTR(1, 2); void gemu_log(const char *fmt, ...) G_GNUC_PRINTF(1, 2);
extern __thread CPUState *thread_cpu; extern __thread CPUState *thread_cpu;
void cpu_loop(CPUArchState *env); void cpu_loop(CPUArchState *env);
char *target_strerror(int err); char *target_strerror(int err);

49
configure vendored
View file

@ -2248,7 +2248,7 @@ static void foo_free(Foo *f)
{ {
g_free(f); g_free(f);
} }
G_DEFINE_AUTOPTR_CLEANUP_FUNC(Foo, foo_free); G_DEFINE_AUTOPTR_CLEANUP_FUNC(Foo, foo_free)
int main(void) { return 0; } int main(void) { return 0; }
EOF EOF
if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
@ -2481,41 +2481,6 @@ if compile_prog "" "" ; then
int128=yes int128=yes
fi fi
#########################################
# See if 128-bit atomic operations are supported.
atomic128=no
if test "$int128" = "yes"; then
cat > $TMPC << EOF
int main(void)
{
unsigned __int128 x = 0, y = 0;
y = __atomic_load(&x, 0);
__atomic_store(&x, y, 0);
__atomic_compare_exchange(&x, &y, x, 0, 0, 0);
return 0;
}
EOF
if compile_prog "" "" ; then
atomic128=yes
fi
fi
cmpxchg128=no
if test "$int128" = yes && test "$atomic128" = no; then
cat > $TMPC << EOF
int main(void)
{
unsigned __int128 x = 0, y = 0;
__sync_val_compare_and_swap_16(&x, y, x);
return 0;
}
EOF
if compile_prog "" "" ; then
cmpxchg128=yes
fi
fi
######################################## ########################################
# check if ccache is interfering with # check if ccache is interfering with
# semantic analysis of macros # semantic analysis of macros
@ -2959,18 +2924,6 @@ if test "$have_tsan" = "yes" && test "$have_tsan_iface_fiber" = "yes" ; then
echo "CONFIG_TSAN=y" >> $config_host_mak echo "CONFIG_TSAN=y" >> $config_host_mak
fi fi
if test "$int128" = "yes" ; then
echo "CONFIG_INT128=y" >> $config_host_mak
fi
if test "$atomic128" = "yes" ; then
echo "CONFIG_ATOMIC128=y" >> $config_host_mak
fi
if test "$cmpxchg128" = "yes" ; then
echo "CONFIG_CMPXCHG128=y" >> $config_host_mak
fi
if test "$rdma" = "yes" ; then if test "$rdma" = "yes" ; then
echo "CONFIG_RDMA=y" >> $config_host_mak echo "CONFIG_RDMA=y" >> $config_host_mak
echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak

View file

@ -84,7 +84,7 @@ qcrypto_afalg_cipher_ctx_new(QCryptoCipherAlgorithm alg,
g_free(name); g_free(name);
/* setkey */ /* setkey */
if (qemu_setsockopt(afalg->tfmfd, SOL_ALG, ALG_SET_KEY, key, if (setsockopt(afalg->tfmfd, SOL_ALG, ALG_SET_KEY, key,
nkey) != 0) { nkey) != 0) {
error_setg_errno(errp, errno, "Set key failed"); error_setg_errno(errp, errno, "Set key failed");
qcrypto_afalg_comm_free(afalg); qcrypto_afalg_comm_free(afalg);

View file

@ -88,7 +88,7 @@ qcrypto_afalg_hash_hmac_ctx_new(QCryptoHashAlgorithm alg,
/* HMAC needs setkey */ /* HMAC needs setkey */
if (is_hmac) { if (is_hmac) {
if (qemu_setsockopt(afalg->tfmfd, SOL_ALG, ALG_SET_KEY, if (setsockopt(afalg->tfmfd, SOL_ALG, ALG_SET_KEY,
key, nkey) != 0) { key, nkey) != 0) {
error_setg_errno(errp, errno, "Set hmac key failed"); error_setg_errno(errp, errno, "Set hmac key failed");
qcrypto_afalg_comm_free(afalg); qcrypto_afalg_comm_free(afalg);

View file

@ -27,7 +27,7 @@ void v9fs_string_free(V9fsString *str)
str->size = 0; str->size = 0;
} }
void GCC_FMT_ATTR(2, 3) void G_GNUC_PRINTF(2, 3)
v9fs_string_sprintf(V9fsString *str, const char *fmt, ...) v9fs_string_sprintf(V9fsString *str, const char *fmt, ...)
{ {
va_list ap; va_list ap;

View file

@ -57,7 +57,7 @@ static bool is_daemon;
static bool get_version; /* IOC getversion IOCTL supported */ static bool get_version; /* IOC getversion IOCTL supported */
static char *prog_name; static char *prog_name;
static void GCC_FMT_ATTR(2, 3) do_log(int loglevel, const char *format, ...) static void G_GNUC_PRINTF(2, 3) do_log(int loglevel, const char *format, ...)
{ {
va_list ap; va_list ap;

View file

@ -426,7 +426,7 @@ static int get_char(void)
int ret; int ret;
for(;;) { for(;;) {
ret = qemu_recv(gdbserver_state.fd, &ch, 1, 0); ret = recv(gdbserver_state.fd, &ch, 1, 0);
if (ret < 0) { if (ret < 0) {
if (errno == ECONNRESET) if (errno == ECONNRESET)
gdbserver_state.fd = -1; gdbserver_state.fd = -1;

View file

@ -203,7 +203,7 @@ void v9fs_path_free(V9fsPath *path)
} }
void GCC_FMT_ATTR(2, 3) void G_GNUC_PRINTF(2, 3)
v9fs_path_sprintf(V9fsPath *path, const char *fmt, ...) v9fs_path_sprintf(V9fsPath *path, const char *fmt, ...)
{ {
va_list ap; va_list ap;

View file

@ -207,7 +207,7 @@ build_append_nameseg(GArray *array, const char *seg)
g_array_append_vals(array, "____", ACPI_NAMESEG_LEN - len); g_array_append_vals(array, "____", ACPI_NAMESEG_LEN - len);
} }
static void GCC_FMT_ATTR(2, 0) static void G_GNUC_PRINTF(2, 0)
build_append_namestringv(GArray *array, const char *format, va_list ap) build_append_namestringv(GArray *array, const char *format, va_list ap)
{ {
char *s; char *s;
@ -270,7 +270,7 @@ build_append_namestringv(GArray *array, const char *format, va_list ap)
g_strfreev(segs); g_strfreev(segs);
} }
GCC_FMT_ATTR(2, 3) G_GNUC_PRINTF(2, 3)
static void build_append_namestring(GArray *array, const char *format, ...) static void build_append_namestring(GArray *array, const char *format, ...)
{ {
va_list ap; va_list ap;

View file

@ -149,7 +149,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(PCIQXLDevice, PCI_QXL)
/* qxl.c */ /* qxl.c */
void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL phys, int group_id); void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL phys, int group_id);
void qxl_set_guest_bug(PCIQXLDevice *qxl, const char *msg, ...) void qxl_set_guest_bug(PCIQXLDevice *qxl, const char *msg, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
void qxl_spice_update_area(PCIQXLDevice *qxl, uint32_t surface_id, void qxl_spice_update_area(PCIQXLDevice *qxl, uint32_t surface_id,
struct QXLRect *area, struct QXLRect *dirty_rects, struct QXLRect *area, struct QXLRect *dirty_rects,

View file

@ -72,7 +72,7 @@ static struct _loaderparams {
const char *initrd_filename; const char *initrd_filename;
} loaderparams; } loaderparams;
static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t *prom_buf, int index, static void G_GNUC_PRINTF(3, 4) prom_set(uint32_t *prom_buf, int index,
const char *string, ...) const char *string, ...)
{ {
va_list ap; va_list ap;

View file

@ -995,7 +995,7 @@ static void write_bootloader(uint8_t *base, uint64_t run_addr,
} }
static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t *prom_buf, int index, static void G_GNUC_PRINTF(3, 4) prom_set(uint32_t *prom_buf, int index,
const char *string, ...) const char *string, ...)
{ {
va_list ap; va_list ap;

View file

@ -30,7 +30,7 @@
fprintf(stderr, "%s ROCKER: " fmt, nowstr, ## __VA_ARGS__);\ fprintf(stderr, "%s ROCKER: " fmt, nowstr, ## __VA_ARGS__);\
} while (0) } while (0)
#else #else
static inline GCC_FMT_ATTR(1, 2) int DPRINTF(const char *fmt, ...) static inline G_GNUC_PRINTF(1, 2) int DPRINTF(const char *fmt, ...)
{ {
return 0; return 0;
} }

View file

@ -86,7 +86,7 @@
# define DPRINTF(fmt, ...) \ # define DPRINTF(fmt, ...) \
do { fprintf(stderr, "RTL8139: " fmt, ## __VA_ARGS__); } while (0) do { fprintf(stderr, "RTL8139: " fmt, ## __VA_ARGS__); } while (0)
#else #else
static inline GCC_FMT_ATTR(1, 2) int DPRINTF(const char *fmt, ...) static inline G_GNUC_PRINTF(1, 2) int DPRINTF(const char *fmt, ...)
{ {
return 0; return 0;
} }

View file

@ -3579,7 +3579,7 @@ void virtio_device_set_child_bus_name(VirtIODevice *vdev, char *bus_name)
vdev->bus_name = g_strdup(bus_name); vdev->bus_name = g_strdup(bus_name);
} }
void GCC_FMT_ATTR(2, 3) virtio_error(VirtIODevice *vdev, const char *fmt, ...) void G_GNUC_PRINTF(2, 3) virtio_error(VirtIODevice *vdev, const char *fmt, ...)
{ {
va_list ap; va_list ap;

View file

@ -9,7 +9,7 @@
bool xen_igd_gfx_pt_enabled(void); bool xen_igd_gfx_pt_enabled(void);
void xen_igd_gfx_pt_set(bool value, Error **errp); void xen_igd_gfx_pt_set(bool value, Error **errp);
void xen_pt_log(const PCIDevice *d, const char *f, ...) GCC_FMT_ATTR(2, 3); void xen_pt_log(const PCIDevice *d, const char *f, ...) G_GNUC_PRINTF(2, 3);
#define XEN_PT_ERR(d, _f, _a...) xen_pt_log(d, "%s: Error: "_f, __func__, ##_a) #define XEN_PT_ERR(d, _f, _a...) xen_pt_log(d, "%s: Error: "_f, __func__, ##_a)

View file

@ -172,7 +172,7 @@ void qemu_chr_fe_set_open(CharBackend *be, int fe_open);
* Chardev. * Chardev.
*/ */
void qemu_chr_fe_printf(CharBackend *be, const char *fmt, ...) void qemu_chr_fe_printf(CharBackend *be, const char *fmt, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
typedef gboolean (*FEWatchFunc)(void *do_not_use, GIOCondition condition, void *data); typedef gboolean (*FEWatchFunc)(void *do_not_use, GIOCondition condition, void *data);

View file

@ -269,7 +269,7 @@ typedef struct symbol_cache_entry
} asymbol; } asymbol;
typedef int (*fprintf_function)(FILE *f, const char *fmt, ...) typedef int (*fprintf_function)(FILE *f, const char *fmt, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
enum dis_insn_type { enum dis_insn_type {
dis_noninsn, /* Not a valid instruction */ dis_noninsn, /* Not a valid instruction */

View file

@ -289,7 +289,7 @@ void free_aml_allocator(void);
void aml_append(Aml *parent_ctx, Aml *child); void aml_append(Aml *parent_ctx, Aml *child);
/* non block AML object primitives */ /* non block AML object primitives */
Aml *aml_name(const char *name_format, ...) GCC_FMT_ATTR(1, 2); Aml *aml_name(const char *name_format, ...) G_GNUC_PRINTF(1, 2);
Aml *aml_name_decl(const char *name, Aml *val); Aml *aml_name_decl(const char *name, Aml *val);
Aml *aml_debug(void); Aml *aml_debug(void);
Aml *aml_return(Aml *val); Aml *aml_return(Aml *val);
@ -344,13 +344,13 @@ Aml *aml_irq_no_flags(uint8_t irq);
Aml *aml_named_field(const char *name, unsigned length); Aml *aml_named_field(const char *name, unsigned length);
Aml *aml_reserved_field(unsigned length); Aml *aml_reserved_field(unsigned length);
Aml *aml_local(int num); Aml *aml_local(int num);
Aml *aml_string(const char *name_format, ...) GCC_FMT_ATTR(1, 2); Aml *aml_string(const char *name_format, ...) G_GNUC_PRINTF(1, 2);
Aml *aml_lnot(Aml *arg); Aml *aml_lnot(Aml *arg);
Aml *aml_equal(Aml *arg1, Aml *arg2); Aml *aml_equal(Aml *arg1, Aml *arg2);
Aml *aml_lgreater(Aml *arg1, Aml *arg2); Aml *aml_lgreater(Aml *arg1, Aml *arg2);
Aml *aml_lgreater_equal(Aml *arg1, Aml *arg2); Aml *aml_lgreater_equal(Aml *arg1, Aml *arg2);
Aml *aml_processor(uint8_t proc_id, uint32_t pblk_addr, uint8_t pblk_len, Aml *aml_processor(uint8_t proc_id, uint32_t pblk_addr, uint8_t pblk_len,
const char *name_format, ...) GCC_FMT_ATTR(4, 5); const char *name_format, ...) G_GNUC_PRINTF(4, 5);
Aml *aml_eisaid(const char *str); Aml *aml_eisaid(const char *str);
Aml *aml_word_bus_number(AmlMinFixed min_fixed, AmlMaxFixed max_fixed, Aml *aml_word_bus_number(AmlMinFixed min_fixed, AmlMaxFixed max_fixed,
AmlDecode dec, uint16_t addr_gran, AmlDecode dec, uint16_t addr_gran,
@ -384,8 +384,8 @@ Aml *aml_sleep(uint64_t msec);
Aml *aml_i2c_serial_bus_device(uint16_t address, const char *resource_source); Aml *aml_i2c_serial_bus_device(uint16_t address, const char *resource_source);
/* Block AML object primitives */ /* Block AML object primitives */
Aml *aml_scope(const char *name_format, ...) GCC_FMT_ATTR(1, 2); Aml *aml_scope(const char *name_format, ...) G_GNUC_PRINTF(1, 2);
Aml *aml_device(const char *name_format, ...) GCC_FMT_ATTR(1, 2); Aml *aml_device(const char *name_format, ...) G_GNUC_PRINTF(1, 2);
Aml *aml_method(const char *name, int arg_count, AmlSerializeFlag sflag); Aml *aml_method(const char *name, int arg_count, AmlSerializeFlag sflag);
Aml *aml_if(Aml *predicate); Aml *aml_if(Aml *predicate);
Aml *aml_else(void); Aml *aml_else(void);
@ -460,7 +460,7 @@ build_xsdt(GArray *table_data, BIOSLinker *linker, GArray *table_offsets,
int int
build_append_named_dword(GArray *array, const char *name_format, ...) build_append_named_dword(GArray *array, const char *name_format, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
void build_append_gas(GArray *table, AmlAddressSpace as, void build_append_gas(GArray *table, AmlAddressSpace as,
uint8_t bit_width, uint8_t bit_offset, uint8_t bit_width, uint8_t bit_offset,

View file

@ -1016,7 +1016,7 @@ int cpu_watchpoint_address_matches(CPUState *cpu, vaddr addr, vaddr len);
AddressSpace *cpu_get_address_space(CPUState *cpu, int asidx); AddressSpace *cpu_get_address_space(CPUState *cpu, int asidx);
void QEMU_NORETURN cpu_abort(CPUState *cpu, const char *fmt, ...) void QEMU_NORETURN cpu_abort(CPUState *cpu, const char *fmt, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
/* $(top_srcdir)/cpu.c */ /* $(top_srcdir)/cpu.c */
void cpu_class_init_props(DeviceClass *dc); void cpu_class_init_props(DeviceClass *dc);

View file

@ -5,6 +5,6 @@
#error Cannot include hw/hw.h from user emulation #error Cannot include hw/hw.h from user emulation
#endif #endif
void QEMU_NORETURN hw_error(const char *fmt, ...) GCC_FMT_ATTR(1, 2); void QEMU_NORETURN hw_error(const char *fmt, ...) G_GNUC_PRINTF(1, 2);
#endif #endif

View file

@ -169,7 +169,7 @@ void virtio_init(VirtIODevice *vdev, const char *name,
uint16_t device_id, size_t config_size); uint16_t device_id, size_t config_size);
void virtio_cleanup(VirtIODevice *vdev); void virtio_cleanup(VirtIODevice *vdev);
void virtio_error(VirtIODevice *vdev, const char *fmt, ...) GCC_FMT_ATTR(2, 3); void virtio_error(VirtIODevice *vdev, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
/* Set the child bus name. */ /* Set the child bus name. */
void virtio_device_set_child_bus_name(VirtIODevice *vdev, char *bus_name); void virtio_device_set_child_bus_name(VirtIODevice *vdev, char *bus_name);

View file

@ -22,11 +22,11 @@ void xs_node_destroy(struct xs_handle *xsh, xs_transaction_t tid,
void xs_node_vprintf(struct xs_handle *xsh, xs_transaction_t tid, void xs_node_vprintf(struct xs_handle *xsh, xs_transaction_t tid,
const char *node, const char *key, Error **errp, const char *node, const char *key, Error **errp,
const char *fmt, va_list ap) const char *fmt, va_list ap)
GCC_FMT_ATTR(6, 0); G_GNUC_PRINTF(6, 0);
void xs_node_printf(struct xs_handle *xsh, xs_transaction_t tid, void xs_node_printf(struct xs_handle *xsh, xs_transaction_t tid,
const char *node, const char *key, Error **errp, const char *node, const char *key, Error **errp,
const char *fmt, ...) const char *fmt, ...)
GCC_FMT_ATTR(6, 7); G_GNUC_PRINTF(6, 7);
/* Read from node/key unless node is empty, in which case read from key */ /* Read from node/key unless node is empty, in which case read from key */
int xs_node_vscanf(struct xs_handle *xsh, xs_transaction_t tid, int xs_node_vscanf(struct xs_handle *xsh, xs_transaction_t tid,

View file

@ -88,10 +88,10 @@ enum xenbus_state xen_device_backend_get_state(XenDevice *xendev);
void xen_device_backend_printf(XenDevice *xendev, const char *key, void xen_device_backend_printf(XenDevice *xendev, const char *key,
const char *fmt, ...) const char *fmt, ...)
GCC_FMT_ATTR(3, 4); G_GNUC_PRINTF(3, 4);
void xen_device_frontend_printf(XenDevice *xendev, const char *key, void xen_device_frontend_printf(XenDevice *xendev, const char *key,
const char *fmt, ...) const char *fmt, ...)
GCC_FMT_ATTR(3, 4); G_GNUC_PRINTF(3, 4);
int xen_device_frontend_scanf(XenDevice *xendev, const char *key, int xen_device_frontend_scanf(XenDevice *xendev, const char *key,
const char *fmt, ...); const char *fmt, ...);

View file

@ -358,7 +358,7 @@ static inline int xen_restrict(domid_t domid)
void destroy_hvm_domain(bool reboot); void destroy_hvm_domain(bool reboot);
/* shutdown/destroy current domain because of an error */ /* shutdown/destroy current domain because of an error */
void xen_shutdown_fatal_error(const char *fmt, ...) GCC_FMT_ATTR(1, 2); void xen_shutdown_fatal_error(const char *fmt, ...) G_GNUC_PRINTF(1, 2);
#ifdef HVM_PARAM_VMPORT_REGS_PFN #ifdef HVM_PARAM_VMPORT_REGS_PFN
static inline int xen_get_vmport_regs_pfn(xc_interface *xc, domid_t dom, static inline int xen_get_vmport_regs_pfn(xc_interface *xc, domid_t dom,

View file

@ -76,6 +76,6 @@ void xen_pv_unbind_evtchn(struct XenLegacyDevice *xendev);
int xen_pv_send_notify(struct XenLegacyDevice *xendev); int xen_pv_send_notify(struct XenLegacyDevice *xendev);
void xen_pv_printf(struct XenLegacyDevice *xendev, int msg_level, void xen_pv_printf(struct XenLegacyDevice *xendev, int msg_level,
const char *fmt, ...) GCC_FMT_ATTR(3, 4); const char *fmt, ...) G_GNUC_PRINTF(3, 4);
#endif /* QEMU_HW_XEN_PVDEV_H */ #endif /* QEMU_HW_XEN_PVDEV_H */

View file

@ -32,8 +32,8 @@ int monitor_get_fd(Monitor *mon, const char *fdname, Error **errp);
int monitor_fd_param(Monitor *mon, const char *fdname, Error **errp); int monitor_fd_param(Monitor *mon, const char *fdname, Error **errp);
int monitor_vprintf(Monitor *mon, const char *fmt, va_list ap) int monitor_vprintf(Monitor *mon, const char *fmt, va_list ap)
GCC_FMT_ATTR(2, 0); G_GNUC_PRINTF(2, 0);
int monitor_printf(Monitor *mon, const char *fmt, ...) GCC_FMT_ATTR(2, 3); int monitor_printf(Monitor *mon, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
void monitor_flush(Monitor *mon); void monitor_flush(Monitor *mon);
int monitor_set_cpu(Monitor *mon, int cpu_index); int monitor_set_cpu(Monitor *mon, int cpu_index);
int monitor_get_cpu_index(Monitor *mon); int monitor_get_cpu_index(Monitor *mon);

View file

@ -320,7 +320,7 @@ ErrorClass error_get_class(const Error *err);
void error_setg_internal(Error **errp, void error_setg_internal(Error **errp,
const char *src, int line, const char *func, const char *src, int line, const char *func,
const char *fmt, ...) const char *fmt, ...)
GCC_FMT_ATTR(5, 6); G_GNUC_PRINTF(5, 6);
/* /*
* Just like error_setg(), with @os_error info added to the message. * Just like error_setg(), with @os_error info added to the message.
@ -336,7 +336,7 @@ void error_setg_internal(Error **errp,
void error_setg_errno_internal(Error **errp, void error_setg_errno_internal(Error **errp,
const char *fname, int line, const char *func, const char *fname, int line, const char *func,
int os_error, const char *fmt, ...) int os_error, const char *fmt, ...)
GCC_FMT_ATTR(6, 7); G_GNUC_PRINTF(6, 7);
#ifdef _WIN32 #ifdef _WIN32
/* /*
@ -350,7 +350,7 @@ void error_setg_errno_internal(Error **errp,
void error_setg_win32_internal(Error **errp, void error_setg_win32_internal(Error **errp,
const char *src, int line, const char *func, const char *src, int line, const char *func,
int win32_err, const char *fmt, ...) int win32_err, const char *fmt, ...)
GCC_FMT_ATTR(6, 7); G_GNUC_PRINTF(6, 7);
#endif #endif
/* /*
@ -383,21 +383,21 @@ void error_propagate(Error **dst_errp, Error *local_err);
*/ */
void error_propagate_prepend(Error **dst_errp, Error *local_err, void error_propagate_prepend(Error **dst_errp, Error *local_err,
const char *fmt, ...) const char *fmt, ...)
GCC_FMT_ATTR(3, 4); G_GNUC_PRINTF(3, 4);
/* /*
* Prepend some text to @errp's human-readable error message. * Prepend some text to @errp's human-readable error message.
* The text is made by formatting @fmt, @ap like vprintf(). * The text is made by formatting @fmt, @ap like vprintf().
*/ */
void error_vprepend(Error *const *errp, const char *fmt, va_list ap) void error_vprepend(Error *const *errp, const char *fmt, va_list ap)
GCC_FMT_ATTR(2, 0); G_GNUC_PRINTF(2, 0);
/* /*
* Prepend some text to @errp's human-readable error message. * Prepend some text to @errp's human-readable error message.
* The text is made by formatting @fmt, ... like printf(). * The text is made by formatting @fmt, ... like printf().
*/ */
void error_prepend(Error *const *errp, const char *fmt, ...) void error_prepend(Error *const *errp, const char *fmt, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
/* /*
* Append a printf-style human-readable explanation to an existing error. * Append a printf-style human-readable explanation to an existing error.
@ -414,7 +414,7 @@ void error_prepend(Error *const *errp, const char *fmt, ...)
* newline. * newline.
*/ */
void error_append_hint(Error *const *errp, const char *fmt, ...) void error_append_hint(Error *const *errp, const char *fmt, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
/* /*
* Convenience function to report open() failure. * Convenience function to report open() failure.
@ -458,13 +458,13 @@ void error_report_err(Error *err);
* Convenience function to error_prepend(), warn_report() and free @err. * Convenience function to error_prepend(), warn_report() and free @err.
*/ */
void warn_reportf_err(Error *err, const char *fmt, ...) void warn_reportf_err(Error *err, const char *fmt, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
/* /*
* Convenience function to error_prepend(), error_report() and free @err. * Convenience function to error_prepend(), error_report() and free @err.
*/ */
void error_reportf_err(Error *err, const char *fmt, ...) void error_reportf_err(Error *err, const char *fmt, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
/* /*
* Just like error_setg(), except you get to specify the error class. * Just like error_setg(), except you get to specify the error class.
@ -477,7 +477,7 @@ void error_reportf_err(Error *err, const char *fmt, ...)
void error_set_internal(Error **errp, void error_set_internal(Error **errp,
const char *src, int line, const char *func, const char *src, int line, const char *func,
ErrorClass err_class, const char *fmt, ...) ErrorClass err_class, const char *fmt, ...)
GCC_FMT_ATTR(6, 7); G_GNUC_PRINTF(6, 7);
/* /*
* Make @errp parameter easier to use regardless of argument value * Make @errp parameter easier to use regardless of argument value

View file

@ -17,13 +17,13 @@
QObject *qobject_from_json(const char *string, Error **errp); QObject *qobject_from_json(const char *string, Error **errp);
QObject *qobject_from_vjsonf_nofail(const char *string, va_list ap) QObject *qobject_from_vjsonf_nofail(const char *string, va_list ap)
GCC_FMT_ATTR(1, 0); G_GNUC_PRINTF(1, 0);
QObject *qobject_from_jsonf_nofail(const char *string, ...) QObject *qobject_from_jsonf_nofail(const char *string, ...)
GCC_FMT_ATTR(1, 2); G_GNUC_PRINTF(1, 2);
QDict *qdict_from_vjsonf_nofail(const char *string, va_list ap) QDict *qdict_from_vjsonf_nofail(const char *string, va_list ap)
GCC_FMT_ATTR(1, 0); G_GNUC_PRINTF(1, 0);
QDict *qdict_from_jsonf_nofail(const char *string, ...) QDict *qdict_from_jsonf_nofail(const char *string, ...)
GCC_FMT_ATTR(1, 2); G_GNUC_PRINTF(1, 2);
GString *qobject_to_json(const QObject *obj); GString *qobject_to_json(const QObject *obj);
GString *qobject_to_json_pretty(const QObject *obj, bool pretty); GString *qobject_to_json_pretty(const QObject *obj, bool pretty);

View file

@ -27,7 +27,7 @@ int qemu_main(int argc, char **argv, char **envp);
#endif #endif
ssize_t qemu_write_full(int fd, const void *buf, size_t count) ssize_t qemu_write_full(int fd, const void *buf, size_t count)
QEMU_WARN_UNUSED_RESULT; G_GNUC_WARN_UNUSED_RESULT;
#ifndef _WIN32 #ifndef _WIN32
int qemu_pipe(int pipefd[2]); int qemu_pipe(int pipefd[2]);
@ -35,25 +35,6 @@ int qemu_pipe(int pipefd[2]);
int qemu_openpty_raw(int *aslave, char *pty_name); int qemu_openpty_raw(int *aslave, char *pty_name);
#endif #endif
#ifdef _WIN32
/* MinGW needs type casts for the 'buf' and 'optval' arguments. */
#define qemu_getsockopt(sockfd, level, optname, optval, optlen) \
getsockopt(sockfd, level, optname, (void *)optval, optlen)
#define qemu_setsockopt(sockfd, level, optname, optval, optlen) \
setsockopt(sockfd, level, optname, (const void *)optval, optlen)
#define qemu_recv(sockfd, buf, len, flags) recv(sockfd, (void *)buf, len, flags)
#define qemu_sendto(sockfd, buf, len, flags, destaddr, addrlen) \
sendto(sockfd, (const void *)buf, len, flags, destaddr, addrlen)
#else
#define qemu_getsockopt(sockfd, level, optname, optval, optlen) \
getsockopt(sockfd, level, optname, optval, optlen)
#define qemu_setsockopt(sockfd, level, optname, optval, optlen) \
setsockopt(sockfd, level, optname, optval, optlen)
#define qemu_recv(sockfd, buf, len, flags) recv(sockfd, buf, len, flags)
#define qemu_sendto(sockfd, buf, len, flags, destaddr, addrlen) \
sendto(sockfd, buf, len, flags, destaddr, addrlen)
#endif
void cpu_exec_init_all(void); void cpu_exec_init_all(void);
void cpu_exec_step_atomic(CPUState *cpu); void cpu_exec_step_atomic(CPUState *cpu);
@ -127,7 +108,6 @@ void qemu_hexdump(FILE *fp, const char *prefix,
*/ */
int parse_debug_env(const char *name, int max, int initial); int parse_debug_env(const char *name, int max, int initial);
const char *qemu_ether_ntoa(const MACAddr *mac);
void page_size_init(void); void page_size_init(void);
/* returns non-zero if dump is in progress, otherwise zero is /* returns non-zero if dump is in progress, otherwise zero is

View file

@ -49,7 +49,7 @@ struct Buffer {
* to identify in debug traces. * to identify in debug traces.
*/ */
void buffer_init(Buffer *buffer, const char *name, ...) void buffer_init(Buffer *buffer, const char *name, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
/** /**
* buffer_shrink: * buffer_shrink:

View file

@ -7,6 +7,11 @@
#ifndef COMPILER_H #ifndef COMPILER_H
#define COMPILER_H #define COMPILER_H
#define HOST_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
/* HOST_LONG_BITS is the size of a native pointer in bits. */
#define HOST_LONG_BITS (__SIZEOF_POINTER__ * 8)
#if defined __clang_analyzer__ || defined __COVERITY__ #if defined __clang_analyzer__ || defined __COVERITY__
#define QEMU_STATIC_ANALYSIS 1 #define QEMU_STATIC_ANALYSIS 1
#endif #endif
@ -19,10 +24,6 @@
#define QEMU_NORETURN __attribute__ ((__noreturn__)) #define QEMU_NORETURN __attribute__ ((__noreturn__))
#define QEMU_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
#define QEMU_SENTINEL __attribute__((sentinel))
#if defined(_WIN32) && (defined(__x86_64__) || defined(__i386__)) #if defined(_WIN32) && (defined(__x86_64__) || defined(__i386__))
# define QEMU_PACKED __attribute__((gcc_struct, packed)) # define QEMU_PACKED __attribute__((gcc_struct, packed))
#else #else
@ -79,20 +80,13 @@
#define QEMU_BUILD_BUG_ON_ZERO(x) (sizeof(QEMU_BUILD_BUG_ON_STRUCT(x)) - \ #define QEMU_BUILD_BUG_ON_ZERO(x) (sizeof(QEMU_BUILD_BUG_ON_STRUCT(x)) - \
sizeof(QEMU_BUILD_BUG_ON_STRUCT(x))) sizeof(QEMU_BUILD_BUG_ON_STRUCT(x)))
#if defined(__clang__) #if !defined(__clang__) && defined(_WIN32)
/* clang doesn't support gnu_printf, so use printf. */
# define GCC_FMT_ATTR(n, m) __attribute__((format(printf, n, m)))
#else
/* Use gnu_printf (qemu uses standard format strings). */
# define GCC_FMT_ATTR(n, m) __attribute__((format(gnu_printf, n, m)))
# if defined(_WIN32)
/* /*
* Map __printf__ to __gnu_printf__ because we want standard format strings even * Map __printf__ to __gnu_printf__ because we want standard format strings even
* when MinGW or GLib include files use __printf__. * when MinGW or GLib include files use __printf__.
*/ */
# define __printf__ __gnu_printf__ # define __printf__ __gnu_printf__
#endif #endif
#endif
#ifndef __has_warning #ifndef __has_warning
#define __has_warning(x) 0 /* compatibility with non-clang compilers */ #define __has_warning(x) 0 /* compatibility with non-clang compilers */

View file

@ -30,23 +30,23 @@ void loc_set_none(void);
void loc_set_cmdline(char **argv, int idx, int cnt); void loc_set_cmdline(char **argv, int idx, int cnt);
void loc_set_file(const char *fname, int lno); void loc_set_file(const char *fname, int lno);
int error_vprintf(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); int error_vprintf(const char *fmt, va_list ap) G_GNUC_PRINTF(1, 0);
int error_printf(const char *fmt, ...) GCC_FMT_ATTR(1, 2); int error_printf(const char *fmt, ...) G_GNUC_PRINTF(1, 2);
int error_vprintf_unless_qmp(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); int error_vprintf_unless_qmp(const char *fmt, va_list ap) G_GNUC_PRINTF(1, 0);
int error_printf_unless_qmp(const char *fmt, ...) GCC_FMT_ATTR(1, 2); int error_printf_unless_qmp(const char *fmt, ...) G_GNUC_PRINTF(1, 2);
void error_vreport(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); void error_vreport(const char *fmt, va_list ap) G_GNUC_PRINTF(1, 0);
void warn_vreport(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); void warn_vreport(const char *fmt, va_list ap) G_GNUC_PRINTF(1, 0);
void info_vreport(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); void info_vreport(const char *fmt, va_list ap) G_GNUC_PRINTF(1, 0);
void error_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2); void error_report(const char *fmt, ...) G_GNUC_PRINTF(1, 2);
void warn_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2); void warn_report(const char *fmt, ...) G_GNUC_PRINTF(1, 2);
void info_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2); void info_report(const char *fmt, ...) G_GNUC_PRINTF(1, 2);
bool error_report_once_cond(bool *printed, const char *fmt, ...) bool error_report_once_cond(bool *printed, const char *fmt, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
bool warn_report_once_cond(bool *printed, const char *fmt, ...) bool warn_report_once_cond(bool *printed, const char *fmt, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
void error_init(const char *argv0); void error_init(const char *argv0);
@ -72,8 +72,6 @@ void error_init(const char *argv0);
fmt, ##__VA_ARGS__); \ fmt, ##__VA_ARGS__); \
}) })
const char *error_get_progname(void);
extern bool message_with_timestamp; extern bool message_with_timestamp;
extern bool error_with_guestname; extern bool error_with_guestname;
extern const char *error_guest_name; extern const char *error_guest_name;

View file

@ -30,6 +30,6 @@ static inline bool qemu_loglevel_mask(int mask)
} }
/* main logging function */ /* main logging function */
int GCC_FMT_ATTR(1, 2) qemu_log(const char *fmt, ...); int G_GNUC_PRINTF(1, 2) qemu_log(const char *fmt, ...);
#endif #endif

View file

@ -96,7 +96,7 @@ static inline void qemu_log_unlock(FILE *fd)
/* vfprintf-like logging function /* vfprintf-like logging function
*/ */
static inline void GCC_FMT_ATTR(1, 0) static inline void G_GNUC_PRINTF(1, 0)
qemu_log_vprintf(const char *fmt, va_list va) qemu_log_vprintf(const char *fmt, va_list va)
{ {
QemuLogFile *logfile; QemuLogFile *logfile;

View file

@ -244,15 +244,6 @@ extern "C" {
#define TIME_MAX TYPE_MAXIMUM(time_t) #define TIME_MAX TYPE_MAXIMUM(time_t)
#endif #endif
/* HOST_LONG_BITS is the size of a native pointer in bits. */
#if UINTPTR_MAX == UINT32_MAX
# define HOST_LONG_BITS 32
#elif UINTPTR_MAX == UINT64_MAX
# define HOST_LONG_BITS 64
#else
# error Unknown pointer size
#endif
/* Mac OSX has a <stdint.h> bug that incorrectly defines SIZE_MAX with /* Mac OSX has a <stdint.h> bug that incorrectly defines SIZE_MAX with
* the wrong type. Our replacement isn't usable in preprocessor * the wrong type. Our replacement isn't usable in preprocessor
* expressions, but it is sufficient for our needs. */ * expressions, but it is sufficient for our needs. */

View file

@ -13,11 +13,11 @@
#ifndef QEMU_PRINT_H #ifndef QEMU_PRINT_H
#define QEMU_PRINT_H #define QEMU_PRINT_H
int qemu_vprintf(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); int qemu_vprintf(const char *fmt, va_list ap) G_GNUC_PRINTF(1, 0);
int qemu_printf(const char *fmt, ...) GCC_FMT_ATTR(1, 2); int qemu_printf(const char *fmt, ...) G_GNUC_PRINTF(1, 2);
int qemu_vfprintf(FILE *stream, const char *fmt, va_list ap) int qemu_vfprintf(FILE *stream, const char *fmt, va_list ap)
GCC_FMT_ATTR(2, 0); G_GNUC_PRINTF(2, 0);
int qemu_fprintf(FILE *stream, const char *fmt, ...) GCC_FMT_ATTR(2, 3); int qemu_fprintf(FILE *stream, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
#endif #endif

View file

@ -114,8 +114,8 @@ static inline uint64_t range_upb(Range *range)
* @size may be 0. If the range would overflow, returns -ERANGE, otherwise * @size may be 0. If the range would overflow, returns -ERANGE, otherwise
* 0. * 0.
*/ */
static inline int QEMU_WARN_UNUSED_RESULT range_init(Range *range, uint64_t lob, G_GNUC_WARN_UNUSED_RESULT
uint64_t size) static inline int range_init(Range *range, uint64_t lob, uint64_t size)
{ {
if (lob + size < lob) { if (lob + size < lob) {
return -ERANGE; return -ERANGE;

View file

@ -5,7 +5,7 @@
#define READLINE_MAX_CMDS 64 #define READLINE_MAX_CMDS 64
#define READLINE_MAX_COMPLETIONS 256 #define READLINE_MAX_COMPLETIONS 256
typedef void GCC_FMT_ATTR(2, 3) ReadLinePrintfFunc(void *opaque, typedef void G_GNUC_PRINTF(2, 3) ReadLinePrintfFunc(void *opaque,
const char *fmt, ...); const char *fmt, ...);
typedef void ReadLineFlushFunc(void *opaque); typedef void ReadLineFlushFunc(void *opaque);
typedef void ReadLineFunc(void *opaque, const char *str, typedef void ReadLineFunc(void *opaque, const char *str,

View file

@ -616,7 +616,7 @@ Object *object_new_with_props(const char *typename,
Object *parent, Object *parent,
const char *id, const char *id,
Error **errp, Error **errp,
...) QEMU_SENTINEL; ...) G_GNUC_NULL_TERMINATED;
/** /**
* object_new_with_propv: * object_new_with_propv:
@ -676,7 +676,7 @@ void object_apply_compat_props(Object *obj);
* *
* Returns: %true on success, %false on error. * Returns: %true on success, %false on error.
*/ */
bool object_set_props(Object *obj, Error **errp, ...) QEMU_SENTINEL; bool object_set_props(Object *obj, Error **errp, ...) G_GNUC_NULL_TERMINATED;
/** /**
* object_set_propv: * object_set_propv:
@ -728,7 +728,7 @@ void object_initialize(void *obj, size_t size, const char *typename);
bool object_initialize_child_with_props(Object *parentobj, bool object_initialize_child_with_props(Object *parentobj,
const char *propname, const char *propname,
void *childobj, size_t size, const char *type, void *childobj, size_t size, const char *type,
Error **errp, ...) QEMU_SENTINEL; Error **errp, ...) G_GNUC_NULL_TERMINATED;
/** /**
* object_initialize_child_with_propsv: * object_initialize_child_with_propsv:

View file

@ -681,7 +681,7 @@ qio_channel_socket_set_delay(QIOChannel *ioc,
QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc); QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
int v = enabled ? 0 : 1; int v = enabled ? 0 : 1;
qemu_setsockopt(sioc->fd, setsockopt(sioc->fd,
IPPROTO_TCP, TCP_NODELAY, IPPROTO_TCP, TCP_NODELAY,
&v, sizeof(v)); &v, sizeof(v));
} }

View file

@ -157,7 +157,7 @@ enum {
QIO_CHANNEL_WEBSOCK_OPCODE_PONG = 0xA QIO_CHANNEL_WEBSOCK_OPCODE_PONG = 0xA
}; };
static void GCC_FMT_ATTR(2, 3) static void G_GNUC_PRINTF(2, 3)
qio_channel_websock_handshake_send_res(QIOChannelWebsock *ioc, qio_channel_websock_handshake_send_res(QIOChannelWebsock *ioc,
const char *resmsg, const char *resmsg,
...) ...)

View file

@ -1853,21 +1853,57 @@ config_host_data.set('HAVE_BROKEN_SIZE_MAX', not cc.compiles('''
return printf("%zu", SIZE_MAX); return printf("%zu", SIZE_MAX);
}''', args: ['-Werror'])) }''', args: ['-Werror']))
# See if 64-bit atomic operations are supported. atomic_test = '''
# Note that without __atomic builtins, we can only
# assume atomic loads/stores max at pointer size.
config_host_data.set('CONFIG_ATOMIC64', cc.links('''
#include <stdint.h> #include <stdint.h>
int main(void) int main(void)
{ {
uint64_t x = 0, y = 0; @0@ x = 0, y = 0;
y = __atomic_load_n(&x, __ATOMIC_RELAXED); y = __atomic_load_n(&x, __ATOMIC_RELAXED);
__atomic_store_n(&x, y, __ATOMIC_RELAXED); __atomic_store_n(&x, y, __ATOMIC_RELAXED);
__atomic_compare_exchange_n(&x, &y, x, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&x, &y, x, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
__atomic_exchange_n(&x, y, __ATOMIC_RELAXED); __atomic_exchange_n(&x, y, __ATOMIC_RELAXED);
__atomic_fetch_add(&x, y, __ATOMIC_RELAXED); __atomic_fetch_add(&x, y, __ATOMIC_RELAXED);
return 0; return 0;
}''')) }'''
# See if 64-bit atomic operations are supported.
# Note that without __atomic builtins, we can only
# assume atomic loads/stores max at pointer size.
config_host_data.set('CONFIG_ATOMIC64', cc.links(atomic_test.format('uint64_t')))
has_int128 = cc.links('''
__int128_t a;
__uint128_t b;
int main (void) {
a = a + b;
b = a * b;
a = a * a;
return 0;
}''')
config_host_data.set('CONFIG_INT128', has_int128)
if has_int128
# "do we have 128-bit atomics which are handled inline and specifically not
# via libatomic". The reason we can't use libatomic is documented in the
# comment starting "GCC is a house divided" in include/qemu/atomic128.h.
has_atomic128 = cc.links(atomic_test.format('unsigned __int128'))
config_host_data.set('CONFIG_ATOMIC128', has_atomic128)
if not has_atomic128
has_cmpxchg128 = cc.links('''
int main(void)
{
unsigned __int128 x = 0, y = 0;
__sync_val_compare_and_swap_16(&x, y, x);
return 0;
}
''')
config_host_data.set('CONFIG_CMPXCHG128', has_cmpxchg128)
endif
endif
config_host_data.set('CONFIG_GETAUXVAL', cc.links(gnu_source_prefix + ''' config_host_data.set('CONFIG_GETAUXVAL', cc.links(gnu_source_prefix + '''
#include <sys/auxv.h> #include <sys/auxv.h>

View file

@ -308,7 +308,7 @@ void help_cmd(Monitor *mon, const char *name)
static const char *pch; static const char *pch;
static sigjmp_buf expr_env; static sigjmp_buf expr_env;
static void GCC_FMT_ATTR(2, 3) QEMU_NORETURN static void G_GNUC_PRINTF(2, 3) QEMU_NORETURN
expr_error(Monitor *mon, const char *fmt, ...) expr_error(Monitor *mon, const char *fmt, ...)
{ {
va_list ap; va_list ap;
@ -1462,7 +1462,7 @@ static void monitor_event(void *opaque, QEMUChrEvent event)
* These functions just adapt the readline interface in a typesafe way. We * These functions just adapt the readline interface in a typesafe way. We
* could cast function pointers but that discards compiler checks. * could cast function pointers but that discards compiler checks.
*/ */
static void GCC_FMT_ATTR(2, 3) monitor_readline_printf(void *opaque, static void G_GNUC_PRINTF(2, 3) monitor_readline_printf(void *opaque,
const char *fmt, ...) const char *fmt, ...)
{ {
MonitorHMP *mon = opaque; MonitorHMP *mon = opaque;

View file

@ -213,7 +213,7 @@ static int nbd_negotiate_send_rep(NBDClient *client, uint32_t type,
/* Send an error reply. /* Send an error reply.
* Return -errno on error, 0 on success. */ * Return -errno on error, 0 on success. */
static int GCC_FMT_ATTR(4, 0) static int G_GNUC_PRINTF(4, 0)
nbd_negotiate_send_rep_verr(NBDClient *client, uint32_t type, nbd_negotiate_send_rep_verr(NBDClient *client, uint32_t type,
Error **errp, const char *fmt, va_list va) Error **errp, const char *fmt, va_list va)
{ {
@ -253,7 +253,7 @@ nbd_sanitize_name(const char *name)
/* Send an error reply. /* Send an error reply.
* Return -errno on error, 0 on success. */ * Return -errno on error, 0 on success. */
static int GCC_FMT_ATTR(4, 5) static int G_GNUC_PRINTF(4, 5)
nbd_negotiate_send_rep_err(NBDClient *client, uint32_t type, nbd_negotiate_send_rep_err(NBDClient *client, uint32_t type,
Error **errp, const char *fmt, ...) Error **errp, const char *fmt, ...)
{ {
@ -269,7 +269,7 @@ nbd_negotiate_send_rep_err(NBDClient *client, uint32_t type,
/* Drop remainder of the current option, and send a reply with the /* Drop remainder of the current option, and send a reply with the
* given error type and message. Return -errno on read or write * given error type and message. Return -errno on read or write
* failure; or 0 if connection is still live. */ * failure; or 0 if connection is still live. */
static int GCC_FMT_ATTR(4, 0) static int G_GNUC_PRINTF(4, 0)
nbd_opt_vdrop(NBDClient *client, uint32_t type, Error **errp, nbd_opt_vdrop(NBDClient *client, uint32_t type, Error **errp,
const char *fmt, va_list va) const char *fmt, va_list va)
{ {
@ -282,7 +282,7 @@ nbd_opt_vdrop(NBDClient *client, uint32_t type, Error **errp,
return ret; return ret;
} }
static int GCC_FMT_ATTR(4, 5) static int G_GNUC_PRINTF(4, 5)
nbd_opt_drop(NBDClient *client, uint32_t type, Error **errp, nbd_opt_drop(NBDClient *client, uint32_t type, Error **errp,
const char *fmt, ...) const char *fmt, ...)
{ {
@ -296,7 +296,7 @@ nbd_opt_drop(NBDClient *client, uint32_t type, Error **errp,
return ret; return ret;
} }
static int GCC_FMT_ATTR(3, 4) static int G_GNUC_PRINTF(3, 4)
nbd_opt_invalid(NBDClient *client, Error **errp, const char *fmt, ...) nbd_opt_invalid(NBDClient *client, Error **errp, const char *fmt, ...)
{ {
int ret; int ret;
@ -2064,7 +2064,7 @@ static void nbd_extent_array_free(NBDExtentArray *ea)
g_free(ea->extents); g_free(ea->extents);
g_free(ea); g_free(ea);
} }
G_DEFINE_AUTOPTR_CLEANUP_FUNC(NBDExtentArray, nbd_extent_array_free); G_DEFINE_AUTOPTR_CLEANUP_FUNC(NBDExtentArray, nbd_extent_array_free)
/* Further modifications of the array after conversion are abandoned */ /* Further modifications of the array after conversion are abandoned */
static void nbd_extent_array_convert_to_be(NBDExtentArray *ea) static void nbd_extent_array_convert_to_be(NBDExtentArray *ea)

View file

@ -120,6 +120,19 @@ static int announce_self_create(uint8_t *buf,
return 60; /* len (FCS will be added by hardware) */ return 60; /* len (FCS will be added by hardware) */
} }
/*
* Helper to print ethernet mac address
*/
static const char *qemu_ether_ntoa(const MACAddr *mac)
{
static char ret[18];
snprintf(ret, sizeof(ret), "%02x:%02x:%02x:%02x:%02x:%02x",
mac->a[0], mac->a[1], mac->a[2], mac->a[3], mac->a[4], mac->a[5]);
return ret;
}
static void qemu_announce_self_iter(NICState *nic, void *opaque) static void qemu_announce_self_iter(NICState *nic, void *opaque)
{ {
AnnounceTimer *timer = opaque; AnnounceTimer *timer = opaque;

View file

@ -120,7 +120,7 @@ static ssize_t net_socket_receive_dgram(NetClientState *nc, const uint8_t *buf,
do { do {
if (s->dgram_dst.sin_family != AF_UNIX) { if (s->dgram_dst.sin_family != AF_UNIX) {
ret = qemu_sendto(s->fd, buf, size, 0, ret = sendto(s->fd, buf, size, 0,
(struct sockaddr *)&s->dgram_dst, (struct sockaddr *)&s->dgram_dst,
sizeof(s->dgram_dst)); sizeof(s->dgram_dst));
} else { } else {
@ -163,7 +163,7 @@ static void net_socket_send(void *opaque)
uint8_t buf1[NET_BUFSIZE]; uint8_t buf1[NET_BUFSIZE];
const uint8_t *buf; const uint8_t *buf;
size = qemu_recv(s->fd, buf1, sizeof(buf1), 0); size = recv(s->fd, buf1, sizeof(buf1), 0);
if (size < 0) { if (size < 0) {
if (errno != EWOULDBLOCK) if (errno != EWOULDBLOCK)
goto eoc; goto eoc;
@ -198,7 +198,7 @@ static void net_socket_send_dgram(void *opaque)
NetSocketState *s = opaque; NetSocketState *s = opaque;
int size; int size;
size = qemu_recv(s->fd, s->rs.buf, sizeof(s->rs.buf), 0); size = recv(s->fd, s->rs.buf, sizeof(s->rs.buf), 0);
if (size < 0) if (size < 0)
return; return;
if (size == 0) { if (size == 0) {
@ -246,7 +246,7 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr,
* only on posix systems. * only on posix systems.
*/ */
val = 1; val = 1;
ret = qemu_setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); ret = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));
if (ret < 0) { if (ret < 0) {
error_setg_errno(errp, errno, error_setg_errno(errp, errno,
"can't set socket option SO_REUSEADDR"); "can't set socket option SO_REUSEADDR");
@ -268,7 +268,7 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr,
imr.imr_interface.s_addr = htonl(INADDR_ANY); imr.imr_interface.s_addr = htonl(INADDR_ANY);
} }
ret = qemu_setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, ret = setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP,
&imr, sizeof(struct ip_mreq)); &imr, sizeof(struct ip_mreq));
if (ret < 0) { if (ret < 0) {
error_setg_errno(errp, errno, error_setg_errno(errp, errno,
@ -279,7 +279,7 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr,
/* Force mcast msgs to loopback (eg. several QEMUs in same host */ /* Force mcast msgs to loopback (eg. several QEMUs in same host */
loop = 1; loop = 1;
ret = qemu_setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, ret = setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP,
&loop, sizeof(loop)); &loop, sizeof(loop));
if (ret < 0) { if (ret < 0) {
error_setg_errno(errp, errno, error_setg_errno(errp, errno,
@ -289,7 +289,7 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr,
/* If a bind address is given, only send packets from that address */ /* If a bind address is given, only send packets from that address */
if (localaddr != NULL) { if (localaddr != NULL) {
ret = qemu_setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, ret = setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF,
localaddr, sizeof(*localaddr)); localaddr, sizeof(*localaddr));
if (ret < 0) { if (ret < 0) {
error_setg_errno(errp, errno, error_setg_errno(errp, errno,

View file

@ -23,7 +23,6 @@
#include "qapi/qmp/qnum.h" #include "qapi/qmp/qnum.h"
#include "qapi/qmp/qstring.h" #include "qapi/qmp/qstring.h"
#include "qemu/cutils.h" #include "qemu/cutils.h"
#include "qemu/option.h"
struct ForwardFieldVisitor { struct ForwardFieldVisitor {
Visitor visitor; Visitor visitor;

View file

@ -21,7 +21,6 @@
#include "qapi/qmp/qjson.h" #include "qapi/qmp/qjson.h"
#include "qapi/qobject-input-visitor.h" #include "qapi/qobject-input-visitor.h"
#include "qapi/qobject-output-visitor.h" #include "qapi/qobject-output-visitor.h"
#include "sysemu/runstate.h"
#include "qapi/qmp/qbool.h" #include "qapi/qmp/qbool.h"
#include "qemu/coroutine.h" #include "qemu/coroutine.h"
#include "qemu/main-loop.h" #include "qemu/main-loop.h"

View file

@ -14,7 +14,6 @@
#include "qemu/cutils.h" #include "qemu/cutils.h"
#include "qapi/string-output-visitor.h" #include "qapi/string-output-visitor.h"
#include "qapi/visitor-impl.h" #include "qapi/visitor-impl.h"
#include "qemu/host-utils.h"
#include <math.h> #include <math.h>
#include "qemu/range.h" #include "qemu/range.h"

View file

@ -99,7 +99,7 @@ static void format_print(void *opaque, const char *name)
printf(" %s", name); printf(" %s", name);
} }
static void QEMU_NORETURN GCC_FMT_ATTR(1, 2) error_exit(const char *fmt, ...) static void QEMU_NORETURN G_GNUC_PRINTF(1, 2) error_exit(const char *fmt, ...)
{ {
va_list ap; va_list ap;
@ -284,7 +284,7 @@ static QemuOptsList qemu_source_opts = {
}, },
}; };
static int GCC_FMT_ATTR(2, 3) qprintf(bool quiet, const char *fmt, ...) static int G_GNUC_PRINTF(2, 3) qprintf(bool quiet, const char *fmt, ...)
{ {
int ret = 0; int ret = 0;
if (!quiet) { if (!quiet) {

View file

@ -323,13 +323,13 @@ static char *get_prompt(void)
static char prompt[FILENAME_MAX + 2 /*"> "*/ + 1 /*"\0"*/ ]; static char prompt[FILENAME_MAX + 2 /*"> "*/ + 1 /*"\0"*/ ];
if (!prompt[0]) { if (!prompt[0]) {
snprintf(prompt, sizeof(prompt), "%s> ", error_get_progname()); snprintf(prompt, sizeof(prompt), "%s> ", g_get_prgname());
} }
return prompt; return prompt;
} }
static void GCC_FMT_ATTR(2, 3) readline_printf_func(void *opaque, static void G_GNUC_PRINTF(2, 3) readline_printf_func(void *opaque,
const char *fmt, ...) const char *fmt, ...)
{ {
va_list ap; va_list ap;
@ -598,10 +598,10 @@ int main(int argc, char **argv)
break; break;
case 'V': case 'V':
printf("%s version " QEMU_FULL_VERSION "\n" printf("%s version " QEMU_FULL_VERSION "\n"
QEMU_COPYRIGHT "\n", error_get_progname()); QEMU_COPYRIGHT "\n", g_get_prgname());
exit(0); exit(0);
case 'h': case 'h':
usage(error_get_progname()); usage(g_get_prgname());
exit(0); exit(0);
case 'U': case 'U':
force_share = true; force_share = true;
@ -613,13 +613,13 @@ int main(int argc, char **argv)
imageOpts = true; imageOpts = true;
break; break;
default: default:
usage(error_get_progname()); usage(g_get_prgname());
exit(1); exit(1);
} }
} }
if ((argc - optind) > 1) { if ((argc - optind) > 1) {
usage(error_get_progname()); usage(g_get_prgname());
exit(1); exit(1);
} }

View file

@ -2097,6 +2097,7 @@ SRST
Enable SDL. Enable SDL.
ERST ERST
#ifdef CONFIG_SPICE
DEF("spice", HAS_ARG, QEMU_OPTION_spice, DEF("spice", HAS_ARG, QEMU_OPTION_spice,
"-spice [port=port][,tls-port=secured-port][,x509-dir=<dir>]\n" "-spice [port=port][,tls-port=secured-port][,x509-dir=<dir>]\n"
" [,x509-key-file=<file>][,x509-key-password=<file>]\n" " [,x509-key-file=<file>][,x509-key-password=<file>]\n"
@ -2118,6 +2119,7 @@ DEF("spice", HAS_ARG, QEMU_OPTION_spice,
" enable spice\n" " enable spice\n"
" at least one of {port, tls-port} is mandatory\n", " at least one of {port, tls-port} is mandatory\n",
QEMU_ARCH_ALL) QEMU_ARCH_ALL)
#endif
SRST SRST
``-spice option[,option[,...]]`` ``-spice option[,option[,...]]``
Enable the spice remote desktop protocol. Valid options are Enable the spice remote desktop protocol. Valid options are

View file

@ -36,7 +36,7 @@ void ga_command_state_free(GACommandState *cs);
bool ga_logging_enabled(GAState *s); bool ga_logging_enabled(GAState *s);
void ga_disable_logging(GAState *s); void ga_disable_logging(GAState *s);
void ga_enable_logging(GAState *s); void ga_enable_logging(GAState *s);
void GCC_FMT_ATTR(1, 2) slog(const gchar *fmt, ...); void G_GNUC_PRINTF(1, 2) slog(const gchar *fmt, ...);
void ga_set_response_delimited(GAState *s); void ga_set_response_delimited(GAState *s);
bool ga_is_frozen(GAState *s); bool ga_is_frozen(GAState *s);
void ga_set_frozen(GAState *s); void ga_set_frozen(GAState *s);

View file

@ -27,7 +27,6 @@
#include "qapi/qmp/qerror.h" #include "qapi/qmp/qerror.h"
#include "qapi/error.h" #include "qapi/error.h"
#include "channel.h" #include "channel.h"
#include "qemu/bswap.h"
#include "qemu/cutils.h" #include "qemu/cutils.h"
#include "qemu/help_option.h" #include "qemu/help_option.h"
#include "qemu/sockets.h" #include "qemu/sockets.h"

View file

@ -25,7 +25,7 @@ struct Error;
typedef void (*ErrorSetFunc)(struct Error **errp, typedef void (*ErrorSetFunc)(struct Error **errp,
const char *src, int line, const char *func, const char *src, int line, const char *func,
int win32_err, const char *fmt, ...) int win32_err, const char *fmt, ...)
GCC_FMT_ATTR(6, 7); G_GNUC_PRINTF(6, 7);
typedef struct ErrorSet { typedef struct ErrorSet {
ErrorSetFunc error_setg_win32_wrapper; ErrorSetFunc error_setg_win32_wrapper;
struct Error **errp; /* restriction: must not be null */ struct Error **errp; /* restriction: must not be null */

View file

@ -54,7 +54,7 @@ static QObject *parse_value(JSONParserContext *ctxt);
/** /**
* Error handler * Error handler
*/ */
static void GCC_FMT_ATTR(3, 4) parse_error(JSONParserContext *ctxt, static void G_GNUC_PRINTF(3, 4) parse_error(JSONParserContext *ctxt,
JSONToken *token, const char *msg, ...) JSONToken *token, const char *msg, ...)
{ {
va_list ap; va_list ap;

View file

@ -224,10 +224,10 @@ our $Attribute = qr{
const| const|
volatile| volatile|
QEMU_NORETURN| QEMU_NORETURN|
QEMU_WARN_UNUSED_RESULT| G_GNUC_WARN_UNUSED_RESULT|
QEMU_SENTINEL| G_GNUC_NULL_TERMINATED|
QEMU_PACKED| QEMU_PACKED|
GCC_FMT_ATTR G_GNUC_PRINTF
}x; }x;
our $Modifier; our $Modifier;
our $Inline = qr{inline}; our $Inline = qr{inline};

View file

@ -20,8 +20,8 @@
/* From qemu/compiler.h */ /* From qemu/compiler.h */
#define QEMU_NORETURN __attribute__ ((__noreturn__)) #define QEMU_NORETURN __attribute__ ((__noreturn__))
#define QEMU_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) #define G_GNUC_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
#define QEMU_SENTINEL __attribute__((sentinel)) #define G_GNUC_NULL_TERMINATED __attribute__((sentinel))
#if defined(_WIN32) && (defined(__x86_64__) || defined(__i386__)) #if defined(_WIN32) && (defined(__x86_64__) || defined(__i386__))
# define QEMU_PACKED __attribute__((gcc_struct, packed)) # define QEMU_PACKED __attribute__((gcc_struct, packed))
@ -34,7 +34,7 @@
#define QEMU_BUILD_BUG_ON(x) \ #define QEMU_BUILD_BUG_ON(x) \
typedef char cat2(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused)); typedef char cat2(qemu_build_bug_on__,__LINE__)[(x)?-1:1] __attribute__((unused));
#define GCC_FMT_ATTR(n, m) __attribute__((format(gnu_printf, n, m))) #define G_GNUC_PRINTF(n, m) __attribute__((format(gnu_printf, n, m)))
#define xglue(x, y) x ## y #define xglue(x, y) x ## y
#define glue(x, y) xglue(x, y) #define glue(x, y) xglue(x, y)

View file

@ -18,13 +18,8 @@ def find_command(src, target, compile_commands):
def process_command(src, command): def process_command(src, command):
skip = False skip = False
arg = False
out = [] out = []
for item in shlex.split(command): for item in shlex.split(command):
if arg:
out.append(x)
arg = False
continue
if skip: if skip:
skip = False skip = False
continue continue

View file

@ -288,7 +288,7 @@ static void qtest_send_prefix(CharBackend *chr)
(long) tv.tv_sec, (long) tv.tv_usec); (long) tv.tv_sec, (long) tv.tv_usec);
} }
static void GCC_FMT_ATTR(1, 2) qtest_log_send(const char *fmt, ...) static void G_GNUC_PRINTF(1, 2) qtest_log_send(const char *fmt, ...)
{ {
va_list ap; va_list ap;
@ -318,7 +318,7 @@ static void qtest_send(CharBackend *chr, const char *str)
qtest_server_send(qtest_server_send_opaque, str); qtest_server_send(qtest_server_send_opaque, str);
} }
static void GCC_FMT_ATTR(2, 3) qtest_sendf(CharBackend *chr, static void G_GNUC_PRINTF(2, 3) qtest_sendf(CharBackend *chr,
const char *fmt, ...) const char *fmt, ...)
{ {
va_list ap; va_list ap;

View file

@ -836,7 +836,7 @@ static void help(int exitcode)
version(); version();
printf("usage: %s [options] [disk_image]\n\n" printf("usage: %s [options] [disk_image]\n\n"
"'disk_image' is a raw hard disk image for IDE hard disk 0\n\n", "'disk_image' is a raw hard disk image for IDE hard disk 0\n\n",
error_get_progname()); g_get_prgname());
#define DEF(option, opt_arg, opt_enum, opt_help, arch_mask) \ #define DEF(option, opt_arg, opt_enum, opt_help, arch_mask) \
if ((arch_mask) & arch_type) \ if ((arch_mask) & arch_type) \
@ -1961,7 +1961,7 @@ static void qemu_create_early_backends(void)
object_option_foreach_add(object_create_early); object_option_foreach_add(object_create_early);
/* spice needs the timers to be initialized by this point */ /* spice needs the timers to be initialized by this point */
/* spice must initialize before audio as it changes the default auiodev */ /* spice must initialize before audio as it changes the default audiodev */
/* spice must initialize before chardevs (for spicevmc and spiceport) */ /* spice must initialize before chardevs (for spicevmc and spiceport) */
qemu_spice.init(); qemu_spice.init();
@ -3537,6 +3537,7 @@ void qemu_init(int argc, char **argv, char **envp)
case QEMU_OPTION_readconfig: case QEMU_OPTION_readconfig:
qemu_read_config_file(optarg, qemu_parse_config_group, &error_fatal); qemu_read_config_file(optarg, qemu_parse_config_group, &error_fatal);
break; break;
#ifdef CONFIG_SPICE
case QEMU_OPTION_spice: case QEMU_OPTION_spice:
olist = qemu_find_opts_err("spice", NULL); olist = qemu_find_opts_err("spice", NULL);
if (!olist) { if (!olist) {
@ -3549,6 +3550,7 @@ void qemu_init(int argc, char **argv, char **envp)
} }
display_remote++; display_remote++;
break; break;
#endif
case QEMU_OPTION_writeconfig: case QEMU_OPTION_writeconfig:
{ {
FILE *fp; FILE *fp;

View file

@ -141,7 +141,7 @@ static void help(void)
" --pidfile <path> write process ID to a file after startup\n" " --pidfile <path> write process ID to a file after startup\n"
"\n" "\n"
QEMU_HELP_BOTTOM "\n", QEMU_HELP_BOTTOM "\n",
error_get_progname()); g_get_prgname());
} }
enum { enum {

View file

@ -381,7 +381,7 @@ void do_m68k_semihosting(CPUM68KState *env, int nr)
qemu_timeval tv; qemu_timeval tv;
struct gdb_timeval *p; struct gdb_timeval *p;
result = qemu_gettimeofday(&tv); result = qemu_gettimeofday(&tv);
if (result != 0) { if (result == 0) {
if (!(p = lock_user(VERIFY_WRITE, if (!(p = lock_user(VERIFY_WRITE,
arg0, sizeof(struct gdb_timeval), 0))) { arg0, sizeof(struct gdb_timeval), 0))) {
/* FIXME - check error code? */ /* FIXME - check error code? */

View file

@ -403,7 +403,7 @@ void do_nios2_semihosting(CPUNios2State *env)
qemu_timeval tv; qemu_timeval tv;
struct gdb_timeval *p; struct gdb_timeval *p;
result = qemu_gettimeofday(&tv); result = qemu_gettimeofday(&tv);
if (result != 0) { if (result == 0) {
p = lock_user(VERIFY_WRITE, arg0, sizeof(struct gdb_timeval), p = lock_user(VERIFY_WRITE, arg0, sizeof(struct gdb_timeval),
0); 0);
if (!p) { if (!p) {

View file

@ -91,9 +91,9 @@ static void e1000e_send_verify(QE1000E *d, int *test_sockets, QGuestAllocator *a
g_assert_cmphex(le32_to_cpu(descr.upper.data) & dsta_dd, ==, dsta_dd); g_assert_cmphex(le32_to_cpu(descr.upper.data) & dsta_dd, ==, dsta_dd);
/* Check data sent to the backend */ /* Check data sent to the backend */
ret = qemu_recv(test_sockets[0], &recv_len, sizeof(recv_len), 0); ret = recv(test_sockets[0], &recv_len, sizeof(recv_len), 0);
g_assert_cmpint(ret, == , sizeof(recv_len)); g_assert_cmpint(ret, == , sizeof(recv_len));
ret = qemu_recv(test_sockets[0], buffer, 64, 0); ret = recv(test_sockets[0], buffer, 64, 0);
g_assert_cmpint(ret, >=, 5); g_assert_cmpint(ret, >=, 5);
g_assert_cmpstr(buffer, == , "TEST"); g_assert_cmpstr(buffer, == , "TEST");

View file

@ -31,7 +31,7 @@ typedef struct QTestState QTestState;
* *
* Returns: #QTestState instance. * Returns: #QTestState instance.
*/ */
QTestState *qtest_initf(const char *fmt, ...) GCC_FMT_ATTR(1, 2); QTestState *qtest_initf(const char *fmt, ...) G_GNUC_PRINTF(1, 2);
/** /**
* qtest_vinitf: * qtest_vinitf:
@ -43,7 +43,7 @@ QTestState *qtest_initf(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
* *
* Returns: #QTestState instance. * Returns: #QTestState instance.
*/ */
QTestState *qtest_vinitf(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); QTestState *qtest_vinitf(const char *fmt, va_list ap) G_GNUC_PRINTF(1, 0);
/** /**
* qtest_init: * qtest_init:
@ -106,7 +106,7 @@ void qtest_quit(QTestState *s);
*/ */
QDict *qtest_qmp_fds(QTestState *s, int *fds, size_t fds_num, QDict *qtest_qmp_fds(QTestState *s, int *fds, size_t fds_num,
const char *fmt, ...) const char *fmt, ...)
GCC_FMT_ATTR(4, 5); G_GNUC_PRINTF(4, 5);
/** /**
* qtest_qmp: * qtest_qmp:
@ -118,7 +118,7 @@ QDict *qtest_qmp_fds(QTestState *s, int *fds, size_t fds_num,
* Sends a QMP message to QEMU and returns the response. * Sends a QMP message to QEMU and returns the response.
*/ */
QDict *qtest_qmp(QTestState *s, const char *fmt, ...) QDict *qtest_qmp(QTestState *s, const char *fmt, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
/** /**
* qtest_qmp_send: * qtest_qmp_send:
@ -130,7 +130,7 @@ QDict *qtest_qmp(QTestState *s, const char *fmt, ...)
* Sends a QMP message to QEMU and leaves the response in the stream. * Sends a QMP message to QEMU and leaves the response in the stream.
*/ */
void qtest_qmp_send(QTestState *s, const char *fmt, ...) void qtest_qmp_send(QTestState *s, const char *fmt, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
/** /**
* qtest_qmp_send_raw: * qtest_qmp_send_raw:
@ -141,7 +141,7 @@ void qtest_qmp_send(QTestState *s, const char *fmt, ...)
* this is useful for negative tests. * this is useful for negative tests.
*/ */
void qtest_qmp_send_raw(QTestState *s, const char *fmt, ...) void qtest_qmp_send_raw(QTestState *s, const char *fmt, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
/** /**
* qtest_socket_server: * qtest_socket_server:
@ -165,7 +165,7 @@ int qtest_socket_server(const char *socket_path);
*/ */
QDict *qtest_vqmp_fds(QTestState *s, int *fds, size_t fds_num, QDict *qtest_vqmp_fds(QTestState *s, int *fds, size_t fds_num,
const char *fmt, va_list ap) const char *fmt, va_list ap)
GCC_FMT_ATTR(4, 0); G_GNUC_PRINTF(4, 0);
/** /**
* qtest_vqmp: * qtest_vqmp:
@ -178,7 +178,7 @@ QDict *qtest_vqmp_fds(QTestState *s, int *fds, size_t fds_num,
* Sends a QMP message to QEMU and returns the response. * Sends a QMP message to QEMU and returns the response.
*/ */
QDict *qtest_vqmp(QTestState *s, const char *fmt, va_list ap) QDict *qtest_vqmp(QTestState *s, const char *fmt, va_list ap)
GCC_FMT_ATTR(2, 0); G_GNUC_PRINTF(2, 0);
/** /**
* qtest_qmp_vsend_fds: * qtest_qmp_vsend_fds:
@ -194,7 +194,7 @@ QDict *qtest_vqmp(QTestState *s, const char *fmt, va_list ap)
*/ */
void qtest_qmp_vsend_fds(QTestState *s, int *fds, size_t fds_num, void qtest_qmp_vsend_fds(QTestState *s, int *fds, size_t fds_num,
const char *fmt, va_list ap) const char *fmt, va_list ap)
GCC_FMT_ATTR(4, 0); G_GNUC_PRINTF(4, 0);
/** /**
* qtest_qmp_vsend: * qtest_qmp_vsend:
@ -207,7 +207,7 @@ void qtest_qmp_vsend_fds(QTestState *s, int *fds, size_t fds_num,
* Sends a QMP message to QEMU and leaves the response in the stream. * Sends a QMP message to QEMU and leaves the response in the stream.
*/ */
void qtest_qmp_vsend(QTestState *s, const char *fmt, va_list ap) void qtest_qmp_vsend(QTestState *s, const char *fmt, va_list ap)
GCC_FMT_ATTR(2, 0); G_GNUC_PRINTF(2, 0);
/** /**
* qtest_qmp_receive_dict: * qtest_qmp_receive_dict:
@ -269,7 +269,7 @@ QDict *qtest_qmp_event_ref(QTestState *s, const char *event);
* *
* Returns: the command's output. The caller should g_free() it. * Returns: the command's output. The caller should g_free() it.
*/ */
char *qtest_hmp(QTestState *s, const char *fmt, ...) GCC_FMT_ATTR(2, 3); char *qtest_hmp(QTestState *s, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
/** /**
* qtest_hmpv: * qtest_hmpv:
@ -283,7 +283,7 @@ char *qtest_hmp(QTestState *s, const char *fmt, ...) GCC_FMT_ATTR(2, 3);
* Returns: the command's output. The caller should g_free() it. * Returns: the command's output. The caller should g_free() it.
*/ */
char *qtest_vhmp(QTestState *s, const char *fmt, va_list ap) char *qtest_vhmp(QTestState *s, const char *fmt, va_list ap)
GCC_FMT_ATTR(2, 0); G_GNUC_PRINTF(2, 0);
void qtest_module_load(QTestState *s, const char *prefix, const char *libname); void qtest_module_load(QTestState *s, const char *prefix, const char *libname);
@ -688,17 +688,17 @@ void qtest_remove_abrt_handler(void *data);
* the response. * the response.
*/ */
void qtest_qmp_assert_success(QTestState *qts, const char *fmt, ...) void qtest_qmp_assert_success(QTestState *qts, const char *fmt, ...)
GCC_FMT_ATTR(2, 3); G_GNUC_PRINTF(2, 3);
QDict *qmp_fd_receive(int fd); QDict *qmp_fd_receive(int fd);
void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num, void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
const char *fmt, va_list ap) GCC_FMT_ATTR(4, 0); const char *fmt, va_list ap) G_GNUC_PRINTF(4, 0);
void qmp_fd_vsend(int fd, const char *fmt, va_list ap) GCC_FMT_ATTR(2, 0); void qmp_fd_vsend(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
void qmp_fd_send(int fd, const char *fmt, ...) GCC_FMT_ATTR(2, 3); void qmp_fd_send(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
void qmp_fd_send_raw(int fd, const char *fmt, ...) GCC_FMT_ATTR(2, 3); void qmp_fd_send_raw(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
void qmp_fd_vsend_raw(int fd, const char *fmt, va_list ap) GCC_FMT_ATTR(2, 0); void qmp_fd_vsend_raw(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
QDict *qmp_fdv(int fd, const char *fmt, va_list ap) GCC_FMT_ATTR(2, 0); QDict *qmp_fdv(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
QDict *qmp_fd(int fd, const char *fmt, ...) GCC_FMT_ATTR(2, 3); QDict *qmp_fd(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
/** /**
* qtest_cb_for_every_machine: * qtest_cb_for_every_machine:
@ -750,7 +750,7 @@ void qtest_qmp_device_add_qdict(QTestState *qts, const char *drv,
* Generic hot-plugging test via the device_add QMP command. * Generic hot-plugging test via the device_add QMP command.
*/ */
void qtest_qmp_device_add(QTestState *qts, const char *driver, const char *id, void qtest_qmp_device_add(QTestState *qts, const char *driver, const char *id,
const char *fmt, ...) GCC_FMT_ATTR(4, 5); const char *fmt, ...) G_GNUC_PRINTF(4, 5);
/** /**
* qtest_qmp_add_client: * qtest_qmp_add_client:

View file

@ -52,7 +52,7 @@ static inline void qtest_end(void)
* *
* Sends a QMP message to QEMU and returns the response. * Sends a QMP message to QEMU and returns the response.
*/ */
GCC_FMT_ATTR(1, 2) G_GNUC_PRINTF(1, 2)
static inline QDict *qmp(const char *fmt, ...) static inline QDict *qmp(const char *fmt, ...)
{ {
va_list ap; va_list ap;

View file

@ -94,7 +94,7 @@ static int socket_accept(int sock)
struct timeval timeout = { .tv_sec = SOCKET_TIMEOUT, struct timeval timeout = { .tv_sec = SOCKET_TIMEOUT,
.tv_usec = 0 }; .tv_usec = 0 };
if (qemu_setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO,
(void *)&timeout, sizeof(timeout))) { (void *)&timeout, sizeof(timeout))) {
fprintf(stderr, "%s failed to set SO_RCVTIMEO: %s\n", fprintf(stderr, "%s failed to set SO_RCVTIMEO: %s\n",
__func__, strerror(errno)); __func__, strerror(errno));
@ -437,7 +437,7 @@ static void qtest_client_socket_send(QTestState *s, const char *buf)
socket_send(s->fd, buf, strlen(buf)); socket_send(s->fd, buf, strlen(buf));
} }
static void GCC_FMT_ATTR(2, 3) qtest_sendf(QTestState *s, const char *fmt, ...) static void G_GNUC_PRINTF(2, 3) qtest_sendf(QTestState *s, const char *fmt, ...)
{ {
va_list ap; va_list ap;

View file

@ -16,13 +16,13 @@
extern bool got_stop; extern bool got_stop;
GCC_FMT_ATTR(3, 4) G_GNUC_PRINTF(3, 4)
QDict *wait_command_fd(QTestState *who, int fd, const char *command, ...); QDict *wait_command_fd(QTestState *who, int fd, const char *command, ...);
GCC_FMT_ATTR(2, 3) G_GNUC_PRINTF(2, 3)
QDict *wait_command(QTestState *who, const char *command, ...); QDict *wait_command(QTestState *who, const char *command, ...);
GCC_FMT_ATTR(3, 4) G_GNUC_PRINTF(3, 4)
void migrate_qmp(QTestState *who, const char *uri, const char *fmt, ...); void migrate_qmp(QTestState *who, const char *uri, const char *fmt, ...);
QDict *migrate_query(QTestState *who); QDict *migrate_query(QTestState *who);

View file

@ -521,12 +521,12 @@ static void emc_send_verify1(QTestState *qts, const EMCModule *mod, int fd,
/* Check data sent to the backend. */ /* Check data sent to the backend. */
recv_len = ~0; recv_len = ~0;
ret = qemu_recv(fd, &recv_len, sizeof(recv_len), MSG_DONTWAIT); ret = recv(fd, &recv_len, sizeof(recv_len), MSG_DONTWAIT);
g_assert_cmpint(ret, == , sizeof(recv_len)); g_assert_cmpint(ret, == , sizeof(recv_len));
g_assert(wait_socket_readable(fd)); g_assert(wait_socket_readable(fd));
memset(buffer, 0xff, sizeof(buffer)); memset(buffer, 0xff, sizeof(buffer));
ret = qemu_recv(fd, buffer, test_size, MSG_DONTWAIT); ret = recv(fd, buffer, test_size, MSG_DONTWAIT);
g_assert_cmpmem(buffer, ret, test_data, test_size); g_assert_cmpmem(buffer, ret, test_data, test_size);
} }

View file

@ -58,13 +58,13 @@ static void test_mirror(void)
g_assert_cmpint(ret, ==, sizeof(send_buf) + sizeof(size)); g_assert_cmpint(ret, ==, sizeof(send_buf) + sizeof(size));
close(send_sock[0]); close(send_sock[0]);
ret = qemu_recv(recv_sock[0], &len, sizeof(len), 0); ret = recv(recv_sock[0], &len, sizeof(len), 0);
g_assert_cmpint(ret, ==, sizeof(len)); g_assert_cmpint(ret, ==, sizeof(len));
len = ntohl(len); len = ntohl(len);
g_assert_cmpint(len, ==, sizeof(send_buf)); g_assert_cmpint(len, ==, sizeof(send_buf));
recv_buf = g_malloc(len); recv_buf = g_malloc(len);
ret = qemu_recv(recv_sock[0], recv_buf, len, 0); ret = recv(recv_sock[0], recv_buf, len, 0);
g_assert_cmpstr(recv_buf, ==, send_buf); g_assert_cmpstr(recv_buf, ==, send_buf);
g_free(recv_buf); g_free(recv_buf);

View file

@ -115,13 +115,13 @@ static void test_redirector_tx(void)
g_assert_cmpint(ret, ==, sizeof(send_buf) + sizeof(size)); g_assert_cmpint(ret, ==, sizeof(send_buf) + sizeof(size));
close(backend_sock[0]); close(backend_sock[0]);
ret = qemu_recv(recv_sock, &len, sizeof(len), 0); ret = recv(recv_sock, &len, sizeof(len), 0);
g_assert_cmpint(ret, ==, sizeof(len)); g_assert_cmpint(ret, ==, sizeof(len));
len = ntohl(len); len = ntohl(len);
g_assert_cmpint(len, ==, sizeof(send_buf)); g_assert_cmpint(len, ==, sizeof(send_buf));
recv_buf = g_malloc(len); recv_buf = g_malloc(len);
ret = qemu_recv(recv_sock, recv_buf, len, 0); ret = recv(recv_sock, recv_buf, len, 0);
g_assert_cmpstr(recv_buf, ==, send_buf); g_assert_cmpstr(recv_buf, ==, send_buf);
g_free(recv_buf); g_free(recv_buf);
@ -182,13 +182,13 @@ static void test_redirector_rx(void)
ret = iov_send(send_sock, iov, 2, 0, sizeof(size) + sizeof(send_buf)); ret = iov_send(send_sock, iov, 2, 0, sizeof(size) + sizeof(send_buf));
g_assert_cmpint(ret, ==, sizeof(send_buf) + sizeof(size)); g_assert_cmpint(ret, ==, sizeof(send_buf) + sizeof(size));
ret = qemu_recv(backend_sock[0], &len, sizeof(len), 0); ret = recv(backend_sock[0], &len, sizeof(len), 0);
g_assert_cmpint(ret, ==, sizeof(len)); g_assert_cmpint(ret, ==, sizeof(len));
len = ntohl(len); len = ntohl(len);
g_assert_cmpint(len, ==, sizeof(send_buf)); g_assert_cmpint(len, ==, sizeof(send_buf));
recv_buf = g_malloc(len); recv_buf = g_malloc(len);
ret = qemu_recv(backend_sock[0], recv_buf, len, 0); ret = recv(backend_sock[0], recv_buf, len, 0);
g_assert_cmpstr(recv_buf, ==, send_buf); g_assert_cmpstr(recv_buf, ==, send_buf);
close(send_sock); close(send_sock);

View file

@ -87,11 +87,11 @@ static void tx_test(QVirtioDevice *dev,
QVIRTIO_NET_TIMEOUT_US); QVIRTIO_NET_TIMEOUT_US);
guest_free(alloc, req_addr); guest_free(alloc, req_addr);
ret = qemu_recv(socket, &len, sizeof(len), 0); ret = recv(socket, &len, sizeof(len), 0);
g_assert_cmpint(ret, ==, sizeof(len)); g_assert_cmpint(ret, ==, sizeof(len));
len = ntohl(len); len = ntohl(len);
ret = qemu_recv(socket, buffer, len, 0); ret = recv(socket, buffer, len, 0);
g_assert_cmpstr(buffer, ==, "TEST"); g_assert_cmpstr(buffer, ==, "TEST");
} }
@ -202,11 +202,11 @@ static void announce_self(void *obj, void *data, QGuestAllocator *t_alloc)
qobject_unref(rsp); qobject_unref(rsp);
/* Catch the first packet and make sure it's a RARP */ /* Catch the first packet and make sure it's a RARP */
ret = qemu_recv(sv[0], &len, sizeof(len), 0); ret = recv(sv[0], &len, sizeof(len), 0);
g_assert_cmpint(ret, ==, sizeof(len)); g_assert_cmpint(ret, ==, sizeof(len));
len = ntohl(len); len = ntohl(len);
ret = qemu_recv(sv[0], buffer, len, 0); ret = recv(sv[0], buffer, len, 0);
g_assert_cmpint(*proto, ==, htons(ETH_P_RARP)); g_assert_cmpint(*proto, ==, htons(ETH_P_RARP));
/* /*
@ -230,7 +230,7 @@ static void announce_self(void *obj, void *data, QGuestAllocator *t_alloc)
while (true) { while (true) {
int saved_err; int saved_err;
ret = qemu_recv(sv[0], buffer, 60, MSG_DONTWAIT); ret = recv(sv[0], buffer, 60, MSG_DONTWAIT);
saved_err = errno; saved_err = errno;
now = g_get_monotonic_time(); now = g_get_monotonic_time();
g_assert_cmpint(now, <, deadline); g_assert_cmpint(now, <, deadline);

View file

@ -8,7 +8,6 @@
*/ */
#include "qemu/osdep.h" #include "qemu/osdep.h"
#include "block/qdict.h"
#include "qapi/error.h" #include "qapi/error.h"
#include "qapi/qmp/qbool.h" #include "qapi/qmp/qbool.h"
#include "qapi/qmp/qdict.h" #include "qapi/qmp/qdict.h"

View file

@ -105,7 +105,7 @@ static int socket_can_bind_connect(const char *hostname, int family)
} }
if (check_soerr) { if (check_soerr) {
if (qemu_getsockopt(cfd, SOL_SOCKET, SO_ERROR, &soerr, &soerrlen) < 0) { if (getsockopt(cfd, SOL_SOCKET, SO_ERROR, &soerr, &soerrlen) < 0) {
goto cleanup; goto cleanup;
} }
if (soerr) { if (soerr) {

View file

@ -64,7 +64,7 @@ static Visitor *test_init_internal(TestInputVisitorData *data, bool keyval,
return data->qiv; return data->qiv;
} }
static GCC_FMT_ATTR(3, 4) static G_GNUC_PRINTF(3, 4)
Visitor *visitor_input_test_init_full(TestInputVisitorData *data, Visitor *visitor_input_test_init_full(TestInputVisitorData *data,
bool keyval, bool keyval,
const char *json_string, ...) const char *json_string, ...)
@ -79,7 +79,7 @@ Visitor *visitor_input_test_init_full(TestInputVisitorData *data,
return v; return v;
} }
static GCC_FMT_ATTR(2, 3) static G_GNUC_PRINTF(2, 3)
Visitor *visitor_input_test_init(TestInputVisitorData *data, Visitor *visitor_input_test_init(TestInputVisitorData *data,
const char *json_string, ...) const char *json_string, ...)
{ {

View file

@ -161,7 +161,7 @@ void trace_list_events(FILE *f)
fprintf(f, "This list of names of trace points may be incomplete " fprintf(f, "This list of names of trace points may be incomplete "
"when using the DTrace/SystemTap backends.\n" "when using the DTrace/SystemTap backends.\n"
"Run 'qemu-trace-stap list %s' to print the full list.\n", "Run 'qemu-trace-stap list %s' to print the full list.\n",
error_get_progname()); g_get_prgname());
#endif #endif
} }

View file

@ -27,9 +27,6 @@
#include <math.h> #include <math.h>
#include "qemu-common.h" #include "qemu-common.h"
#include "qemu/sockets.h"
#include "qemu/iov.h"
#include "net/net.h"
#include "qemu/ctype.h" #include "qemu/ctype.h"
#include "qemu/cutils.h" #include "qemu/cutils.h"
#include "qemu/error-report.h" #include "qemu/error-report.h"
@ -938,19 +935,6 @@ int parse_debug_env(const char *name, int max, int initial)
return debug; return debug;
} }
/*
* Helper to print ethernet mac address
*/
const char *qemu_ether_ntoa(const MACAddr *mac)
{
static char ret[18];
snprintf(ret, sizeof(ret), "%02x:%02x:%02x:%02x:%02x:%02x",
mac->a[0], mac->a[1], mac->a[2], mac->a[3], mac->a[4], mac->a[5]);
return ret;
}
/* /*
* Return human readable string for size @val. * Return human readable string for size @val.
* @val can be anything that uint64_t allows (no more than "16 EiB"). * @val can be anything that uint64_t allows (no more than "16 EiB").

View file

@ -39,7 +39,7 @@ static const char *hw_version = QEMU_HW_VERSION;
int socket_set_cork(int fd, int v) int socket_set_cork(int fd, int v)
{ {
#if defined(SOL_TCP) && defined(TCP_CORK) #if defined(SOL_TCP) && defined(TCP_CORK)
return qemu_setsockopt(fd, SOL_TCP, TCP_CORK, &v, sizeof(v)); return setsockopt(fd, SOL_TCP, TCP_CORK, &v, sizeof(v));
#else #else
return 0; return 0;
#endif #endif
@ -48,7 +48,7 @@ int socket_set_cork(int fd, int v)
int socket_set_nodelay(int fd) int socket_set_nodelay(int fd)
{ {
int v = 1; int v = 1;
return qemu_setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &v, sizeof(v)); return setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &v, sizeof(v));
} }
int qemu_madvise(void *addr, size_t len, int advice) int qemu_madvise(void *addr, size_t len, int advice)

View file

@ -146,22 +146,6 @@ void loc_set_file(const char *fname, int lno)
} }
} }
static const char *progname;
/*
* Set the program name for error_print_loc().
*/
static void error_set_progname(const char *argv0)
{
const char *p = strrchr(argv0, '/');
progname = p ? p + 1 : argv0;
}
const char *error_get_progname(void)
{
return progname;
}
/* /*
* Print current location to current monitor if we have one, else to stderr. * Print current location to current monitor if we have one, else to stderr.
*/ */
@ -171,8 +155,8 @@ static void print_loc(void)
int i; int i;
const char *const *argp; const char *const *argp;
if (!monitor_cur() && progname) { if (!monitor_cur() && g_get_prgname()) {
fprintf(stderr, "%s:", progname); fprintf(stderr, "%s:", g_get_prgname());
sep = " "; sep = " ";
} }
switch (cur_loc->kind) { switch (cur_loc->kind) {
@ -400,8 +384,10 @@ static void qemu_log_func(const gchar *log_domain,
void error_init(const char *argv0) void error_init(const char *argv0)
{ {
const char *p = strrchr(argv0, '/');
/* Set the program name for error_print_loc(). */ /* Set the program name for error_print_loc(). */
error_set_progname(argv0); g_set_prgname(p ? p + 1 : argv0);
/* /*
* This sets up glib logging so libraries using it also print their logs * This sets up glib logging so libraries using it also print their logs

View file

@ -97,7 +97,7 @@ bool fd_is_socket(int fd)
{ {
int optval; int optval;
socklen_t optlen = sizeof(optval); socklen_t optlen = sizeof(optval);
return !qemu_getsockopt(fd, SOL_SOCKET, SO_TYPE, &optval, &optlen); return !getsockopt(fd, SOL_SOCKET, SO_TYPE, &optval, &optlen);
} }
@ -185,7 +185,7 @@ static int try_bind(int socket, InetSocketAddress *saddr, struct addrinfo *e)
rebind: rebind:
if (e->ai_family == PF_INET6) { if (e->ai_family == PF_INET6) {
qemu_setsockopt(socket, IPPROTO_IPV6, IPV6_V6ONLY, &v6only, setsockopt(socket, IPPROTO_IPV6, IPV6_V6ONLY, &v6only,
sizeof(v6only)); sizeof(v6only));
} }
@ -483,7 +483,7 @@ int inet_connect_saddr(InetSocketAddress *saddr, Error **errp)
if (saddr->keep_alive) { if (saddr->keep_alive) {
int val = 1; int val = 1;
int ret = qemu_setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, int ret = setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE,
&val, sizeof(val)); &val, sizeof(val));
if (ret < 0) { if (ret < 0) {