From: http://sourceware.org/ml/libc-alpha/2012-05/msg01012.html But I like sysdeps/x86 (and sysdeps/unix/sysv/linux/x86, etc.) as a solution for this issue - it would be best for all three ABIs to install exactly the same set of headers, which would work for all three ABIs, rather than having multiple copies of various installed headers, some versions of a header being biarch-capable and some not. (There are some files other than installed headers that might be shared between x86 and x86_64 as well.)
In general this will make x86 use the existing x86_64 headers - but each will need individually comparing with the headers currently used on x86 to make sure that any differences in what -m32 code gets are correct changes, not regressions. In particular, the mathinline differences (bug 14050) will need fixing. As another difference, only 32-bit glibc installs the sys/vm86.h header; x86_64 glibc also needs to install this header (but the header should probably #error if __x86_64__).
Also x32 doesn't have sysctl.
A patch is posted at http://sourceware.org/ml/libc-alpha/2012-05/msg01954.html
Remaining patches: http://sourceware.org/ml/libc-alpha/2012-05/msg02026.html http://sourceware.org/ml/libc-alpha/2012-05/msg02019.html http://sourceware.org/ml/libc-alpha/2012-05/msg02018.html http://sourceware.org/ml/libc-alpha/2012-05/msg02000.html http://sourceware.org/ml/libc-alpha/2012-05/msg01999.html http://sourceware.org/ml/libc-alpha/2012-05/msg01991.html http://sourceware.org/ml/libc-alpha/2012-05/msg02002.html http://sourceware.org/ml/libc-alpha/2012-06/msg00014.html http://sourceware.org/ml/libc-alpha/2012-06/msg00009.html
Fixed for 2.16.