On Tue, 28 Jul 2026 at 20:32, Helge Deller <[email protected]> wrote:
>
> From: Helge Deller <[email protected]>
>
> Make sure that the time entries (msg_stime, msg_rtime and msg_ctime)
> are defined as 64-bit time_t values, since the userspace may access
> the whole 64-bit value. By this change we fix the word ordering for
> 32-bit big endian architectures as well.
>
> This fixes the msgctl01 LTP testcase on hppa32.
>
> Signed-off-by: Helge Deller <[email protected]>
> ---
> linux-user/syscall.c | 30 ++++++++++++------------------
> 1 file changed, 12 insertions(+), 18 deletions(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 740142825d..c93b770ced 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -4216,21 +4216,15 @@ static inline abi_long do_semtimedop(int semid,
> }
> #endif
I see this has already gone into git, but some late review
comments. I suspect this is mostly me being confused rather
than actual problems.
>
> +#define target_time64_t abi_ullong
> +#define target_swap_time64(x) tswap64(x)
> +
> struct target_msqid_ds
Is this the kernel's "struct msqid_ds" (which it calls "Obsolete, used
only for backwards compatibility and libc5 compiles") or its msqid64_ds?
The layout matches msqid64_ds, which makes our struct a bit
confusingly named.
> {
> struct target_ipc_perm msg_perm;
> - abi_ulong msg_stime;
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong msg_rtime;
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong msg_ctime;
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> + target_time64_t msg_stime;
> + target_time64_t msg_rtime;
> + target_time64_t msg_ctime;
Assuming msqid64_ds, the kernel version of this struct has a comment:
* 64 bit architectures use a 64-bit long time field here, while
* 32 bit architectures have a pair of unsigned long values.
* On big-endian systems, the lower half is in the wrong place.
That would make tswap64() not the right swap for 32-bit big
endian guests.
thanks
-- PMM