aboutsummaryrefslogtreecommitdiff
path: root/gdb/dwarf2loc.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2010-05-25 16:41:46 +0000
committerTom Tromey <tromey@redhat.com>2010-05-25 16:41:46 +0000
commit0d45f56e4700225d5789b60da9ea3f082bb5e23d (patch)
tree1af7b8f88e4f8e21d13990d34d4d359a679b7fc8 /gdb/dwarf2loc.c
parente34838f0f74e1fdb249bcdd822136c98375e4f4b (diff)
downloadgdb-0d45f56e4700225d5789b60da9ea3f082bb5e23d.zip
gdb-0d45f56e4700225d5789b60da9ea3f082bb5e23d.tar.gz
gdb-0d45f56e4700225d5789b60da9ea3f082bb5e23d.tar.bz2
* dwarf2loc.c (dwarf_expr_frame_base): Constify.
(dwarf_expr_frame_base_1): Likewise. (read_pieced_value): Update. (needs_frame_frame_base): Constify. (dwarf2_tracepoint_var_loc): Likewise. (dwarf2_tracepoint_var_access): Likewise. (locexpr_describe_location_piece): Likewise. (locexpr_describe_location_1): Likewise. * dwarf2expr.h (struct dwarf_expr_context) <get_frame_base>: Constify. (data): Now const. (struct dwarf_expr_piece) <v.literal.data>: Likewise. (dwarf_expr_eval, read_uleb128, read_sleb128) (dwarf2_read_address): Update. * dwarf2expr.c (dwarf_expr_eval): Constify. (read_uleb128): Likewise. (read_sleb128): Likewise. (dwarf2_read_address): Likewise. (require_composition): Likewise. (execute_stack_op): Likewise. * dwarf2-frame.h (struct dwarf2_frame_state_reg) <loc.exp>: Now a "const gdb_byte *". * dwarf2-frame.c (struct dwarf2_frame_state_reg_info) <cfa_exp>: Now const. (no_get_frame_base): Constify. (execute_stack_op): Likewise. (execute_cfa_program): Likewise. (read_encoded_value): Likewise.
Diffstat (limited to 'gdb/dwarf2loc.c')
-rw-r--r--gdb/dwarf2loc.c38
1 files changed, 20 insertions, 18 deletions
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
index 41b67fb..481501b 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -44,7 +44,7 @@
static void
dwarf_expr_frame_base_1 (struct symbol *framefunc, CORE_ADDR pc,
- gdb_byte **start, size_t *length);
+ const gdb_byte **start, size_t *length);
/* A helper function for dealing with location lists. Given a
symbol baton (BATON) and a pc value (PC), find the appropriate
@@ -153,7 +153,7 @@ dwarf_expr_read_mem (void *baton, gdb_byte *buf, CORE_ADDR addr, size_t len)
describing the frame base. Return a pointer to it in START and
its length in LENGTH. */
static void
-dwarf_expr_frame_base (void *baton, gdb_byte **start, size_t * length)
+dwarf_expr_frame_base (void *baton, const gdb_byte **start, size_t * length)
{
/* FIXME: cagney/2003-03-26: This code should be using
get_frame_base_address(), and then implement a dwarf2 specific
@@ -178,7 +178,7 @@ dwarf_expr_frame_base (void *baton, gdb_byte **start, size_t * length)
static void
dwarf_expr_frame_base_1 (struct symbol *framefunc, CORE_ADDR pc,
- gdb_byte **start, size_t *length)
+ const gdb_byte **start, size_t *length)
{
if (SYMBOL_LOCATION_BATON (framefunc) == NULL)
*start = NULL;
@@ -463,7 +463,7 @@ read_pieced_value (struct value *v)
struct dwarf_expr_piece *p = &c->pieces[i];
size_t this_size, this_size_bits;
long dest_offset_bits, source_offset_bits, source_offset;
- gdb_byte *intermediate_buffer;
+ const gdb_byte *intermediate_buffer;
/* Compute size, source, and destination offsets for copying, in
bits. */
@@ -917,7 +917,7 @@ needs_frame_read_mem (void *baton, gdb_byte *buf, CORE_ADDR addr, size_t len)
/* Frame-relative accesses do require a frame. */
static void
-needs_frame_frame_base (void *baton, gdb_byte **start, size_t * length)
+needs_frame_frame_base (void *baton, const gdb_byte **start, size_t * length)
{
static gdb_byte lit0 = DW_OP_lit0;
struct needs_frame_baton *nf_baton = baton;
@@ -1017,12 +1017,12 @@ struct axs_var_loc
LONGEST offset;
};
-static gdb_byte *
+static const gdb_byte *
dwarf2_tracepoint_var_loc (struct symbol *symbol,
struct agent_expr *ax,
struct axs_var_loc *loc,
struct gdbarch *gdbarch,
- gdb_byte *data, gdb_byte *end)
+ const gdb_byte *data, const gdb_byte *end)
{
if (data[0] >= DW_OP_reg0 && data[0] <= DW_OP_reg31)
{
@@ -1044,7 +1044,7 @@ dwarf2_tracepoint_var_loc (struct symbol *symbol,
struct symbol *framefunc;
int frame_reg = 0;
LONGEST frame_offset;
- gdb_byte *base_data;
+ const gdb_byte *base_data;
size_t base_size;
LONGEST base_offset = 0;
@@ -1063,8 +1063,8 @@ dwarf2_tracepoint_var_loc (struct symbol *symbol,
if (base_data[0] >= DW_OP_breg0 && base_data[0] <= DW_OP_breg31)
{
- gdb_byte *buf_end;
-
+ const gdb_byte *buf_end;
+
frame_reg = base_data[0] - DW_OP_breg0;
buf_end = read_sleb128 (base_data + 1,
base_data + base_size, &base_offset);
@@ -1143,9 +1143,9 @@ dwarf2_tracepoint_var_access (struct agent_expr *ax,
static void
dwarf2_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
struct agent_expr *ax, struct axs_value *value,
- gdb_byte *data, int size)
+ const gdb_byte *data, int size)
{
- gdb_byte *end = data + size;
+ const gdb_byte *end = data + size;
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
/* In practice, a variable is not going to be spread across
dozens of registers or memory locations. If someone comes up
@@ -1285,10 +1285,11 @@ locexpr_read_needs_frame (struct symbol *symbol)
/* Describe a single piece of a location, returning an updated
position in the bytecode sequence. */
-static gdb_byte *
+static const gdb_byte *
locexpr_describe_location_piece (struct symbol *symbol, struct ui_file *stream,
CORE_ADDR addr, struct objfile *objfile,
- gdb_byte *data, int size, unsigned int addr_size)
+ const gdb_byte *data, int size,
+ unsigned int addr_size)
{
struct gdbarch *gdbarch = get_objfile_arch (objfile);
int regno;
@@ -1315,7 +1316,7 @@ locexpr_describe_location_piece (struct symbol *symbol, struct ui_file *stream,
struct symbol *framefunc;
int frame_reg = 0;
LONGEST frame_offset;
- gdb_byte *base_data;
+ const gdb_byte *base_data;
size_t base_size;
LONGEST base_offset = 0;
@@ -1335,7 +1336,7 @@ locexpr_describe_location_piece (struct symbol *symbol, struct ui_file *stream,
if (base_data[0] >= DW_OP_breg0 && base_data[0] <= DW_OP_breg31)
{
- gdb_byte *buf_end;
+ const gdb_byte *buf_end;
frame_reg = base_data[0] - DW_OP_breg0;
buf_end = read_sleb128 (base_data + 1,
@@ -1422,10 +1423,11 @@ locexpr_describe_location_piece (struct symbol *symbol, struct ui_file *stream,
static void
locexpr_describe_location_1 (struct symbol *symbol, CORE_ADDR addr,
- struct ui_file *stream, gdb_byte *data, int size,
+ struct ui_file *stream,
+ const gdb_byte *data, int size,
struct objfile *objfile, unsigned int addr_size)
{
- gdb_byte *end = data + size;
+ const gdb_byte *end = data + size;
int piece_done = 0, first_piece = 1, bad = 0;
/* A multi-piece description consists of multiple sequences of bytes