[v2] PR breakpoints/21886: mem-break: Fix breakpoint insertion location

Message ID alpine.DEB.2.00.1708041500090.17596@tp.orcam.me.uk
State Committed
Headers

Commit Message

Maciej W. Rozycki Aug. 4, 2017, 2:12 p.m. UTC
  Fix a commit cd6c3b4ffc4e ("New gdbarch methods breakpoint_kind_from_pc 
and sw_breakpoint_from_kind") regression and restore the use of 
`->placed_address' rather than `->reqstd_address' as the location for a 
memory breakpoint to be inserted at.  Previously 
`gdbarch_breakpoint_from_pc' was used that made that adjustment in 
`default_memory_insert_breakpoint' from the preinitialized value, 
however with the said commit that call is gone, so the passed 
`->placed_address' has to be used for the initialization.

The regression manifests itself as the inability to debug any MIPS/Linux 
compressed ISA dynamic executable as GDB corrupts the dynamic loader 
with one of its implicit breakpoints, causing the program to crash, as 
seen for example with the `mips-linux-gnu' target, o32 ABI, MIPS16 code, 
and the gdb.base/advance.exp test case:

(gdb) continue
Continuing.

Program received signal SIGBUS, Bus error.
_dl_debug_initialize (ldbase=0, ns=0) at dl-debug.c:51
51	    r = &_r_debug;
(gdb) FAIL: gdb.base/advance.exp: Can't run to main

	gdb/
	PR breakpoints/21886
	* mem-break.c (default_memory_insert_breakpoint): Use 
	`->placed_address' rather than `->reqstd_address' for the 
	breakpoint location.
---
On Fri, 4 Aug 2017, Yao Qi wrote:

> "Maciej W. Rozycki" <macro@imgtec.com> writes:
> 
> > Fix a commit cd6c3b4ffc4e ("New gdbarch methods breakpoint_kind_from_pc 
> > and sw_breakpoint_from_kind") regression and restore the use of 
> > ->placed_size rather than ->reqstd_address as the location for a memory 
> 
> s/placed_size/placed_address/

 Oh, I see you've noticed it too! :)

> The patch looks good to me, but please give me two or three days to run
> the tests on an armv7 board.  The board is being used for other tests,
> and I'll start the regression test on Monday next week.

 Sure.  Here's v2 with an updated description.  No changes to the patch 
itself.

  Maciej

Changes from v1:

- Description corrected, s/->placed_size/->placed_address/,

- Quotation made consistent across the description, e.g.
  `->reqstd_address' vs previous ->reqstd_address,

- PR annotation added.

---
 gdb/mem-break.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

gdb-mem-break-placed-address.diff
  

Comments

Yao Qi Aug. 7, 2017, 3:34 p.m. UTC | #1
"Maciej W. Rozycki" <macro@imgtec.com> writes:

>> The patch looks good to me, but please give me two or three days to run
>> the tests on an armv7 board.  The board is being used for other tests,
>> and I'll start the regression test on Monday next week.
>
>  Sure.  Here's v2 with an updated description.  No changes to the patch 
> itself.

My test is done.  No regression.  Could you please push it in?
  
Maciej W. Rozycki Aug. 7, 2017, 4:05 p.m. UTC | #2
On Mon, 7 Aug 2017, Yao Qi wrote:

> >  Sure.  Here's v2 with an updated description.  No changes to the patch 
> > itself.
> 
> My test is done.  No regression.  Could you please push it in?

 Thanks for your review and testing.  I have committed it to master now.  
How about the 8.0 branch?

  Maciej
  
Yao Qi Aug. 9, 2017, 7:44 a.m. UTC | #3
"Maciej W. Rozycki" <macro@imgtec.com> writes:

>  Thanks for your review and testing.  I have committed it to master now.  
> How about the 8.0 branch?

Yes, please.  Are you able to edit page
https://sourceware.org/gdb/wiki/GDB_8.0_Release and add this PR in 8.0.1
release?  If you don't have the permission to edit, I can do it for you.
  
Maciej W. Rozycki Aug. 11, 2017, 2:31 p.m. UTC | #4
On Wed, 9 Aug 2017, Yao Qi wrote:

> >  Thanks for your review and testing.  I have committed it to master now.  
> > How about the 8.0 branch?
> 
> Yes, please.  Are you able to edit page
> https://sourceware.org/gdb/wiki/GDB_8.0_Release and add this PR in 8.0.1
> release?  If you don't have the permission to edit, I can do it for you.

 I have backported the change now and, after a hiccup, managed to create a 
wiki account.  However as you suspected, I seem unable to edit the page as 
it shows as immutable, at least to me.  Would you be able to do anything 
about my editing permission?  FWIW I have no issues with the sibling GLIBC 
wiki.  I'm user `macro' in both wikis.

 Thanks for your review.

  Maciej
  
Yao Qi Aug. 11, 2017, 3:12 p.m. UTC | #5
On 17-08-11 15:31:25, Maciej W. Rozycki wrote:
> On Wed, 9 Aug 2017, Yao Qi wrote:
> 
> > >  Thanks for your review and testing.  I have committed it to master now.  
> > > How about the 8.0 branch?
> > 
> > Yes, please.  Are you able to edit page
> > https://sourceware.org/gdb/wiki/GDB_8.0_Release and add this PR in 8.0.1
> > release?  If you don't have the permission to edit, I can do it for you.
> 
>  I have backported the change now and, after a hiccup, managed to create a 
> wiki account.  However as you suspected, I seem unable to edit the page as 
> it shows as immutable, at least to me.  Would you be able to do anything 
> about my editing permission?  FWIW I have no issues with the sibling GLIBC 
> wiki.  I'm user `macro' in both wikis.

AFAIK, users on https://sourceware.org/gdb/wiki/EditorGroup have the
permission to edit the wiki.  I add `macro' in the list.  Does it work?
  
Maciej W. Rozycki Aug. 11, 2017, 4:14 p.m. UTC | #6
On Fri, 11 Aug 2017, Yao Qi wrote:

> >  I have backported the change now and, after a hiccup, managed to create a 
> > wiki account.  However as you suspected, I seem unable to edit the page as 
> > it shows as immutable, at least to me.  Would you be able to do anything 
> > about my editing permission?  FWIW I have no issues with the sibling GLIBC 
> > wiki.  I'm user `macro' in both wikis.
> 
> AFAIK, users on https://sourceware.org/gdb/wiki/EditorGroup have the
> permission to edit the wiki.  I add `macro' in the list.  Does it work?

 It does, thank you!  Page updated.

 BTW, PR 21555 still has to be closed it would seem.  I'm not sure if it's 
bugzilla or my browser (or myself), but I had troubles closing PR 21886 as 
well, as the intended status flipped from RESOLVED to WAITING as I was 
typing in the comment.

  Maciej
  

Patch

Index: binutils/gdb/mem-break.c
===================================================================
--- binutils.orig/gdb/mem-break.c	2017-07-30 22:45:34.000000000 +0100
+++ binutils/gdb/mem-break.c	2017-07-30 23:41:28.595612206 +0100
@@ -37,7 +37,7 @@  int
 default_memory_insert_breakpoint (struct gdbarch *gdbarch,
 				  struct bp_target_info *bp_tgt)
 {
-  CORE_ADDR addr = bp_tgt->reqstd_address;
+  CORE_ADDR addr = bp_tgt->placed_address;
   const unsigned char *bp;
   gdb_byte *readbuf;
   int bplen;