All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Weil via <qemu-devel@nongnu.org>
To: qemu-devel@nongnu.org
Subject: Re: [PATCH 19/41] compiler.h: replace QEMU_NORETURN with G_NORETURN
Date: Fri, 7 Apr 2023 19:01:51 +0200	[thread overview]
Message-ID: <32ca1552-0177-bdd7-405d-b95abb938338@weilnetz.de> (raw)
In-Reply-To: <20220420132624.2439741-20-marcandre.lureau@redhat.com>

Please excuse the late report, but this old patch causes a build failure 
for me:

Am 20.04.22 um 15:26 schrieb marcandre.lureau@redhat.com:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> G_NORETURN was introduced in glib 2.68, fallback to G_GNUC_NORETURN in
> glib-compat.
> 
> Note that this attribute must be placed before the function declaration
> (bringing a bit of consistency in qemu codebase usage).
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
[...]
> diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
> index 848916f5165c..14b6b65a5fa9 100644
> --- a/include/qemu/osdep.h
> +++ b/include/qemu/osdep.h
> @@ -177,7 +177,8 @@ extern "C" {
>    * supports QEMU_ERROR, this will be reported at compile time; otherwise
>    * this will be reported at link time due to the missing symbol.
>    */
> -extern void QEMU_NORETURN QEMU_ERROR("code path is reachable")
> +extern G_NORETURN
> +void QEMU_ERROR("code path is reachable")
>       qemu_build_not_reached_always(void);
>   #if defined(__OPTIMIZE__) && !defined(__NO_INLINE__)
>   #define qemu_build_not_reached()  qemu_build_not_reached_always()

The placement of G_NORETURN causes a compiler error for C++ code in 
cross builds for Windows (see below). C++ expects the attribute 
[[noreturn]] before the extern statement.

I updated my Debian build environment to Debian bookworm and a recent 
cross glib, so maybe the problem was hidden in previous builds because I 
used a rather old glib or an older g++ cross compiler.

Regards,
Stefan


In file included from /mingw64/lib/glib-2.0/include/glibconfig.h:9,
                  from /mingw64/include/glib-2.0/glib/gtypes.h:34,
                  from /mingw64/include/glib-2.0/glib/galloca.h:34,
                  from /mingw64/include/glib-2.0/glib.h:32,
                  from 
/home/stefan/src/qemu/repo.or.cz/qemu/ar7/include/glib-compat.h:32,
                  from 
/home/stefan/src/qemu/repo.or.cz/qemu/ar7/include/qemu/osdep.h:144,
                  from ../../../qga/vss-win32/requester.cpp:13:
/mingw64/include/glib-2.0/glib/gmacros.h:1076:21: error: standard 
attributes in middle of decl-specifiers
  1076 | # define G_NORETURN [[noreturn]]
       |                     ^
/home/stefan/src/qemu/repo.or.cz/qemu/ar7/include/qemu/osdep.h:240:8: 
note: in expansion of macro ‘G_NORETURN’
   240 | extern G_NORETURN
       |        ^~~~~~~~~~
/mingw64/include/glib-2.0/glib/gmacros.h:1076:21: note: standard 
attributes must precede the decl-specifiers to apply to the declaration, 
or follow them to apply to the type
  1076 | # define G_NORETURN [[noreturn]]
       |                     ^
/home/stefan/src/qemu/repo.or.cz/qemu/ar7/include/qemu/osdep.h:240:8: 
note: in expansion of macro ‘G_NORETURN’
   240 | extern G_NORETURN
       |        ^~~~~~~~~~
/mingw64/include/glib-2.0/glib/gmacros.h:1076:21: warning: attribute 
ignored [-Wattributes]
  1076 | # define G_NORETURN [[noreturn]]
       |                     ^
/home/stefan/src/qemu/repo.or.cz/qemu/ar7/include/qemu/osdep.h:240:8: 
note: in expansion of macro ‘G_NORETURN’
   240 | extern G_NORETURN
       |        ^~~~~~~~~~
/mingw64/include/glib-2.0/glib/gmacros.h:1076:21: note: an attribute 
that appertains to a type-specifier is ignored
  1076 | # define G_NORETURN [[noreturn]]
       |                     ^
/home/stefan/src/qemu/repo.or.cz/qemu/ar7/include/qemu/osdep.h:240:8: 
note: in expansion of macro ‘G_NORETURN’
   240 | extern G_NORETURN
       |        ^~~~~~~~~~
../../../qga/vss-win32/requester.cpp: In function ‘HRESULT 
requester_init()’:
../../../qga/vss-win32/requester.cpp:72:34: warning: cast between 
incompatible function types from ‘FARPROC’ {aka ‘long long int (*)()’} 
to ‘t_CreateVssBackupComponents’ {aka ‘long int 
(*)(IVssBackupComponents**)’} [-Wcast-function-type]
    72 |     pCreateVssBackupComponents = (t_CreateVssBackupComponents)
       |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    73 |         GetProcAddress(hLib,
       |         ~~~~~~~~~~~~~~~~~~~~
    74 | #ifdef _WIN64 /* 64bit environment */
       | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    75 | 
"?CreateVssBackupComponents@@YAJPEAPEAVIVssBackupComponents@@@Z"
       | 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    76 | #else /* 32bit environment */
       | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    77 | 
"?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z"
       | 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    78 | #endif
       | ~~~~~~
    79 |         );
       |         ~
../../../qga/vss-win32/requester.cpp:85:34: warning: cast between 
incompatible function types from ‘FARPROC’ {aka ‘long long int (*)()’} 
to ‘t_VssFreeSnapshotProperties’ {aka ‘void (*)(VSS_SNAPSHOT_PROP*)’} 
[-Wcast-function-type]
    85 |     pVssFreeSnapshotProperties = (t_VssFreeSnapshotProperties)
       |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    86 |         GetProcAddress(hLib, "VssFreeSnapshotProperties");
       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ninja: build stopped: subcommand failed.


  parent reply	other threads:[~2023-04-07 17:02 UTC|newest]

Thread overview: 124+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-20 13:25 [PATCH 00/41] Misc cleanups marcandre.lureau
2022-04-20 13:25 ` [PATCH 01/41] qga: use fixed-length for usecs formatting marcandre.lureau
2022-04-20 14:26   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 02/41] glib-compat: isolate g_date_time_format_iso8601 version-bypass marcandre.lureau
2022-04-20 14:32   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 03/41] scripts/analyze-inclusions: drop qemu-common.h from analysis marcandre.lureau
2022-04-20 14:32   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 04/41] Simplify softmmu/main.c marcandre.lureau
2022-04-20 14:55   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 05/41] hw/hyperv: remove needless qemu-common.h include marcandre.lureau
2022-04-20 15:01   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 06/41] include: rename qemu-common.h qemu/copyright.h marcandre.lureau
2022-04-20 13:25   ` [Virtio-fs] " marcandre.lureau
2022-04-20 14:23   ` Warner Losh
2022-04-20 14:23     ` [Virtio-fs] " Warner Losh
2022-04-20 15:04   ` Daniel P. Berrangé
2022-04-20 15:04     ` [Virtio-fs] " Daniel P. Berrangé
2022-04-20 15:21     ` Marc-André Lureau
2022-04-20 15:21       ` [Virtio-fs] " Marc-André Lureau
2022-04-20 16:10     ` Peter Maydell
2022-04-20 16:10       ` [Virtio-fs] " Peter Maydell
2022-04-20 16:13       ` Daniel P. Berrangé
2022-04-20 16:13         ` [Virtio-fs] " Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 07/41] build-sys: remove MSI's QEMU_GA_MSI_MINGW_DLL_PATH marcandre.lureau
2022-04-20 15:00   ` Konstantin Kostiuk
2022-04-20 15:10   ` Daniel P. Berrangé
2022-04-20 15:12   ` Paolo Bonzini
2022-04-20 13:25 ` [PATCH 08/41] build-sys: simplify MSI's QEMU_GA_MANUFACTURER marcandre.lureau
2022-04-20 13:48   ` Konstantin Kostiuk
2022-04-20 15:14     ` Daniel P. Berrangé
2022-04-20 16:36       ` Paolo Bonzini
2022-04-20 13:25 ` [PATCH 09/41] build-sys: simplify MSI's QEMU_GA_VERSION marcandre.lureau
2022-04-20 13:25 ` [PATCH 10/41] build-sys: drop MSI's QEMU_GA_DISTRO marcandre.lureau
2022-04-20 13:25 ` [PATCH 11/41] qga: replace usleep() with g_usleep() marcandre.lureau
2022-04-20 15:16   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 12/41] docs: trace-events-all is installed without renaming marcandre.lureau
2022-04-20 15:16   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 13/41] arm/digic: replace snprintf() with g_strdup_printf() marcandre.lureau
2022-04-20 15:17   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 14/41] arm/allwinner-a10: " marcandre.lureau
2022-04-20 15:17   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 15/41] intc/exynos4210_gic: " marcandre.lureau
2022-04-20 15:19   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 16/41] doc/style: CLang -> Clang marcandre.lureau
2022-04-20 15:20   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 17/41] doc/build-platforms: document supported compilers marcandre.lureau
2022-04-20 14:10   ` Daniel P. Berrangé
2022-04-20 14:32     ` Marc-André Lureau
2022-04-20 14:36     ` Thomas Huth
2022-04-20 14:46       ` Marc-André Lureau
2022-04-20 14:50         ` Marc-André Lureau
2022-04-20 15:24           ` Daniel P. Berrangé
2022-04-20 15:32             ` Marc-André Lureau
2022-04-20 15:55               ` Daniel P. Berrangé
2022-04-20 16:47                 ` Marc-André Lureau
2022-04-20 18:53                   ` Daniel P. Berrangé
2022-04-20 16:11               ` Thomas Huth
2022-04-20 16:52                 ` Marc-André Lureau
2022-04-20 14:53         ` Thomas Huth
2022-04-20 14:57           ` Marc-André Lureau
2022-04-20 13:26 ` [PATCH 18/41] osdep.h: move qemu_build_not_reached() marcandre.lureau
2022-04-20 15:27   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 19/41] compiler.h: replace QEMU_NORETURN with G_NORETURN marcandre.lureau
2022-04-20 13:26   ` marcandre.lureau
2022-04-20 14:24   ` Warner Losh
2022-04-20 14:24     ` Warner Losh
2022-04-20 15:29   ` Daniel P. Berrangé
2022-04-20 15:29     ` Daniel P. Berrangé
2023-04-07 17:01   ` Stefan Weil via [this message]
2023-04-07 17:15     ` Stefan Weil via
2022-04-20 13:26 ` [PATCH 20/41] include: move qemu_msync() to osdep marcandre.lureau
2022-04-20 15:33   ` Daniel P. Berrangé
2022-04-20 15:39     ` Marc-André Lureau
2022-04-20 13:26 ` [PATCH 21/41] include: move qemu_fdatasync() " marcandre.lureau
2022-04-20 15:34   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 22/41] include: move qemu_*_exec_dir() to cutils marcandre.lureau
2022-04-20 15:36   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 23/41] include: add qemu/keyval.h marcandre.lureau
2022-04-20 15:38   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 24/41] include: move qdict_{crumple,flatten} declarations marcandre.lureau
2022-04-20 15:39   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 25/41] tests: remove block/qdict checks from check-qobject.c marcandre.lureau
2022-04-20 15:39   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 26/41] compiler.h: add QEMU_SANITIZE_{ADDRESS,THREAD} marcandre.lureau
2022-04-21 13:34   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 27/41] Use QEMU_SANITIZE_THREAD marcandre.lureau
2022-04-21 13:43   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 28/41] Use QEMU_SANITIZE_ADDRESS marcandre.lureau
2022-04-20 14:20   ` Thomas Huth
2022-04-20 14:35     ` Marc-André Lureau
2022-04-20 13:26 ` [PATCH 29/41] tests: run-time skip test-qga if TSAN is enabled marcandre.lureau
2022-04-20 15:41   ` Daniel P. Berrangé
2022-04-21 13:02     ` Marc-André Lureau
2022-04-20 13:26 ` [PATCH 30/41] Move error_printf_unless_qmp() with monitor unit marcandre.lureau
2022-04-20 15:42   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 31/41] qga: move qga_get_host_name() marcandre.lureau
2022-04-20 13:51   ` Konstantin Kostiuk
2022-04-20 15:44   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 32/41] qtest: simplify socket_send() marcandre.lureau
2022-04-20 14:24   ` Thomas Huth
2022-04-20 15:45   ` Daniel P. Berrangé
2022-04-21 13:07     ` Marc-André Lureau
2022-04-20 13:26 ` [PATCH 33/41] tests: move libqtest.c under libqos/ marcandre.lureau
2022-04-20 14:16   ` Thomas Huth
2022-04-20 15:48   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 34/41] libqtest: split QMP part in libqmp marcandre.lureau
2022-04-20 14:29   ` Thomas Huth
2022-04-20 13:26 ` [PATCH 35/41] util: simplify write in signal handler marcandre.lureau
2022-04-20 15:49   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 36/41] util: use qemu_write_full() in qemu_write_pidfile() marcandre.lureau
2022-04-20 15:49   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 37/41] util: use qemu_create() " marcandre.lureau
2022-04-20 15:50   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 38/41] util: replace qemu_get_local_state_pathname() marcandre.lureau
2022-04-20 13:26   ` [Virtio-fs] " marcandre.lureau
2022-04-20 15:51   ` Daniel P. Berrangé
2022-04-20 15:51     ` [Virtio-fs] " Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 39/41] qga: remove need for QEMU atomic.h marcandre.lureau
2022-04-20 15:51   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 40/41] migration/ram: fix clang warning marcandre.lureau
2022-04-20 14:10   ` Dr. David Alan Gilbert
2022-04-20 13:26 ` [PATCH 41/41] tests/fuzz: fix warning marcandre.lureau
2022-04-20 14:30   ` Thomas Huth
2022-04-20 14:40 ` [PATCH 00/41] Misc cleanups Thomas Huth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=32ca1552-0177-bdd7-405d-b95abb938338@weilnetz.de \
    --to=qemu-devel@nongnu.org \
    --cc=sw@weilnetz.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.