Compiling C programs using g2c.h fails on amd64

Bug #61623 reported by Roman Werpachowski
6
Affects Status Importance Assigned to Milestone
gcc-3.4 (Ubuntu)
Invalid
Undecided
Unassigned

Bug Description

Binary package hint: libg2c0-dev

The following short program does not compile:

#include <g2c.h>

int main(void)
{
        integer n;

        return 0;
}

gcc emits:

roman@tintin:~$ gcc -lg2c integer.c
In file included from integer.c:1:
/usr/include/g2c.h:21: error: syntax error before ‘integer’
/usr/include/g2c.h:22: error: syntax error before ‘uinteger’
/usr/include/g2c.h:29: error: syntax error before ‘logical’
/usr/include/g2c.h:33: error: syntax error before ‘longint’
/usr/include/g2c.h:34: error: syntax error before ‘ulongint’
/usr/include/g2c.h:55: error: syntax error before ‘flag’
/usr/include/g2c.h:56: error: syntax error before ‘ftnlen’
/usr/include/g2c.h:57: error: syntax error before ‘ftnint’
/usr/include/g2c.h:62: error: syntax error before ‘flag’
/usr/include/g2c.h:64: error: syntax error before ‘ciend’
/usr/include/g2c.h:66: error: syntax error before ‘cirec’
/usr/include/g2c.h:71: error: syntax error before ‘flag’
/usr/include/g2c.h:73: error: syntax error before ‘iciend’
/usr/include/g2c.h:75: error: syntax error before ‘icirlen’
/usr/include/g2c.h:76: error: syntax error before ‘icirnum’
/usr/include/g2c.h:81: error: syntax error before ‘flag’
/usr/include/g2c.h:84: error: syntax error before ‘ofnmlen’
/usr/include/g2c.h:88: error: syntax error before ‘orl’
/usr/include/g2c.h:90: error: syntax error before ‘}’ token
/usr/include/g2c.h:94: error: syntax error before ‘flag’
/usr/include/g2c.h:97: error: syntax error before ‘}’ token
/usr/include/g2c.h:101: error: syntax error before ‘flag’
/usr/include/g2c.h:107: error: syntax error before ‘flag’
/usr/include/g2c.h:110: error: syntax error before ‘infilen’
/usr/include/g2c.h:111: error: syntax error before ‘*’ token
/usr/include/g2c.h:112: error: syntax error before ‘*’ token
/usr/include/g2c.h:113: error: syntax error before ‘*’ token
/usr/include/g2c.h:114: error: syntax error before ‘*’ token
/usr/include/g2c.h:116: error: syntax error before ‘innamlen’
/usr/include/g2c.h:118: error: syntax error before ‘inacclen’
/usr/include/g2c.h:120: error: syntax error before ‘inseqlen’
/usr/include/g2c.h:122: error: syntax error before ‘indirlen’
/usr/include/g2c.h:124: error: syntax error before ‘infmtlen’
/usr/include/g2c.h:126: error: syntax error before ‘informlen’
/usr/include/g2c.h:128: error: syntax error before ‘inunflen’
/usr/include/g2c.h:129: error: syntax error before ‘*’ token
/usr/include/g2c.h:130: error: syntax error before ‘*’ token
/usr/include/g2c.h:132: error: syntax error before ‘inblanklen’
/usr/include/g2c.h:138: error: syntax error before ‘integer’
/usr/include/g2c.h:144: error: syntax error before ‘}’ token
/usr/include/g2c.h:153: error: syntax error before ‘ftnlen’
/usr/include/g2c.h:155: error: syntax error before ‘}’ token
/usr/include/g2c.h:193: error: syntax error before ‘*’ token
/usr/include/g2c.h:193: error: ‘integer’ declared as function returning a function
/usr/include/g2c.h:193: error: ‘integer’ redeclared as different kind of symbol
/usr/include/g2c.h:21: error: previous declaration of ‘integer’ was here
/usr/include/g2c.h:198: error: syntax error before ‘*’ token
/usr/include/g2c.h:198: error: ‘logical’ declared as function returning a function
/usr/include/g2c.h:198: error: ‘logical’ redeclared as different kind of symbol
/usr/include/g2c.h:29: error: previous declaration of ‘logical’ was here

gcc version:

roman@tintin:~$ gcc -v
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.0 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk-default --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr --disable-werror --enable-checking=release x86_64-linux-gnu
Thread model: posix
gcc version 4.0.3 (Ubuntu 4.0.3-1ubuntu5)

lig2c0-dev version: 1:3.4.6-1ubuntu2

Revision history for this message
Yachar (yach) wrote :

Confirmed and same error on AMD64 x2, latest Edgy, with gcc-3.4 or gcc-4.0.
All error lines refer to "typedef __g77_integer" lines in g2c.h

The error messages are different though with gcc-4.1, but the same lines are concerned in g2c.h.
yachar@pc:~$ gcc-4.1 -lg2c test.c
In file included from test.c:1:
/usr/include/g2c.h:21: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘integer’
/usr/include/g2c.h:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘uinteger’
/usr/include/g2c.h:29: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘logical’
/usr/include/g2c.h:33: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘longint’
/usr/include/g2c.h:34: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ulongint’
/usr/include/g2c.h:55: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘flag’
/usr/include/g2c.h:56: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ftnlen’
/usr/include/g2c.h:57: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ftnint’
/usr/include/g2c.h:62: error: expected specifier-qualifier-list before ‘flag’
/usr/include/g2c.h:71: error: expected specifier-qualifier-list before ‘flag’
/usr/include/g2c.h:81: error: expected specifier-qualifier-list before ‘flag’
/usr/include/g2c.h:94: error: expected specifier-qualifier-list before ‘flag’
/usr/include/g2c.h:101: error: expected specifier-qualifier-list before ‘flag’
/usr/include/g2c.h:107: error: expected specifier-qualifier-list before ‘flag’
/usr/include/g2c.h:138: error: expected specifier-qualifier-list before ‘integer’
/usr/include/g2c.h:153: error: expected specifier-qualifier-list before ‘ftnlen’
/usr/include/g2c.h:193: error: expected declaration specifiers or ‘...’ before ‘*’ token
/usr/include/g2c.h:193: error: ‘integer’ declared as function returning a function
/usr/include/g2c.h:198: error: expected declaration specifiers or ‘...’ before ‘*’ token
/usr/include/g2c.h:198: error: ‘logical’ declared as function returning a function

Revision history for this message
Micah Cowan (micahcowan) wrote :

You've submitted this against gcc-3.4, yet your comment indicates that you're running gcc 4. libg2c0 is very compiler-dependant, thus it is important that the version of the compiler matches the version for libg2c0. There is no bug for gcc-3.4, then, since compiling with that version of gcc works fine. For that reason, I'm rejecting the bug against 3.4

Unfortunately, AFAICT, libg2c0 is no longer available from gcc-4.x, so you will need to take care to use 3.x versions of gcc.

Changed in gcc-3.4:
status: Unconfirmed → Rejected
Revision history for this message
pierz (p-ohanlon) wrote :

You can, as suggested [http://www.dbforums.com/archive/index.php/t-563609.html here]. just add the missing typedefs to your code (then it _should_ work in gcc4.1:

// Typedefs to keep g2c.h happy
typedef int __g77_integer;
typedef unsigned int __g77_uinteger;
typedef long int __g77_longint;
typedef unsigned long int __g77_ulongint;

#include <g2c.h>

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.