lkml.org 
[lkml]   [2012]   [Apr]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [tip:x86/x32] x32: Fix alignment fail in struct compat_siginfo
    On 04/18/2012 11:15 AM, H.J. Lu wrote:
    >
    > In x32 glibc, I have
    >
    > # if compile for X32
    > /* si_utime and si_stime must be 4 byte aligned for x32 to match the
    > kernel. We align siginfo_t to 8 bytes so that si_utime and si_stime
    > are actually aligned to 8 bytes since their offsets are multiple of
    > 8 bytes. */
    > typedef __clock_t __attribute__ ((__aligned__ (4))) __sigchld_clock_t;
    > # define __SI_ALIGNMENT __attribute__ ((__aligned__ (8)))
    > # else
    > typedef __clock_t __sigchld_clock_t;
    > # define __SI_ALIGNMENT
    > # endif
    >
    > typedef struct siginfo
    > {
    > ...
    > /* SIGCHLD. */
    > struct
    > {
    > __pid_t si_pid; /* Which child. */
    > __uid_t si_uid; /* Real user ID of sending process. */
    > int si_status; /* Exit value or signal. */
    > __sigchld_clock_t si_utime;
    > __sigchld_clock_t si_stime;
    > } _sigchld;
    > ...
    > } siginfo_t __SI_ALIGNMENT;
    >

    So in other words, a separate type just for this. However, the question
    still holds: could we simply change __kernel_clock_t for x32 and be done
    with it? It would affect the alignment of struct tms, I guess; it
    wouldn't really affect the kernel directly since the kernel gets a
    pointer straight from userspace for times(2), but it would kind of mess
    up a userspace which uses __kernel_clock_t directly.

    Urk, okay...

    -hpa


    \
     
     \ /
      Last update: 2012-04-18 22:37    [W:4.050 / U:0.200 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site