SerCeMan / jnr-fuse

FUSE implementation in Java using Java Native Runtime (JNR)
MIT License
361 stars 87 forks source link

Add AArch64 (64-bit ARM) Linux support #172

Closed elecnix closed 4 months ago

elecnix commented 1 year ago

Add support for the struct layout of AArch64 Linux, found on AWS Graviton. Fixes #171.

pahole -C stat /usr/lib/aarch64-linux-gnu/libc.so.6

struct stat {
    __dev_t                    st_dev;               /*     0     8 */
    __ino_t                    st_ino;               /*     8     8 */
    __mode_t                   st_mode;              /*    16     4 */
    __nlink_t                  st_nlink;             /*    20     4 */
    __uid_t                    st_uid;               /*    24     4 */
    __gid_t                    st_gid;               /*    28     4 */
    __dev_t                    st_rdev;              /*    32     8 */
    __dev_t                    __pad1;               /*    40     8 */
    __off_t                    st_size;              /*    48     8 */
    __blksize_t                st_blksize;           /*    56     4 */
    int                        __pad2;               /*    60     4 */
    /* --- cacheline 1 boundary (64 bytes) --- */
    __blkcnt_t                 st_blocks;            /*    64     8 */
    struct timespec            st_atim;              /*    72    16 */
    struct timespec            st_mtim;              /*    88    16 */
    struct timespec            st_ctim;              /*   104    16 */
    int                        __glibc_reserved[2];  /*   120     8 */

    /* size: 128, cachelines: 2, members: 16 */
};

This is very similar to jnr/jnr-posix/issues/164.