Re: Fix 32-bit thread debugging on x86_64

2005-08-03 Thread Andi Kleen
On Sun, Jul 31, 2005 at 04:05:58PM -0400, Daniel Jacobowitz wrote:
> 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?).

Looks good. Thanks.

-Andi

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Fix 32-bit thread debugging on x86_64

2005-08-03 Thread Andi Kleen
On Sun, Jul 31, 2005 at 04:05:58PM -0400, Daniel Jacobowitz wrote:
 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?).

Looks good. Thanks.

-Andi

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Fix 32-bit thread debugging on x86_64

2005-07-31 Thread Daniel Jacobowitz
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 <[EMAIL PROTECTED]>

diff -r -p -u z/linux-2.6.11/arch/x86_64/ia32/ptrace32.c 
linux-2.6.11/arch/x86_64/ia32/ptrace32.c
--- linux-2.6.12.3.orig/arch/x86_64/ia32/ptrace32.c 2005-03-02 
02:37:52.0 -0500
+++ linux-2.6.12.3/arch/x86_64/ia32/ptrace32.c  2005-07-31 15:29:48.0 
-0400
@@ -43,11 +43,11 @@ static int putreg32(struct task_struct *
switch (regno) {
case offsetof(struct user32, regs.fs):
if (val && (val & 3) != 3) return -EIO; 
-   child->thread.fs = val & 0x; 
+   child->thread.fsindex = val & 0x; 
break;
case offsetof(struct user32, regs.gs):
if (val && (val & 3) != 3) return -EIO; 
-   child->thread.gs = val & 0x;
+   child->thread.gsindex = val & 0x;
break;
case offsetof(struct user32, regs.ds):
if (val && (val & 3) != 3) return -EIO; 
@@ -138,10 +138,10 @@ static int getreg32(struct task_struct *
 
switch (regno) {
case offsetof(struct user32, regs.fs):
-   *val = child->thread.fs; 
+   *val = child->thread.fsindex;
break;
case offsetof(struct user32, regs.gs):
-   *val = child->thread.gs;
+   *val = child->thread.gsindex;
break;
case offsetof(struct user32, regs.ds):
*val = child->thread.ds;

-- 
Daniel Jacobowitz
CodeSourcery, LLC
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Fix 32-bit thread debugging on x86_64

2005-07-31 Thread Daniel Jacobowitz
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 [EMAIL PROTECTED]

diff -r -p -u z/linux-2.6.11/arch/x86_64/ia32/ptrace32.c 
linux-2.6.11/arch/x86_64/ia32/ptrace32.c
--- linux-2.6.12.3.orig/arch/x86_64/ia32/ptrace32.c 2005-03-02 
02:37:52.0 -0500
+++ linux-2.6.12.3/arch/x86_64/ia32/ptrace32.c  2005-07-31 15:29:48.0 
-0400
@@ -43,11 +43,11 @@ static int putreg32(struct task_struct *
switch (regno) {
case offsetof(struct user32, regs.fs):
if (val  (val  3) != 3) return -EIO; 
-   child-thread.fs = val  0x; 
+   child-thread.fsindex = val  0x; 
break;
case offsetof(struct user32, regs.gs):
if (val  (val  3) != 3) return -EIO; 
-   child-thread.gs = val  0x;
+   child-thread.gsindex = val  0x;
break;
case offsetof(struct user32, regs.ds):
if (val  (val  3) != 3) return -EIO; 
@@ -138,10 +138,10 @@ static int getreg32(struct task_struct *
 
switch (regno) {
case offsetof(struct user32, regs.fs):
-   *val = child-thread.fs; 
+   *val = child-thread.fsindex;
break;
case offsetof(struct user32, regs.gs):
-   *val = child-thread.gs;
+   *val = child-thread.gsindex;
break;
case offsetof(struct user32, regs.ds):
*val = child-thread.ds;

-- 
Daniel Jacobowitz
CodeSourcery, LLC
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/