/* DWARF 2 location expression support for GDB.
- Copyright (C) 2003-2013 Free Software Foundation, Inc.
+ Copyright (C) 2003-2014 Free Software Foundation, Inc.
This file is part of GDB.
size_t size,
struct dwarf2_per_cu_data *per_cu);
+/* Converts a dynamic property into a static one. ADDRESS is the address
+ of the object currently being evaluated and might be nedded.
+ Returns 1 if PROP could be converted and the static value is passed back
+ into VALUE, otherwise returns 0. */
+
+int dwarf2_evaluate_property (const struct dynamic_prop *prop,
+ CORE_ADDR address,
+ CORE_ADDR *value);
+
CORE_ADDR dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
unsigned int addr_index);
unsigned char from_dwo;
};
+/* A dynamic property is either expressed as a single location expression
+ or a location list. If the property is an indirection, pointing to
+ another die, keep track of the targeted type in REFERENCED_TYPE. */
+
+struct dwarf2_property_baton
+{
+ /* If the property is an indirection, we need to evaluate the location
+ LOCEXPR or LOCLIST in the context of the type REFERENCED_TYPE.
+ If NULL, the location is the actual value of the property. */
+ struct type *referenced_type;
+ union
+ {
+ /* Location expression. */
+ struct dwarf2_locexpr_baton locexpr;
+
+ /* Location list to be evaluated in the context of REFERENCED_TYPE. */
+ struct dwarf2_loclist_baton loclist;
+ };
+};
+
extern const struct symbol_computed_ops dwarf2_locexpr_funcs;
extern const struct symbol_computed_ops dwarf2_loclist_funcs;