aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2011-05-12 17:40:55 +0000
committerTom Tromey <tromey@redhat.com>2011-05-12 17:40:55 +0000
commit8a9b8146fd539229c51c6a4e5a4f682df2a630b0 (patch)
tree56c7dadd7ba248c915d0bdbf33cb36840d21dc71 /gdb/testsuite
parente8d28ef4f324014dfd424acab461bbf4393b0b69 (diff)
downloadgdb-8a9b8146fd539229c51c6a4e5a4f682df2a630b0.zip
gdb-8a9b8146fd539229c51c6a4e5a4f682df2a630b0.tar.gz
gdb-8a9b8146fd539229c51c6a4e5a4f682df2a630b0.tar.bz2
gdb
PR gdb/12617: * value.h (value_from_contents): Declare. * value.c (value_from_contents): New function. * dwarf2read.c (dwarf_stack_op_name): Add new values. (dwarf2_get_die_type): New function. * dwarf2loc.c (dwarf_expr_get_base_type): New function. (allocate_piece_closure): Acquire reference to values. (read_pieced_value): Update for value-based expressions. (write_pieced_value): Likewise. (free_pieced_value_closure): Call value_free as needed. (dwarf2_evaluate_loc_desc_full): Set get_base_type field. Update for value-based expressions. * dwarf2loc.h (dwarf2_get_die_type): Declare. * dwarf2expr.h (struct dwarf_stack_value) <value>: Change type. <get_base_type>: New field. (struct dwarf_expr_piece) <v.value>: Change type. <v.regno>: New field. (struct dwarf_expr_context) <mark>: New field. (dwarf_expr_piece, dwarf_expr_fetch): Update. (dwarf_expr_pop, dwarf_expr_push): Remove. (dwarf_expr_push_address): Declare. * dwarf2expr.c (dwarf_arch_cookie): New global. (struct dwarf_gdbarch_types): New. (dwarf_gdbarch_types_init, dwarf_expr_address_type): New functions. (dwarf_expr_push): Change type of 'value' argument. Update. Now static. (dwarf_expr_push_address): New function. (dwarf_expr_pop): Now static. (dwarf_expr_fetch): Change return type. (dwarf_require_integral): New function. (dwarf_expr_fetch): Simplify. (add_piece): Update. (base_types_equal_p, dwarf_get_base_type, get_unsigned_type): New functions. (execute_stack_op) <sign_ext>: Remove. Use values for DWARF stack. <DW_OP_GNU_const_type, DW_OP_GNU_deref_type, DW_OP_GNU_regval_type, DW_OP_GNU_convert, DW_OP_GNU_reinterpret>: New cases. (_initialize_dwarf2expr): New function. (add_piece): Update. (new_dwarf_expr_context): Set new field. (free_dwarf_expr_context): Call value_free_to_mark. * dwarf2-frame.c (no_base_type): New function. (execute_stack_op): Set get_base_type field. Update. gdb/testsuite * gdb.dwarf2/typeddwarf.S: New file. * gdb.dwarf2/typeddwarf.c: New file. * gdb.dwarf2/typeddwarf.exp: New file.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.dwarf2/typeddwarf.S2225
-rw-r--r--gdb/testsuite/gdb.dwarf2/typeddwarf.c93
-rw-r--r--gdb/testsuite/gdb.dwarf2/typeddwarf.exp91
4 files changed, 2415 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index de5e67a..9231ae2 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2011-05-12 Tom Tromey <tromey@redhat.com>
+
+ * gdb.dwarf2/typeddwarf.S: New file.
+ * gdb.dwarf2/typeddwarf.c: New file.
+ * gdb.dwarf2/typeddwarf.exp: New file.
+
2011-05-12 Marek Polacek <mpolacek@redhat.com>
* gdb.mi/mi-basics.exp: Fix races. Honour the
diff --git a/gdb/testsuite/gdb.dwarf2/typeddwarf.S b/gdb/testsuite/gdb.dwarf2/typeddwarf.S
new file mode 100644
index 0000000..a46da14
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/typeddwarf.S
@@ -0,0 +1,2225 @@
+/* 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 source file was generated from typeddwarf.c using the following
+ command line:
+
+ gcc -m32 -dA -S -g -O2 typeddwarf.c -o typeddwarf.S
+
+*/
+
+
+ .file "typeddwarf.c"
+ .text
+.Ltext0:
+ .p2align 4,,15
+ .globl f1
+ .type f1, @function
+f1:
+.LFB0:
+ # typeddwarf.c:10
+.LM1:
+.LVL0:
+# BLOCK 2 freq:10000 seq:0
+# PRED: ENTRY [100.0%] (fallthru)
+ # typeddwarf.c:29
+.LM2:
+ movl vv, %eax
+ addl $1, %eax
+ movl %eax, vv
+# SUCC: EXIT [100.0%]
+ # typeddwarf.c:30
+.LM3:
+ ret
+.LFE0:
+ .size f1, .-f1
+ .p2align 4,,15
+ .globl f2
+ .type f2, @function
+f2:
+.LFB1:
+ # typeddwarf.c:34
+.LM4:
+.LVL1:
+# BLOCK 2 freq:10000 seq:0
+# PRED: ENTRY [100.0%] (fallthru)
+ subl $12, %esp
+.LCFI0:
+ # typeddwarf.c:53
+.LM5:
+ movl vv, %eax
+ # typeddwarf.c:54
+.LM6:
+ fnstcw 6(%esp)
+ # typeddwarf.c:34
+.LM7:
+ flds 40(%esp)
+.LVL2:
+ # typeddwarf.c:54
+.LM8:
+ fldl 16(%esp)
+ # typeddwarf.c:53
+.LM9:
+ addl $1, %eax
+ movl %eax, vv
+ # typeddwarf.c:54
+.LM10:
+ movzwl 6(%esp), %eax
+ movb $12, %ah
+ movw %ax, 4(%esp)
+ fldcw 4(%esp)
+ fistpl (%esp)
+ fldcw 6(%esp)
+ movl (%esp), %eax
+ # typeddwarf.c:55
+.LM11:
+ fldl 24(%esp)
+ fldcw 4(%esp)
+ fistpl (%esp)
+ fldcw 6(%esp)
+ # typeddwarf.c:54
+.LM12:
+ movl %eax, vv
+ # typeddwarf.c:55
+.LM13:
+ movl (%esp), %eax
+ # typeddwarf.c:56
+.LM14:
+ fldl 32(%esp)
+ fldcw 4(%esp)
+ fistpl (%esp)
+ fldcw 6(%esp)
+ # typeddwarf.c:55
+.LM15:
+ movl %eax, vv
+ # typeddwarf.c:56
+.LM16:
+ movl (%esp), %eax
+ # typeddwarf.c:57
+.LM17:
+ fldcw 4(%esp)
+ fistl (%esp)
+ fldcw 6(%esp)
+ # typeddwarf.c:56
+.LM18:
+ movl %eax, vv
+ # typeddwarf.c:57
+.LM19:
+ movl (%esp), %eax
+ # typeddwarf.c:58
+.LM20:
+ flds 44(%esp)
+ # typeddwarf.c:57
+.LM21:
+ movl %eax, vv
+ # typeddwarf.c:58
+.LM22:
+ fldcw 4(%esp)
+ fistpl (%esp)
+ fldcw 6(%esp)
+ movl (%esp), %eax
+ movl %eax, vv
+ # typeddwarf.c:59
+.LM23:
+ movl 48(%esp), %eax
+ # typeddwarf.c:63
+.LM24:
+ fldcw 4(%esp)
+ fistpl (%esp)
+ fldcw 6(%esp)
+ # typeddwarf.c:59
+.LM25:
+ movl %eax, vv
+ # typeddwarf.c:60
+.LM26:
+ movl 52(%esp), %eax
+ movl %eax, vv
+ # typeddwarf.c:61
+.LM27:
+ movl 56(%esp), %eax
+ movl %eax, vv
+ # typeddwarf.c:62
+.LM28:
+ movl 64(%esp), %eax
+ movl %eax, vv
+ # typeddwarf.c:63
+.LM29:
+ movl (%esp), %eax
+ movl %eax, vv
+ # typeddwarf.c:64
+.LM30:
+ addl $12, %esp
+.LCFI1:
+# SUCC: EXIT [100.0%]
+ ret
+.LFE1:
+ .size f2, .-f2
+ .p2align 4,,15
+ .globl f3
+ .type f3, @function
+f3:
+.LFB2:
+ # typeddwarf.c:68
+.LM31:
+.LVL3:
+# BLOCK 2 freq:10000 seq:0
+# PRED: ENTRY [100.0%] (fallthru)
+ # typeddwarf.c:73
+.LM32:
+ movl vv, %eax
+ addl $1, %eax
+ movl %eax, vv
+# SUCC: EXIT [100.0%]
+ # typeddwarf.c:74
+.LM33:
+ ret
+.LFE2:
+ .size f3, .-f3
+ .p2align 4,,15
+ .globl f4
+ .type f4, @function
+f4:
+.LFB3:
+ # typeddwarf.c:78
+.LM34:
+.LVL4:
+# BLOCK 2 freq:10000 seq:0
+# PRED: ENTRY [100.0%] (fallthru)
+ # typeddwarf.c:82
+.LM35:
+ movl vv, %eax
+ addl $1, %eax
+ movl %eax, vv
+# SUCC: EXIT [100.0%]
+ # typeddwarf.c:83
+.LM36:
+ ret
+.LFE3:
+ .size f4, .-f4
+ .section .text.startup,"ax",@progbits
+ .p2align 4,,15
+ .globl main
+ .type main, @function
+main:
+.LFB4:
+ # typeddwarf.c:87
+.LM37:
+# BLOCK 2 freq:10000 seq:0
+# PRED: ENTRY [100.0%] (fallthru)
+ pushl %ebp
+.LCFI2:
+ movl %esp, %ebp
+.LCFI3:
+ pushl %esi
+.LCFI4:
+ # typeddwarf.c:88
+.LM38:
+ movl $0x40a00000, %esi
+ # typeddwarf.c:87
+.LM39:
+ pushl %ebx
+.LCFI5:
+ # typeddwarf.c:88
+.LM40:
+ movl $0x40800000, %ebx
+ # typeddwarf.c:87
+.LM41:
+ andl $-16, %esp
+ subl $112, %esp
+.LCFI6:
+ # typeddwarf.c:88
+.LM42:
+ flds .LC3
+ fstl 16(%esp)
+ movl %esi, 28(%esp)
+ flds .LC4
+ fstl 8(%esp)
+ movl %ebx, 24(%esp)
+ fld1
+ fstl (%esp)
+ movl $9, 48(%esp)
+ fstps 64(%esp)
+ fstps 80(%esp)
+ movl $0, 52(%esp)
+ fstps 96(%esp)
+ movl $8, 40(%esp)
+ movl $0, 44(%esp)
+ movl $7, 36(%esp)
+ movl $6, 32(%esp)
+ call f1
+.LVL5:
+ # typeddwarf.c:89
+.LM43:
+ movl %esi, 28(%esp)
+ movl %ebx, 24(%esp)
+ movl $9, 48(%esp)
+ movl $0, 52(%esp)
+ movl $8, 40(%esp)
+ flds 96(%esp)
+ fstpl 16(%esp)
+ movl $0, 44(%esp)
+ flds 80(%esp)
+ fstpl 8(%esp)
+ movl $7, 36(%esp)
+ flds 64(%esp)
+ fstpl (%esp)
+ movl $6, 32(%esp)
+ call f2
+.LVL6:
+ # typeddwarf.c:90
+.LM44:
+ movl $4, 20(%esp)
+ movl $3, 12(%esp)
+ movl $0, 16(%esp)
+ movl $2, 8(%esp)
+ movl $1, (%esp)
+ movl $0, 4(%esp)
+ call f3
+.LVL7:
+ # typeddwarf.c:91
+.LM45:
+ movl $640, 16(%esp)
+ movl $0, 20(%esp)
+ movl $0, 24(%esp)
+ movl $809369600, 28(%esp)
+ movl $160, 4(%esp)
+ movl $832569344, 8(%esp)
+ movl $838860880, (%esp)
+ call f4
+.LVL8:
+ # typeddwarf.c:93
+.LM46:
+ leal -8(%ebp), %esp
+ xorl %eax, %eax
+ popl %ebx
+.LCFI7:
+ popl %esi
+.LCFI8:
+ popl %ebp
+.LCFI9:
+# SUCC: EXIT [100.0%]
+ ret
+.LFE4:
+ .size main, .-main
+ .comm vv,4,4
+ .section .rodata.cst4,"aM",@progbits,4
+ .align 4
+.LC3:
+ .long 1077936128
+ .align 4
+.LC4:
+ .long 1073741824
+#APP
+ .section .debug_frame,"",@progbits
+.Lframe0:
+ .long .LECIE0-.LSCIE0 # Length of Common Information Entry
+.LSCIE0:
+ .long 0xffffffff # CIE Identifier Tag
+ .byte 0x1 # CIE Version
+ .ascii "\0" # CIE Augmentation
+ .uleb128 0x1 # CIE Code Alignment Factor
+ .sleb128 -4 # CIE Data Alignment Factor
+ .byte 0x8 # CIE RA Column
+ .byte 0xc # DW_CFA_def_cfa
+ .uleb128 0x4
+ .uleb128 0x4
+ .byte 0x88 # DW_CFA_offset, column 0x8
+ .uleb128 0x1
+ .align 4
+.LECIE0:
+.LSFDE0:
+ .long .LEFDE0-.LASFDE0 # FDE Length
+.LASFDE0:
+ .long .Lframe0 # FDE CIE offset
+ .long .LFB0 # FDE initial location
+ .long .LFE0-.LFB0 # FDE address range
+ .align 4
+.LEFDE0:
+.LSFDE2:
+ .long .LEFDE2-.LASFDE2 # FDE Length
+.LASFDE2:
+ .long .Lframe0 # FDE CIE offset
+ .long .LFB1 # FDE initial location
+ .long .LFE1-.LFB1 # FDE address range
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI0-.LFB1
+ .byte 0xe # DW_CFA_def_cfa_offset
+ .uleb128 0x10
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI1-.LCFI0
+ .byte 0xe # DW_CFA_def_cfa_offset
+ .uleb128 0x4
+ .align 4
+.LEFDE2:
+.LSFDE4:
+ .long .LEFDE4-.LASFDE4 # FDE Length
+.LASFDE4:
+ .long .Lframe0 # FDE CIE offset
+ .long .LFB2 # FDE initial location
+ .long .LFE2-.LFB2 # FDE address range
+ .align 4
+.LEFDE4:
+.LSFDE6:
+ .long .LEFDE6-.LASFDE6 # FDE Length
+.LASFDE6:
+ .long .Lframe0 # FDE CIE offset
+ .long .LFB3 # FDE initial location
+ .long .LFE3-.LFB3 # FDE address range
+ .align 4
+.LEFDE6:
+.LSFDE8:
+ .long .LEFDE8-.LASFDE8 # FDE Length
+.LASFDE8:
+ .long .Lframe0 # FDE CIE offset
+ .long .LFB4 # FDE initial location
+ .long .LFE4-.LFB4 # FDE address range
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI2-.LFB4
+ .byte 0xe # DW_CFA_def_cfa_offset
+ .uleb128 0x8
+ .byte 0x85 # DW_CFA_offset, column 0x5
+ .uleb128 0x2
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI3-.LCFI2
+ .byte 0xd # DW_CFA_def_cfa_register
+ .uleb128 0x5
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI4-.LCFI3
+ .byte 0x86 # DW_CFA_offset, column 0x6
+ .uleb128 0x3
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI5-.LCFI4
+ .byte 0x83 # DW_CFA_offset, column 0x3
+ .uleb128 0x4
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI7-.LCFI5
+ .byte 0xc3 # DW_CFA_restore, column 0x3
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI8-.LCFI7
+ .byte 0xc6 # DW_CFA_restore, column 0x6
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI9-.LCFI8
+ .byte 0xc # DW_CFA_def_cfa
+ .uleb128 0x4
+ .uleb128 0x4
+ .byte 0xc5 # DW_CFA_restore, column 0x5
+ .align 4
+.LEFDE8:
+#NO_APP
+#APP
+ .section .eh_frame,"aw",@progbits
+.Lframe1:
+ .long .LECIE1-.LSCIE1 # Length of Common Information Entry
+.LSCIE1:
+ .long 0 # CIE Identifier Tag
+ .byte 0x1 # CIE Version
+ .ascii "\0" # CIE Augmentation
+ .uleb128 0x1 # CIE Code Alignment Factor
+ .sleb128 -4 # CIE Data Alignment Factor
+ .byte 0x8 # CIE RA Column
+ .byte 0xc # DW_CFA_def_cfa
+ .uleb128 0x4
+ .uleb128 0x4
+ .byte 0x88 # DW_CFA_offset, column 0x8
+ .uleb128 0x1
+ .align 4
+.LECIE1:
+.LSFDE11:
+ .long .LEFDE11-.LASFDE11 # FDE Length
+.LASFDE11:
+ .long .LASFDE11-.Lframe1 # FDE CIE offset
+ .long .LFB0 # FDE initial location
+ .long .LFE0-.LFB0 # FDE address range
+ .align 4
+.LEFDE11:
+.LSFDE13:
+ .long .LEFDE13-.LASFDE13 # FDE Length
+.LASFDE13:
+ .long .LASFDE13-.Lframe1 # FDE CIE offset
+ .long .LFB1 # FDE initial location
+ .long .LFE1-.LFB1 # FDE address range
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI0-.LFB1
+ .byte 0xe # DW_CFA_def_cfa_offset
+ .uleb128 0x10
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI1-.LCFI0
+ .byte 0xe # DW_CFA_def_cfa_offset
+ .uleb128 0x4
+ .align 4
+.LEFDE13:
+.LSFDE15:
+ .long .LEFDE15-.LASFDE15 # FDE Length
+.LASFDE15:
+ .long .LASFDE15-.Lframe1 # FDE CIE offset
+ .long .LFB2 # FDE initial location
+ .long .LFE2-.LFB2 # FDE address range
+ .align 4
+.LEFDE15:
+.LSFDE17:
+ .long .LEFDE17-.LASFDE17 # FDE Length
+.LASFDE17:
+ .long .LASFDE17-.Lframe1 # FDE CIE offset
+ .long .LFB3 # FDE initial location
+ .long .LFE3-.LFB3 # FDE address range
+ .align 4
+.LEFDE17:
+.LSFDE19:
+ .long .LEFDE19-.LASFDE19 # FDE Length
+.LASFDE19:
+ .long .LASFDE19-.Lframe1 # FDE CIE offset
+ .long .LFB4 # FDE initial location
+ .long .LFE4-.LFB4 # FDE address range
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI2-.LFB4
+ .byte 0xe # DW_CFA_def_cfa_offset
+ .uleb128 0x8
+ .byte 0x85 # DW_CFA_offset, column 0x5
+ .uleb128 0x2
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI3-.LCFI2
+ .byte 0xd # DW_CFA_def_cfa_register
+ .uleb128 0x5
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI4-.LCFI3
+ .byte 0x86 # DW_CFA_offset, column 0x6
+ .uleb128 0x3
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI5-.LCFI4
+ .byte 0x83 # DW_CFA_offset, column 0x3
+ .uleb128 0x4
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI7-.LCFI5
+ .byte 0xc3 # DW_CFA_restore, column 0x3
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI8-.LCFI7
+ .byte 0xc6 # DW_CFA_restore, column 0x6
+ .byte 0x4 # DW_CFA_advance_loc4
+ .long .LCFI9-.LCFI8
+ .byte 0xc # DW_CFA_def_cfa
+ .uleb128 0x4
+ .uleb128 0x4
+ .byte 0xc5 # DW_CFA_restore, column 0x5
+ .align 4
+.LEFDE19:
+#NO_APP
+ .text
+.Letext0:
+ .section .debug_info,"",@progbits
+.Ldebug_info0:
+ .long 0x64e # Length of Compilation Unit Info
+ .value 0x2 # DWARF version number
+ .long .Ldebug_abbrev0 # Offset Into Abbrev. Section
+ .byte 0x4 # Pointer Size (in bytes)
+ .uleb128 0x1 # (DIE (0xb) DW_TAG_compile_unit)
+ .long .LASF5 # DW_AT_producer: "GNU C 4.7.0 20110504 (experimental)"
+ .byte 0x1 # DW_AT_language
+ .long .LASF6 # DW_AT_name: "typeddwarf.c"
+ .long .LASF7 # DW_AT_comp_dir: "/usr/src/gcc/obj/gcc"
+ .long .Ldebug_ranges0+0 # DW_AT_ranges
+ .long 0 # DW_AT_low_pc
+ .long 0 # DW_AT_entry_pc
+ .long .Ldebug_line0 # DW_AT_stmt_list
+ .uleb128 0x2 # (DIE (0x29) DW_TAG_base_type)
+ .byte 0x8 # DW_AT_byte_size
+ .byte 0x4 # DW_AT_encoding
+ .long .LASF0 # DW_AT_name: "double"
+ .uleb128 0x2 # (DIE (0x30) DW_TAG_base_type)
+ .byte 0x4 # DW_AT_byte_size
+ .byte 0x4 # DW_AT_encoding
+ .long .LASF1 # DW_AT_name: "float"
+ .uleb128 0x2 # (DIE (0x37) DW_TAG_base_type)
+ .byte 0x8 # DW_AT_byte_size
+ .byte 0x5 # DW_AT_encoding
+ .long .LASF2 # DW_AT_name: "long long int"
+ .uleb128 0x3 # (DIE (0x3e) DW_TAG_base_type)
+ .byte 0x4 # DW_AT_byte_size
+ .byte 0x5 # DW_AT_encoding
+ .ascii "int\0" # DW_AT_name
+ .uleb128 0x2 # (DIE (0x45) DW_TAG_base_type)
+ .byte 0x4 # DW_AT_byte_size
+ .byte 0x7 # DW_AT_encoding
+ .long .LASF3 # DW_AT_name: "unsigned int"
+ .uleb128 0x2 # (DIE (0x4c) DW_TAG_base_type)
+ .byte 0x8 # DW_AT_byte_size
+ .byte 0x7 # DW_AT_encoding
+ .long .LASF4 # DW_AT_name: "long long unsigned int"
+ .uleb128 0x4 # (DIE (0x53) DW_TAG_subprogram)
+ .byte 0x1 # DW_AT_external
+ .ascii "f1\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x9 # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long .LFB0 # DW_AT_low_pc
+ .long .LFE0 # DW_AT_high_pc
+ .byte 0x2 # DW_AT_frame_base
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 4
+ .byte 0x1 # DW_AT_GNU_all_call_sites
+ .long 0x232 # DW_AT_sibling
+ .uleb128 0x5 # (DIE (0x6b) DW_TAG_formal_parameter)
+ .ascii "a\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x9 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 0
+ .uleb128 0x5 # (DIE (0x77) DW_TAG_formal_parameter)
+ .ascii "b\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x9 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 8
+ .uleb128 0x5 # (DIE (0x83) DW_TAG_formal_parameter)
+ .ascii "c\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x9 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 16
+ .uleb128 0x5 # (DIE (0x8f) DW_TAG_formal_parameter)
+ .ascii "d\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x9 # DW_AT_decl_line
+ .long 0x30 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 24
+ .uleb128 0x5 # (DIE (0x9b) DW_TAG_formal_parameter)
+ .ascii "e\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x9 # DW_AT_decl_line
+ .long 0x30 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 28
+ .uleb128 0x5 # (DIE (0xa7) DW_TAG_formal_parameter)
+ .ascii "f\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x9 # DW_AT_decl_line
+ .long 0x3e # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 32
+ .uleb128 0x5 # (DIE (0xb3) DW_TAG_formal_parameter)
+ .ascii "g\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x9 # DW_AT_decl_line
+ .long 0x45 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 36
+ .uleb128 0x5 # (DIE (0xbf) DW_TAG_formal_parameter)
+ .ascii "h\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x9 # DW_AT_decl_line
+ .long 0x37 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 40
+ .uleb128 0x5 # (DIE (0xcb) DW_TAG_formal_parameter)
+ .ascii "i\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x9 # DW_AT_decl_line
+ .long 0x4c # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 48
+ .uleb128 0x6 # (DIE (0xd7) DW_TAG_variable)
+ .ascii "j\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0xb # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x8 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 24
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x4
+ .uleb128 0x30
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x29
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0xe9) DW_TAG_variable)
+ .ascii "l\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0xc # DW_AT_decl_line
+ .long 0x37 # DW_AT_type
+ .byte 0xa # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 24
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x4
+ .uleb128 0x30
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x29
+ .byte 0xf9 # DW_OP_GNU_reinterpret
+ .uleb128 0x37
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0xfd) DW_TAG_variable)
+ .ascii "m\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0xe # DW_AT_decl_line
+ .long 0x37 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 16
+ .uleb128 0x6 # (DIE (0x109) DW_TAG_variable)
+ .ascii "n\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x10 # DW_AT_decl_line
+ .long 0x30 # DW_AT_type
+ .byte 0xa # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 48
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x37
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x4c
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x30
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x11d) DW_TAG_variable)
+ .ascii "o\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x11 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x8 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 40
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x37
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x29
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x12f) DW_TAG_variable)
+ .ascii "p\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x12 # DW_AT_decl_line
+ .long 0x30 # DW_AT_type
+ .byte 0x8 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 36
+ .byte 0x6 # DW_OP_deref
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x45
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x30
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x141) DW_TAG_variable)
+ .ascii "q\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x13 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x8 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 32
+ .byte 0x6 # DW_OP_deref
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x3e
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x29
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x153) DW_TAG_variable)
+ .ascii "r\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x14 # DW_AT_decl_line
+ .long 0x4c # DW_AT_type
+ .byte 0xa # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 0
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x4c
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x37
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x167) DW_TAG_variable)
+ .ascii "s\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x15 # DW_AT_decl_line
+ .long 0x37 # DW_AT_type
+ .byte 0x8 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 16
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x37
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x179) DW_TAG_variable)
+ .ascii "t\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x16 # DW_AT_decl_line
+ .long 0x45 # DW_AT_type
+ .byte 0xa # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 24
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x4
+ .uleb128 0x30
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x45
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x3e
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x18d) DW_TAG_variable)
+ .ascii "u\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x17 # DW_AT_decl_line
+ .long 0x3e # DW_AT_type
+ .byte 0x8 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 8
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x3e
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x19f) DW_TAG_variable)
+ .ascii "v\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x18 # DW_AT_decl_line
+ .long 0x30 # DW_AT_type
+ .byte 0x8 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 0
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x30
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x1b1) DW_TAG_variable)
+ .ascii "w\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x19 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x14 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 24
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x4
+ .uleb128 0x30
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x29
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x29
+ .byte 0x8
+ .long 0 # fp or vector constant word 0
+ .long 0x3fd00000 # fp or vector constant word 1
+ .byte 0x1e # DW_OP_mul
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x1cf) DW_TAG_variable)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x1a # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x18 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 0
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 8
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0x22 # DW_OP_plus
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x29
+ .byte 0x8
+ .long 0 # fp or vector constant word 0
+ .long 0x3ff00000 # fp or vector constant word 1
+ .byte 0x22 # DW_OP_plus
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x1f1) DW_TAG_variable)
+ .ascii "y\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x1b # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x18 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 8
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 16
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0x22 # DW_OP_plus
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x29
+ .byte 0x8
+ .long 0 # fp or vector constant word 0
+ .long 0x40000000 # fp or vector constant word 1
+ .byte 0x22 # DW_OP_plus
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x213) DW_TAG_variable)
+ .ascii "z\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x1c # DW_AT_decl_line
+ .long 0x30 # DW_AT_type
+ .byte 0x14 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 24
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x4
+ .uleb128 0x30
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 28
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x4
+ .uleb128 0x30
+ .byte 0x22 # DW_OP_plus
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x30
+ .byte 0x4
+ .long 0x40400000 # fp or vector constant word 0
+ .byte 0x22 # DW_OP_plus
+ .byte 0x9f # DW_OP_stack_value
+ .byte 0 # end of children of DIE 0x53
+ .uleb128 0x7 # (DIE (0x232) DW_TAG_subprogram)
+ .byte 0x1 # DW_AT_external
+ .ascii "f2\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x21 # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long .LFB1 # DW_AT_low_pc
+ .long .LFE1 # DW_AT_high_pc
+ .long .LLST0 # DW_AT_frame_base
+ .byte 0x1 # DW_AT_GNU_all_call_sites
+ .long 0x40a # DW_AT_sibling
+ .uleb128 0x5 # (DIE (0x24b) DW_TAG_formal_parameter)
+ .ascii "a\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x21 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 0
+ .uleb128 0x5 # (DIE (0x257) DW_TAG_formal_parameter)
+ .ascii "b\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x21 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 8
+ .uleb128 0x5 # (DIE (0x263) DW_TAG_formal_parameter)
+ .ascii "c\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x21 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 16
+ .uleb128 0x5 # (DIE (0x26f) DW_TAG_formal_parameter)
+ .ascii "d\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x21 # DW_AT_decl_line
+ .long 0x30 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 24
+ .uleb128 0x5 # (DIE (0x27b) DW_TAG_formal_parameter)
+ .ascii "e\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x21 # DW_AT_decl_line
+ .long 0x30 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 28
+ .uleb128 0x5 # (DIE (0x287) DW_TAG_formal_parameter)
+ .ascii "f\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x21 # DW_AT_decl_line
+ .long 0x3e # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 32
+ .uleb128 0x5 # (DIE (0x293) DW_TAG_formal_parameter)
+ .ascii "g\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x21 # DW_AT_decl_line
+ .long 0x45 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 36
+ .uleb128 0x5 # (DIE (0x29f) DW_TAG_formal_parameter)
+ .ascii "h\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x21 # DW_AT_decl_line
+ .long 0x37 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 40
+ .uleb128 0x5 # (DIE (0x2ab) DW_TAG_formal_parameter)
+ .ascii "i\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x21 # DW_AT_decl_line
+ .long 0x4c # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 48
+ .uleb128 0x6 # (DIE (0x2b7) DW_TAG_variable)
+ .ascii "j\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x23 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x8 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 24
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x4
+ .uleb128 0x30
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x29
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x2c9) DW_TAG_variable)
+ .ascii "l\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x24 # DW_AT_decl_line
+ .long 0x37 # DW_AT_type
+ .byte 0xa # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 24
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x4
+ .uleb128 0x30
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x29
+ .byte 0xf9 # DW_OP_GNU_reinterpret
+ .uleb128 0x37
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x2dd) DW_TAG_variable)
+ .ascii "m\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x26 # DW_AT_decl_line
+ .long 0x37 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 16
+ .uleb128 0x8 # (DIE (0x2e9) DW_TAG_variable)
+ .ascii "n\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x28 # DW_AT_decl_line
+ .long 0x30 # DW_AT_type
+ .uleb128 0x8 # (DIE (0x2f2) DW_TAG_variable)
+ .ascii "o\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x29 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .uleb128 0x6 # (DIE (0x2fb) DW_TAG_variable)
+ .ascii "p\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x2a # DW_AT_decl_line
+ .long 0x30 # DW_AT_type
+ .byte 0x8 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 36
+ .byte 0x6 # DW_OP_deref
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x45
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x30
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x30d) DW_TAG_variable)
+ .ascii "q\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x2b # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x8 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 32
+ .byte 0x6 # DW_OP_deref
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x3e
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x29
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x31f) DW_TAG_variable)
+ .ascii "r\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x2c # DW_AT_decl_line
+ .long 0x4c # DW_AT_type
+ .byte 0xa # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 0
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x4c
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x37
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x333) DW_TAG_variable)
+ .ascii "s\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x2d # DW_AT_decl_line
+ .long 0x37 # DW_AT_type
+ .byte 0x8 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 16
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x37
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x345) DW_TAG_variable)
+ .ascii "t\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x2e # DW_AT_decl_line
+ .long 0x45 # DW_AT_type
+ .byte 0xa # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 24
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x4
+ .uleb128 0x30
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x45
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x3e
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x359) DW_TAG_variable)
+ .ascii "u\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x2f # DW_AT_decl_line
+ .long 0x3e # DW_AT_type
+ .byte 0x8 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 8
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x3e
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x36b) DW_TAG_variable)
+ .ascii "v\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x30 # DW_AT_decl_line
+ .long 0x30 # DW_AT_type
+ .byte 0x8 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 0
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x30
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x37d) DW_TAG_variable)
+ .ascii "w\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x31 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x14 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 24
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x4
+ .uleb128 0x30
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x29
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x29
+ .byte 0x8
+ .long 0 # fp or vector constant word 0
+ .long 0x3fd00000 # fp or vector constant word 1
+ .byte 0x1e # DW_OP_mul
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x39b) DW_TAG_variable)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x32 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x24 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 0
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 8
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0x22 # DW_OP_plus
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x29
+ .byte 0x8
+ .long 0 # fp or vector constant word 0
+ .long 0x40080000 # fp or vector constant word 1
+ .byte 0x1c # DW_OP_minus
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x29
+ .byte 0x8
+ .long 0x78b58c40 # fp or vector constant word 0
+ .long 0x4415af1d # fp or vector constant word 1
+ .byte 0x22 # DW_OP_plus
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x3c9) DW_TAG_variable)
+ .ascii "y\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x33 # DW_AT_decl_line
+ .long 0x29 # DW_AT_type
+ .byte 0x18 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 16
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x29
+ .byte 0x8
+ .long 0 # fp or vector constant word 0
+ .long 0x401c0000 # fp or vector constant word 1
+ .byte 0x1e # DW_OP_mul
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 8
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x29
+ .byte 0x22 # DW_OP_plus
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x3eb) DW_TAG_variable)
+ .ascii "z\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x34 # DW_AT_decl_line
+ .long 0x30 # DW_AT_type
+ .byte 0x14 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 24
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x4
+ .uleb128 0x30
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 28
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x4
+ .uleb128 0x30
+ .byte 0x22 # DW_OP_plus
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x30
+ .byte 0x4
+ .long 0x40400000 # fp or vector constant word 0
+ .byte 0x22 # DW_OP_plus
+ .byte 0x9f # DW_OP_stack_value
+ .byte 0 # end of children of DIE 0x232
+ .uleb128 0x4 # (DIE (0x40a) DW_TAG_subprogram)
+ .byte 0x1 # DW_AT_external
+ .ascii "f3\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x43 # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long .LFB2 # DW_AT_low_pc
+ .long .LFE2 # DW_AT_high_pc
+ .byte 0x2 # DW_AT_frame_base
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 4
+ .byte 0x1 # DW_AT_GNU_all_call_sites
+ .long 0x4fd # DW_AT_sibling
+ .uleb128 0x5 # (DIE (0x422) DW_TAG_formal_parameter)
+ .ascii "a\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x43 # DW_AT_decl_line
+ .long 0x37 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 0
+ .uleb128 0x5 # (DIE (0x42e) DW_TAG_formal_parameter)
+ .ascii "b\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x43 # DW_AT_decl_line
+ .long 0x3e # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 8
+ .uleb128 0x5 # (DIE (0x43a) DW_TAG_formal_parameter)
+ .ascii "c\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x43 # DW_AT_decl_line
+ .long 0x37 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 12
+ .uleb128 0x5 # (DIE (0x446) DW_TAG_formal_parameter)
+ .ascii "d\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x43 # DW_AT_decl_line
+ .long 0x45 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 20
+ .uleb128 0x6 # (DIE (0x452) DW_TAG_variable)
+ .ascii "w\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x45 # DW_AT_decl_line
+ .long 0x37 # DW_AT_type
+ .byte 0x16 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 20
+ .byte 0x6 # DW_OP_deref
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x45
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x37
+ .byte 0x12 # DW_OP_dup
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 0
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x37
+ .byte 0x16 # DW_OP_swap
+ .byte 0x14 # DW_OP_over
+ .byte 0x2b # DW_OP_gt
+ .byte 0x28 # DW_OP_bra
+ .value 0x1
+ .byte 0x16 # DW_OP_swap
+ .byte 0x13 # DW_OP_drop
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x472) DW_TAG_variable)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x46 # DW_AT_decl_line
+ .long 0x37 # DW_AT_type
+ .byte 0x1a # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 8
+ .byte 0x6 # DW_OP_deref
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x3e
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x37
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 0
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x37
+ .byte 0x22 # DW_OP_plus
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x37
+ .byte 0x8
+ .quad 0x7
+ .byte 0x22 # DW_OP_plus
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x496) DW_TAG_variable)
+ .ascii "y\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x47 # DW_AT_decl_line
+ .long 0x37 # DW_AT_type
+ .byte 0x1a # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 20
+ .byte 0x6 # DW_OP_deref
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x45
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x37
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 12
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x37
+ .byte 0x22 # DW_OP_plus
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x37
+ .byte 0x8
+ .quad 0x912345678
+ .byte 0x22 # DW_OP_plus
+ .byte 0x9f # DW_OP_stack_value
+ .uleb128 0x6 # (DIE (0x4ba) DW_TAG_variable)
+ .ascii "z\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x48 # DW_AT_decl_line
+ .long 0x3e # DW_AT_type
+ .byte 0x38 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 8
+ .byte 0x6 # DW_OP_deref
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x3e
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x37
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 0
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x37
+ .byte 0x22 # DW_OP_plus
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x37
+ .byte 0x8
+ .quad 0x7
+ .byte 0x22 # DW_OP_plus
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x3e
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 20
+ .byte 0x6 # DW_OP_deref
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x45
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x37
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 12
+ .byte 0xf6 # DW_OP_GNU_deref_type
+ .byte 0x8
+ .uleb128 0x37
+ .byte 0x22 # DW_OP_plus
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x37
+ .byte 0x8
+ .quad 0x912345678
+ .byte 0x22 # DW_OP_plus
+ .byte 0xf7 # DW_OP_GNU_convert
+ .uleb128 0x3e
+ .byte 0x22 # DW_OP_plus
+ .byte 0x9f # DW_OP_stack_value
+ .byte 0 # end of children of DIE 0x40a
+ .uleb128 0x4 # (DIE (0x4fd) DW_TAG_subprogram)
+ .byte 0x1 # DW_AT_external
+ .ascii "f4\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x4d # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long .LFB3 # DW_AT_low_pc
+ .long .LFE3 # DW_AT_high_pc
+ .byte 0x2 # DW_AT_frame_base
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 4
+ .byte 0x1 # DW_AT_GNU_all_call_sites
+ .long 0x555 # DW_AT_sibling
+ .uleb128 0x5 # (DIE (0x515) DW_TAG_formal_parameter)
+ .ascii "a\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x4d # DW_AT_decl_line
+ .long 0x555 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 0
+ .uleb128 0x5 # (DIE (0x521) DW_TAG_formal_parameter)
+ .ascii "b\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x4d # DW_AT_decl_line
+ .long 0x55c # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 4
+ .uleb128 0x5 # (DIE (0x52d) DW_TAG_formal_parameter)
+ .ascii "c\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x4d # DW_AT_decl_line
+ .long 0x563 # DW_AT_type
+ .byte 0x2 # DW_AT_location
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 16
+ .uleb128 0x8 # (DIE (0x539) DW_TAG_variable)
+ .ascii "w\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x4f # DW_AT_decl_line
+ .long 0x555 # DW_AT_type
+ .uleb128 0x8 # (DIE (0x542) DW_TAG_variable)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x50 # DW_AT_decl_line
+ .long 0x55c # DW_AT_type
+ .uleb128 0x8 # (DIE (0x54b) DW_TAG_variable)
+ .ascii "y\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x51 # DW_AT_decl_line
+ .long 0x563 # DW_AT_type
+ .byte 0 # end of children of DIE 0x4fd
+ .uleb128 0x2 # (DIE (0x555) DW_TAG_base_type)
+ .byte 0x4 # DW_AT_byte_size
+ .byte 0xf # DW_AT_encoding
+ .long .LASF8 # DW_AT_name: "_Decimal32"
+ .uleb128 0x2 # (DIE (0x55c) DW_TAG_base_type)
+ .byte 0x8 # DW_AT_byte_size
+ .byte 0xf # DW_AT_encoding
+ .long .LASF9 # DW_AT_name: "_Decimal64"
+ .uleb128 0x2 # (DIE (0x563) DW_TAG_base_type)
+ .byte 0x10 # DW_AT_byte_size
+ .byte 0xf # DW_AT_encoding
+ .long .LASF10 # DW_AT_name: "_Decimal128"
+ .uleb128 0x9 # (DIE (0x56a) DW_TAG_subprogram)
+ .byte 0x1 # DW_AT_external
+ .long .LASF11 # DW_AT_name: "main"
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x56 # DW_AT_decl_line
+ .long 0x3e # DW_AT_type
+ .long .LFB4 # DW_AT_low_pc
+ .long .LFE4 # DW_AT_high_pc
+ .long .LLST1 # DW_AT_frame_base
+ .byte 0x1 # DW_AT_GNU_all_call_sites
+ .long 0x62f # DW_AT_sibling
+ .uleb128 0xa # (DIE (0x587) DW_TAG_GNU_call_site)
+ .long .LVL5 # DW_AT_low_pc
+ .long 0x53 # DW_AT_abstract_origin
+ .long 0x5e1 # DW_AT_sibling
+ .uleb128 0xb # (DIE (0x594) DW_TAG_GNU_call_site_parameter)
+ .byte 0x2 # DW_AT_location
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 0
+ .byte 0xb # DW_AT_GNU_call_site_value
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x29
+ .byte 0x8
+ .long 0 # fp or vector constant word 0
+ .long 0x3ff00000 # fp or vector constant word 1
+ .uleb128 0xb # (DIE (0x5a4) DW_TAG_GNU_call_site_parameter)
+ .byte 0x2 # DW_AT_location
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 8
+ .byte 0xb # DW_AT_GNU_call_site_value
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x29
+ .byte 0x8
+ .long 0 # fp or vector constant word 0
+ .long 0x40000000 # fp or vector constant word 1
+ .uleb128 0xb # (DIE (0x5b4) DW_TAG_GNU_call_site_parameter)
+ .byte 0x2 # DW_AT_location
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 16
+ .byte 0xb # DW_AT_GNU_call_site_value
+ .byte 0xf4 # DW_OP_GNU_const_type
+ .uleb128 0x29
+ .byte 0x8
+ .long 0 # fp or vector constant word 0
+ .long 0x40080000 # fp or vector constant word 1
+ .uleb128 0xb # (DIE (0x5c4) DW_TAG_GNU_call_site_parameter)
+ .byte 0x2 # DW_AT_location
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 24
+ .byte 0x3 # DW_AT_GNU_call_site_value
+ .byte 0xf5 # DW_OP_GNU_regval_type
+ .uleb128 0x3
+ .uleb128 0x30
+ .uleb128 0xb # (DIE (0x5cc) DW_TAG_GNU_call_site_parameter)
+ .byte 0x2 # DW_AT_location
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 28
+ .byte 0x3 # DW_AT_GNU_call_site_value
+ .byte 0xf5 # DW_OP_GNU_regval_type
+ .uleb128 0x6
+ .uleb128 0x30
+ .uleb128 0xb # (DIE (0x5d4) DW_TAG_GNU_call_site_parameter)
+ .byte 0x2 # DW_AT_location
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 32
+ .byte 0x1 # DW_AT_GNU_call_site_value
+ .byte 0x36 # DW_OP_lit6
+ .uleb128 0xb # (DIE (0x5da) DW_TAG_GNU_call_site_parameter)
+ .byte 0x2 # DW_AT_location
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 36
+ .byte 0x1 # DW_AT_GNU_call_site_value
+ .byte 0x37 # DW_OP_lit7
+ .byte 0 # end of children of DIE 0x587
+ .uleb128 0xa # (DIE (0x5e1) DW_TAG_GNU_call_site)
+ .long .LVL6 # DW_AT_low_pc
+ .long 0x232 # DW_AT_abstract_origin
+ .long 0x60b # DW_AT_sibling
+ .uleb128 0xb # (DIE (0x5ee) DW_TAG_GNU_call_site_parameter)
+ .byte 0x2 # DW_AT_location
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 24
+ .byte 0x3 # DW_AT_GNU_call_site_value
+ .byte 0xf5 # DW_OP_GNU_regval_type
+ .uleb128 0x3
+ .uleb128 0x30
+ .uleb128 0xb # (DIE (0x5f6) DW_TAG_GNU_call_site_parameter)
+ .byte 0x2 # DW_AT_location
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 28
+ .byte 0x3 # DW_AT_GNU_call_site_value
+ .byte 0xf5 # DW_OP_GNU_regval_type
+ .uleb128 0x6
+ .uleb128 0x30
+ .uleb128 0xb # (DIE (0x5fe) DW_TAG_GNU_call_site_parameter)
+ .byte 0x2 # DW_AT_location
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 32
+ .byte 0x1 # DW_AT_GNU_call_site_value
+ .byte 0x36 # DW_OP_lit6
+ .uleb128 0xb # (DIE (0x604) DW_TAG_GNU_call_site_parameter)
+ .byte 0x2 # DW_AT_location
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 36
+ .byte 0x1 # DW_AT_GNU_call_site_value
+ .byte 0x37 # DW_OP_lit7
+ .byte 0 # end of children of DIE 0x5e1
+ .uleb128 0xa # (DIE (0x60b) DW_TAG_GNU_call_site)
+ .long .LVL7 # DW_AT_low_pc
+ .long 0x40a # DW_AT_abstract_origin
+ .long 0x625 # DW_AT_sibling
+ .uleb128 0xb # (DIE (0x618) DW_TAG_GNU_call_site_parameter)
+ .byte 0x2 # DW_AT_location
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 8
+ .byte 0x1 # DW_AT_GNU_call_site_value
+ .byte 0x32 # DW_OP_lit2
+ .uleb128 0xb # (DIE (0x61e) DW_TAG_GNU_call_site_parameter)
+ .byte 0x2 # DW_AT_location
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 20
+ .byte 0x1 # DW_AT_GNU_call_site_value
+ .byte 0x34 # DW_OP_lit4
+ .byte 0 # end of children of DIE 0x60b
+ .uleb128 0xc # (DIE (0x625) DW_TAG_GNU_call_site)
+ .long .LVL8 # DW_AT_low_pc
+ .long 0x4fd # DW_AT_abstract_origin
+ .byte 0 # end of children of DIE 0x56a
+ .uleb128 0xd # (DIE (0x62f) DW_TAG_variable)
+ .ascii "vv\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x5 # DW_AT_decl_line
+ .long 0x63b # DW_AT_type
+ .byte 0x1 # DW_AT_external
+ .byte 0x1 # DW_AT_declaration
+ .uleb128 0xe # (DIE (0x63b) DW_TAG_volatile_type)
+ .long 0x3e # DW_AT_type
+ .uleb128 0xf # (DIE (0x640) DW_TAG_variable)
+ .ascii "vv\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (typeddwarf.c)
+ .byte 0x5 # DW_AT_decl_line
+ .long 0x63b # DW_AT_type
+ .byte 0x1 # DW_AT_external
+ .byte 0x5 # DW_AT_location
+ .byte 0x3 # DW_OP_addr
+ .long vv
+ .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 0x3f # (DW_AT_external)
+ .uleb128 0xc # (DW_FORM_flag)
+ .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 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 0x7 # (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 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 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 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)
+ .byte 0
+ .byte 0
+ .uleb128 0x9 # (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 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 0xa # (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 0xb # (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 0xc # (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 0xd # (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 0xc # (DW_FORM_flag)
+ .uleb128 0x3c # (DW_AT_declaration)
+ .uleb128 0xc # (DW_FORM_flag)
+ .byte 0
+ .byte 0
+ .uleb128 0xe # (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 0xf # (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 0xc # (DW_FORM_flag)
+ .uleb128 0x2 # (DW_AT_location)
+ .uleb128 0xa # (DW_FORM_block1)
+ .byte 0
+ .byte 0
+ .byte 0
+ .section .debug_loc,"",@progbits
+.Ldebug_loc0:
+.LLST0:
+ .long .LFB1 # Location list begin address (*.LLST0)
+ .long .LCFI0 # Location list end address (*.LLST0)
+ .value 0x2 # Location expression size
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 4
+ .long .LCFI0 # Location list begin address (*.LLST0)
+ .long .LCFI1 # Location list end address (*.LLST0)
+ .value 0x2 # Location expression size
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 16
+ .long .LCFI1 # Location list begin address (*.LLST0)
+ .long .LFE1 # Location list end address (*.LLST0)
+ .value 0x2 # Location expression size
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 4
+ .long 0 # Location list terminator begin (*.LLST0)
+ .long 0 # Location list terminator end (*.LLST0)
+.LLST1:
+ .long .LFB4 # Location list begin address (*.LLST1)
+ .long .LCFI2 # Location list end address (*.LLST1)
+ .value 0x2 # Location expression size
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 4
+ .long .LCFI2 # Location list begin address (*.LLST1)
+ .long .LCFI3 # Location list end address (*.LLST1)
+ .value 0x2 # Location expression size
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 8
+ .long .LCFI3 # Location list begin address (*.LLST1)
+ .long .LCFI9 # Location list end address (*.LLST1)
+ .value 0x2 # Location expression size
+ .byte 0x75 # DW_OP_breg5
+ .sleb128 8
+ .long .LCFI9 # Location list begin address (*.LLST1)
+ .long .LFE4 # Location list end address (*.LLST1)
+ .value 0x2 # Location expression size
+ .byte 0x74 # DW_OP_breg4
+ .sleb128 4
+ .long 0 # Location list terminator begin (*.LLST1)
+ .long 0 # Location list terminator end (*.LLST1)
+ .section .debug_aranges,"",@progbits
+ .long 0x24 # Length of Address Ranges Info
+ .value 0x2 # DWARF Version
+ .long .Ldebug_info0 # Offset of Compilation Unit Info
+ .byte 0x4 # Size of Address
+ .byte 0 # Size of Segment Descriptor
+ .value 0 # Pad to 8 byte boundary
+ .value 0
+ .long .Ltext0 # Address
+ .long .Letext0-.Ltext0 # Length
+ .long .LFB4 # Address
+ .long .LFE4-.LFB4 # Length
+ .long 0
+ .long 0
+ .section .debug_ranges,"",@progbits
+.Ldebug_ranges0:
+ .long .Ltext0 # Offset 0
+ .long .Letext0
+ .long .LFB4 # Offset 0x8
+ .long .LFE4
+ .long 0
+ .long 0
+ .section .debug_line,"",@progbits
+.Ldebug_line0:
+ .long .LELT0-.LSLT0 # Length of Source Line Info
+.LSLT0:
+ .value 0x2 # DWARF Version
+ .long .LELTP0-.LASLTP0 # Prolog Length
+.LASLTP0:
+ .byte 0x1 # Minimum Instruction Length
+ .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 0 # End directory table
+ .ascii "typeddwarf.c\0" # File Entry: 0x1
+ .uleb128 0
+ .uleb128 0
+ .uleb128 0
+ .byte 0 # End file name table
+.LELTP0:
+ .byte 0 # set address *.LM37
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM37
+ .byte 0x6d # line 87
+ .byte 0 # set address *.LM38
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM38
+ .byte 0x18 # line 88
+ .byte 0 # set address *.LM39
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM39
+ .byte 0x16 # line 87
+ .byte 0 # set address *.LM40
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM40
+ .byte 0x18 # line 88
+ .byte 0 # set address *.LM41
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM41
+ .byte 0x16 # line 87
+ .byte 0 # set address *.LM42
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM42
+ .byte 0x18 # line 88
+ .byte 0 # set address *.LM43
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM43
+ .byte 0x18 # line 89
+ .byte 0 # set address *.LM44
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM44
+ .byte 0x18 # line 90
+ .byte 0 # set address *.LM45
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM45
+ .byte 0x18 # line 91
+ .byte 0 # set address *.LM46
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM46
+ .byte 0x19 # line 93
+ .byte 0 # set address *.LFE4
+ .uleb128 0x5
+ .byte 0x2
+ .long .LFE4
+ .byte 0 # end sequence
+ .uleb128 0x1
+ .byte 0x1
+ .byte 0 # set address *.LM1
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM1
+ .byte 0x20 # line 10
+ .byte 0 # set address *.LM2
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM2
+ .byte 0x2a # line 29
+ .byte 0 # set address *.LM3
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM3
+ .byte 0x18 # line 30
+ .byte 0 # set address *.LM4
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM4
+ .byte 0x1b # line 34
+ .byte 0 # set address *.LM5
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM5
+ .byte 0x2a # line 53
+ .byte 0 # set address *.LM6
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM6
+ .byte 0x18 # line 54
+ .byte 0 # set address *.LM7
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM7
+ .byte 0x3 # advance to line 34
+ .sleb128 -20
+ .byte 0x1
+ .byte 0 # set address *.LM8
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM8
+ .byte 0x2b # line 54
+ .byte 0 # set address *.LM9
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM9
+ .byte 0x16 # line 53
+ .byte 0 # set address *.LM10
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM10
+ .byte 0x18 # line 54
+ .byte 0 # set address *.LM11
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM11
+ .byte 0x18 # line 55
+ .byte 0 # set address *.LM12
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM12
+ .byte 0x16 # line 54
+ .byte 0 # set address *.LM13
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM13
+ .byte 0x18 # line 55
+ .byte 0 # set address *.LM14
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM14
+ .byte 0x18 # line 56
+ .byte 0 # set address *.LM15
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM15
+ .byte 0x16 # line 55
+ .byte 0 # set address *.LM16
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM16
+ .byte 0x18 # line 56
+ .byte 0 # set address *.LM17
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM17
+ .byte 0x18 # line 57
+ .byte 0 # set address *.LM18
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM18
+ .byte 0x16 # line 56
+ .byte 0 # set address *.LM19
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM19
+ .byte 0x18 # line 57
+ .byte 0 # set address *.LM20
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM20
+ .byte 0x18 # line 58
+ .byte 0 # set address *.LM21
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM21
+ .byte 0x16 # line 57
+ .byte 0 # set address *.LM22
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM22
+ .byte 0x18 # line 58
+ .byte 0 # set address *.LM23
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM23
+ .byte 0x18 # line 59
+ .byte 0 # set address *.LM24
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM24
+ .byte 0x1b # line 63
+ .byte 0 # set address *.LM25
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM25
+ .byte 0x13 # line 59
+ .byte 0 # set address *.LM26
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM26
+ .byte 0x18 # line 60
+ .byte 0 # set address *.LM27
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM27
+ .byte 0x18 # line 61
+ .byte 0 # set address *.LM28
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM28
+ .byte 0x18 # line 62
+ .byte 0 # set address *.LM29
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM29
+ .byte 0x18 # line 63
+ .byte 0 # set address *.LM30
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM30
+ .byte 0x18 # line 64
+ .byte 0 # set address *.LM31
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM31
+ .byte 0x1b # line 68
+ .byte 0 # set address *.LM32
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM32
+ .byte 0x1c # line 73
+ .byte 0 # set address *.LM33
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM33
+ .byte 0x18 # line 74
+ .byte 0 # set address *.LM34
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM34
+ .byte 0x1b # line 78
+ .byte 0 # set address *.LM35
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM35
+ .byte 0x1b # line 82
+ .byte 0 # set address *.LM36
+ .uleb128 0x5
+ .byte 0x2
+ .long .LM36
+ .byte 0x18 # line 83
+ .byte 0 # set address *.Letext0
+ .uleb128 0x5
+ .byte 0x2
+ .long .Letext0
+ .byte 0 # end sequence
+ .uleb128 0x1
+ .byte 0x1
+.LELT0:
+ .section .debug_str,"MS",@progbits,1
+.LASF2:
+ .string "long long int"
+.LASF3:
+ .string "unsigned int"
+.LASF8:
+ .string "_Decimal32"
+.LASF4:
+ .string "long long unsigned int"
+.LASF11:
+ .string "main"
+.LASF9:
+ .string "_Decimal64"
+.LASF0:
+ .string "double"
+.LASF10:
+ .string "_Decimal128"
+.LASF7:
+ .string "/usr/src/gcc/obj/gcc"
+.LASF1:
+ .string "float"
+.LASF6:
+ .string "typeddwarf.c"
+.LASF5:
+ .string "GNU C 4.7.0 20110504 (experimental)"
+ .ident "GCC: (GNU) 4.7.0 20110504 (experimental)"
+ .section .note.GNU-stack,"",@progbits
diff --git a/gdb/testsuite/gdb.dwarf2/typeddwarf.c b/gdb/testsuite/gdb.dwarf2/typeddwarf.c
new file mode 100644
index 0000000..e5f7d67
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/typeddwarf.c
@@ -0,0 +1,93 @@
+/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-options "-g" } */
+
+typedef __SIZE_TYPE__ size_t;
+volatile int vv;
+extern void *memcpy (void *, const void *, size_t);
+
+__attribute__((noinline, noclone)) void
+f1 (double a, double b, double c, float d, float e, int f, unsigned int g, long long h, unsigned long long i)
+{
+ double j = d; /* { dg-final { gdb-test 29 "j" "4" } } */
+ long long l; /* { dg-final { gdb-test 29 "l" "4616189618054758400" } } */
+ memcpy (&l, &j, sizeof (l));
+ long long m; /* { dg-final { gdb-test 29 "m" "4613937818241073152" } } */
+ memcpy (&m, &c, sizeof (l));
+ float n = i; /* { dg-final { gdb-test 29 "n" "9" } } */
+ double o = h; /* { dg-final { gdb-test 29 "o" "8" } } */
+ float p = g; /* { dg-final { gdb-test 29 "p" "7" } } */
+ double q = f; /* { dg-final { gdb-test 29 "q" "6" } } */
+ unsigned long long r = a; /* { dg-final { gdb-test 29 "r" "1" } } */
+ long long s = c; /* { dg-final { gdb-test 29 "s" "3" } } */
+ unsigned t = d; /* { dg-final { gdb-test 29 "t" "4" } } */
+ int u = b; /* { dg-final { gdb-test 29 "u" "2" } } */
+ float v = a; /* { dg-final { gdb-test 29 "v" "1" } } */
+ double w = d / 4.0; /* { dg-final { gdb-test 29 "w" "1" } } */
+ double x = a + b + 1.0; /* { dg-final { gdb-test 29 "x" "4" } } */
+ double y = b + c + 2.0; /* { dg-final { gdb-test 29 "y" "7" } } */
+ float z = d + e + 3.0f; /* { dg-final { gdb-test 29 "z" "12" } } */
+ vv++;
+}
+
+__attribute__((noinline, noclone)) void
+f2 (double a, double b, double c, float d, float e, int f, unsigned int g, long long h, unsigned long long i)
+{
+ double j = d; /* { dg-final { gdb-test 53 "j" "4" } } */
+ long long l; /* { dg-final { gdb-test 53 "l" "4616189618054758400" } } */
+ memcpy (&l, &j, sizeof (l));
+ long long m; /* { dg-final { gdb-test 53 "m" "4613937818241073152" } } */
+ memcpy (&m, &c, sizeof (l));
+ float n = i; /* { dg-final { xfail-gdb-test 53 "n" "9" } } */
+ double o = h; /* { dg-final { xfail-gdb-test 53 "o" "8" } } */
+ float p = g; /* { dg-final { gdb-test 53 "p" "7" } } */
+ double q = f; /* { dg-final { gdb-test 53 "q" "6" } } */
+ unsigned long long r = a; /* { dg-final { gdb-test 53 "r" "1" } } */
+ long long s = c; /* { dg-final { gdb-test 53 "s" "3" } } */
+ unsigned t = d; /* { dg-final { gdb-test 53 "t" "4" } } */
+ int u = b; /* { dg-final { gdb-test 53 "u" "2" } } */
+ float v = a; /* { dg-final { gdb-test 53 "v" "1" } } */
+ double w = d / 4.0; /* { dg-final { gdb-test 53 "w" "1" } } */
+ double x = a + b - 3 + 1.0e20;/* { dg-final { gdb-test 53 "x" "1e\\+20" } } */
+ double y = b + c * 7.0; /* { dg-final { gdb-test 53 "y" "23" } } */
+ float z = d + e + 3.0f; /* { dg-final { gdb-test 53 "z" "12" } } */
+ vv++;
+ vv = a;
+ vv = b;
+ vv = c;
+ vv = d;
+ vv = e;
+ vv = f;
+ vv = g;
+ vv = h;
+ vv = i;
+ vv = j;
+}
+
+__attribute__((noinline, noclone)) void
+f3 (long long a, int b, long long c, unsigned d)
+{
+ long long w = (a > d) ? a : d;/* { dg-final { gdb-test 73 "w" "4" } } */
+ long long x = a + b + 7; /* { dg-final { gdb-test 73 "x" "10" } } */
+ long long y = c + d + 0x912345678LL;/* { dg-final { gdb-test 73 "y" "38960125567" } } */
+ int z = (x + y); /* { dg-final { gdb-test 73 "z" "305419913" } } */
+ vv++;
+}
+
+__attribute__((noinline, noclone)) void
+f4 (_Decimal32 a, _Decimal64 b, _Decimal128 c)
+{
+ _Decimal32 w = a * 8.0DF + 6.0DF;/* { dg-final { xfail-gdb-test 82 "(int)w" "70" } } */
+ _Decimal64 x = b / 8.0DD - 6.0DD;/* { dg-final { xfail-gdb-test 82 "(int)x" "-4" } } */
+ _Decimal128 y = -c / 8.0DL; /* { dg-final { xfail-gdb-test 82 "(int)y" "-8" } } */
+ vv++;
+}
+
+int
+main ()
+{
+ f1 (1.0, 2.0, 3.0, 4.0f, 5.0f, 6, 7, 8, 9);
+ f2 (1.0, 2.0, 3.0, 4.0f, 5.0f, 6, 7, 8, 9);
+ f3 (1, 2, 3, 4);
+ f4 (8.0DF, 16.0DD, 64.0DL);
+ return 0;
+}
diff --git a/gdb/testsuite/gdb.dwarf2/typeddwarf.exp b/gdb/testsuite/gdb.dwarf2/typeddwarf.exp
new file mode 100644
index 0000000..bddcc18
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/typeddwarf.exp
@@ -0,0 +1,91 @@
+# 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/>.
+
+load_lib dwarf.exp
+
+set test "typeddwarf"
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if ![dwarf2_support] {
+ return 0
+}
+
+# This test can only be run on x86 targets.
+if { ![istarget i?86-*] } {
+ return 0
+}
+
+if { [prepare_for_testing "${test}.exp" "${test}" ${test}.S {nodebug}] } {
+ return -1
+}
+
+if ![runto_main] {
+ return -1
+}
+
+global tests
+set tests(_) -
+unset tests(_)
+
+proc gdb-test {line var value} {
+ global tests
+
+ lappend tests($line) [list $var $value 0]
+}
+
+proc xfail-gdb-test {line var value} {
+ global tests
+
+ lappend tests($line) [list $var $value 1]
+}
+
+proc scan_gdb_tests {} {
+ global srcdir subdir test
+
+ set file "$srcdir/$subdir/$test.c"
+
+ set fd [open "$file"]
+ while {![eof $fd]} {
+ set line [gets $fd]
+ if {! [regexp "\{ (gdb-test .+) \} \}" $line ignore test_cmd]} {
+ continue
+ }
+
+ eval $test_cmd
+ }
+ close $fd
+}
+
+scan_gdb_tests
+
+foreach line [lsort [array names tests]] {
+ gdb_test "break typeddwarf.c:$line" "Breakpoint .*" \
+ "set breakpoint at typeddwarf.c:$line"
+ gdb_continue_to_breakpoint "continue to typeddwarf.c:$line"
+
+ foreach test $tests($line) {
+ set var [lindex $test 0]
+ set value [lindex $test 1]
+ set should_xfail [lindex $test 2]
+
+ if {$should_xfail} {
+ setup_xfail *-*-*
+ }
+
+ gdb_test "print $var" \
+ " = $value" \
+ "check value of $var at typeddwarf.c:$line"
+ }
+}