blob: 994f38b1be1dd7a186f1ab07aeba4c105ca4d078 [file] [log] [blame]
from util import *
send_gdb('break main')
expect_gdb('Breakpoint 1')
send_gdb('c')
expect_gdb('Breakpoint 1')
# Test write watchpoint
send_gdb('p &var')
expect_gdb(r'\$1 = \(volatile int \*\) ')
send_gdb('watch *$1')
expect_gdb('Hardware[()/a-z ]+watchpoint 2')
send_gdb('c')
expect_gdb('Old value = 0')
expect_gdb('New value = 42')
send_gdb('c')
expect_gdb('Old value = 42')
expect_gdb('New value = 1337')
restart_replay()
expect_gdb('Breakpoint 1')
# Test read-write watchpoint
send_gdb('delete 2')
send_gdb('awatch *$1')
expect_gdb('Hardware[()/a-z ]+watchpoint 3')
send_gdb('c')
expect_gdb('Old value = 0')
expect_gdb('New value = 42')
send_gdb('c')
expect_gdb('Old value = 42')
expect_gdb('New value = 1337')
send_gdb('c')
expect_gdb('Value = 1337')
restart_replay()
expect_gdb('Breakpoint 1')
# Test read watchpoint. x86 treats these as read-write.
send_gdb('delete 3')
send_gdb('rwatch *$1')
expect_gdb('Hardware[()/a-z ]+watchpoint 4')
send_gdb('c')
expect_gdb('Value = 42')
send_gdb('c')
expect_gdb('Value = 1337')
send_gdb('c')
expect_gdb('Value = 1337')
send_gdb('c')
expect_rr('EXIT-SUCCESS')
expect_gdb('exited normally')
ok()