mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-11 18:33:14 +01:00
DMD has the obscure functionality to install functions starting with
_STI_ as global ctors and funtions starting with _STD_ as global
dtors. IMHO a pragma is a better way to specify the behaviour.
This commit adds pragma(LDC_global_crt_ctor) and
pragma(LDC_global_crt_dtor). If the pragma is specified on a function
or static method then an entry is made in the corresponding list. E.g.
in monitor_.d:
extern (C) {
#pragma(LDC_global_crt_ctor)
void _STI_monitor_staticctor()
{
// ...
}
}
This works on Linux without problems. On Windows with MS C Runtime
ctors work always but dtors are invoked only if linked against the
static C runtime. Dtors on Windows require at least LLVM 3.2.
The D Programming Language Compiler Front End Source Copyright (c) 1999-2009, by Digital Mars http://www.digitalmars.com All Rights Reserved This is the source code to the front end Digital Mars D compiler. It covers the lexical analysis, parsing, and semantic analysis of the D Programming Language defined in the documents at http://www.digitalmars.com/d/ These sources are free, they are redistributable and modifiable under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version (attached as gpl.txt), or the Artistic License (attached as artistic.txt). The optimizer and code generator sources are covered under a separate license, backendlicense.txt. It does not apply to anything else distributed by Digital Mars, including D compiler executables. -Walter Bright