diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2017-02-20 20:53:21 +0100 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2017-02-20 21:00:55 +0100 |
commit | 216f72a1ed20a8c9cdaea74e03be24601a1ed974 (patch) | |
tree | 1904283f1a601d402aeeab7563dafd8b1cb9a072 /gdb/testsuite/gdb.arch | |
parent | 43988095a5a4c53e6d5b00a6335454919c4fac55 (diff) | |
download | gdb-216f72a1ed20a8c9cdaea74e03be24601a1ed974.zip gdb-216f72a1ed20a8c9cdaea74e03be24601a1ed974.tar.gz gdb-216f72a1ed20a8c9cdaea74e03be24601a1ed974.tar.bz2 |
DWARF-5: call sites
this patch updates all call sites related DWARF-5 renames.
gdb/ChangeLog
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* block.c (call_site_for_pc): Rename DW_OP_GNU_*, DW_TAG_GNU_* and
DW_AT_GNU_*.
* common/common-exceptions.h (enum errors): Likewise.
* dwarf2-frame.c (class dwarf_expr_executor): Likewise.
* dwarf2expr.c (dwarf_block_to_dwarf_reg)
(dwarf_expr_context::execute_stack_op): Likewise.
* dwarf2expr.h (struct dwarf_expr_context, struct dwarf_expr_piece):
Likewise.
* dwarf2loc.c (dwarf_evaluate_loc_desc::get_base_type)
(dwarf_evaluate_loc_desc::push_dwarf_reg_entry_value)
(show_entry_values_debug, call_site_to_target_addr)
(func_addr_to_tail_call_list, func_verify_no_selftailcall)
(dwarf_expr_reg_to_entry_parameter, dwarf_entry_parameter_to_value)
(entry_data_value_free_closure, value_of_dwarf_reg_entry)
(value_of_dwarf_block_entry, indirect_pieced_value)
(symbol_needs_eval_context::push_dwarf_reg_entry_value):
(disassemble_dwarf_expression): Likewise.
* dwarf2read.c (process_die, inherit_abstract_dies)
(read_call_site_scope): Likewise.
* gdbtypes.h (struct func_type, struct call_site_parameter)
(struct call_site): Likewise.
* stack.c (read_frame_arg): Likewise.
* std-operator.def (OP_VAR_ENTRY_VALUE): Likewise.
gdb/doc/ChangeLog
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.texinfo (Print Settings, Tail Call Frames): Rename DW_OP_GNU_*,
DW_TAG_GNU_* and DW_AT_GNU_*.
gdb/testsuite/ChangeLog
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.arch/amd64-entry-value-param-dwarf5.S: New file.
* gdb.arch/amd64-entry-value-param-dwarf5.c: New file.
* gdb.arch/amd64-entry-value-param-dwarf5.exp: New file.
* gdb.arch/amd64-entry-value.exp: Rename DW_OP_GNU_*, DW_TAG_GNU_* and
DW_AT_GNU_*.
Diffstat (limited to 'gdb/testsuite/gdb.arch')
4 files changed, 791 insertions, 3 deletions
diff --git a/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.S b/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.S new file mode 100644 index 0000000..8b8ee94 --- /dev/null +++ b/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.S @@ -0,0 +1,699 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2012-2017 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* This file is compiled from gdb.arch/amd64-entry-value-param-dwarf5.c + using -g -dA -S -O2. */ + + .file "amd64-entry-value-param-dwarf5.c" + .text +.Ltext0: + .p2align 4,,15 + .type foo.isra.0.constprop.2, @function +foo.isra.0.constprop.2: +.LFB4: + /* gdb.arch/amd64-entry-value-param-dwarf5.c:21 */ +.LM1: + .cfi_startproc +.LVL0: +/* BLOCK 2 freq:10000 seq:0 */ +/* PRED: ENTRY [100.0%] (FALLTHRU) */ + /* gdb.arch/amd64-entry-value-param-dwarf5.c:26 */ +.LM2: + movl vv(%rip), %eax + addl $1, %eax + movl %eax, vv(%rip) + /* gdb.arch/amd64-entry-value-param-dwarf5.c:27 */ +.LM3: + leal 3(%rdi), %eax +/* SUCC: EXIT [100.0%] */ + /* gdb.arch/amd64-entry-value-param-dwarf5.c:28 */ +.LM4: + ret + .cfi_endproc +.LFE4: + .size foo.isra.0.constprop.2, .-foo.isra.0.constprop.2 + .p2align 4,,15 + .type bar.constprop.1, @function +bar.constprop.1: +.LFB5: + /* gdb.arch/amd64-entry-value-param-dwarf5.c:31 */ +.LM5: + .cfi_startproc +/* BLOCK 2 freq:10000 seq:0 */ +/* PRED: ENTRY [100.0%] (FALLTHRU) */ +.LVL1: + /* gdb.arch/amd64-entry-value-param-dwarf5.c:33 */ +.LM6: + movl $10, %edi + call foo.isra.0.constprop.2 +.LVL2: + movl $10, %edi + movl %eax, %edx + call foo.isra.0.constprop.2 +.LVL3: + movl $16, %edi + addl %eax, %edx + call foo.isra.0.constprop.2 +.LVL4: + leal 10(%rdx,%rax), %eax +/* SUCC: EXIT [100.0%] */ + /* gdb.arch/amd64-entry-value-param-dwarf5.c:34 */ +.LM7: + ret + .cfi_endproc +.LFE5: + .size bar.constprop.1, .-bar.constprop.1 + .section .text.startup,"ax",@progbits + .p2align 4,,15 + .globl main + .type main, @function +main: +.LFB2: + /* gdb.arch/amd64-entry-value-param-dwarf5.c:38 */ +.LM8: + .cfi_startproc +/* BLOCK 2 freq:10000 seq:0 */ +/* PRED: ENTRY [100.0%] (FALLTHRU) */ +/* SUCC: EXIT [100.0%] (ABNORMAL,SIBCALL) */ + /* gdb.arch/amd64-entry-value-param-dwarf5.c:39 */ +.LM9: + jmp bar.constprop.1 +.LVL5: + .cfi_endproc +.LFE2: + .size main, .-main + .comm vv,4,4 + .text +.Letext0: + .section .debug_info,"",@progbits +.Ldebug_info0: + .long 0x199 /* Length of Compilation Unit Info */ + .value 0x5 /* DWARF version number */ + .byte 0x1 /* DW_UT_compile */ + .byte 0x8 /* Pointer Size (in bytes) */ + .long .Ldebug_abbrev0 /* Offset Into Abbrev. Section */ + .uleb128 0xa /* (DIE (0xc) DW_TAG_compile_unit) */ + .long .LASF2 /* DW_AT_producer: "GNU C11 7.0.1 20170218 (experimental) -mtune=generic -march=x86-64 -gdwarf-5 -O2" */ + .byte 0x1d /* DW_AT_language */ + .long .LASF0 /* DW_AT_name: "gdb.arch/amd64-entry-value-param-dwarf5.c" */ + .long .LASF1 /* DW_AT_comp_dir: "" */ + .long .LLRL0 /* DW_AT_ranges */ + .quad 0 /* DW_AT_low_pc */ + .long .Ldebug_line0 /* DW_AT_stmt_list */ + .uleb128 0xb /* (DIE (0x2a) DW_TAG_variable) */ + .ascii "vv\0" /* DW_AT_name */ + .byte 0x1 /* DW_AT_decl_file (gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .byte 0x12 /* DW_AT_decl_line */ + .long 0x45 /* DW_AT_type */ + /* DW_AT_external */ + .uleb128 0x9 /* DW_AT_location */ + .byte 0x3 /* DW_OP_addr */ + .quad vv + .uleb128 0xc /* (DIE (0x3e) DW_TAG_base_type) */ + .byte 0x4 /* DW_AT_byte_size */ + .byte 0x5 /* DW_AT_encoding */ + .ascii "int\0" /* DW_AT_name */ + .uleb128 0xd /* (DIE (0x45) DW_TAG_volatile_type) */ + .long 0x3e /* DW_AT_type */ + .uleb128 0xe /* (DIE (0x4a) DW_TAG_subprogram) */ + /* DW_AT_external */ + .long .LASF3 /* DW_AT_name: "main" */ + .byte 0x1 /* DW_AT_decl_file (gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .byte 0x25 /* DW_AT_decl_line */ + /* DW_AT_prototyped */ + .long 0x3e /* DW_AT_type */ + .quad .LFB2 /* DW_AT_low_pc */ + .quad .LFE2-.LFB2 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_AT_frame_base */ + .byte 0x9c /* DW_OP_call_frame_cfa */ + /* DW_AT_call_all_calls */ + .long 0x79 /* DW_AT_sibling */ + .uleb128 0xf /* (DIE (0x6b) DW_TAG_call_site) */ + .quad .LVL5 /* DW_AT_call_return_pc */ + /* DW_AT_call_tail_call */ + .long 0x125 /* DW_AT_call_origin */ + .byte 0 /* end of children of DIE 0x4a */ + .uleb128 0x5 /* (DIE (0x79) DW_TAG_subprogram) */ + .ascii "bar\0" /* DW_AT_name */ + /* DW_AT_decl_file (1, gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .byte 0x1f /* DW_AT_decl_line */ + /* DW_AT_prototyped */ + .long 0x3e /* DW_AT_type */ + .byte 0x1 /* DW_AT_inline */ + .long 0x91 /* DW_AT_sibling */ + .uleb128 0x1 /* (DIE (0x88) DW_TAG_formal_parameter) */ + .ascii "x\0" /* DW_AT_name */ + /* DW_AT_decl_file (1, gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .byte 0x1f /* DW_AT_decl_line */ + .long 0x3e /* DW_AT_type */ + .byte 0 /* end of children of DIE 0x79 */ + .uleb128 0x5 /* (DIE (0x91) DW_TAG_subprogram) */ + .ascii "foo\0" /* DW_AT_name */ + /* DW_AT_decl_file (1, gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .byte 0x15 /* DW_AT_decl_line */ + /* DW_AT_prototyped */ + .long 0x3e /* DW_AT_type */ + .byte 0 /* DW_AT_inline */ + .long 0xd1 /* DW_AT_sibling */ + .uleb128 0x1 /* (DIE (0xa0) DW_TAG_formal_parameter) */ + .ascii "x\0" /* DW_AT_name */ + /* DW_AT_decl_file (1, gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .byte 0x15 /* DW_AT_decl_line */ + .long 0x3e /* DW_AT_type */ + .uleb128 0x1 /* (DIE (0xa8) DW_TAG_formal_parameter) */ + .ascii "y\0" /* DW_AT_name */ + /* DW_AT_decl_file (1, gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .byte 0x15 /* DW_AT_decl_line */ + .long 0x3e /* DW_AT_type */ + .uleb128 0x1 /* (DIE (0xb0) DW_TAG_formal_parameter) */ + .ascii "z\0" /* DW_AT_name */ + /* DW_AT_decl_file (1, gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .byte 0x15 /* DW_AT_decl_line */ + .long 0x3e /* DW_AT_type */ + .uleb128 0x2 /* (DIE (0xb8) DW_TAG_variable) */ + .ascii "a\0" /* DW_AT_name */ + /* DW_AT_decl_file (1, gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .byte 0x17 /* DW_AT_decl_line */ + .long 0x3e /* DW_AT_type */ + .uleb128 0x2 /* (DIE (0xc0) DW_TAG_variable) */ + .ascii "b\0" /* DW_AT_name */ + /* DW_AT_decl_file (1, gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .byte 0x18 /* DW_AT_decl_line */ + .long 0x3e /* DW_AT_type */ + .uleb128 0x2 /* (DIE (0xc8) DW_TAG_variable) */ + .ascii "c\0" /* DW_AT_name */ + /* DW_AT_decl_file (1, gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .byte 0x19 /* DW_AT_decl_line */ + .long 0x3e /* DW_AT_type */ + .byte 0 /* end of children of DIE 0x91 */ + .uleb128 0x10 /* (DIE (0xd1) DW_TAG_subprogram) */ + .long 0x91 /* DW_AT_abstract_origin */ + .quad .LFB4 /* DW_AT_low_pc */ + .quad .LFE4-.LFB4 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_AT_frame_base */ + .byte 0x9c /* DW_OP_call_frame_cfa */ + /* DW_AT_call_all_calls */ + .long 0x125 /* DW_AT_sibling */ + .uleb128 0x6 /* (DIE (0xec) DW_TAG_formal_parameter) */ + .long 0xa0 /* DW_AT_abstract_origin */ + .uleb128 0x1 /* DW_AT_location */ + .byte 0x55 /* DW_OP_reg5 */ + .uleb128 0x6 /* (DIE (0xf3) DW_TAG_formal_parameter) */ + .long 0xa8 /* DW_AT_abstract_origin */ + .uleb128 0x6 /* DW_AT_location */ + .byte 0xfa /* DW_OP_GNU_parameter_ref */ + .long 0xa8 + .byte 0x9f /* DW_OP_stack_value */ + .uleb128 0x7 /* (DIE (0xff) DW_TAG_variable) */ + .long 0xb8 /* DW_AT_abstract_origin */ + .uleb128 0x5 /* DW_AT_location */ + .byte 0x75 /* DW_OP_breg5 */ + .sleb128 0 + .byte 0x31 /* DW_OP_lit1 */ + .byte 0x24 /* DW_OP_shl */ + .byte 0x9f /* DW_OP_stack_value */ + .uleb128 0x7 /* (DIE (0x10a) DW_TAG_variable) */ + .long 0xc0 /* DW_AT_abstract_origin */ + .uleb128 0x8 /* DW_AT_location */ + .byte 0xfa /* DW_OP_GNU_parameter_ref */ + .long 0xa8 + .byte 0x31 /* DW_OP_lit1 */ + .byte 0x24 /* DW_OP_shl */ + .byte 0x9f /* DW_OP_stack_value */ + .uleb128 0x11 /* (DIE (0x118) DW_TAG_variable) */ + .long 0xc8 /* DW_AT_abstract_origin */ + .byte 0x6 /* DW_AT_const_value */ + .uleb128 0x8 /* (DIE (0x11e) DW_TAG_formal_parameter) */ + .long 0xb0 /* DW_AT_abstract_origin */ + .byte 0x3 /* DW_AT_const_value */ + .byte 0 /* end of children of DIE 0xd1 */ + .uleb128 0x12 /* (DIE (0x125) DW_TAG_subprogram) */ + .long 0x79 /* DW_AT_abstract_origin */ + .quad .LFB5 /* DW_AT_low_pc */ + .quad .LFE5-.LFB5 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_AT_frame_base */ + .byte 0x9c /* DW_OP_call_frame_cfa */ + /* DW_AT_call_all_calls */ + .uleb128 0x8 /* (DIE (0x13c) DW_TAG_formal_parameter) */ + .long 0x88 /* DW_AT_abstract_origin */ + .byte 0xa /* DW_AT_const_value */ + .uleb128 0x9 /* (DIE (0x142) DW_TAG_call_site) */ + .quad .LVL2 /* DW_AT_call_return_pc */ + .long 0xd1 /* DW_AT_call_origin */ + .long 0x161 /* DW_AT_sibling */ + .uleb128 0x3 /* (DIE (0x153) DW_TAG_call_site_parameter) */ + .uleb128 0x1 /* DW_AT_location */ + .byte 0x55 /* DW_OP_reg5 */ + .uleb128 0x2 /* DW_AT_call_value */ + .byte 0x75 /* DW_OP_breg5 */ + .sleb128 0 + .uleb128 0x4 /* (DIE (0x159) DW_TAG_call_site_parameter) */ + .long 0xa8 /* DW_AT_call_parameter */ + .uleb128 0x1 /* DW_AT_call_value */ + .byte 0x32 /* DW_OP_lit2 */ + .byte 0 /* end of children of DIE 0x142 */ + .uleb128 0x9 /* (DIE (0x161) DW_TAG_call_site) */ + .quad .LVL3 /* DW_AT_call_return_pc */ + .long 0xd1 /* DW_AT_call_origin */ + .long 0x180 /* DW_AT_sibling */ + .uleb128 0x3 /* (DIE (0x172) DW_TAG_call_site_parameter) */ + .uleb128 0x1 /* DW_AT_location */ + .byte 0x55 /* DW_OP_reg5 */ + .uleb128 0x2 /* DW_AT_call_value */ + .byte 0x75 /* DW_OP_breg5 */ + .sleb128 0 + .uleb128 0x4 /* (DIE (0x178) DW_TAG_call_site_parameter) */ + .long 0xa8 /* DW_AT_call_parameter */ + .uleb128 0x1 /* DW_AT_call_value */ + .byte 0x34 /* DW_OP_lit4 */ + .byte 0 /* end of children of DIE 0x161 */ + .uleb128 0x13 /* (DIE (0x180) DW_TAG_call_site) */ + .quad .LVL4 /* DW_AT_call_return_pc */ + .long 0xd1 /* DW_AT_call_origin */ + .uleb128 0x3 /* (DIE (0x18d) DW_TAG_call_site_parameter) */ + .uleb128 0x1 /* DW_AT_location */ + .byte 0x55 /* DW_OP_reg5 */ + .uleb128 0x2 /* DW_AT_call_value */ + .byte 0x75 /* DW_OP_breg5 */ + .sleb128 0 + .uleb128 0x4 /* (DIE (0x193) DW_TAG_call_site_parameter) */ + .long 0xa8 /* DW_AT_call_parameter */ + .uleb128 0x1 /* DW_AT_call_value */ + .byte 0x3a /* DW_OP_lit10 */ + .byte 0 /* end of children of DIE 0x180 */ + .byte 0 /* end of children of DIE 0x125 */ + .byte 0 /* end of children of DIE 0xc */ + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .uleb128 0x1 /* (abbrev code) */ + .uleb128 0x5 /* (TAG: DW_TAG_formal_parameter) */ + .byte 0 /* DW_children_no */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .uleb128 0x3a /* (DW_AT_decl_file) */ + .uleb128 0x21 /* (DW_FORM_implicit_const) */ + .sleb128 1 /* (gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .uleb128 0x3b /* (DW_AT_decl_line) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0 + .byte 0 + .uleb128 0x2 /* (abbrev code) */ + .uleb128 0x34 /* (TAG: DW_TAG_variable) */ + .byte 0 /* DW_children_no */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .uleb128 0x3a /* (DW_AT_decl_file) */ + .uleb128 0x21 /* (DW_FORM_implicit_const) */ + .sleb128 1 /* (gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .uleb128 0x3b /* (DW_AT_decl_line) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0 + .byte 0 + .uleb128 0x3 /* (abbrev code) */ + .uleb128 0x49 /* (TAG: DW_TAG_call_site_parameter) */ + .byte 0 /* DW_children_no */ + .uleb128 0x2 /* (DW_AT_location) */ + .uleb128 0x18 /* (DW_FORM_exprloc) */ + .uleb128 0x7e /* (DW_AT_call_value) */ + .uleb128 0x18 /* (DW_FORM_exprloc) */ + .byte 0 + .byte 0 + .uleb128 0x4 /* (abbrev code) */ + .uleb128 0x49 /* (TAG: DW_TAG_call_site_parameter) */ + .byte 0 /* DW_children_no */ + .uleb128 0x80 /* (DW_AT_call_parameter) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x7e /* (DW_AT_call_value) */ + .uleb128 0x18 /* (DW_FORM_exprloc) */ + .byte 0 + .byte 0 + .uleb128 0x5 /* (abbrev code) */ + .uleb128 0x2e /* (TAG: DW_TAG_subprogram) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .uleb128 0x3a /* (DW_AT_decl_file) */ + .uleb128 0x21 /* (DW_FORM_implicit_const) */ + .sleb128 1 /* (gdb.arch/amd64-entry-value-param-dwarf5.c) */ + .uleb128 0x3b /* (DW_AT_decl_line) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x27 /* (DW_AT_prototyped) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x20 /* (DW_AT_inline) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x1 /* (DW_AT_sibling) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0 + .byte 0 + .uleb128 0x6 /* (abbrev code) */ + .uleb128 0x5 /* (TAG: DW_TAG_formal_parameter) */ + .byte 0 /* DW_children_no */ + .uleb128 0x31 /* (DW_AT_abstract_origin) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x2 /* (DW_AT_location) */ + .uleb128 0x18 /* (DW_FORM_exprloc) */ + .byte 0 + .byte 0 + .uleb128 0x7 /* (abbrev code) */ + .uleb128 0x34 /* (TAG: DW_TAG_variable) */ + .byte 0 /* DW_children_no */ + .uleb128 0x31 /* (DW_AT_abstract_origin) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x2 /* (DW_AT_location) */ + .uleb128 0x18 /* (DW_FORM_exprloc) */ + .byte 0 + .byte 0 + .uleb128 0x8 /* (abbrev code) */ + .uleb128 0x5 /* (TAG: DW_TAG_formal_parameter) */ + .byte 0 /* DW_children_no */ + .uleb128 0x31 /* (DW_AT_abstract_origin) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x1c /* (DW_AT_const_value) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .byte 0 + .byte 0 + .uleb128 0x9 /* (abbrev code) */ + .uleb128 0x48 /* (TAG: DW_TAG_call_site) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x7d /* (DW_AT_call_return_pc) */ + .uleb128 0x1 /* (DW_FORM_addr) */ + .uleb128 0x7f /* (DW_AT_call_origin) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x1 /* (DW_AT_sibling) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0 + .byte 0 + .uleb128 0xa /* (abbrev code) */ + .uleb128 0x11 /* (TAG: DW_TAG_compile_unit) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x25 /* (DW_AT_producer) */ + .uleb128 0xe /* (DW_FORM_strp) */ + .uleb128 0x13 /* (DW_AT_language) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x1f /* (DW_FORM_line_strp) */ + .uleb128 0x1b /* (DW_AT_comp_dir) */ + .uleb128 0x1f /* (DW_FORM_line_strp) */ + .uleb128 0x55 /* (DW_AT_ranges) */ + .uleb128 0x17 /* (DW_FORM_sec_offset) */ + .uleb128 0x11 /* (DW_AT_low_pc) */ + .uleb128 0x1 /* (DW_FORM_addr) */ + .uleb128 0x10 /* (DW_AT_stmt_list) */ + .uleb128 0x17 /* (DW_FORM_sec_offset) */ + .byte 0 + .byte 0 + .uleb128 0xb /* (abbrev code) */ + .uleb128 0x34 /* (TAG: DW_TAG_variable) */ + .byte 0 /* DW_children_no */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .uleb128 0x3a /* (DW_AT_decl_file) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3b /* (DW_AT_decl_line) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x3f /* (DW_AT_external) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x2 /* (DW_AT_location) */ + .uleb128 0x18 /* (DW_FORM_exprloc) */ + .byte 0 + .byte 0 + .uleb128 0xc /* (abbrev code) */ + .uleb128 0x24 /* (TAG: DW_TAG_base_type) */ + .byte 0 /* DW_children_no */ + .uleb128 0xb /* (DW_AT_byte_size) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3e /* (DW_AT_encoding) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .byte 0 + .byte 0 + .uleb128 0xd /* (abbrev code) */ + .uleb128 0x35 /* (TAG: DW_TAG_volatile_type) */ + .byte 0 /* DW_children_no */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0 + .byte 0 + .uleb128 0xe /* (abbrev code) */ + .uleb128 0x2e /* (TAG: DW_TAG_subprogram) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x3f /* (DW_AT_external) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0xe /* (DW_FORM_strp) */ + .uleb128 0x3a /* (DW_AT_decl_file) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3b /* (DW_AT_decl_line) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x27 /* (DW_AT_prototyped) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x11 /* (DW_AT_low_pc) */ + .uleb128 0x1 /* (DW_FORM_addr) */ + .uleb128 0x12 /* (DW_AT_high_pc) */ + .uleb128 0x7 /* (DW_FORM_data8) */ + .uleb128 0x40 /* (DW_AT_frame_base) */ + .uleb128 0x18 /* (DW_FORM_exprloc) */ + .uleb128 0x7a /* (DW_AT_call_all_calls) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x1 /* (DW_AT_sibling) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0 + .byte 0 + .uleb128 0xf /* (abbrev code) */ + .uleb128 0x48 /* (TAG: DW_TAG_call_site) */ + .byte 0 /* DW_children_no */ + .uleb128 0x7d /* (DW_AT_call_return_pc) */ + .uleb128 0x1 /* (DW_FORM_addr) */ + .uleb128 0x82 /* (DW_AT_call_tail_call) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x7f /* (DW_AT_call_origin) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0 + .byte 0 + .uleb128 0x10 /* (abbrev code) */ + .uleb128 0x2e /* (TAG: DW_TAG_subprogram) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x31 /* (DW_AT_abstract_origin) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x11 /* (DW_AT_low_pc) */ + .uleb128 0x1 /* (DW_FORM_addr) */ + .uleb128 0x12 /* (DW_AT_high_pc) */ + .uleb128 0x7 /* (DW_FORM_data8) */ + .uleb128 0x40 /* (DW_AT_frame_base) */ + .uleb128 0x18 /* (DW_FORM_exprloc) */ + .uleb128 0x7a /* (DW_AT_call_all_calls) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .uleb128 0x1 /* (DW_AT_sibling) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0 + .byte 0 + .uleb128 0x11 /* (abbrev code) */ + .uleb128 0x34 /* (TAG: DW_TAG_variable) */ + .byte 0 /* DW_children_no */ + .uleb128 0x31 /* (DW_AT_abstract_origin) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x1c /* (DW_AT_const_value) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .byte 0 + .byte 0 + .uleb128 0x12 /* (abbrev code) */ + .uleb128 0x2e /* (TAG: DW_TAG_subprogram) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x31 /* (DW_AT_abstract_origin) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x11 /* (DW_AT_low_pc) */ + .uleb128 0x1 /* (DW_FORM_addr) */ + .uleb128 0x12 /* (DW_AT_high_pc) */ + .uleb128 0x7 /* (DW_FORM_data8) */ + .uleb128 0x40 /* (DW_AT_frame_base) */ + .uleb128 0x18 /* (DW_FORM_exprloc) */ + .uleb128 0x7a /* (DW_AT_call_all_calls) */ + .uleb128 0x19 /* (DW_FORM_flag_present) */ + .byte 0 + .byte 0 + .uleb128 0x13 /* (abbrev code) */ + .uleb128 0x48 /* (TAG: DW_TAG_call_site) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x7d /* (DW_AT_call_return_pc) */ + .uleb128 0x1 /* (DW_FORM_addr) */ + .uleb128 0x7f /* (DW_AT_call_origin) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0 + .byte 0 + .byte 0 + .section .debug_aranges,"",@progbits + .long 0x3c /* Length of Address Ranges Info */ + .value 0x2 /* DWARF Version */ + .long .Ldebug_info0 /* Offset of Compilation Unit Info */ + .byte 0x8 /* Size of Address */ + .byte 0 /* Size of Segment Descriptor */ + .value 0 /* Pad to 16 byte boundary */ + .value 0 + .quad .Ltext0 /* Address */ + .quad .Letext0-.Ltext0 /* Length */ + .quad .LFB2 /* Address */ + .quad .LFE2-.LFB2 /* Length */ + .quad 0 + .quad 0 + .section .debug_rnglists,"",@progbits +.Ldebug_ranges0: + .long .Ldebug_ranges3-.Ldebug_ranges2 /* Length of Range Lists */ +.Ldebug_ranges2: + .value 0x5 /* DWARF Version */ + .byte 0x8 /* Address Size */ + .byte 0 /* Segment Size */ + .long 0 /* Offset Entry Count */ +.LLRL0: + .byte 0x7 /* DW_RLE_start_length (*.LLRL0) */ + .quad .Ltext0 /* Range begin address (*.LLRL0) */ + .uleb128 .Letext0-.Ltext0 /* Range length (*.LLRL0) */ + .byte 0x7 /* DW_RLE_start_length (*.LLRL0) */ + .quad .LFB2 /* Range begin address (*.LLRL0) */ + .uleb128 .LFE2-.LFB2 /* Range length (*.LLRL0) */ + .byte 0 /* DW_RLE_end_of_list (*.LLRL0) */ +.Ldebug_ranges3: + .section .debug_line,"",@progbits +.Ldebug_line0: + .long .LELT0-.LSLT0 /* Length of Source Line Info */ +.LSLT0: + .value 0x5 /* DWARF Version */ + .byte 0x8 /* Address Size */ + .byte 0 /* Segment Size */ + .long .LELTP0-.LASLTP0 /* Prolog Length */ +.LASLTP0: + .byte 0x1 /* Minimum Instruction Length */ + .byte 0x1 /* Maximum Operations Per Instruction */ + .byte 0x1 /* Default is_stmt_start flag */ + .byte 0xf6 /* Line Base Value (Special Opcodes) */ + .byte 0xf2 /* Line Range Value (Special Opcodes) */ + .byte 0xd /* Special Opcode Base */ + .byte 0 /* opcode: 0x1 has 0 args */ + .byte 0x1 /* opcode: 0x2 has 1 args */ + .byte 0x1 /* opcode: 0x3 has 1 args */ + .byte 0x1 /* opcode: 0x4 has 1 args */ + .byte 0x1 /* opcode: 0x5 has 1 args */ + .byte 0 /* opcode: 0x6 has 0 args */ + .byte 0 /* opcode: 0x7 has 0 args */ + .byte 0 /* opcode: 0x8 has 0 args */ + .byte 0x1 /* opcode: 0x9 has 1 args */ + .byte 0 /* opcode: 0xa has 0 args */ + .byte 0 /* opcode: 0xb has 0 args */ + .byte 0x1 /* opcode: 0xc has 1 args */ + .byte 0x1 /* Directory entry format count */ + .uleb128 0x1 /* DW_LNCT_path */ + .uleb128 0x1f /* DW_FORM_line_strp */ + .uleb128 0x2 /* Directories count */ + .long .LASF1 /* Directory Entry: 0: "" */ + .long .LASF4 /* Directory Entry: 0: "gdb.arch" */ + .byte 0x2 /* File name entry format count */ + .uleb128 0x1 /* DW_LNCT_path */ + .uleb128 0x1f /* DW_FORM_line_strp */ + .uleb128 0x2 /* DW_LNCT_directory_index */ + .uleb128 0xb /* DW_FORM_data1 */ + .uleb128 0x2 /* File names count */ + .long .LASF0 /* File Entry: 0: "gdb.arch/amd64-entry-value-param-dwarf5.c" */ + .byte 0 + .long .LASF5 /* File Entry: 0: "amd64-entry-value-param-dwarf5.c" */ + .byte 0x1 +.LELTP0: + .byte 0 /* set address *.LM8 */ + .uleb128 0x9 + .byte 0x2 + .quad .LM8 + .byte 0x3c /* line 38 */ + .byte 0 /* set address *.LM9 */ + .uleb128 0x9 + .byte 0x2 + .quad .LM9 + .byte 0x18 /* line 39 */ + .byte 0 /* set address *.LFE2 */ + .uleb128 0x9 + .byte 0x2 + .quad .LFE2 + .byte 0 /* end sequence */ + .uleb128 0x1 + .byte 0x1 + .byte 0 /* set address *.LM1 */ + .uleb128 0x9 + .byte 0x2 + .quad .LM1 + .byte 0x2b /* line 21 */ + .byte 0 /* set address *.LM2 */ + .uleb128 0x9 + .byte 0x2 + .quad .LM2 + .byte 0x1c /* line 26 */ + .byte 0 /* set address *.LM3 */ + .uleb128 0x9 + .byte 0x2 + .quad .LM3 + .byte 0x18 /* line 27 */ + .byte 0 /* set address *.LM4 */ + .uleb128 0x9 + .byte 0x2 + .quad .LM4 + .byte 0x18 /* line 28 */ + .byte 0 /* set address *.LM5 */ + .uleb128 0x9 + .byte 0x2 + .quad .LM5 + .byte 0x1a /* line 31 */ + .byte 0 /* set address *.LM6 */ + .uleb128 0x9 + .byte 0x2 + .quad .LM6 + .byte 0x19 /* line 33 */ + .byte 0 /* set address *.LM7 */ + .uleb128 0x9 + .byte 0x2 + .quad .LM7 + .byte 0x18 /* line 34 */ + .byte 0 /* set address *.Letext0 */ + .uleb128 0x9 + .byte 0x2 + .quad .Letext0 + .byte 0 /* end sequence */ + .uleb128 0x1 + .byte 0x1 +.LELT0: + .section .debug_str,"MS",@progbits,1 +.LASF2: + .string "GNU C11 7.0.1 20170218 (experimental) -mtune=generic -march=x86-64 -gdwarf-5 -O2" +.LASF3: + .string "main" + .section .debug_line_str,"MS",@progbits,1 +.LASF5: + .string "amd64-entry-value-param-dwarf5.c" +.LASF0: + .string "gdb.arch/amd64-entry-value-param-dwarf5.c" +.LASF1: + .string "" +.LASF4: + .string "gdb.arch" + .ident "GCC: (GNU) 7.0.1 20170218 (experimental)" + .section .note.GNU-stack,"",@progbits diff --git a/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.c b/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.c new file mode 100644 index 0000000..d677516 --- /dev/null +++ b/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.c @@ -0,0 +1,40 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2012-2017 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +volatile int vv; + +static __attribute__((noinline)) int +foo (int x, int y, int z) +{ + int a = x * 2; + int b = y * 2; + int c = z * 2; + vv++; /* break-here */ + return x + z; +} + +static __attribute__((noinline)) int +bar (int x) +{ + return foo (x, 2, 3) + foo (x, 4, 3) + foo (x + 6, x, 3) + x; +} + +int +main (void) +{ + return bar (10); +} diff --git a/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.exp b/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.exp new file mode 100644 index 0000000..0357ff4 --- /dev/null +++ b/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.exp @@ -0,0 +1,49 @@ +# Copyright (C) 2012-2017 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +standard_testfile .S .c +set opts {} + +if [info exists COMPILE] { + # make check RUNTESTFLAGS="gdb.arch/amd64-entry-value-param-dwarf5.exp COMPILE=1" + set srcfile ${srcfile2} + lappend opts optimize=-O2 additional_flags=-gdwarf-5 +} elseif { ![istarget x86_64-*-* ] || ![is_lp64_target] } { + verbose "Skipping amd64-entry-value-param-dwarf5." + return +} + +if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} $opts] } { + return -1 +} + +if ![runto_main] { + return -1 +} + +set srcfile $srcfile2 +gdb_breakpoint [gdb_get_line_number "break-here"] + +gdb_continue_to_breakpoint "break-here" ".* break-here .*" +gdb_test "p y" " = 2" +gdb_test "p b" " = 4" + +gdb_continue_to_breakpoint "break-here" ".* break-here .*" +gdb_test "p y" " = 4" +gdb_test "p b" " = 8" + +gdb_continue_to_breakpoint "break-here" ".* break-here .*" +gdb_test "p y" " = 10" +gdb_test "p b" " = 20" diff --git a/gdb/testsuite/gdb.arch/amd64-entry-value.exp b/gdb/testsuite/gdb.arch/amd64-entry-value.exp index ee6bff5..d041b37 100644 --- a/gdb/testsuite/gdb.arch/amd64-entry-value.exp +++ b/gdb/testsuite/gdb.arch/amd64-entry-value.exp @@ -159,7 +159,7 @@ gdb_test_no_output "set print entry-values default" "entry_invalid: set print en gdb_test "frame" {\(inv=<optimized out>\).*} "entry_invalid: frame: default" -# Test @entry values for DW_AT_GNU_call_site_data_value parameters. +# Test @entry values for DW_AT_call_data_value parameters. gdb_continue_to_breakpoint "entry_reference: reference" @@ -188,7 +188,7 @@ gdb_test "p regparam@entry" " = \\(int &\\) @$addr: 1" "entry_reference: p regpa gdb_test "p ®param@entry" " = \\(int \\*\\) $addr" "entry_reference: p ®param@entry" gdb_test "p regcopy" " = 1" "entry_reference: p regcopy" gdb_test "p nodataparam" " = \\(int &\\) @0x\[0-9a-f\]+: 22" "entry_reference: p nodataparam" -gdb_test "p nodataparam@entry" "Cannot resolve DW_AT_GNU_call_site_data_value" "entry_reference: p nodataparam@entry" +gdb_test "p nodataparam@entry" "Cannot resolve DW_AT_call_data_value" "entry_reference: p nodataparam@entry" # Test virtual tail call frames. @@ -249,5 +249,5 @@ gdb_test "bt" "^bt\r\n#0 +d \\(i=<optimized out>, j=<optimized out>\\)\[^\r\n\]* "self: bt" gdb_test_no_output "set debug entry-values 1" -gdb_test "bt" "DW_OP_GNU_entry_value resolving has found function \"self\\(int\\)\" at 0x\[0-9a-f\]+ can call itself via tail calls\r\n.*" \ +gdb_test "bt" "DW_OP_entry_value resolving has found function \"self\\(int\\)\" at 0x\[0-9a-f\]+ can call itself via tail calls\r\n.*" \ "self: bt debug entry-values" |