Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jonathan Larmour <jifl@eCosCentric.com>
To: gdb-patches@sourceware.org
Subject: remote.c Z0 packet detection robustness
Date: Fri, 27 Jun 2008 16:25:00 -0000	[thread overview]
Message-ID: <48650D79.6080502@eCosCentric.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 1742 bytes --]

Hi,

The attached patch improves the robustness of Z0 packet detection. In some
rare cases on some targets, the remote_insert_breakpoint behaves
differently for the first breakpoint attempted, as a result of the Z0
packet support detection. The problem is that GDB modifies the address
information used as part of the detection, by passing in the address to use
to gdbarch_breakpoint_from_pc, which on some target vectors (in my case
MIPS16, although it's also conceivable for Thumb to be affected) modifies
the address.

If the Z0 packet is unknown, it drops through to memory_insert_breakpoint
passing it the modified address. This can cause a change in later
heuristics within the target support when the target tries to detect the
form of breakpoint required (e.g. 2 versus 4 byte).

You can see this in the implementation of e.g. mips_breakpoint_from_pc,
which will look at the PC first, to determine the breakpoint style to use,
not the length. Most of the times this works, but in some particular cases,
depending on particular characteristics of the symbol, it can fail to
detect mips16 addresses. Whereas it could detect them if the address had
been unmodified.

I have check-in permissions, so can commit after approval if that helps.

Jifl

2008-06-27  Jonathan Larmour  <jifl@eCosCentric.com>

	* remote.c (remote_insert_breakpoint): Ensure that if Z0
	unsupported and we fall back to memory_insert_breakpoint, we
	use the unmodified requested address.


-- 
eCosCentric Limited      http://www.eCosCentric.com/     The eCos experts
Barnwell House, Barnwell Drive, Cambridge, UK.       Tel: +44 1223 245571
Registered in England and Wales: Reg No 4422071.
------["Si fractum non sit, noli id reficere"]------       Opinions==mine

[-- Attachment #2: remotebp.z0.detect.tweak.patch --]
[-- Type: text/x-patch, Size: 1025 bytes --]

--- gdb/remote.c~	2008-06-11 13:56:36.000000000 +0100
+++ gdb/remote.c	2008-06-20 19:56:54.000000000 +0100
@@ -5250,12 +5250,13 @@ remote_insert_breakpoint (struct bp_targ
 
   if (remote_protocol_packets[PACKET_Z0].support != PACKET_DISABLE)
     {
-      CORE_ADDR addr;
+      CORE_ADDR addr = bp_tgt->placed_address;
       struct remote_state *rs;
       char *p;
+      int bpsize;
 
       gdbarch_breakpoint_from_pc
-	(current_gdbarch, &bp_tgt->placed_address, &bp_tgt->placed_size);
+	(current_gdbarch, &addr, &bpsize);
 
       rs = get_remote_state ();
       p = rs->buf;
@@ -5263,9 +5264,9 @@ remote_insert_breakpoint (struct bp_targ
       *(p++) = 'Z';
       *(p++) = '0';
       *(p++) = ',';
-      addr = (ULONGEST) remote_address_masked (bp_tgt->placed_address);
+      addr = (ULONGEST) remote_address_masked (addr);
       p += hexnumstr (p, addr);
-      sprintf (p, ",%d", bp_tgt->placed_size);
+      sprintf (p, ",%d", bpsize);
 
       putpkt (rs->buf);
       getpkt (&rs->buf, &rs->buf_size, 0);

             reply	other threads:[~2008-06-27 15:56 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-27 16:25 Jonathan Larmour [this message]
2008-06-27 16:42 ` Daniel Jacobowitz
2008-06-27 18:22   ` Jonathan Larmour
2008-06-27 18:59     ` Daniel Jacobowitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48650D79.6080502@eCosCentric.com \
    --to=jifl@ecoscentric.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox