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) ^~~~~~~~~~~