Package: tcc Version: 0.9.22-2 Severity: normal The following program makes tcc dump core:
#define _FILE_OFFSET_BITS 64 #include <sys/types.h> #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main (void) { return 0; } Autoconf-generated scripts use a variant of this check to determine the flags needed for large file support. The idea is for the compiler to accept the program iff off_t can represent 2**63. Although tcc apparently supports long long, this program makes it dump core, leading configure to believe that defining _FILE_OFFSET_BITS is useless! Removing the first line "works" correctly -- in the sense that tcc will complain about the "invalid array size", as intended for 32-bit off_t. The offending program can be reduced even further: int array[(1LL << 0) ? 1 : -1]; int main (void) { return 0; } If either 1LL is changed to 1, or "<< 0" is removed, the program compiles. An even simpler program that causes the core dump is: int array[1LL << 0]; int main (void) { return 0; } Again, either changing 1LL to 1 or omitting the shift causes core dump to go away. -- System Information: Debian Release: 3.1 APT prefers testing APT policy: (500, 'testing') Architecture: i386 (i686) Kernel: Linux 2.6.8-1-686 Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1) Versions of packages tcc depends on: ii libc6 2.3.2.ds1-20 GNU C Library: Shared libraries an -- no debconf information -- System Information: Debian Release: 3.1 APT prefers testing APT policy: (500, 'testing') Architecture: i386 (i686) Kernel: Linux 2.6.8-1-686 Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1) Versions of packages tcc depends on: ii libc6 2.3.2.ds1-20 GNU C Library: Shared libraries an -- no debconf information -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]