Entry values NEWS entries, DWARF disassembly support.
	* NEWS: New entry values entry.
	(set print entry-values, show print entry-values)
	(set debug entry-values, show debug entry-values): New entries.
	* dwarf2loc.c (disassemble_dwarf_expression): New parameters start and
	indent.  Remove variable start.  Move header printing out.  Respect
	INDENT.  Support DW_OP_GNU_entry_value.
	(locexpr_describe_location_1): Move the header printing here, extend
	the disassemble_dwarf_expression passed parameters.

gdb/testsuite/
	* gdb.arch/amd64-entry-value.s: New file.
	* gdb.mi/mi2-amd64-entry-value.s: New file.
This commit is contained in:
Jan Kratochvil 2011-10-09 19:46:05 +00:00
parent a471c5941e
commit 2bda9cc5ee
6 changed files with 4707 additions and 12 deletions

View file

@ -1,3 +1,15 @@
2011-10-09 Jan Kratochvil <jan.kratochvil@redhat.com>
Entry values NEWS entries, DWARF disassembly support.
* NEWS: New entry values entry.
(set print entry-values, show print entry-values)
(set debug entry-values, show debug entry-values): New entries.
* dwarf2loc.c (disassemble_dwarf_expression): New parameters start and
indent. Remove variable start. Move header printing out. Respect
INDENT. Support DW_OP_GNU_entry_value.
(locexpr_describe_location_1): Move the header printing here, extend
the disassemble_dwarf_expression passed parameters.
2011-10-09 Jan Kratochvil <jan.kratochvil@redhat.com>
Display @entry parameter values even for references.

View file

@ -83,6 +83,10 @@
* New commands "info macros", and "info definitions" have been added.
* New function parameters suffix @entry specifies value of function parameter
at the time the function got called. Entry values are available only since
gcc version 4.7.
* Changed commands
watch EXPRESSION mask MASK_VALUE
@ -100,6 +104,19 @@ info auto-load-scripts [REGEXP]
begin, assuming that tracepoints will be enabled as needed while the trace
is running.
* New options
set print entry-values (both|compact|default|if-needed|no|only|preferred)
show print entry-values
Set printing of frame argument values at function entry. In some cases
GDB can determine the value of function argument which was passed by the
function caller, even if the value was modified inside the called function.
set debug entry-values
show debug entry-values
Control display of debugging info for determining frame argument values at
function entry and virtual tail call frames.
* New remote packets
QTEnable

View file

