From: Andreas Arnez Date: Fri, 28 Mar 2014 17:21:39 +0000 (+0000) Subject: ARM: Replace regset_alloc() invocations by static regset structures. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b7611c43bf5dcdc84b4432fccef22247af11449e;p=binutils-gdb.git ARM: Replace regset_alloc() invocations by static regset structures. After removal of the regset_alloc invocations, the appropriate tdep fields become obsolete and are thus removed. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e6c8b56de42..ea32205cf0e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2014-05-21 Andreas Arnez + + * arm-linux-tdep.c (arm_linux_gregset, arm_linux_fpregset) + (arm_linux_vfpregset): New static regset structures. + (arm_linux_regset_from_core_section): Remove dynamic allocation of + regset structures. + * arm-tdep.h (struct gdbarch_tdep): Remove 'gregset', 'fpregset', + and 'vfpregset' fields. + 2014-05-21 Andreas Arnez * aarch64-linux-tdep.c (aarch64_linux_gregset) diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c index 98b912bcc0c..028a95bc81e 100644 --- a/gdb/arm-linux-tdep.c +++ b/gdb/arm-linux-tdep.c @@ -686,6 +686,21 @@ arm_linux_collect_vfp (const struct regset *regset, regs + (regno - ARM_D0_REGNUM) * 8); } +static const struct regset arm_linux_gregset = + { + NULL, arm_linux_supply_gregset, arm_linux_collect_gregset + }; + +static const struct regset arm_linux_fpregset = + { + NULL, arm_linux_supply_nwfpe, arm_linux_collect_nwfpe + }; + +static const struct regset arm_linux_vfpregset = + { + NULL, arm_linux_supply_vfp, arm_linux_collect_vfp + }; + /* Return the appropriate register set for the core section identified by SECT_NAME and SECT_SIZE. */ @@ -693,34 +708,17 @@ static const struct regset * arm_linux_regset_from_core_section (struct gdbarch *gdbarch, const char *sect_name, size_t sect_size) { - struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - if (strcmp (sect_name, ".reg") == 0 && sect_size == ARM_LINUX_SIZEOF_GREGSET) - { - if (tdep->gregset == NULL) - tdep->gregset = regset_alloc (gdbarch, arm_linux_supply_gregset, - arm_linux_collect_gregset); - return tdep->gregset; - } + return &arm_linux_gregset; if (strcmp (sect_name, ".reg2") == 0 && sect_size == ARM_LINUX_SIZEOF_NWFPE) - { - if (tdep->fpregset == NULL) - tdep->fpregset = regset_alloc (gdbarch, arm_linux_supply_nwfpe, - arm_linux_collect_nwfpe); - return tdep->fpregset; - } + return &arm_linux_fpregset; if (strcmp (sect_name, ".reg-arm-vfp") == 0 && sect_size == ARM_LINUX_SIZEOF_VFP) - { - if (tdep->vfpregset == NULL) - tdep->vfpregset = regset_alloc (gdbarch, arm_linux_supply_vfp, - arm_linux_collect_vfp); - return tdep->vfpregset; - } + return &arm_linux_vfpregset; return NULL; } diff --git a/gdb/arm-tdep.h b/gdb/arm-tdep.h index f8ba122b35a..29669d07211 100644 --- a/gdb/arm-tdep.h +++ b/gdb/arm-tdep.h @@ -193,9 +193,6 @@ struct gdbarch_tdep /* Convention for returning structures. */ enum struct_return struct_return; - /* Cached core file helpers. */ - struct regset *gregset, *fpregset, *vfpregset; - /* ISA-specific data types. */ struct type *arm_ext_type; struct type *neon_double_type;