And ... as follow-up I thought I'd check whether "make test" in
lang/llvm (5.0.1nb1) works on NetBSD/amd64 8.0_BETA. And while the
selftest setup seems to work fine on this platform, there are quite a
bit of unexpected failures:
Expected Passes: 20309
Expected Failures : 130
Unsupported Tests : 786
Unexpected Failures: 211
and it seems a lot of the tests simply crash. An example:
Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60
FAIL: LLVM :: ExecutionEngine/test-interp-vec-logical.ll (13657 of 21436)
TEST 'LLVM :: ExecutionEngine/test-interp-vec-logical.ll'
FAILED
Script:
--
/usr/pkgsrc/lang/llvm/work/build/./bin/lli
/usr/pkgsrc/lang/llvm/work/llvm-5.0.0.src/test/ExecutionEngine/test-interp-vec-logical.ll
> /dev/null
--
Exit Code: 139
Command Output (stderr):
--
#0 0x7138327c701a llvm::sys::PrintStackTrace(llvm::raw_ostream&)
(/usr/pkgsrc/lang/llvm/work/build/lib/libLLVM-5.0.so+0x7c701a)
#1 0x7138327c536f llvm::sys::RunSignalHandlers()
(/usr/pkgsrc/lang/llvm/work/build/lib/libLLVM-5.0.so+0x7c536f)
#2 0x7138327c54b0 SignalHandler(int)
(/usr/pkgsrc/lang/llvm/work/build/lib/libLLVM-5.0.so+0x7c54b0)
Stack dump:
0. Program arguments: /usr/pkgsrc/lang/llvm/work/build/./bin/lli
/usr/pkgsrc/lang/llvm/work/llvm-5.0.0.src/test/ExecutionEngine/test-interp-vec-logical.ll
/usr/pkgsrc/lang/llvm/work/build/test/ExecutionEngine/Output/test-interp-vec-logical.ll.script:
line 1: 18054 Segmentation fault (core dumped)
/usr/pkgsrc/lang/llvm/work/build/./bin/lli
/usr/pkgsrc/lang/llvm/work/llvm-5.0.0.src/test/ExecutionEngine/test-interp-vec-logical.ll
> /dev/null
However, this doesn't appear to actually give enough information to
zero in on what the actual problem is, sigh!
Isn't the backtracer able to trace through signal delivery events?
I find there's a number of core files left after the selftests have
run:
d3: {10} find work -name '*.core'
work/build/test/MCJITTests.core
work/build/test/OrcJITTests.core
work/build/test/SupportTests.core
work/build/test/BugPoint/opt.core
work/build/test/ExecutionEngine/MCJIT/lli.core
work/build/test/ExecutionEngine/OrcMCJIT/lli.core
work/build/test/ExecutionEngine/lli.core
d3: {11}
but looking at the last one doesn't really give much more useful
information:
d3: {11} gdb -q work/build/./bin/lli
Reading symbols from work/build/./bin/lli...(no debugging symbols found)...done.
(gdb) core-file work/build/test/ExecutionEngine/lli.core
[New process 1]
Core was generated by `lli'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x701d30805000 in main ()
(gdb) x/i 0x701d30805000
=> 0x701d30805000 : xor%eax,%eax
(gdb) where
#0 0x701d30805000 in main ()
#1 0x701d2e95bf17 in llvm::MCJIT::runFunction(llvm::Function*,
llvm::ArrayRef) ()
from /usr/pkgsrc/lang/llvm/work/build/lib/libLLVM-5.0.so
#2 0x701d2e9378ed in
llvm::ExecutionEngine::runFunctionAsMain(llvm::Function*,
std::vector > const&, char const*
const*) () from /usr/pkgsrc/lang/llvm/work/build/lib/libLLVM-5.0.so
#3 0x0041cad6 in main ()
(gdb) i reg
rax0x701d2e95be9a 123270637928090
rbx0x7f7fffecd600 140187731285504
rcx0x701d3080b800 123270670104576
rdx0xff4350da -12365606
rsi0x20 32
rdi0x701d2d1236e0 123270612530912
rbp0x20 0x20
rsp0x7f7fffecd458 0x7f7fffecd458
r8 0x0 0
r9 0x701d2d1151c0 123270612472256
r100x701d30805000 123270670077952
r110x207519
r120x701d30805000 123270670077952
r130x701d2d16c000 123270612828160
r140x701d2d1236e0 123270612530912
r150x701d2c558b00 123270600166144
rip0x701d30805000 0x701d30805000
eflags 0x10246 [ PF ZF IF RF ]
cs 0x47 71
ss 0x3f 63
ds 0x3f 63
es 0x3f 63
fs 0x0 0
gs 0x0 0
(gdb)
?!? SEGV on "xor %eax,%eax"?!? I don't think so...
Regards,
- HÃ¥vard