From: Sergio Durigan Junior Date: Sat, 28 Dec 2013 21:20:58 +0000 (-0200) Subject: Extend handling of immediates on ARM's SystemTap SDT probe support X-Git-Tag: gdb-7.7-branchpoint~69 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8d85bacb91f5e50baa8155598a9e5521db2fafd1;p=thirdparty%2Fbinutils-gdb.git Extend handling of immediates on ARM's SystemTap SDT probe support Continuing my series of fixes on the SystemTap SDT support for the ARM/AArch64 architectures, this patch now extends how ARM's SDT specific parser handles literal numbers (immediates). Currently, it only accepts "#" as the prefix. However, according to "info '(as) ARM-Chars'", expressions can also have "$" and nothing as a prefix. This patch extends the parser to accept those options. 2013-12-28 Sergio Durigan Junior * arm-linux-tdep.c (arm_stap_is_single_operand): Accept "$" as a literal prefix. Also accept no prefix at all. (arm_stap_parse_special_token): Likewise. (arm_linux_init_abi): Likewise. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c6f37e5f68a..02db7089e78 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2013-12-28 Sergio Durigan Junior + + * arm-linux-tdep.c (arm_stap_is_single_operand): Accept "$" as a + literal prefix. Also accept no prefix at all. + (arm_stap_parse_special_token): Likewise. + (arm_linux_init_abi): Likewise. + 2013-12-28 Sergio Durigan Junior PR tdep/15653 diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c index 0284f69ccd4..830b2ebc7ac 100644 --- a/gdb/arm-linux-tdep.c +++ b/gdb/arm-linux-tdep.c @@ -1116,7 +1116,7 @@ arm_linux_displaced_step_copy_insn (struct gdbarch *gdbarch, static int arm_stap_is_single_operand (struct gdbarch *gdbarch, const char *s) { - return (*s == '#' /* Literal number. */ + return (*s == '#' || *s == '$' || isdigit (*s) /* Literal number. */ || *s == '[' /* Register indirection or displacement. */ || isalpha (*s)); /* Register value. */ @@ -1183,8 +1183,8 @@ arm_stap_parse_special_token (struct gdbarch *gdbarch, ++tmp; tmp = skip_spaces_const (tmp); - if (*tmp++ != '#') - return 0; + if (*tmp == '#' || *tmp == '$') + ++tmp; if (*tmp == '-') { @@ -1235,7 +1235,7 @@ static void arm_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { - static const char *const stap_integer_prefixes[] = { "#", NULL }; + static const char *const stap_integer_prefixes[] = { "#", "$", "", NULL }; static const char *const stap_register_prefixes[] = { "r", NULL }; static const char *const stap_register_indirection_prefixes[] = { "[", NULL };