diff options
author | Yao Qi <yao.qi@linaro.org> | 2017-01-25 16:24:44 +0000 |
---|---|---|
committer | Yao Qi <yao.qi@linaro.org> | 2017-01-25 16:24:44 +0000 |
commit | f13a9a0cf7d13b9ea51b0df4b9fa469652f92338 (patch) | |
tree | acf1cdd98977228eb7d17153203a6317ed0859e8 /gdb/testsuite/ChangeLog | |
parent | 5ac95241162bf4729ecaf3c880cdaa846a3aded4 (diff) | |
download | gdb-f13a9a0cf7d13b9ea51b0df4b9fa469652f92338.zip gdb-f13a9a0cf7d13b9ea51b0df4b9fa469652f92338.tar.gz gdb-f13a9a0cf7d13b9ea51b0df4b9fa469652f92338.tar.bz2 |
Use dwarf assembler in gdb.dwarf2/implptr-64bit.exp
This patch adds a DW_OP_implicit_value in dwarf assembler, and uses
dwarf assembler in implptr-64bit.exp. Using dwarf assembler in
implptr-64bit.exp exposes some limitations in dwarf assembler,
- some variables are not evaluated in the caller's context, so we
can not pass variable to assembler, like this
Dwarf::assemble $asm_file {
cu {
version $dwarf_version
addr_size $addr_size
is_64 $is_64
} {
}
and
{DW_AT_type :$struct_label "DW_FORM_ref$ref_addr_size"}
this limitation is fixed by adding "uplevel" and "subst".
- dwarf assembler doesn't emit DW_FORM_ref_addr for label referencing.
this limitation is fixed by adding a new character "%",
{ type %$int_label }
this means we want to emit DW_FORM_ref_addr for label referencing.
- we can't set the form of label referencing offset in dwarf assembler.
Nowadays, dwarf assembler guesses the form of labels, which is
DW_FORM_ref4. However, in implptr-64bit.exp, both DW_FORM_ref4
and DW_FORM_ref8 is used (see REF_ADDR in implptr-64bit.S). This
patch adds the flexibility of setting the form of label reference.
Both of them below are valid,
{DW_AT_type :$struct_label}
{DW_AT_type :$struct_label DW_FORM_ref8}
the former form is the default DW_FORM_ref4.
I compared the .debug_info of objects without and with this patch
applied. There is no changes except abbrev numbers.
gdb/testsuite:
2017-01-25 Andreas Arnez <arnez@linux.vnet.ibm.com>
Yao Qi <yao.qi@linaro.org>
* gdb.dwarf2/implptr-64bit.exp: Use dwarf assembler.
* gdb.dwarf2/implptr-64bit.S: Remove.
* lib/dwarf.exp (Dwarf): Handle character "%". Evaluate some
variables in caller's context. Add DW_OP_implicit_value.
Diffstat (limited to 'gdb/testsuite/ChangeLog')
-rw-r--r-- | gdb/testsuite/ChangeLog | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index aa272e3..28e337a 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2017-01-25 Andreas Arnez <arnez@linux.vnet.ibm.com> + Yao Qi <yao.qi@linaro.org> + + * gdb.dwarf2/implptr-64bit.exp: Use dwarf assembler. + * gdb.dwarf2/implptr-64bit.S: Remove. + * lib/dwarf.exp (Dwarf): Handle character "%". Evaluate some + variables in caller's context. Add DW_OP_implicit_value. + 2017-01-25 Yao Qi <yao.qi@linaro.org> * lib/dwarf.exp (Dwarf::_location): Handle |