On Mon, 12 Jul 2021 at 23:53, Alistair Francis <[email protected]> wrote:
>
> The following changes since commit 57e28d34c0cb04abf7683ac6a12c87ede447c320:
>
> Merge remote-tracking branch 'remotes/cohuck-gitlab/tags/s390x-20210708'
> into staging (2021-07-12 19:15:11 +0100)
>
> are available in the Git repository at:
>
> [email protected]:alistair23/qemu.git tags/pull-riscv-to-apply-20210712
>
> for you to fetch changes up to d6b87906f09f72a837dc68c33bfc3d913ef74b7d:
>
> hw/riscv: opentitan: Add the flash alias (2021-07-13 08:47:52 +1000)
>
> ----------------------------------------------------------------
> Fourth RISC-V PR for 6.1 release
>
> - Code cleanups
> - Documentation improvements
> - Hypervisor extension improvements with hideleg and hedeleg
> - sifive_u fixes
> - OpenTitan register layout updates
Hi; this fails to compile on some hosts:
../../target/riscv/csr.c:437:48: error: initializer element is not constant
static const target_ulong vs_delegable_excps = delegable_excps &
^~~~~~~~~~~~~~~
That happens on s390x, x86-64, aarch32, NetBSD. I think this is
"gcc older than gcc 8 is stricter about what it allows as a
constant expression". If I understand the GCC bugzilla issue I
ran into via a bit of googling, the C spec is quite limiting in
what it considers to be a "constant expression", and in particular
"some other variable with the 'const' attribute" isn't one.
The spec does allow compilers the impdef leeway to allow a wider
range of things to be constant expressions, and gcc 8 is cleverer
here than gcc 7 was.
If delegable_excps was a #define rather than a 'const' variable
it would be OK here, I think.
thanks
-- PMM