lkml.org 
[lkml]   [2008]   [May]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] common implementation of iterative div/mod

    > It's:
    > jeremy@cosworth:~/hg/xen/paravirt/linux-x86_64$ gcc -v
    > Reading specs from /usr/lib/gcc/x86_64-linux/3.4.4/specs
    > Configured with: ../src/configure -v
    > --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr
    > --libexecdir=/usr/lib --with-gxx-include-dir=/usr/include/c++/3.4
    > --enable-shared --with-system-zlib --enable-nls
    > --without-included-gettext --program-suffix=-3.4 --enable-__cxa_atexit
    > --enable-libstdcxx-allocator=mt --enable-clocale=gnu
    > --enable-libstdcxx-debug --enable-java-gc=boehm --enable-java-awt=gtk
    > --disable-werror x86_64-linux
    > Thread model: posix
    > gcc version 3.4.4 20050314 (prerelease) (Debian 3.4.3-13)
    >
    > I think this is still a supported compiler, isn't it?

    Yes. Here's a patch. You probably didn't see problems because you either
    don't have a glibc that supports the vdso or none of your programs
    gets the timezone from gettimeofday() [that is very obscure obsolete
    functionality anyways, normally it should be gotten from the disk locales]

    -Andi




    Use explicit copy in vdso_gettimeofday()

    Jeremy's gcc 3.4 seems to be unable to inline a 8 byte memcpy. But
    the vdso doesn't support external references. Copy the structure
    members of struct timezone explicitely instead.

    Signed-off-by: Andi Kleen <ak@linux.intel.com>

    Index: linux/arch/x86/vdso/vclock_gettime.c
    ===================================================================
    --- linux.orig/arch/x86/vdso/vclock_gettime.c
    +++ linux/arch/x86/vdso/vclock_gettime.c
    @@ -106,9 +106,9 @@ int __vdso_gettimeofday(struct timeval *
    do_realtime((struct timespec *)tv);
    tv->tv_usec /= 1000;
    if (tz != NULL) {
    - /* This relies on gcc inlining the memcpy. We'll notice
    - if it ever fails to do so. */
    - memcpy(tz, &gtod->sys_tz, sizeof(struct timezone));
    + /* Don't use memcpy. Some old compilers fail to inline it */
    + tz->tz_minuteswest = gtod->sys_tz.tz_minuteswest;
    + tz->tz_dsttime = gtod->sys_tz.tz_dsttime;
    }
    return 0;
    }
    \
     
     \ /
      Last update: 2008-05-14 13:23    [W:0.069 / U:0.368 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site