diff options
Diffstat (limited to 'gdbserver')
-rw-r--r-- | gdbserver/ChangeLog | 65 | ||||
-rw-r--r-- | gdbserver/linux-aarch64-low.cc | 24 | ||||
-rw-r--r-- | gdbserver/linux-arm-low.cc | 20 | ||||
-rw-r--r-- | gdbserver/linux-bfin-low.cc | 2 | ||||
-rw-r--r-- | gdbserver/linux-crisv32-low.cc | 20 | ||||
-rw-r--r-- | gdbserver/linux-low.cc | 26 | ||||
-rw-r--r-- | gdbserver/linux-low.h | 15 | ||||
-rw-r--r-- | gdbserver/linux-m32r-low.cc | 2 | ||||
-rw-r--r-- | gdbserver/linux-m68k-low.cc | 2 | ||||
-rw-r--r-- | gdbserver/linux-mips-low.cc | 28 | ||||
-rw-r--r-- | gdbserver/linux-ppc-low.cc | 24 | ||||
-rw-r--r-- | gdbserver/linux-s390-low.cc | 2 | ||||
-rw-r--r-- | gdbserver/linux-sh-low.cc | 2 | ||||
-rw-r--r-- | gdbserver/linux-sparc-low.cc | 2 | ||||
-rw-r--r-- | gdbserver/linux-tic6x-low.cc | 2 | ||||
-rw-r--r-- | gdbserver/linux-tile-low.cc | 2 | ||||
-rw-r--r-- | gdbserver/linux-x86-low.cc | 20 | ||||
-rw-r--r-- | gdbserver/linux-xtensa-low.cc | 2 |
18 files changed, 172 insertions, 88 deletions
diff --git a/gdbserver/ChangeLog b/gdbserver/ChangeLog index 5e6861a..4586015 100644 --- a/gdbserver/ChangeLog +++ b/gdbserver/ChangeLog @@ -1,5 +1,70 @@ 2020-04-02 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> + Turn the 'insert_point' and 'remove_point' linux target ops into + methods of linux_process_target. + + * linux-low.h (struct linux_target_ops): Remove the ops. + (class linux_process_target) <low_insert_point> + <low_remove_point>: Declare. + * linux-low.cc (linux_process_target::low_insert_point) + (linux_process_target::low_remove_point): Define. + (linux_process_target::insert_point) + (linux_process_target::remove_point): Update for calls to + low_insert_point and low_remove_point. + * linux-x86-low.cc (class x86_target) <low_insert_point> + <low_remove_point>: Declare. + (x86_insert_point): Turn into... + (x86_target::low_insert_point): ...this. + (x86_remove_point): Turn into... + (x86_target::low_remove_point): ...this. + (the_low_target): Remove the op fields. + * linux-aarch64-low.cc (class aarch64_target) <low_insert_point> + <low_remove_point>: Declare. + (aarch64_insert_point): Turn into... + (aarch64_target::low_insert_point): ...this. + (aarch64_remove_point): Turn into... + (aarch64_target::low_remove_point): ...this. + (the_low_target): Remove the op fields. + * linux-arm-low.cc (class arm_target) <low_insert_point> + <low_remove_point>: Declare. + (arm_insert_point): Turn into... + (arm_target::low_insert_point): ...this. + (arm_remove_point): Turn into... + (arm_target::low_remove_point): ...this. + (the_low_target): Remove the op fields. + * linux-crisv32-low.cc (class crisv32_target) <low_insert_point> + <low_remove_point>: Declare. + (crisv32_insert_point): Turn into... + (crisv32_target::low_insert_point): ...this. + (crisv32_remove_point): Turn into... + (crisv32_target::low_remove_point): ...this. + (the_low_target): Remove the op fields. + * linux-mips-low.cc (class mips_target) <low_insert_point> + <low_remove_point>: Declare. + (mips_insert_point): Turn into... + (mips_target::low_insert_point): ...this. + (mips_remove_point): Turn into... + (mips_target::low_remove_point): ...this. + (the_low_target): Remove the op fields. + * linux-ppc-low.cc (class ppc_target) <low_insert_point> + <low_remove_point>: Declare. + (ppc_insert_point): Turn into... + (ppc_target::low_insert_point): ...this. + (ppc_remove_point): Turn into... + (ppc_target::low_remove_point): ...this. + (the_low_target): Remove the op fields. + * linux-bfin-low.cc (the_low_target): Remove the op fields. + * linux-m32r-low.cc (the_low_target): Ditto. + * linux-m68k-low.cc (the_low_target): Ditto. + * linux-s390-low.cc (the_low_target): Ditto. + * linux-sh-low.cc (the_low_target): Ditto. + * linux-sparc-low.cc (the_low_target): Ditto. + * linux-tic6x-low.cc (the_low_target): Ditto. + * linux-tile-low.cc (the_low_target): Ditto. + * linux-xtensa-low.cc (the_low_target): Ditto. + +2020-04-02 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> + Remove the 'supports_z_point_type' linux target op and let the concrete linux target define it by overriding the op declared in process_stratum_target. diff --git a/gdbserver/linux-aarch64-low.cc b/gdbserver/linux-aarch64-low.cc index 9727d5d..5660ec0 100644 --- a/gdbserver/linux-aarch64-low.cc +++ b/gdbserver/linux-aarch64-low.cc @@ -80,6 +80,12 @@ protected: void low_set_pc (regcache *regcache, CORE_ADDR newpc) override; bool low_breakpoint_at (CORE_ADDR pc) override; + + int low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) override; + + int low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) override; }; /* The singleton target ops object. */ @@ -308,14 +314,14 @@ aarch64_target::supports_z_point_type (char z_type) } } -/* Implementation of linux_target_ops method "insert_point". +/* Implementation of linux target ops method "low_insert_point". It actually only records the info of the to-be-inserted bp/wp; the actual insertion will happen when threads are resumed. */ -static int -aarch64_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, - int len, struct raw_breakpoint *bp) +int +aarch64_target::low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int len, raw_breakpoint *bp) { int ret; enum target_hw_bp_type targ_type; @@ -357,14 +363,14 @@ aarch64_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, return ret; } -/* Implementation of linux_target_ops method "remove_point". +/* Implementation of linux target ops method "low_remove_point". It actually only records the info of the to-be-removed bp/wp, the actual removal will be done when threads are resumed. */ -static int -aarch64_remove_point (enum raw_bkpt_type type, CORE_ADDR addr, - int len, struct raw_breakpoint *bp) +int +aarch64_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int len, raw_breakpoint *bp) { int ret; enum target_hw_bp_type targ_type; @@ -3106,8 +3112,6 @@ aarch64_supports_hardware_single_step (void) struct linux_target_ops the_low_target = { - aarch64_insert_point, - aarch64_remove_point, aarch64_stopped_by_watchpoint, aarch64_stopped_data_address, NULL, /* collect_ptrace_register */ diff --git a/gdbserver/linux-arm-low.cc b/gdbserver/linux-arm-low.cc index 2d6035c..edb8cd0 100644 --- a/gdbserver/linux-arm-low.cc +++ b/gdbserver/linux-arm-low.cc @@ -89,6 +89,12 @@ protected: std::vector<CORE_ADDR> low_get_next_pcs (regcache *regcache) override; bool low_breakpoint_at (CORE_ADDR pc) override; + + int low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) override; + + int low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) override; }; /* The singleton target ops object. */ @@ -576,9 +582,9 @@ arm_target::supports_z_point_type (char z_type) } /* Insert hardware break-/watchpoint. */ -static int -arm_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, - int len, struct raw_breakpoint *bp) +int +arm_target::low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int len, raw_breakpoint *bp) { struct process_info *proc = current_process (); struct arm_linux_hw_breakpoint p, *pts; @@ -621,9 +627,9 @@ arm_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, } /* Remove hardware break-/watchpoint. */ -static int -arm_remove_point (enum raw_bkpt_type type, CORE_ADDR addr, - int len, struct raw_breakpoint *bp) +int +arm_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int len, raw_breakpoint *bp) { struct process_info *proc = current_process (); struct arm_linux_hw_breakpoint p, *pts; @@ -1095,8 +1101,6 @@ arm_target::get_regs_info () } struct linux_target_ops the_low_target = { - arm_insert_point, - arm_remove_point, arm_stopped_by_watchpoint, arm_stopped_data_address, NULL, /* collect_ptrace_register */ diff --git a/gdbserver/linux-bfin-low.cc b/gdbserver/linux-bfin-low.cc index 5384fa8..50c1743 100644 --- a/gdbserver/linux-bfin-low.cc +++ b/gdbserver/linux-bfin-low.cc @@ -171,8 +171,6 @@ bfin_target::get_regs_info () } struct linux_target_ops the_low_target = { - NULL, /* insert_point */ - NULL, /* remove_point */ NULL, /* stopped_by_watchpoint */ NULL, /* stopped_data_address */ NULL, /* collect_ptrace_register */ diff --git a/gdbserver/linux-crisv32-low.cc b/gdbserver/linux-crisv32-low.cc index 761e4e2..4d5edc5 100644 --- a/gdbserver/linux-crisv32-low.cc +++ b/gdbserver/linux-crisv32-low.cc @@ -47,6 +47,12 @@ protected: void low_set_pc (regcache *regcache, CORE_ADDR newpc) override; bool low_breakpoint_at (CORE_ADDR pc) override; + + int low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) override; + + int low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) override; }; /* The singleton target ops object. */ @@ -193,9 +199,9 @@ crisv32_target::supports_z_point_type (char z_type) } } -static int -cris_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, - int len, struct raw_breakpoint *bp) +int +crisv32_target::low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int len, raw_breakpoint *bp) { int bp; unsigned long bp_ctrl; @@ -266,9 +272,9 @@ cris_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, return 0; } -static int -cris_remove_point (enum raw_bkpt_type type, CORE_ADDR addr, int len, - struct raw_breakpoint *bp) +int +crisv32_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int len, raw_breakpoint *bp) { int bp; unsigned long bp_ctrl; @@ -458,8 +464,6 @@ crisv32_target::get_regs_info () } struct linux_target_ops the_low_target = { - cris_insert_point, - cris_remove_point, cris_stopped_by_watchpoint, cris_stopped_data_address, NULL, /* collect_ptrace_register */ diff --git a/gdbserver/linux-low.cc b/gdbserver/linux-low.cc index 9a5c735..814c037 100644 --- a/gdbserver/linux-low.cc +++ b/gdbserver/linux-low.cc @@ -5835,11 +5835,16 @@ linux_process_target::insert_point (enum raw_bkpt_type type, CORE_ADDR addr, { if (type == raw_bkpt_type_sw) return insert_memory_breakpoint (bp); - else if (the_low_target.insert_point != NULL) - return the_low_target.insert_point (type, addr, size, bp); else - /* Unsupported (see target.h). */ - return 1; + return low_insert_point (type, addr, size, bp); +} + +int +linux_process_target::low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) +{ + /* Unsupported (see target.h). */ + return 1; } int @@ -5848,11 +5853,16 @@ linux_process_target::remove_point (enum raw_bkpt_type type, CORE_ADDR addr, { if (type == raw_bkpt_type_sw) return remove_memory_breakpoint (bp); - else if (the_low_target.remove_point != NULL) - return the_low_target.remove_point (type, addr, size, bp); else - /* Unsupported (see target.h). */ - return 1; + return low_remove_point (type, addr, size, bp); +} + +int +linux_process_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) +{ + /* Unsupported (see target.h). */ + return 1; } /* Implement the stopped_by_sw_breakpoint target_ops diff --git a/gdbserver/linux-low.h b/gdbserver/linux-low.h index c80237c..0fdd8ce 100644 --- a/gdbserver/linux-low.h +++ b/gdbserver/linux-low.h @@ -131,13 +131,6 @@ struct lwp_info; struct linux_target_ops { - /* Breakpoint and watchpoint related functions. See target.h for - comments. */ - int (*insert_point) (enum raw_bkpt_type type, CORE_ADDR addr, - int size, struct raw_breakpoint *bp); - int (*remove_point) (enum raw_bkpt_type type, CORE_ADDR addr, - int size, struct raw_breakpoint *bp); - int (*stopped_by_watchpoint) (void); CORE_ADDR (*stopped_data_address) (void); @@ -664,6 +657,14 @@ protected: /* Return true if there is a breakpoint at PC. */ virtual bool low_breakpoint_at (CORE_ADDR pc) = 0; + /* Breakpoint and watchpoint related functions. See target.h for + comments. */ + virtual int low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp); + + virtual int low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp); + /* How many bytes the PC should be decremented after a break. */ virtual int low_decr_pc_after_break (); }; diff --git a/gdbserver/linux-m32r-low.cc b/gdbserver/linux-m32r-low.cc index 2f331b4..bbafe8f 100644 --- a/gdbserver/linux-m32r-low.cc +++ b/gdbserver/linux-m32r-low.cc @@ -161,8 +161,6 @@ m32r_target::get_regs_info () } struct linux_target_ops the_low_target = { - NULL, /* insert_point */ - NULL, /* remove_point */ NULL, /* stopped_by_watchpoint */ NULL, /* stopped_data_address */ NULL, /* collect_ptrace_register */ diff --git a/gdbserver/linux-m68k-low.cc b/gdbserver/linux-m68k-low.cc index 08a8f16..fd2d601 100644 --- a/gdbserver/linux-m68k-low.cc +++ b/gdbserver/linux-m68k-low.cc @@ -265,8 +265,6 @@ m68k_supports_hardware_single_step (void) } struct linux_target_ops the_low_target = { - NULL, /* insert_point */ - NULL, /* remove_point */ NULL, /* stopped_by_watchpoint */ NULL, /* stopped_data_address */ NULL, /* collect_ptrace_register */ diff --git a/gdbserver/linux-mips-low.cc b/gdbserver/linux-mips-low.cc index 84ad0a0..5696af6 100644 --- a/gdbserver/linux-mips-low.cc +++ b/gdbserver/linux-mips-low.cc @@ -54,6 +54,12 @@ protected: void low_set_pc (regcache *regcache, CORE_ADDR newpc) override; bool low_breakpoint_at (CORE_ADDR pc) override; + + int low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) override; + + int low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) override; }; /* The singleton target ops object. */ @@ -508,12 +514,12 @@ mips_target::supports_z_point_type (char z_type) } } -/* This is the implementation of linux_target_ops method - insert_point. */ +/* This is the implementation of linux target ops method + low_insert_point. */ -static int -mips_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, - int len, struct raw_breakpoint *bp) +int +mips_target::low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int len, raw_breakpoint *bp) { struct process_info *proc = current_process (); struct arch_process_info *priv = proc->priv->arch_private; @@ -553,12 +559,12 @@ mips_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, return 0; } -/* This is the implementation of linux_target_ops method - remove_point. */ +/* This is the implementation of linux target ops method + low_remove_point. */ -static int -mips_remove_point (enum raw_bkpt_type type, CORE_ADDR addr, - int len, struct raw_breakpoint *bp) +int +mips_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int len, raw_breakpoint *bp) { struct process_info *proc = current_process (); struct arch_process_info *priv = proc->priv->arch_private; @@ -970,8 +976,6 @@ mips_target::get_regs_info () } struct linux_target_ops the_low_target = { - mips_insert_point, - mips_remove_point, mips_stopped_by_watchpoint, mips_stopped_data_address, mips_collect_ptrace_register, diff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc index 6874f06..d285515 100644 --- a/gdbserver/linux-ppc-low.cc +++ b/gdbserver/linux-ppc-low.cc @@ -71,6 +71,12 @@ protected: void low_set_pc (regcache *regcache, CORE_ADDR newpc) override; bool low_breakpoint_at (CORE_ADDR pc) override; + + int low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) override; + + int low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) override; }; /* The singleton target ops object. */ @@ -346,12 +352,12 @@ ppc_target::supports_z_point_type (char z_type) } } -/* Implement insert_point target-ops. +/* Implement the low_insert_point linux target op. Returns 0 on success, -1 on failure and 1 on unsupported. */ -static int -ppc_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, - int size, struct raw_breakpoint *bp) +int +ppc_target::low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) { switch (type) { @@ -367,12 +373,12 @@ ppc_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, } } -/* Implement remove_point target-ops. +/* Implement the low_remove_point linux target op. Returns 0 on success, -1 on failure and 1 on unsupported. */ -static int -ppc_remove_point (enum raw_bkpt_type type, CORE_ADDR addr, - int size, struct raw_breakpoint *bp) +int +ppc_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) { switch (type) { @@ -3410,8 +3416,6 @@ ppc_get_ipa_tdesc_idx (void) } struct linux_target_ops the_low_target = { - ppc_insert_point, - ppc_remove_point, NULL, NULL, ppc_collect_ptrace_register, diff --git a/gdbserver/linux-s390-low.cc b/gdbserver/linux-s390-low.cc index 3bfa675..36471fb 100644 --- a/gdbserver/linux-s390-low.cc +++ b/gdbserver/linux-s390-low.cc @@ -2840,8 +2840,6 @@ s390_emit_ops (void) struct linux_target_ops the_low_target = { NULL, NULL, - NULL, - NULL, s390_collect_ptrace_register, s390_supply_ptrace_register, NULL, /* siginfo_fixup */ diff --git a/gdbserver/linux-sh-low.cc b/gdbserver/linux-sh-low.cc index 5723b4f..c4af7de 100644 --- a/gdbserver/linux-sh-low.cc +++ b/gdbserver/linux-sh-low.cc @@ -192,8 +192,6 @@ sh_target::low_arch_setup () } struct linux_target_ops the_low_target = { - NULL, /* insert_point */ - NULL, /* remove_point */ NULL, /* stopped_by_watchpoint */ NULL, /* stopped_data_address */ NULL, /* collect_ptrace_register */ diff --git a/gdbserver/linux-sparc-low.cc b/gdbserver/linux-sparc-low.cc index 46133b5..0380ced 100644 --- a/gdbserver/linux-sparc-low.cc +++ b/gdbserver/linux-sparc-low.cc @@ -341,7 +341,7 @@ sparc_target::get_regs_info () } struct linux_target_ops the_low_target = { - NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL }; diff --git a/gdbserver/linux-tic6x-low.cc b/gdbserver/linux-tic6x-low.cc index 30f880a..e6f2203 100644 --- a/gdbserver/linux-tic6x-low.cc +++ b/gdbserver/linux-tic6x-low.cc @@ -423,8 +423,6 @@ tic6x_target::get_regs_info () } struct linux_target_ops the_low_target = { - NULL, /* insert_point */ - NULL, /* remove_point */ NULL, /* stopped_by_watchpoint */ NULL, /* stopped_data_address */ NULL, /* collect_ptrace_register */ diff --git a/gdbserver/linux-tile-low.cc b/gdbserver/linux-tile-low.cc index 73f3eb9..f9c5460 100644 --- a/gdbserver/linux-tile-low.cc +++ b/gdbserver/linux-tile-low.cc @@ -224,8 +224,6 @@ tile_supports_hardware_single_step (void) struct linux_target_ops the_low_target = { - NULL, /* insert_point */ - NULL, /* remove_point */ NULL, /* stopped_by_watchpoint */ NULL, /* stopped_data_address */ NULL, /* collect_ptrace_register */ diff --git a/gdbserver/linux-x86-low.cc b/gdbserver/linux-x86-low.cc index d522874..e6566a1 100644 --- a/gdbserver/linux-x86-low.cc +++ b/gdbserver/linux-x86-low.cc @@ -127,6 +127,12 @@ protected: int low_decr_pc_after_break () override; bool low_breakpoint_at (CORE_ADDR pc) override; + + int low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) override; + + int low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) override; }; /* The singleton target ops object. */ @@ -604,9 +610,9 @@ x86_target::supports_z_point_type (char z_type) } } -static int -x86_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, - int size, struct raw_breakpoint *bp) +int +x86_target::low_insert_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) { struct process_info *proc = current_process (); @@ -630,9 +636,9 @@ x86_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, } } -static int -x86_remove_point (enum raw_bkpt_type type, CORE_ADDR addr, - int size, struct raw_breakpoint *bp) +int +x86_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) { struct process_info *proc = current_process (); @@ -2912,8 +2918,6 @@ x86_get_ipa_tdesc_idx (void) struct linux_target_ops the_low_target = { - x86_insert_point, - x86_remove_point, x86_stopped_by_watchpoint, x86_stopped_data_address, /* collect_ptrace_register/supply_ptrace_register are not needed in the diff --git a/gdbserver/linux-xtensa-low.cc b/gdbserver/linux-xtensa-low.cc index e1618d1..a7023f4 100644 --- a/gdbserver/linux-xtensa-low.cc +++ b/gdbserver/linux-xtensa-low.cc @@ -329,8 +329,6 @@ xtensa_target::get_regs_info () } struct linux_target_ops the_low_target = { - NULL, /* insert_point */ - NULL, /* remove_point */ NULL, /* stopped_by_watchpoint */ NULL, /* stopped_data_address */ NULL, /* collect_ptrace_register */ |