make dwarf_expr_frame_base_1 public

This exports dwarf_expr_frame_base_1 so that other code can use it.

gdb/ChangeLog
2014-12-12  Tom Tromey  <tromey@redhat.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2loc.c (dwarf_expr_frame_base_1): Remove declaration.
	(dwarf_expr_frame_base): Update caller.
	(dwarf_expr_frame_base_1): Rename to ...
	(func_get_frame_base_dwarf_block): ... this and make it public.
	(dwarf2_compile_expr_to_ax, locexpr_describe_location_piece): Update
	callers.
	* dwarf2loc.h (func_get_frame_base_dwarf_block): New declaration.
This commit is contained in:
Tom Tromey 2014-05-14 14:28:58 -06:00 committed by Jan Kratochvil
parent a8fd558970
commit af945b7535
3 changed files with 34 additions and 12 deletions

View File

@ -1,3 +1,14 @@
2014-12-12 Tom Tromey <tromey@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
* dwarf2loc.c (dwarf_expr_frame_base_1): Remove declaration.
(dwarf_expr_frame_base): Update caller.
(dwarf_expr_frame_base_1): Rename to ...
(func_get_frame_base_dwarf_block): ... this and make it public.
(dwarf2_compile_expr_to_ax, locexpr_describe_location_piece): Update
callers.
* dwarf2loc.h (func_get_frame_base_dwarf_block): New declaration.
2014-12-12 Tom Tromey <tromey@redhat.com>
* dwarf2loc.c (dwarf2_compile_expr_to_ax) <DW_OP_call_frame_cfa>:

View File

@ -40,9 +40,6 @@
extern int dwarf2_always_disassemble;
static void dwarf_expr_frame_base_1 (struct symbol *framefunc, CORE_ADDR pc,
const gdb_byte **start, size_t *length);
static const struct dwarf_expr_context_funcs dwarf_expr_ctx_funcs;
static struct value *dwarf2_evaluate_loc_desc_full (struct type *type,
@ -365,9 +362,9 @@ dwarf_expr_frame_base (void *baton, const gdb_byte **start, size_t * length)
something has gone wrong. */
gdb_assert (framefunc != NULL);
dwarf_expr_frame_base_1 (framefunc,
get_frame_address_in_block (debaton->frame),
start, length);
func_get_frame_base_dwarf_block (framefunc,
get_frame_address_in_block (debaton->frame),
start, length);
}
/* Implement find_frame_base_location method for LOC_BLOCK functions using
@ -411,9 +408,11 @@ const struct symbol_block_ops dwarf2_block_frame_base_loclist_funcs =
loclist_find_frame_base_location
};
static void
dwarf_expr_frame_base_1 (struct symbol *framefunc, CORE_ADDR pc,
const gdb_byte **start, size_t *length)
/* See dwarf2loc.h. */
void
func_get_frame_base_dwarf_block (struct symbol *framefunc, CORE_ADDR pc,
const gdb_byte **start, size_t *length)
{
if (SYMBOL_BLOCK_OPS (framefunc) != NULL)
{
@ -3074,8 +3073,8 @@ dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc,
if (!framefunc)
error (_("No function found for block"));
dwarf_expr_frame_base_1 (framefunc, expr->scope,
&datastart, &datalen);
func_get_frame_base_dwarf_block (framefunc, expr->scope,
&datastart, &datalen);
op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
dwarf2_compile_expr_to_ax (expr, loc, arch, addr_size, datastart,
@ -3571,7 +3570,7 @@ locexpr_describe_location_piece (struct symbol *symbol, struct ui_file *stream,
error (_("No function found for block for symbol \"%s\"."),
SYMBOL_PRINT_NAME (symbol));
dwarf_expr_frame_base_1 (framefunc, addr, &base_data, &base_size);
func_get_frame_base_dwarf_block (framefunc, addr, &base_data, &base_size);
if (base_data[0] >= DW_OP_breg0 && base_data[0] <= DW_OP_breg31)
{

View File

@ -80,6 +80,18 @@ extern const gdb_byte *dwarf2_fetch_constant_bytes (sect_offset,
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. */