This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Problem with can_use_hw_breakpoint
I am trying to implement the target operation can_use_hw_breakpoint()
for an architecture with limited resources for hardware
breakpoint/watchpoint.
The call to can_use_hw_breakpoint() will identify the type of HW
breakpoint/watchpoint, a count of how many of that type are required,
and for watchpoints a flag (othertype) to indicate if HW watchpoints of
other types have been requested.
This function is called in response to watch, rwatch, awatch or hbreak
commands. My architecture can support up to 4 hardware watchpoints.
Consider the sequence
awatch a (watchpoint 1)
awatch b (watchpoint 2)
rwatch c (watchpoint 3)
rwatch d (watchpoint 4)
rwatch e
rwatch e should fail (5th request), but all I know from the call to
can_use_hw_breakpoint() is that 3 of this type are requested and that
some other type of watchpoint (but not how many) has previously been
requested.
It does not help to keep a private count of the calls, since I have no
notification of deletions, so I could not distinguish the sequence
awatch a (watchpoint 1)
awatch b (watchpoint 2)
rwatch c (watchpoint 3)
rwatch d (watchpoint 4)
delete 1
rwatch e (watchpoint 5)
which should succeed.
Ideally I would like can_use_hw_breakpoint to supply me with an array
with the counts of all types of HW breakpoint/watchpoint requested, so I
could determine the total resource currently required.
In the absence of this, can anyone suggest a reasonably simple solution.
The only approach I could think would be to place observers on the
watch, rwatch, awatch, hbreak and delete commands. This seems an
excessively heavyweight solution to impose.
Any suggestions welcome.
Thanks,
Jeremy
--
Tel: +44 (1202) 416955
Cell: +44 (7970) 676050
SkypeID: jeremybennett
Email: jeremy.bennett@embecosm.com
Web: www.embecosm.com