From patchwork Fri Aug 4 14:12:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Maciej W. Rozycki" X-Patchwork-Id: 21920 Received: (qmail 88970 invoked by alias); 4 Aug 2017 14:13:22 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 86572 invoked by uid 89); 4 Aug 2017 14:13:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-11.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 spammy=Quotation X-HELO: mailapp01.imgtec.com Received: from mailapp01.imgtec.com (HELO mailapp01.imgtec.com) (195.59.15.196) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 04 Aug 2017 14:13:18 +0000 Received: from HHMAIL01.hh.imgtec.org (unknown [10.100.10.19]) by Forcepoint Email with ESMTPS id 46D7CBBC3B789; Fri, 4 Aug 2017 15:13:12 +0100 (IST) Received: from [10.20.78.21] (10.20.78.21) by HHMAIL01.hh.imgtec.org (10.100.10.21) with Microsoft SMTP Server id 14.3.294.0; Fri, 4 Aug 2017 15:13:11 +0100 Date: Fri, 4 Aug 2017 15:12:27 +0100 From: "Maciej W. Rozycki" To: Yao Qi CC: , Yao Qi , Joel Brobecker Subject: [PATCH v2] PR breakpoints/21886: mem-break: Fix breakpoint insertion location In-Reply-To: <86zibf1n5e.fsf@gmail.com> Message-ID: References: <86zibf1n5e.fsf@gmail.com> User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) MIME-Version: 1.0 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" 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 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;