Since gcc release 4 it is not possible anymore to call from Fortran a C routine defined for a variable no. of arguments using the ellips notation.
It used to work on all previous gcc 3 releases, and it still works on 32-bit machines, like e.g. Intel Pentium with SUSE Linux 10.0 (gcc 4.0.2) $ uname -a Linux pc012038 2.6.13-15-default #1 Tue Sep 13 14:56:15 UTC 2005 x86_64 x86_64 x86_64 GNU/Linux $ cat for_ellips.f PROGRAM FELLIS WRITE(*,2100) CALL SSN(99123) WRITE(*,1100) STOP 0 1100 FORMAT('F: returning from SSN(n1)') 2100 FORMAT('F: calling SSN(99123)') END $ cat ftoc_ellips.c #include <stdarg.h> #include <stdio.h> #define SSN ssn_ int SSN(int *noargs, ...) { va_list Cargs; printf("C: here in SSN...\n"); va_start(Cargs,noargs); return 0; } $ /usr/local/gnu/bin/gfortran -c for_ellips.f $ /usr/local/gnu/bin/gcc -c ftoc_ellips.c $ /usr/local/gnu/bin/gfortran for_ellips.o ftoc_ellips.o -o ./ftoc_ellips.exe $ ./ftoc_ellips.exe F: calling SSN(99123) Illegal instruction $ /usr/local/gnu/bin/gcc -v Using built-in specs. Target: x86_64-unknown-linux-gnu Configured with: ../configure --enable-threads=posix --prefix=/usr/local/gnu --with-local-prefix=/usr/local/gnu --infodir=/usr/local/gnu/share/info --mandir=/usr/local/gnu/share/man --libdir=/usr/local/gnu/lib64 --libexecdir=/usr/local/gnu/lib64 --enable-languages=c,c++,objc,fortran --disable-checking --with-gxx-include-dir=/usr/local/gnu/include/c++/4.0.2 --disable-libjava-multilib --with-slibdir=/usr/local/gnu/lib64 --with-system-zlib --enable-shared --enable-__cxa_atexit --without-system-libunwind Thread model: posix gcc version 4.1.0 The same happens with gcc 4.0.2: $ gfortran -c for_ellips.f $ gcc -c ftoc_ellips.c $ gfortran for_ellips.o ftoc_ellips.o -o ./ftoc_ellips.exe $ ./ftoc_ellips.exe F: calling SSN(99123) Segmentation fault $ gcc -v Using built-in specs. Target: x86_64-suse-linux Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,f95,java,ada --disable-checking --with-gxx-include-dir=/usr/include/c++/4.0.2 --enable-java-awt=gtk --disable-libjava-multilib --with-slibdir=/lib64 --with-system-zlib --enable-shared --enable-__cxa_atexit --without-system-libunwind --host=x86_64-suse-linux Thread model: posix gcc version 4.0.2 20050901 (prerelease) (SUSE Linux) -- Summary: On AMD Athlon 64 not possible to call C routine with variable no. of arguments from Fortran Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: kbanse at eso dot org GCC build triplet: x86_64-suse-linux GCC host triplet: x86_64-suse-linux GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26728