error importing std.intrinsic on linux Digital Mars D Compiler v2.008

Guillaume Chatelet chatelet.guillaume at gmail.com
Sat Oct 30 06:12:01 PDT 2010


Alright my first post is almost unreadable so restarting with the http version...
Hope it's going to be better.

Guillaume
---------

I'm trying to build the following helloworld on Linux Gentoo :
import std.stdio;
void main ()
{
    writefln("hello world !!");
}

invoking 'dmd hello.d -v' gives :
parse     hello
semantic  hello
import    object        (/opt/dmd/src/phobos/object.d)
import    std.stdio     (/opt/dmd/src/phobos/std/stdio.d)
import    std.c.stdio   (/opt/dmd/src/phobos/std/c/stdio.d)
import    std.c.stddef  (/opt/dmd/src/phobos/std/c/stddef.d)
import    std.c.stdarg  (/opt/dmd/src/phobos/std/c/stdarg.d)
import    std.format    (/opt/dmd/src/phobos/std/format.d)
import    std.stdarg    (/opt/dmd/src/phobos/std/stdarg.d)
import    std.utf       (/opt/dmd/src/phobos/std/utf.d)
import    std.contracts (/opt/dmd/src/phobos/std/contracts.d)
import    std.conv      (/opt/dmd/src/phobos/std/conv.d)
/opt/dmd/src/phobos/std/conv.d(1468): number is not representable
import    std.string    (/opt/dmd/src/phobos/std/string.d)
import    std.c.stdlib  (/opt/dmd/src/phobos/std/c/stdlib.d)
import    std.c.string  (/opt/dmd/src/phobos/std/c/string.d)
import    std.uni       (/opt/dmd/src/phobos/std/uni.d)
import    std.array     (/opt/dmd/src/phobos/std/array.d)
import    std.ctype     (/opt/dmd/src/phobos/std/ctype.d)
import    std.typetuple (/opt/dmd/src/phobos/std/typetuple.d)
import    std.traits    (/opt/dmd/src/phobos/std/traits.d)
import    std.math      (/opt/dmd/src/phobos/std/math.d)
/opt/dmd/src/phobos/std/math.d(703): number is not representable
import    std.c.math    (/opt/dmd/src/phobos/std/c/math.d)
import    std.system    (/opt/dmd/src/phobos/std/system.d)
import    std.gc        (/opt/dmd/src/phobos/std/gc.d)
import    gcstats       (/opt/dmd/src/phobos/gcstats.d)
import    std.file      (/opt/dmd/src/phobos/std/file.d)
import    std.path      (/opt/dmd/src/phobos/std/path.d)
import    std.c.linux.linux     (/opt/dmd/src/phobos/std/c/linux/linux.d)
import    std.c.linux.linuxextern       (/opt/dmd/src/phobos/std/c/linux/linuxextern.d)
import    std.c.linux.pthread   (/opt/dmd/src/phobos/std/c/linux/pthread.d)
import    std.intrinsic (/opt/dmd/src/phobos/std/intrinsic.d)
/opt/dmd/src/phobos/std/c/linux/linux.d(444): Error: Integer constant expression expected instead of _SIGSET_NWORDS
/opt/dmd/src/phobos/std/c/linux/linux.d(444): Error: Integer constant expression expected instead of _SIGSET_NWORDS
/opt/dmd/src/phobos/std/c/linux/linux.d(444): Error: Integer constant expression expected instead of _SIGSET_NWORDS
/opt/dmd/src/phobos/std/c/linux/linux.d(444): Error: Integer constant expression expected instead of _SIGSET_NWORDS
import    std.outofmemory       (/opt/dmd/src/phobos/std/outofmemory.d)
import    std.regexp    (/opt/dmd/src/phobos/std/regexp.d)
import    std.outbuffer (/opt/dmd/src/phobos/std/outbuffer.d)
import    std.bitmanip  (/opt/dmd/src/phobos/std/bitmanip.d)
import    std.metastrings       (/opt/dmd/src/phobos/std/metastrings.d)


DMD version is v2.008, gentoo ebuild is dev-lang/dmd-bin-2.008-r1
The relevant lines in linux.d file are, l.444 is 'uint[_SIGSET_NWORDS] __val;'


extern (C)
{
    /* from <pwd.h>
     */

    struct passwd
    {
        char *pw_name;
        char *pw_passwd;
        uid_t pw_uid;
        gid_t pw_gid;
        char *pw_gecos;
        char *pw_dir;
        char *pw_shell;
    }

    const size_t _SIGSET_NWORDS = 1024 / (8 * uint.sizeof);
    struct sigset_t
    {
        uint[_SIGSET_NWORDS] __val;
    }

    int getpwnam_r(const(char)*, passwd*, void*, size_t, passwd**);
    passwd* getpwnam(in char*);
    passwd* getpwuid(uid_t);
    int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**);
    int kill(pid_t, int);
    int sem_close(sem_t*);
    int sigemptyset(sigset_t*);
    int sigfillset(sigset_t*);
    int sigismember(sigset_t*, int);
    int sigsuspend(sigset_t*);
}


My linux kernel version is 2.6.35-gentoo-r10, the _SIGSET_NWORDS constant is defined in '/usr/include/bits/sigset.h' and value is
# define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))

Is it serious doc ?

Guillaume Chatelet


More information about the Digitalmars-d-bugs mailing list