/* Definitions for reading symbol files into GDB.
- Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1990-2004, 2007-2012 Free Software Foundation, Inc.
This file is part of GDB.
/* This file requires that you first include "bfd.h". */
#include "symtab.h"
+#include "gdb_vecs.h"
/* Opaque declarations. */
struct target_section;
struct obj_section;
struct obstack;
struct block;
+struct probe;
+struct value;
+struct frame_info;
+struct agent_expr;
+struct axs_value;
/* Comparison function for symbol look ups. */
/* Expand and iterate over each "partial" symbol table in OBJFILE
where the source file is named NAME.
- If there is no '/' in the name, a match after a '/' in the symbol
+ If NAME is not absolute, a match after a '/' in the symbol
table's file name will also work. FULL_PATH is the absolute file
name, and REAL_PATH is the same, run through gdb_realpath.
file is skipped. If FILE_MATCHER is NULL such file is not skipped.
Otherwise, if KIND does not match this symbol is skipped.
-
+
If even KIND matches, then NAME_MATCHER is called for each symbol
- defined in the file. The current language, the symbol name and
- DATA are passed to NAME_MATCHER. The symbol "natural" name should
- be passed to NAME_MATCHER for all languages except Ada, where
- the encoded name is passed instead (see la_symbol_name_compare in
- struct language_defn for more details on this).
+ defined in the file. The symbol "search" name and DATA are passed
+ to NAME_MATCHER.
If NAME_MATCHER returns zero, then this symbol is skipped.
void (*expand_symtabs_matching)
(struct objfile *objfile,
int (*file_matcher) (const char *, void *),
- int (*name_matcher) (const struct language_defn *, const char *, void *),
+ int (*name_matcher) (const char *, void *),
enum search_domain kind,
void *data);
int need_fullname);
};
+/* Structure of functions used for probe support. If one of these functions
+ is provided, all must be. */
+
+struct sym_probe_fns
+{
+ /* If non-NULL, return an array of probe objects.
+
+ The returned value does not have to be freed and it has lifetime of the
+ OBJFILE. */
+ VEC (probe_p) *(*sym_get_probes) (struct objfile *);
+
+ /* Return the number of arguments available to PROBE. PROBE will
+ have come from a call to this objfile's sym_get_probes method.
+ If you provide an implementation of sym_get_probes, you must
+ implement this method as well. */
+ unsigned (*sym_get_probe_argument_count) (struct objfile *objfile,
+ struct probe *probe);
+
+ /* Evaluate the Nth argument available to PROBE. PROBE will have
+ come from a call to this objfile's sym_get_probes method. N will
+ be between 0 and the number of arguments available to this probe.
+ FRAME is the frame in which the evaluation is done; the frame's
+ PC will match the address of the probe. If you provide an
+ implementation of sym_get_probes, you must implement this method
+ as well. */
+ struct value *(*sym_evaluate_probe_argument) (struct objfile *objfile,
+ struct probe *probe,
+ unsigned n);
+
+ /* Compile the Nth probe argument to an agent expression. PROBE
+ will have come from a call to this objfile's sym_get_probes
+ method. N will be between 0 and the number of arguments
+ available to this probe. EXPR and VALUE are the agent expression
+ that is being updated. */
+ void (*sym_compile_to_ax) (struct objfile *objfile,
+ struct probe *probe,
+ struct agent_expr *expr,
+ struct axs_value *value,
+ unsigned n);
+
+ /* Relocate the probe section of OBJFILE. */
+ void (*sym_relocate_probe) (struct objfile *objfile,
+ struct section_offsets *new_offsets,
+ struct section_offsets *delta);
+};
+
/* Structure to keep track of symbol reading functions for various
object file types. */
bfd_byte *(*sym_relocate) (struct objfile *, asection *sectp, bfd_byte *buf);
+ /* If non-NULL, this objfile has probe support, and all the probe
+ functions referred to here will be non-NULL. */
+ const struct sym_probe_fns *sym_probe_fns;
+
/* The "quick" (aka partial) symbol functions for this symbol
reader. */
const struct quick_symbol_functions *qf;
struct dwarf2_section_names str;
struct dwarf2_section_names ranges;
struct dwarf2_section_names types;
+ struct dwarf2_section_names addr;
struct dwarf2_section_names frame;
struct dwarf2_section_names eh_frame;
struct dwarf2_section_names gdb_index;
void dwarf2_free_objfile (struct objfile *);
+/* Whether to use deprecated .gdb_index sections. */
+extern int use_deprecated_index_sections;
+
/* From mdebugread.c */
/* Hack to force structures to exist before use in parameter list. */