Cygwin debug build results

Reid,

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.

Other than that, we are winning.

Aaron

makecheck.txt (15.9 KB)

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.

Reid.

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.

Aaron

>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 :slight_smile: 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.

Yes, hopefully!

Reid

Reid,

Heres the results, even better than before :-

of expected passes 1759

of unexpected failures 12

of expected failures 56

Previous working build :-

of expected passes 1736

of unexpected failures 16

of expected failures 56

Goodie, now for a release build.

Aaron

makecheck.txt (15.1 KB)

Okay, this is looking much better. I'll commit the configure script.

There's a couple of CFrontEnd failures. Possibly you're not working with
the latest llvm-gcc? (built from CVS?)

The others are known JIT failures on Cygwin .. it can't load symbols
from the LLI executable. We don't have a fix for this (yet).

So, I'd say we're good to go :slight_smile:

Reid.

Okay, this is looking much better. I'll commit the configure script.

Great, that did the job.

There's a couple of CFrontEnd failures. Possibly you're not working with
the latest llvm-gcc? (built from CVS?)

checkout today about 16:00 GMT

The others are known JIT failures on Cygwin .. it can't load symbols
from the LLI executable. We don't have a fix for this (yet).

Please explain.

So, I'd say we're good to go :slight_smile:

Just about I'll do the release build tommorow.

Aaron

After a make clean on test we are getting :-

of expected passes 1766

of unexpected failures 12

of expected failures 55

Aaron

makecheck.txt (15.1 KB)

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.

Reid.