diff options
author | Jose E. Marchesi <jose.marchesi@oracle.com> | 2015-02-17 15:54:44 +0100 |
---|---|---|
committer | Jose E. Marchesi <jose.marchesi@oracle.com> | 2015-02-17 15:54:44 +0100 |
commit | 8b367e1771078f3cfc8c0fa2d5c5d5e9656c8fb9 (patch) | |
tree | 608a09f943c243d6ec2a2dd0c2e3d9df352443cb /gdb/gdbarch.c | |
parent | 9aca2ff83e4299875343cb07add9c0ef7e5f3188 (diff) | |
download | gdb-8b367e1771078f3cfc8c0fa2d5c5d5e9656c8fb9.zip gdb-8b367e1771078f3cfc8c0fa2d5c5d5e9656c8fb9.tar.gz gdb-8b367e1771078f3cfc8c0fa2d5c5d5e9656c8fb9.tar.bz2 |
New gdbarch functions: dtrace_parse_probe_argument, dtrace_probe_is_enabled, dtrace_enable_probe, dtrace_disable_probe.
This patch adds several gdbarch functions (along with the corresponding
predicates): `dtrace_parse_probe_argument', `dtrace_probe_is_enabled',
`dtrace_enable_probe' and `dtrace_disable_probe'. These functions will
be implemented by target-specific code, and called from the DTrace
probes implementation in order to calculate the value of probe
arguments, and manipulate is-enabled probes.
gdb/ChangeLog:
2015-02-17 Jose E. Marchesi <jose.marchesi@oracle.com>
* gdbarch.sh (dtrace_parse_probe_argument): New.
(dtrace_probe_is_enabled): Likewise.
(dtrace_enable_probe): Likewise.
(dtrace_disable_probe): Likewise.
* gdbarch.c: Regenerate.
* gdbarch.h: Regenerate.
Diffstat (limited to 'gdb/gdbarch.c')
-rw-r--r-- | gdb/gdbarch.c | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index b35da35..aa1a369 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -303,6 +303,10 @@ struct gdbarch const char * stap_gdb_register_suffix; gdbarch_stap_is_single_operand_ftype *stap_is_single_operand; gdbarch_stap_parse_special_token_ftype *stap_parse_special_token; + gdbarch_dtrace_parse_probe_argument_ftype *dtrace_parse_probe_argument; + gdbarch_dtrace_probe_is_enabled_ftype *dtrace_probe_is_enabled; + gdbarch_dtrace_enable_probe_ftype *dtrace_enable_probe; + gdbarch_dtrace_disable_probe_ftype *dtrace_disable_probe; int has_global_solist; int has_global_breakpoints; gdbarch_has_shared_address_space_ftype *has_shared_address_space; @@ -632,6 +636,10 @@ verify_gdbarch (struct gdbarch *gdbarch) /* Skip verify of stap_gdb_register_suffix, invalid_p == 0 */ /* Skip verify of stap_is_single_operand, has predicate. */ /* Skip verify of stap_parse_special_token, has predicate. */ + /* Skip verify of dtrace_parse_probe_argument, has predicate. */ + /* Skip verify of dtrace_probe_is_enabled, has predicate. */ + /* Skip verify of dtrace_enable_probe, has predicate. */ + /* Skip verify of dtrace_disable_probe, has predicate. */ /* Skip verify of has_global_solist, invalid_p == 0 */ /* Skip verify of has_global_breakpoints, invalid_p == 0 */ /* Skip verify of has_shared_address_space, invalid_p == 0 */ @@ -847,6 +855,30 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: double_format = %s\n", pformat (gdbarch->double_format)); fprintf_unfiltered (file, + "gdbarch_dump: gdbarch_dtrace_disable_probe_p() = %d\n", + gdbarch_dtrace_disable_probe_p (gdbarch)); + fprintf_unfiltered (file, + "gdbarch_dump: dtrace_disable_probe = <%s>\n", + host_address_to_string (gdbarch->dtrace_disable_probe)); + fprintf_unfiltered (file, + "gdbarch_dump: gdbarch_dtrace_enable_probe_p() = %d\n", + gdbarch_dtrace_enable_probe_p (gdbarch)); + fprintf_unfiltered (file, + "gdbarch_dump: dtrace_enable_probe = <%s>\n", + host_address_to_string (gdbarch->dtrace_enable_probe)); + fprintf_unfiltered (file, + "gdbarch_dump: gdbarch_dtrace_parse_probe_argument_p() = %d\n", + gdbarch_dtrace_parse_probe_argument_p (gdbarch)); + fprintf_unfiltered (file, + "gdbarch_dump: dtrace_parse_probe_argument = <%s>\n", + host_address_to_string (gdbarch->dtrace_parse_probe_argument)); + fprintf_unfiltered (file, + "gdbarch_dump: gdbarch_dtrace_probe_is_enabled_p() = %d\n", + gdbarch_dtrace_probe_is_enabled_p (gdbarch)); + fprintf_unfiltered (file, + "gdbarch_dump: dtrace_probe_is_enabled = <%s>\n", + host_address_to_string (gdbarch->dtrace_probe_is_enabled)); + fprintf_unfiltered (file, "gdbarch_dump: gdbarch_dummy_id_p() = %d\n", gdbarch_dummy_id_p (gdbarch)); fprintf_unfiltered (file, @@ -4203,6 +4235,102 @@ set_gdbarch_stap_parse_special_token (struct gdbarch *gdbarch, } int +gdbarch_dtrace_parse_probe_argument_p (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + return gdbarch->dtrace_parse_probe_argument != NULL; +} + +void +gdbarch_dtrace_parse_probe_argument (struct gdbarch *gdbarch, struct parser_state *pstate, int narg) +{ + gdb_assert (gdbarch != NULL); + gdb_assert (gdbarch->dtrace_parse_probe_argument != NULL); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_dtrace_parse_probe_argument called\n"); + gdbarch->dtrace_parse_probe_argument (gdbarch, pstate, narg); +} + +void +set_gdbarch_dtrace_parse_probe_argument (struct gdbarch *gdbarch, + gdbarch_dtrace_parse_probe_argument_ftype dtrace_parse_probe_argument) +{ + gdbarch->dtrace_parse_probe_argument = dtrace_parse_probe_argument; +} + +int +gdbarch_dtrace_probe_is_enabled_p (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + return gdbarch->dtrace_probe_is_enabled != NULL; +} + +int +gdbarch_dtrace_probe_is_enabled (struct gdbarch *gdbarch, CORE_ADDR addr) +{ + gdb_assert (gdbarch != NULL); + gdb_assert (gdbarch->dtrace_probe_is_enabled != NULL); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_dtrace_probe_is_enabled called\n"); + return gdbarch->dtrace_probe_is_enabled (gdbarch, addr); +} + +void +set_gdbarch_dtrace_probe_is_enabled (struct gdbarch *gdbarch, + gdbarch_dtrace_probe_is_enabled_ftype dtrace_probe_is_enabled) +{ + gdbarch->dtrace_probe_is_enabled = dtrace_probe_is_enabled; +} + +int +gdbarch_dtrace_enable_probe_p (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + return gdbarch->dtrace_enable_probe != NULL; +} + +void +gdbarch_dtrace_enable_probe (struct gdbarch *gdbarch, CORE_ADDR addr) +{ + gdb_assert (gdbarch != NULL); + gdb_assert (gdbarch->dtrace_enable_probe != NULL); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_dtrace_enable_probe called\n"); + gdbarch->dtrace_enable_probe (gdbarch, addr); +} + +void +set_gdbarch_dtrace_enable_probe (struct gdbarch *gdbarch, + gdbarch_dtrace_enable_probe_ftype dtrace_enable_probe) +{ + gdbarch->dtrace_enable_probe = dtrace_enable_probe; +} + +int +gdbarch_dtrace_disable_probe_p (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + return gdbarch->dtrace_disable_probe != NULL; +} + +void +gdbarch_dtrace_disable_probe (struct gdbarch *gdbarch, CORE_ADDR addr) +{ + gdb_assert (gdbarch != NULL); + gdb_assert (gdbarch->dtrace_disable_probe != NULL); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_dtrace_disable_probe called\n"); + gdbarch->dtrace_disable_probe (gdbarch, addr); +} + +void +set_gdbarch_dtrace_disable_probe (struct gdbarch *gdbarch, + gdbarch_dtrace_disable_probe_ftype dtrace_disable_probe) +{ + gdbarch->dtrace_disable_probe = dtrace_disable_probe; +} + +int gdbarch_has_global_solist (struct gdbarch *gdbarch) { gdb_assert (gdbarch != NULL); |