[PATCH] x86_64: fix 32-bit thread debugging

The IA32 ptrace emulation currently returns the wrong registers for fs/gs;
it's returning what x86_64 calls gs_base. We need regs.gsindex in order
for GDB to correctly locate the TLS area. Without this patch, the 32-bit
GDB testsuite bombs on a 64-bit kernel. With it, results look about like
I'd expect, although there are still a handful of kernel-related failures
(vsyscall related?).

Signed-off-by: Daniel Jacobowitz <dan@codesourcery.com>
Acked-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Daniel Jacobowitz and committed by Linus Torvalds e8ed11b9 c91096d8

+4 -4
+4 -4
arch/x86_64/ia32/ptrace32.c
··· 43 switch (regno) { 44 case offsetof(struct user32, regs.fs): 45 if (val && (val & 3) != 3) return -EIO; 46 - child->thread.fs = val & 0xffff; 47 break; 48 case offsetof(struct user32, regs.gs): 49 if (val && (val & 3) != 3) return -EIO; 50 - child->thread.gs = val & 0xffff; 51 break; 52 case offsetof(struct user32, regs.ds): 53 if (val && (val & 3) != 3) return -EIO; ··· 138 139 switch (regno) { 140 case offsetof(struct user32, regs.fs): 141 - *val = child->thread.fs; 142 break; 143 case offsetof(struct user32, regs.gs): 144 - *val = child->thread.gs; 145 break; 146 case offsetof(struct user32, regs.ds): 147 *val = child->thread.ds;
··· 43 switch (regno) { 44 case offsetof(struct user32, regs.fs): 45 if (val && (val & 3) != 3) return -EIO; 46 + child->thread.fsindex = val & 0xffff; 47 break; 48 case offsetof(struct user32, regs.gs): 49 if (val && (val & 3) != 3) return -EIO; 50 + child->thread.gsindex = val & 0xffff; 51 break; 52 case offsetof(struct user32, regs.ds): 53 if (val && (val & 3) != 3) return -EIO; ··· 138 139 switch (regno) { 140 case offsetof(struct user32, regs.fs): 141 + *val = child->thread.fsindex; 142 break; 143 case offsetof(struct user32, regs.gs): 144 + *val = child->thread.gsindex; 145 break; 146 case offsetof(struct user32, regs.ds): 147 *val = child->thread.ds;