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