Wolfgang Thallergcc16 merge934c3885 months agoHistory
111 lines · 3.4 KB · D
RawDownload
/** * * Copyright: Copyright Digital Mars 2000 - 2012. * License: Distributed under the *      $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). *    (See accompanying file LICENSE) * Authors:   Walter Bright, Sean Kelly, Martin Nowak * Source: $(DRUNTIMESRC rt/_sections.d) */ module rt.sections; version (OSX)    version = Darwin;else version (iOS)    version = Darwin;else version (TVOS)    version = Darwin;else version (WatchOS)    version = Darwin; version (GNU)    public import gcc.sections;else version (CRuntime_Glibc)    public import rt.sections_elf_shared;else version (CRuntime_Musl)    public import rt.sections_elf_shared;else version (FreeBSD)    public import rt.sections_elf_shared;else version (NetBSD)    public import rt.sections_elf_shared;else version (OpenBSD){    /**     * OpenBSD is missing support needed for elf_shared.     * See the top of sections_solaris.d for more info.     */     public import rt.sections_solaris;}else version (DragonFlyBSD)    public import rt.sections_elf_shared;else version (Solaris)    public import rt.sections_solaris;else version (Darwin){    version (X86_64)        public import rt.sections_osx_64;    else version (X86)        public import rt.sections_osx_x86;    else version (AArch64)        public import rt.sections_osx_64;    else        static assert(0, "unimplemented");}else version (CRuntime_Microsoft)    public import rt.sections_win64;else version (CRuntime_Bionic)    public import rt.sections_elf_shared;else version (CRuntime_UClibc)    public import rt.sections_elf_shared;else    static assert(0, "unimplemented"); import rt.deh, rt.minfo; template isSectionGroup(T){    enum isSectionGroup =        is(typeof(T.init.modules) == immutable(ModuleInfo*)[]) &&        is(typeof(T.init.moduleGroup) == ModuleGroup) &&        (!is(typeof(T.init.ehTables)) || is(typeof(T.init.ehTables) == immutable(FuncTable)[])) &&        is(typeof(T.init.gcRanges) == void[][]) &&        is(typeof({ foreach (ref T; T) {}})) &&        is(typeof({ foreach_reverse (ref T; T) {}}));}static assert(isSectionGroup!(SectionGroup));static assert(is(typeof(&initSections) == void function() nothrow @nogc));static assert(is(typeof(&finiSections) == void function() nothrow @nogc));static assert(is(typeof(&initTLSRanges) RT == return) &&              is(typeof(&initTLSRanges) == RT function() nothrow @nogc) &&              is(typeof(&finiTLSRanges) == void function(RT) nothrow @nogc) &&              is(typeof(&scanTLSRanges) == void function(RT, scope void delegate(void*, void*) nothrow) nothrow)); version (Windows){}else version (Shared){    static assert(is(typeof(&pinLoadedLibraries) == void* function() nothrow @nogc));    static assert(is(typeof(&unpinLoadedLibraries) == void function(void*) nothrow @nogc));    static assert(is(typeof(&inheritLoadedLibraries) == void function(void*) nothrow @nogc));    static assert(is(typeof(&cleanupLoadedLibraries) == void function() nothrow @nogc));} bool scanDataSegPrecisely() nothrow @nogc{    import rt.config;    string opt = rt_configOption("scanDataSeg");    switch (opt)    {        case "":        case "conservative":            return false;        case "precise":            return true;        default:            __gshared err = new Error("DRT invalid scanDataSeg option, must be 'precise' or 'conservative'");            throw err;    }}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t