how to make a site for free

There are some platform specific issues (particularly on clang/Darwin), and some bugs that originate either in CIL or the underlying compilers. Here's what we know about:

  • Darwin extensions. If you experience issues on clang/Darwin, start by including this file: bin/tigress/<version>/tigress.h at the top of your source files. If you still get compilation errors (in particular when the tigress processes standard .h files, such as stdio.h), let me know. I think I have covered all the issues (particularly with the #include<Availability.h> file), but since there's not much documentation it's hard to know.
  • A similar problem occurs with some standard APIs, that use "_Noreturn". Tigress doesn not support this, and tigress.h therefore sets a #define to remove it. Make sure to include tigress.h prior to any #include that (directly or indirectly) includes such standard libraries.
  • Clang issue (1). Compile with -fgnu89-inline  to get past a redeclaration bug in MAC OS 10.9. For an explanation, see, for example, http//sourceforge.net/p/resil/tickets/6.
  • Clang issue (2). Compile with -Wno-builtin-requires-header to avoid a spurious warning generated by clang.
  • CIL issue (1). CIL fails on Gcc torture test pr15296.c: typedef int __attribute__ ((mode (__pointer__))) intptr_t;
  • CIL issue (2). CIL fails on __alignof__(void).
  • Glibc issue (1). If you get someting like
     /usr/include/bits/mathcalls-helper-functions.h[21:12-28] : syntax error
    you may have run into an issue with recent versions of glibc which now support 128-bit floats (Tigress doesn't). There are two potential ways to fix this:
    1) add -D _Float128=double to the Tigress command line or 2) add #undef __HAVE_DISTINCT_FLOAT128 before including math.h.
  • Glibc issue (2). Similar to (1) above, you might see someting like   /usr/include/mach/arm/_structs.h[443:0-0] : syntax error. This is because of recent versions of glibc which support 128-bit ints (Tigress doesn't). To fix this, call tigress like this: tigress -D __uint128_t=__uint64_t .... Obviously, if your program actually uses 128-bit ints, you're out of luck.
  • C99 issue. Tigress supports the C99 language. Depending on your compiler, you may have to add a switch (such as -std=c99 for gcc) to indicate this.