Path: utzoo!censor!geac!torsqnt!hybrid!scifi!bywater!uunet!wuarchive!emory!gatech!prism!prism.gatech.EDU!scott From: scott@prism.gatech.EDU (Scott Holt) Newsgroups: comp.unix.aix Subject: C/FORTRAN intermixing problem Message-ID: <19946@hydra.gatech.EDU> Date: 19 Jan 91 19:31:01 GMT Sender: scott@prism.gatech.EDU Organization: Georgia Institute of Technology Lines: 33 I am attempting to port a graphics library (di3000), written in FORTRAN, which makes use of some C support routines. One of the C support routines is used to return the value of an environment variable to the calling FORTRAN routine; consequently, it calls getenv. The problem comes from the fact that XLF provides a FORTRAN callable GETENV and, of course, programs get linked with the FORTRAN version. Thus, anything which calls getenv, expecting it to come from the C runtine library, blows up. Now, my first guess would be to simply replace the offending support routine with a FORTRAN implementation wich calls the FORTRAN GETENV. This would result in a minimal number of changes to existing code. Unfortunately, there are a number of other support routines which call getenv, expecting it to be from the C runtime library and they cannot so easily be rewritten. So much for that. Another (not so hot, but possible) option is to implement my own getenv for the C code, name it something else (say Cgetenv) and replace all the calls in to getenv in C code to calls to this routine. This would be trivial if I had source to AIX 8-). Before I try to do this, I would like to know if there is an easier way around my problem. I thought about simply yanking getenv.o and whatever it needed from libc.a, but I don't see it there. Also, I am not too sure what the implications would be for the version of GETENV in the FORTRAN runtime library. Basicly, what I would really like to find is a way to tell the loader that one set of routines is to satisfy its external references from the C runtine library, and another from the FORTRAN library. Any help would be appreciated. -Scott