Hi Iain,

> On Tue, 29 Jan 2019 at 15:44, Rainer Orth <r...@cebitec.uni-bielefeld.de> 
> wrote:
>>
>> Yet another trivial fix for a Solaris libphobos testsuite failure:
>>
>> FAIL: libphobos.shared/load.d -shared-libphobos -ldl (test for excess errors)
>> Excess errors:
>> /vol/gcc/src/hg/trunk/local/libphobos/testsuite/libphobos.shared/load.d:9:
>> error: static assert "unimplemented"
>>
>> I guess this is obvious?  Tested on i386-pc-solaris2.11.  Ok for
>> mainline?
>>
>
> Looks ok.
>
> As the OS-specific bindings are only imported for RTLD_NOLOAD, this
> could be made explicit in the static assert.
>
> ---
> import core.sys.posix.dlfcn;
>
> version (DragonFlyBSD) import core.sys.dragonflybsd.dlfcn : RTLD_NOLOAD;
> version (FreeBSD) import core.sys.freebsd.dlfcn : RTLD_NOLOAD;
> version (linux) import core.sys.linux.dlfcn : RTLD_NOLOAD;
> version (NetBSD) import core.sys.netbsd.dlfcn : RTLD_NOLOAD;
> version (OSX) import core.sys.darwin.dlfcn : RTLD_NOLOAD;
> version (Solaris) import core.sys.solaris.dlfcn : RTLD_NOLOAD;
>
> static assert(__traits(compiles, RTLD_NOLOAD), "unimplemented");
> ---

indeed, that's certainly clearer.  Here's what I've committed after
testing on Linux/x86_64 (all libphobos.shared tests continue to pass)
and Solaris 11.5/x86 with dlpi_tls_modid (load.d compiles, but fails at
runtime as before:

core.exception.AssertError@/vol/gcc/src/hg/trunk/solaris-asan/libphobos/testsuite/libphobos.shared/load.d(147):
 Assertion failure

That's the same dlclose issue as discussed in PR d/88150 and the
gcc-patches thread starting at

        https://gcc.gnu.org/ml/gcc-patches/2019-01/msg01661.html

        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


2019-02-19  Iain Buclaw  <ibuc...@gdcproject.org>

        * testsuite/libphobos.shared/load.d: Import core.sys.posix.dlfcn.
        [DragonFlyBSD, FreeBSD, linux, NetBSD, OSX, Solaris]: Import only
        RTLD_NOLOAD from core.sys.*.dlfcn.
        Assert RTLD_NOLOAD is available.

# HG changeset patch
# Parent  f954e54dcb5f39ad242574b49c3a99645396e20e
Fix libphobos testsuite failures on Solaris

diff --git a/libphobos/testsuite/libphobos.shared/load.d b/libphobos/testsuite/libphobos.shared/load.d
--- a/libphobos/testsuite/libphobos.shared/load.d
+++ b/libphobos/testsuite/libphobos.shared/load.d
@@ -3,10 +3,16 @@ import core.stdc.stdio;
 import core.stdc.string;
 import core.thread;
 
-version (linux) import core.sys.linux.dlfcn;
-else version (FreeBSD) import core.sys.freebsd.dlfcn;
-else version (NetBSD) import core.sys.netbsd.dlfcn;
-else static assert(0, "unimplemented");
+import core.sys.posix.dlfcn;
+
+version (DragonFlyBSD) import core.sys.dragonflybsd.dlfcn : RTLD_NOLOAD;
+version (FreeBSD) import core.sys.freebsd.dlfcn : RTLD_NOLOAD;
+version (linux) import core.sys.linux.dlfcn : RTLD_NOLOAD;
+version (NetBSD) import core.sys.netbsd.dlfcn : RTLD_NOLOAD;
+version (OSX) import core.sys.darwin.dlfcn : RTLD_NOLOAD;
+version (Solaris) import core.sys.solaris.dlfcn : RTLD_NOLOAD;
+
+static assert(__traits(compiles, RTLD_NOLOAD), "unimplemented");
 
 void loadSym(T)(void* handle, ref T val, const char* mangle)
 {

Reply via email to