Re: ptrace single-stepping change breaks Wine
From: Linus Torvalds (torvalds_at_osdl.org)
Date: 11/21/04
- Previous message: Peter T. Breuer: "Re: can kfree sleep?"
- In reply to: Davide Libenzi: "Re: ptrace single-stepping change breaks Wine"
- Next in thread: Davide Libenzi: "Re: ptrace single-stepping change breaks Wine"
- Reply: Davide Libenzi: "Re: ptrace single-stepping change breaks Wine"
- Reply: Andreas Schwab: "Re: ptrace single-stepping change breaks Wine"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Sun, 21 Nov 2004 14:33:32 -0800 (PST) To: Davide Libenzi <davidel@xmailserver.org>
On Sun, 21 Nov 2004, Davide Libenzi wrote:
>
> I'd agree with Linus here. A signal handler is part of the application, so
> it should be single stepped in the same way other application code does.
> My original patch simply reenabled the flag before returning to userspace,
> and this had the consequence to single step into signal handlers too.
Hmmm.. I think I may have a test-case for the problem.
Lookie here:
#include <signal.h>
#include <sys/mman.h>
void function(void)
{
printf("Copy protected: ok\n");
}
void handler(int signo)
{
extern char smc;
smc++;
}
#define TF 0x100
int main(int argc, char **argv)
{
void (*fnp)(void);
signal(SIGTRAP, handler);
mprotect((void *)(0xfffff000 & (unsigned long)main), 4096, PROT_READ | PROT_WRITE);
asm volatile("pushfl ; orl %0,(%%esp) ; popfl"
: :"i" (TF):"memory");
asm volatile("pushfl ; andl %0,(%%esp) ; popfl"
: :"i" (~TF):"memory");
asm volatile("\nsmc:\n\t"
".byte 0xb7\n\t"
".long function"
:"=d" (fnp));
fnp();
exit(1);
}
Compile it, run it, and it should say
Copy protected: ok
Now, try to "strace" it, or debug it with gdb, and see if you can repeat
the behaviour.
Roland? Think of it as a challenge,
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- Previous message: Peter T. Breuer: "Re: can kfree sleep?"
- In reply to: Davide Libenzi: "Re: ptrace single-stepping change breaks Wine"
- Next in thread: Davide Libenzi: "Re: ptrace single-stepping change breaks Wine"
- Reply: Davide Libenzi: "Re: ptrace single-stepping change breaks Wine"
- Reply: Andreas Schwab: "Re: ptrace single-stepping change breaks Wine"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|
|