• R
    work around broken kernel struct ipc_perm on some big endian archs · 0cd2be23
    Rich Felker 提交于
    the mode member of struct ipc_perm is specified by POSIX to have type
    mode_t, which is uniformly defined as unsigned int. however, Linux
    defines it with type __kernel_mode_t, and defines __kernel_mode_t as
    unsigned short on some archs. since there is a subsequent padding
    field, treating it as a 32-bit unsigned int works on little endian
    archs, but the order is backwards on big endian archs with the
    erroneous definition.
    
    since multiple archs are affected, remedy the situation with fixup
    code in the affected functions (shmctl, semctl, and msgctl) rather
    than repeating the same shims in syscall_arch.h for every affected
    arch.
    0cd2be23
syscall_arch.h 2.7 KB