Previous: Formerly Supported Platforms, Up: Target Platforms [Contents][Index]
Some platforms with C compilers are not supported by Gnulib because the platforms violate Gnulib’s C portability assumptions. See Other portability assumptions made by Gnulib.
These assumptions are not required by the C or POSIX standards but hold on almost all practical porting targets. If you need to port Gnulib code to a platform where these assumptions are not true, we would appreciate hearing of any fixes. We need fixes that do not increase runtime overhead on standard hosts and that are relatively easy to maintain.
These platforms are listed below to illustrate problems that Gnulib and Gnulib-using code would have if it were intended to be portable to all practical POSIX or C platforms.
If you use Clang with -fsanitize=undefined, you can work around the problem by also using ‘-fno-sanitize=pointer-overflow’, although this may also disable some unrelated and useful pointer checks. Perhaps someday the Clang developers will fix the infelicity.
intptr_t
and uintptr_t
, which are optional in the C and
POSIX standards. However, these two types are required for the XSI
extension to POSIX, and many Gnulib modules use them. To work around
this compatibility problem, Gnulib-using applications can be run on
the IBM i’s PASE emulation environment. The IBM i’s architecture
descends from the System/38 (1978).
CHAR_BIT == 9
and INT_MIN == -INT_MAX
. By default
UINT_MAX
is 2^{36} - 2, which does not conform to the C
requirement that it be one less than a power of two. Although
compiler options can raise UINT_MAX
to be 2^{36} - 1,
this can break system code that uses -0 as a flag value.
This platform’s architecture descends from the UNIVAC 1103 (1953).
unsigned int
uses the low-order 40 bits of the word, and
int
uses the low-order 41 bits of the word with a
signed-magnitude representation. On these machines, INT_MAX ==
UINT_MAX
, INT_MIN == -INT_MAX
, and sizeof (int) == 6
.
This platform’s architecture descends from the Burroughs B5000 (1961).
The following platforms are not supported by Gnulib. The cost of supporting them would exceed the benefit because they are rarely used, or poorly documented, or have been supplanted by other platforms, or diverge too much from POSIX, or some combination of these and other factors. Please don’t bother sending us patches for them.
Previous: Formerly Supported Platforms, Up: Target Platforms [Contents][Index]