/* 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; } asm ("_Dmain_end: .globl _Dmain_end"); 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 _Dmain_end - _Dmain \n" // Length " .4byte 0 \n" " .4byte 0 \n" ".Laranges_end: \n" " .popsection \n" ); |