*** empty log message ***
[deliverable/binutils-gdb.git] / gdb / dwarf2loc.h
index a2cfe7fa955083bb37ab0b25d95cd62e0cdea2fe..08849ed5474a6bbd367981608113c645b0db3abb 100644 (file)
@@ -1,6 +1,6 @@
 /* DWARF 2 location expression support for GDB.
 
-   Copyright (C) 2003, 2005, 2007, 2008, 2009, 2010
+   Copyright (C) 2003, 2005, 2007, 2008, 2009, 2010, 2011
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -24,6 +24,9 @@
 struct symbol_computed_ops;
 struct objfile;
 struct dwarf2_per_cu_data;
+struct dwarf2_loclist_baton;
+struct agent_expr;
+struct axs_value;
 
 /* This header is private to the DWARF-2 reader.  It is shared between
    dwarf2read.c and dwarf2loc.c.  */
@@ -45,8 +48,19 @@ int dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *cu);
    offset in the parent objfile.  */
 CORE_ADDR dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *cu);
 
+/* Find a particular location expression from a location list.  */
+const gdb_byte *dwarf2_find_location_expression
+  (struct dwarf2_loclist_baton *baton,
+   size_t *locexpr_length,
+   CORE_ADDR pc);
+
 struct dwarf2_locexpr_baton dwarf2_fetch_die_location_block
-  (unsigned int offset, struct dwarf2_per_cu_data *per_cu);
+  (unsigned int offset, struct dwarf2_per_cu_data *per_cu,
+   CORE_ADDR (*get_frame_pc) (void *baton),
+   void *baton);
+
+struct type *dwarf2_get_die_type (unsigned int die_offset,
+                                 struct dwarf2_per_cu_data *per_cu);
 
 /* Evaluate a location description, starting at DATA and with length
    SIZE, to find the current location of variable of TYPE in the context
@@ -97,4 +111,25 @@ struct dwarf2_loclist_baton
 extern const struct symbol_computed_ops dwarf2_locexpr_funcs;
 extern const struct symbol_computed_ops dwarf2_loclist_funcs;
 
+/* Compile a DWARF location expression to an agent expression.
+   
+   EXPR is the agent expression we are building.
+   LOC is the agent value we modify.
+   ARCH is the architecture.
+   ADDR_SIZE is the size of addresses, in bytes.
+   OP_PTR is the start of the location expression.
+   OP_END is one past the last byte of the location expression.
+   
+   This will throw an exception for various kinds of errors -- for
+   example, if the expression cannot be compiled, or if the expression
+   is invalid.  */
+
+extern void dwarf2_compile_expr_to_ax (struct agent_expr *expr,
+                                      struct axs_value *loc,
+                                      struct gdbarch *arch,
+                                      unsigned int addr_size,
+                                      const gdb_byte *op_ptr,
+                                      const gdb_byte *op_end,
+                                      struct dwarf2_per_cu_data *per_cu);
+
 #endif /* dwarf2loc.h */
This page took 0.025615 seconds and 4 git commands to generate.