Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Sat, 13 Oct 2018 17:47:50 -0400
From: K Jelesnianski <kjski@...edu>
To: musl@...ts.openwall.com
Subject: compiling SPECCPU2006 against Musl

Dear mailing list,

I am curious if anyone has any insight on how to link the SPECCPU2006
benchmarks against Lusl Libc. Reading FAQ I saw that Musl does *not* have
C++ support out of the box but can still "hopefully" work in some cases
against glibstdc++
I havent found any resources or guides on-line of people doing this.

Anyways I am only focusing on the C implementation SPEC benchmarks and out
of this subset I was still only able to compile a few. The following do not
compile against MUSL:
400.perlbench
403.gcc
462.libquantum

I tried to use both clang 6.0.0 and gcc and got the following error below
(Dump at end of email). Any thoughts?
for perlbench - at first was "undefined reference to __isnan" but then
after adding -I/path/to/musl/install/include I got even more errors. I am
using the -std=gnu89 flag since this was how SPEC documented its fix for a
multiple definition error. The other 2 benchmarks show similar errors.

Sincerely,
K Jelesnianski

Error Dump for perlbench:

clang -c -o perlio.o -DSPEC_CPU -DNDEBUG -DPERL_CORE   -O2
-fno-strict-aliasing -g -fPIC -fomit-frame-pointer
-I/home/c/workspace/research/mardu/bin/include       -DSPEC_CPU_LP64
-DSPEC_CPU_LINUX_X64 -std=gnu89        perlio.c
In file included from perlio.c:50:
In file included from ./perl.h:384:
In file included from
/home/c/workspace/research/mardu/bin/include/sys/types.h:70:
/home/c/workspace/research/mardu/bin/include/endian.h:32:25: warning:
'&' within '|' [-Wbitwise-op-parentheses]
        return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                       ~ ~~~~~~^~~~~~~
/home/c/workspace/research/mardu/bin/include/endian.h:32:25: note:
place parentheses around the '&' expression to silence this warning
        return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                               ^
                         (            )
/home/c/workspace/research/mardu/bin/include/endian.h:32:41: warning:
'&' within '|' [-Wbitwise-op-parentheses]
        return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                       ~ ~~~~~~^~~~~~~~~
/home/c/workspace/research/mardu/bin/include/endian.h:32:41: note:
place parentheses around the '&' expression to silence this warning
        return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                               ^
                                         (              )
/home/c/workspace/research/mardu/bin/include/endian.h:37:23: warning:
operator '<<' has lower precedence than '+'; '+' will be evaluated
first [-Wshift-op-parentheses]
        return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
               ~~~~~~~~~~~~~~^~~~~~~
/home/c/workspace/research/mardu/bin/include/endian.h:37:23: note:
place parentheses around the '+' expression to silence this warning
        return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                             ^
               (                  )
perlio.c:2308:21: error: use of undeclared identifier 'O_TRUNC'; did
you mean 'OP_TRANS'?
        oflags = O_CREAT | O_TRUNC;
                           ^~~~~~~
                           OP_TRANS
./opnames.h:51:2: note: 'OP_TRANS' declared here
        OP_TRANS,       /* 35 */
        ^
perlio.c:2318:21: error: use of undeclared identifier 'O_APPEND'
        oflags = O_CREAT | O_APPEND;
                           ^
perlio.c:3046:28: error: incomplete definition of type 'struct _IO_FILE'
        STDCHAR *eptr = (STDCHAR*)PerlSIO_get_ptr(s);
                                  ^~~~~~~~~~~~~~~~~~
./iperlsys.h:305:29: note: expanded from macro 'PerlSIO_get_ptr'
#define PerlSIO_get_ptr(f)              FILE_ptr(f)
                                        ^~~~~~~~~~~
./spec_config.h:814:30: note: expanded from macro 'FILE_ptr'
#   define FILE_ptr(fp) ((fp)->_IO_read_ptr)
                         ~~~~^
/home/c/workspace/research/mardu/bin/include/bits/alltypes.h:356:16:
note: forward declaration of 'struct _IO_FILE'
typedef struct _IO_FILE FILE;
               ^
perlio.c:3054:20: error: incomplete definition of type 'struct _IO_FILE'
            if ((STDCHAR*)PerlSIO_get_ptr(s) != --eptr || ((*eptr &
0xFF) != ch)) {
                          ^~~~~~~~~~~~~~~~~~
./iperlsys.h:305:29: note: expanded from macro 'PerlSIO_get_ptr'
#define PerlSIO_get_ptr(f)              FILE_ptr(f)
                                        ^~~~~~~~~~~

Content of type "text/html" skipped

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.