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

   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
main:	.globl main

gcc42:	.globl gcc42
	.int 0
	.type gcc42, %function
	.size gcc42, . - gcc42
.Lgcc42_procend:

gcc43:	.globl gcc43
	.int 0
	.type gcc43, %function
	.size gcc43, . - gcc43
.Lgcc43_procend:

/* Debug information */

	.section .debug_info
.Lcu1_begin:
	/* CU header */
	.4byte	.Lcu1_end - .Lcu1_start	/* Length of Compilation Unit */
.Lcu1_start:
	.2byte	2				/* DWARF Version */
	.4byte	.Labbrev1_begin			/* Offset into abbrev section */
	.byte	4				/* Pointer size */

	.uleb128 1				/* Abbrev: DW_TAG_compile_unit */
	.4byte	.Lgcc42_begin			/* DW_AT_stmt_list */
	.4byte	gcc42				/* DW_AT_low_pc */
	.4byte	.Lgcc42_procend			/* DW_AT_high_pc */
	.ascii	"/dir/d/dw2-compdir-oldgcc42.S\0"	/* DW_AT_name */
	.ascii	"GNU C 4.2.0\0"			/* DW_AT_producer */
	.byte	1				/* DW_AT_language (C) */

	.uleb128	2			/* Abbrev: DW_TAG_subprogram */
	.byte		1			/* DW_AT_external */
	.byte		1			/* DW_AT_decl_file */
	.byte		1			/* DW_AT_decl_line */
	.ascii		"gcc42\0"		/* DW_AT_name */
	.4byte		gcc42			/* DW_AT_low_pc */
	.4byte		.Lgcc42_procend		/* DW_AT_high_pc */

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

.Lcu2_begin:
	/* CU header */
	.4byte	.Lcu2_end - .Lcu2_start	/* Length of Compilation Unit */
.Lcu2_start:
	.2byte	2				/* DWARF Version */
	.4byte	.Labbrev1_begin			/* Offset into abbrev section */
	.byte	4				/* Pointer size */

	.uleb128 1				/* Abbrev: DW_TAG_compile_unit */
	.4byte	.Lgcc43_begin			/* DW_AT_stmt_list */
	.4byte	gcc43				/* DW_AT_low_pc */
	.4byte	.Lgcc43_procend			/* DW_AT_high_pc */
	.ascii	"/dir/d/dw2-compdir-oldgcc43.S\0"	/* DW_AT_name */
	.ascii	"GNU C 4.3.0\0"			/* DW_AT_producer */
	.byte	1				/* DW_AT_language (C) */

	.uleb128	2			/* Abbrev: DW_TAG_subprogram */
	.byte		1			/* DW_AT_external */
	.byte		1			/* DW_AT_decl_file */
	.byte		1			/* DW_AT_decl_line */
	.ascii		"gcc43\0"		/* DW_AT_name */
	.4byte		gcc43			/* DW_AT_low_pc */
	.4byte		.Lgcc43_procend		/* DW_AT_high_pc */

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

/* Abbrev table */
	.section .debug_abbrev
.Labbrev1_begin:
	.uleb128	1			/* Abbrev code */
	.uleb128	0x11			/* DW_TAG_compile_unit */
	.byte		1			/* has_children */
	.uleb128	0x10			/* DW_AT_stmt_list */
	.uleb128	0x6			/* DW_FORM_data4 */
	.uleb128	0x11			/* DW_AT_low_pc */
	.uleb128	0x1			/* DW_FORM_addr */
	.uleb128	0x12			/* DW_AT_high_pc */
	.uleb128	0x1			/* DW_FORM_addr */
	.uleb128	0x3			/* DW_AT_name */
	.uleb128	0x8			/* DW_FORM_string */
	.uleb128	0x25			/* DW_AT_producer */
	.uleb128	0x8			/* DW_FORM_string */
	.uleb128	0x13			/* DW_AT_language */
	.uleb128	0xb			/* DW_FORM_data1 */
	.byte		0x0			/* Terminator */
	.byte		0x0			/* Terminator */

	.uleb128	2			/* Abbrev code */
	.uleb128	0x2e			/* DW_TAG_subprogram */
	.byte		0			/* has_children */
	.uleb128	0x3f			/* DW_AT_external */
	.uleb128	0xc			/* DW_FORM_flag */
	.uleb128	0x3a			/* DW_AT_decl_file */
	.uleb128	0xb			/* DW_FORM_data1 */
	.uleb128	0x3b			/* DW_AT_decl_line */
	.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			/* Terminator */
	.byte		0x0			/* Terminator */

	.byte		0x0			/* Terminator */
	.byte		0x0			/* Terminator */

/* Line table */
	.section .debug_line
.Lgcc42_begin:
	.4byte		.Lgcc42_end - .Lgcc42_start	/* Initial length */
.Lgcc42_start:
	.2byte		2			/* Version */
	.4byte		.Lgcc42_lines - .Lgcc42_hdr	/* header_length */
.Lgcc42_hdr:
	.byte		1			/* Minimum insn length */
	.byte		1			/* default_is_stmt */
	.byte		1			/* line_base */
 	.byte		1			/* line_range */
	.byte		4			/* opcode_base */

	/* Standard lengths */
	.byte		0
	.byte		1
	.byte		1

	/* Include directories */
	.byte		0

	/* File names */
	.ascii		"dw2-compdir-oldgcc42.S\0"
	.uleb128	0	/* directory */
	.uleb128	0
	.uleb128	0

	.byte		0

.Lgcc42_lines:
	.byte		0	/* DW_LNE_set_address */
	.uleb128	5
	.byte		2
	.4byte		gcc42

	.byte		3	/* DW_LNS_advance_line */
	.sleb128	41	/* ... to 42 */

	.byte		1	/* DW_LNS_copy */

	.byte		0	/* DW_LNE_set_address */
	.uleb128	5
	.byte		2
	.4byte		.Lgcc42_procend

	.byte		0	/* DW_LNE_end_of_sequence */
	.uleb128	1
	.byte		1
.Lgcc42_end:

.Lgcc43_begin:
	.4byte		.Lgcc43_end - .Lgcc43_start	/* Initial length */
.Lgcc43_start:
	.2byte		2			/* Version */
	.4byte		.Lgcc43_lines - .Lgcc43_hdr	/* header_length */
.Lgcc43_hdr:
	.byte		1			/* Minimum insn length */
	.byte		1			/* default_is_stmt */
	.byte		1			/* line_base */
 	.byte		1			/* line_range */
	.byte		4			/* opcode_base */

	/* Standard lengths */
	.byte		0
	.byte		1
	.byte		1

	/* Include directories */
	.byte		0

	/* File names */
	.ascii		"dw2-compdir-oldgcc43.S\0"
	.uleb128	0	/* directory */
	.uleb128	0
	.uleb128	0

	.byte		0

.Lgcc43_lines:
	.byte		0	/* DW_LNE_set_address */
	.uleb128	5
	.byte		2
	.4byte		gcc43

	.byte		3	/* DW_LNS_advance_line */
	.sleb128	42	/* ... to 43 */

	.byte		1	/* DW_LNS_copy */

	.byte		0	/* DW_LNE_set_address */
	.uleb128	5
	.byte		2
	.4byte		.Lgcc43_procend

	.byte		0	/* DW_LNE_end_of_sequence */
	.uleb128	1
	.byte		1
.Lgcc43_end:
