/* This testcase is part of GDB, the GNU debugger.

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

/* Debug information */

	.section	.debug_info
.Lcu1_begin:
	.4byte		.Lcu1_end - .Lcu1_start	/* Length of Compilation Unit */
.Lcu1_start:
	.2byte		2			/* DWARF version number */
	.4byte		.Ldebug_abbrev0		/* Offset Into Abbrev. Section */
	.byte		4			/* Pointer Size (in bytes) */

	/* CU die */
	.uleb128	1			/* Abbrev: DW_TAG_compile_unit */
	.4byte		.Lproducer		/* DW_AT_producer */
	/* Use C++ to exploit a bug in parsing DW_AT_name "".  */
	.byte		4			/* DW_AT_language (C++) -  */

.Larray_type:
	.uleb128	2			/* Abbrev: DW_TAG_array_type */
	.4byte		.Lchar_type-.Lcu1_begin	/* DW_AT_type */

	.uleb128	3			/* Abbrev: DW_TAG_subrange_type */
	.4byte		.Luint_type-.Lcu1_begin	/* DW_AT_type */
	.byte		0xd			/* DW_AT_upper_bound */
	.byte		0			/* End of children of die */

.Luint_type:
	.uleb128	4			/* Abbrev: DW_TAG_base_type */
	.4byte		.Luint_str		/* DW_AT_name */
	.byte		4			/* DW_AT_byte_size */
	.byte		7			/* DW_AT_encoding */

.Lchar_type:
	.uleb128	4			/* Abbrev: DW_TAG_base_type */
	.4byte		.Lchar_str		/* DW_AT_name */
	.byte		1			/* DW_AT_byte_size */
	.byte		6			/* DW_AT_encoding */

	.uleb128	5			/* Abbrev: DW_TAG_variable DW_FORM_strp */
	.4byte		.Lvarname		/* DW_AT_name */
	.4byte		.Lconst_type-.Lcu1_begin/* DW_AT_type */
	.4byte		.Lvarcontents		/* DW_AT_const_value */
	.byte		1			/* DW_AT_external */

	.uleb128	6			/* Abbrev: DW_TAG_variable DW_FORM_string */
	.string		"a_string2"		/* DW_AT_name */
	.4byte		.Lconst_type-.Lcu1_begin/* DW_AT_type */
	.string		"hello world2\n"	/* DW_AT_const_value */
	.byte		1			/* DW_AT_external */

.Lconst_type:
	.uleb128	7			/* Abbrev: DW_TAG_const_type */
	.4byte		.Larray_type-.Lcu1_begin/* DW_AT_type */

	.uleb128	8			/* Abbrev: DW_TAG_variable (name "") */
	.4byte		.Lemptyname		/* DW_AT_name */

	.byte		0			/* End of children of CU */
.Lcu1_end:

	.section .debug_abbrev
.Ldebug_abbrev0:
	.uleb128	1			/* Abbrev code */
	.uleb128	0x11			/* DW_TAG_compile_unit */
	.byte		0x1			/* has_children */
	.uleb128	0x25			/* DW_AT_producer */
	.uleb128	0xe			/* DW_FORM_strp */
	.uleb128	0x13			/* DW_AT_language */
	.uleb128	0xb			/* DW_FORM_data1 */
	.byte		0x0			/* Terminator */
	.byte		0x0			/* Terminator */

	.uleb128	2			/* Abbrev code */
	.uleb128	0x1			/* TAG: DW_TAG_array_type */
	.byte		0x1			/* DW_children_yes */
	.uleb128	0x49			/* DW_AT_type */
	.uleb128	0x13			/* DW_FORM_ref4 */
	.byte		0x0			/* Terminator */
	.byte		0x0			/* Terminator */

	.uleb128	3			/* Abbrev code */
	.uleb128	0x21			/* DW_TAG_subrange_type */
	.byte		0x0			/* no children */
	.uleb128	0x49			/* DW_AT_type */
	.uleb128	0x13			/* DW_FORM_ref4 */
	.uleb128	0x2f			/* DW_AT_upper_bound */
	.uleb128	0xb			/* DW_FORM_data1 */
	.byte		0x0			/* Terminator */
	.byte		0x0			/* Terminator */

	.uleb128	4			/* Abbrev code */
	.uleb128	0x24			/* DW_TAG_base_type */
	.byte		0x0			/* no_children */
	.uleb128	0x3			/* DW_AT_name */
	.uleb128	0xe			/* DW_FORM_strp */
	.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	5			/* Abbrev code */
	.uleb128	0x34			/* DW_TAG_variable */
	.byte		0x0			/* no_children */
	.uleb128	0x3			/* DW_AT_name */
	.uleb128	0xe			/* DW_FORM_strp */
	.uleb128	0x49			/* DW_AT_type */
	.uleb128	0x13			/* DW_FORM_ref4 */
	.uleb128	0x1c			/* DW_AT_const_value */
	.uleb128	0xe			/* DW_FORM_strp */
	.uleb128	0x3f			/* DW_AT_external */
	.uleb128	0xc			/* DW_FORM_flag */
	.byte		0x0			/* Terminator */
	.byte		0x0			/* Terminator */

	.uleb128	6			/* Abbrev code */
	.uleb128	0x34			/* DW_TAG_variable */
	.byte		0x0			/* no_children */
	.uleb128	0x3			/* DW_AT_name */
	.uleb128	0x8			/* DW_FORM_string */
	.uleb128	0x49			/* DW_AT_type */
	.uleb128	0x13			/* DW_FORM_ref4 */
	.uleb128	0x1c			/* DW_AT_const_value */
	.uleb128	0x8			/* DW_FORM_string */
	.uleb128	0x3f			/* DW_AT_external */
	.uleb128	0xc			/* DW_FORM_flag */
	.byte		0x0			/* Terminator */
	.byte		0x0			/* Terminator */

	.uleb128	7			/* Abbrev code */
	.uleb128	0x26			/* DW_TAG_const_type */
	.byte		0x0			/* DW_children_no */
	.uleb128	0x49			/* DW_AT_type */
	.uleb128	0x13			/* DW_FORM_ref4 */
	.byte		0x0			/* Terminator */
	.byte		0x0			/* Terminator */

	.uleb128	8			/* Abbrev code */
	.uleb128	0x34			/* DW_TAG_variable */
	.byte		0x0			/* DW_children_no */
	.uleb128	0x3			/* DW_AT_name */
	.uleb128	0xe			/* DW_FORM_strp */
	.byte		0x0			/* Terminator */
	.byte		0x0			/* Terminator */

	.byte		0x0			/* Terminator */

/* String table */
	.section .debug_str
.Lproducer:
	.string		"GNU C 3.3.3"
.Lchar_str:
	.string		"char"
.Luint_str:
	.string		"unsigned int"
.Lvarname:
	.string		"a_string"
.Lvarcontents:
	.string		"hello world!\n"
.Lemptyname:
	.string		""
