Okay seem to be most of the way there, just a couple of warnings/errors and more failed ‘make checks’ than before.
make check results :-
of expected passes 1735
of unexpected failures 45
of expected failures 56
See attached file for details.
There were two “errors” flagged up in the LLVM second phase build :-
******** Warning: Your LLVMGCCDIR is set incorrectly. Double-check
******** Warning: llvm/Makefile.config to make sure it matches
******** Warning: the directory where the C front-end is installed,
******** Warning: and re-run configure if it does not.
/usr/src/llvm/Makefile.rules:639: Modules require llvm-gcc but no llvm-gcc is av
ailable ****
Although as far as I can tell they had no effect and ‘llvm-gcc.exe’ was accessable on the path to both the make and make install runs where they occured.
Your "make check" output has two classes of errors:
1. llvm-gcc or llvm-g++ not being found. Its possible this results from
Cygwin requiring the .exe extension. The makefiles probably need to be
enhanced to include the suffix.
2. You have a permissions problem on:
test/Regression/Analysis/Andersens/Output/basictest.ll.out.script. The
file couldn't be opened for writing. Possibly you have a hung build or
the permissions are just plain wrong?
The messages indicating that LLVMGCCDIR is not set properly probably
also originate from not having the .exe suffix placed correctly. I'll
see if I can work up a patch for you.
Your "make check" output has two classes of errors:
1. llvm-gcc or llvm-g++ not being found. Its possible this results from
Cygwin requiring the .exe extension. The makefiles probably need to be
enhanced to include the suffix.
Okay, but that did not seem to be a problem before.
I thought about that being a possible problem. The make install removes the .exe extensions.
But it does stop them being executed outside of Cygwin/bash.
2. You have a permissions problem on:
test/Regression/Analysis/Andersens/Output/basictest.ll.out.script. The
file couldn't be opened for writing. Possibly you have a hung build or
the permissions are just plain wrong?
No .script file there there is basictest.ll.out however.
The messages indicating that LLVMGCCDIR is not set properly probably
also originate from not having the .exe suffix placed correctly. I'll
see if I can work up a patch for you.
Okay.
Shall I do the ENABLE_OPTIMIZED "release" build now or wait till we have ironed out these last few problems; and do it tommorow.
You have not commited the X86JITInfo.cpp patch yet ?
Thanks again for the support, hopefully we will get it solved soon.
>Your "make check" output has two classes of errors:
>1. llvm-gcc or llvm-g++ not being found. Its possible this results from
>Cygwin requiring the .exe extension. The makefiles probably need to be
>enhanced to include the suffix.
Okay, but that did not seem to be a problem before.
Well, it is now I'm working on fixing the configure script. It
doesn't include the .exe suffix which is why you're getting these
errors.
I thought about that being a possible problem. The make install removes the
.exe extensions.
But it does stop them being executed outside of Cygwin/bash.
>2. You have a permissions problem on:
>test/Regression/Analysis/Andersens/Output/basictest.ll.out.script. The
>file couldn't be opened for writing. Possibly you have a hung build or
>the permissions are just plain wrong?
No .script file there there is basictest.ll.out however.
Then the permission problem is on the Output directory. The file can't
be created for some strange reason.
>The messages indicating that LLVMGCCDIR is not set properly probably
>also originate from not having the .exe suffix placed correctly. I'll
>see if I can work up a patch for you.
Okay.
Shall I do the ENABLE_OPTIMIZED "release" build now or wait till we have
ironed out these last few problems; and do it tommorow.
You'll run into the same problem with that style build. Go ahead and
kick it off if you like, at least you'll get the bulk of the compilation
over and done with.
You have not commited the X86JITInfo.cpp patch yet ?
No, I've been waiting for confirmation that it solved the problem, but I
guess we have that now that you've moved passed that issue.
Thanks again for the support, hopefully we will get it solved soon.
Okay, those 12 unexpected failures fall into three categories:
1. Math failures. things like "unordered" are not being found in math.h
So either Cygwin doesn't support such FP functions or it has them in
some other header file that we need. Also, one of the tests fails
because "complex.h" is not found. Again, this is probalby just a
Cygwin deficiency that we can't do anything about.
2. The LLI test failures occur because the dlsym function on cygwin can
only find symbols in a loaded DLL. If the symbol is in the .EXE file
then the symbol doesn't get found. Since LLI links in things like
printf, strcat, and some other fundamental functions, they don't get
found on Cygwin. A similar thing happens on MacOS but for a much
smaller set of files for which we hand code a workaround. The set
of functions on Cygwin is basically a large fraction of glibc, too
much to do by hand.
3. You have another permission problem in your make check output
directories. Not sure how this happens, but if you're on windows,
its probably a sharing violation. Are you running two of these
make check's at the same time?
All in all, I don't think any of this is hugely significant except #2
which thwarts LLI and JIT on Cygwin. We don't have a workaround for
this, its just a deficiency of Cygwin. The only thing we *could* do is
build a huge table of every symbol that LLI links statically and scan
that table whenever a symbol is looked up. This adds significant
overhead for dynamically linking symbols at runtime in the JIT. I think
the better thing to do is wait for a new JIT engine that compiles
everything to ELF files statically off line and loads them as necessary.
Alexander Friedman and I are working on that kind of an approach for our
runtimes.