Summary: | Get TaskObserver.Watch.updateHit() to distinguish between read and write hits | ||
---|---|---|---|
Product: | frysk | Reporter: | Teresa Thomas <tthomas> |
Component: | general | Assignee: | Phil Muldoon <pmuldoon> |
Status: | NEW --- | ||
Severity: | normal | ||
Priority: | P2 | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Last reconfirmed: | ||
Bug Depends on: | |||
Bug Blocks: | 1625, 6633 |
Description
Teresa Thomas
2008-06-16 15:01:18 UTC
I investigated this a bit and this is what I came up with. - When the user sets a read only watchpoint, they will know that the watchpoint is triggering due to it being specific read only watchpoint. Writes to memory will not trigger this watchpoint. - When the user sets a read and write watchpoint it becomes a bit more complicated. If the value changed, then obviously a write occurred. If the value did not change then a read of that memory, or alternatively a write of the same value at that memory occurred. However in the case of IA32 and X8664 there is no method in hardware to determine if the watchpoint triggered due to a read, or write of the same value. All that exists in hardware is a bit set in the debug status register indicating that the watchpoint fired. There is not enough information present in the debug registers to make this determination. A possible way to determine this would be to look at that the last instruction that occurred when a watchpoint triggers. On IA32 and X8664 the watchpoint triggers after the instruction that causes it to trigger completes. However this invariably will change with different ISAs. - w |