Bug 12495 - Malloc fails if MALLOC_ALIGNMENT > 2 * SIZE_SZ
Summary: Malloc fails if MALLOC_ALIGNMENT > 2 * SIZE_SZ
Status: RESOLVED FIXED
Alias: None
Product: glibc
Classification: Unclassified
Component: malloc (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: 2.16
Assignee: Ulrich Drepper
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-02-17 02:05 UTC by H.J. Lu
Modified: 2014-06-27 13:50 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:
fweimer: security-


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description H.J. Lu 2011-02-17 02:05:31 UTC
If I define  MALLOC_ALIGNMENT > 2 * SIZE_SZ, malloc will
fail in mysterious ways.
Comment 1 joseph@codesourcery.com 2011-02-17 02:11:45 UTC
On Thu, 17 Feb 2011, hjl.tools at gmail dot com wrote:

> If I define  MALLOC_ALIGNMENT > 2 * SIZE_SZ, malloc will
> fail in mysterious ways.

Yes, this is known.  There's a patch at 
<http://sourceware.org/ml/libc-alpha/2007-11/msg00062.html> that fixes the 
problem in the context of PowerPC malloc not allocating memory 
sufficiently aligned for long double.
Comment 2 H.J. Lu 2011-02-17 02:33:19 UTC
(In reply to comment #1)
> On Thu, 17 Feb 2011, hjl.tools at gmail dot com wrote:
> 
> > If I define  MALLOC_ALIGNMENT > 2 * SIZE_SZ, malloc will
> > fail in mysterious ways.
> 
> Yes, this is known.  There's a patch at 
> <http://sourceware.org/ml/libc-alpha/2007-11/msg00062.html> that fixes the 
> problem in the context of PowerPC malloc not allocating memory 
> sufficiently aligned for long double.

Yes, it works.  I applied it to hjl/x32 branch.  THANKS.
Comment 3 H.J. Lu 2011-03-02 02:14:47 UTC
(In reply to comment #1)
> On Thu, 17 Feb 2011, hjl.tools at gmail dot com wrote:
> 
> > If I define  MALLOC_ALIGNMENT > 2 * SIZE_SZ, malloc will
> > fail in mysterious ways.
> 
> Yes, this is known.  There's a patch at 
> <http://sourceware.org/ml/libc-alpha/2007-11/msg00062.html> that fixes the 
> problem in the context of PowerPC malloc not allocating memory 
> sufficiently aligned for long double.

Unfortunately, this patch is incorrect.  This code

          front_misalign = (INTERNAL_SIZE_T)chunk2mem(brk) & MALLOC_ALIGN_MASK;
          if (front_misalign > 0) { 

            /*   
              Skip over some bytes to arrive at an aligned position.
              We don't need to specially mark these wasted front bytes.
              They will never be accessed anyway because
              prev_inuse of av->top (and any chunk created from its start)
              is always true after initialization.
            */

            correction = MALLOC_ALIGNMENT - front_misalign;
            aligned_brk += correction;
          }    

misaligns memory when

1. MALLOC_ALIGNMENT == 16
2. front_misalign == 8
3. aligned_brk == brk == 0xf7b61000
Comment 4 H.J. Lu 2011-03-02 02:21:48 UTC
The problem is

  /* check that one of the above allocation paths succeeded */
  if ((unsigned long)(size) >= (unsigned long)(nb + MINSIZE)) {
    remainder_size = size - nb;
    remainder = chunk_at_offset(p, nb); 
    av->top = remainder;
    set_head(p, nb | PREV_INUSE | (av != &main_arena ? NON_MAIN_ARENA : 0)); 
    set_head(remainder, remainder_size | PREV_INUSE);
    check_malloced_chunk(av, p, nb); 
    return chunk2mem(p);
  }

We need to properly handle alignment here.
Comment 5 H.J. Lu 2011-03-02 05:17:21 UTC
(In reply to comment #3)
> (In reply to comment #1)
> > On Thu, 17 Feb 2011, hjl.tools at gmail dot com wrote:
> > 
> > > If I define  MALLOC_ALIGNMENT > 2 * SIZE_SZ, malloc will
> > > fail in mysterious ways.
> > 
> > Yes, this is known.  There's a patch at 
> > <http://sourceware.org/ml/libc-alpha/2007-11/msg00062.html> that fixes the 
> > problem in the context of PowerPC malloc not allocating memory 
> > sufficiently aligned for long double.
> 
> Unfortunately, this patch is incorrect.  This code
> 
>           front_misalign = (INTERNAL_SIZE_T)chunk2mem(brk) & MALLOC_ALIGN_MASK;
>           if (front_misalign > 0) { 
> 
>             /*   
>               Skip over some bytes to arrive at an aligned position.
>               We don't need to specially mark these wasted front bytes.
>               They will never be accessed anyway because
>               prev_inuse of av->top (and any chunk created from its start)
>               is always true after initialization.
>             */
> 
>             correction = MALLOC_ALIGNMENT - front_misalign;
>             aligned_brk += correction;
>           }    
> 
> misaligns memory when
> 
> 1. MALLOC_ALIGNMENT == 16
> 2. front_misalign == 8
> 3. aligned_brk == brk == 0xf7b61000

I am testing this patch:

diff --git a/malloc/malloc.c b/malloc/malloc.c
index c4bc1fb..f8acd66 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -3370,8 +3370,7 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstat
e av;
 	      is always true after initialization.
 	    */
 
-	    correction = MALLOC_ALIGNMENT - front_misalign;
-	    aligned_brk += correction;
+	    aligned_brk += MALLOC_ALIGNMENT - front_misalign;
 	  }
 	}
Comment 6 H.J. Lu 2011-08-20 21:57:30 UTC
(In reply to comment #5)
> diff --git a/malloc/malloc.c b/malloc/malloc.c
> index c4bc1fb..f8acd66 100644
> --- a/malloc/malloc.c
> +++ b/malloc/malloc.c
> @@ -3370,8 +3370,7 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb;
> mstat
> e av;
>            is always true after initialization.
>          */
> 
> -        correction = MALLOC_ALIGNMENT - front_misalign;
> -        aligned_brk += correction;
> +        aligned_brk += MALLOC_ALIGNMENT - front_misalign;
>        }
>      }

This fixes the double correction problem.
Comment 7 H.J. Lu 2012-05-24 03:22:00 UTC
With today's mater, one can build x32 glibc as a cross target:

# BUILD_CC="gcc" CC="gcc -mx32" CXX="g++ -mx32" CFLAGS="-O2 -g"
/export/gnu/import/git/sources/glibc/configure --enable-add-ons=nptl
--prefix=/usr --target=x86_64-x32-linux --build=x86_64-linux
--host=x86_64-x32-linux

But all binaries will fail:

[hjl@gnu-6 glibc-x32-test]$ ./build-x86_64-x32-linux/elf/sln
*** glibc detected *** ./build-x86_64-x32-linux/elf/sln: double free or corruption (!prev): 0x006bbb70 ***
Aborted
[hjl@gnu-6 glibc-x32-test]$
Comment 8 H.J. Lu 2012-05-25 11:44:53 UTC
Fixed.
Comment 9 cvs-commit@gcc.gnu.org 2014-03-20 19:03:14 UTC
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, hjl/x32/release/2.12 has been created
        at  270dc44e06b21f39c28af086ab7736462b65e7a2 (commit)

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=270dc44e06b21f39c28af086ab7736462b65e7a2

commit 270dc44e06b21f39c28af086ab7736462b65e7a2
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Thu Mar 1 13:42:16 2012 -0800

    Restore uc_flags to unsigned long in ucontext
    
    struct ucontext in <sys/ucontext.h> is used for user-level context
    and is kernel indenpendent. It is separate from struct ucontext
    defined in kernel header files.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a43c8143e728159c31223da5c0d25dd94e6a3379

commit a43c8143e728159c31223da5c0d25dd94e6a3379
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed Jan 25 15:14:00 2012 -0800

    Remove x32 PTR_MANGLE/PTR_DEMANGLE
    
    Remove the `q' suffix from x86-64 xor/rol instructions so that they
    work for both x86-64 and x32.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=4d3a716cfed39cec4f77fd0fce4bbd004fa72a43

commit 4d3a716cfed39cec4f77fd0fce4bbd004fa72a43
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Jan 9 14:41:07 2012 -0800

    Make chunk size a multiple of MALLOC_ALIGNMENT

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=142c228e700c07431bc474b57e7a4a647ee655af

commit 142c228e700c07431bc474b57e7a4a647ee655af
Author: H.J. Lu <hongjiu.lu@intel.com>
Date:   Fri Dec 24 20:14:37 2010 -0500

    Remove `.ctors' and `.dtors' output sections

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1c069fe6324f178191c3a910057f98c2944d3403

commit 1c069fe6324f178191c3a910057f98c2944d3403
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Tue Nov 22 13:53:14 2011 -0800

    Add !USE___THREAD support to x32 sysdep.h.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=93bd1ac623912d806333fa30f2e5ac14ecd53a7b

commit 93bd1ac623912d806333fa30f2e5ac14ecd53a7b
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 17:58:47 2011 -0800

    Properly handle MALLOC_ALIGNMENT > 2 * SIZE_SZ.
    
    2011-11-21  H.J. Lu  <hongjiu.lu@intel.com>
    
    	PR libc/12495
    	* malloc/malloc.c (sYSMALLOc): Don't update correction with
    	front_misalign.
    
    2007-11-30  Daniel Jacobowitz  <dan@codesourcery.com>
    
    	PR libc/12495
    	* malloc/malloc.c (MALLOC_ALIGNMENT): Use __alignof__ (long double).
    	(SMALLBIN_CORRECTION): New.
    	(MIN_LARGE_SIZE, smallbin_index): Use it to handle 16-byte alignment.
    	(largebin_index_32_big): New.
    	(largebin_index): Use it for 16-byte alignment.
    	(sYSMALLOc): Handle MALLOC_ALIGNMENT > 2 * SIZE_SZ.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2cf1d0066b7d59806b990cf6d0e6464e486efe21

commit 2cf1d0066b7d59806b990cf6d0e6464e486efe21
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 17:51:19 2011 -0800

    Add x32 support to _itoa and _itowa.
    
    2011-11-21  H.J. Lu  <hongjiu.lu@intel.com>
    
    	* stdio-common/_itoa.c (_itoa_base_table): Don't define if
    	PREFER_LONG_LONG is defined.
    	(_itoa): Use long long if PREFER_LONG_LONG is defined.
    	* stdio-common/_itowa.c (_itowa): Likewise.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d026be585dce93cd52df491ab0fa3b100b1bfbbf

commit d026be585dce93cd52df491ab0fa3b100b1bfbbf
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 16:45:52 2011 -0800

    Add x32 dl-machine.h.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ca18261c7ab4c558ab1a2acb1956363c90c07e9d

commit ca18261c7ab4c558ab1a2acb1956363c90c07e9d
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 16:45:04 2011 -0800

    Define MALLOC_ALIGNMENT as 16 for x32.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9b1698ccf239883bba6e000301c20dc93313eca7

commit 9b1698ccf239883bba6e000301c20dc93313eca7
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 16:44:07 2011 -0800

    Add misc x32 support.
    
    2011-11-21  H.J. Lu  <hongjiu.lu@intel.com>
    
    	* sysdeps/x86_64/x32/divdi3.c: New.
    	* sysdeps/x86_64/x32/ffs.c: Likewise.
    	* sysdeps/x86_64/x32/gmp-mparam.h: Likewise.
    	* sysdeps/x86_64/x32/symbol-hacks.h: Likewise.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ce04fd4c17043a88568614a068dfe342186bc1bd

commit ce04fd4c17043a88568614a068dfe342186bc1bd
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 16:41:36 2011 -0800

    Use stack register macro in stackinfo.h.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=7c48a2c7c4e638f465f895557afe38ec2b6ef422

commit 7c48a2c7c4e638f465f895557afe38ec2b6ef422
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 16:08:02 2011 -0800

    Add x32 support to dynamic linker audit.
    
    2011-11-21  H.J. Lu  <hongjiu.lu@intel.com>
    
    	* elf/tst-auditmod1.c: Support la_x32_gnu_pltenter and
    	la_x32_gnu_pltexit.
    	(pltexit): Cast int_retval to ptrdiff_t.
    	* elf/tst-auditmod3b.c: Likewise.
    	* elf/tst-auditmod4b.c: Likewise.
    	* elf/tst-auditmod5b.c: Likewise.
    	* elf/tst-auditmod6b.c: Likewise.
    	* elf/tst-auditmod6c.c: Likewise.
    	* elf/tst-auditmod7b.c: Likewise.
    
    	* sysdeps/generic/ldsodefs.h (audit_ifaces): Add x32_gnu_pltenter
    	and x32_gnu_pltexit.
    
    	* sysdeps/x86_64/bits/link.h: Check __x86_64__ instead of
    	__ELF_NATIVE_CLASS.
    	(la_x32_gnu_pltenter): New.
    	(la_x32_gnu_pltexit): Likewise.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d6fc55a36c2d1645c55d6d62b353aee14b1612f3

commit d6fc55a36c2d1645c55d6d62b353aee14b1612f3
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 15:59:59 2011 -0800

    Add x32 support to sysdeps/x86_64/dl-machine.h.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f6d3197799e76ef22ddb1407a49ab280ee2ef639

commit f6d3197799e76ef22ddb1407a49ab280ee2ef639
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 15:33:48 2011 -0800

    Add x32 support to dl-irel.h.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fae04b0637e7728dfbefc470a11e205ab60951e3

commit fae04b0637e7728dfbefc470a11e205ab60951e3
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 15:32:02 2011 -0800

    Add x32 support to dl-tls.h.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b5aca921992f155713af2edcd53b7d8a8612b88a

commit b5aca921992f155713af2edcd53b7d8a8612b88a
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 15:23:45 2011 -0800

    Add x32 support to dl-tlsdesc.h.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a7d5aee7e30d3e887719197c828c19f740284a22

commit a7d5aee7e30d3e887719197c828c19f740284a22
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 15:22:37 2011 -0800

    Check if RTLD_SAVESPACE_SSE is 32byte aligned.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=23a127519a4f5a7453682412393b09655ae5a4df

commit 23a127519a4f5a7453682412393b09655ae5a4df
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 15:20:49 2011 -0800

    Add x32 support to mathinline.h.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a9033d662c20fe9323985533baa055ccf90cbdcb

commit a9033d662c20fe9323985533baa055ccf90cbdcb
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:52:31 2011 -0800

    Add x32 support to math_private.h

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=73955886148e2258fec8217c8b10a89733cbe7ac

commit 73955886148e2258fec8217c8b10a89733cbe7ac
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:50:46 2011 -0800

    Cast _Unwind_GetCFA return to _Unwind_Ptr first.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9fc571856d55f38302784542be0ec9d6679e2696

commit 9fc571856d55f38302784542be0ec9d6679e2696
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:49:13 2011 -0800

    Add x32 support to mathdef.h/setjmp.h/fenv.h.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3b997625efc4c0cc1e780d85f414eb8ccd71c4cc

commit 3b997625efc4c0cc1e780d85f414eb8ccd71c4cc
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:46:40 2011 -0800

    Add x32 support to byteswap.h.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=25e19952ba37ca9e12a62d4a6674005d1fdddc17

commit 25e19952ba37ca9e12a62d4a6674005d1fdddc17
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:43:50 2011 -0800

    Use long long on 64bit integer in atomic.h.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ab90a0dfffb4f5e1a011cc5cc37940026b58da18

commit ab90a0dfffb4f5e1a011cc5cc37940026b58da18
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:39:14 2011 -0800

    Use register macros in memcmp-sse4.S.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=81eee320396e70b677b1e58116a0d01da59069aa

commit 81eee320396e70b677b1e58116a0d01da59069aa
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:37:26 2011 -0800

    Use R10_LP to load frame size.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=593c26fe5b9b0796ab9b3b2575986c484d0b1c9a

commit 593c26fe5b9b0796ab9b3b2575986c484d0b1c9a
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:35:52 2011 -0800

    Use register macros in memcpy.S.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e4872762fd3a9d676feade8390956ba7ab6429c3

commit e4872762fd3a9d676feade8390956ba7ab6429c3
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:31:11 2011 -0800

    Simulate popping 4byte argument count for x32.
    
    2011-11-21  H.J. Lu  <hongjiu.lu@intel.com>
    
    	* sysdeps/x86_64/elf/start.S: Include <sysdep.h>.  Simulate
    	popping 4byte argument count for x32.  Use RXX_LP.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=17fbcf8fa838b358950c81e0db3c6328690feb66

commit 17fbcf8fa838b358950c81e0db3c6328690feb66
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:28:52 2011 -0800

    Use register macros in __longjmp.S and setjmp.S.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=6268109c0718b085ade05a4a758b06ecfeb347d4

commit 6268109c0718b085ade05a4a758b06ecfeb347d4
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:20:29 2011 -0800

    Add x32 sysctl.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=dc11fd435d2169420e1f8baf9091d23f12295e56

commit dc11fd435d2169420e1f8baf9091d23f12295e56
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:19:55 2011 -0800

    Add x32 sendfile64.c.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=cae7ff4d489359f08e694a29d971c2bfa9e7e392

commit cae7ff4d489359f08e694a29d971c2bfa9e7e392
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:19:30 2011 -0800

    Add x32 pselect.c.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9e44af139969130ef7c87c518c5ef5f82db6476c

commit 9e44af139969130ef7c87c518c5ef5f82db6476c
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:17:29 2011 -0800

    Add x32 syscalls.list.
    
    It is almost identical to 64bit syscalls.list, except for llseek, which
    is handled by x32 llseek.S.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=511c92589003d8254b5dfa853e4883962529ba24

commit 511c92589003d8254b5dfa853e4883962529ba24
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:16:25 2011 -0800

    Add x32 init-first.c.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e1bfd3bd5ca47ea721c2ce3dca51586f459682a1

commit e1bfd3bd5ca47ea721c2ce3dca51586f459682a1
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:15:41 2011 -0800

    Add x32 getdents and llseek.S.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=99f79a211a649bcd6e629ce6cec8c6816e3052bd

commit 99f79a211a649bcd6e629ce6cec8c6816e3052bd
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:12:03 2011 -0800

    Add x32 gettimeofday and time.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=71f467f97e0adf0dba40f8c0f3f8c7370cc7190a

commit 71f467f97e0adf0dba40f8c0f3f8c7370cc7190a
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:10:56 2011 -0800

    Add x32 preadv and pwritev.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d37b95ac7540ee4af612549cbe4aa96f8ce95822

commit d37b95ac7540ee4af612549cbe4aa96f8ce95822
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:09:45 2011 -0800

    Add x32 getcpu and sched_getcpu.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a31ad605fd8db9649279747408fbc90eed9de0e4

commit a31ad605fd8db9649279747408fbc90eed9de0e4
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:06:26 2011 -0800

    Add x32 fallocate, posix_fadvise and posix_fallocate.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=dc1642318fb4c0f13b87a4cad43a853153d95ac3

commit dc1642318fb4c0f13b87a4cad43a853153d95ac3
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 14:00:13 2011 -0800

    Use 64bit filesystem functions for x32.
    
    Since x32 uses LFS like 64bit platforms, we use 64bit filesystem functions
    for x32.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=bf497aa99bc06e6870da78d4f3f98f871963b1b8

commit bf497aa99bc06e6870da78d4f3f98f871963b1b8
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 13:56:01 2011 -0800

    Add x32 dl-cache.h.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=61089cdd25087301c3ecc785568ad0e4791770bd

commit 61089cdd25087301c3ecc785568ad0e4791770bd
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 13:53:30 2011 -0800

    Replace 8byte data alignment with LP_SIZE alignment.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=60225405ce8681b2fd09c2db258b1b773e3ebe8f

commit 60225405ce8681b2fd09c2db258b1b773e3ebe8f
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 13:52:05 2011 -0800

    Load pointer to TID into R10_LP.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f87d33ecb314f3d00e3cf490632301fccacd4632

commit f87d33ecb314f3d00e3cf490632301fccacd4632
Author: Ulrich Drepper <drepper@gmail.com>
Date:   Sat Oct 29 15:50:01 2011 -0400

    Add missing register initialization in x86-64 pthread_cond_timedwait

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e7d4b2071fc4dc19ee8e053bda51409fe2aad330

commit e7d4b2071fc4dc19ee8e053bda51409fe2aad330
Author: H.J. Lu <hongjiu.lu@intel.com>
Date:   Thu Sep 8 23:53:04 2011 -0400

    Fix macro used in test

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=01a7af776100ce4e5fbe57a8e73a4382b567c382

commit 01a7af776100ce4e5fbe57a8e73a4382b567c382
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 13:49:27 2011 -0800

    Use register and stack_t field macros for alternate signal stack.
    
    2011-11-21  H.J. Lu  <hongjiu.lu@intel.com>
    
    	* sysdeps/unix/sysv/linux/x86_64/Makefile (gen-as-const-headers):
    	Add sigaltstack.sym.
    
    	* sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S: Include
    	"sigaltstack.h".
    	(____longjmp_chk): Use RXX_LP, sizeSS, oSS_FLAGS, oSS_SP and
    	oSS_SIZE for alternate signal stack.
    
    	* sysdeps/unix/sysv/linux/x86_64/sigaltstack.sym: New.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=033aebd8e5b6db8aeaec9cf797dd13b534ec02b3

commit 033aebd8e5b6db8aeaec9cf797dd13b534ec02b3
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 13:42:00 2011 -0800

    Use "unsigned long long int" in __makecontext.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a6b7e16187260cc1176c500866e5192feefbfce3

commit a6b7e16187260cc1176c500866e5192feefbfce3
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 13:10:15 2011 -0800

    Add x32 support to sigcontextinfo.h and sys header files.
    
    2011-11-21  H.J. Lu  <hongjiu.lu@intel.com>
    
    	* sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h: Include
    	<stdint.h>.
    	(GET_PC): Cast to uintptr_t first.
    	(GET_FRAME): Likewise.
    	(GET_STACK): Likewise.
    
    	* sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h: Don't include
    	<bits/wordsize.h>.  Check __x86_64__ instead of __WORDSIZE.
    	(DR_CONTROL_RESERVED): Use ULL instead of UL suffix.
    
    	* sysdeps/unix/sysv/linux/x86_64/sys/procfs.h (elf_greg_t): Use
    	"unsigned long long int" if __x86_64__ is defined.
    	Check __x86_64__ instead of __WORDSIZE.
    	(elf_prstatus): Use "unsigned long long int" instead of
    	"unsigned long int" if __x86_64__ is defined.
    
    	* sysdeps/unix/sysv/linux/x86_64/sys/reg.h: Don't
    	include <bits/wordsize.h>.  Check __x86_64__ instead of
    	__WORDSIZE.
    
    	* sysdeps/unix/sysv/linux/x86_64/sys/ucontext.h: Don't
    	include <bits/wordsize.h>.  Check __x86_64__ instead of
    	__WORDSIZE.
    	(greg_t): Use "long long int" if __x86_64__ is defined.
    	(mcontext_t): Replace "unsigned long" with "unsigned long long".
    	(ucontext_t): Likewise.
    
    	* sysdeps/unix/sysv/linux/x86_64/sys/user.h: Don't
    	include <bits/wordsize.h>.  Check __x86_64__ instead of
    	__WORDSIZE.
    	(user_regs_struct): Use "unsigned long long" instead of
    	"unsigned long" if __x86_64__ is defined.
    	(user): Likewise.  Pad if __LP64__ isn't defined.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f8910e75cc8fe8862973ccfc18d30336f945f459

commit f8910e75cc8fe8862973ccfc18d30336f945f459
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 13:05:58 2011 -0800

    Add x32 support to <sys/msg.h>.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e71fee6c06cb63f6d04b8d281fe5733ff4d07592

commit e71fee6c06cb63f6d04b8d281fe5733ff4d07592
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 13:01:36 2011 -0800

    Add x32 support to ldd-rewrite.sed.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fb59c0fa88bf7e85e4c0c2153e772637e010b1d9

commit fb59c0fa88bf7e85e4c0c2153e772637e010b1d9
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 12:46:44 2011 -0800

    Add x32 wordsize.h.
    
    2011-11-21  H.J. Lu  <hongjiu.lu@intel.com>
    
    	* sysdeps/x86_64/bits/wordsize.h: Moved to ...
    	* sysdeps/x86_64/64/bits/wordsize.h: Here.
    	(__WORDSIZE_COMPAT32): Removed.
    
    	* sysdeps/x86_64/x32/bits/wordsize.h: New.
    
    Since wordsize-32 and wordsize-64 in sysdeps/x86_64/x32/Implies
    and sysdeps/x86_64/64/Implies put sysdeps/wordsize-32/bits/wordsize.h
    and sysdeps/wordsize-64/bits/wordsize.h before
    sysdeps/x86_64/x32/bits/wordsize.h, we add
    sysdeps/x86_64/64/bits/wordsize.h and sysdeps/x86_64/x32/bits/wordsize.h
    to make sure that the proper wordsize.h is used.
    
    Since we added sysdeps/unix/sysv/linux/x86_64/bits/utmp.h and
    sysdeps/unix/sysv/linux/x86_64/bits/utmpx.h to support x32, there
    is no need to define __WORDSIZE_COMPAT32 anymore.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5e13e292e585d0d56d278a9493a9d11766862f00

commit 5e13e292e585d0d56d278a9493a9d11766862f00
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 12:42:24 2011 -0800

    Add x32 Implies files.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1f8a94626c20c915257e38bb8f50753d28acdbf1

commit 1f8a94626c20c915257e38bb8f50753d28acdbf1
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 12:35:17 2011 -0800

    Add x32 support to Linux system call types.
    
    2011-11-21  H.J. Lu  <hongjiu.lu@intel.com>
    
    	* sysdeps/unix/sysv/linux/x86_64/bits/a.out.h: Don't include
    	<bits/wordsize.h>.  Check __x86_64__ instead of __WORDSIZE.
    	* sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: Likewise.
    
    	* sysdeps/unix/sysv/linux/x86_64/bits/msq.h: Don't include
    	<bits/wordsize.h>.
    	(msgqnum_t): Use __UNATIVE_LONG_TYPE.
    	(msglen_t): Likewise.
    	(msqid_ds): Check __x86_64__ instead of __WORDSIZE.  Use
    	__UNATIVE_LONG_TYPE.
    
    	* sysdeps/unix/sysv/linux/x86_64/bits/sem.h (semid_ds): Use
    	__UNATIVE_LONG_TYPE.
    
    	* sysdeps/unix/sysv/linux/x86_64/bits/shm.h (shmatt_t): Use
    	__UNATIVE_LONG_TYPE.
    	(shmid_ds): Add __unused1 and __unused2 only if __x86_64__ isn't
    	defined.  Use __UNATIVE_LONG_TYPE.
    	(shminfo): Use __UNATIVE_LONG_TYPE.
    	(shm_info): Likewise.
    
    	* sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h: Don't
    	include <bits/wordsize.h>.  Check __x86_64__ instead of
    	__WORDSIZE.
    	(sigcontext): Use "unsigned long long int" instead of
    	"unsigned long int" if __x86_64__ is defined.  Pad if __LP64__
    	isn't defined.
    
    	* sysdeps/unix/sysv/linux/x86_64/bits/stat.h (_STAT_VER_SVR4):
    	Check __x86_64__ instead of __WORDSIZE.
    	(_STAT_VER_LINUX): Likewise.
    	(stat): Check __x86_64__ instead of __WORDSIZE.  Use
    	__UNATIVE_LONG_TYPE.
    	(stat64): Likewise.
    
    	* sysdeps/unix/sysv/linux/x86_64/bits/ipc.h: New.
    	* sysdeps/unix/sysv/linux/x86_64/bits/ipctypes.h: Likewise.
    	* sysdeps/unix/sysv/linux/x86_64/bits/mqueue.h: Likewise.
    	* sysdeps/unix/sysv/linux/x86_64/bits/resource.h: Likewise.
    	* sysdeps/unix/sysv/linux/x86_64/bits/statfs.h: Likewise.
    	* sysdeps/unix/sysv/linux/x86_64/bits/statvfs.h: Likewise.
    	* sysdeps/unix/sysv/linux/x86_64/bits/timex.h: Likewise.
    	* sysdeps/unix/sysv/linux/x86_64/bits/utmp.h: Likewise.
    	* sysdeps/unix/sysv/linux/x86_64/bits/utmpx.h: Likewise.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=bf01a6e9612ff0263e3708222fa97ae79bae6ed5

commit bf01a6e9612ff0263e3708222fa97ae79bae6ed5
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 12:10:46 2011 -0800

    Add x32 support to TLS_LE/TLS_IE/TLS_GD.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0a71b672e3e745a8373bc3976ec450a7c20e3851

commit 0a71b672e3e745a8373bc3976ec450a7c20e3851
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 12:07:41 2011 -0800

    Add x32 support to STACK_CHK_GUARD.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0b51ec101e70cfbad75ebc046770d050642bd2ab

commit 0b51ec101e70cfbad75ebc046770d050642bd2ab
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 12:05:11 2011 -0800

    Add x32 TLS support.
    
    2011-11-21  H.J. Lu  <hongjiu.lu@intel.com>
    
    	* pthread_create.c (start_thread): Check __PTHREAD_MUTEX_HAVE_PREV
    	instead of __WORDSIZE.
    
    	* sysdeps/pthread/pthread.h (PTHREAD_MUTEX_INITIALIZER): Check
    	__PTHREAD_MUTEX_HAVE_PREV instead of __WORDSIZE.
    	(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP): Likewise.
    	(PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP): Likewise.
    	(PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP): Likewise.
    	(__PTHREAD_RWLOCK_INT_FLAGS_SHARED): New.
    	(PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP): Check
    	__PTHREAD_RWLOCK_INT_FLAGS_SHARED instead of __WORDSIZE.
    
    	* sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Define x32
    	__SIZEOF_PTHREAD_XXX_T.
    	(__pthread_internal_list): Check __x86_64__ instead of __WORDSIZE.
    	(pthread_mutex_t): Likewise.
    	(pthread_rwlock_t): Likewise.
    	(__PTHREAD_RWLOCK_INT_FLAGS_SHARED): New.  Defined if __x86_64__
    	is defined.
    
    	* sysdeps/x86_64/tls.h: Don't include <bits/wordsize.h>.
    	Check __x86_64__ instead of __WORDSIZE.
    	(tcbhead_t): Pad rtld_savespace_sse to 32byte aligned.
    	(THREAD_SETMEM): Use long long on 64bit integer.
    	(THREAD_SETMEM_NC): Likewise.
    
    	* sysdeps/x86_64/x32/tls.h: New.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=056b605dc482dc0f6903eba307447ad4ed775a72

commit 056b605dc482dc0f6903eba307447ad4ed775a72
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 11:45:55 2011 -0800

    Use RSP_LP in CURRENT_STACK_FRAME.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c5447d360457419acad71323ad93c472c7d0bb95

commit c5447d360457419acad71323ad93c472c7d0bb95
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 11:23:41 2011 -0800

    Define __NR_futex and use LP_SIZE/RDX_LP.
    
    2011-11-21  H.J. Lu  <hongjiu.lu@intel.com>
    
    	* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (__NR_futex): New.
    	(SYS_futex): Use it.
    	(LLL_STUB_UNWIND_INFO_START): Align label to LP_SIZE instead
    	of 8.
    	(LLL_STUB_UNWIND_INFO_END): Likewise.  Use RDX_LP.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d0d194edaca8e347156d1650726a40a5f64ca928

commit d0d194edaca8e347156d1650726a40a5f64ca928
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 10:55:54 2011 -0800

    Cast _Unwind_GetCFA return to _Unwind_Ptr first.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=4081dd97049270347c40d25a5ce0d3393d3df0a1

commit 4081dd97049270347c40d25a5ce0d3393d3df0a1
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 10:52:34 2011 -0800

    Use XXX_LP, LP_SIZE and ASM_ADDR in nptl.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=548ce6cd93e7b2ed488de6ff8bb89c7a44dc0378

commit 548ce6cd93e7b2ed488de6ff8bb89c7a44dc0378
Author: Ulrich Drepper <drepper@gmail.com>
Date:   Wed Sep 7 00:14:06 2011 -0400

    Remove gettimeofday vsyscall use from x86-86 libpthread

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b63cff05959c65c8713c080269ecdcdab552bbb8

commit b63cff05959c65c8713c080269ecdcdab552bbb8
Author: Ulrich Drepper <drepper@gmail.com>
Date:   Tue Sep 6 23:17:53 2011 -0400

    Don't call gettimeofday vsyscall in x86-64 sem_timedwait

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a0fb5314941ba6df477ba0889e218e988144c440

commit a0fb5314941ba6df477ba0889e218e988144c440
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 10:34:57 2011 -0800

    Add FLAG_X8664_LIBX32.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2d98d6d986ede44e993468e0325e74f7a06801d1

commit 2d98d6d986ede44e993468e0325e74f7a06801d1
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 10:18:40 2011 -0800

    Update longlong.h from GCC.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a88e48b3971f00fdca961a764824619e885e1721

commit a88e48b3971f00fdca961a764824619e885e1721
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Nov 21 10:15:12 2011 -0800

    Define R_X86_64_RELATIVE64.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9a2acc8f4956f7e7c3b0314f5bbc032dd37d358f

commit 9a2acc8f4956f7e7c3b0314f5bbc032dd37d358f
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Nov 18 18:04:02 2011 -0800

    Add x86-64 ffsl alias only if __LP64__ is defined.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3227f72247181611e1422e0cb10edd5174ca2df2

commit 3227f72247181611e1422e0cb10edd5174ca2df2
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Sep 19 10:46:47 2011 -0700

    In 64bit, make lround the alias of llround.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=988e5e042e067a5bc7dcf4343602844d857a09a8

commit 988e5e042e067a5bc7dcf4343602844d857a09a8
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Nov 18 17:50:56 2011 -0800

    Support 64bit time_t and 32bit long.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=6f23b8653f08c8e9630e628afec3d4ccad7ad07b

commit 6f23b8653f08c8e9630e628afec3d4ccad7ad07b
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Nov 18 17:46:54 2011 -0800

    Add __snseconds_t and __SNSECONDS_T_TYPE.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=df950ab832a01fa51189d1157b527863adee4576

commit df950ab832a01fa51189d1157b527863adee4576
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Nov 18 17:34:12 2011 -0800

    Add x32 sysdep.h files.
    
    2011-11-18  H.J. Lu  <hongjiu.lu@intel.com>
    
    	* sysdeps/unix/sysv/linux/x86_64/sysdep.h
    	(VSYSCALL_ADDR_vgettimeofday): New.
    	(VSYSCALL_ADDR_vtime): Likewise.
    	(VSYSCALL_ADDR_vgetcpu): Likewise.
    
    	* sysdeps/unix/sysv/linux/x86_64/gettimeofday.c
    	(VSYSCALL_ADDR_vgettimeofday): Removed.
    	* sysdeps/unix/sysv/linux/x86_64/sched_getcpu.S
    	(VSYSCALL_ADDR_vgetcpu): Likewise.
    	* sysdeps/unix/sysv/linux/x86_64/time.S (VSYSCALL_ADDR_vtime):
    	Likewise.
    
    	* sysdeps/unix/sysv/linux/x86_64/x32/sysdep.h: New.
    	* sysdeps/x86_64/x32/sysdep.h: Likewise.
    
    	* sysdeps/x86_64/sysdep.h (LP_SIZE): New.
    	(MOVE_LP): Likewise.
    	(ADD_LP): Likewise.
    	(SUB_LP): Likewise.
    	(CMP_LP): Likewise.
    	(ASM_ADDR): Likewise.
    	(RAX_LP): New.
    	(RBP_LP): Likewise.
    	(RBX_LP): Likewise.
    	(RCX_LP): Likewise.
    	(RDI_LP): Likewise.
    	(RSI_LP): Likewise.
    	(RSP_LP): Likewise.
    	(R8_LP): Likewise.
    	(R9_LP): Likewise.
    	(R10_LP): Likewise.
    	(R10_LP): Likewise.
    	(R11_LP): Likewise.
    	(R12_LP): Likewise.
    	(R13_LP): Likewise.
    	(R14_LP): Likewise.
    	(R15_LP): Likewise.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f505f2cccd11b0d41402ea62393e39fc087d8248

commit f505f2cccd11b0d41402ea62393e39fc087d8248
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Nov 18 16:16:47 2011 -0800

    Set x32 shlib version to GLIBC_2.11.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8b3abed1b5e74df3a1f6ffa1f3ae293645812210

commit 8b3abed1b5e74df3a1f6ffa1f3ae293645812210
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Nov 18 15:58:11 2011 -0800

    Initial x32 support.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e75a9941893aa054529f99a280d1c89af5b5deac

commit e75a9941893aa054529f99a280d1c89af5b5deac
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Tue Nov 22 14:37:26 2011 -0800

    Use ifunc for gettimeofday on x86-64
    
    2011-09-06  Andreas Schwab  <schwab@redhat.com>
    
    	* sysdeps/unix/sysv/linux/x86_64/gettimeofday.c [!SHARED]: Include
    	<errno.h>.
    
    2011-09-06  Ulrich Drepper  <drepper@gmail.com>
    
    	* sysdeps/unix/sysv/linux/x86_64/gettimeofday.c [!SHARED]: Use real
    	syscall.
    
    2011-08-21  Ulrich Drepper  <drepper@gmail.com>
    
    	* sysdeps/unix/sysv/linux/x86_64/gettimeofday.S: Removed.
    	* sysdeps/unix/sysv/linux/x86_64/gettimeofday.c: New file.
    	* sysdeps/unix/sysv/linux/x86_64/bits/libc-vdso.h: Remove declaration
    	of __vdso_gettimeofday.
    	* sysdeps/unix/sysv/linux/x86_64/init-first.c: Remove definition of
    	__vdso_gettimeofday.
    	(_libc_vdso_platform_setup): Remove initialization of
    	__vdso_gettimeofday.

-----------------------------------------------------------------------