From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out199-5.us.a.mail.aliyun.com (out199-5.us.a.mail.aliyun.com [47.90.199.5]) by sourceware.org (Postfix) with ESMTPS id 6BD85383CCE5 for ; Wed, 31 Aug 2022 11:49:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6BD85383CCE5 X-Alimail-AntiSpam: AC=PASS; BC=-1|-1; BR=01201311R591e4; CH=green; DM=||false|; DS=||; FP=0|-1|-1|-1|0|-1|-1|-1; HT=ay29a033018045170; MF=jiangshuai_li@linux.alibaba.com; NM=1; PH=DS; RN=2; SR=0; TI=SMTPD_---0VNr2ouZ_1661946559; Received: from lijsh-VirtualBox.hz.ali.com(mailfrom:jiangshuai_li@linux.alibaba.com fp:SMTPD_---0VNr2ouZ_1661946559) by smtp.aliyun-inc.com; Wed, 31 Aug 2022 19:49:20 +0800 From: Jiangshuai Li To: gdb-patches@sourceware.org Cc: Jiangshuai Li Subject: [PATCH] gdb/csky rm csky_memory_insert/remove_breakpoint Date: Wed, 31 Aug 2022 19:49:18 +0800 Message-Id: <20220831114918.8129-1-jiangshuai_li@linux.alibaba.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-21.3 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY, USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Aug 2022 11:49:25 -0000 All the types of breakpoints and watchpoints are inserted or removed by the gdb stub, these two functions are no longer needed. --- gdb/csky-tdep.c | 201 ------------------------------------------------ 1 file changed, 201 deletions(-) diff --git a/gdb/csky-tdep.c b/gdb/csky-tdep.c index ba53c1b10ca..4db88696270 100644 --- a/gdb/csky-tdep.c +++ b/gdb/csky-tdep.c @@ -2016,201 +2016,6 @@ csky_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size) } } -/* Implement the memory_insert_breakpoint gdbarch method. */ - -static int -csky_memory_insert_breakpoint (struct gdbarch *gdbarch, - struct bp_target_info *bp_tgt) -{ - int val; - const unsigned char *bp; - gdb_byte bp_write_record1[] = { 0, 0, 0, 0 }; - gdb_byte bp_write_record2[] = { 0, 0, 0, 0 }; - gdb_byte bp_record[] = { 0, 0, 0, 0 }; - - /* Sanity-check bp_address. */ - if (bp_tgt->reqstd_address % 2) - warning (_("Invalid breakpoint address 0x%x is an odd number."), - (unsigned int) bp_tgt->reqstd_address); - scoped_restore restore_memory - = make_scoped_restore_show_memory_breakpoints (1); - - /* Determine appropriate breakpoint_kind for this address. */ - bp_tgt->kind = csky_breakpoint_kind_from_pc (gdbarch, - &bp_tgt->reqstd_address); - - /* Save the memory contents. */ - bp_tgt->shadow_len = bp_tgt->kind; - - /* Fill bp_tgt->placed_address. */ - bp_tgt->placed_address = bp_tgt->reqstd_address; - - if (bp_tgt->kind == CSKY_INSN_SIZE16) - { - if ((bp_tgt->reqstd_address % 4) == 0) - { - /* Read two bytes. */ - val = target_read_memory (bp_tgt->reqstd_address, - bp_tgt->shadow_contents, 2); - if (val) - return val; - - /* Read two bytes. */ - val = target_read_memory (bp_tgt->reqstd_address + 2, - bp_record, 2); - if (val) - return val; - - /* Write the breakpoint. */ - bp_write_record1[2] = bp_record[0]; - bp_write_record1[3] = bp_record[1]; - bp = bp_write_record1; - val = target_write_raw_memory (bp_tgt->reqstd_address, bp, - CSKY_WR_BKPT_MODE); - } - else - { - val = target_read_memory (bp_tgt->reqstd_address, - bp_tgt->shadow_contents, 2); - if (val) - return val; - - val = target_read_memory (bp_tgt->reqstd_address - 2, - bp_record, 2); - if (val) - return val; - - /* Write the breakpoint. */ - bp_write_record1[0] = bp_record[0]; - bp_write_record1[1] = bp_record[1]; - bp = bp_write_record1; - val = target_write_raw_memory (bp_tgt->reqstd_address - 2, - bp, CSKY_WR_BKPT_MODE); - } - } - else - { - if (bp_tgt->placed_address % 4 == 0) - { - val = target_read_memory (bp_tgt->reqstd_address, - bp_tgt->shadow_contents, - CSKY_WR_BKPT_MODE); - if (val) - return val; - - /* Write the breakpoint. */ - bp = bp_write_record1; - val = target_write_raw_memory (bp_tgt->reqstd_address, - bp, CSKY_WR_BKPT_MODE); - } - else - { - val = target_read_memory (bp_tgt->reqstd_address, - bp_tgt->shadow_contents, - CSKY_WR_BKPT_MODE); - if (val) - return val; - - val = target_read_memory (bp_tgt->reqstd_address - 2, - bp_record, 2); - if (val) - return val; - - val = target_read_memory (bp_tgt->reqstd_address + 4, - bp_record + 2, 2); - if (val) - return val; - - bp_write_record1[0] = bp_record[0]; - bp_write_record1[1] = bp_record[1]; - bp_write_record2[2] = bp_record[2]; - bp_write_record2[3] = bp_record[3]; - - /* Write the breakpoint. */ - bp = bp_write_record1; - val = target_write_raw_memory (bp_tgt->reqstd_address - 2, bp, - CSKY_WR_BKPT_MODE); - if (val) - return val; - - /* Write the breakpoint. */ - bp = bp_write_record2; - val = target_write_raw_memory (bp_tgt->reqstd_address + 2, bp, - CSKY_WR_BKPT_MODE); - } - } - return val; -} - -/* Restore the breakpoint shadow_contents to the target. */ - -static int -csky_memory_remove_breakpoint (struct gdbarch *gdbarch, - struct bp_target_info *bp_tgt) -{ - int val; - gdb_byte bp_record[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; - /* Different for shadow_len 2 or 4. */ - if (bp_tgt->shadow_len == 2) - { - /* Do word-sized writes on word-aligned boundaries and read - padding bytes as necessary. */ - if (bp_tgt->reqstd_address % 4 == 0) - { - val = target_read_memory (bp_tgt->reqstd_address + 2, - bp_record + 2, 2); - if (val) - return val; - bp_record[0] = bp_tgt->shadow_contents[0]; - bp_record[1] = bp_tgt->shadow_contents[1]; - return target_write_raw_memory (bp_tgt->reqstd_address, - bp_record, CSKY_WR_BKPT_MODE); - } - else - { - val = target_read_memory (bp_tgt->reqstd_address - 2, - bp_record, 2); - if (val) - return val; - bp_record[2] = bp_tgt->shadow_contents[0]; - bp_record[3] = bp_tgt->shadow_contents[1]; - return target_write_raw_memory (bp_tgt->reqstd_address - 2, - bp_record, CSKY_WR_BKPT_MODE); - } - } - else - { - /* Do word-sized writes on word-aligned boundaries and read - padding bytes as necessary. */ - if (bp_tgt->placed_address % 4 == 0) - { - return target_write_raw_memory (bp_tgt->reqstd_address, - bp_tgt->shadow_contents, - CSKY_WR_BKPT_MODE); - } - else - { - val = target_read_memory (bp_tgt->reqstd_address - 2, - bp_record, 2); - if (val) - return val; - val = target_read_memory (bp_tgt->reqstd_address + 4, - bp_record+6, 2); - if (val) - return val; - - bp_record[2] = bp_tgt->shadow_contents[0]; - bp_record[3] = bp_tgt->shadow_contents[1]; - bp_record[4] = bp_tgt->shadow_contents[2]; - bp_record[5] = bp_tgt->shadow_contents[3]; - - return target_write_raw_memory (bp_tgt->reqstd_address - 2, - bp_record, - CSKY_WR_BKPT_MODE * 2); - } - } -} - /* Determine link register type. */ static lr_type_t @@ -3012,12 +2817,6 @@ csky_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) frame_unwind_append_unwinder (gdbarch, &csky_stub_unwind); frame_unwind_append_unwinder (gdbarch, &csky_unwind_cache); - /* Breakpoints. */ - set_gdbarch_memory_insert_breakpoint (gdbarch, - csky_memory_insert_breakpoint); - set_gdbarch_memory_remove_breakpoint (gdbarch, - csky_memory_remove_breakpoint); - /* Hook in ABI-specific overrides, if they have been registered. */ gdbarch_init_osabi (info, gdbarch); -- 2.25.1