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


/* DWARF will describe these contents as being inside a D module.  */

typedef struct tstruct
{
} tstruct;

tstruct my_data;

int _Dmain (void)
{
  asm ("_Dmain_label: .globl _Dmain_label");
  return 0;
}

int
main (void)
{
  return _Dmain ();
}

/* The .debug_names-based index support depends on .debug_aranges
   generated by GCC.  (.gdb_index includes a gdb-generated map
   instead.)  */
asm (
"	.pushsection	.debug_info,\"\",%progbits \n"
".Lcu1_begin:"
"	.popsection \n"
"	.pushsection	.debug_aranges,\"\",%progbits \n"
"	.4byte	.Laranges_end - .Laranges_start \n"	// Length of Address Ranges Info
".Laranges_start: \n"
"	.2byte	0x2 \n"	// DWARF Version
"	.4byte	.Lcu1_begin\n" // .Ldebug_info0 - Offset of Compilation Unit Info
"	.byte	4 \n"	// Size of Address
"	.byte	0 \n"	// Size of Segment Descriptor
"	.2byte	0 \n"	// Pad to 16 byte boundary
"	.2byte	0 \n"
"	.4byte	_Dmain \n"	// Address
"	.4byte	0x1000 \n"	// Length
"	.4byte	0 \n"
"	.4byte	0 \n"
".Laranges_end: \n"
"	.popsection \n"
);
