mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-29 02:20:51 +00:00
Arm: Add read_description read funcs and use in GDB
Switch the Arm target to get target descriptions via arm_read_description and aarch32_read_description, in the same style as other feature targets. Add an enum to specify the different types - this will also be of use to gdbserver in a later patch. Under the hood return the same existing pre-feature target descriptions. gdb/ChangeLog: * Makefile.in: Add new files. * aarch32-tdep.c: New file. * aarch32-tdep.h: New file. * aarch64-linux-nat.c (aarch64_linux_nat_target::read_description): Call aarch32_read_description. * arch/aarch32.c: New file. * arch/aarch32.h: New file. * arch/arm.c (arm_create_target_description) (arm_create_mprofile_target_description): New function. * arch/arm.h (arm_fp_type, arm_m_profile_type): New enum. (arm_create_target_description) (arm_create_mprofile_target_description): New declaration. * arm-fbsd-tdep.c (arm_fbsd_read_description_auxv): Call read_description functions. * arm-linux-nat.c (arm_linux_nat_target::read_description): Likewise. * arm-linux-tdep.c (arm_linux_core_read_description): Likewise. * arm-tdep.c (tdesc_arm_list): New variable. (arm_register_g_packet_guesses): Call create description functions. (arm_read_description) (arm_read_mprofile_description): New function. * arm-tdep.h (arm_read_description) (arm_read_mprofile_description): Add declaration. * configure.tgt: Add new files.
This commit is contained in:
@@ -21,6 +21,17 @@
|
||||
#include "gdbsupport/common-regcache.h"
|
||||
#include "arm.h"
|
||||
|
||||
extern struct target_desc *tdesc_arm_with_vfpv2;
|
||||
extern struct target_desc *tdesc_arm_with_vfpv3;
|
||||
extern struct target_desc *tdesc_arm_with_iwmmxt;
|
||||
|
||||
/* Temporary ifdef. Will be removed when target descriptions are switched. */
|
||||
#ifndef GDBSERVER
|
||||
extern struct target_desc *tdesc_arm_with_m;
|
||||
extern struct target_desc *tdesc_arm_with_m_vfp_d16;
|
||||
extern struct target_desc *tdesc_arm_with_m_fpa_layout;
|
||||
#endif
|
||||
|
||||
/* See arm.h. */
|
||||
|
||||
int
|
||||
@@ -372,3 +383,52 @@ shifted_reg_val (struct regcache *regcache, unsigned long inst,
|
||||
|
||||
return res & 0xffffffff;
|
||||
}
|
||||
|
||||
/* See arch/arm.h. */
|
||||
|
||||
target_desc *
|
||||
arm_create_target_description (arm_fp_type fp_type)
|
||||
{
|
||||
switch (fp_type)
|
||||
{
|
||||
case ARM_FP_TYPE_NONE:
|
||||
return nullptr;
|
||||
/* Temporary ifdef. Will be removed when target descriptions are switched. */
|
||||
#ifndef GDBSERVER
|
||||
case ARM_FP_TYPE_VFPV2:
|
||||
return tdesc_arm_with_vfpv2;
|
||||
|
||||
case ARM_FP_TYPE_VFPV3:
|
||||
return tdesc_arm_with_vfpv3;
|
||||
|
||||
case ARM_FP_TYPE_IWMMXT:
|
||||
return tdesc_arm_with_iwmmxt;
|
||||
#endif
|
||||
default:
|
||||
error (_("Invalid Arm FP type: %d"), fp_type);
|
||||
}
|
||||
}
|
||||
|
||||
/* See arch/arm.h. */
|
||||
|
||||
target_desc *
|
||||
arm_create_mprofile_target_description (arm_m_profile_type m_type)
|
||||
{
|
||||
switch (m_type)
|
||||
{
|
||||
/* Temporary ifdef. Will be removed when target descriptions are switched. */
|
||||
#ifndef GDBSERVER
|
||||
case ARM_M_TYPE_M_PROFILE:
|
||||
return tdesc_arm_with_m;
|
||||
|
||||
case ARM_M_TYPE_VFP_D16:
|
||||
return tdesc_arm_with_m_fpa_layout;
|
||||
|
||||
case ARM_M_TYPE_WITH_FPA:
|
||||
return tdesc_arm_with_m_vfp_d16;
|
||||
#endif
|
||||
default:
|
||||
error (_("Invalid Arm M type: %d"), m_type);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user