On 5/27/26 09:40, Peter Maydell wrote:
On Wed, 27 May 2026 at 16:42, Richard Henderson
<[email protected]> wrote:
On 5/25/26 16:03, Helge Deller wrote:
From: Helge Deller <[email protected]>
Static built ARM binaries for Cortex-m55 may have been linked to have
their load address at address 0.
This is a problem. We also use 0 for "unassigned" a-la ET_DYN.
Perhaps ideally we'd pass around a separate flag for ET_EXEC vs ET_DYN, but
ET_EXEC with 0
is not a valid binary precisely because it attempts to map at the zero page.
Honestly, I think this is user error. While we support some m-profile binaries
in
linux-user mode which the Linux kernel does not, for the explicit benefit of
the GCC
testsuite, there are limits.
But if the user explicitly passes a guest-base address on their
QEMU command line, we run the binary happily. If we refused
to run the binary at all that would be one thing (and not
unreasonable, as you say). But it does seem to me like a
problem in our "pick a guest-base" logic that we fail to
identify one that would work fine for this particular binary.
Then we need to do the work to track PIE separately, without overloading 0.
r~