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

	.text
	.globl main
main:	.byte 0
.Lmain_end:
	.section	.debug_info
debug_start:
	.4byte	debug_end - 1f	/* Length of Compilation Unit Info */
1:
	.2byte	0x3	/* 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.4.3\0"	/* DW_AT_producer */
	.byte	0x4	/* DW_AT_language = DW_LANG_C_plus_plus */
	.ascii "1.c\0"	/* DW_AT_name */
	.4byte	main		/* DW_AT_low_pc */
	.4byte	.Lmain_end	/* DW_AT_high_pc */
	.uleb128 0x4	/* (DIE (0x3c) DW_TAG_subprogram) */
	.ascii "f\0"	/* DW_AT_name */
/* Value 0 would require has_section_at_zero != 0 (which is true, though).  */
	.4byte	main		/* DW_AT_low_pc */
	.4byte	.Lmain_end	/* DW_AT_high_pc */
	.byte	0x1	/* DW_AT_prototyped */

	.uleb128 0x5	/* (DIE (0x42) DW_TAG_formal_parameter) */
	.4byte	.Ltype_sizeof - debug_start	/* DW_AT_type */
	.ascii		"param_sizeof\0"			/* DW_AT_name */

	.uleb128 0x5	/* (DIE (0x42) DW_TAG_formal_parameter) */
	.4byte	.Ltype_opnew - debug_start	/* DW_AT_type */
	.ascii		"param_opnew\0"			/* DW_AT_name */

	.uleb128 0x5	/* (DIE (0x42) DW_TAG_formal_parameter) */
	.4byte	.Ltype_opdelete - debug_start	/* DW_AT_type */
	.ascii		"param_opdelete\0"			/* DW_AT_name */

	.uleb128 0x5	/* (DIE (0x42) DW_TAG_formal_parameter) */
	.4byte	.Ltype_opnewarray - debug_start	/* DW_AT_type */
	.ascii		"param_opnewarray\0"			/* DW_AT_name */

	.uleb128 0x5	/* (DIE (0x42) DW_TAG_formal_parameter) */
	.4byte	.Ltype_opdeletearray - debug_start	/* DW_AT_type */
	.ascii		"param_opdeletearray\0"			/* DW_AT_name */
	.byte	0x0	/* end of children of DIE 0x3c */

.Ltype_sizeof:
	.uleb128	3			/* Abbrev: DW_TAG_base_type */
	.ascii		"typename<sizeof(int)>\0"	/* DW_AT_name */
	.byte		4			/* DW_AT_byte_size */
	.byte		5			/* DW_AT_encoding */

.Ltype_opnew:
	.uleb128	3			/* Abbrev: DW_TAG_base_type */
	.ascii		"C::operator new(int)\0"	/* DW_AT_name */
	.byte		4			/* DW_AT_byte_size */
	.byte		5			/* DW_AT_encoding */

.Ltype_opdelete:
	.uleb128	3			/* Abbrev: DW_TAG_base_type */
	.ascii		"C::operator delete(void *)\0"	/* DW_AT_name */
	.byte		4			/* DW_AT_byte_size */
	.byte		5			/* DW_AT_encoding */

.Ltype_opnewarray:
	.uleb128	3			/* Abbrev: DW_TAG_base_type */
	/* The correct new[] syntax is probably unsupported by GDB.  */
	.ascii		"C::operator new[](int)\0"	/* DW_AT_name */
	.byte		4			/* DW_AT_byte_size */
	.byte		5			/* DW_AT_encoding */

.Ltype_opdeletearray:
	.uleb128	3			/* Abbrev: DW_TAG_base_type */
	/* The correct delete[] syntax is probably unsupported by GDB.  */
	.ascii		"C::operator delete[](void *)\0"	/* DW_AT_name */
	.byte		4			/* DW_AT_byte_size */
	.byte		5			/* DW_AT_encoding */

	.byte	0x0	/* end of children of DIE 0xb */
debug_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 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 0x11	/* (DW_AT_low_pc) */
	.uleb128 0x1	/* (DW_FORM_addr) */
	.uleb128 0x12	/* (DW_AT_high_pc) */
	.uleb128 0x1	/* (DW_FORM_addr) */
	.byte	0x0
	.byte	0x0
	.uleb128	3			/* Abbrev code */
	.uleb128	0x24			/* DW_TAG_base_type */
	.byte		0			/* has_children */
	.uleb128	0x3			/* DW_AT_name */
	.uleb128	0x8			/* DW_FORM_string */
	.uleb128	0xb			/* DW_AT_byte_size */
	.uleb128	0xb			/* DW_FORM_data1 */
	.uleb128	0x3e			/* DW_AT_encoding */
	.uleb128	0xb			/* DW_FORM_data1 */
	.byte		0x0			/* Terminator */
	.byte		0x0			/* Terminator */
	.uleb128 0x4	/* (abbrev code) */
	.uleb128 0x2e	/* (TAG: DW_TAG_subprogram) */
	.byte	0x1	/* DW_children_yes */
	.uleb128 0x3	/* (DW_AT_name) */
	.uleb128 0x8	/* (DW_FORM_string) */
	.uleb128 0x11	/* (DW_AT_low_pc) */
	.uleb128 0x1	/* (DW_FORM_addr) */
	.uleb128 0x12	/* (DW_AT_high_pc) */
	.uleb128 0x1	/* (DW_FORM_addr) */
	.uleb128 0x27	/* (DW_AT_prototyped) */
	.uleb128 0xc	/* (DW_FORM_flag) */
	.byte	0x0
	.byte	0x0
	.uleb128 0x5	/* (abbrev code) */
	.uleb128 0x5	/* (TAG: DW_TAG_formal_parameter) */
	.byte	0x0	/* DW_children_no */
	.uleb128 0x49	/* (DW_AT_type) */
	.uleb128 0x13	/* (DW_FORM_ref4) */
	.uleb128	0x3			/* DW_AT_name */
	.uleb128	0x8			/* DW_FORM_string */
	.byte	0x0
	.byte	0x0
	.byte	0x0
