Filing this so it can be referred to. The code to handle tls in linux-x86-low.c doesn't extend the 32-bit address to 64 bits leaving the upper bits unassigned. ref: http://sourceware.org/ml/gdb-patches/2013-05/msg00936.html patch to trunk here: http://sourceware.org/ml/gdb-cvs/2013-05/msg00302.html
patch is in trunk
CVSROOT: /cvs/src Module name: src Changes by: devans@sourceware.org 2013-06-06 18:02:48 Modified files: gdb/gdbserver : ChangeLog Log message: Add PR number to this entry: PR server/15594 * linux-x86-low.c (ps_get_thread_area): Properly extend address to 64 bits in 64-cross-32 environment. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/gdbserver/ChangeLog.diff?cvsroot=src&r1=1.721&r2=1.722
CVSROOT: /cvs/src Module name: src Branch: gdb_7_6-branch Changes by: devans@sourceware.org 2013-06-06 18:04:30 Modified files: gdb/gdbserver : ChangeLog Log message: Add PR number to this entry: PR server/15594 * linux-x86-low.c (ps_get_thread_area): Properly extend address to 64 bits in 64-cross-32 environment. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/gdbserver/ChangeLog.diff?cvsroot=src&only_with_tag=gdb_7_6-branch&r1=1.697.2.5&r2=1.697.2.6