/* Copyright 2010, 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/>.  */

/* Compiled from:
   MODULE m;
   TYPE t = PROCEDURE (t);
   VAR v: t;
   BEGIN
   END m.
   But "v" has been removed afterwards.  */

	.data
v:	.long	0

	.section	.debug_info
d:
	.long	.Ldebug_info_end - 1f	/* Length of Compilation Unit Info */
1:
	.2byte	0x3	/* DWARF version number */
	.long	.Ldebug_abbrev0	/* Offset Into Abbrev. Section */
	.byte	0x4	/* Pointer Size (in bytes) */
dieb:
	.uleb128 0x1	/* (DIE (0xb) DW_TAG_compile_unit) */
	.long	.LASF0	/* DW_AT_producer */
	.byte	0xa	/* DW_AT_language = DW_LANG_Modula2 */
	.long	.LASF1	/* DW_AT_name: "2.mod" */
	.long	.LASF2	/* DW_AT_comp_dir: "" */

die210:
	.uleb128 0x5	/* (DIE (0x210) DW_TAG_subroutine_type) */
die215:
	.uleb128 0x6	/* (DIE (0x215) DW_TAG_formal_parameter) */
	.long	die21b-d	/* DW_AT_type */
	.byte	0x0	/* end of children of DIE 0x210 */
die21b:
	.uleb128 0x7	/* (DIE (0x21b) DW_TAG_pointer_type) */
	.byte	0x4	/* DW_AT_byte_size */
	.long	die210-d	/* DW_AT_type */
die221:
	.uleb128 0x8	/* (DIE (0x221) DW_TAG_variable) */
	.ascii "v\0"	/* DW_AT_name */
	.long	die21b-d	/* DW_AT_type */
	.byte	2f-1f	/* DW_AT_location */
1:	.byte	0x3	/* DW_OP_addr */
	.long	v
2:

	.byte	0x0	/* end of children of DIE 0xb */
.Ldebug_info_end:
	.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 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) */
	.byte	0x0
	.byte	0x0

	.uleb128 0x5	/* (abbrev code) */
	.uleb128 0x15	/* (TAG: DW_TAG_subroutine_type) */
	.byte	0x1	/* DW_children_yes */
	.byte	0x0
	.byte	0x0

	.uleb128 0x6	/* (abbrev code) */
	.uleb128 0x5	/* (TAG: DW_TAG_formal_parameter) */
	.byte	0x0	/* DW_children_no */
	.uleb128 0x49	/* (DW_AT_type) */
	.uleb128 0x13	/* (DW_FORM_ref4) */
	.byte	0x0
	.byte	0x0

	.uleb128 0x7	/* (abbrev code) */
	.uleb128 0xf	/* (TAG: DW_TAG_pointer_type) */
	.byte	0x0	/* DW_children_no */
	.uleb128 0xb	/* (DW_AT_byte_size) */
	.uleb128 0xb	/* (DW_FORM_data1) */
	.uleb128 0x49	/* (DW_AT_type) */
	.uleb128 0x13	/* (DW_FORM_ref4) */
	.byte	0x0
	.byte	0x0

	.uleb128 0x8	/* (abbrev code) */
	.uleb128 0x34	/* (TAG: DW_TAG_variable) */
	.byte	0x0	/* DW_children_no */
	.uleb128 0x3	/* (DW_AT_name) */
	.uleb128 0x8	/* (DW_FORM_string) */
	.uleb128 0x49	/* (DW_AT_type) */
	.uleb128 0x13	/* (DW_FORM_ref4) */
	.uleb128 0x2	/* (DW_AT_location) */
	.uleb128 0xa	/* (DW_FORM_block1) */
	.byte	0x0
	.byte	0x0

	.byte	0x0

	.section	.debug_str
.LASF1:
	.string	"2.mod"
.LASF0:
	.string	"GNU Modula-2 0.78 (20100402) grafted onto GCC 4.1.2"
.LASF2:
	.string	""
