path: root/tools
diff options
authorFrederic Weisbecker <fweisbec@gmail.com>2010-06-30 15:09:06 +0200
committerFrederic Weisbecker <fweisbec@gmail.com>2010-06-30 16:16:20 +0200
commita1e80fafc9f0742a1776a0490258cb64912411b0 (patch)
treebedbb0182393c77051b2d7e2e492f443e5fca9a4 /tools
parentb70e4f0529c089b00d0a6da13106db4de1ada4c7 (diff)
x86: Send a SIGTRAP for user icebp traps
Before we had a generic breakpoint layer, x86 used to send a sigtrap for any debug event that happened in userspace, except if it was caused by lazy dr7 switches. Currently we only send such signal for single step or breakpoint events. However, there are three other kind of debug exceptions: - debug register access detected: trigger an exception if the next instruction touches the debug registers. We don't use it. - task switch, but we don't use tss. - icebp/int01 trap. This instruction (0xf1) is undocumented and generates an int 1 exception. Unlike single step through TF flag, it doesn't set the single step origin of the exception in dr6. icebp then used to be reported in userspace using trap signals but this have been incidentally broken with the new breakpoint code. Reenable this. Since this is the only debug event that doesn't set anything in dr6, this is all we have to check. This fixes a regression in Wine where World Of Warcraft got broken as it uses this for software protection checks purposes. And probably other apps do. Reported-and-tested-by: Alexandre Julliard <julliard@winehq.org> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Prasad <prasad@linux.vnet.ibm.com> Cc: 2.6.33.x 2.6.34.x <stable@kernel.org>
Diffstat (limited to 'tools')
0 files changed, 0 insertions, 0 deletions