1 /* Copyright 2017-2019 Free Software Foundation, Inc. 2 3 This program is free software; you can redistribute it and/or modify 4 it under the terms of the GNU General Public License as published by 5 the Free Software Foundation; either version 3 of the License, or 6 (at your option) any later version. 7 8 This program is distributed in the hope that it will be useful, 9 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 GNU General Public License for more details. 12 13 You should have received a copy of the GNU General Public License 14 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 15 16 17 /* DWARF will describe these contents as being inside a D module. */ 18 19 typedef struct tstruct 20 { 21 } tstruct; 22 23 tstruct my_data; 24 25 int _Dmain (void) 26 { 27 asm ("_Dmain_label: .globl _Dmain_label"); 28 return 0; 29 } 30 31 int 32 main (void) 33 { 34 return _Dmain (); 35 } 36 37 /* The .debug_names-based index support depends on .debug_aranges 38 generated by GCC. (.gdb_index includes a gdb-generated map 39 instead.) */ 40 asm ( 41 " .pushsection .debug_aranges,\"\",%progbits \n" 42 " .4byte .Laranges_end - .Laranges_start \n" // Length of Address Ranges Info 43 ".Laranges_start: \n" 44 " .2byte 0x2 \n" // DWARF Version 45 " .4byte 0 \n" // .Ldebug_info0 - Offset of Compilation Unit Info 46 " .byte 4 \n" // Size of Address 47 " .byte 0 \n" // Size of Segment Descriptor 48 " .2byte 0 \n" // Pad to 16 byte boundary 49 " .2byte 0 \n" 50 " .4byte _Dmain \n" // Address 51 " .4byte 0x1000 \n" // Length 52 " .4byte 0 \n" 53 " .4byte 0 \n" 54 ".Laranges_end: \n" 55 " .popsection \n" 56 ); 57