target: get_gdb_arch() accepts target via const pointer
The function in question does not need to change target state. It is a target-type-dependant function, however, IMHO, it is safe to assume that any target type would not need to change type-independant state of a target to figure out the arch. Change-Id: I607cb3aee6529cd5a97bc1200a0226cf6ef43caf Signed-off-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com> Reviewed-on: https://review.openocd.org/c/openocd/+/8093 Tested-by: jenkins Reviewed-by: Jan Matyas <jan.matyas@codasip.com> Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
parent
67675323e1
commit
1b0ffa97ea
|
@ -257,7 +257,7 @@ struct arm {
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Convert target handle to generic ARM target state handle. */
|
/** Convert target handle to generic ARM target state handle. */
|
||||||
static inline struct arm *target_to_arm(struct target *target)
|
static inline struct arm *target_to_arm(const struct target *target)
|
||||||
{
|
{
|
||||||
assert(target);
|
assert(target);
|
||||||
return target->arch_info;
|
return target->arch_info;
|
||||||
|
@ -293,11 +293,11 @@ extern const struct command_registration arm_command_handlers[];
|
||||||
extern const struct command_registration arm_all_profiles_command_handlers[];
|
extern const struct command_registration arm_all_profiles_command_handlers[];
|
||||||
|
|
||||||
int arm_arch_state(struct target *target);
|
int arm_arch_state(struct target *target);
|
||||||
const char *arm_get_gdb_arch(struct target *target);
|
const char *arm_get_gdb_arch(const struct target *target);
|
||||||
int arm_get_gdb_reg_list(struct target *target,
|
int arm_get_gdb_reg_list(struct target *target,
|
||||||
struct reg **reg_list[], int *reg_list_size,
|
struct reg **reg_list[], int *reg_list_size,
|
||||||
enum target_register_class reg_class);
|
enum target_register_class reg_class);
|
||||||
const char *armv8_get_gdb_arch(struct target *target);
|
const char *armv8_get_gdb_arch(const struct target *target);
|
||||||
int armv8_get_gdb_reg_list(struct target *target,
|
int armv8_get_gdb_reg_list(struct target *target,
|
||||||
struct reg **reg_list[], int *reg_list_size,
|
struct reg **reg_list[], int *reg_list_size,
|
||||||
enum target_register_class reg_class);
|
enum target_register_class reg_class);
|
||||||
|
|
|
@ -1264,7 +1264,7 @@ const struct command_registration arm_command_handlers[] = {
|
||||||
* same way as a gdb for arm. This can be changed later on. User can still
|
* same way as a gdb for arm. This can be changed later on. User can still
|
||||||
* set the specific architecture variant with the gdb command.
|
* set the specific architecture variant with the gdb command.
|
||||||
*/
|
*/
|
||||||
const char *arm_get_gdb_arch(struct target *target)
|
const char *arm_get_gdb_arch(const struct target *target)
|
||||||
{
|
{
|
||||||
return "arm";
|
return "arm";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1865,7 +1865,7 @@ const struct command_registration armv8_command_handlers[] = {
|
||||||
COMMAND_REGISTRATION_DONE
|
COMMAND_REGISTRATION_DONE
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *armv8_get_gdb_arch(struct target *target)
|
const char *armv8_get_gdb_arch(const struct target *target)
|
||||||
{
|
{
|
||||||
struct arm *arm = target_to_arm(target);
|
struct arm *arm = target_to_arm(target);
|
||||||
return arm->core_state == ARM_STATE_AARCH64 ? "aarch64" : "arm";
|
return arm->core_state == ARM_STATE_AARCH64 ? "aarch64" : "arm";
|
||||||
|
|
|
@ -1248,7 +1248,7 @@ static int esirisc_arch_state(struct target *target)
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *esirisc_get_gdb_arch(struct target *target)
|
static const char *esirisc_get_gdb_arch(const struct target *target)
|
||||||
{
|
{
|
||||||
struct esirisc_common *esirisc = target_to_esirisc(target);
|
struct esirisc_common *esirisc = target_to_esirisc(target);
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,7 @@ struct esirisc_reg {
|
||||||
int (*write)(struct reg *reg);
|
int (*write)(struct reg *reg);
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline struct esirisc_common *target_to_esirisc(struct target *target)
|
static inline struct esirisc_common *target_to_esirisc(const struct target *target)
|
||||||
{
|
{
|
||||||
return (struct esirisc_common *)target->arch_info;
|
return (struct esirisc_common *)target->arch_info;
|
||||||
}
|
}
|
||||||
|
|
|
@ -182,7 +182,7 @@ static struct reg_arch_type mem_ap_reg_arch_type = {
|
||||||
.set = mem_ap_reg_set,
|
.set = mem_ap_reg_set,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *mem_ap_get_gdb_arch(struct target *target)
|
static const char *mem_ap_get_gdb_arch(const struct target *target)
|
||||||
{
|
{
|
||||||
return "arm";
|
return "arm";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1744,7 +1744,7 @@ static int riscv_write_memory(struct target *target, target_addr_t address,
|
||||||
return tt->write_memory(target, address, size, count, buffer);
|
return tt->write_memory(target, address, size, count, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *riscv_get_gdb_arch(struct target *target)
|
static const char *riscv_get_gdb_arch(const struct target *target)
|
||||||
{
|
{
|
||||||
switch (riscv_xlen(target)) {
|
switch (riscv_xlen(target)) {
|
||||||
case 32:
|
case 32:
|
||||||
|
|
|
@ -1158,7 +1158,7 @@ static int stm8_write_core_reg(struct target *target, unsigned int num)
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *stm8_get_gdb_arch(struct target *target)
|
static const char *stm8_get_gdb_arch(const struct target *target)
|
||||||
{
|
{
|
||||||
return "stm8";
|
return "stm8";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1358,7 +1358,7 @@ int target_hit_watchpoint(struct target *target,
|
||||||
return target->type->hit_watchpoint(target, hit_watchpoint);
|
return target->type->hit_watchpoint(target, hit_watchpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *target_get_gdb_arch(struct target *target)
|
const char *target_get_gdb_arch(const struct target *target)
|
||||||
{
|
{
|
||||||
if (!target->type->get_gdb_arch)
|
if (!target->type->get_gdb_arch)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -501,7 +501,7 @@ int target_hit_watchpoint(struct target *target,
|
||||||
*
|
*
|
||||||
* This routine is a wrapper for target->type->get_gdb_arch.
|
* This routine is a wrapper for target->type->get_gdb_arch.
|
||||||
*/
|
*/
|
||||||
const char *target_get_gdb_arch(struct target *target);
|
const char *target_get_gdb_arch(const struct target *target);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Obtain the registers for GDB.
|
* Obtain the registers for GDB.
|
||||||
|
|
|
@ -83,7 +83,7 @@ struct target_type {
|
||||||
* if dynamic allocation is used for this value, it must be managed by
|
* if dynamic allocation is used for this value, it must be managed by
|
||||||
* the target, ideally by caching the result for subsequent calls.
|
* the target, ideally by caching the result for subsequent calls.
|
||||||
*/
|
*/
|
||||||
const char *(*get_gdb_arch)(struct target *target);
|
const char *(*get_gdb_arch)(const struct target *target);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Target register access for GDB. Do @b not call this function
|
* Target register access for GDB. Do @b not call this function
|
||||||
|
|
|
@ -3442,7 +3442,7 @@ void xtensa_target_deinit(struct target *target)
|
||||||
free(xtensa->core_config);
|
free(xtensa->core_config);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *xtensa_get_gdb_arch(struct target *target)
|
const char *xtensa_get_gdb_arch(const struct target *target)
|
||||||
{
|
{
|
||||||
return "xtensa";
|
return "xtensa";
|
||||||
}
|
}
|
||||||
|
|
|
@ -422,7 +422,7 @@ int xtensa_run_algorithm(struct target *target,
|
||||||
target_addr_t entry_point, target_addr_t exit_point,
|
target_addr_t entry_point, target_addr_t exit_point,
|
||||||
unsigned int timeout_ms, void *arch_info);
|
unsigned int timeout_ms, void *arch_info);
|
||||||
void xtensa_set_permissive_mode(struct target *target, bool state);
|
void xtensa_set_permissive_mode(struct target *target, bool state);
|
||||||
const char *xtensa_get_gdb_arch(struct target *target);
|
const char *xtensa_get_gdb_arch(const struct target *target);
|
||||||
int xtensa_gdb_query_custom(struct target *target, const char *packet, char **response_p);
|
int xtensa_gdb_query_custom(struct target *target, const char *packet, char **response_p);
|
||||||
|
|
||||||
COMMAND_HELPER(xtensa_cmd_xtdef_do, struct xtensa *xtensa);
|
COMMAND_HELPER(xtensa_cmd_xtdef_do, struct xtensa *xtensa);
|
||||||
|
|
Loading…
Reference in New Issue