/* DWARF 2 location expression support for GDB.
- Copyright (C) 2003-2014 Free Software Foundation, Inc.
+ Copyright (C) 2003-2015 Free Software Foundation, Inc.
This file is part of GDB.
struct type *dwarf2_get_die_type (cu_offset die_offset,
struct dwarf2_per_cu_data *per_cu);
+/* Find the frame base information for FRAMEFUNC at PC. START is an
+ out parameter which is set to point to the DWARF expression to
+ compute. LENGTH is an out parameter which is set to the length of
+ the DWARF expression. This throws an exception on error or if an
+ expression is not found; the returned length will never be
+ zero. */
+
+extern void func_get_frame_base_dwarf_block (struct symbol *framefunc,
+ CORE_ADDR pc,
+ const gdb_byte **start,
+ size_t *length);
+
/* Evaluate a location description, starting at DATA and with length
SIZE, to find the current location of variable of TYPE in the context
of FRAME. */
size_t size,
struct dwarf2_per_cu_data *per_cu);
-/* Converts a dynamic property into a static one. ADDR is the address of
- the object currently being evaluated and might be nedded.
+/* 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. */
CORE_ADDR address,
CORE_ADDR *value);
+/* A helper for the compiler interface that compiles a single dynamic
+ property to C code.
+
+ STREAM is where the C code is to be written.
+ RESULT_NAME is the name of the generated variable.
+ GDBARCH is the architecture to use.
+ REGISTERS_USED is a bit-vector that is filled to note which
+ registers are required by the generated expression.
+ PROP is the property for which code is generated.
+ ADDRESS is the address at which the property is considered to be
+ evaluated.
+ SYM the originating symbol, used for error reporting. */
+
+void dwarf2_compile_property_to_c (struct ui_file *stream,
+ const char *result_name,
+ struct gdbarch *gdbarch,
+ unsigned char *registers_used,
+ const struct dynamic_prop *prop,
+ CORE_ADDR address,
+ struct symbol *sym);
+
CORE_ADDR dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
unsigned int addr_index);
CORE_ADDR caller_pc,
CORE_ADDR callee_pc);
+/* A helper function to convert a DWARF register to an arch register.
+ ARCH is the architecture.
+ DWARF_REG is the register.
+ This will throw an exception if the DWARF register cannot be
+ translated to an architecture register. */
+
+extern int dwarf2_reg_to_regnum_or_error (struct gdbarch *arch, int dwarf_reg);
+
#endif /* dwarf2loc.h */