On Thu, Jul 28, 2011 at 6:08 AM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Thu, Jul 28, 2011 at 12:45 AM, Uros Bizjak <ubiz...@gmail.com> wrote: >> On Thu, Jul 28, 2011 at 5:11 AM, H.J. Lu <hongjiu...@intel.com> wrote: >> >>> In x32, thread pointer is 32bit and choice of segment register for the >>> thread base ptr load should be based on TARGET_64BIT. This patch >>> implements it. OK for trunk? >> >> -ENOTESTCASE. >> > > There is no standalone testcase. The symptom is in glibc build, I > got > > CPP='/export/build/gnu/gcc-x32/release/usr/gcc-4.7.0-x32/bin/gcc -mx32 > -E -x c-header' > /export/build/gnu/glibc-x32/build-x86_64-linux/elf/ld-linux-x32.so.2 > --library-path > /export/build/gnu/glibc-x32/build-x86_64-linux:/export/build/gnu/glibc-x32/build-x86_64-linux/math:/export/build/gnu/glibc-x32/build-x86_64-linux/elf:/export/build/gnu/glibc-x32/build-x86_64-linux/dlfcn:/export/build/gnu/glibc-x32/build-x86_64-linux/nss:/export/build/gnu/glibc-x32/build-x86_64-linux/nis:/export/build/gnu/glibc-x32/build-x86_64-linux/rt:/export/build/gnu/glibc-x32/build-x86_64-linux/resolv:/export/build/gnu/glibc-x32/build-x86_64-linux/crypt:/export/build/gnu/glibc-x32/build-x86_64-linux/nptl > /export/build/gnu/glibc-x32/build-x86_64-linux/sunrpc/rpcgen -Y > ../scripts -h rpcsvc/yppasswd.x -o > /export/build/gnu/glibc-x32/build-x86_64-linux/sunrpc/rpcsvc/yppasswd.T > make[5]: *** > [/export/build/gnu/glibc-x32/build-x86_64-linux/sunrpc/xbootparam_prot.stmp] > Segmentation fault > make[5]: *** Waiting for unfinished jobs.... > make[5]: *** > [/export/build/gnu/glibc-x32/build-x86_64-linux/sunrpc/xrstat.stmp] > Segmentation fault > make[5]: *** > [/export/build/gnu/glibc-x32/build-x86_64-linux/sunrpc/xyppasswd.stmp] > Segmentation fault > > since thread pointer is 32bit in x32. >
If we load thread pointer (fs segment register) in x32 with 64bit load, the upper 32bits are garbage. We must load 32bit -- H.J.