@ -3258,15 +3258,11 @@ locexpr_describe_location_piece (struct symbol *symbol, struct ui_file *stream,
static const gdb_byte *
disassemble_dwarf_expression (struct ui_file *stream,
struct gdbarch *arch, unsigned int addr_size,
int offset_size,
int offset_size, const gdb_byte *start,
const gdb_byte *data, const gdb_byte *end,
int all,
int indent, int all,
struct dwarf2_per_cu_data *per_cu)
{
const gdb_byte *start = data;
fprintf_filtered (stream, _("a complex DWARF expression:\n"));
while (data < end
&& (all
|| (data[0] != DW_OP_piece && data[0] != DW_OP_bit_piece)))
@ -3281,7 +3277,8 @@ disassemble_dwarf_expression (struct ui_file *stream,
if (!name)
error (_("Unrecognized DWARF opcode 0x%02x at %ld"),
op, (long) (data - 1 - start));
fprintf_filtered (stream, " % 4ld: %s", (long) (data - 1 - start), name);
fprintf_filtered (stream, " %*ld: %s", indent + 4,
(long) (data - 1 - start), name);
switch (op)
{
@ -3579,6 +3576,15 @@ disassemble_dwarf_expression (struct ui_file *stream,
}
}
break;
case DW_OP_GNU_entry_value:
data = read_uleb128 (data, end, &ul);
fputc_filtered ('\n', stream);
disassemble_dwarf_expression (stream, arch, addr_size, offset_size,
start, data, data + ul, indent + 2,
all, per_cu);
data += ul;
continue;
}
fprintf_filtered (stream, "\n");
@ -3623,11 +3629,15 @@ locexpr_describe_location_1 (struct symbol *symbol, CORE_ADDR addr,
disassemble = 0;
}
if (disassemble)
data = disassemble_dwarf_expression (stream,
get_objfile_arch (objfile),
addr_size, offset_size, data, end,
dwarf2_always_disassemble,
per_cu);
{
fprintf_filtered (stream, _("a complex DWARF expression:\n"));
data = disassemble_dwarf_expression (stream,
get_objfile_arch (objfile),
addr_size, offset_size, data,
data, end, 0,
dwarf2_always_disassemble,
per_cu);
}
if (data < end)
{

View file

@ -1,3 +1,8 @@
2011-10-09 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.arch/amd64-entry-value.s: New file.
* gdb.mi/mi2-amd64-entry-value.s: New file.
2011-10-09 Jan Kratochvil <jan.kratochvil@redhat.com>
Display @entry parameter values even for references.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,899 @@
/* This testcase is part of GDB, the GNU debugger.
Copyright 2011 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.mi/mi2-amd64-entry-value.c
using -g -dA -S -O2. */
.file "mi2-amd64-entry-value.c"
.text
.Ltext0:
.p2align 4,,15
.type e, @function
e:
.LFB0:
.file 1 "gdb.mi/mi2-amd64-entry-value.c"
# gdb.mi/mi2-amd64-entry-value.c:22
.loc 1 22 0
.cfi_startproc
.LVL0:
# BLOCK 2 freq:10000 seq:0
# PRED: ENTRY [100.0%] (fallthru)
# gdb.mi/mi2-amd64-entry-value.c:23
.loc 1 23 0
movl $0, v(%rip)
# SUCC: EXIT [100.0%]
# gdb.mi/mi2-amd64-entry-value.c:24
.loc 1 24 0
ret
.cfi_endproc
.LFE0:
.size e, .-e
.p2align 4,,15
.type data, @function
data:
.LFB1:
# gdb.mi/mi2-amd64-entry-value.c:28
.loc 1 28 0
.cfi_startproc
# BLOCK 2 freq:10000 seq:0
# PRED: ENTRY [100.0%] (fallthru)
# gdb.mi/mi2-amd64-entry-value.c:30
.loc 1 30 0
movl $10, %eax
# SUCC: EXIT [100.0%]
ret
.cfi_endproc
.LFE1:
.size data, .-data
.p2align 4,,15
.type data2, @function
data2:
.LFB2:
# gdb.mi/mi2-amd64-entry-value.c:34
.loc 1 34 0
.cfi_startproc
# BLOCK 2 freq:10000 seq:0
# PRED: ENTRY [100.0%] (fallthru)
# gdb.mi/mi2-amd64-entry-value.c:36
.loc 1 36 0
movl $20, %eax
# SUCC: EXIT [100.0%]
ret
.cfi_endproc
.LFE2:
.size data2, .-data2
.p2align 4,,15
.type different, @function
different:
.LFB3:
# gdb.mi/mi2-amd64-entry-value.c:40
.loc 1 40 0
.cfi_startproc
.LVL1:
# BLOCK 2 freq:10000 seq:0
# PRED: ENTRY [100.0%] (fallthru)
pushq %rbx
.LCFI0:
.cfi_def_cfa_offset 16
.cfi_offset 3, -16
# gdb.mi/mi2-amd64-entry-value.c:41
.loc 1 41 0
leal 1(%rdi), %ebx
.LVL2:
# gdb.mi/mi2-amd64-entry-value.c:42
.loc 1 42 0
cvtsi2sd %ebx, %xmm0
movl %ebx, %edi
call e
.LVL3:
# gdb.mi/mi2-amd64-entry-value.c:43
.loc 1 43 0
#APP
# 43 "gdb.mi/mi2-amd64-entry-value.c" 1
breakhere_different:
# 0 "" 2
# gdb.mi/mi2-amd64-entry-value.c:45
.loc 1 45 0
#NO_APP
movl %ebx, %eax
popq %rbx
.LCFI1:
.cfi_def_cfa_offset 8
.LVL4:
# SUCC: EXIT [100.0%]
ret
.cfi_endproc
.LFE3:
.size different, .-different
.p2align 4,,15
.type validity, @function
validity:
.LFB4:
# gdb.mi/mi2-amd64-entry-value.c:49
.loc 1 49 0
.cfi_startproc
.LVL5:
# BLOCK 2 freq:10000 seq:0
# PRED: ENTRY [100.0%] (fallthru)
# gdb.mi/mi2-amd64-entry-value.c:51
.loc 1 51 0
xorpd %xmm0, %xmm0
# gdb.mi/mi2-amd64-entry-value.c:49
.loc 1 49 0
pushq %rbx
.LCFI2:
.cfi_def_cfa_offset 16
.cfi_offset 3, -16
# gdb.mi/mi2-amd64-entry-value.c:51
.loc 1 51 0
xorl %edi, %edi
# gdb.mi/mi2-amd64-entry-value.c:49
.loc 1 49 0
movl %esi, %ebx
# gdb.mi/mi2-amd64-entry-value.c:51
.loc 1 51 0
call e
.LVL6:
# gdb.mi/mi2-amd64-entry-value.c:52
.loc 1 52 0
#APP
# 52 "gdb.mi/mi2-amd64-entry-value.c" 1
breakhere_validity:
# 0 "" 2
# gdb.mi/mi2-amd64-entry-value.c:54
.loc 1 54 0
#NO_APP
movl %ebx, %eax
popq %rbx
.LCFI3:
.cfi_def_cfa_offset 8
.LVL7:
# SUCC: EXIT [100.0%]
ret
.cfi_endproc
.LFE4:
.size validity, .-validity
.p2align 4,,15
.type invalid, @function
invalid:
.LFB5:
# gdb.mi/mi2-amd64-entry-value.c:58
.loc 1 58 0
.cfi_startproc
.LVL8:
# BLOCK 2 freq:10000 seq:0
# PRED: ENTRY [100.0%] (fallthru)
# gdb.mi/mi2-amd64-entry-value.c:59
.loc 1 59 0
xorpd %xmm0, %xmm0
xorl %edi, %edi
.LVL9:
call e
.LVL10:
# gdb.mi/mi2-amd64-entry-value.c:60
.loc 1 60 0
#APP
# 60 "gdb.mi/mi2-amd64-entry-value.c" 1
breakhere_invalid:
# 0 "" 2
# SUCC: EXIT [100.0%]
# gdb.mi/mi2-amd64-entry-value.c:61
.loc 1 61 0
#NO_APP
ret
.cfi_endproc
.LFE5:
.size invalid, .-invalid
.section .text.startup,"ax",@progbits
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB6:
# gdb.mi/mi2-amd64-entry-value.c:65
.loc 1 65 0
.cfi_startproc
# BLOCK 2 freq:10000 seq:0
# PRED: ENTRY [100.0%] (fallthru)
# gdb.mi/mi2-amd64-entry-value.c:66
.loc 1 66 0
movl $5, %edi
call different
.LVL11:
# gdb.mi/mi2-amd64-entry-value.c:67
.loc 1 67 0
call data
.LVL12:
movl $5, %edi
movl %eax, %esi
call validity
.LVL13:
# gdb.mi/mi2-amd64-entry-value.c:68
.loc 1 68 0
call data2
.LVL14:
movl %eax, %edi
call invalid
.LVL15:
# gdb.mi/mi2-amd64-entry-value.c:70
.loc 1 70 0
xorl %eax, %eax
.p2align 4,,1
# SUCC: EXIT [100.0%]
ret
.cfi_endproc
.LFE6:
.size main, .-main
.local v
.comm v,4,4
.text
.Letext0:
.section .debug_info,"",@progbits
.Ldebug_info0:
.long 0x24e # Length of Compilation Unit Info
.value 0x2 # DWARF version number
.long .Ldebug_abbrev0 # Offset Into Abbrev. Section
.byte 0x8 # Pointer Size (in bytes)
.uleb128 0x1 # (DIE (0xb) DW_TAG_compile_unit)
.long .LASF3 # DW_AT_producer: "GNU C 4.7.0 20110912 (experimental)"
.byte 0x1 # DW_AT_language
.long .LASF4 # DW_AT_name: "gdb.mi/mi2-amd64-entry-value.c"
.long .LASF5 # DW_AT_comp_dir: ""
.long .Ldebug_ranges0+0 # DW_AT_ranges
.quad 0 # DW_AT_low_pc
.quad 0 # DW_AT_entry_pc
.long .Ldebug_line0 # DW_AT_stmt_list
.uleb128 0x2 # (DIE (0x31) DW_TAG_base_type)
.byte 0x8 # DW_AT_byte_size
.byte 0x4 # DW_AT_encoding
.long .LASF0 # DW_AT_name: "double"
.uleb128 0x3 # (DIE (0x38) DW_TAG_base_type)
.byte 0x4 # DW_AT_byte_size
.byte 0x5 # DW_AT_encoding
.ascii "int\0" # DW_AT_name
.uleb128 0x4 # (DIE (0x3f) DW_TAG_subprogram)
.ascii "e\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x15 # DW_AT_decl_line
.byte 0x1 # DW_AT_prototyped
.quad .LFB0 # DW_AT_low_pc
.quad .LFE0 # DW_AT_high_pc
.byte 0x2 # DW_AT_frame_base
.byte 0x77 # DW_OP_breg7
.sleb128 8
.byte 0x1 # DW_AT_GNU_all_call_sites
.long 0x74 # DW_AT_sibling
.uleb128 0x5 # (DIE (0x5d) DW_TAG_formal_parameter)
.ascii "i\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x15 # DW_AT_decl_line
.long 0x38 # DW_AT_type
.byte 0x1 # DW_AT_location
.byte 0x55 # DW_OP_reg5
.uleb128 0x5 # (DIE (0x68) DW_TAG_formal_parameter)
.ascii "j\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x15 # DW_AT_decl_line
.long 0x31 # DW_AT_type
.byte 0x1 # DW_AT_location
.byte 0x61 # DW_OP_reg17
.byte 0 # end of children of DIE 0x3f
.uleb128 0x6 # (DIE (0x74) DW_TAG_subprogram)
.long .LASF1 # DW_AT_name: "data"
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x1b # DW_AT_decl_line
.byte 0x1 # DW_AT_prototyped
.long 0x38 # DW_AT_type
.quad .LFB1 # DW_AT_low_pc
.quad .LFE1 # DW_AT_high_pc
.byte 0x2 # DW_AT_frame_base
.byte 0x77 # DW_OP_breg7
.sleb128 8
.byte 0x1 # DW_AT_GNU_all_call_sites
.uleb128 0x6 # (DIE (0x94) DW_TAG_subprogram)
.long .LASF2 # DW_AT_name: "data2"
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x21 # DW_AT_decl_line
.byte 0x1 # DW_AT_prototyped
.long 0x38 # DW_AT_type
.quad .LFB2 # DW_AT_low_pc
.quad .LFE2 # DW_AT_high_pc
.byte 0x2 # DW_AT_frame_base
.byte 0x77 # DW_OP_breg7
.sleb128 8
.byte 0x1 # DW_AT_GNU_all_call_sites
.uleb128 0x7 # (DIE (0xb4) DW_TAG_subprogram)
.long .LASF6 # DW_AT_name: "different"
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x27 # DW_AT_decl_line
.byte 0x1 # DW_AT_prototyped
.long 0x38 # DW_AT_type
.quad .LFB3 # DW_AT_low_pc
.quad .LFE3 # DW_AT_high_pc
.long .LLST0 # DW_AT_frame_base
.byte 0x1 # DW_AT_GNU_all_call_sites
.long 0x107 # DW_AT_sibling
.uleb128 0x8 # (DIE (0xd9) DW_TAG_formal_parameter)
.ascii "val\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x27 # DW_AT_decl_line
.long 0x38 # DW_AT_type
.long .LLST1 # DW_AT_location
.uleb128 0x9 # (DIE (0xe8) DW_TAG_GNU_call_site)
.quad .LVL3 # DW_AT_low_pc
.long 0x3f # DW_AT_abstract_origin
.uleb128 0xa # (DIE (0xf5) DW_TAG_GNU_call_site_parameter)
.byte 0x1 # DW_AT_location
.byte 0x55 # DW_OP_reg5
.byte 0x2 # DW_AT_GNU_call_site_value
.byte 0x73 # DW_OP_breg3
.sleb128 0
.uleb128 0xa # (DIE (0xfb) DW_TAG_GNU_call_site_parameter)
.byte 0x1 # DW_AT_location
.byte 0x61 # DW_OP_reg17
.byte 0x6 # DW_AT_GNU_call_site_value
.byte 0x73 # DW_OP_breg3
.sleb128 0
.byte 0xf7 # DW_OP_GNU_convert
.uleb128 0x38
.byte 0xf7 # DW_OP_GNU_convert
.uleb128 0x31
.byte 0 # end of children of DIE 0xe8
.byte 0 # end of children of DIE 0xb4
.uleb128 0x7 # (DIE (0x107) DW_TAG_subprogram)
.long .LASF7 # DW_AT_name: "validity"
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x30 # DW_AT_decl_line
.byte 0x1 # DW_AT_prototyped
.long 0x38 # DW_AT_type
.quad .LFB4 # DW_AT_low_pc
.quad .LFE4 # DW_AT_high_pc
.long .LLST2 # DW_AT_frame_base
.byte 0x1 # DW_AT_GNU_all_call_sites
.long 0x16d # DW_AT_sibling
.uleb128 0xb # (DIE (0x12c) DW_TAG_formal_parameter)
.long .LASF8 # DW_AT_name: "lost"
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x30 # DW_AT_decl_line
.long 0x38 # DW_AT_type
.long .LLST3 # DW_AT_location
.uleb128 0xb # (DIE (0x13b) DW_TAG_formal_parameter)
.long .LASF9 # DW_AT_name: "born"
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x30 # DW_AT_decl_line
.long 0x38 # DW_AT_type
.long .LLST4 # DW_AT_location
.uleb128 0x9 # (DIE (0x14a) DW_TAG_GNU_call_site)
.quad .LVL6 # DW_AT_low_pc
.long 0x3f # DW_AT_abstract_origin
.uleb128 0xa # (DIE (0x157) DW_TAG_GNU_call_site_parameter)
.byte 0x1 # DW_AT_location
.byte 0x55 # DW_OP_reg5
.byte 0x1 # DW_AT_GNU_call_site_value
.byte 0x30 # DW_OP_lit0
.uleb128 0xa # (DIE (0x15c) DW_TAG_GNU_call_site_parameter)
.byte 0x1 # DW_AT_location
.byte 0x61 # DW_OP_reg17
.byte 0xb # DW_AT_GNU_call_site_value
.byte 0xf4 # DW_OP_GNU_const_type
.uleb128 0x31
.byte 0x8
.long 0 # fp or vector constant word 0
.long 0 # fp or vector constant word 1
.byte 0 # end of children of DIE 0x14a
.byte 0 # end of children of DIE 0x107
.uleb128 0xc # (DIE (0x16d) DW_TAG_subprogram)
.long .LASF10 # DW_AT_name: "invalid"
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x39 # DW_AT_decl_line
.byte 0x1 # DW_AT_prototyped
.quad .LFB5 # DW_AT_low_pc
.quad .LFE5 # DW_AT_high_pc
.byte 0x2 # DW_AT_frame_base
.byte 0x77 # DW_OP_breg7
.sleb128 8
.byte 0x1 # DW_AT_GNU_all_call_sites
.long 0x1bf # DW_AT_sibling
.uleb128 0x8 # (DIE (0x18d) DW_TAG_formal_parameter)
.ascii "inv\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x39 # DW_AT_decl_line
.long 0x38 # DW_AT_type
.long .LLST5 # DW_AT_location
.uleb128 0x9 # (DIE (0x19c) DW_TAG_GNU_call_site)
.quad .LVL10 # DW_AT_low_pc
.long 0x3f # DW_AT_abstract_origin
.uleb128 0xa # (DIE (0x1a9) DW_TAG_GNU_call_site_parameter)
.byte 0x1 # DW_AT_location
.byte 0x55 # DW_OP_reg5
.byte 0x1 # DW_AT_GNU_call_site_value
.byte 0x30 # DW_OP_lit0
.uleb128 0xa # (DIE (0x1ae) DW_TAG_GNU_call_site_parameter)
.byte 0x1 # DW_AT_location
.byte 0x61 # DW_OP_reg17
.byte 0xb # DW_AT_GNU_call_site_value
.byte 0xf4 # DW_OP_GNU_const_type
.uleb128 0x31
.byte 0x8
.long 0 # fp or vector constant word 0
.long 0 # fp or vector constant word 1
.byte 0 # end of children of DIE 0x19c
.byte 0 # end of children of DIE 0x16d
.uleb128 0xd # (DIE (0x1bf) DW_TAG_subprogram)
.byte 0x1 # DW_AT_external
.long .LASF11 # DW_AT_name: "main"
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x40 # DW_AT_decl_line
.long 0x38 # DW_AT_type
.quad .LFB6 # DW_AT_low_pc
.quad .LFE6 # DW_AT_high_pc
.byte 0x2 # DW_AT_frame_base
.byte 0x77 # DW_OP_breg7
.sleb128 8
.byte 0x1 # DW_AT_GNU_all_call_sites
.long 0x239 # DW_AT_sibling
.uleb128 0xe # (DIE (0x1e3) DW_TAG_GNU_call_site)
.quad .LVL11 # DW_AT_low_pc
.long 0xb4 # DW_AT_abstract_origin
.long 0x1fa # DW_AT_sibling
.uleb128 0xa # (DIE (0x1f4) DW_TAG_GNU_call_site_parameter)
.byte 0x1 # DW_AT_location
.byte 0x55 # DW_OP_reg5
.byte 0x1 # DW_AT_GNU_call_site_value
.byte 0x35 # DW_OP_lit5
.byte 0 # end of children of DIE 0x1e3
.uleb128 0xf # (DIE (0x1fa) DW_TAG_GNU_call_site)
.quad .LVL12 # DW_AT_low_pc
.long 0x74 # DW_AT_abstract_origin
.uleb128 0xe # (DIE (0x207) DW_TAG_GNU_call_site)
.quad .LVL13 # DW_AT_low_pc
.long 0x107 # DW_AT_abstract_origin
.long 0x21e # DW_AT_sibling
.uleb128 0xa # (DIE (0x218) DW_TAG_GNU_call_site_parameter)
.byte 0x1 # DW_AT_location
.byte 0x55 # DW_OP_reg5
.byte 0x1 # DW_AT_GNU_call_site_value
.byte 0x35 # DW_OP_lit5
.byte 0 # end of children of DIE 0x207
.uleb128 0xf # (DIE (0x21e) DW_TAG_GNU_call_site)
.quad .LVL14 # DW_AT_low_pc
.long 0x94 # DW_AT_abstract_origin
.uleb128 0xf # (DIE (0x22b) DW_TAG_GNU_call_site)
.quad .LVL15 # DW_AT_low_pc
.long 0x16d # DW_AT_abstract_origin
.byte 0 # end of children of DIE 0x1bf
.uleb128 0x10 # (DIE (0x239) DW_TAG_variable)
.ascii "v\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file (gdb.mi/mi2-amd64-entry-value.c)
.byte 0x12 # DW_AT_decl_line
.long 0x24c # DW_AT_type
.byte 0x9 # DW_AT_location
.byte 0x3 # DW_OP_addr
.quad v
.uleb128 0x11 # (DIE (0x24c) DW_TAG_volatile_type)
.long 0x38 # DW_AT_type
.byte 0 # end of children of DIE 0xb
.section .debug_abbrev,"",@progbits
.Ldebug_abbrev0:
.uleb128 0x1 # (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 0xe # (DW_FORM_strp)
.uleb128 0x1b # (DW_AT_comp_dir)
.uleb128 0xe # (DW_FORM_strp)
.uleb128 0x55 # (DW_AT_ranges)
.uleb128 0x6 # (DW_FORM_data4)
.uleb128 0x11 # (DW_AT_low_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x52 # (DW_AT_entry_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x10 # (DW_AT_stmt_list)
.uleb128 0x6 # (DW_FORM_data4)
.byte 0
.byte 0
.uleb128 0x2 # (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 0xe # (DW_FORM_strp)
.byte 0
.byte 0
.uleb128 0x3 # (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 0x4 # (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 0xb # (DW_FORM_data1)
.uleb128 0x3b # (DW_AT_decl_line)
.uleb128 0xb # (DW_FORM_data1)
.uleb128 0x27 # (DW_AT_prototyped)
.uleb128 0xc # (DW_FORM_flag)
.uleb128 0x11 # (DW_AT_low_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x12 # (DW_AT_high_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x40 # (DW_AT_frame_base)
.uleb128 0xa # (DW_FORM_block1)
.uleb128 0x2117 # (DW_AT_GNU_all_call_sites)
.uleb128 0xc # (DW_FORM_flag)
.uleb128 0x1 # (DW_AT_sibling)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0x5 # (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 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 0x2 # (DW_AT_location)
.uleb128 0xa # (DW_FORM_block1)
.byte 0
.byte 0
.uleb128 0x6 # (abbrev code)
.uleb128 0x2e # (TAG: DW_TAG_subprogram)
.byte 0 # DW_children_no
.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 0xc # (DW_FORM_flag)
.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 0x1 # (DW_FORM_addr)
.uleb128 0x40 # (DW_AT_frame_base)
.uleb128 0xa # (DW_FORM_block1)
.uleb128 0x2117 # (DW_AT_GNU_all_call_sites)
.uleb128 0xc # (DW_FORM_flag)
.byte 0
.byte 0
.uleb128 0x7 # (abbrev code)
.uleb128 0x2e # (TAG: DW_TAG_subprogram)
.byte 0x1 # DW_children_yes
.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 0xc # (DW_FORM_flag)
.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 0x1 # (DW_FORM_addr)
.uleb128 0x40 # (DW_AT_frame_base)
.uleb128 0x6 # (DW_FORM_data4)
.uleb128 0x2117 # (DW_AT_GNU_all_call_sites)
.uleb128 0xc # (DW_FORM_flag)
.uleb128 0x1 # (DW_AT_sibling)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0x8 # (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 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 0x2 # (DW_AT_location)
.uleb128 0x6 # (DW_FORM_data4)
.byte 0
.byte 0
.uleb128 0x9 # (abbrev code)
.uleb128 0x4109 # (TAG: DW_TAG_GNU_call_site)
.byte 0x1 # DW_children_yes
.uleb128 0x11 # (DW_AT_low_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x31 # (DW_AT_abstract_origin)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0xa # (abbrev code)
.uleb128 0x410a # (TAG: DW_TAG_GNU_call_site_parameter)
.byte 0 # DW_children_no
.uleb128 0x2 # (DW_AT_location)
.uleb128 0xa # (DW_FORM_block1)
.uleb128 0x2111 # (DW_AT_GNU_call_site_value)
.uleb128 0xa # (DW_FORM_block1)
.byte 0
.byte 0
.uleb128 0xb # (abbrev code)
.uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
.byte 0 # DW_children_no
.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 0x49 # (DW_AT_type)
.uleb128 0x13 # (DW_FORM_ref4)
.uleb128 0x2 # (DW_AT_location)
.uleb128 0x6 # (DW_FORM_data4)
.byte 0
.byte 0
.uleb128 0xc # (abbrev code)
.uleb128 0x2e # (TAG: DW_TAG_subprogram)
.byte 0x1 # DW_children_yes
.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 0xc # (DW_FORM_flag)
.uleb128 0x11 # (DW_AT_low_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x12 # (DW_AT_high_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x40 # (DW_AT_frame_base)
.uleb128 0xa # (DW_FORM_block1)
.uleb128 0x2117 # (DW_AT_GNU_all_call_sites)
.uleb128 0xc # (DW_FORM_flag)
.uleb128 0x1 # (DW_AT_sibling)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0xd # (abbrev code)
.uleb128 0x2e # (TAG: DW_TAG_subprogram)
.byte 0x1 # DW_children_yes
.uleb128 0x3f # (DW_AT_external)
.uleb128 0xc # (DW_FORM_flag)
.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 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 0x1 # (DW_FORM_addr)
.uleb128 0x40 # (DW_AT_frame_base)
.uleb128 0xa # (DW_FORM_block1)
.uleb128 0x2117 # (DW_AT_GNU_all_call_sites)
.uleb128 0xc # (DW_FORM_flag)
.uleb128 0x1 # (DW_AT_sibling)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0xe # (abbrev code)
.uleb128 0x4109 # (TAG: DW_TAG_GNU_call_site)
.byte 0x1 # DW_children_yes
.uleb128 0x11 # (DW_AT_low_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x31 # (DW_AT_abstract_origin)
.uleb128 0x13 # (DW_FORM_ref4)
.uleb128 0x1 # (DW_AT_sibling)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0xf # (abbrev code)
.uleb128 0x4109 # (TAG: DW_TAG_GNU_call_site)
.byte 0 # DW_children_no
.uleb128 0x11 # (DW_AT_low_pc)
.uleb128 0x1 # (DW_FORM_addr)
.uleb128 0x31 # (DW_AT_abstract_origin)
.uleb128 0x13 # (DW_FORM_ref4)
.byte 0
.byte 0
.uleb128 0x10 # (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 0x2 # (DW_AT_location)
.uleb128 0xa # (DW_FORM_block1)
.byte 0
.byte 0
.uleb128 0x11 # (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
.byte 0
.section .debug_loc,"",@progbits
.Ldebug_loc0:
.LLST0:
.quad .LFB3 # Location list begin address (*.LLST0)
.quad .LCFI0 # Location list end address (*.LLST0)
.value 0x2 # Location expression size
.byte 0x77 # DW_OP_breg7
.sleb128 8
.quad .LCFI0 # Location list begin address (*.LLST0)
.quad .LCFI1 # Location list end address (*.LLST0)
.value 0x2 # Location expression size
.byte 0x77 # DW_OP_breg7
.sleb128 16
.quad .LCFI1 # Location list begin address (*.LLST0)
.quad .LFE3 # Location list end address (*.LLST0)
.value 0x2 # Location expression size
.byte 0x77 # DW_OP_breg7
.sleb128 8
.quad 0 # Location list terminator begin (*.LLST0)
.quad 0 # Location list terminator end (*.LLST0)
.LLST1:
.quad .LVL1 # Location list begin address (*.LLST1)
.quad .LVL2 # Location list end address (*.LLST1)
.value 0x1 # Location expression size
.byte 0x55 # DW_OP_reg5
.quad .LVL2 # Location list begin address (*.LLST1)
.quad .LVL4 # Location list end address (*.LLST1)
.value 0x1 # Location expression size
.byte 0x53 # DW_OP_reg3
.quad .LVL4 # Location list begin address (*.LLST1)
.quad .LFE3 # Location list end address (*.LLST1)
.value 0x1 # Location expression size
.byte 0x50 # DW_OP_reg0
.quad 0 # Location list terminator begin (*.LLST1)
.quad 0 # Location list terminator end (*.LLST1)
.LLST2:
.quad .LFB4 # Location list begin address (*.LLST2)
.quad .LCFI2 # Location list end address (*.LLST2)
.value 0x2 # Location expression size
.byte 0x77 # DW_OP_breg7
.sleb128 8
.quad .LCFI2 # Location list begin address (*.LLST2)
.quad .LCFI3 # Location list end address (*.LLST2)
.value 0x2 # Location expression size
.byte 0x77 # DW_OP_breg7
.sleb128 16
.quad .LCFI3 # Location list begin address (*.LLST2)
.quad .LFE4 # Location list end address (*.LLST2)
.value 0x2 # Location expression size
.byte 0x77 # DW_OP_breg7
.sleb128 8
.quad 0 # Location list terminator begin (*.LLST2)
.quad 0 # Location list terminator end (*.LLST2)
.LLST3:
.quad .LVL5 # Location list begin address (*.LLST3)
.quad .LVL5 # Location list end address (*.LLST3)
.value 0x1 # Location expression size
.byte 0x55 # DW_OP_reg5
.quad 0 # Location list terminator begin (*.LLST3)
.quad 0 # Location list terminator end (*.LLST3)
.LLST4:
.quad .LVL5 # Location list begin address (*.LLST4)
.quad .LVL6-1 # Location list end address (*.LLST4)
.value 0x1 # Location expression size
.byte 0x54 # DW_OP_reg4
.quad .LVL6-1 # Location list begin address (*.LLST4)
.quad .LVL7 # Location list end address (*.LLST4)
.value 0x1 # Location expression size
.byte 0x53 # DW_OP_reg3
.quad .LVL7 # Location list begin address (*.LLST4)
.quad .LFE4 # Location list end address (*.LLST4)
.value 0x1 # Location expression size
.byte 0x50 # DW_OP_reg0
.quad 0 # Location list terminator begin (*.LLST4)
.quad 0 # Location list terminator end (*.LLST4)
.LLST5:
.quad .LVL8 # Location list begin address (*.LLST5)
.quad .LVL9 # Location list end address (*.LLST5)
.value 0x1 # Location expression size
.byte 0x55 # DW_OP_reg5
.quad .LVL9 # Location list begin address (*.LLST5)
.quad .LFE5 # Location list end address (*.LLST5)
.value 0x4 # Location expression size
.byte 0xf3 # DW_OP_GNU_entry_value
.uleb128 0x1
.byte 0x55 # DW_OP_reg5
.byte 0x9f # DW_OP_stack_value
.quad 0 # Location list terminator begin (*.LLST5)
.quad 0 # Location list terminator end (*.LLST5)
.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 .LFB6 # Address
.quad .LFE6-.LFB6 # Length
.quad 0
.quad 0
.section .debug_ranges,"",@progbits
.Ldebug_ranges0:
.quad .Ltext0 # Offset 0
.quad .Letext0
.quad .LFB6 # Offset 0x10
.quad .LFE6
.quad 0
.quad 0
.section .debug_line,"",@progbits
.Ldebug_line0:
.section .debug_str,"MS",@progbits,1
.LASF2:
.string "data2"
.LASF3:
.string "GNU C 4.7.0 20110912 (experimental)"
.LASF4:
.string "gdb.mi/mi2-amd64-entry-value.c"
.LASF9:
.string "born"
.LASF6:
.string "different"
.LASF7:
.string "validity"
.LASF10:
.string "invalid"
.LASF0:
.string "double"
.LASF11:
.string "main"
.LASF1:
.string "data"
.LASF8:
.string "lost"
.LASF5:
.string ""
.ident "GCC: (GNU) 4.7.0 20110912 (experimental)"
.section .note.GNU-stack,"",@progbits