aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlrich Weigand <ulrich.weigand@de.ibm.com>2013-05-06 16:18:29 +0000
committerUlrich Weigand <ulrich.weigand@de.ibm.com>2013-05-06 16:18:29 +0000
commit25cf4ebd50ca150468ef51697ea3587cacb87460 (patch)
treeb8b7c6361e23d6fb59023ee9b8fd46a917cc68ed
parentb503b49b5105b6aad7d2a015468b84b0f64dfe8e (diff)
downloadexternal_llvm-25cf4ebd50ca150468ef51697ea3587cacb87460.zip
external_llvm-25cf4ebd50ca150468ef51697ea3587cacb87460.tar.gz
external_llvm-25cf4ebd50ca150468ef51697ea3587cacb87460.tar.bz2
[SystemZ] Add DebugInfo test cases
This adds all DebugInfo tests for the SystemZ target. This version of the patch incorporates feedback from reviews by Eric Christopher and Rafael Espindola. Thanks to all reviewers! Patch by Richard Sandiford. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181205 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/DebugInfo/SystemZ/eh_frame.s54
-rw-r--r--test/DebugInfo/SystemZ/eh_frame_personality.ll43
-rw-r--r--test/DebugInfo/SystemZ/eh_frame_personality.s67
-rw-r--r--test/DebugInfo/SystemZ/lit.local.cfg6
-rw-r--r--test/DebugInfo/SystemZ/variable-loc.ll85
-rw-r--r--test/DebugInfo/SystemZ/variable-loc.s340
6 files changed, 595 insertions, 0 deletions
diff --git a/test/DebugInfo/SystemZ/eh_frame.s b/test/DebugInfo/SystemZ/eh_frame.s
new file mode 100644
index 0000000..4e7afd5
--- /dev/null
+++ b/test/DebugInfo/SystemZ/eh_frame.s
@@ -0,0 +1,54 @@
+# RUN: llvm-mc -triple=s390x-linux-gnu -filetype=obj %s -o %t
+# RUN: llvm-objdump -s %t | FileCheck %s
+
+ .text
+ .globl check_largest_class
+ .align 4
+ .type check_largest_class,@function
+check_largest_class:
+ .cfi_startproc
+ stmg %r13, %r15, 104(%r15)
+ .cfi_offset %r13, -56
+ .cfi_offset %r14, -48
+ .cfi_offset %r15, -40
+ aghi %r15, -160
+ .cfi_def_cfa_offset 320
+ lmg %r13, %r15, 264(%r15)
+ br %r14
+ .size check_largest_class, .-check_largest_class
+ .cfi_endproc
+
+# The readelf rendering is:
+#
+# Contents of the .eh_frame section:
+#
+# 00000000 0000001c 00000000 CIE
+# Version: 1
+# Augmentation: "zR"
+# Code alignment factor: 1
+# Data alignment factor: -8
+# Return address column: 14
+# Augmentation data: 1b
+#
+# DW_CFA_def_cfa: r15 ofs 160
+# DW_CFA_nop
+# DW_CFA_nop
+# DW_CFA_nop
+#
+# 00000020 0000001c 00000024 FDE cie=00000000 pc=00000000..00000012
+# DW_CFA_advance_loc: 6 to 00000006
+# DW_CFA_offset: r13 at cfa-56
+# DW_CFA_offset: r14 at cfa-48
+# DW_CFA_offset: r15 at cfa-40
+# DW_CFA_advance_loc: 4 to 0000000a
+# DW_CFA_def_cfa_offset: 320
+# DW_CFA_nop
+# DW_CFA_nop
+# DW_CFA_nop
+# DW_CFA_nop
+#
+# CHECK: Contents of section .eh_frame:
+# CHECK-NEXT: 0000 00000014 00000000 017a5200 01780e01 .........zR..x..
+# CHECK-NEXT: 0010 1b0c0fa0 01000000 0000001c 0000001c ................
+# CHECK-NEXT: 0020 00000000 00000012 00468d07 8e068f05 .........F......
+# CHECK-NEXT: 0030 440ec002 00000000 D.......
diff --git a/test/DebugInfo/SystemZ/eh_frame_personality.ll b/test/DebugInfo/SystemZ/eh_frame_personality.ll
new file mode 100644
index 0000000..e5dbb15
--- /dev/null
+++ b/test/DebugInfo/SystemZ/eh_frame_personality.ll
@@ -0,0 +1,43 @@
+; RUN: llc < %s -verify-machineinstrs -mtriple=s390x-linux-gnu | FileCheck -check-prefix=CHECK-FUNC %s
+; RUN: llc < %s -verify-machineinstrs -mtriple=s390x-linux-gnu | FileCheck -check-prefix=CHECK-ET %s
+; RUN: llc < %s -verify-machineinstrs -mtriple=s390x-linux-gnu | FileCheck -check-prefix=CHECK-REF %s
+
+declare i32 @__gxx_personality_v0(...)
+
+declare void @bar()
+
+define i64 @foo(i64 %lhs, i64 %rhs) {
+ invoke void @bar() to label %end unwind label %clean
+end:
+ ret i64 0
+
+clean:
+ %tst = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) cleanup
+ ret i64 42
+}
+
+; CHECK-FUNC: foo:
+; CHECK-FUNC: .cfi_startproc
+; CHECK-FUNC: .cfi_personality 155, DW.ref.__gxx_personality_v0
+; CHECK-FUNC: .cfi_lsda 27, .Lexception0
+; CHECK-FUNC: stmg %r14, %r15, 112(%r15)
+; CHECK-FUNC: .cfi_offset %r14, -48
+; CHECK-FUNC: .cfi_offset %r15, -40
+; CHECK-FUNC: aghi %r15, -160
+; CHECK-FUNC: .cfi_def_cfa_offset 320
+; ...main function...
+; CHECK-FUNC: .cfi_endproc
+;
+; CHECK-ET: .section .gcc_except_table,"a",@progbits
+; CHECK-ET-NEXT: .align 4
+; CHECK-ET-NEXT: GCC_except_table0:
+; CHECK-ET-NEXT: .Lexception0:
+;
+; CHECK-REF: .hidden DW.ref.__gxx_personality_v0
+; CHECK-REF: .weak DW.ref.__gxx_personality_v0
+; CHECK-REF: .section .data.DW.ref.__gxx_personality_v0,"aGw",@progbits,DW.ref.__gxx_personality_v0,comdat
+; CHECK-REF-NEXT: .align 8
+; CHECK-REF-NEXT: .type DW.ref.__gxx_personality_v0,@object
+; CHECK-REF-NEXT: .size DW.ref.__gxx_personality_v0, 8
+; CHECK-REF-NEXT: DW.ref.__gxx_personality_v0:
+; CHECK-REF-NEXT: .quad __gxx_personality_v0
diff --git a/test/DebugInfo/SystemZ/eh_frame_personality.s b/test/DebugInfo/SystemZ/eh_frame_personality.s
new file mode 100644
index 0000000..46b46db
--- /dev/null
+++ b/test/DebugInfo/SystemZ/eh_frame_personality.s
@@ -0,0 +1,67 @@
+# RUN: llvm-mc -triple=s390x-linux-gnu -filetype=obj %s -o %t
+# RUN: llvm-objdump -s %t | FileCheck %s
+
+ .text
+ .globl foo
+ .align 4
+ .type foo,@function
+foo: # @foo
+ .cfi_startproc
+ .cfi_personality 155, DW.ref.__gxx_personality_v0
+ .cfi_lsda 27, .Lexception0
+ stmg %r14, %r15, 112(%r15)
+ .cfi_offset %r14, -48
+ .cfi_offset %r15, -40
+ aghi %r15, -160
+ .cfi_def_cfa_offset 320
+ lmg %r14, %r15, 272(%r15)
+ br %r14
+ .size foo, .-foo
+ .cfi_endproc
+
+ .section .gcc_except_table,"a",@progbits
+ .align 4
+.Lexception0:
+
+ .hidden DW.ref.__gxx_personality_v0
+ .weak DW.ref.__gxx_personality_v0
+ .section .data.DW.ref.__gxx_personality_v0,"aGw",@progbits,DW.ref.__gxx_personality_v0,comdat
+ .align 8
+ .type DW.ref.__gxx_personality_v0,@object
+ .size DW.ref.__gxx_personality_v0, 8
+DW.ref.__gxx_personality_v0:
+ .quad __gxx_personality_v0
+
+# The readelf rendering is:
+#
+# Contents of the .eh_frame section:
+#
+# 00000000 0000001c 00000000 CIE
+# Version: 1
+# Augmentation: "zPLR"
+# Code alignment factor: 1
+# Data alignment factor: -8
+# Return address column: 14
+# Augmentation data: 9b ff ff ff ed 1b 1b
+#
+# DW_CFA_def_cfa: r15 ofs 160
+# DW_CFA_nop
+# DW_CFA_nop
+# DW_CFA_nop
+#
+# 00000020 0000001c 00000024 FDE cie=00000000 pc=00000000..00000012
+# Augmentation data: ff ff ff cf
+#
+# DW_CFA_advance_loc: 6 to 00000006
+# DW_CFA_offset: r14 at cfa-48
+# DW_CFA_offset: r15 at cfa-40
+# DW_CFA_advance_loc: 4 to 0000000a
+# DW_CFA_def_cfa_offset: 320
+# DW_CFA_nop
+# DW_CFA_nop
+#
+# CHECK: Contents of section .eh_frame:
+# CHECK-NEXT: 0000 0000001c 00000000 017a504c 52000178 .........zPLR..x
+# CHECK-NEXT: 0010 0e079b00 0000001b 1b0c0fa0 01000000 ................
+# CHECK-NEXT: 0020 0000001c 00000024 00000000 00000012 .......$........
+# CHECK-NEXT: 0030 04000000 00468e06 8f05440e c0020000 .....F....D.....
diff --git a/test/DebugInfo/SystemZ/lit.local.cfg b/test/DebugInfo/SystemZ/lit.local.cfg
new file mode 100644
index 0000000..a70a685
--- /dev/null
+++ b/test/DebugInfo/SystemZ/lit.local.cfg
@@ -0,0 +1,6 @@
+config.suffixes = ['.ll', '.s']
+
+targets = set(config.root.targets_to_build.split())
+if not 'SystemZ' in targets:
+ config.unsupported = True
+
diff --git a/test/DebugInfo/SystemZ/variable-loc.ll b/test/DebugInfo/SystemZ/variable-loc.ll
new file mode 100644
index 0000000..e6f4ff9
--- /dev/null
+++ b/test/DebugInfo/SystemZ/variable-loc.ll
@@ -0,0 +1,85 @@
+; RUN: llc -mtriple=s390x-linux-gnu -disable-fp-elim < %s | FileCheck %s
+;
+; This is a regression test making sure the location of variables is correct in
+; debugging information, even if they're addressed via the frame pointer.
+; A copy of the AArch64 test, commandeered for SystemZ.
+;
+; First make sure main_arr is where we expect it: %r11 + 164
+;
+; CHECK: main:
+; CHECK: aghi %r15, -568
+; CHECK: la [[MAIN_ARR:%r[0-9]+]], 164(%r11)
+; CHECK: lgr %r2, [[MAIN_ARR]]
+; CHECK: brasl %r14, populate_array@PLT
+;
+; Now check that the debugging information reflects this:
+; CHECK: DW_TAG_variable
+; CHECK-NEXT: .long .Linfo_string7
+;
+; Rather hard-coded, but 145 => DW_OP_fbreg and the .ascii is the sleb128
+; encoding of 164:
+; CHECK: DW_AT_location
+; CHECK-NEXT: .byte 145
+; CHECK-NEXT: .ascii "\244\001"
+;
+; CHECK: .Linfo_string7:
+; CHECK-NEXT: main_arr
+
+
+@.str = private unnamed_addr constant [13 x i8] c"Total is %d\0A\00", align 2
+
+declare void @populate_array(i32*, i32) nounwind
+
+declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone
+
+declare i32 @sum_array(i32*, i32) nounwind
+
+define i32 @main() nounwind {
+entry:
+ %retval = alloca i32, align 4
+ %main_arr = alloca [100 x i32], align 4
+ %val = alloca i32, align 4
+ store i32 0, i32* %retval
+ call void @llvm.dbg.declare(metadata !{[100 x i32]* %main_arr}, metadata !17), !dbg !22
+ call void @llvm.dbg.declare(metadata !{i32* %val}, metadata !23), !dbg !24
+ %arraydecay = getelementptr inbounds [100 x i32]* %main_arr, i32 0, i32 0, !dbg !25
+ call void @populate_array(i32* %arraydecay, i32 100), !dbg !25
+ %arraydecay1 = getelementptr inbounds [100 x i32]* %main_arr, i32 0, i32 0, !dbg !26
+ %call = call i32 @sum_array(i32* %arraydecay1, i32 100), !dbg !26
+ store i32 %call, i32* %val, align 4, !dbg !26
+ %0 = load i32* %val, align 4, !dbg !27
+ %call2 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([13 x i8]* @.str, i32 0, i32 0), i32 %0), !dbg !27
+ ret i32 0, !dbg !28
+}
+
+declare i32 @printf(i8*, ...)
+
+!llvm.dbg.cu = !{!0}
+
+!0 = metadata !{i32 786449, metadata !29, i32 12, metadata !"clang version 3.2 ", i1 false, metadata !"", i32 0, metadata !1, metadata !1, metadata !3, metadata !1, metadata !1, metadata !""} ; [ DW_TAG_compile_unit ] [/home/timnor01/a64-trunk/build/simple.c] [DW_LANG_C99]
+!1 = metadata !{i32 0}
+!3 = metadata !{metadata !5, metadata !11, metadata !14}
+!5 = metadata !{i32 786478, metadata !6, metadata !"populate_array", metadata !"populate_array", metadata !"", metadata !6, i32 4, metadata !7, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, void (i32*, i32)* @populate_array, null, null, metadata !1, i32 4} ; [ DW_TAG_subprogram ] [line 4] [def] [populate_array]
+!6 = metadata !{i32 786473, metadata !29} ; [ DW_TAG_file_type ]
+!7 = metadata !{i32 786453, i32 0, metadata !"", i32 0, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !8, i32 0, i32 0} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
+!8 = metadata !{null, metadata !9, metadata !10}
+!9 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 0, metadata !10} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [from int]
+!10 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]
+!11 = metadata !{i32 786478, metadata !6, metadata !"sum_array", metadata !"sum_array", metadata !"", metadata !6, i32 9, metadata !12, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, i32 (i32*, i32)* @sum_array, null, null, metadata !1, i32 9} ; [ DW_TAG_subprogram ] [line 9] [def] [sum_array]
+!12 = metadata !{i32 786453, i32 0, metadata !"", i32 0, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !13, i32 0, i32 0} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
+!13 = metadata !{metadata !10, metadata !9, metadata !10}
+!14 = metadata !{i32 786478, metadata !6, metadata !"main", metadata !"main", metadata !"", metadata !6, i32 18, metadata !15, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, i32 ()* @main, null, null, metadata !1, i32 18} ; [ DW_TAG_subprogram ] [line 18] [def] [main]
+!15 = metadata !{i32 786453, i32 0, metadata !"", i32 0, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !16, i32 0, i32 0} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
+!16 = metadata !{metadata !10}
+!17 = metadata !{i32 786688, metadata !18, metadata !"main_arr", metadata !6, i32 19, metadata !19, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [main_arr] [line 19]
+!18 = metadata !{i32 786443, metadata !6, metadata !14, i32 18, i32 16, i32 4} ; [ DW_TAG_lexical_block ] [/home/timnor01/a64-trunk/build/simple.c]
+!19 = metadata !{i32 786433, null, null, metadata !"", i32 0, i64 3200, i64 32, i32 0, i32 0, metadata !10, metadata !20, i32 0, i32 0} ; [ DW_TAG_array_type ] [line 0, size 3200, align 32, offset 0] [from int]
+!20 = metadata !{i32 786465, i64 0, i64 99} ; [ DW_TAG_subrange_type ] [0, 99]
+!22 = metadata !{i32 19, i32 7, metadata !18, null}
+!23 = metadata !{i32 786688, metadata !18, metadata !"val", metadata !6, i32 20, metadata !10, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [val] [line 20]
+!24 = metadata !{i32 20, i32 7, metadata !18, null}
+!25 = metadata !{i32 22, i32 3, metadata !18, null}
+!26 = metadata !{i32 23, i32 9, metadata !18, null}
+!27 = metadata !{i32 24, i32 3, metadata !18, null}
+!28 = metadata !{i32 26, i32 3, metadata !18, null}
+!29 = metadata !{metadata !"simple.c", metadata !"/home/timnor01/a64-trunk/build"}
diff --git a/test/DebugInfo/SystemZ/variable-loc.s b/test/DebugInfo/SystemZ/variable-loc.s
new file mode 100644
index 0000000..d439a46
--- /dev/null
+++ b/test/DebugInfo/SystemZ/variable-loc.s
@@ -0,0 +1,340 @@
+# RUN: llvm-mc < %s -triple=s390x-linux-gnu -filetype=obj | llvm-dwarfdump - | FileCheck %s
+#
+# We use both R_390_32 and R_390_64 to encode the dwarf information.
+# Test that they are used correctly. This uses the assembly output
+# for variable-loc.ll
+#
+# A couple of R_390_32s, both at 0 and elsewhere:
+#
+# CHECK: DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 3.2 ")
+# CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000013] = "simple.c")
+#
+# A couple of R_390_64s similarly:
+#
+# CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
+# CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000000000050)
+
+
+ .file "test/DebugInfo/SystemZ/variable-loc.ll"
+ .section .debug_info,"",@progbits
+.Lsection_info:
+ .section .debug_abbrev,"",@progbits
+.Lsection_abbrev:
+ .section .debug_aranges,"",@progbits
+ .section .debug_macinfo,"",@progbits
+ .section .debug_line,"",@progbits
+.Lsection_line:
+ .section .debug_loc,"",@progbits
+ .section .debug_pubtypes,"",@progbits
+ .section .debug_str,"MS",@progbits,1
+.Linfo_string:
+ .section .debug_ranges,"",@progbits
+.Ldebug_range:
+ .section .debug_loc,"",@progbits
+.Lsection_debug_loc:
+ .text
+.Ltext_begin:
+ .data
+ .file 1 "simple.c"
+ .file 2 "<stdin>"
+ .text
+ .globl main
+ .align 4
+ .type main,@function
+main: # @main
+ .cfi_startproc
+.Lfunc_begin0:
+ .loc 2 18 0 # :18:0
+# BB#0: # %entry
+ stmg %r12, %r15, 96(%r15)
+.Ltmp2:
+ .cfi_offset %r12, -64
+.Ltmp3:
+ .cfi_offset %r13, -56
+.Ltmp4:
+ .cfi_offset %r14, -48
+.Ltmp5:
+ .cfi_offset %r15, -40
+ aghi %r15, -568
+.Ltmp6:
+ .cfi_def_cfa_offset 728
+ mvhi 564(%r15), 0
+ la %r13, 164(%r15)
+ lhi %r12, 100
+ .loc 2 22 3 prologue_end # :22:3
+.Ltmp7:
+ lgr %r2, %r13
+ lr %r3, %r12
+ brasl %r14, populate_array@PLT
+ .loc 2 23 9 # :23:9
+ lgr %r2, %r13
+ lr %r3, %r12
+ brasl %r14, sum_array@PLT
+ lr %r0, %r2
+ st %r0, 160(%r15)
+ .loc 2 24 3 # :24:3
+ larl %r2, .L.str
+ lr %r3, %r0
+ brasl %r14, printf@PLT
+ lhi %r2, 0
+ .loc 2 26 3 # :26:3
+ lmg %r12, %r15, 664(%r15)
+ br %r14
+.Ltmp8:
+.Ltmp9:
+ .size main, .Ltmp9-main
+.Lfunc_end0:
+ .cfi_endproc
+
+ .type .L.str,@object # @.str
+ .section .rodata.str1.2,"aMS",@progbits,1
+ .align 2
+.L.str:
+ .asciz "Total is %d\n"
+ .size .L.str, 13
+
+ .cfi_sections .debug_frame
+ .text
+.Ltext_end:
+ .data
+.Ldata_end:
+ .text
+.Lsection_end1:
+ .section .debug_info,"",@progbits
+.L.debug_info_begin0:
+ .long 155 # Length of Compilation Unit Info
+ .short 2 # DWARF version number
+ .long .L.debug_abbrev_begin # Offset Into Abbrev. Section
+ .byte 8 # Address Size (in bytes)
+ .byte 1 # Abbrev [1] 0xb:0x94 DW_TAG_compile_unit
+ .long .Linfo_string0 # DW_AT_producer
+ .short 12 # DW_AT_language
+ .long .Linfo_string1 # DW_AT_name
+ .quad 0 # DW_AT_low_pc
+ .long .Lsection_line # DW_AT_stmt_list
+ .long .Linfo_string2 # DW_AT_comp_dir
+ .byte 2 # Abbrev [2] 0x26:0x7 DW_TAG_subprogram
+ .long .Linfo_string3 # DW_AT_name
+ .byte 2 # DW_AT_decl_file
+ .byte 4 # DW_AT_decl_line
+ # DW_AT_prototyped
+ # DW_AT_external
+ .byte 3 # Abbrev [3] 0x2d:0xb DW_TAG_subprogram
+ .long .Linfo_string4 # DW_AT_name
+ .byte 2 # DW_AT_decl_file
+ .byte 9 # DW_AT_decl_line
+ # DW_AT_prototyped
+ .long 56 # DW_AT_type
+ # DW_AT_external
+ .byte 4 # Abbrev [4] 0x38:0x7 DW_TAG_base_type
+ .long .Linfo_string5 # DW_AT_name
+ .byte 5 # DW_AT_encoding
+ .byte 4 # DW_AT_byte_size
+ .byte 5 # Abbrev [5] 0x3f:0xb DW_TAG_subprogram
+ .long .Linfo_string6 # DW_AT_name
+ .byte 2 # DW_AT_decl_file
+ .byte 18 # DW_AT_decl_line
+ # DW_AT_prototyped
+ .long 56 # DW_AT_type
+ # DW_AT_external
+ # DW_AT_declaration
+ .byte 6 # Abbrev [6] 0x4a:0x7 DW_TAG_base_type
+ .long .Linfo_string5 # DW_AT_name
+ .byte 4 # DW_AT_byte_size
+ .byte 5 # DW_AT_encoding
+ .byte 7 # Abbrev [7] 0x51:0x5 DW_TAG_array_type
+ .long 56 # DW_AT_type
+ .byte 8 # Abbrev [8] 0x56:0x48 DW_TAG_subprogram
+ .long 63 # DW_AT_specification
+ .quad .Lfunc_begin0 # DW_AT_low_pc
+ .quad .Lfunc_end0 # DW_AT_high_pc
+ .byte 1 # DW_AT_frame_base
+ .byte 95
+ # DW_AT_APPLE_omit_frame_ptr
+ .byte 9 # Abbrev [9] 0x6d:0x30 DW_TAG_lexical_block
+ .quad .Ltmp7 # DW_AT_low_pc
+ .quad .Ltmp8 # DW_AT_high_pc
+ .byte 10 # Abbrev [10] 0x7e:0xf DW_TAG_variable
+ .long .Linfo_string7 # DW_AT_name
+ .byte 2 # DW_AT_decl_file
+ .byte 19 # DW_AT_decl_line
+ .long 81 # DW_AT_type
+ .byte 3 # DW_AT_location
+ .byte 145
+ .ascii "\244\001"
+ .byte 10 # Abbrev [10] 0x8d:0xf DW_TAG_variable
+ .long .Linfo_string8 # DW_AT_name
+ .byte 2 # DW_AT_decl_file
+ .byte 20 # DW_AT_decl_line
+ .long 56 # DW_AT_type
+ .byte 3 # DW_AT_location
+ .byte 145
+ .ascii "\240\001"
+ .byte 0 # End Of Children Mark
+ .byte 0 # End Of Children Mark
+ .byte 0 # End Of Children Mark
+.L.debug_info_end0:
+ .section .debug_abbrev,"",@progbits
+.L.debug_abbrev_begin:
+ .byte 1 # Abbreviation Code
+ .byte 17 # DW_TAG_compile_unit
+ .byte 1 # DW_CHILDREN_yes
+ .byte 37 # DW_AT_producer
+ .byte 14 # DW_FORM_strp
+ .byte 19 # DW_AT_language
+ .byte 5 # DW_FORM_data2
+ .byte 3 # DW_AT_name
+ .byte 14 # DW_FORM_strp
+ .byte 17 # DW_AT_low_pc
+ .byte 1 # DW_FORM_addr
+ .byte 16 # DW_AT_stmt_list
+ .byte 6 # DW_FORM_data4
+ .byte 27 # DW_AT_comp_dir
+ .byte 14 # DW_FORM_strp
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 2 # Abbreviation Code
+ .byte 46 # DW_TAG_subprogram
+ .byte 0 # DW_CHILDREN_no
+ .byte 3 # DW_AT_name
+ .byte 14 # DW_FORM_strp
+ .byte 58 # DW_AT_decl_file
+ .byte 11 # DW_FORM_data1
+ .byte 59 # DW_AT_decl_line
+ .byte 11 # DW_FORM_data1
+ .byte 39 # DW_AT_prototyped
+ .byte 25 # DW_FORM_flag_present
+ .byte 63 # DW_AT_external
+ .byte 25 # DW_FORM_flag_present
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 3 # Abbreviation Code
+ .byte 46 # DW_TAG_subprogram
+ .byte 0 # DW_CHILDREN_no
+ .byte 3 # DW_AT_name
+ .byte 14 # DW_FORM_strp
+ .byte 58 # DW_AT_decl_file
+ .byte 11 # DW_FORM_data1
+ .byte 59 # DW_AT_decl_line
+ .byte 11 # DW_FORM_data1
+ .byte 39 # DW_AT_prototyped
+ .byte 25 # DW_FORM_flag_present
+ .byte 73 # DW_AT_type
+ .byte 19 # DW_FORM_ref4
+ .byte 63 # DW_AT_external
+ .byte 25 # DW_FORM_flag_present
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 4 # Abbreviation Code
+ .byte 36 # DW_TAG_base_type
+ .byte 0 # DW_CHILDREN_no
+ .byte 3 # DW_AT_name
+ .byte 14 # DW_FORM_strp
+ .byte 62 # DW_AT_encoding
+ .byte 11 # DW_FORM_data1
+ .byte 11 # DW_AT_byte_size
+ .byte 11 # DW_FORM_data1
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 5 # Abbreviation Code
+ .byte 46 # DW_TAG_subprogram
+ .byte 0 # DW_CHILDREN_no
+ .byte 3 # DW_AT_name
+ .byte 14 # DW_FORM_strp
+ .byte 58 # DW_AT_decl_file
+ .byte 11 # DW_FORM_data1
+ .byte 59 # DW_AT_decl_line
+ .byte 11 # DW_FORM_data1
+ .byte 39 # DW_AT_prototyped
+ .byte 25 # DW_FORM_flag_present
+ .byte 73 # DW_AT_type
+ .byte 19 # DW_FORM_ref4
+ .byte 63 # DW_AT_external
+ .byte 25 # DW_FORM_flag_present
+ .byte 60 # DW_AT_declaration
+ .byte 25 # DW_FORM_flag_present
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 6 # Abbreviation Code
+ .byte 36 # DW_TAG_base_type
+ .byte 0 # DW_CHILDREN_no
+ .byte 3 # DW_AT_name
+ .byte 14 # DW_FORM_strp
+ .byte 11 # DW_AT_byte_size
+ .byte 11 # DW_FORM_data1
+ .byte 62 # DW_AT_encoding
+ .byte 11 # DW_FORM_data1
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 7 # Abbreviation Code
+ .byte 1 # DW_TAG_array_type
+ .byte 0 # DW_CHILDREN_no
+ .byte 73 # DW_AT_type
+ .byte 19 # DW_FORM_ref4
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 8 # Abbreviation Code
+ .byte 46 # DW_TAG_subprogram
+ .byte 1 # DW_CHILDREN_yes
+ .byte 71 # DW_AT_specification
+ .byte 19 # DW_FORM_ref4
+ .byte 17 # DW_AT_low_pc
+ .byte 1 # DW_FORM_addr
+ .byte 18 # DW_AT_high_pc
+ .byte 1 # DW_FORM_addr
+ .byte 64 # DW_AT_frame_base
+ .byte 10 # DW_FORM_block1
+ .ascii "\347\177" # DW_AT_APPLE_omit_frame_ptr
+ .byte 25 # DW_FORM_flag_present
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 9 # Abbreviation Code
+ .byte 11 # DW_TAG_lexical_block
+ .byte 1 # DW_CHILDREN_yes
+ .byte 17 # DW_AT_low_pc
+ .byte 1 # DW_FORM_addr
+ .byte 18 # DW_AT_high_pc
+ .byte 1 # DW_FORM_addr
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 10 # Abbreviation Code
+ .byte 52 # DW_TAG_variable
+ .byte 0 # DW_CHILDREN_no
+ .byte 3 # DW_AT_name
+ .byte 14 # DW_FORM_strp
+ .byte 58 # DW_AT_decl_file
+ .byte 11 # DW_FORM_data1
+ .byte 59 # DW_AT_decl_line
+ .byte 11 # DW_FORM_data1
+ .byte 73 # DW_AT_type
+ .byte 19 # DW_FORM_ref4
+ .byte 2 # DW_AT_location
+ .byte 10 # DW_FORM_block1
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 0 # EOM(3)
+.L.debug_abbrev_end:
+ .section .debug_aranges,"",@progbits
+ .section .debug_ranges,"",@progbits
+ .section .debug_macinfo,"",@progbits
+ .section .debug_str,"MS",@progbits,1
+.Linfo_string0:
+ .asciz "clang version 3.2 "
+.Linfo_string1:
+ .asciz "simple.c"
+.Linfo_string2:
+ .asciz "/home/timnor01/a64-trunk/build"
+.Linfo_string3:
+ .asciz "populate_array"
+.Linfo_string4:
+ .asciz "sum_array"
+.Linfo_string5:
+ .asciz "int"
+.Linfo_string6:
+ .asciz "main"
+.Linfo_string7:
+ .asciz "main_arr"
+.Linfo_string8:
+ .asciz "val"
+
+ .section ".note.GNU-stack","",@progbits