Richard Henderson <[email protected]> writes:
> On aarch64, gcc 9.3 is generating
>
> qemu/exec.c: In function ‘address_space_translate_iommu’:
> qemu/exec.c:431:28: note: parameter passing for argument of type \
> ‘MemTxAttrs’ {aka ‘struct MemTxAttrs’} changed in GCC 9.1
>
> and many other reptitions. This structure, and the functions
> amongst which it is passed, are not part of a QEMU public API.
> Therefore we do not care how the compiler passes the argument,
> so long as the compiler is self-consistent.
>
> The only portion of QEMU which does have a public api, and so
> must have a stable abi, is "qemu/plugin.h". We test this by
> forcing -Wpsabi in tests/plugin/Makefile.
>
> Cc: Alex Bennée <[email protected]>
> Cc: Peter Maydell <[email protected]>
> Signed-off-by: Richard Henderson <[email protected]>
> ---
> configure | 1 +
> tests/plugin/Makefile | 2 +-
> 2 files changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index 5e27229f58..ba88fd1824 100755
> --- a/configure
> +++ b/configure
> @@ -2055,6 +2055,7 @@ add_to nowarn_flags -Wno-shift-negative-value
> add_to nowarn_flags -Wno-string-plus-int
> add_to nowarn_flags -Wno-typedef-redefinition
> add_to nowarn_flags -Wno-tautological-type-limit-compare
> +add_to nowarn_flags -Wno-psabi
>
> gcc_flags="$warn_flags $nowarn_flags"
>
> diff --git a/tests/plugin/Makefile b/tests/plugin/Makefile
> index b3250e2504..3a50451428 100644
> --- a/tests/plugin/Makefile
> +++ b/tests/plugin/Makefile
> @@ -17,7 +17,7 @@ NAMES += lockstep
>
> SONAMES := $(addsuffix .so,$(addprefix lib,$(NAMES)))
>
> -QEMU_CFLAGS += -fPIC
> +QEMU_CFLAGS += -fPIC -Wpsabi
> QEMU_CFLAGS += -I$(SRC_PATH)/include/qemu
>
It's a shame api.c includes enough headers to get tripped up but
hopefully this will catch enough of the breakage if/when it comes.
Anyway:
Reviewed-by: Alex Bennée <[email protected]>
--
Alex Bennée