| Index: gdb/probe.h
|
| diff --git a/gdb/probe.h b/gdb/probe.h
|
| index 8d44ca2855de16e3dbe75d94b375928677f08fca..dd5387b091bc04fe6ccf5578644e4679ab522e30 100644
|
| --- a/gdb/probe.h
|
| +++ b/gdb/probe.h
|
| @@ -1,6 +1,6 @@
|
| /* Generic SDT probe support for GDB.
|
|
|
| - Copyright (C) 2012 Free Software Foundation, Inc.
|
| + Copyright (C) 2012-2013 Free Software Foundation, Inc.
|
|
|
| This file is part of GDB.
|
|
|
| @@ -22,6 +22,11 @@
|
|
|
| #include "gdb_vecs.h"
|
|
|
| +/* Definition of a vector of probes. */
|
| +
|
| +typedef struct probe *probe_p;
|
| +DEF_VEC_P (probe_p);
|
| +
|
| struct linespec_result;
|
|
|
| /* Structure useful for passing the header names in the method
|
| @@ -66,21 +71,24 @@ struct probe_ops
|
|
|
| /* Return the number of arguments of PROBE. */
|
|
|
| - unsigned (*get_probe_argument_count) (struct probe *probe,
|
| - struct objfile *objfile);
|
| + unsigned (*get_probe_argument_count) (struct probe *probe);
|
| +
|
| + /* Return 1 if the probe interface can evaluate the arguments of probe
|
| + PROBE, zero otherwise. See the comments on
|
| + sym_probe_fns:can_evaluate_probe_arguments for more details. */
|
| +
|
| + int (*can_evaluate_probe_arguments) (struct probe *probe);
|
|
|
| /* Evaluate the Nth argument from the PROBE, returning a value
|
| corresponding to it. The argument number is represented N. */
|
|
|
| struct value *(*evaluate_probe_argument) (struct probe *probe,
|
| - struct objfile *objfile,
|
| unsigned n);
|
|
|
| /* Compile the Nth argument of the PROBE to an agent expression.
|
| The argument number is represented by N. */
|
|
|
| - void (*compile_to_ax) (struct probe *probe, struct objfile *objfile,
|
| - struct agent_expr *aexpr,
|
| + void (*compile_to_ax) (struct probe *probe, struct agent_expr *aexpr,
|
| struct axs_value *axs_value, unsigned n);
|
|
|
| /* Set the semaphore associated with the PROBE. This function only makes
|
| @@ -108,8 +116,8 @@ struct probe_ops
|
| void (*gen_info_probes_table_header) (VEC (info_probe_column_s) **heads);
|
|
|
| /* Function that will fill VALUES with the values of the extra fields
|
| - to be printed for PROBE and OBJFILE. If the backend implements
|
| - the `gen_ui_out_table_header' method, then it should implement
|
| + to be printed for PROBE. If the backend implements the
|
| + `gen_ui_out_table_header' method, then it should implement
|
| this method as well. The backend should also guarantee that the
|
| order and the number of values in the vector is exactly the same
|
| as the order of the extra fields provided in the method
|
| @@ -118,7 +126,6 @@ struct probe_ops
|
| position in the vector. */
|
|
|
| void (*gen_info_probes_table_values) (struct probe *probe,
|
| - struct objfile *objfile,
|
| VEC (const_char_ptr) **values);
|
| };
|
|
|
| @@ -157,6 +164,11 @@ struct probe
|
| /* The operations associated with this probe. */
|
| const struct probe_ops *pops;
|
|
|
| + /* The objfile which contains this probe. Even if the probe is also
|
| + present in a separate debug objfile, this variable always points to
|
| + the non-separate debug objfile. */
|
| + struct objfile *objfile;
|
| +
|
| /* The name of the probe. */
|
| const char *name;
|
|
|
| @@ -181,11 +193,9 @@ extern struct symtabs_and_lines parse_probes (char **argptr,
|
| extern void register_probe_ops (struct probe *probe);
|
|
|
| /* Given a PC, find an associated probe with type PTYPE. If a probe is
|
| - found, set *OBJFILE_OUT to the probe's objfile, and return the
|
| - probe. If no probe is found, return NULL. */
|
| + found, return it. If no probe is found, return NULL. */
|
|
|
| -extern struct probe *find_probe_by_pc (CORE_ADDR pc,
|
| - struct objfile **objfile_out);
|
| +extern struct probe *find_probe_by_pc (CORE_ADDR pc);
|
|
|
| /* Search OBJFILE for a probe with the given PROVIDER, NAME and PTYPE.
|
| Return a VEC of all probes that were found. If no matching probe
|
| @@ -210,6 +220,22 @@ extern void info_probes_for_ops (char *arg, int from_tty,
|
|
|
| extern struct cmd_list_element **info_probes_cmdlist_get (void);
|
|
|
| +/* Return the argument count of the specified probe. */
|
| +
|
| +extern unsigned get_probe_argument_count (struct probe *probe);
|
| +
|
| +/* Return 1 if the probe interface associated with PROBE can evaluate
|
| + arguments, zero otherwise. See the comments on the definition of
|
| + sym_probe_fns:can_evaluate_probe_arguments for more details. */
|
| +
|
| +extern int can_evaluate_probe_arguments (struct probe *probe);
|
| +
|
| +/* Evaluate argument N of the specified probe. N must be between 0
|
| + inclusive and get_probe_argument_count exclusive. */
|
| +
|
| +extern struct value *evaluate_probe_argument (struct probe *probe,
|
| + unsigned n);
|
| +
|
| /* A convenience function that finds a probe at the PC in FRAME and
|
| evaluates argument N, with 0 <= N < number_of_args. If there is no
|
| probe at that location, or if the probe does not have enough arguments,
|
|
|