From 3426ae5760319b6b31d71f3ba798154e6fcea34d Mon Sep 17 00:00:00 2001 From: Alan Hayward Date: Wed, 26 Jun 2019 14:10:08 +0100 Subject: [PATCH] Arm: Allow version strings in the triplet regexp On Arm, the OS may use the full version string for the arch name when installing the compiler, for example armv7hl-redhat-linux-gnueabi-gcc. Implement gdbarch_gnu_triplet_regexp for Arm to allow this to be detected. Ensure that other Arm targets (eg iwmmxt) are not affected. This fixes the compile/ set of tests on those systems. gdb/ChangeLog: 2019-06-26 Alan Hayward * arm-tdep.c (arm_gnu_triplet_regexp): New function. (arm_gdbarch_init): Add arm_gnu_triplet_regexp. --- gdb/ChangeLog | 5 +++++ gdb/arm-tdep.c | 14 +++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3de4e19a10a..3e6a1704fbb 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-06-26 Alan Hayward + + * arm-tdep.c (arm_gnu_triplet_regexp): New function. + (arm_gdbarch_init): Add arm_gnu_triplet_regexp. + 2019-06-25 Simon Marchi * arm-tdep.c (struct arm_per_objfile) : New diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 2ba77e207d3..039b2f071b2 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -8831,7 +8831,17 @@ arm_code_of_frame_writable (struct gdbarch *gdbarch, struct frame_info *frame) return 1; } - +/* Implement gdbarch_gnu_triplet_regexp. If the arch name is arm then allow it + to be postfixed by a version (eg armv7hl). */ + +static const char * +arm_gnu_triplet_regexp (struct gdbarch *gdbarch) +{ + if (strcmp (gdbarch_bfd_arch_info (gdbarch)->arch_name, "arm") == 0) + return "arm(v[^- ]*)?"; + return gdbarch_bfd_arch_info (gdbarch)->arch_name; +} + /* Initialize the current architecture based on INFO. If possible, re-use an architecture from ARCHES, which is a list of architectures already created during this debugging session. @@ -9433,6 +9443,8 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_disassembler_options (gdbarch, &arm_disassembler_options); set_gdbarch_valid_disassembler_options (gdbarch, disassembler_options_arm ()); + set_gdbarch_gnu_triplet_regexp (gdbarch, arm_gnu_triplet_regexp); + return gdbarch; } -- 2.30.2