aboutsummaryrefslogtreecommitdiff
path: root/gdb/compile
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2020-05-27 11:14:01 -0400
committerSimon Marchi <simon.marchi@efficios.com>2020-05-27 11:15:57 -0400
commit4b167ea1a0f1ff6f02684556e951dab8d48b9fa4 (patch)
tree402be28767b0f35204af185c1b672c597c64d548 /gdb/compile
parent89b07335fe42d6da84c19351ca0c34b11a3c4f8e (diff)
downloadbinutils-4b167ea1a0f1ff6f02684556e951dab8d48b9fa4.zip
binutils-4b167ea1a0f1ff6f02684556e951dab8d48b9fa4.tar.gz
binutils-4b167ea1a0f1ff6f02684556e951dab8d48b9fa4.tar.bz2
Remove dwarf2_per_cu_data::text_offset
This method simply returns the text offset of the objfile associated to the dwarf2_per_cu_data object. Since dwarf2_per_cu_data objects are going to become objfile-independent, we can't keep this method. This patch removes it. Existing callers need to figure out the in the context of which objfile this is being used, and call text_offset on it. Typically, this comes from a symbol baton, where we store the corresponding dwarf2_per_objfile. gdb/ChangeLog: * dwarf2/read.h (struct dwarf2_per_cu_data) <text_offset>: Remove. * dwarf2/read.c (dwarf2_per_cu_data::text_offset): Remove. * dwarf2/loc.c (dwarf2_find_location_expression): Update. (dwarf2_compile_property_to_c): Update. (dwarf2_compile_expr_to_ax): Add dwarf2_per_objfile parameter, use text offset from objfile. (locexpr_tracepoint_var_ref): Update. (locexpr_generate_c_location): Update. (loclist_describe_location): Update. (loclist_tracepoint_var_ref): Update. * dwarf2/compile.h (compile_dwarf_bounds_to_c): Add dwarf2_per_objfile parameter. * dwarf2/loc2c.c (do_compile_dwarf_expr_to_c): Likewise, use text offset from objfile. (compile_dwarf_expr_to_c): Add dwarf2_per_objfile parameter. Change-Id: I56b01ba294733362a3562426a96d48ae051a776f
Diffstat (limited to 'gdb/compile')
-rw-r--r--gdb/compile/compile-loc2c.c20
-rw-r--r--gdb/compile/compile.h13
2 files changed, 23 insertions, 10 deletions
diff --git a/gdb/compile/compile-loc2c.c b/gdb/compile/compile-loc2c.c
index 06a044d..2fd1810 100644
--- a/gdb/compile/compile-loc2c.c
+++ b/gdb/compile/compile-loc2c.c
@@ -583,7 +583,8 @@ do_compile_dwarf_expr_to_c (int indent, string_file *stream,
unsigned int addr_size,
const gdb_byte *op_ptr, const gdb_byte *op_end,
CORE_ADDR *initial,
- struct dwarf2_per_cu_data *per_cu)
+ dwarf2_per_cu_data *per_cu,
+ dwarf2_per_objfile *per_objfile)
{
/* We keep a counter so that labels and other objects we create have
unique names. */
@@ -719,7 +720,7 @@ do_compile_dwarf_expr_to_c (int indent, string_file *stream,
index, not an address. We don't support things like
branching between the address and the TLS op. */
if (op_ptr >= op_end || *op_ptr != DW_OP_GNU_push_tls_address)
- uoffset += per_cu->text_offset ();
+ uoffset += per_objfile->objfile->text_section_offset ();
push (indent, stream, uoffset);
break;
@@ -896,7 +897,7 @@ do_compile_dwarf_expr_to_c (int indent, string_file *stream,
sym, pc,
arch, registers_used, addr_size,
datastart, datastart + datalen,
- NULL, per_cu);
+ NULL, per_cu, per_objfile);
pushf (indent, stream, "%s + %s", fb_name, hex_string (offset));
}
@@ -1077,7 +1078,7 @@ do_compile_dwarf_expr_to_c (int indent, string_file *stream,
sym, pc, arch, registers_used,
addr_size,
cfa_start, cfa_end,
- &text_offset, per_cu);
+ &text_offset, per_cu, per_objfile);
pushf (indent, stream, "%s", cfa_name);
}
}
@@ -1123,11 +1124,12 @@ compile_dwarf_expr_to_c (string_file *stream, const char *result_name,
struct gdbarch *arch, unsigned char *registers_used,
unsigned int addr_size,
const gdb_byte *op_ptr, const gdb_byte *op_end,
- struct dwarf2_per_cu_data *per_cu)
+ dwarf2_per_cu_data *per_cu,
+ dwarf2_per_objfile *per_objfile)
{
do_compile_dwarf_expr_to_c (2, stream, GCC_UINTPTR, result_name, sym, pc,
arch, registers_used, addr_size, op_ptr, op_end,
- NULL, per_cu);
+ NULL, per_cu, per_objfile);
}
/* See compile.h. */
@@ -1140,9 +1142,11 @@ compile_dwarf_bounds_to_c (string_file *stream,
struct gdbarch *arch, unsigned char *registers_used,
unsigned int addr_size,
const gdb_byte *op_ptr, const gdb_byte *op_end,
- struct dwarf2_per_cu_data *per_cu)
+ dwarf2_per_cu_data *per_cu,
+ dwarf2_per_objfile *per_objfile)
{
do_compile_dwarf_expr_to_c (2, stream, "unsigned long ", result_name,
sym, pc, arch, registers_used,
- addr_size, op_ptr, op_end, NULL, per_cu);
+ addr_size, op_ptr, op_end, NULL, per_cu,
+ per_objfile);
}
diff --git a/gdb/compile/compile.h b/gdb/compile/compile.h
index 871031c..73f714a 100644
--- a/gdb/compile/compile.h
+++ b/gdb/compile/compile.h
@@ -21,6 +21,7 @@
struct ui_file;
struct gdbarch;
struct dwarf2_per_cu_data;
+struct dwarf2_per_objfile;
struct symbol;
struct dynamic_prop;
@@ -53,6 +54,9 @@ extern void eval_compile_command (struct command_line *cmd,
OPT_PTR and OP_END are the bounds of the DWARF expression.
PER_CU is the per-CU object used for looking up various other
+ things.
+
+ PER_OBJFILE is the per-objfile object also used for looking up various other
things. */
extern void compile_dwarf_expr_to_c (string_file *stream,
@@ -64,7 +68,8 @@ extern void compile_dwarf_expr_to_c (string_file *stream,
unsigned int addr_size,
const gdb_byte *op_ptr,
const gdb_byte *op_end,
- struct dwarf2_per_cu_data *per_cu);
+ dwarf2_per_cu_data *per_cu,
+ dwarf2_per_objfile *per_objfile);
/* Compile a DWARF bounds expression to C, suitable for use by the
compiler.
@@ -88,6 +93,9 @@ extern void compile_dwarf_expr_to_c (string_file *stream,
OPT_PTR and OP_END are the bounds of the DWARF expression.
PER_CU is the per-CU object used for looking up various other
+ things.
+
+ PER_OBJFILE is the per-objfile object also used for looking up various other
things. */
extern void compile_dwarf_bounds_to_c (string_file *stream,
@@ -99,7 +107,8 @@ extern void compile_dwarf_bounds_to_c (string_file *stream,
unsigned int addr_size,
const gdb_byte *op_ptr,
const gdb_byte *op_end,
- struct dwarf2_per_cu_data *per_cu);
+ dwarf2_per_cu_data *per_cu,
+ dwarf2_per_objfile *per_objfile);
extern void compile_print_value (struct value *val, void *data_voidp);