mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-27 06:17:47 +08:00
Extend SystemTap SDT probe argument parser
This patch extends the current generic parser for SystemTap SDT probe arguments. It can be almost considered a cleanup, but the main point of it is actually to allow the generic parser to accept multiple prefixes and suffixes for the its operands (i.e., integers, register names, and register indirection). I have chosen to implement this as a list of const strings, and declare this list as "static" inside each target's method used to initialize gdbarch. This patch is actually a preparation for an upcoming patch for ARM, which implements the support for multiple integer prefixes (as defined by ARM's asm spec). And AArch64 will also need this, for the same reason. This patch was regtested on all architectures that it touches (i.e., i386, x86_64, ARM, PPC/PPC64, s390x and IA-64). No regressions were found. 2013-12-19 Sergio Durigan Junior <sergiodj@redhat.com> * amd64-tdep.c (amd64_init_abi): Declare SystemTap SDT probe argument prefixes and suffixes. Initialize gdbarch with them. * arm-linux-tdep.c (arm_linux_init_abi): Likewise. * gdbarch.c: Regenerate. * gdbarch.h: Regenerate. * gdbarch.sh (stap_integer_prefix, stap_integer_suffix) (stap_register_prefix, stap_register_suffix) (stap_register_indirection_prefix) (stap_register_indirection_suffix): Declare as "const char *const *" instead of "const char *". Adjust printing function. Rename all of the variables to the plural. (pstring_list): New function. * i386-tdep.c (i386_elf_init_abi): Declare SystemTap SDT probe argument prefixes and suffixes. Initialize gdbarch with them. * ia64-linux-tdep.c (ia64_linux_init_abi): Likewise. * ppc-linux-tdep.c (ppc_linux_init_abi): Likewise. * s390-linux-tdep.c (s390_gdbarch_init): Likewise. * stap-probe.c (stap_is_generic_prefix): New function. (stap_is_register_prefix): Likewise. (stap_is_register_indirection_prefix): Likewise. (stap_is_integer_prefix): Likewise. (stap_generic_check_suffix): Likewise. (stap_check_integer_suffix): Likewise. (stap_check_register_suffix): Likewise. (stap_check_register_indirection_suffix): Likewise. (stap_parse_register_operand): Remove unecessary declarations for variables holding prefix and suffix information. Use the new functions listed above for checking for prefixes and suffixes. (stap_parse_single_operand): Likewise.
This commit is contained in:
@ -1245,6 +1245,11 @@ ppc_linux_init_abi (struct gdbarch_info info,
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
struct tdesc_arch_data *tdesc_data = (void *) info.tdep_info;
|
||||
static const char *const stap_integer_prefixes[] = { "i", NULL };
|
||||
static const char *const stap_register_indirection_prefixes[] = { "(",
|
||||
NULL };
|
||||
static const char *const stap_register_indirection_suffixes[] = { ")",
|
||||
NULL };
|
||||
|
||||
linux_init_abi (info, gdbarch);
|
||||
|
||||
@ -1263,9 +1268,11 @@ ppc_linux_init_abi (struct gdbarch_info info,
|
||||
set_gdbarch_get_syscall_number (gdbarch, ppc_linux_get_syscall_number);
|
||||
|
||||
/* SystemTap functions. */
|
||||
set_gdbarch_stap_integer_prefix (gdbarch, "i");
|
||||
set_gdbarch_stap_register_indirection_prefix (gdbarch, "(");
|
||||
set_gdbarch_stap_register_indirection_suffix (gdbarch, ")");
|
||||
set_gdbarch_stap_integer_prefixes (gdbarch, stap_integer_prefixes);
|
||||
set_gdbarch_stap_register_indirection_prefixes (gdbarch,
|
||||
stap_register_indirection_prefixes);
|
||||
set_gdbarch_stap_register_indirection_suffixes (gdbarch,
|
||||
stap_register_indirection_suffixes);
|
||||
set_gdbarch_stap_gdb_register_prefix (gdbarch, "r");
|
||||
set_gdbarch_stap_is_single_operand (gdbarch, ppc_stap_is_single_operand);
|
||||
set_gdbarch_stap_parse_special_token (gdbarch,
|
||||
|
Reference in New Issue
Block a user