native armv7 for struct aiocb offsets and overall size vs. aarch64 for struct aiocb32 offsets and overall size: most fields do not match

From: Mark Millard <marklmi_at_yahoo.com>
Date: Thu, 13 Nov 2025 22:01:37 UTC
The evidence is copied from:

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=290962#c8

which I just added there. Title (but line-split) for the
bugzilla submital was:

armv7 chroot and lib32 use on aarch64: example fio command
works on real armv7 system boots but fails for aarch64-to-armv7
chroot or lib32 use


The evidence:

kgdb on armv7   for struct aiocb   offsets vs.
kgdb on aarch64 for struct aiocb32 offsets
(through first few differences):

kgdb on armv7   for struct aiocb   offsets :

(kgdb) ptype /o *(struct aiocb*)0
/* offset      |    size */  type = struct aiocb {
/*      0      |       4 */    int aio_fildes;
/* XXX  4-byte hole      */
/*      8      |       8 */    off_t aio_offset;
/*     16      |       4 */    volatile void *aio_buf;
/*     20      |       4 */    size_t aio_nbytes;
. . .
                               /* total size (bytes):  104 */

vs.:

kgdb on aarch64 for struct aiocb32 offsets :

(kgdb) ptype /o *(struct aiocb32*)0
/* offset      |    size */  type = struct aiocb32 {
/*      0      |       4 */    int32_t aio_fildes;
/*      4      |       8 */    uint64_t aio_offset;
/*     12      |       4 */    uint32_t aio_buf;
/*     16      |       4 */    uint32_t aio_nbytes;
. . .
                               /* total size (bytes):   96 */

===
Mark Millard
marklmi at yahoo.com