/* Copyright 2014-2020 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/>.  */

	.section	.debug_info
	.4byte	.Ledebug_info0 - .Lsdebug_info0	/* Length of Compilation Unit Info */
.Lsdebug_info0:
	.2byte	0x2	/* DWARF version number */
	.4byte	.Ldebug_abbrev0	/* Offset Into Abbrev. Section */
	.byte	0x4	/* Pointer Size (in bytes) */
	.uleb128 0x1	/* (DIE (0xb) DW_TAG_compile_unit) */
        .ascii "GNU C 4.7.4 20140206 for GNAT Pro 7.3.0w (20140206)\0"
	.byte	0x1	/* DW_AT_language */
	.ascii	"dw2-abs-hi-pc-world.c\0"     /* DW_AT_name */
	.ascii  "/tmp\0"        /* DW_AT_comp_dir */
	.4byte	.world_start	/* DW_AT_low_pc */
	.4byte	.world_end	/* DW_AT_high_pc */
	.4byte	.Ldebug_line0	/* DW_AT_stmt_list */
	.uleb128 0x2	/* (DIE (0x2d) DW_TAG_subprogram) */
	.byte	0x1	/* DW_AT_external */
	.ascii	"world\0"
	.byte	0x1	/* DW_AT_decl_file (world.c) */
	.byte	0x13	/* DW_AT_decl_line */
	.byte	0x1	/* DW_AT_prototyped */
	.4byte	.world_start	/* DW_AT_low_pc */
	.4byte	.world_end	/* DW_AT_high_pc */
	.byte	0	/* end of children of DIE 0xb */
.Ledebug_info0:

	.section	.debug_abbrev
.Ldebug_abbrev0:
	.uleb128 0x1	/* (abbrev code) */
	.uleb128 0x11	/* (TAG: DW_TAG_compile_unit) */
	.byte	0x1	/* DW_children_yes */
	.uleb128 0x25	/* (DW_AT_producer) */
	.uleb128 0x8    /* (DW_FORM_string) */
	.uleb128 0x13	/* (DW_AT_language) */
	.uleb128 0xb	/* (DW_FORM_data1) */
	.uleb128 0x3	/* (DW_AT_name) */
	.uleb128 0x8    /* (DW_FORM_string) */
	.uleb128 0x1b	/* (DW_AT_comp_dir) */
	.uleb128 0x8    /* (DW_FORM_string) */
	.uleb128 0x11	/* (DW_AT_low_pc) */
	.uleb128 0x6	/* (DW_FORM_data4) */
	.uleb128 0x12	/* (DW_AT_high_pc) */
	.uleb128 0x6	/* (DW_FORM_data4) */
	.uleb128 0x10	/* (DW_AT_stmt_list) */
	.uleb128 0x6	/* (DW_FORM_data4) */
	.byte	0
	.byte	0
	.uleb128 0x2	/* (abbrev code) */
	.uleb128 0x2e	/* (TAG: DW_TAG_subprogram) */
	.byte	0	/* DW_children_no */
	.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 0x6	/* (DW_FORM_data4) */
	.uleb128 0x12	/* (DW_AT_high_pc) */
	.uleb128 0x6	/* (DW_FORM_data4) */
	.byte	0
	.byte	0
	.byte	0

	.section	.debug_line
.Ldebug_line0:
        .4byte  LELT-LSLT  /* Length of Source Line Info */
LSLT:
        .2byte  0x2    /* DWARF Version */
        .4byte  LELTP-LASLTP     /* Prolog Length */
LASLTP:
        .byte   0x1      /* Minimum Instruction Length */
        .byte   0x1      /* Default is_stmt_start flag */
        .byte   0x1      /* Line Base Value (Special Opcodes) */
        .byte   0x1      /* 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 "dw2-abs-hi-pc-world.c\0"       /* File Entry: 0x1 */
        .uleb128 0
        .uleb128 0
        .uleb128 0
        .byte   0        /* End file name table */
LELTP:
        .byte   0        /* set address to .world_start */
        .uleb128 0x5
        .byte   0x2
        .4byte  .world_start
        .byte   0x3      /* DW_LNS_advance_line */
        .sleb128 22      /* ... to 23 */
        .byte   0x5      /* column 0 */
        .uleb128 0       /* 0 */
        .byte           1       /* DW_LNS_copy */

        .byte   0        /* set address to .world0 */
        .uleb128 0x5
        .byte   0x2
        .4byte  .world0
        .byte   0x3      /* DW_LNS_advance_line */
        .sleb128 1       /* ... to 24 */
        .byte   0x5      /* column 0 */
        .uleb128 0       /* 0 */
        .byte           1       /* DW_LNS_copy */

        .byte   0        /* set address to .world1 */
        .uleb128 0x5
        .byte   0x2
        .4byte  .world1
        .byte   0x3      /* DW_LNS_advance_line */
        .sleb128 1       /* ... to 25 */
        .byte   0x5      /* column 0 */
        .uleb128 0       /* 0 */
        .byte           1       /* DW_LNS_copy */

        .byte   0        /* set address to .world_end */
        .uleb128 0x5
        .byte   0x2
        .4byte  .world_end
        .byte   0        /* end sequence */
        .uleb128 0x1
        .byte   0x1
LELT:
