tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

a case for MAIN__ tricks with f2c

Hi -
I might have found a case where the current libf2c defining
a C-style main() function which refers to the fortran MAIN__
fails. Seen this in HDF4:
There is a shared library which contains both C and Fortran
functions. For Fortran runtime support, it links against
the (shared) libf2c. But generally, it can be used from C
Now if a C program uses this library, it gets a link error
due to an undefined MAIN__. This wouldn't happen with a
static lib because the main.o object wouldn't be pulled
in, but with a shared lib everything sticks together.
For me, the appended patch helps. Some "#ifdef _GNUC_"
or so might be needed. gcc's gfortran puts the main()
finction in an extra object, but this would need changes
to the wrapper script.
best regards

Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzende des Aufsichtsrats: MinDir'in Baerbel Brumme-Bothe
Geschaeftsfuehrung: Prof. Dr. Achim Bachem (Vorsitzender),
Dr. Ulrich Krafft (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt

--- main.c.orig 2008-04-06 04:42:46.000000000 +0200
+++ main.c
@@ -49,7 +49,7 @@ extern int MAIN__();
 #define Int /* int */
 extern void f_init(void), sig_die(const char*, int);
-extern int MAIN__(void);
+extern int MAIN__(void) __attribute__((weakref));
 #define Int int

Home | Main Index | Thread Index | Old Index