* [rfa] insert_hw_breakpoint
@ 2002-08-12 13:04 Grace Sainsbury
2002-08-12 13:27 ` Kevin Buettner
0 siblings, 1 reply; 3+ messages in thread
From: Grace Sainsbury @ 2002-08-12 13:04 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 257 bytes --]
I fixed a little bug in the insert/remove_hw_breakpoint functions.
ok to commit?
grace
2002-08-12 Grace Sainsbury <graces@redhat.com>
* remote.c (remote_insert_hw_breakpoint)
(remote_remove_hw_breakpoint): Fix calculation of length field
Z-packet.
[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 1190 bytes --]
Index: remote.c
===================================================================
RCS file: /cvs/src/src/gdb/remote.c,v
retrieving revision 1.91
diff -u -r1.91 remote.c
--- remote.c 9 Aug 2002 16:41:24 -0000 1.91
+++ remote.c 12 Aug 2002 20:00:30 -0000
@@ -4985,11 +4985,11 @@
char *buf = alloca (rs->remote_packet_size);
char *p = buf;
- /* The length field should be set to soething so that the packet is
- well formed. */
+ /* The length field should be set to the size of a breakpoint
+ instruction. */
- len = strlen (shadow);
- len = len ? len : 1;
+ BREAKPOINT_FROM_PC (&addr, &len);
+
if (remote_protocol_Z[Z_PACKET_HARDWARE_BP].support == PACKET_DISABLE)
error ("Can't set hardware breakpoint without the '%s' (%s) packet\n",
remote_protocol_Z[Z_PACKET_HARDWARE_BP].name,
@@ -5027,7 +5027,8 @@
char *buf = alloca (rs->remote_packet_size);
char *p = buf;
- len = sizeof (shadow);
+ BREAKPOINT_FROM_PC (&addr, &len);
+
if (remote_protocol_Z[Z_PACKET_HARDWARE_BP].support == PACKET_DISABLE)
error ("Can't clear hardware breakpoint without the '%s' (%s) packet\n",
remote_protocol_Z[Z_PACKET_HARDWARE_BP].name,
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [rfa] insert_hw_breakpoint
2002-08-12 13:04 [rfa] insert_hw_breakpoint Grace Sainsbury
@ 2002-08-12 13:27 ` Kevin Buettner
2002-08-13 8:59 ` Andrew Cagney
0 siblings, 1 reply; 3+ messages in thread
From: Kevin Buettner @ 2002-08-12 13:27 UTC (permalink / raw)
To: Grace Sainsbury, gdb-patches
On Aug 12, 4:04pm, Grace Sainsbury wrote:
> - len = strlen (shadow);
> - len = len ? len : 1;
> + BREAKPOINT_FROM_PC (&addr, &len);
> +
> if (remote_protocol_Z[Z_PACKET_HARDWARE_BP].support == PACKET_DISABLE)
> error ("Can't set hardware breakpoint without the '%s' (%s) packet\n",
> remote_protocol_Z[Z_PACKET_HARDWARE_BP].name,
> @@ -5027,7 +5027,8 @@
> char *buf = alloca (rs->remote_packet_size);
> char *p = buf;
>
> - len = sizeof (shadow);
> + BREAKPOINT_FROM_PC (&addr, &len);
> +
> if (remote_protocol_Z[Z_PACKET_HARDWARE_BP].support == PACKET_DISABLE)
> error ("Can't clear hardware breakpoint without the '%s' (%s) packet\n",
> remote_protocol_Z[Z_PACKET_HARDWARE_BP].name,
Do stubs actually care about this length field for the packets under
consideration?
I agree that the use of strlen() and sizeof() seem dubious if not
outright wrong, but, unfortunately, not all architectures can define
a sensible BREAKPOINT_FROM_PC. (*) I would like to see gdb relying less
on BREAKPOINT_FROM_PC, not more.
(*) E.g, IA-64. For IA-64, I did define a BREAKPOINT_FROM_PC, but I
would have preferred not to. The values returned by
ia64_breakpoint_from_pc() are fairly arbitrary and are of absolutely
no use for saving/restoring actual breakpoints.
Kevin
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [rfa] insert_hw_breakpoint
2002-08-12 13:27 ` Kevin Buettner
@ 2002-08-13 8:59 ` Andrew Cagney
0 siblings, 0 replies; 3+ messages in thread
From: Andrew Cagney @ 2002-08-13 8:59 UTC (permalink / raw)
To: Kevin Buettner, Grace Sainsbury; +Cc: gdb-patches
> On Aug 12, 4:04pm, Grace Sainsbury wrote:
>
>
>> - len = strlen (shadow);
>> - len = len ? len : 1;
>> + BREAKPOINT_FROM_PC (&addr, &len);
>> +
>> if (remote_protocol_Z[Z_PACKET_HARDWARE_BP].support == PACKET_DISABLE)
>> error ("Can't set hardware breakpoint without the '%s' (%s) packet\n",
>> remote_protocol_Z[Z_PACKET_HARDWARE_BP].name,
>> @@ -5027,7 +5027,8 @@
>> char *buf = alloca (rs->remote_packet_size);
>> char *p = buf;
>>
>> - len = sizeof (shadow);
>> + BREAKPOINT_FROM_PC (&addr, &len);
>> +
>> if (remote_protocol_Z[Z_PACKET_HARDWARE_BP].support == PACKET_DISABLE)
>> error ("Can't clear hardware breakpoint without the '%s' (%s) packet\n",
>> remote_protocol_Z[Z_PACKET_HARDWARE_BP].name,
Grace,
Assuming it still works with the (RedBoot?) stub you're using then yes
ok. (The stub must have been ignoring the length as that could be garbage).
> Do stubs actually care about this length field for the packets under
> consideration?
The length indicates the number of bytes to consider -- in theory this
allows GDB to set h/w breakpoint across an address range. I suspect,
though, that all existing stubs ignore the length since GDB hasn't been
doing anything sensible with it.
> I agree that the use of strlen() and sizeof() seem dubious if not
> outright wrong, but, unfortunately, not all architectures can define
> a sensible BREAKPOINT_FROM_PC. (*) I would like to see gdb relying less
> on BREAKPOINT_FROM_PC, not more.
The address should definitly be run through BREAKPOINT_FROM_PC(). On
Arm, MIPS16, sh5, ...it will strip out any least significant mode bit so
that the stub is handed a proper address.
As for the length, the choices would be 1, instruction size or
breakpoint size (returned by BREAKPOINT_FROM_PC). Given breakpoint size
is the size of the smallest instruction, it looks to be a good
compromize. On the i386 it is one anyway, on Arm it would be 2/4
depending on/indicating the mode of the cpu.
> (*) E.g, IA-64. For IA-64, I did define a BREAKPOINT_FROM_PC, but I
> would have preferred not to. The values returned by
> ia64_breakpoint_from_pc() are fairly arbitrary and are of absolutely
> no use for saving/restoring actual breakpoints.
I think that is a separate problem.
enjoy,
Andrew
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-08-13 15:59 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-08-12 13:04 [rfa] insert_hw_breakpoint Grace Sainsbury
2002-08-12 13:27 ` Kevin Buettner
2002-08-13 8:59 ` Andrew Cagney
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox