aboutsummaryrefslogtreecommitdiff
path: root/gdb/csky-tdep.c
diff options
context:
space:
mode:
authorJiangshuai Li <jiangshuai_li@linux.alibaba.com>2022-09-13 14:21:55 +0800
committerJiangshuai Li <jiangshuai_li@linux.alibaba.com>2022-09-13 14:21:55 +0800
commitc0828c5a52c3107743f64c57ca6cdfa9ed156114 (patch)
treed09dd4d469a3e983750aa5eb35837f617129018a /gdb/csky-tdep.c
parentd354e0c8e7d333d2ec1796f8ce4216e892a4c714 (diff)
downloadgdb-c0828c5a52c3107743f64c57ca6cdfa9ed156114.zip
gdb-c0828c5a52c3107743f64c57ca6cdfa9ed156114.tar.gz
gdb-c0828c5a52c3107743f64c57ca6cdfa9ed156114.tar.bz2
gdb/csky rm csky_memory_insert/remove_breakpoint
Software breakpoints are inserted or removed by the gdb stub via remote protocol, these two functions are no longer needed.
Diffstat (limited to 'gdb/csky-tdep.c')
-rw-r--r--gdb/csky-tdep.c201
1 files changed, 0 insertions, 201 deletions
diff --git a/gdb/csky-tdep.c b/gdb/csky-tdep.c
index 3cd7a77..aeb2fab 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
@@ -3062,12 +2867,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);