1*11efff7fSkettenis/* This testcase is part of GDB, the GNU debugger. 2*11efff7fSkettenis 3*11efff7fSkettenis Copyright 2004 Free Software Foundation, Inc. 4*11efff7fSkettenis 5*11efff7fSkettenis This program is free software; you can redistribute it and/or modify 6*11efff7fSkettenis it under the terms of the GNU General Public License as published by 7*11efff7fSkettenis the Free Software Foundation; either version 2 of the License, or 8*11efff7fSkettenis (at your option) any later version. 9*11efff7fSkettenis 10*11efff7fSkettenis This program is distributed in the hope that it will be useful, 11*11efff7fSkettenis but WITHOUT ANY WARRANTY; without even the implied warranty of 12*11efff7fSkettenis MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13*11efff7fSkettenis GNU General Public License for more details. 14*11efff7fSkettenis 15*11efff7fSkettenis You should have received a copy of the GNU General Public License 16*11efff7fSkettenis along with this program; if not, write to the Free Software 17*11efff7fSkettenis Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 18*11efff7fSkettenis USA. */ 19*11efff7fSkettenis 20*11efff7fSkettenis/* Test a minimal file containing DWARF-2 information. This test also 21*11efff7fSkettenis serves as a skeleton for other DWARF-2 tests. Most other tests will 22*11efff7fSkettenis not be this extensively itemized and commented... */ 23*11efff7fSkettenis 24*11efff7fSkettenis/* Dummy function to provide debug information for. */ 25*11efff7fSkettenis 26*11efff7fSkettenis .text 27*11efff7fSkettenis.Lbegin_text1: 28*11efff7fSkettenis .globl func_cu1 29*11efff7fSkettenis .type func_cu1, %function 30*11efff7fSkettenisfunc_cu1: 31*11efff7fSkettenis.Lbegin_func_cu1: 32*11efff7fSkettenis .int 0 33*11efff7fSkettenis.Lend_func_cu1: 34*11efff7fSkettenis .size func_cu1, .-func_cu1 35*11efff7fSkettenis.Lend_text1: 36*11efff7fSkettenis 37*11efff7fSkettenis/* Debug information */ 38*11efff7fSkettenis 39*11efff7fSkettenis .section .debug_info 40*11efff7fSkettenis.Lcu1_begin: 41*11efff7fSkettenis /* CU header */ 42*11efff7fSkettenis .int .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */ 43*11efff7fSkettenis.Lcu1_start: 44*11efff7fSkettenis .short 2 /* DWARF Version */ 45*11efff7fSkettenis .int .Labbrev1_begin /* Offset into abbrev section */ 46*11efff7fSkettenis .byte 4 /* Pointer size */ 47*11efff7fSkettenis 48*11efff7fSkettenis /* CU die */ 49*11efff7fSkettenis .uleb128 1 /* Abbrev: DW_TAG_compile_unit */ 50*11efff7fSkettenis .int .Lline1_begin /* DW_AT_stmt_list */ 51*11efff7fSkettenis .int .Lend_text1 /* DW_AT_high_pc */ 52*11efff7fSkettenis .int .Lbegin_text1 /* DW_AT_low_pc */ 53*11efff7fSkettenis .ascii "file1.txt\0" /* DW_AT_name */ 54*11efff7fSkettenis .ascii "GNU C 3.3.3\0" /* DW_AT_producer */ 55*11efff7fSkettenis .byte 1 /* DW_AT_language (C) */ 56*11efff7fSkettenis 57*11efff7fSkettenis /* func_cu1 */ 58*11efff7fSkettenis .uleb128 2 /* Abbrev: DW_TAG_subprogram */ 59*11efff7fSkettenis .byte 1 /* DW_AT_external */ 60*11efff7fSkettenis .byte 1 /* DW_AT_decl_file */ 61*11efff7fSkettenis .byte 2 /* DW_AT_decl_line */ 62*11efff7fSkettenis .ascii "func_cu1\0" /* DW_AT_name */ 63*11efff7fSkettenis .int .Ltype_int /* DW_AT_type */ 64*11efff7fSkettenis .int .Lbegin_func_cu1 /* DW_AT_low_pc */ 65*11efff7fSkettenis .int .Lend_func_cu1 /* DW_AT_high_pc */ 66*11efff7fSkettenis .byte 1 /* DW_AT_frame_base: length */ 67*11efff7fSkettenis .byte 0x55 /* DW_AT_frame_base: DW_OP_reg5 */ 68*11efff7fSkettenis 69*11efff7fSkettenis .byte 0 /* End of children of CU */ 70*11efff7fSkettenis 71*11efff7fSkettenis.Lcu1_end: 72*11efff7fSkettenis 73*11efff7fSkettenis /* Second compilation unit. */ 74*11efff7fSkettenis.Lcu2_begin: 75*11efff7fSkettenis /* CU header */ 76*11efff7fSkettenis .int .Lcu2_end - .Lcu2_start /* Length of Compilation Unit */ 77*11efff7fSkettenis.Lcu2_start: 78*11efff7fSkettenis .short 2 /* DWARF Version */ 79*11efff7fSkettenis .int .Labbrev2_begin /* Offset into abbrev section */ 80*11efff7fSkettenis .byte 4 /* Pointer size */ 81*11efff7fSkettenis 82*11efff7fSkettenis /* CU die */ 83*11efff7fSkettenis .uleb128 1 /* Abbrev: DW_TAG_compile_unit */ 84*11efff7fSkettenis .ascii "file1.txt\0" /* DW_AT_name */ 85*11efff7fSkettenis .ascii "GNU C 3.3.3\0" /* DW_AT_producer */ 86*11efff7fSkettenis .byte 1 /* DW_AT_language (C) */ 87*11efff7fSkettenis 88*11efff7fSkettenis.Ltype_int: 89*11efff7fSkettenis .uleb128 2 /* Abbrev: DW_TAG_base_type */ 90*11efff7fSkettenis .ascii "int\0" /* DW_AT_name */ 91*11efff7fSkettenis .byte 4 /* DW_AT_byte_size */ 92*11efff7fSkettenis .byte 5 /* DW_AT_encoding */ 93*11efff7fSkettenis 94*11efff7fSkettenis .byte 0 /* End of children of CU */ 95*11efff7fSkettenis 96*11efff7fSkettenis.Lcu2_end: 97*11efff7fSkettenis 98*11efff7fSkettenis/* Abbrev table */ 99*11efff7fSkettenis .section .debug_abbrev 100*11efff7fSkettenis.Labbrev1_begin: 101*11efff7fSkettenis .uleb128 1 /* Abbrev code */ 102*11efff7fSkettenis .uleb128 0x11 /* DW_TAG_compile_unit */ 103*11efff7fSkettenis .byte 1 /* has_children */ 104*11efff7fSkettenis .uleb128 0x10 /* DW_AT_stmt_list */ 105*11efff7fSkettenis .uleb128 0x6 /* DW_FORM_data4 */ 106*11efff7fSkettenis .uleb128 0x12 /* DW_AT_high_pc */ 107*11efff7fSkettenis .uleb128 0x1 /* DW_FORM_addr */ 108*11efff7fSkettenis .uleb128 0x11 /* DW_AT_low_pc */ 109*11efff7fSkettenis .uleb128 0x1 /* DW_FORM_addr */ 110*11efff7fSkettenis .uleb128 0x3 /* DW_AT_name */ 111*11efff7fSkettenis .uleb128 0x8 /* DW_FORM_string */ 112*11efff7fSkettenis .uleb128 0x25 /* DW_AT_producer */ 113*11efff7fSkettenis .uleb128 0x8 /* DW_FORM_string */ 114*11efff7fSkettenis .uleb128 0x13 /* DW_AT_language */ 115*11efff7fSkettenis .uleb128 0xb /* DW_FORM_data1 */ 116*11efff7fSkettenis .byte 0x0 /* Terminator */ 117*11efff7fSkettenis .byte 0x0 /* Terminator */ 118*11efff7fSkettenis 119*11efff7fSkettenis .uleb128 2 /* Abbrev code */ 120*11efff7fSkettenis .uleb128 0x2e /* DW_TAG_subprogram */ 121*11efff7fSkettenis .byte 0 /* has_children */ 122*11efff7fSkettenis .uleb128 0x3f /* DW_AT_external */ 123*11efff7fSkettenis .uleb128 0xc /* DW_FORM_flag */ 124*11efff7fSkettenis .uleb128 0x3a /* DW_AT_decl_file */ 125*11efff7fSkettenis .uleb128 0xb /* DW_FORM_data1 */ 126*11efff7fSkettenis .uleb128 0x3b /* DW_AT_decl_line */ 127*11efff7fSkettenis .uleb128 0xb /* DW_FORM_data1 */ 128*11efff7fSkettenis .uleb128 0x3 /* DW_AT_name */ 129*11efff7fSkettenis .uleb128 0x8 /* DW_FORM_string */ 130*11efff7fSkettenis .uleb128 0x49 /* DW_AT_type */ 131*11efff7fSkettenis .uleb128 0x10 /* DW_FORM_ref_addr */ 132*11efff7fSkettenis .uleb128 0x11 /* DW_AT_low_pc */ 133*11efff7fSkettenis .uleb128 0x1 /* DW_FORM_addr */ 134*11efff7fSkettenis .uleb128 0x12 /* DW_AT_high_pc */ 135*11efff7fSkettenis .uleb128 0x1 /* DW_FORM_addr */ 136*11efff7fSkettenis .uleb128 0x40 /* DW_AT_frame_base */ 137*11efff7fSkettenis .uleb128 0xa /* DW_FORM_block1 */ 138*11efff7fSkettenis .byte 0x0 /* Terminator */ 139*11efff7fSkettenis .byte 0x0 /* Terminator */ 140*11efff7fSkettenis 141*11efff7fSkettenis .byte 0x0 /* Terminator */ 142*11efff7fSkettenis .byte 0x0 /* Terminator */ 143*11efff7fSkettenis 144*11efff7fSkettenis.Labbrev2_begin: 145*11efff7fSkettenis .uleb128 1 /* Abbrev code */ 146*11efff7fSkettenis .uleb128 0x11 /* DW_TAG_compile_unit */ 147*11efff7fSkettenis .byte 1 /* has_children */ 148*11efff7fSkettenis .uleb128 0x3 /* DW_AT_name */ 149*11efff7fSkettenis .uleb128 0x8 /* DW_FORM_string */ 150*11efff7fSkettenis .uleb128 0x25 /* DW_AT_producer */ 151*11efff7fSkettenis .uleb128 0x8 /* DW_FORM_string */ 152*11efff7fSkettenis .uleb128 0x13 /* DW_AT_language */ 153*11efff7fSkettenis .uleb128 0xb /* DW_FORM_data1 */ 154*11efff7fSkettenis .byte 0x0 /* Terminator */ 155*11efff7fSkettenis .byte 0x0 /* Terminator */ 156*11efff7fSkettenis 157*11efff7fSkettenis .uleb128 2 /* Abbrev code */ 158*11efff7fSkettenis .uleb128 0x24 /* DW_TAG_base_type */ 159*11efff7fSkettenis .byte 0 /* has_children */ 160*11efff7fSkettenis .uleb128 0x3 /* DW_AT_name */ 161*11efff7fSkettenis .uleb128 0x8 /* DW_FORM_string */ 162*11efff7fSkettenis .uleb128 0xb /* DW_AT_byte_size */ 163*11efff7fSkettenis .uleb128 0xb /* DW_FORM_data1 */ 164*11efff7fSkettenis .uleb128 0x3e /* DW_AT_encoding */ 165*11efff7fSkettenis .uleb128 0xb /* DW_FORM_data1 */ 166*11efff7fSkettenis .byte 0x0 /* Terminator */ 167*11efff7fSkettenis .byte 0x0 /* Terminator */ 168*11efff7fSkettenis 169*11efff7fSkettenis .byte 0x0 /* Terminator */ 170*11efff7fSkettenis .byte 0x0 /* Terminator */ 171*11efff7fSkettenis 172*11efff7fSkettenis/* Line table */ 173*11efff7fSkettenis .section .debug_line 174*11efff7fSkettenis.Lline1_begin: 175*11efff7fSkettenis .int .Lline1_end - .Lline1_start /* Initial length */ 176*11efff7fSkettenis.Lline1_start: 177*11efff7fSkettenis .short 2 /* Version */ 178*11efff7fSkettenis .int .Lline1_lines - .Lline1_hdr /* header_length */ 179*11efff7fSkettenis.Lline1_hdr: 180*11efff7fSkettenis .byte 1 /* Minimum insn length */ 181*11efff7fSkettenis .byte 1 /* default_is_stmt */ 182*11efff7fSkettenis .byte 1 /* line_base */ 183*11efff7fSkettenis .byte 1 /* line_range */ 184*11efff7fSkettenis .byte 0x10 /* opcode_base */ 185*11efff7fSkettenis 186*11efff7fSkettenis /* Standard lengths */ 187*11efff7fSkettenis .byte 0 188*11efff7fSkettenis .byte 1 189*11efff7fSkettenis .byte 1 190*11efff7fSkettenis .byte 1 191*11efff7fSkettenis .byte 1 192*11efff7fSkettenis .byte 0 193*11efff7fSkettenis .byte 0 194*11efff7fSkettenis .byte 0 195*11efff7fSkettenis .byte 1 196*11efff7fSkettenis .byte 0 197*11efff7fSkettenis .byte 0 198*11efff7fSkettenis .byte 1 199*11efff7fSkettenis .byte 0 200*11efff7fSkettenis .byte 0 201*11efff7fSkettenis .byte 0 202*11efff7fSkettenis 203*11efff7fSkettenis /* Include directories */ 204*11efff7fSkettenis .byte 0 205*11efff7fSkettenis 206*11efff7fSkettenis /* File names */ 207*11efff7fSkettenis .ascii "file1.txt\0" 208*11efff7fSkettenis .uleb128 0 209*11efff7fSkettenis .uleb128 0 210*11efff7fSkettenis .uleb128 0 211*11efff7fSkettenis 212*11efff7fSkettenis .byte 0 213*11efff7fSkettenis 214*11efff7fSkettenis.Lline1_lines: 215*11efff7fSkettenis .byte 0 /* DW_LNE_set_address */ 216*11efff7fSkettenis .uleb128 5 217*11efff7fSkettenis .byte 2 218*11efff7fSkettenis .int .Lbegin_func_cu1 219*11efff7fSkettenis 220*11efff7fSkettenis .byte 3 /* DW_LNS_advance_line */ 221*11efff7fSkettenis .sleb128 3 /* ... to 4 */ 222*11efff7fSkettenis 223*11efff7fSkettenis .byte 1 /* DW_LNS_copy */ 224*11efff7fSkettenis 225*11efff7fSkettenis .byte 1 /* DW_LNS_copy (second time as an end-of-prologue marker) */ 226*11efff7fSkettenis 227*11efff7fSkettenis .byte 0 /* DW_LNE_set_address */ 228*11efff7fSkettenis .uleb128 5 229*11efff7fSkettenis .byte 2 230*11efff7fSkettenis .int .Lend_func_cu1 231*11efff7fSkettenis 232*11efff7fSkettenis .byte 0 /* DW_LNE_end_of_sequence */ 233*11efff7fSkettenis .uleb128 1 234*11efff7fSkettenis .byte 1 235*11efff7fSkettenis 236*11efff7fSkettenis.Lline1_end: 237