diff -urN 2005_orig/src/cfortran/cfortran.doc 2005_patched/src/cfortran/cfortran.doc --- 2005_orig/src/cfortran/cfortran.doc 1998-12-11 18:17:09.000000000 +0100 +++ 2005_patched/src/cfortran/cfortran.doc 2006-05-08 11:08:30.000000000 +0200 @@ -195,13 +195,13 @@ HP9000> f77 -c cfortex.f HP9000> CC -o cfortest cfortest.c cfortex.o -lI77 -lF77 && cfortest -HP0000> # If old-style f77 +800 compiled objects are required: +HP9000> # If old-style f77 +800 compiled objects are required: HP9000> # #define hpuxFortran800 HP9000> cc -c -Aa -DhpuxFortran800 cfortest.c HP9000> f77 +800 -o cfortest cfortest.o cfortex.f f2c> # In the following, 'CC' is any C compiler. -f2c> f2c -R cfortex.f +f2c> f2c cfortex.f f2c> CC -o cfortest -Df2cFortran cfortest.c cfortex.c -lf2c && cfortest Portland Group $ # Presumably other C compilers also work. @@ -533,9 +533,10 @@ FORTRAN_REAL thus corresponds to FORTRAN's REAL on all machines, including t3e. -o f2c - f2c, by default promotes REAL functions to double. cfortran.h does not (yet) -support this, so the f2c -R option must be used to turn this promotion off. +o f2c / g77 + f2c and g77 by default promote REAL functions to double. As of December 9, +2005, the Debian package of cfortran supports this behavior, so the f2c -R +option must *NOT* be used to turn this promotion off. o f2c [Thanks to Dario Autiero for pointing out the following.] @@ -573,6 +574,11 @@ #endif /* Last three lines are a work-around for the strange f2c naming feature. */ +o gfortran + gfortran behaves similarly to f2c and g77, EXCEPT that it does NOT by default +promote REAL functions to double. Therefore you should use -DgFortran instead +of -Dg77Fortran or -Df2cFortran to let cfortran.h know about this difference. + o NAG f90 The Fortran 77 subset of Fortran 90 is supported. Extending cfortran.h to interface C with all of Fortran 90 has not yet been examined. @@ -643,7 +649,7 @@ [For an ancient math.h on a 386 or sparc, get similar from a new math.h.] #ifdef mc68000 /* 5 lines Copyright (c) 1988 by Sun Microsystems, Inc. */ #define FLOATFUNCTIONTYPE int - #define RETURNFLOAT(x) return (*(int *)(&(x))) + #define RETURNFLOAT(x) return (*(int *)(&(x))) #define ASSIGNFLOAT(x,y) *(int *)(&x) = y #endif @@ -874,7 +880,7 @@ works everywhere and would seem to be an obvious choice. -3. +3. cfortran.h encourages the exact specification of the type and dimension of array parameters because it allows the C compiler to detect errors in the @@ -1835,7 +1841,7 @@ Unlike all other C compilers supported by cfortran.h, 'gcc -traditional' promotes to double all functions returning float -as demonstrated bu the following example. +as demonstrated by the following example. /* m.c */ #include @@ -2017,8 +2023,9 @@ THIS PACKAGE, I.E. CFORTRAN.H, THIS DOCUMENT, AND THE CFORTRAN.H EXAMPLE PROGRAMS ARE PROPERTY OF THE AUTHOR WHO RESERVES ALL RIGHTS. THIS PACKAGE AND -THE CODE IT PRODUCES MAY BE FREELY DISTRIBUTED WITHOUT FEES, SUBJECT TO THE -FOLLOWING RESTRICTIONS: +THE CODE IT PRODUCES MAY BE FREELY DISTRIBUTED WITHOUT FEES, SUBJECT +(AT YOUR CHOICE) EITHER TO THE GNU LIBRARY GENERAL PUBLIC LICENSE +AT http://www.gnu.org/licenses/lgpl.html OR TO THE FOLLOWING RESTRICTIONS: - YOU MUST ACCOMPANY ANY COPIES OR DISTRIBUTION WITH THIS (UNALTERED) NOTICE. - YOU MAY NOT RECEIVE MONEY FOR THE DISTRIBUTION OR FOR ITS MEDIA (E.G. TAPE, DISK, COMPUTER, PAPER.) diff -urN 2005_orig/src/cfortran/cfortran.h 2005_patched/src/cfortran/cfortran.h --- 2005_orig/src/cfortran/cfortran.h 2002-09-11 19:05:51.000000000 +0200 +++ 2005_patched/src/cfortran/cfortran.h 2006-05-08 11:08:30.000000000 +0200 @@ -1,4 +1,4 @@ -/* cfortran.h 4.4_cernlib2002 */ +/* cfortran.h 4.4 */ /* http://www-zeus.desy.de/~burow/cfortran/ */ /* Burkhard Burow burow@desy.de 1990 - 2002. */ @@ -11,11 +11,71 @@ MODIFYING, COPYING AND DISTRIBUTING THE CFORTRAN.H PACKAGE. */ +/* The following modifications were made by the authors of CFITSIO or by me. + * They are flagged below with CFITSIO, the author's initials, or KMCCARTY. + * PDW = Peter Wilson + * DM = Doug Mink + * LEB = Lee E Brotzman + * MR = Martin Reinecke + * WDP = William D Pence + * -- Kevin McCarty, for Debian (19 Dec. 2005) */ + +/******* + Modifications: + Oct 1997: Changed symbol name extname to appendus (PDW/HSTX) + (Conflicted with a common variable name in FTOOLS) + Nov 1997: If g77Fortran defined, also define f2cFortran (PDW/HSTX) + Feb 1998: Let VMS see the NUM_ELEMS code. Lets programs treat + single strings as vectors with single elements + Nov 1999: If macintoxh defined, also define f2cfortran (for Mac OS-X) + Apr 2000: If WIN32 defined, also define PowerStationFortran and + VISUAL_CPLUSPLUS (Visual C++) + Jun 2000: If __GNUC__ and linux defined, also define f2cFortran + (linux/gcc environment detection) + Apr 2002: If __CYGWIN__ is defined, also define f2cFortran + Nov 2002: If __APPLE__ defined, also define f2cfortran (for Mac OS-X) + + Nov 2003: If __INTEL_COMPILER or INTEL_COMPILER defined, also define + f2cFortran (KMCCARTY) + Dec 2005: If f2cFortran is defined, enforce REAL functions in FORTRAN + returning "double" in C. This was one of the items on + Burkhard's TODO list. (KMCCARTY) + Dec 2005: Modifications to support 8-byte integers. (MR) + USE AT YOUR OWN RISK! + Feb 2006 Added logic to typedef the symbol 'LONGLONG' to an appropriate + intrinsic 8-byte integer datatype (WDP) + Apr 2006: Modifications to support gfortran (and g77 with -fno-f2c flag) + since by default it returns "float" for FORTRAN REAL function. + (KMCCARTY) + *******/ + /* Avoid symbols already used by compilers and system *.h: __ - OSF1 zukal06 V3.0 347 alpha, cc -c -std1 cfortest.c - */ +*/ + +/* + Determine what 8-byte integer data type is available. + 'long long' is now supported by most compilers, but older + MS Visual C++ compilers before V7.0 use '__int64' instead. (WDP) +*/ + +#ifndef LONGLONG_TYPE /* this may have been previously defined */ +#if defined(_MSC_VER) /* Microsoft Visual C++ */ + +#if (_MSC_VER < 1300) /* versions earlier than V7.0 do not have 'long long' */ + typedef __int64 LONGLONG; +#else /* newer versions do support 'long long' */ + typedef long long LONGLONG; +#endif + +#else + typedef long long LONGLONG; +#endif + +#define LONGLONG_TYPE +#endif /* First prepare for the C compiler. */ @@ -75,7 +135,9 @@ /* Remainder of cfortran.h depends on the Fortran compiler. */ -#if defined(CLIPPERFortran) || defined(pgiFortran) +/* 11/29/2003 (KMCCARTY): add *INTEL_COMPILER symbols here */ +/* 04/05/2006 (KMCCARTY): add gFortran symbol here */ +#if defined(CLIPPERFortran) || defined(pgiFortran) || defined(__INTEL_COMPILER) || defined(INTEL_COMPILER) || defined(gFortran) #define f2cFortran #endif @@ -90,6 +152,27 @@ Support f2c or f77 with gcc, vcc with f2c. f77 with vcc works, missing link magic for f77 I/O.*/ #endif +/* 04/13/00 DM (CFITSIO): Add these lines for NT */ +/* with PowerStationFortran and and Visual C++ */ +#if defined(WIN32) && !defined(__CYGWIN__) +#define PowerStationFortran +#define VISUAL_CPLUSPLUS +#endif +#if defined(g77Fortran) /* 11/03/97 PDW (CFITSIO) */ +#define f2cFortran +#endif +#if defined(__CYGWIN__) /* 04/11/02 LEB (CFITSIO) */ +#define f2cFortran +#endif +#if defined(__GNUC__) && defined(linux) /* 06/21/00 PDW (CFITSIO) */ +#define f2cFortran +#endif +#if defined(macintosh) /* 11/1999 (CFITSIO) */ +#define f2cFortran +#endif +#if defined(__APPLE__) /* 11/2002 (CFITSIO) */ +#define f2cFortran +#endif #if defined(__hpux) /* 921107: Use __hpux instead of __hp9000s300 */ #define hpuxFortran /* Should also allow hp9000s7/800 use.*/ #endif @@ -131,6 +214,7 @@ #if !(defined(mipsFortran)||defined(DECFortran)||defined(vmsFortran)||defined(CONVEXFortran)||defined(PowerStationFortran)||defined(AbsoftUNIXFortran)||defined(AbsoftProFortran)||defined(SXFortran)) /* If your compiler barfs on ' #error', replace # with the trigraph for # */ #error "cfortran.h: Can't find your environment among:\ + - GNU gcc (g77) on Linux. \ - MIPS cc and f77 2.0. (e.g. Silicon Graphics, DECstations, ...) \ - IBM AIX XL C and FORTRAN Compiler/6000 Version 01.01.0000.0000 \ - VAX VMS CC 3.1 and FORTRAN 5.4. \ @@ -147,11 +231,14 @@ - VAXUltrix: vcc,cc or gcc with f2c. gcc or cc with f77. \ - f77 with vcc works; but missing link magic for f77 I/O. \ - NO fort. None of gcc, cc or vcc generate required names.\ - - f2c : Use #define f2cFortran, or cc -Df2cFortran \ + - f2c/g77: Use #define f2cFortran, or cc -Df2cFortran \ + - gfortran: Use #define gFortran, or cc -DgFortran \ + (also necessary for g77 with -fno-f2c option) \ - NAG f90: Use #define NAGf90Fortran, or cc -DNAGf90Fortran \ - Absoft UNIX F77: Use #define AbsoftUNIXFortran or cc -DAbsoftUNIXFortran \ - Absoft Pro Fortran: Use #define AbsoftProFortran \ - - Portland Group Fortran: Use #define pgiFortran" + - Portland Group Fortran: Use #define pgiFortran \ + - Intel Fortran: Use #define INTEL_COMPILER" /* Compiler must throw us out at this point! */ #endif #endif @@ -164,7 +251,8 @@ /* Throughout cfortran.h we use: UN = Uppercase Name. LN = Lowercase Name. */ -#if defined(f2cFortran) || defined(NAGf90Fortran) || defined(DECFortran) || defined(mipsFortran) || defined(apolloFortran) || defined(sunFortran) || defined(CONVEXFortran) || defined(SXFortran) || defined(extname) +/* "extname" changed to "appendus" below (CFITSIO) */ +#if defined(f2cFortran) || defined(NAGf90Fortran) || defined(DECFortran) || defined(mipsFortran) || defined(apolloFortran) || defined(sunFortran) || defined(CONVEXFortran) || defined(SXFortran) || defined(appendus) #define CFC_(UN,LN) _(LN,_) /* Lowercase FORTRAN symbols. */ #define orig_fcallsc(UN,LN) CFC_(UN,LN) #else @@ -268,7 +356,8 @@ #endif #ifndef apolloFortran -#define COMMON_BLOCK_DEF(DEFINITION, NAME) DEFINITION NAME +/* "extern" removed (CFITSIO) */ +#define COMMON_BLOCK_DEF(DEFINITION, NAME) /* extern */ DEFINITION NAME #define CF_NULL_PROTO #else /* HP doesn't understand #elif. */ /* Without ANSI prototyping, Apollo promotes float functions to double. */ @@ -512,7 +601,7 @@ *( (F).dsc$l_m[0]=(F).dsc$bounds[0].dsc$l_u=(ELEMNO) ), \ (F).dsc$a_a0 = ( (F).dsc$a_pointer=(C) ) - (F).dsc$w_length ,(F)) -#else +#endif /* PDW: 2/10/98 (CFITSIO) -- Let VMS see NUM_ELEMS definitions */ #define _NUM_ELEMS -1 #define _NUM_ELEM_ARG -2 #define NUM_ELEMS(A) A,_NUM_ELEMS @@ -538,9 +627,14 @@ if (i==(unsigned)num_term) break; else strv += elem_len-i; } +if (0) { /* to prevent not used warnings in gcc (added by ROOT) */ + c2fstrv(0, 0, 0, 0); f2cstrv(0, 0, 0, 0); kill_trailing(0, 0); + vkill_trailing(0, 0, 0, 0); num_elem(0, 0, 0, 0); +} return (int)num; } -#endif +/* #endif removed 2/10/98 (CFITSIO) */ + /*-------------------------------------------------------------------------*/ /* UTILITIES FOR C TO USE STRINGS IN FORTRAN COMMON BLOCKS */ @@ -1318,6 +1412,7 @@ #define INTVVVVVVV_cfTYPE int #define LOGICALVVVVVVV_cfTYPE int #define LONGVVVVVVV_cfTYPE long +#define LONGLONGVVVVVVV_cfTYPE LONGLONG /* added by MR December 2005 */ #define SHORTVVVVVVV_cfTYPE short #define PBYTE_cfTYPE INTEGER_BYTE #define PDOUBLE_cfTYPE DOUBLE_PRECISION @@ -1325,6 +1420,7 @@ #define PINT_cfTYPE int #define PLOGICAL_cfTYPE int #define PLONG_cfTYPE long +#define PLONGLONG_cfTYPE LONGLONG /* added by MR December 2005 */ #define PSHORT_cfTYPE short #define CFARGS0(A,T,V,W,X,Y,Z) _3(T,_cf,A) @@ -1342,6 +1438,7 @@ #define INT_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z) #define LOGICAL_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z) #define LONG_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z) +#define LONGLONG_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ #define SHORT_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z) #define PBYTE_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z) #define PDOUBLE_cfINT(N,A,B,X,Y,Z) _(CFARGS,N)(A,PINT,B,X,Y,Z,0) @@ -1349,6 +1446,7 @@ #define PINT_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z) #define PLOGICAL_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z) #define PLONG_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z) +#define PLONGLONG_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ #define PSHORT_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z) #define BYTEV_cfINT(N,A,B,X,Y,Z) DOUBLEV_cfINT(N,A,B,X,Y,Z) #define BYTEVV_cfINT(N,A,B,X,Y,Z) DOUBLEVV_cfINT(N,A,B,X,Y,Z) @@ -1392,6 +1490,13 @@ #define LONGVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVV_cfINT(N,A,B,X,Y,Z) #define LONGVVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVVV_cfINT(N,A,B,X,Y,Z) #define LONGVVVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVVVV_cfINT(N,A,B,X,Y,Z) +#define LONGLONGV_cfINT(N,A,B,X,Y,Z) DOUBLEV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ +#define LONGLONGVV_cfINT(N,A,B,X,Y,Z) DOUBLEVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ +#define LONGLONGVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ +#define LONGLONGVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ +#define LONGLONGVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ +#define LONGLONGVVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ +#define LONGLONGVVVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ #define SHORTV_cfINT(N,A,B,X,Y,Z) DOUBLEV_cfINT(N,A,B,X,Y,Z) #define SHORTVV_cfINT(N,A,B,X,Y,Z) DOUBLEVV_cfINT(N,A,B,X,Y,Z) #define SHORTVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVV_cfINT(N,A,B,X,Y,Z) @@ -1451,7 +1556,12 @@ #define BYTE_cfPU(A) CFextern INTEGER_BYTE FCALLSC_QUALIFIER A #define DOUBLE_cfPU(A) CFextern DOUBLE_PRECISION FCALLSC_QUALIFIER A #if ! (defined(FLOATFUNCTIONTYPE)&&defined(ASSIGNFLOAT)&&defined(RETURNFLOAT)) +#if defined (f2cFortran) && ! defined (gFortran) +/* f2c/g77 return double from FORTRAN REAL functions. (KMCCARTY, 2005/12/09) */ +#define FLOAT_cfPU(A) CFextern DOUBLE_PRECISION FCALLSC_QUALIFIER A +#else #define FLOAT_cfPU(A) CFextern FORTRAN_REAL FCALLSC_QUALIFIER A +#endif #else #define FLOAT_cfPU(A) CFextern FLOATFUNCTIONTYPE FCALLSC_QUALIFIER A #endif @@ -1589,6 +1699,7 @@ #define INT_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define LOGICAL_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,LOGICAL,A,B,C,D,E) #define LONG_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) +#define LONGLONG_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ #define SHORT_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define BYTEV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define BYTEVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) @@ -1632,6 +1743,13 @@ #define LONGVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define LONGVVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define LONGVVVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) +#define LONGLONGV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ +#define LONGLONGVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ +#define LONGLONGVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ +#define LONGLONGVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ +#define LONGLONGVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ +#define LONGLONGVVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ +#define LONGLONGVVVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ #define SHORTV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define SHORTVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define SHORTVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) @@ -1645,6 +1763,7 @@ #define PINT_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define PLOGICAL_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PLOGICAL,A,B,C,D,E) #define PLONG_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) +#define PLONGLONG_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ #define PSHORT_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define STRING_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,STRING,A,B,C,D,E) #define PSTRING_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PSTRING,A,B,C,D,E) @@ -1957,6 +2076,7 @@ #define INT_cfT(M,I,A,B,D) *A #define LOGICAL_cfT(M,I,A,B,D) F2CLOGICAL(*A) #define LONG_cfT(M,I,A,B,D) *A +#define LONGLONG_cfT(M,I,A,B,D) *A /* added by MR December 2005 */ #define SHORT_cfT(M,I,A,B,D) *A #define BYTEV_cfT(M,I,A,B,D) A #define DOUBLEV_cfT(M,I,A,B,D) A @@ -1964,6 +2084,7 @@ #define INTV_cfT(M,I,A,B,D) A #define LOGICALV_cfT(M,I,A,B,D) A #define LONGV_cfT(M,I,A,B,D) A +#define LONGLONGV_cfT(M,I,A,B,D) A /* added by MR December 2005 */ #define SHORTV_cfT(M,I,A,B,D) A #define BYTEVV_cfT(M,I,A,B,D) (void *)A /* We have to cast to void *,*/ #define BYTEVVV_cfT(M,I,A,B,D) (void *)A /* since we don't know the */ @@ -2001,6 +2122,12 @@ #define LONGVVVVV_cfT(M,I,A,B,D) (void *)A #define LONGVVVVVV_cfT(M,I,A,B,D) (void *)A #define LONGVVVVVVV_cfT(M,I,A,B,D) (void *)A +#define LONGLONGVV_cfT(M,I,A,B,D) (void *)A /* added by MR December 2005 */ +#define LONGLONGVVV_cfT(M,I,A,B,D) (void *)A /* added by MR December 2005 */ +#define LONGLONGVVVV_cfT(M,I,A,B,D) (void *)A /* added by MR December 2005 */ +#define LONGLONGVVVVV_cfT(M,I,A,B,D) (void *)A /* added by MR December 2005 */ +#define LONGLONGVVVVVV_cfT(M,I,A,B,D) (void *)A /* added by MR December 2005 */ +#define LONGLONGVVVVVVV_cfT(M,I,A,B,D) (void *)A /* added by MR December 2005 */ #define SHORTVV_cfT(M,I,A,B,D) (void *)A #define SHORTVVV_cfT(M,I,A,B,D) (void *)A #define SHORTVVVV_cfT(M,I,A,B,D) (void *)A @@ -2013,6 +2140,7 @@ #define PINT_cfT(M,I,A,B,D) A #define PLOGICAL_cfT(M,I,A,B,D) ((*A=F2CLOGICAL(*A)),A) #define PLONG_cfT(M,I,A,B,D) A +#define PLONGLONG_cfT(M,I,A,B,D) A /* added by MR December 2005 */ #define PSHORT_cfT(M,I,A,B,D) A #define PVOID_cfT(M,I,A,B,D) A #if defined(apolloFortran) || defined(hpuxFortran800) || defined(AbsoftUNIXFortran) @@ -2083,12 +2211,18 @@ #define INT_cfFZ(UN,LN) int FCALLSC_QUALIFIER fcallsc(UN,LN)( #define LOGICAL_cfFZ(UN,LN) int FCALLSC_QUALIFIER fcallsc(UN,LN)( #define LONG_cfFZ(UN,LN) long FCALLSC_QUALIFIER fcallsc(UN,LN)( +#define LONGLONG_cfFZ(UN,LN) LONGLONG FCALLSC_QUALIFIER fcallsc(UN,LN)( /* added by MR December 2005 */ #define SHORT_cfFZ(UN,LN) short FCALLSC_QUALIFIER fcallsc(UN,LN)( #define VOID_cfFZ(UN,LN) void FCALLSC_QUALIFIER fcallsc(UN,LN)( #ifndef __CF__KnR /* The void is req'd by the Apollo, to make this an ANSI function declaration. The Apollo promotes K&R float functions to double. */ -#define FLOAT_cfFZ(UN,LN) FORTRAN_REAL FCALLSC_QUALIFIER fcallsc(UN,LN)(void +#if defined (f2cFortran) && ! defined (gFortran) +/* f2c/g77 return double from FORTRAN REAL functions. (KMCCARTY, 2005/12/09) */ +#define FLOAT_cfFZ(UN,LN) DOUBLE_PRECISION FCALLSC_QUALIFIER fcallsc(UN,LN)(void +#else +#define FLOAT_cfFZ(UN,LN) FORTRAN_REAL FCALLSC_QUALIFIER fcallsc(UN,LN)(void +#endif #ifdef vmsFortran #define STRING_cfFZ(UN,LN) void FCALLSC_QUALIFIER fcallsc(UN,LN)(fstring *AS #else @@ -2104,7 +2238,12 @@ #endif #else #if ! (defined(FLOATFUNCTIONTYPE)&&defined(ASSIGNFLOAT)&&defined(RETURNFLOAT)) +#if defined (f2cFortran) && ! defined (gFortran) +/* f2c/g77 return double from FORTRAN REAL functions. (KMCCARTY, 2005/12/09) */ +#define FLOAT_cfFZ(UN,LN) DOUBLE_PRECISION FCALLSC_QUALIFIER fcallsc(UN,LN)( +#else #define FLOAT_cfFZ(UN,LN) FORTRAN_REAL FCALLSC_QUALIFIER fcallsc(UN,LN)( +#endif #else #define FLOAT_cfFZ(UN,LN) FLOATFUNCTIONTYPE FCALLSC_QUALIFIER fcallsc(UN,LN)( #endif @@ -2118,13 +2257,19 @@ #define BYTE_cfF(UN,LN) BYTE_cfFZ(UN,LN) #define DOUBLE_cfF(UN,LN) DOUBLE_cfFZ(UN,LN) #ifndef __CF_KnR +#if defined (f2cFortran) && ! defined (gFortran) +/* f2c/g77 return double from FORTRAN REAL functions. (KMCCARTY, 2005/12/09) */ +#define FLOAT_cfF(UN,LN) DOUBLE_PRECISION FCALLSC_QUALIFIER fcallsc(UN,LN)( +#else #define FLOAT_cfF(UN,LN) FORTRAN_REAL FCALLSC_QUALIFIER fcallsc(UN,LN)( +#endif #else #define FLOAT_cfF(UN,LN) FLOAT_cfFZ(UN,LN) #endif #define INT_cfF(UN,LN) INT_cfFZ(UN,LN) #define LOGICAL_cfF(UN,LN) LOGICAL_cfFZ(UN,LN) #define LONG_cfF(UN,LN) LONG_cfFZ(UN,LN) +#define LONGLONG_cfF(UN,LN) LONGLONG_cfFZ(UN,LN) /* added by MR December 2005 */ #define SHORT_cfF(UN,LN) SHORT_cfFZ(UN,LN) #define VOID_cfF(UN,LN) VOID_cfFZ(UN,LN) #define STRING_cfF(UN,LN) STRING_cfFZ(UN,LN), @@ -2187,6 +2332,7 @@ #define LOGICAL_cfI return C2FLOGICAL(A0); #endif #define LONG_cfI return A0; +#define LONGLONG_cfI return A0; /* added by MR December 2005 */ #define SHORT_cfI return A0; #define STRING_cfI return ; #define VOID_cfI return ; diff -urN 2005_orig/src/cfortran/hbook.h 2005_patched/src/cfortran/hbook.h --- 2005_orig/src/cfortran/hbook.h 1999-11-15 18:01:12.000000000 +0100 +++ 2005_patched/src/cfortran/hbook.h 2005-10-07 11:53:25.000000000 +0200 @@ -485,9 +485,15 @@ PROTOCCALLSFFUN3(FLOAT,HXY,hxy,INT,FLOAT,FLOAT) #define HXY(A2,A3,A4) CCALLSFFUN3(HXY,hxy,INT,FLOAT,FLOAT,A2,A3,A4) +#if defined(CERNLIB_QMLXIA64) +PROTOCCALLSFSUB11(HBALLOC,hballoc,INT,STRING,STRING,STRING,INT,INT,INT,INT,INTV,PLONG,PINT) +#define HBALLOC(IDN,CHDIR,VAR,BLOCK,ITYPE,ISIZE,IFIRST,NELEM,IBASE,IOFF,NUSE)\ + CCALLSFSUB11(HBALLOC,hballoc,INT,STRING,STRING,STRING,INT,INT,INT,INT,INTV,PLONG,PINT,IDN,CHDIR,VAR,BLOCK,ITYPE,ISIZE,IFIRST,NELEM,IBASE,IOFF,NUSE) +#else PROTOCCALLSFSUB11(HBALLOC,hballoc,INT,STRING,STRING,STRING,INT,INT,INT,INT,INTV,PINT,PINT) #define HBALLOC(IDN,CHDIR,VAR,BLOCK,ITYPE,ISIZE,IFIRST,NELEM,IBASE,IOFF,NUSE)\ CCALLSFSUB11(HBALLOC,hballoc,INT,STRING,STRING,STRING,INT,INT,INT,INT,INTV,PINT,PINT,IDN,CHDIR,VAR,BLOCK,ITYPE,ISIZE,IFIRST,NELEM,IBASE,IOFF,NUSE) +#endif PROTOCCALLSFSUB1(HBFREE,hbfree,INT) #define HBFREE(LUN) CCALLSFSUB1(HBFREE,hbfree,INT,LUN) @@ -501,12 +507,21 @@ PROTOCCALLSFSUB4(HF1N,hf1n,INT,FLOATV,FLOATV,INT) #define HF1N(ID,X,W,NEVT) CCALLSFSUB4(HF1N,hf1n,INT,FLOATV,FLOATV,INT,ID,X,W,NEVT) +#if defined(CERNLIB_QMLXIA64) +PROTOCCALLSFSUB6(HGNTBF,hgntbf,INT,ZTRINGV,LONGV,INT,INT,PINT) +/* fix the element length of VAR to 32 */ +#define hgntbf_ELEMS_2 ZTRINGV_ARGS(4) +#define hgntbf_ELEMLEN_2 ZTRINGV_NUM(32) +#define HGNTBF(IDN,VAR,IOFFST,NVAR,IDNEVT,IERROR)\ + CCALLSFSUB6(HGNTBF,hgntbf,INT,ZTRINGV,LONGV,INT,INT,PINT,IDN,VAR,IOFFST,NVAR,IDNEVT,IERROR) +#else PROTOCCALLSFSUB6(HGNTBF,hgntbf,INT,ZTRINGV,INTV,INT,INT,PINT) /* fix the element length of VAR to 32 */ #define hgntbf_ELEMS_2 ZTRINGV_ARGS(4) #define hgntbf_ELEMLEN_2 ZTRINGV_NUM(32) #define HGNTBF(IDN,VAR,IOFFST,NVAR,IDNEVT,IERROR)\ CCALLSFSUB6(HGNTBF,hgntbf,INT,ZTRINGV,INTV,INT,INT,PINT,IDN,VAR,IOFFST,NVAR,IDNEVT,IERROR) +#endif PROTOCCALLSFSUB1(HGTDIR,hgtdir,PSTRING) #define HGTDIR(CHDIR) CCALLSFSUB1(HGTDIR,hgtdir,PSTRING,CHDIR) diff -urN 2005_orig/src/config/Imake.cf 2005_patched/src/config/Imake.cf --- 2005_orig/src/config/Imake.cf 2004-10-05 17:54:40.000000000 +0200 +++ 2005_patched/src/config/Imake.cf 2006-06-15 10:59:55.000000000 +0200 @@ -386,6 +386,18 @@ #endif /* WIN32 */ #ifdef linux +#ifdef __GNUC__ +#if __GNUC__ == 4 +#undef __GNUC__ +#define GCC4 +#elif __GNUC__ == 3 +#undef __GNUC__ +#define GCC3 +#else +/* old linux compiler suite (default) */ +#undef __GNUC__ +#endif +#endif #ifdef PPC #define MacroIncludeFile #define MacroFile linux-pmac.cf @@ -399,6 +411,10 @@ #undef linux #undef _LP64 #define LinuxArchitecture +#ifdef __ia64__ +#define ItaniumArchitecture +#undef __ia64__ +#endif #else #define MacroIncludeFile #define MacroFile linux.cf diff -urN 2005_orig/src/config/Imake.rules 2005_patched/src/config/Imake.rules --- 2005_orig/src/config/Imake.rules 2005-04-18 17:39:25.000000000 +0200 +++ 2005_patched/src/config/Imake.rules 2005-12-06 17:16:23.000000000 +0100 @@ -2388,6 +2388,34 @@ RemoveFiles(core *.log data inputdata) #endif +/* TestTargetIgnore + * create a target to link and run tests. + * avoids a break of make if an error occurs + * + */ +#ifndef TestTargetIgnore +#define TestTargetIgnore(program,data,inputdata) \ @@\ +.PHONY: test @@\ + @@\ +ifeq ($(strip $(QUOTE) inputdata $(QUOTE)),$(QUOTE) $(QUOTE)) @@\ +test:: ProgramTargetName(program) data inputdata @@\ + @echo Testing $(PACKAGE_NAME) @@\ + @echo " ... using" program @@\ + -@Concat(.,$(PATHSEP))ProgramTargetName(program) @@\ + @@\ +else @@\ +test:: ProgramTargetName(program) data inputdata @@\ + @echo Testing $(PACKAGE_NAME) @@\ + @echo " ... using" program @@\ + -@Concat(.,$(PATHSEP))ProgramTargetName(program) < inputdata @@\ + @@\ +endif @@\ + @@\ +clean:: @@\ + RemoveFile(ProgramTargetName(program)) @@\ + RemoveFiles(core *.log data inputdata) +#endif + /* * TestSubdirs - generate rules to recursively build and run tests. */ diff -urN 2005_orig/src/config/linux-lp64.cf 2005_patched/src/config/linux-lp64.cf --- 2005_orig/src/config/linux-lp64.cf 2004-10-05 17:54:40.000000000 +0200 +++ 2005_patched/src/config/linux-lp64.cf 2006-06-16 15:02:45.000000000 +0200 @@ -119,9 +119,8 @@ # define CcCmd icc # define DefaultCCOptions # define OptimizedCDebugFlags -O - # define FortranDoesCpp NO -#define FortranCppCmd /usr/bin/cpp -traditional -C +# define FortranCppCmd /usr/bin/cpp -traditional -C # define FortranCmd ifort # define XargsCmd xargs # define FortranSaveFlags -save @@ -130,22 +129,44 @@ # define DefaultFCOptions # define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_QMLXIA64 -# else /* g77 */ +# else /* g77 default */ /* Start CERNLIB changes A.Waananen 15. Apr. 1996 */ /* Adapted to CERN style GF. 20-Sep-96 */ +/* Modified to include gcc4/gfortran HV. 16-Jun-2006 */ +/* The -fPIC compile option is reqired for ROOT's cernlib components on 64 bit architectures */ -# undef DefaultCCOptions -# undef OptimizedCDebugFlags -# undef StandardDefines +# undef DefaultCCOptions +# undef OptimizedCDebugFlags +# undef StandardDefines # define OptimizedCDebugFlags -O1 -fomit-frame-pointer - -#define f2cFortran YES -#define FortranCmd g77 -#define XargsCmd xargs -#define FortranSaveFlags /* */ /* Everything static !? */ -#define DefaultFCOptions -fno-automatic -fno-second-underscore -fugly-complex -#define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_QMLXIA64 +# define f2cFortran YES +# define XargsCmd xargs +# define FortranSaveFlags /* */ /* Everything static !? */ + + +# if defined(GCC3) +# define FortranCmd g77 +# define DefaultFCOptions -fno-automatic -fno-second-underscore -fugly-complex -fPIC +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_QMLXIA64 -DCERNLIB_GFORTRAN -DCERNLIB_GCC3 +# define CERNLIB_GCC3 +# define CERNLIB_GFORTRAN +# elif defined(GCC4) +# define FortranCmd gfortran +# define DefaultFCOptions -fno-automatic -fno-second-underscore -fPIC +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_QMLXIA64 -DCERNLIB_GFORTRAN -DCERNLIB_GCC4 +# define CERNLIB_GCC4 +# define CERNLIB_GFORTRAN +# else +# define FortranCmd g77 +# define DefaultFCOptions -fno-automatic -fno-second-underscore -fugly-complex -fPIC +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_QMLXIA64 +# endif + +/* The following is needed to switch off optimization for jetset */ +# ifdef ItaniumArchitecture +# define CERNLIB_ITANIUM +# endif # endif @@ -157,6 +178,7 @@ #define CERNLIB_QMGLIBC #define CERNLIB_QMLXIA64 + /* #define CERNLIB_SHIFT YES uncomment this to make the shift packlib */ #define X11Includes -I/usr/X11R6/include diff -urN 2005_orig/src/config/linux-lp64.cf.debug 2005_patched/src/config/linux-lp64.cf.debug --- 2005_orig/src/config/linux-lp64.cf.debug 1970-01-01 01:00:00.000000000 +0100 +++ 2005_patched/src/config/linux-lp64.cf.debug 2006-06-16 15:02:57.000000000 +0200 @@ -0,0 +1,194 @@ +/* $Id: linux-lp64.cf,v 1.1 2004/10/05 15:54:40 mclareni Exp $ + * + * $Log: linux-lp64.cf,v $ + * Revision 1.1 2004/10/05 15:54:40 mclareni + * Add configuration file linux-lp64 for Linux 64-bit pointer systems like AMD Opteron and Intel IA64. + * + */ + +#define OSName Linux +#define OSVendor /**/ +#define OSMajorVersion 2 +#define OSMinorVersion 4 +#define OSTeenyVersion 21 + +#undef unix /* GF. this is not needed anywhere */ + +#ifndef UseElfFormat +#define UseElfFormat NO +#endif +#define HasGcc2ForCplusplus YES +#define GccUsesGas YES +#define UseGas YES +#define GnuCpp YES +#define HasShadowPasswd NO +#ifndef HasLibCrypt +# define HasLibCrypt NO +#endif +#define HasPutenv YES +#define HasShm YES +#define HasSockets YES + +#define AvoidNullMakeCommand YES +#define StripInstalledPrograms NO +#define CompressAllFonts YES +#define Malloc0ReturnsNull YES +#define NeedConstPrototypes YES +#define NeedFunctionPrototypes YES +#define NeedNestedPrototypes YES +#define NeedVarargsPrototypes YES +#define NeedWidePrototypes NO + +#if UseElfFormat +#define CcCmd gcc -b i486-linuxelf +#define AsCmd /usr/i486-linuxelf/bin/as +#define LdCmd ld -m elf_i386 +#define AsmDefines -D__ELF__ +#define CplusplusCmd g++ -b i486-linuxelf +#else +#define CcCmd gcc +#define AsCmd as +#define LdCmd ld +#define AsmDefines -DUSE_GAS +#endif +#define CppCmd /lib/cpp +#define YaccCmd bison -y +#define LexCmd flex -l +#define LexLib -lfl +#define PreProcessCmd CcCmd -E +#define PostIncDir `CcCmd --print-libgcc-file-name | sed 's/libgcc.a/include/'` +#define LdCombineFlags -r +#define OptimizedCDebugFlags -O2 -m486 -fno-strength-reduce\ + -fomit-frame-pointer +#define StandardDefines -Dlinux -D__i386__ -D_POSIX_SOURCE \ + -D_BSD_SOURCE -D_GNU_SOURCE -DX_LOCALE +#define XawI18nDefines -DUSE_XWCHAR_STRING -DUSE_XMBTOWC +#define HasWChar32 YES +#define StandardCppDefines -traditional StandardDefines +#define ServerOSDefines XFree86ServerOSDefines -DDDXTIME +#define ExtensionOSDefines -DXTESTEXT1 +#define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines +#define ConnectionFlags -DUNIXCONN -DTCPCONN +#define InstUidFlags -s -m 4755 + +/* Some of these man page defaults are overriden in the above OS sections */ +#ifndef ManSuffix +# define ManSuffix 1x +#endif +#ifndef ManDir +# define ManDir $(MANSOURCEPATH)1 +#endif +#ifndef LibManSuffix +# define LibManSuffix 3x +#endif +#ifndef LibmanDir +# define LibmanDir $(MANSOURCEPATH)3 +#endif +#ifndef FileManSuffix +# define FileManSuffix 5x +#endif +#ifndef FileManDir +# define FileManDir $(MANSOURCEPATH)5 +#endif + +#include +/* #include */ + +#ifdef HasPgf77 +#define f2cFortran YES +#define FortranCmd pgf77 +/* +#define FortranDoesCpp NO +#define FortranCppCmd /lib/cpp -traditional -C +*/ +#define XargsCmd xargs +#define FortranSaveFlags /* */ /* Everything static !? */ +#define OptimisedFortranFlags -g -pc 64 -tp p6 +#define DefaultFCOptions -Msave -fpic -Kieee +#define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_QFPGF77 -DCERNLIB_QMLXIA64 + +#else + +# ifdef HasIntelifc +# undef CcCmd +# undef DefaultCCOptions +# undef OptimizedCDebugFlags +# undef StandardDefines +# undef NeedFunctionPrototypes +# undef NeedWidePrototypes +# define CcCmd icc +# define DefaultCCOptions +# define OptimizedCDebugFlags -O +# define FortranDoesCpp NO +# define FortranCppCmd /usr/bin/cpp -traditional -C +# define FortranCmd ifort +# define XargsCmd xargs +# define FortranSaveFlags -save +# define OptimisedFortranFlags -O2 +# define NoOpFortranDebugFlags -O0 +# define DefaultFCOptions +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_QMLXIA64 + +# else /* g77 default */ + +/* Start CERNLIB changes A.Waananen 15. Apr. 1996 */ +/* Adapted to CERN style GF. 20-Sep-96 */ +/* Modified to include gcc4/gfortran HV. 16-Jun-2006 */ +/* The -fPIC compile option is reqired for ROOT's cernlib components on 64 bit architectures */ + +# undef DefaultCCOptions +# undef OptimizedCDebugFlags +# undef StandardDefines +# define DefaultCCOptions -g +# define OptimizedCDebugFlags -g -O1 -fomit-frame-pointer +# define f2cFortran YES +# define XargsCmd xargs +# define FortranSaveFlags /* */ /* Everything static !? */ + + +# if defined(GCC3) +# define FortranCmd g77 +# define DefaultFCOptions -g -fno-automatic -fno-second-underscore -fugly-complex -fPIC +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_QMLXIA64 -DCERNLIB_GFORTRAN -DCERNLIB_GCC3 +# define CERNLIB_GCC3 +# define CERNLIB_GFORTRAN +# elif defined(GCC4) +# define FortranCmd gfortran +# define DefaultFCOptions -g -fno-automatic -fno-second-underscore -fPIC +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_QMLXIA64 -DCERNLIB_GFORTRAN -DCERNLIB_GCC4 +# define CERNLIB_GCC4 +# define CERNLIB_GFORTRAN +# else +# define FortranCmd g77 +# define DefaultFCOptions -g -fno-automatic -fno-second-underscore -fugly-complex -fPIC +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_QMLXIA64 +# endif + +/* The following is needed to switch off optimization for jetset */ +# ifdef ItaniumArchitecture +# define CERNLIB_ITANIUM +# endif + +# endif + +#endif + +#define CERNLIB_LINUX +#define CERNLIB_UNIX +#define CERNLIB_LNX +#define CERNLIB_QMGLIBC +#define CERNLIB_QMLXIA64 + + +/* #define CERNLIB_SHIFT YES uncomment this to make the shift packlib */ + +#define X11Includes -I/usr/X11R6/include +/* #define MotifIncludes -I/usr/local/include Cern Rh6.1 Lesstif */ + +/* + * Create a Make Variable to allow building with/out Motif + */ + + +/* End CERNLIB changes */ + diff -urN 2005_orig/src/config/linux.cf 2005_patched/src/config/linux.cf --- 2005_orig/src/config/linux.cf 2004-10-05 17:56:45.000000000 +0200 +++ 2005_patched/src/config/linux.cf 2006-06-16 15:08:01.000000000 +0200 @@ -216,22 +216,39 @@ variable=value @@\ endif @@\ -# else /* g77 */ + +# else /* gcc default */ /* Start CERNLIB changes A.Waananen 15. Apr. 1996 */ /* Adapted to CERN style GF. 20-Sep-96 */ +/* Modified to include gcc4/gfortran HV. 16-Jun-2006 */ -# undef DefaultCCOptions -# undef OptimizedCDebugFlags -# undef StandardDefines +# undef DefaultCCOptions +# undef OptimizedCDebugFlags +# undef StandardDefines # define OptimizedCDebugFlags -O1 -fomit-frame-pointer - -#define f2cFortran YES -#define FortranCmd g77 -#define XargsCmd xargs -#define FortranSaveFlags /* */ /* Everything static !? */ -#define DefaultFCOptions -fno-automatic -fno-second-underscore -fugly-complex -#define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC +# define f2cFortran YES +# define XargsCmd xargs +# define FortranSaveFlags /* */ /* Everything static !? */ + + +# if defined(GCC3) +# define FortranCmd g77 +# define DefaultFCOptions -fno-automatic -fno-second-underscore -fugly-complex +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_GFORTRAN -DCERNLIB_GCC3 +# define CERNLIB_GCC3 +# define CERNLIB_GFORTRAN +# elif defined(GCC4) +# define FortranCmd gfortran +# define DefaultFCOptions -fno-automatic -fno-second-underscore +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_GFORTRAN -DCERNLIB_GCC4 +# define CERNLIB_GCC4 +# define CERNLIB_GFORTRAN +# else +# define FortranCmd g77 +# define DefaultFCOptions -fno-automatic -fno-second-underscore -fugly-complex +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC +# endif # endif # endif diff -urN 2005_orig/src/config/linux.cf.debug 2005_patched/src/config/linux.cf.debug --- 2005_orig/src/config/linux.cf.debug 1970-01-01 01:00:00.000000000 +0100 +++ 2005_patched/src/config/linux.cf.debug 2006-06-16 15:12:47.000000000 +0200 @@ -0,0 +1,275 @@ +/* $Id: linux.cf,v 1.19 2004/10/05 15:56:45 mclareni Exp $ + * + * $Log: linux.cf,v $ + * Revision 1.19 2004/10/05 15:56:45 mclareni + * Update the Kernel levels and remove Make warnings about HasGcc. + * + * Revision 1.18 2003/06/26 13:25:35 mclareni + * Clean up the ifc options for ifc 7.0 on Redhat 73, adding Motif by default. + * Add the shift option as a comment so the default is still noshift. + * + * Revision 1.17 2002/07/08 10:27:28 mclareni + * Add #endif to complete new else condition. + * + * Revision 1.16 2002/07/05 14:20:37 mclareni + * Add compiler options for Intel IA32 ifc/icc 60 under HasIntelifc + * + * Revision 1.15 2002/04/24 16:37:41 mclareni + * Make OpenMotif includes in /usr/X11R6/include the default + * + * Revision 1.14 2001/09/14 10:05:01 mclareni + * Remove most of the old gcc compiler options. The problems on 2.4 kernels seem + * to be caused by -D_GNU_SOURCE. + * + * Revision 1.12 2000/08/11 14:43:40 mclareni + * New set of options for PGI pgf77, mostly de-optimised + * + * Revision 1.11 2000/01/14 15:44:36 mclareni + * Add Lesstif includes from /usr/local/include + * + * Revision 1.10 1999/05/25 08:58:14 cernsoft + * Remove code to build with/without Motif depending on environment variable + * + * Revision 1.9 1998/08/25 12:15:10 mclareni + * Add QMGLIBC flag + * + * Revision 1.8 1998/02/10 10:48:59 mclareni + * To compile herwig59 and mathlib tests need -fugly-complex option to allow REAL(DOUBLE COMPLEX arg) + * + * Revision 1.7 1998/01/15 14:44:01 mclareni + * Prevent adding 2 underscores, mainly for Comis + * + * Revision 1.6 1997/12/15 16:20:44 mclareni + * Changes for the Portland Group f77 compiler, inside ifdef HasPgf77 + * + * Revision 1.5 1997/07/04 17:00:28 mclareni + * The gcc default for backslash is required for Cernlib + * + * Revision 1.4 1997/07/04 16:31:44 mclareni + * There is an official shift version for Linux + * + * Revision 1.3 1996/12/16 15:12:05 cernlib + * By default inhibit Motif on Linux; can be changed via environment + * + * Revision 1.2 1996/11/13 13:23:15 cernlib + * Add cernlib options for fortran etc.. + * + * Revision 1.1.1.1 1995/12/20 15:26:45 cernlib + * X11R6 config files unmodified + * + * + */ +XCOMM platform: $XConsortium: linux.cf,v 1.11 95/01/23 18:32:03 kaleb Exp $ + +#define OSName Linux +#define OSVendor /**/ +#define OSMajorVersion 2 +#define OSMinorVersion 4 +#define OSTeenyVersion 2020 + +#undef unix /* GF. this is not needed anywhere */ + +#ifndef UseElfFormat +#define UseElfFormat NO +#endif +#define HasGcc2ForCplusplus YES +#define GccUsesGas YES +#define UseGas YES +#define GnuCpp YES +#define HasShadowPasswd NO +#ifndef HasLibCrypt +# define HasLibCrypt NO +#endif +#define HasPutenv YES +#define HasShm YES +#define HasSockets YES + +#define AvoidNullMakeCommand YES +#define StripInstalledPrograms NO +#define CompressAllFonts YES +#define Malloc0ReturnsNull YES +#define NeedConstPrototypes YES +#define NeedFunctionPrototypes YES +#define NeedNestedPrototypes YES +#define NeedVarargsPrototypes YES +#define NeedWidePrototypes NO + +#if UseElfFormat +#define CcCmd gcc -b i486-linuxelf +#define AsCmd /usr/i486-linuxelf/bin/as +#define LdCmd ld -m elf_i386 +#define AsmDefines -D__ELF__ +#define CplusplusCmd g++ -b i486-linuxelf +#else +#define CcCmd gcc +#define AsCmd as +#define LdCmd ld +#define AsmDefines -DUSE_GAS +#endif +#define CppCmd /lib/cpp +#define YaccCmd bison -y +#define LexCmd flex -l +#define LexLib -lfl +#define PreProcessCmd CcCmd -E +#define PostIncDir `CcCmd --print-libgcc-file-name | sed 's/libgcc.a/include/'` +#define LdCombineFlags -r +#define OptimizedCDebugFlags -O2 -m486 -fno-strength-reduce\ + -fomit-frame-pointer +#define StandardDefines -Dlinux -D__i386__ -D_POSIX_SOURCE \ + -D_BSD_SOURCE -D_GNU_SOURCE -DX_LOCALE +#define XawI18nDefines -DUSE_XWCHAR_STRING -DUSE_XMBTOWC +#define HasWChar32 YES +#define StandardCppDefines -traditional StandardDefines +#define ServerOSDefines XFree86ServerOSDefines -DDDXTIME +#define ExtensionOSDefines -DXTESTEXT1 +#define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines +#define ConnectionFlags -DUNIXCONN -DTCPCONN +#define InstUidFlags -s -m 4755 + +/* Some of these man page defaults are overriden in the above OS sections */ +#ifndef ManSuffix +# define ManSuffix 1x +#endif +#ifndef ManDir +# define ManDir $(MANSOURCEPATH)1 +#endif +#ifndef LibManSuffix +# define LibManSuffix 3x +#endif +#ifndef LibmanDir +# define LibmanDir $(MANSOURCEPATH)3 +#endif +#ifndef FileManSuffix +# define FileManSuffix 5x +#endif +#ifndef FileManDir +# define FileManDir $(MANSOURCEPATH)5 +#endif + +#include +/* #include */ + +#ifdef HasPgf77 +#define f2cFortran YES +#define FortranCmd pgf77 +/* +#define FortranDoesCpp NO +#define FortranCppCmd /lib/cpp -traditional -C +*/ +#define XargsCmd xargs +#define FortranSaveFlags /* */ /* Everything static !? */ +#define OptimisedFortranFlags -g -pc 64 -tp p6 +#define DefaultFCOptions -Msave -fpic -Kieee +#define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_QFPGF77 + +#else + +# ifdef HasIntelifc +# undef CcCmd +# undef DefaultCCOptions +# undef OptimizedCDebugFlags +# undef StandardDefines +# undef NeedFunctionPrototypes +# undef NeedWidePrototypes +# define CcCmd icc +# define DefaultCCOptions +# define OptimizedCDebugFlags -O + +# define FortranDoesCpp NO +#define FortranCppCmd /usr/bin/cpp -traditional -C +# define FortranCmd ifc +# define XargsCmd xargs +# define FortranSaveFlags -save +# define OptimisedFortranFlags -O -mp1 -fp_port +# define NoOpFortranDebugFlags -O0 +# define DefaultFCOptions +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC + +#else + +# ifdef HasIntelefc +# undef CcCmd +# undef DefaultCCOptions +# undef OptimizedCDebugFlags +# undef StandardDefines +# undef NeedFunctionPrototypes +# undef NeedWidePrototypes +# define CcCmd ecc +# define DefaultCCOptions -KPIC +# define OptimizedCDebugFlags -O + +# define FortranDoesCpp NO +#define FortranCppCmd /lib/cpp -traditional -C +# define FortranCmd efc +# define XargsCmd xargs +# define FortranSaveFlags -save +# define OptimisedFortranFlags -O +# define DefaultFCOptions -KPIC +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC +# define CERNLIB_SHIFT NO +/* + * Create a Make Variable to allow building with/out Motif + */ +#undef MotifDependantMakeVar +#define MotifDependantMakeVar(variable,value) @@\ +ifneq ($(strip $(HAVE_MOTIF)),) @@\ + variable=value @@\ +endif @@\ + + +# else /* gcc default */ + +/* Start CERNLIB changes A.Waananen 15. Apr. 1996 */ +/* Adapted to CERN style GF. 20-Sep-96 */ +/* Modified to include gcc4/gfortran HV. 16-Jun-2006 */ + +# undef DefaultCCOptions +# undef OptimizedCDebugFlags +# undef StandardDefines +# define DefaultCCOptions -g +# define OptimizedCDebugFlags -g -O1 -fomit-frame-pointer +# define f2cFortran YES +# define XargsCmd xargs +# define FortranSaveFlags /* */ /* Everything static !? */ + + +# if defined(GCC3) +# define FortranCmd g77 +# define DefaultFCOptions -g -fno-automatic -fno-second-underscore -fugly-complex +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_GFORTRAN -DCERNLIB_GCC3 +# define CERNLIB_GCC3 +# define CERNLIB_GFORTRAN +# elif defined(GCC4) +# define FortranCmd gfortran +# define DefaultFCOptions -g -fno-automatic -fno-second-underscore +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -DCERNLIB_GFORTRAN -DCERNLIB_GCC4 +# define CERNLIB_GCC4 +# define CERNLIB_GFORTRAN +# else +# define FortranCmd g77 +# define DefaultFCOptions -g -fno-automatic -fno-second-underscore -fugly-complex +# define CernlibSystem -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC +# endif + +# endif +# endif + +#endif + +#define CERNLIB_LINUX +#define CERNLIB_UNIX +#define CERNLIB_LNX +#define CERNLIB_QMGLIBC + +/* # define CERNLIB_SHIFT YES uncomment this to make the shift packlib */ + +#define X11Includes -I/usr/X11R6/include +/* #define MotifIncludes -I/usr/local/include Cern Rh6.1 Lesstif */ + +/* + * Create a Make Variable to allow building with/out Motif + */ + + +/* End CERNLIB changes */ + diff -urN 2005_orig/src/graflib/dzdoc/dzdkern/dzdcod.F 2005_patched/src/graflib/dzdoc/dzdkern/dzdcod.F --- 2005_orig/src/graflib/dzdoc/dzdkern/dzdcod.F 1996-03-04 17:12:56.000000000 +0100 +++ 2005_patched/src/graflib/dzdoc/dzdkern/dzdcod.F 2006-03-31 11:56:56.000000000 +0200 @@ -90,7 +90,9 @@ CALL DZDPLN(LUN,' ',99) ELSE * do MZBOOKS - CALL DZDCO1(CHBANK,3,CHOINT,' ',LUN) +* bad Fotran convention, add dummy IFI,ILI arguments in this case +ccc CALL DZDCO1(CHBANK,3,CHOINT,' ',LUN) + CALL DZDCO1(CHBANK,3,CHOINT,' ',LUN,IFI,ILI) * finish line with bookings CALL DZDPLN(LUN,' ',99) ENDIF diff -urN 2005_orig/src/graflib/higz/higzcc/gifencode.c 2005_patched/src/graflib/higz/higzcc/gifencode.c --- 2005_orig/src/graflib/higz/higzcc/gifencode.c 1996-02-14 14:10:25.000000000 +0100 +++ 2005_patched/src/graflib/higz/higzcc/gifencode.c 2006-04-10 18:06:40.000000000 +0200 @@ -12,6 +12,7 @@ /*-- Author : E.Chernyaev 19/01/94*/ #include #include +#include #ifdef __STDC__ #define ARGS(alist) alist diff -urN 2005_orig/src/graflib/higz/higzcc/imgpickpalette.c 2005_patched/src/graflib/higz/higzcc/imgpickpalette.c --- 2005_orig/src/graflib/higz/higzcc/imgpickpalette.c 1998-11-13 14:19:53.000000000 +0100 +++ 2005_patched/src/graflib/higz/higzcc/imgpickpalette.c 2006-03-31 17:43:21.000000000 +0200 @@ -30,6 +30,7 @@ #if defined(CERNLIB_GIF) #include #include +#include void CollectImageColors(unsigned long, unsigned long **, int *, int *); int FindColor(unsigned long, unsigned long *, int); diff -urN 2005_orig/src/graflib/higz/higzcc/rotated.c 2005_patched/src/graflib/higz/higzcc/rotated.c --- 2005_orig/src/graflib/higz/higzcc/rotated.c 1998-01-30 16:22:04.000000000 +0100 +++ 2005_patched/src/graflib/higz/higzcc/rotated.c 2006-04-11 11:02:19.000000000 +0200 @@ -35,7 +35,9 @@ #include #include #include +#include #include +#include /* ************************************************************************ * * @@ -482,10 +484,10 @@ /* get a rotated bitmap */ item=XRotRetrieveFromCache(dpy, font, angle, text, align); - if(item==NULL) return (int)NULL; + if(item==NULL) return 0; /* this gc has similar properties to the user's gc */ - my_gc=XCreateGC(dpy, drawable, NULL, 0); + my_gc=XCreateGC(dpy, drawable, (unsigned long)NULL, 0); XCopyGC(dpy, gc, GCForeground|GCBackground|GCFunction|GCPlaneMask, my_gc); @@ -549,7 +551,7 @@ empty_stipple=XCreatePixmap(dpy, drawable, 1, 1, 1); - depth_one_gc=XCreateGC(dpy, empty_stipple, NULL, 0); + depth_one_gc=XCreateGC(dpy, empty_stipple, (unsigned long)NULL, 0); XSetForeground(dpy, depth_one_gc, 0); XFillRectangle(dpy, empty_stipple, depth_one_gc, 0, 0, 2, 2); @@ -605,7 +607,7 @@ item->cols_out, item->rows_out, 1); /* create a GC */ - depth_one_gc=XCreateGC(dpy, new_bitmap, NULL, 0); + depth_one_gc=XCreateGC(dpy, new_bitmap, (unsigned long)NULL, 0); XSetForeground(dpy, depth_one_gc, 1); XSetBackground(dpy, depth_one_gc, 0); @@ -705,7 +707,7 @@ DEBUG_PRINT1("**\nHorizontal text.\n"); /* this gc has similar properties to the user's gc (including stipple) */ - my_gc=XCreateGC(dpy, drawable, NULL, 0); + my_gc=XCreateGC(dpy, drawable, (unsigned long)NULL, 0); XCopyGC(dpy, gc, GCForeground|GCBackground|GCFunction|GCStipple|GCFillStyle| GCTileStipXOrigin|GCTileStipYOrigin|GCPlaneMask, my_gc); @@ -918,7 +920,7 @@ item->cols_out, item->rows_out, 1); /* depth one gc */ - depth_one_gc=XCreateGC(dpy, item->bitmap, NULL, 0); + depth_one_gc=XCreateGC(dpy, item->bitmap, (unsigned long)NULL, 0); XSetBackground(dpy, depth_one_gc, 0); XSetForeground(dpy, depth_one_gc, 1); @@ -1032,7 +1034,7 @@ item->cols_in, item->rows_in, 1); /* create a GC for the bitmap */ - font_gc=XCreateGC(dpy, canvas, NULL, 0); + font_gc=XCreateGC(dpy, canvas, (unsigned long)NULL, 0); XSetBackground(dpy, font_gc, 0); XSetFont(dpy, font_gc, font->fid); diff -urN 2005_orig/src/graflib/higz/higzcc/x11int.c 2005_patched/src/graflib/higz/higzcc/x11int.c --- 2005_orig/src/graflib/higz/higzcc/x11int.c 2000-07-08 08:19:30.000000000 +0200 +++ 2005_patched/src/graflib/higz/higzcc/x11int.c 2006-04-11 11:05:23.000000000 +0200 @@ -1172,8 +1172,8 @@ */ cws->drawing = cws->window; cws->buffer = (Drawable)NULL; - cws->double_buffer = (int)NULL; - cws->clip = (int)NULL; + cws->double_buffer = 0; + cws->clip = 0; cws->width = wval; cws->height = hval; @@ -1509,7 +1509,7 @@ void ixclsds() { - int Motif = (int)NULL; + int Motif = 0; int i; if (display == NULL) return; @@ -1529,12 +1529,12 @@ for ( i = 0; i < MAXCOL; i++ ) { if( colors[i].defined == 1 ) { colors[i].defined = 0; - XFreeColors(display, colormap, &colors[i].pixel, 1, (int)NULL); + XFreeColors(display, colormap, &colors[i].pixel, 1, (unsigned long)NULL); } } #if !defined(CERNLIB_TK_WINDOWS) - if(display != NULL && Motif == (int)NULL) XCloseDisplay( display ); + if(display != NULL && Motif == 0) XCloseDisplay( display ); #endif display = NULL; cws = NULL; @@ -1567,7 +1567,7 @@ XFlush( display ); - cws->open = (int)NULL; + cws->open = 0; for( wid = 0; wid < MAXWN; wid++ ) if( windows[wid].open ) { @@ -1886,7 +1886,7 @@ int i; tws = &windows[*wid]; - tws->clip = (int)NULL; + tws->clip = 0; for( i = 0; i < MAXGC; i++ ) XSetClipMask( display, gclist[i], None ); @@ -1916,9 +1916,9 @@ xcol.flags = DoRed || DoGreen || DoBlue; if( colors[*cindex].defined == 1 ) { colors[*cindex].defined = 0; - XFreeColors(display, colormap, &colors[*cindex].pixel, 1, (int)NULL); + XFreeColors(display, colormap, &colors[*cindex].pixel, 1, 0); } - if( XAllocColor( display, colormap, &xcol ) != (Status)NULL ) { + if( XAllocColor( display, colormap, &xcol ) != (Status)0 ) { colors[*cindex].defined = 1; colors[*cindex].pixel = xcol.pixel; colors[*cindex].red = *r; diff -urN 2005_orig/src/include/cfortran/cfortran.doc 2005_patched/src/include/cfortran/cfortran.doc --- 2005_orig/src/include/cfortran/cfortran.doc 1998-12-11 18:17:09.000000000 +0100 +++ 2005_patched/src/include/cfortran/cfortran.doc 2006-05-08 11:08:30.000000000 +0200 @@ -195,13 +195,13 @@ HP9000> f77 -c cfortex.f HP9000> CC -o cfortest cfortest.c cfortex.o -lI77 -lF77 && cfortest -HP0000> # If old-style f77 +800 compiled objects are required: +HP9000> # If old-style f77 +800 compiled objects are required: HP9000> # #define hpuxFortran800 HP9000> cc -c -Aa -DhpuxFortran800 cfortest.c HP9000> f77 +800 -o cfortest cfortest.o cfortex.f f2c> # In the following, 'CC' is any C compiler. -f2c> f2c -R cfortex.f +f2c> f2c cfortex.f f2c> CC -o cfortest -Df2cFortran cfortest.c cfortex.c -lf2c && cfortest Portland Group $ # Presumably other C compilers also work. @@ -533,9 +533,10 @@ FORTRAN_REAL thus corresponds to FORTRAN's REAL on all machines, including t3e. -o f2c - f2c, by default promotes REAL functions to double. cfortran.h does not (yet) -support this, so the f2c -R option must be used to turn this promotion off. +o f2c / g77 + f2c and g77 by default promote REAL functions to double. As of December 9, +2005, the Debian package of cfortran supports this behavior, so the f2c -R +option must *NOT* be used to turn this promotion off. o f2c [Thanks to Dario Autiero for pointing out the following.] @@ -573,6 +574,11 @@ #endif /* Last three lines are a work-around for the strange f2c naming feature. */ +o gfortran + gfortran behaves similarly to f2c and g77, EXCEPT that it does NOT by default +promote REAL functions to double. Therefore you should use -DgFortran instead +of -Dg77Fortran or -Df2cFortran to let cfortran.h know about this difference. + o NAG f90 The Fortran 77 subset of Fortran 90 is supported. Extending cfortran.h to interface C with all of Fortran 90 has not yet been examined. @@ -643,7 +649,7 @@ [For an ancient math.h on a 386 or sparc, get similar from a new math.h.] #ifdef mc68000 /* 5 lines Copyright (c) 1988 by Sun Microsystems, Inc. */ #define FLOATFUNCTIONTYPE int - #define RETURNFLOAT(x) return (*(int *)(&(x))) + #define RETURNFLOAT(x) return (*(int *)(&(x))) #define ASSIGNFLOAT(x,y) *(int *)(&x) = y #endif @@ -874,7 +880,7 @@ works everywhere and would seem to be an obvious choice. -3. +3. cfortran.h encourages the exact specification of the type and dimension of array parameters because it allows the C compiler to detect errors in the @@ -1835,7 +1841,7 @@ Unlike all other C compilers supported by cfortran.h, 'gcc -traditional' promotes to double all functions returning float -as demonstrated bu the following example. +as demonstrated by the following example. /* m.c */ #include @@ -2017,8 +2023,9 @@ THIS PACKAGE, I.E. CFORTRAN.H, THIS DOCUMENT, AND THE CFORTRAN.H EXAMPLE PROGRAMS ARE PROPERTY OF THE AUTHOR WHO RESERVES ALL RIGHTS. THIS PACKAGE AND -THE CODE IT PRODUCES MAY BE FREELY DISTRIBUTED WITHOUT FEES, SUBJECT TO THE -FOLLOWING RESTRICTIONS: +THE CODE IT PRODUCES MAY BE FREELY DISTRIBUTED WITHOUT FEES, SUBJECT +(AT YOUR CHOICE) EITHER TO THE GNU LIBRARY GENERAL PUBLIC LICENSE +AT http://www.gnu.org/licenses/lgpl.html OR TO THE FOLLOWING RESTRICTIONS: - YOU MUST ACCOMPANY ANY COPIES OR DISTRIBUTION WITH THIS (UNALTERED) NOTICE. - YOU MAY NOT RECEIVE MONEY FOR THE DISTRIBUTION OR FOR ITS MEDIA (E.G. TAPE, DISK, COMPUTER, PAPER.) diff -urN 2005_orig/src/include/cfortran/cfortran.h 2005_patched/src/include/cfortran/cfortran.h --- 2005_orig/src/include/cfortran/cfortran.h 2002-09-11 19:05:51.000000000 +0200 +++ 2005_patched/src/include/cfortran/cfortran.h 2006-05-08 11:08:30.000000000 +0200 @@ -1,4 +1,4 @@ -/* cfortran.h 4.4_cernlib2002 */ +/* cfortran.h 4.4 */ /* http://www-zeus.desy.de/~burow/cfortran/ */ /* Burkhard Burow burow@desy.de 1990 - 2002. */ @@ -11,11 +11,71 @@ MODIFYING, COPYING AND DISTRIBUTING THE CFORTRAN.H PACKAGE. */ +/* The following modifications were made by the authors of CFITSIO or by me. + * They are flagged below with CFITSIO, the author's initials, or KMCCARTY. + * PDW = Peter Wilson + * DM = Doug Mink + * LEB = Lee E Brotzman + * MR = Martin Reinecke + * WDP = William D Pence + * -- Kevin McCarty, for Debian (19 Dec. 2005) */ + +/******* + Modifications: + Oct 1997: Changed symbol name extname to appendus (PDW/HSTX) + (Conflicted with a common variable name in FTOOLS) + Nov 1997: If g77Fortran defined, also define f2cFortran (PDW/HSTX) + Feb 1998: Let VMS see the NUM_ELEMS code. Lets programs treat + single strings as vectors with single elements + Nov 1999: If macintoxh defined, also define f2cfortran (for Mac OS-X) + Apr 2000: If WIN32 defined, also define PowerStationFortran and + VISUAL_CPLUSPLUS (Visual C++) + Jun 2000: If __GNUC__ and linux defined, also define f2cFortran + (linux/gcc environment detection) + Apr 2002: If __CYGWIN__ is defined, also define f2cFortran + Nov 2002: If __APPLE__ defined, also define f2cfortran (for Mac OS-X) + + Nov 2003: If __INTEL_COMPILER or INTEL_COMPILER defined, also define + f2cFortran (KMCCARTY) + Dec 2005: If f2cFortran is defined, enforce REAL functions in FORTRAN + returning "double" in C. This was one of the items on + Burkhard's TODO list. (KMCCARTY) + Dec 2005: Modifications to support 8-byte integers. (MR) + USE AT YOUR OWN RISK! + Feb 2006 Added logic to typedef the symbol 'LONGLONG' to an appropriate + intrinsic 8-byte integer datatype (WDP) + Apr 2006: Modifications to support gfortran (and g77 with -fno-f2c flag) + since by default it returns "float" for FORTRAN REAL function. + (KMCCARTY) + *******/ + /* Avoid symbols already used by compilers and system *.h: __ - OSF1 zukal06 V3.0 347 alpha, cc -c -std1 cfortest.c - */ +*/ + +/* + Determine what 8-byte integer data type is available. + 'long long' is now supported by most compilers, but older + MS Visual C++ compilers before V7.0 use '__int64' instead. (WDP) +*/ + +#ifndef LONGLONG_TYPE /* this may have been previously defined */ +#if defined(_MSC_VER) /* Microsoft Visual C++ */ + +#if (_MSC_VER < 1300) /* versions earlier than V7.0 do not have 'long long' */ + typedef __int64 LONGLONG; +#else /* newer versions do support 'long long' */ + typedef long long LONGLONG; +#endif + +#else + typedef long long LONGLONG; +#endif + +#define LONGLONG_TYPE +#endif /* First prepare for the C compiler. */ @@ -75,7 +135,9 @@ /* Remainder of cfortran.h depends on the Fortran compiler. */ -#if defined(CLIPPERFortran) || defined(pgiFortran) +/* 11/29/2003 (KMCCARTY): add *INTEL_COMPILER symbols here */ +/* 04/05/2006 (KMCCARTY): add gFortran symbol here */ +#if defined(CLIPPERFortran) || defined(pgiFortran) || defined(__INTEL_COMPILER) || defined(INTEL_COMPILER) || defined(gFortran) #define f2cFortran #endif @@ -90,6 +152,27 @@ Support f2c or f77 with gcc, vcc with f2c. f77 with vcc works, missing link magic for f77 I/O.*/ #endif +/* 04/13/00 DM (CFITSIO): Add these lines for NT */ +/* with PowerStationFortran and and Visual C++ */ +#if defined(WIN32) && !defined(__CYGWIN__) +#define PowerStationFortran +#define VISUAL_CPLUSPLUS +#endif +#if defined(g77Fortran) /* 11/03/97 PDW (CFITSIO) */ +#define f2cFortran +#endif +#if defined(__CYGWIN__) /* 04/11/02 LEB (CFITSIO) */ +#define f2cFortran +#endif +#if defined(__GNUC__) && defined(linux) /* 06/21/00 PDW (CFITSIO) */ +#define f2cFortran +#endif +#if defined(macintosh) /* 11/1999 (CFITSIO) */ +#define f2cFortran +#endif +#if defined(__APPLE__) /* 11/2002 (CFITSIO) */ +#define f2cFortran +#endif #if defined(__hpux) /* 921107: Use __hpux instead of __hp9000s300 */ #define hpuxFortran /* Should also allow hp9000s7/800 use.*/ #endif @@ -131,6 +214,7 @@ #if !(defined(mipsFortran)||defined(DECFortran)||defined(vmsFortran)||defined(CONVEXFortran)||defined(PowerStationFortran)||defined(AbsoftUNIXFortran)||defined(AbsoftProFortran)||defined(SXFortran)) /* If your compiler barfs on ' #error', replace # with the trigraph for # */ #error "cfortran.h: Can't find your environment among:\ + - GNU gcc (g77) on Linux. \ - MIPS cc and f77 2.0. (e.g. Silicon Graphics, DECstations, ...) \ - IBM AIX XL C and FORTRAN Compiler/6000 Version 01.01.0000.0000 \ - VAX VMS CC 3.1 and FORTRAN 5.4. \ @@ -147,11 +231,14 @@ - VAXUltrix: vcc,cc or gcc with f2c. gcc or cc with f77. \ - f77 with vcc works; but missing link magic for f77 I/O. \ - NO fort. None of gcc, cc or vcc generate required names.\ - - f2c : Use #define f2cFortran, or cc -Df2cFortran \ + - f2c/g77: Use #define f2cFortran, or cc -Df2cFortran \ + - gfortran: Use #define gFortran, or cc -DgFortran \ + (also necessary for g77 with -fno-f2c option) \ - NAG f90: Use #define NAGf90Fortran, or cc -DNAGf90Fortran \ - Absoft UNIX F77: Use #define AbsoftUNIXFortran or cc -DAbsoftUNIXFortran \ - Absoft Pro Fortran: Use #define AbsoftProFortran \ - - Portland Group Fortran: Use #define pgiFortran" + - Portland Group Fortran: Use #define pgiFortran \ + - Intel Fortran: Use #define INTEL_COMPILER" /* Compiler must throw us out at this point! */ #endif #endif @@ -164,7 +251,8 @@ /* Throughout cfortran.h we use: UN = Uppercase Name. LN = Lowercase Name. */ -#if defined(f2cFortran) || defined(NAGf90Fortran) || defined(DECFortran) || defined(mipsFortran) || defined(apolloFortran) || defined(sunFortran) || defined(CONVEXFortran) || defined(SXFortran) || defined(extname) +/* "extname" changed to "appendus" below (CFITSIO) */ +#if defined(f2cFortran) || defined(NAGf90Fortran) || defined(DECFortran) || defined(mipsFortran) || defined(apolloFortran) || defined(sunFortran) || defined(CONVEXFortran) || defined(SXFortran) || defined(appendus) #define CFC_(UN,LN) _(LN,_) /* Lowercase FORTRAN symbols. */ #define orig_fcallsc(UN,LN) CFC_(UN,LN) #else @@ -268,7 +356,8 @@ #endif #ifndef apolloFortran -#define COMMON_BLOCK_DEF(DEFINITION, NAME) DEFINITION NAME +/* "extern" removed (CFITSIO) */ +#define COMMON_BLOCK_DEF(DEFINITION, NAME) /* extern */ DEFINITION NAME #define CF_NULL_PROTO #else /* HP doesn't understand #elif. */ /* Without ANSI prototyping, Apollo promotes float functions to double. */ @@ -512,7 +601,7 @@ *( (F).dsc$l_m[0]=(F).dsc$bounds[0].dsc$l_u=(ELEMNO) ), \ (F).dsc$a_a0 = ( (F).dsc$a_pointer=(C) ) - (F).dsc$w_length ,(F)) -#else +#endif /* PDW: 2/10/98 (CFITSIO) -- Let VMS see NUM_ELEMS definitions */ #define _NUM_ELEMS -1 #define _NUM_ELEM_ARG -2 #define NUM_ELEMS(A) A,_NUM_ELEMS @@ -538,9 +627,14 @@ if (i==(unsigned)num_term) break; else strv += elem_len-i; } +if (0) { /* to prevent not used warnings in gcc (added by ROOT) */ + c2fstrv(0, 0, 0, 0); f2cstrv(0, 0, 0, 0); kill_trailing(0, 0); + vkill_trailing(0, 0, 0, 0); num_elem(0, 0, 0, 0); +} return (int)num; } -#endif +/* #endif removed 2/10/98 (CFITSIO) */ + /*-------------------------------------------------------------------------*/ /* UTILITIES FOR C TO USE STRINGS IN FORTRAN COMMON BLOCKS */ @@ -1318,6 +1412,7 @@ #define INTVVVVVVV_cfTYPE int #define LOGICALVVVVVVV_cfTYPE int #define LONGVVVVVVV_cfTYPE long +#define LONGLONGVVVVVVV_cfTYPE LONGLONG /* added by MR December 2005 */ #define SHORTVVVVVVV_cfTYPE short #define PBYTE_cfTYPE INTEGER_BYTE #define PDOUBLE_cfTYPE DOUBLE_PRECISION @@ -1325,6 +1420,7 @@ #define PINT_cfTYPE int #define PLOGICAL_cfTYPE int #define PLONG_cfTYPE long +#define PLONGLONG_cfTYPE LONGLONG /* added by MR December 2005 */ #define PSHORT_cfTYPE short #define CFARGS0(A,T,V,W,X,Y,Z) _3(T,_cf,A) @@ -1342,6 +1438,7 @@ #define INT_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z) #define LOGICAL_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z) #define LONG_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z) +#define LONGLONG_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ #define SHORT_cfINT(N,A,B,X,Y,Z) DOUBLE_cfINT(N,A,B,X,Y,Z) #define PBYTE_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z) #define PDOUBLE_cfINT(N,A,B,X,Y,Z) _(CFARGS,N)(A,PINT,B,X,Y,Z,0) @@ -1349,6 +1446,7 @@ #define PINT_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z) #define PLOGICAL_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z) #define PLONG_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z) +#define PLONGLONG_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ #define PSHORT_cfINT(N,A,B,X,Y,Z) PDOUBLE_cfINT(N,A,B,X,Y,Z) #define BYTEV_cfINT(N,A,B,X,Y,Z) DOUBLEV_cfINT(N,A,B,X,Y,Z) #define BYTEVV_cfINT(N,A,B,X,Y,Z) DOUBLEVV_cfINT(N,A,B,X,Y,Z) @@ -1392,6 +1490,13 @@ #define LONGVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVV_cfINT(N,A,B,X,Y,Z) #define LONGVVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVVV_cfINT(N,A,B,X,Y,Z) #define LONGVVVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVVVV_cfINT(N,A,B,X,Y,Z) +#define LONGLONGV_cfINT(N,A,B,X,Y,Z) DOUBLEV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ +#define LONGLONGVV_cfINT(N,A,B,X,Y,Z) DOUBLEVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ +#define LONGLONGVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ +#define LONGLONGVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ +#define LONGLONGVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ +#define LONGLONGVVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ +#define LONGLONGVVVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */ #define SHORTV_cfINT(N,A,B,X,Y,Z) DOUBLEV_cfINT(N,A,B,X,Y,Z) #define SHORTVV_cfINT(N,A,B,X,Y,Z) DOUBLEVV_cfINT(N,A,B,X,Y,Z) #define SHORTVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVV_cfINT(N,A,B,X,Y,Z) @@ -1451,7 +1556,12 @@ #define BYTE_cfPU(A) CFextern INTEGER_BYTE FCALLSC_QUALIFIER A #define DOUBLE_cfPU(A) CFextern DOUBLE_PRECISION FCALLSC_QUALIFIER A #if ! (defined(FLOATFUNCTIONTYPE)&&defined(ASSIGNFLOAT)&&defined(RETURNFLOAT)) +#if defined (f2cFortran) && ! defined (gFortran) +/* f2c/g77 return double from FORTRAN REAL functions. (KMCCARTY, 2005/12/09) */ +#define FLOAT_cfPU(A) CFextern DOUBLE_PRECISION FCALLSC_QUALIFIER A +#else #define FLOAT_cfPU(A) CFextern FORTRAN_REAL FCALLSC_QUALIFIER A +#endif #else #define FLOAT_cfPU(A) CFextern FLOATFUNCTIONTYPE FCALLSC_QUALIFIER A #endif @@ -1589,6 +1699,7 @@ #define INT_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define LOGICAL_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,LOGICAL,A,B,C,D,E) #define LONG_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) +#define LONGLONG_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ #define SHORT_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define BYTEV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define BYTEVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) @@ -1632,6 +1743,13 @@ #define LONGVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define LONGVVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define LONGVVVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) +#define LONGLONGV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ +#define LONGLONGVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ +#define LONGLONGVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ +#define LONGLONGVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ +#define LONGLONGVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ +#define LONGLONGVVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ +#define LONGLONGVVVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ #define SHORTV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define SHORTVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define SHORTVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) @@ -1645,6 +1763,7 @@ #define PINT_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define PLOGICAL_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PLOGICAL,A,B,C,D,E) #define PLONG_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) +#define PLONGLONG_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */ #define PSHORT_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) #define STRING_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,STRING,A,B,C,D,E) #define PSTRING_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PSTRING,A,B,C,D,E) @@ -1957,6 +2076,7 @@ #define INT_cfT(M,I,A,B,D) *A #define LOGICAL_cfT(M,I,A,B,D) F2CLOGICAL(*A) #define LONG_cfT(M,I,A,B,D) *A +#define LONGLONG_cfT(M,I,A,B,D) *A /* added by MR December 2005 */ #define SHORT_cfT(M,I,A,B,D) *A #define BYTEV_cfT(M,I,A,B,D) A #define DOUBLEV_cfT(M,I,A,B,D) A @@ -1964,6 +2084,7 @@ #define INTV_cfT(M,I,A,B,D) A #define LOGICALV_cfT(M,I,A,B,D) A #define LONGV_cfT(M,I,A,B,D) A +#define LONGLONGV_cfT(M,I,A,B,D) A /* added by MR December 2005 */ #define SHORTV_cfT(M,I,A,B,D) A #define BYTEVV_cfT(M,I,A,B,D) (void *)A /* We have to cast to void *,*/ #define BYTEVVV_cfT(M,I,A,B,D) (void *)A /* since we don't know the */ @@ -2001,6 +2122,12 @@ #define LONGVVVVV_cfT(M,I,A,B,D) (void *)A #define LONGVVVVVV_cfT(M,I,A,B,D) (void *)A #define LONGVVVVVVV_cfT(M,I,A,B,D) (void *)A +#define LONGLONGVV_cfT(M,I,A,B,D) (void *)A /* added by MR December 2005 */ +#define LONGLONGVVV_cfT(M,I,A,B,D) (void *)A /* added by MR December 2005 */ +#define LONGLONGVVVV_cfT(M,I,A,B,D) (void *)A /* added by MR December 2005 */ +#define LONGLONGVVVVV_cfT(M,I,A,B,D) (void *)A /* added by MR December 2005 */ +#define LONGLONGVVVVVV_cfT(M,I,A,B,D) (void *)A /* added by MR December 2005 */ +#define LONGLONGVVVVVVV_cfT(M,I,A,B,D) (void *)A /* added by MR December 2005 */ #define SHORTVV_cfT(M,I,A,B,D) (void *)A #define SHORTVVV_cfT(M,I,A,B,D) (void *)A #define SHORTVVVV_cfT(M,I,A,B,D) (void *)A @@ -2013,6 +2140,7 @@ #define PINT_cfT(M,I,A,B,D) A #define PLOGICAL_cfT(M,I,A,B,D) ((*A=F2CLOGICAL(*A)),A) #define PLONG_cfT(M,I,A,B,D) A +#define PLONGLONG_cfT(M,I,A,B,D) A /* added by MR December 2005 */ #define PSHORT_cfT(M,I,A,B,D) A #define PVOID_cfT(M,I,A,B,D) A #if defined(apolloFortran) || defined(hpuxFortran800) || defined(AbsoftUNIXFortran) @@ -2083,12 +2211,18 @@ #define INT_cfFZ(UN,LN) int FCALLSC_QUALIFIER fcallsc(UN,LN)( #define LOGICAL_cfFZ(UN,LN) int FCALLSC_QUALIFIER fcallsc(UN,LN)( #define LONG_cfFZ(UN,LN) long FCALLSC_QUALIFIER fcallsc(UN,LN)( +#define LONGLONG_cfFZ(UN,LN) LONGLONG FCALLSC_QUALIFIER fcallsc(UN,LN)( /* added by MR December 2005 */ #define SHORT_cfFZ(UN,LN) short FCALLSC_QUALIFIER fcallsc(UN,LN)( #define VOID_cfFZ(UN,LN) void FCALLSC_QUALIFIER fcallsc(UN,LN)( #ifndef __CF__KnR /* The void is req'd by the Apollo, to make this an ANSI function declaration. The Apollo promotes K&R float functions to double. */ -#define FLOAT_cfFZ(UN,LN) FORTRAN_REAL FCALLSC_QUALIFIER fcallsc(UN,LN)(void +#if defined (f2cFortran) && ! defined (gFortran) +/* f2c/g77 return double from FORTRAN REAL functions. (KMCCARTY, 2005/12/09) */ +#define FLOAT_cfFZ(UN,LN) DOUBLE_PRECISION FCALLSC_QUALIFIER fcallsc(UN,LN)(void +#else +#define FLOAT_cfFZ(UN,LN) FORTRAN_REAL FCALLSC_QUALIFIER fcallsc(UN,LN)(void +#endif #ifdef vmsFortran #define STRING_cfFZ(UN,LN) void FCALLSC_QUALIFIER fcallsc(UN,LN)(fstring *AS #else @@ -2104,7 +2238,12 @@ #endif #else #if ! (defined(FLOATFUNCTIONTYPE)&&defined(ASSIGNFLOAT)&&defined(RETURNFLOAT)) +#if defined (f2cFortran) && ! defined (gFortran) +/* f2c/g77 return double from FORTRAN REAL functions. (KMCCARTY, 2005/12/09) */ +#define FLOAT_cfFZ(UN,LN) DOUBLE_PRECISION FCALLSC_QUALIFIER fcallsc(UN,LN)( +#else #define FLOAT_cfFZ(UN,LN) FORTRAN_REAL FCALLSC_QUALIFIER fcallsc(UN,LN)( +#endif #else #define FLOAT_cfFZ(UN,LN) FLOATFUNCTIONTYPE FCALLSC_QUALIFIER fcallsc(UN,LN)( #endif @@ -2118,13 +2257,19 @@ #define BYTE_cfF(UN,LN) BYTE_cfFZ(UN,LN) #define DOUBLE_cfF(UN,LN) DOUBLE_cfFZ(UN,LN) #ifndef __CF_KnR +#if defined (f2cFortran) && ! defined (gFortran) +/* f2c/g77 return double from FORTRAN REAL functions. (KMCCARTY, 2005/12/09) */ +#define FLOAT_cfF(UN,LN) DOUBLE_PRECISION FCALLSC_QUALIFIER fcallsc(UN,LN)( +#else #define FLOAT_cfF(UN,LN) FORTRAN_REAL FCALLSC_QUALIFIER fcallsc(UN,LN)( +#endif #else #define FLOAT_cfF(UN,LN) FLOAT_cfFZ(UN,LN) #endif #define INT_cfF(UN,LN) INT_cfFZ(UN,LN) #define LOGICAL_cfF(UN,LN) LOGICAL_cfFZ(UN,LN) #define LONG_cfF(UN,LN) LONG_cfFZ(UN,LN) +#define LONGLONG_cfF(UN,LN) LONGLONG_cfFZ(UN,LN) /* added by MR December 2005 */ #define SHORT_cfF(UN,LN) SHORT_cfFZ(UN,LN) #define VOID_cfF(UN,LN) VOID_cfFZ(UN,LN) #define STRING_cfF(UN,LN) STRING_cfFZ(UN,LN), @@ -2187,6 +2332,7 @@ #define LOGICAL_cfI return C2FLOGICAL(A0); #endif #define LONG_cfI return A0; +#define LONGLONG_cfI return A0; /* added by MR December 2005 */ #define SHORT_cfI return A0; #define STRING_cfI return ; #define VOID_cfI return ; diff -urN 2005_orig/src/include/cfortran/hbook.h 2005_patched/src/include/cfortran/hbook.h --- 2005_orig/src/include/cfortran/hbook.h 1999-11-15 18:01:12.000000000 +0100 +++ 2005_patched/src/include/cfortran/hbook.h 2005-10-07 11:53:25.000000000 +0200 @@ -485,9 +485,15 @@ PROTOCCALLSFFUN3(FLOAT,HXY,hxy,INT,FLOAT,FLOAT) #define HXY(A2,A3,A4) CCALLSFFUN3(HXY,hxy,INT,FLOAT,FLOAT,A2,A3,A4) +#if defined(CERNLIB_QMLXIA64) +PROTOCCALLSFSUB11(HBALLOC,hballoc,INT,STRING,STRING,STRING,INT,INT,INT,INT,INTV,PLONG,PINT) +#define HBALLOC(IDN,CHDIR,VAR,BLOCK,ITYPE,ISIZE,IFIRST,NELEM,IBASE,IOFF,NUSE)\ + CCALLSFSUB11(HBALLOC,hballoc,INT,STRING,STRING,STRING,INT,INT,INT,INT,INTV,PLONG,PINT,IDN,CHDIR,VAR,BLOCK,ITYPE,ISIZE,IFIRST,NELEM,IBASE,IOFF,NUSE) +#else PROTOCCALLSFSUB11(HBALLOC,hballoc,INT,STRING,STRING,STRING,INT,INT,INT,INT,INTV,PINT,PINT) #define HBALLOC(IDN,CHDIR,VAR,BLOCK,ITYPE,ISIZE,IFIRST,NELEM,IBASE,IOFF,NUSE)\ CCALLSFSUB11(HBALLOC,hballoc,INT,STRING,STRING,STRING,INT,INT,INT,INT,INTV,PINT,PINT,IDN,CHDIR,VAR,BLOCK,ITYPE,ISIZE,IFIRST,NELEM,IBASE,IOFF,NUSE) +#endif PROTOCCALLSFSUB1(HBFREE,hbfree,INT) #define HBFREE(LUN) CCALLSFSUB1(HBFREE,hbfree,INT,LUN) @@ -501,12 +507,21 @@ PROTOCCALLSFSUB4(HF1N,hf1n,INT,FLOATV,FLOATV,INT) #define HF1N(ID,X,W,NEVT) CCALLSFSUB4(HF1N,hf1n,INT,FLOATV,FLOATV,INT,ID,X,W,NEVT) +#if defined(CERNLIB_QMLXIA64) +PROTOCCALLSFSUB6(HGNTBF,hgntbf,INT,ZTRINGV,LONGV,INT,INT,PINT) +/* fix the element length of VAR to 32 */ +#define hgntbf_ELEMS_2 ZTRINGV_ARGS(4) +#define hgntbf_ELEMLEN_2 ZTRINGV_NUM(32) +#define HGNTBF(IDN,VAR,IOFFST,NVAR,IDNEVT,IERROR)\ + CCALLSFSUB6(HGNTBF,hgntbf,INT,ZTRINGV,LONGV,INT,INT,PINT,IDN,VAR,IOFFST,NVAR,IDNEVT,IERROR) +#else PROTOCCALLSFSUB6(HGNTBF,hgntbf,INT,ZTRINGV,INTV,INT,INT,PINT) /* fix the element length of VAR to 32 */ #define hgntbf_ELEMS_2 ZTRINGV_ARGS(4) #define hgntbf_ELEMLEN_2 ZTRINGV_NUM(32) #define HGNTBF(IDN,VAR,IOFFST,NVAR,IDNEVT,IERROR)\ CCALLSFSUB6(HGNTBF,hgntbf,INT,ZTRINGV,INTV,INT,INT,PINT,IDN,VAR,IOFFST,NVAR,IDNEVT,IERROR) +#endif PROTOCCALLSFSUB1(HGTDIR,hgtdir,PSTRING) #define HGTDIR(CHDIR) CCALLSFSUB1(HGTDIR,hgtdir,PSTRING,CHDIR) diff -urN 2005_orig/src/include/hbook/hcntpar.inc 2005_patched/src/include/hbook/hcntpar.inc --- 2005_orig/src/include/hbook/hcntpar.inc 1996-01-16 18:07:52.000000000 +0100 +++ 2005_patched/src/include/hbook/hcntpar.inc 2005-10-07 10:59:35.000000000 +0200 @@ -24,7 +24,7 @@ + ZIFREA=7, ZNWTIT=8, ZITIT1=9, ZNCHRZ=13, ZIFBIT=8, + ZDESC=1, ZLNAME=2, ZNAME=3, ZRANGE=4, ZNADDR=12, + ZARIND=11, ZIBLOK=8, ZNBLOK=10, ZIBANK=9, ZIFTMP=11, - + ZID=12, ZITMP=10, ZNTMP=6, ZNTMP1=3, ZLINK=6) + + ZID=12, ZITMP=10, ZNTMP=6, ZNTMP1=4, ZLINK=6) * #endif diff -urN 2005_orig/src/include/zebra/q_and.inc 2005_patched/src/include/zebra/q_and.inc --- 2005_orig/src/include/zebra/q_and.inc 1996-04-18 18:15:05.000000000 +0200 +++ 2005_patched/src/include/zebra/q_and.inc 2005-11-22 20:44:26.000000000 +0100 @@ -24,7 +24,7 @@ #elif defined(CERNLIB_QMIBMSI) IAND (IZV,IZW) = LAND (IZV, IZW) -#elif defined(CERNLIB_LNX) +#elif (defined(CERNLIB_LNX))&&(!defined(CERNLIB_GFORTRAN)) IAND(IZV,IZW) = AND(IZV,IZW) #elif defined(CERNLIB_SUN) diff -urN 2005_orig/src/include/zebra/q_andor.inc 2005_patched/src/include/zebra/q_andor.inc --- 2005_orig/src/include/zebra/q_andor.inc 1996-03-06 11:46:52.000000000 +0100 +++ 2005_patched/src/include/zebra/q_andor.inc 2005-11-22 20:44:52.000000000 +0100 @@ -36,7 +36,7 @@ IEOR (IZV,IZW) = LXOR (IZV, IZW) NOT (IZW) = LCOMPL (IZW) -#elif defined(CERNLIB_LNX) +#elif (defined(CERNLIB_LNX))&&(!defined(CERNLIB_GFORTRAN)) IAND(IZV,IZW) = AND(IZV,IZW) IOR(IZV,IZW) = OR(IZV,IZW) IEOR(IZV,IZW) = XOR(IZV,IZW) diff -urN 2005_orig/src/include/zebra/q_jbit.inc 2005_patched/src/include/zebra/q_jbit.inc --- 2005_orig/src/include/zebra/q_jbit.inc 1996-04-18 18:15:06.000000000 +0200 +++ 2005_patched/src/include/zebra/q_jbit.inc 2005-11-22 20:48:58.000000000 +0100 @@ -47,7 +47,7 @@ #elif defined(CERNLIB_QF_SIEM) JBIT (IZW,IZP) = SHFTR (SHFTL(IZW,32-IZP), 31) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) JBIT(IZW,IZP) = AND(ISHFTR(IZW,IZP-1),1) #elif defined(CERNLIB_OS9) diff -urN 2005_orig/src/include/zebra/q_jbyt.inc 2005_patched/src/include/zebra/q_jbyt.inc --- 2005_orig/src/include/zebra/q_jbyt.inc 1996-04-18 18:15:07.000000000 +0200 +++ 2005_patched/src/include/zebra/q_jbyt.inc 2005-11-22 20:49:28.000000000 +0100 @@ -45,7 +45,7 @@ #elif defined(CERNLIB_QF_SIEM) JBYT (IZW,IZP,NZB)= SHFTR (SHFTL(IZW,33-IZP-NZB), 32-NZB) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) JBYT(IZW,IZP,NZB) = ISHFTR(LSHIFT(IZW,33-IZP-NZB),32-NZB) #elif defined(CERNLIB_OS9) diff -urN 2005_orig/src/include/zebra/q_jbytet.inc 2005_patched/src/include/zebra/q_jbytet.inc --- 2005_orig/src/include/zebra/q_jbytet.inc 1996-04-18 18:15:07.000000000 +0200 +++ 2005_patched/src/include/zebra/q_jbytet.inc 2005-11-22 20:50:21.000000000 +0100 @@ -52,7 +52,7 @@ JBYTET (MZ,IZW,IZP,NZB) = LAND (MZ, + SHFTR (SHFTL(IZW,33-IZP-NZB), 32-NZB) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) JBYTET (MZ,IZW,IZP,NZB) = AND (MZ, + ISHFTR (LSHIFT(IZW,33-IZP-NZB),32-NZB) ) diff -urN 2005_orig/src/include/zebra/q_jbytor.inc 2005_patched/src/include/zebra/q_jbytor.inc --- 2005_orig/src/include/zebra/q_jbytor.inc 1996-04-18 18:15:10.000000000 +0200 +++ 2005_patched/src/include/zebra/q_jbytor.inc 2005-11-22 20:50:49.000000000 +0100 @@ -50,7 +50,7 @@ JBYTOR (MZ,IZW,IZP,NZB) = LOR (MZ, + SHFTR (SHFTL(IZW,33-IZP-NZB), 32-NZB) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) JBYTOR (MZ,IZW,IZP,NZB) = OR (MZ, + ISHFTR (LSHIFT(IZW,33-IZP-NZB),32-NZB) ) diff -urN 2005_orig/src/include/zebra/q_mbytet.inc 2005_patched/src/include/zebra/q_mbytet.inc --- 2005_orig/src/include/zebra/q_mbytet.inc 1996-04-18 18:15:11.000000000 +0200 +++ 2005_patched/src/include/zebra/q_mbytet.inc 2005-11-22 20:51:46.000000000 +0100 @@ -51,7 +51,7 @@ MBYTET (MZ,IZW,IZP,NZB) = LAND (IZW, LCOMPL(SHFTR ( + SHFTL(LCOMPL(MZ),32-NZB), 33-IZP-NZB)) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) MBYTET (MZ,IZW,IZP,NZB) = AND (IZW, + NOT(ISHFTR (LSHIFT(NOT(MZ),32-NZB),33-IZP-NZB)) ) diff -urN 2005_orig/src/include/zebra/q_mbytor.inc 2005_patched/src/include/zebra/q_mbytor.inc --- 2005_orig/src/include/zebra/q_mbytor.inc 1996-04-18 18:15:12.000000000 +0200 +++ 2005_patched/src/include/zebra/q_mbytor.inc 2005-11-22 20:52:00.000000000 +0100 @@ -51,7 +51,7 @@ MBYTOR (MZ,IZW,IZP,NZB) = LOR (IZW, SHFTR ( + SHFTL(MZ,32-NZB), 33-IZP-NZB) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) MBYTOR (MZ,IZW,IZP,NZB) = OR (IZW, + ISHFTR (LSHIFT(MZ,32-NZB),33-IZP-NZB)) diff -urN 2005_orig/src/include/zebra/q_or.inc 2005_patched/src/include/zebra/q_or.inc --- 2005_orig/src/include/zebra/q_or.inc 1996-04-18 18:15:13.000000000 +0200 +++ 2005_patched/src/include/zebra/q_or.inc 2005-11-22 20:53:27.000000000 +0100 @@ -24,7 +24,7 @@ #elif defined(CERNLIB_QMIBMSI) IOR (IZV,IZW) = LOR (IZV, IZW) -#elif defined(CERNLIB_LNX) +#elif (defined(CERNLIB_LNX))&&(!defined(CERNLIB_GFORTRAN)) IOR(IZV,IZW) = OR(IZV,IZW) #elif defined(CERNLIB_SUN) diff -urN 2005_orig/src/include/zebra/q_sbit.inc 2005_patched/src/include/zebra/q_sbit.inc --- 2005_orig/src/include/zebra/q_sbit.inc 1996-04-18 18:15:23.000000000 +0200 +++ 2005_patched/src/include/zebra/q_sbit.inc 2005-11-22 20:54:11.000000000 +0100 @@ -46,7 +46,7 @@ MSBIT (MZ,IZW,IZP) = LOR (LAND (IZW, LCOMPL(SHFTL(1,IZP-1)) ) + , SHFTL(LAND(MZ,1),IZP-1) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) MSBIT (MZ,IZW,IZP) = OR (AND (IZW, NOT(LSHIFT(1,IZP-1))) + ,LSHIFT(AND(MZ,1),IZP-1)) diff -urN 2005_orig/src/include/zebra/q_sbit0.inc 2005_patched/src/include/zebra/q_sbit0.inc --- 2005_orig/src/include/zebra/q_sbit0.inc 1996-04-18 18:15:24.000000000 +0200 +++ 2005_patched/src/include/zebra/q_sbit0.inc 2005-11-22 20:54:35.000000000 +0100 @@ -41,7 +41,7 @@ #elif defined(CERNLIB_QF_SIEM) MSBIT0 (IZW,IZP) = LAND (IZW, LCOMPL(SHFTL(1,IZP-1)) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) MSBIT0 (IZW,IZP) = AND (IZW, NOT(LSHIFT(1,IZP-1))) #elif defined(CERNLIB_PDP) diff -urN 2005_orig/src/include/zebra/q_sbit1.inc 2005_patched/src/include/zebra/q_sbit1.inc --- 2005_orig/src/include/zebra/q_sbit1.inc 1996-04-18 18:15:24.000000000 +0200 +++ 2005_patched/src/include/zebra/q_sbit1.inc 2005-11-22 20:54:58.000000000 +0100 @@ -40,7 +40,7 @@ #elif defined(CERNLIB_QF_SIEM) MSBIT1 (IZW,IZP) = LOR (IZW, SHFTL(1,IZP-1) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) MSBIT1 (IZW,IZP) = OR (IZW, LSHIFT(1,IZP-1)) #elif defined(CERNLIB_PDP) diff -urN 2005_orig/src/include/zebra/q_sbyt.inc 2005_patched/src/include/zebra/q_sbyt.inc --- 2005_orig/src/include/zebra/q_sbyt.inc 1996-03-06 11:46:52.000000000 +0100 +++ 2005_patched/src/include/zebra/q_sbyt.inc 2005-11-22 20:55:21.000000000 +0100 @@ -43,7 +43,7 @@ + LAND (IZW, LCOMPL(SHFTL (SHFTR(-1,32-NZB), IZP-1))) + , SHFTR (SHFTL(MZ,32-NZB), 33-IZP-NZB) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) MSBYT (MZ,IZW,IZP,NZB) = OR ( + AND (IZW, NOT(LSHIFT (ISHFTR(NOT(0),32-NZB),IZP-1))) + ,ISHFTR (LSHIFT(MZ,32-NZB), 33-IZP-NZB) ) diff -urN 2005_orig/src/include/zebra/q_shift.inc 2005_patched/src/include/zebra/q_shift.inc --- 2005_orig/src/include/zebra/q_shift.inc 1996-03-06 11:46:52.000000000 +0100 +++ 2005_patched/src/include/zebra/q_shift.inc 2005-11-22 20:55:46.000000000 +0100 @@ -36,7 +36,7 @@ ISHFTL (IZW,NZB) = SHFTL (IZW, NZB) ISHFTR (IZW,NZB) = SHFTR (IZW, NZB) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) ISHFTL (IZW,NZB) = LSHIFT (IZW,NZB) #elif (defined(CERNLIB_SUN))&&(!defined(CERNLIB_BUGLRSHFT)) diff -urN 2005_orig/src/include/zebra/q_shiftl.inc 2005_patched/src/include/zebra/q_shiftl.inc --- 2005_orig/src/include/zebra/q_shiftl.inc 1996-04-18 18:15:25.000000000 +0200 +++ 2005_patched/src/include/zebra/q_shiftl.inc 2005-11-22 20:55:56.000000000 +0100 @@ -28,7 +28,7 @@ #elif defined(CERNLIB_QF_SIEM) ISHFTL (IZW,NZB) = SHFTL (IZW, NZB) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) ISHFTL (IZW,NZB) = LSHIFT (IZW,NZB) #elif (defined(CERNLIB_SUN))&&(!defined(CERNLIB_BUGLRSHFT)) diff -urN 2005_orig/src/include/zebra/q_shiftr.inc 2005_patched/src/include/zebra/q_shiftr.inc --- 2005_orig/src/include/zebra/q_shiftr.inc 1996-04-18 18:15:25.000000000 +0200 +++ 2005_patched/src/include/zebra/q_shiftr.inc 2005-11-22 20:56:18.000000000 +0100 @@ -32,7 +32,7 @@ #elif defined(CERNLIB_QF_SIEM) ISHFTR (IZW,NZB) = SHFTR (IZW, NZB) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) #elif (defined(CERNLIB_SUN))&&(!defined(CERNLIB_BUGLRSHFT)) ISHFTR (IZW,NZB) = lrshft (IZW, NZB) diff -urN 2005_orig/src/include/zebra/q_xor.inc 2005_patched/src/include/zebra/q_xor.inc --- 2005_orig/src/include/zebra/q_xor.inc 1996-04-18 18:15:26.000000000 +0200 +++ 2005_patched/src/include/zebra/q_xor.inc 2005-11-22 20:56:48.000000000 +0100 @@ -24,7 +24,7 @@ #elif defined(CERNLIB_QMIBMSI) IEOR (IZV,IZW) = LXOR (IZV, IZW) -#elif defined(CERNLIB_LNX) +#elif (defined(CERNLIB_LNX))&&(!defined(CERNLIB_GFORTRAN)) IEOR(IZV,IZW) = XOR(IZV,IZW) #elif defined(CERNLIB_SUN) diff -urN 2005_orig/src/mathlib/gen/b/rsrtnt64.F 2005_patched/src/mathlib/gen/b/rsrtnt64.F --- 2005_orig/src/mathlib/gen/b/rsrtnt64.F 1996-04-01 17:01:51.000000000 +0200 +++ 2005_patched/src/mathlib/gen/b/rsrtnt64.F 2005-10-19 15:48:02.000000000 +0200 @@ -53,7 +53,7 @@ IF(LLL) GO TO 9 LLL=K .GE. 0 .OR. K .EQ. -1 .AND. U*V .NE. 0 - 1 .OR. K .LE. -2 .AND. U*V .GT. 0 + & .OR. K .LE. -2 .AND. U*V .GT. 0 IF(.NOT.LLL) GO TO 9 DELTA=4*A*C-B**2 @@ -117,9 +117,17 @@ ENDIF ELSE IF(N .EQ. 1) THEN - ASSIGN 11 TO JMP1 - GO TO 10 - 11 IF(K .EQ. 0) THEN +CCC ASSIGN 11 TO JMP1 + C2=2*C + IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. C .GT. 0) THEN + H=LOG(ABS((2*SQRT(C*P(V))+C2*V+B)/ + & (2*SQRT(C*P(U))+C2*U+B)))/SQRT(C) + ELSEIF(DELTA .EQ. 0) THEN + H=ABS(LOG(ABS((C2*V+B)/(C2*U+B))))/SQRT(C) + ELSE + H=(ASIN((C2*U+B)/RTD)-ASIN((C2*V+B)/RTD))/SQRT(-C) + ENDIF + IF(K .EQ. 0) THEN H=H ELSEIF(K .EQ. 1) THEN H=(RT(V)-RT(U)-HF*B*H)/C @@ -134,7 +142,7 @@ G2=A*C H3=G1-16*G2 H=(((H1*V-H2)*V+H3)*RT(V)-((H1*U-H2)*U+H3)*RT(U)- - 1 (HF*G1-18*G2)*B*H)/(24*C**3) + & (HF*G1-18*G2)*B*H)/(24*C**3) ENDIF ELSE IF(DELTA .EQ. 0) THEN @@ -174,21 +182,37 @@ H=2*((H1+B*U)/RT(U)-(H1+B*V)/RT(V))/DELTA LB1=11 ELSEIF(K .EQ. 2) THEN - ASSIGN 12 TO JMP1 - GO TO 10 - 12 H1=DELTA-B**2 +CCC ASSIGN 12 TO JMP1 + C2=2*C + IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. C .GT. 0) THEN + H=LOG(ABS((2*SQRT(C*P(V))+C2*V+B)/ + & (2*SQRT(C*P(U))+C2*U+B)))/SQRT(C) + ELSEIF(DELTA .EQ. 0) THEN + H=ABS(LOG(ABS((C2*V+B)/(C2*U+B))))/SQRT(C) + ELSE + H=(ASIN((C2*U+B)/RTD)-ASIN((C2*V+B)/RTD))/SQRT(-C) + ENDIF + H1=DELTA-B**2 H2=2*A*B H=(((H1*U-H2)/RT(U)-(H1*V-H2)/RT(V))/DELTA+H)/C ELSEIF(K .EQ. 3) THEN - ASSIGN 13 TO JMP1 - GO TO 10 - 13 H1=C*DELTA +CCC ASSIGN 13 TO JMP1 + C2=2*C + IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. C .GT. 0) THEN + H=LOG(ABS((2*SQRT(C*P(V))+C2*V+B)/ + & (2*SQRT(C*P(U))+C2*U+B)))/SQRT(C) + ELSEIF(DELTA .EQ. 0) THEN + H=ABS(LOG(ABS((C2*V+B)/(C2*U+B))))/SQRT(C) + ELSE + H=(ASIN((C2*U+B)/RTD)-ASIN((C2*V+B)/RTD))/SQRT(-C) + ENDIF + H1=C*DELTA G1=A*C G2=3*B**2 H2=B*(10*G1-G2) H3=A*(8*G1-G2) H=(2*(((H1*V+H2)*V+H3)/RT(V)-((H1*U+H2)*U+H3)/RT(U))/ - 1 DELTA-3*B*H)/(2*C**2) + & DELTA-3*B*H)/(2*C**2) ENDIF ENDIF ENDIF @@ -217,9 +241,35 @@ ENDIF ELSE IF(N .EQ. 1) THEN - ASSIGN 21 TO JMP2 - GO TO 20 - 21 IF(K .EQ. -1) THEN +CCC ASSIGN 21 TO JMP2 + IF(C .EQ. 0) THEN + IF(B .EQ. 0) THEN + H=LOG(ABS(V/U))/SQRT(A) + ELSE + IF(A .LT. 0) THEN + H=2*(ATAN(SQRT(-(A+B*V)/A))-ATAN(SQRT(-(A+B*U)/A)))/SQRT(-A) + ELSE + WA=SQRT(A) + WU=SQRT(A+B*U) + WV=SQRT(A+B*V) + H=LOG(ABS((WV-WA)*(WU+WA)/((WV+WA)*(WU-WA))))/WA + ENDIF + ENDIF + ELSE + A2=2*A + IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. A .GT. 0) THEN + H=LOG(ABS((-2*SQRT(A*P(V))+B*V+A2)*U/ + & ((-2*SQRT(A*P(U))+B*U+A2)*V)))/SQRT(A) + ELSEIF(DELTA .EQ. 0) THEN + H=LOG(ABS((B*U+A2)*V/((B*V+A2)*U)))/SQRT(A) + IF(U*V .GT. 0) H=SIGN(H,U) + ELSE + H=(ASIN((B*V+A2)/(V*RTD))-ASIN((B*U+A2)/(U*RTD)))/SQRT(-A) + IF(U .LT. 0 .AND. V .LT. 0) H=-H + ENDIF + ENDIF + + IF(K .EQ. -1) THEN H=H ELSEIF(K .EQ. -2) THEN H=(RT(U)/U-RT(V)/V-HF*B*H)/A @@ -227,7 +277,7 @@ H1=6*B H2=4*A H=((H1*V-H2)*RT(V)/V**2-(H1*U-H2)*RT(U)/U**2+ - 1 (3*B**2-H2*C)*H)/(8*A**2) + & (3*B**2-H2*C)*H)/(8*A**2) ENDIF ELSE IF(DELTA .EQ. 0) THEN @@ -257,9 +307,36 @@ IF(U. LT. -X0) H=-H ENDIF ELSE - ASSIGN 22 TO JMP2 - GO TO 20 - 22 IF(K .EQ. -1) THEN +CCC ASSIGN 22 TO JMP2 + IF(C .EQ. 0) THEN + IF(B .EQ. 0) THEN + H=LOG(ABS(V/U))/SQRT(A) + ELSE + IF(A .LT. 0) THEN + H=2*(ATAN(SQRT(-(A+B*V)/A))-ATAN(SQRT(-(A+B*U)/A))) + & /SQRT(-A) + ELSE + WA=SQRT(A) + WU=SQRT(A+B*U) + WV=SQRT(A+B*V) + H=LOG(ABS((WV-WA)*(WU+WA)/((WV+WA)*(WU-WA))))/WA + ENDIF + ENDIF + ELSE + A2=2*A + IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. A .GT. 0) THEN + H=LOG(ABS((-2*SQRT(A*P(V))+B*V+A2)*U/ + & ((-2*SQRT(A*P(U))+B*U+A2)*V)))/SQRT(A) + ELSEIF(DELTA .EQ. 0) THEN + H=LOG(ABS((B*U+A2)*V/((B*V+A2)*U)))/SQRT(A) + IF(U*V .GT. 0) H=SIGN(H,U) + ELSE + H=(ASIN((B*V+A2)/(V*RTD))-ASIN((B*U+A2)/(U*RTD)))/SQRT(-A) + IF(U .LT. 0 .AND. V .LT. 0) H=-H + ENDIF + ENDIF + + IF(K .EQ. -1) THEN H1=B*C H2=B**2-2*A*C H=(2*((H1*U+H2)/RT(U)-(H1*V+H2)/RT(V))/DELTA+H)/A @@ -270,7 +347,7 @@ H2=(G1-10*G2)*B H3=A*DELTA H=(((H1*V+H2-H3/V)/RT(V)-(H1*U+H2-H3/U)/RT(U))/DELTA - 1 -3*HF*B*H)/A**2 + & -3*HF*B*H)/A**2 ELSEIF(K .EQ. -3) THEN G1=A*DELTA G2=A*C @@ -281,52 +358,12 @@ H3=(G4-62*G2)*G3+24*G2**2 H4=B*C*(G4-52*G2) H=((((H2-H1/V)/V-H3-H4*V)/RT(V)-((H2-H1/U)/U-H3-H4*U)/RT(U)) - 1 /DELTA+HF*(G4-12*G2)*H)/(4*A**3) + & /DELTA+HF*(G4-12*G2)*H)/(4*A**3) ENDIF ENDIF ENDIF ENDIF ENDIF - GO TO 9 - - 10 C2=2*C - IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. C .GT. 0) THEN - H=LOG(ABS((2*SQRT(C*P(V))+C2*V+B)/ - 1 (2*SQRT(C*P(U))+C2*U+B)))/SQRT(C) - ELSEIF(DELTA .EQ. 0) THEN - H=ABS(LOG(ABS((C2*V+B)/(C2*U+B))))/SQRT(C) - ELSE - H=(ASIN((C2*U+B)/RTD)-ASIN((C2*V+B)/RTD))/SQRT(-C) - ENDIF - GO TO JMP1, (11,12,13) - - 20 IF(C .EQ. 0) THEN - IF(B .EQ. 0) THEN - H=LOG(ABS(V/U))/SQRT(A) - ELSE - IF(A .LT. 0) THEN - H=2*(ATAN(SQRT(-(A+B*V)/A))-ATAN(SQRT(-(A+B*U)/A)))/SQRT(-A) - ELSE - WA=SQRT(A) - WU=SQRT(A+B*U) - WV=SQRT(A+B*V) - H=LOG(ABS((WV-WA)*(WU+WA)/((WV+WA)*(WU-WA))))/WA - ENDIF - ENDIF - ELSE - A2=2*A - IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. A .GT. 0) THEN - H=LOG(ABS((-2*SQRT(A*P(V))+B*V+A2)*U/ - 1 ((-2*SQRT(A*P(U))+B*U+A2)*V)))/SQRT(A) - ELSEIF(DELTA .EQ. 0) THEN - H=LOG(ABS((B*U+A2)*V/((B*V+A2)*U)))/SQRT(A) - IF(U*V .GT. 0) H=SIGN(H,U) - ELSE - H=(ASIN((B*V+A2)/(V*RTD))-ASIN((B*U+A2)/(U*RTD)))/SQRT(-A) - IF(U .LT. 0 .AND. V .LT. 0) H=-H - ENDIF - ENDIF - GO TO JMP2, (21,22) 9 RES=SIGN(R1,V1-U1)*H LRL=LLL diff -urN 2005_orig/src/mathlib/gen/c/rteq464.F 2005_patched/src/mathlib/gen/c/rteq464.F --- 2005_orig/src/mathlib/gen/c/rteq464.F 1996-04-01 17:01:53.000000000 +0200 +++ 2005_patched/src/mathlib/gen/c/rteq464.F 2006-01-30 11:07:06.000000000 +0100 @@ -45,7 +45,16 @@ MT=3 Z(1)=SQRT(SQRT(-D)) Z(2)=-Z(1) +#if !defined(CERNLIB_GFORTRAN) Z(3)=SQRT(-Z(1)**2) +#else +* Using gfortran the following sqrt yields an inconsistent result +* if the imaginary part is a "negative zero" +* gfortran is conform with the Fortran ISO 2003 standard (1.6.1) +* Therefore if the imaginary part is a "negative zero" +* it must be replaced by a "positive zero" to be consistent + if (imag(-z(1)**2) .eq. 0) z(3)=SQRT(real(-z(1)**2)+i*0) +#endif Z(4)=-Z(3) ENDIF DC=(-R12*D)**3 @@ -94,9 +103,21 @@ W1=SQRT(U(K1)+I*0) W2=SQRT(U(K2)+I*0) ELSE +#if !defined(CERNLIB_GFORTRAN) MT=3 W1=SQRT(U(2)+I*U(3)) W2=SQRT(U(2)-I*U(3)) +#else +* For gfortran see above + MT=3 + IF (U(3) .NE. 0.) THEN + W1=SQRT(U(2)+I*U(3)) + W2=SQRT(U(2)-I*U(3)) + ELSE + W1=SQRT(U(2)+I*0) + W2=W1 + ENDIF +#endif ENDIF W3=0 IF(W1*W2 .NE. 0) W3=-Q/(8*W1*W2) diff -urN 2005_orig/src/mathlib/gen/c/wpsipg.F 2005_patched/src/mathlib/gen/c/wpsipg.F --- 2005_orig/src/mathlib/gen/c/wpsipg.F 1996-04-01 17:02:01.000000000 +0200 +++ 2005_patched/src/mathlib/gen/c/wpsipg.F 2006-01-30 11:07:35.000000000 +0100 @@ -62,7 +62,11 @@ H=0 WRITE(ERRTXT,101) K CALL MTLPRT(NAME,'C317.1',ERRTXT) - ELSEIF(ABS(IMAG(U)) .LT. DELTA .AND. ABS(X+NINT(A)) .LT. DELTA) +#if defined(CERNLIB_QFPGF77)||defined(CERNLIB_GFORTRAN) + ELSEIF(ABS(AIMAG(U)) .LT. DELTA .AND. ABS(X+NINT(A)) .LT. DELTA) +#else + ELSEIF(ABS(IMAG(U)) .LT. DELTA .AND. ABS(X+NINT(A)) .LT. DELTA) +#endif 1 THEN H=0 WRITE(ERRTXT,102) X @@ -88,7 +92,11 @@ IF(X .LT. 0) THEN V=PI*U X=V - Y=IMAG(V) +#if defined(CERNLIB_QFPGF77)||defined(CERNLIB_GFORTRAN) + Y=AIMAG(V) +#else + Y=IMAG(V) +#endif A=SIN(X) B=COS(X) T=TANH(Y) diff -urN 2005_orig/src/mathlib/gen/d/cfstft.F 2005_patched/src/mathlib/gen/d/cfstft.F --- 2005_orig/src/mathlib/gen/d/cfstft.F 1997-12-15 17:18:42.000000000 +0100 +++ 2005_patched/src/mathlib/gen/d/cfstft.F 2006-01-30 11:08:47.000000000 +0100 @@ -43,7 +43,7 @@ W=CMPLX(C,S) U=W C=SQRT(0.5*C+0.5) -#if defined(CERNLIB_QFPGF77) +#if defined(CERNLIB_QFPGF77)||defined(CERNLIB_GFORTRAN) S=AIMAG(W)/(C+C) #else S=IMAG(W)/(C+C) diff -urN 2005_orig/src/mathlib/gen/tests/c209m.F 2005_patched/src/mathlib/gen/tests/c209m.F --- 2005_orig/src/mathlib/gen/tests/c209m.F 1996-04-01 17:01:13.000000000 +0200 +++ 2005_patched/src/mathlib/gen/tests/c209m.F 2005-12-01 08:30:14.000000000 +0100 @@ -16,7 +16,7 @@ #include "gen/defc64.inc" + TEST(NT,NT),A(0:NT),ROOT(NT),SUM C R is the estimated radius of a circle centered at a root - DIMENSION R(NT),RES(NT) + DIMENSION R(NT+1),RES(NT) LOGICAL INR2(NT,NT) PARAMETER (MAXFUN=50000) PARAMETER (TSTERR=5D-8) diff -urN 2005_orig/src/mathlib/gen/v/nranf.F 2005_patched/src/mathlib/gen/v/nranf.F --- 2005_orig/src/mathlib/gen/v/nranf.F 1996-04-01 17:02:54.000000000 +0200 +++ 2005_patched/src/mathlib/gen/v/nranf.F 2005-12-01 09:34:09.000000000 +0100 @@ -14,10 +14,12 @@ VECTOR(I) = RNDM(I) 100 CONTINUE RETURN - ENTRY NRANIN (V) + END + SUBROUTINE NRANIN (V) CALL RDMIN(V) RETURN - ENTRY NRANUT (V) + END + SUBROUTINE NRANUT (V) CALL RDMOUT(V) RETURN END diff -urN 2005_orig/src/mathlib/gen/v/v107z0.inc 2005_patched/src/mathlib/gen/v/v107z0.inc --- 2005_orig/src/mathlib/gen/v/v107z0.inc 2000-06-08 11:57:22.000000000 +0200 +++ 2005_patched/src/mathlib/gen/v/v107z0.inc 2005-11-23 17:22:14.000000000 +0100 @@ -16,9 +16,13 @@ * v107z0.inc * -#if defined(CERNLIB_LNX)||defined(CERNLIB_ALLIANT)||defined(CERNLIB_DECS)||defined(CERNLIB_MACMPW)||defined(CERNLIB_SGI) +#if (defined(CERNLIB_LNX)||defined(CERNLIB_ALLIANT)||defined(CERNLIB_DECS)||defined(CERNLIB_MACMPW)||defined(CERNLIB_SGI))&&!defined(CERNLIB_GFORTRAN) DATA IZ0/'33000000'X/ +#elif defined(CERNLIB_CERNLIB_GFORTRAN) +* this is the new Fortran 2003 ISO standard + DATA IZ0/Z'33000000'/ + #elif defined(CERNLIB_APOLLO) DATA IZ0/16#33000000/ diff -urN 2005_orig/src/mclibs/ariadne/code/arorie.F 2005_patched/src/mclibs/ariadne/code/arorie.F --- 2005_orig/src/mclibs/ariadne/code/arorie.F 1996-04-10 14:33:26.000000000 +0200 +++ 2005_patched/src/mclibs/ariadne/code/arorie.F 2005-10-10 18:23:24.000000000 +0200 @@ -144,7 +144,12 @@ ELSEIF (DSPHI.GE.1.0D0) THEN PHI=PHIU ELSE - PHI=MIN(ASIN(DSPHI),DBLE(PARU(1))-BALP) +CCC g77 Compiler bug in gcc 3.2.3 corrected in gcc 3.4.3 +CCC requires the following modification: +CCC PHI=MIN(ASIN(DSPHI),DBLE(PARU(1))-BALP) + PHI1=ASIN(DSPHI) + PHI2=PARU(1)-BALP + PHI=MIN(PHI1,PHI2) ENDIF ARECOI=PHI diff -urN 2005_orig/src/mclibs/herwig/code/hwhew2.F 2005_patched/src/mclibs/herwig/code/hwhew2.F --- 2005_orig/src/mclibs/herwig/code/hwhew2.F 1996-12-03 15:16:55.000000000 +0100 +++ 2005_patched/src/mclibs/herwig/code/hwhew2.F 2005-12-20 14:10:15.000000000 +0100 @@ -75,8 +75,9 @@ H(J,I)=(ZDMP*ZP-ZDPM*ZQ)*ZT CH(J,I)=(ZDMP*ZPS-ZDPM*ZQS)*ZT ZD=H(J,I)*CH(J,I) - PT5=CMPLX(.5,0.) - D(J,I)=PT5*ZD +ccc PT5=CMPLX(.5,0.) +ccc D(J,I)=PT5*ZD + D(J,I)=CMPLX(.5,0.)*ZD 11 CONTINUE DO 60 I=1,NPART-1 IPP1=I+1 diff -urN 2005_orig/src/mclibs/isajet/test/Imakefile 2005_patched/src/mclibs/isajet/test/Imakefile --- 2005_orig/src/mclibs/isajet/test/Imakefile 2000-07-25 18:21:34.000000000 +0200 +++ 2005_patched/src/mclibs/isajet/test/Imakefile 2005-12-12 13:52:43.000000000 +0100 @@ -8,4 +8,9 @@ CernlibFortranProgramTarget(isajett,isajett.o,$(PACKAGE_LIB),$(PACKAGE_LIB),pdflib804 mathlib kernlib) +#if !defined(CERNLIB_GFORTRAN) TestTarget(isajett,isajet.dat,test.input) +#else +/* ignore 'STOP 99' in testing isajet for gfortran */ +TestTargetIgnore(isajett,isajet.dat,test.input) +#endif diff -urN 2005_orig/src/mclibs/jetset/jetset/Imakefile 2005_patched/src/mclibs/jetset/jetset/Imakefile --- 2005_orig/src/mclibs/jetset/jetset/Imakefile 1998-09-25 17:55:08.000000000 +0200 +++ 2005_patched/src/mclibs/jetset/jetset/Imakefile 2006-06-16 10:45:16.000000000 +0200 @@ -14,5 +14,10 @@ FDEBUGFLAGS := $(FDEBUGFLAGS) -O0 #endif +#if defined(CERNLIB_ITANIUM) +/* turn off optimisation on IA64 architecture */ +FDEBUGFLAGS = +#endif + SubdirLibraryTarget(NullParameter,NullParameter) diff -urN 2005_orig/src/mclibs/jetset/pythia/Imakefile 2005_patched/src/mclibs/jetset/pythia/Imakefile --- 2005_orig/src/mclibs/jetset/pythia/Imakefile 2001-04-04 16:54:39.000000000 +0200 +++ 2005_patched/src/mclibs/jetset/pythia/Imakefile 2006-06-16 10:45:42.000000000 +0200 @@ -15,4 +15,9 @@ FDEBUGFLAGS := $(FDEBUGFLAGS) -Nn15000 #endif +#if defined(CERNLIB_ITANIUM) +/* turn off optimisation on IA64 architecture */ +FDEBUGFLAGS = +#endif + SubdirLibraryTarget(NullParameter,NullParameter) diff -urN 2005_orig/src/packlib/cspack/sysreq/log.c 2005_patched/src/packlib/cspack/sysreq/log.c --- 2005_orig/src/packlib/cspack/sysreq/log.c 2003-09-02 14:47:16.000000000 +0200 +++ 2005_patched/src/packlib/cspack/sysreq/log.c 2006-04-10 19:03:44.000000000 +0200 @@ -28,6 +28,7 @@ #include /* standard input/output definitions */ #if !defined(vms) #include /* file control */ +#include /* string manipulation functions */ #else #include /* general utility definitions */ #include /* VMS's unix-emulation I/O */ diff -urN 2005_orig/src/packlib/cspack/sysreq/netreq.c 2005_patched/src/packlib/cspack/sysreq/netreq.c --- 2005_orig/src/packlib/cspack/sysreq/netreq.c 1996-03-08 16:44:25.000000000 +0100 +++ 2005_patched/src/packlib/cspack/sysreq/netreq.c 2006-04-10 19:12:12.000000000 +0200 @@ -25,6 +25,7 @@ #include /* Internet data types */ #include /* Arpa internet routines */ #include /* Standard Input/Output */ +#include /* string manipulation functions */ #if defined(vms) #include #else @@ -340,7 +341,7 @@ return(-errno); } TRACE(2, "sysreq", "recv reply length"); - if ((int)(p = RecvStr(s, &replylen)) <0) { + if ((long)(p = RecvStr(s, &replylen)) <0) { TRACE(2, "sysreq", "RecvStr(RepLen): (errno=%d)", errno); (void) close(s); END_TRACE(); diff -urN 2005_orig/src/packlib/cspack/sysreq/serror.c 2005_patched/src/packlib/cspack/sysreq/serror.c --- 2005_orig/src/packlib/cspack/sysreq/serror.c 1998-08-25 14:44:52.000000000 +0200 +++ 2005_patched/src/packlib/cspack/sysreq/serror.c 2006-03-31 13:27:03.000000000 +0200 @@ -177,7 +177,7 @@ else { #if !defined(vms) if ((n>0) && (n #include #include + +#if !defined(linux) extern char* malloc(); +#endif /* linux */ #if defined(vms) #if defined(TWG) && (TWG == 1) @@ -412,7 +415,7 @@ s_errmsg() /* return last error message */ { #if !defined(vms) - return(sys_errlist[errno]); + return((char*)sys_errlist[errno]); #else /* vms */ #if defined(MULTINET) && (MULTINET == 1) return(vms_errno_string()); diff -urN 2005_orig/src/packlib/cspack/sysreq/sysreq.h 2005_patched/src/packlib/cspack/sysreq/sysreq.h --- 2005_orig/src/packlib/cspack/sysreq/sysreq.h 1996-03-08 16:44:26.000000000 +0100 +++ 2005_patched/src/packlib/cspack/sysreq/sysreq.h 2006-04-10 14:44:07.000000000 +0200 @@ -88,7 +88,7 @@ */ #ifndef VM -extern char *malloc(); /* Memory allocation */ +#include /* standard C library defs */ #endif /* VM */ extern char *getenv(); /* Get environment info */ diff -urN 2005_orig/src/packlib/cspack/sysreq/xdr.c 2005_patched/src/packlib/cspack/sysreq/xdr.c --- 2005_orig/src/packlib/cspack/sysreq/xdr.c 1996-03-08 16:44:26.000000000 +0100 +++ 2005_patched/src/packlib/cspack/sysreq/xdr.c 2006-04-10 14:43:58.000000000 +0200 @@ -52,7 +52,7 @@ #endif /* min */ #ifndef VM -extern char *malloc(); +#include /* standard C library defs */ #endif /* VM */ #ifdef VM diff -urN 2005_orig/src/packlib/cspack/tcpaw/Imakefile 2005_patched/src/packlib/cspack/tcpaw/Imakefile --- 2005_orig/src/packlib/cspack/tcpaw/Imakefile 1999-01-15 14:59:12.000000000 +0100 +++ 2005_patched/src/packlib/cspack/tcpaw/Imakefile 2005-12-02 15:36:36.000000000 +0100 @@ -49,4 +49,9 @@ #endif #endif +#if defined(CERNLIB_LINUX) && defined(CERNLIB_GFORTRAN) + /* This is to avoid warnings in code not used for linux */ +CCOPTIONS+=-trigraphs +#endif + SubdirLibraryTarget(NullParameter,NullParameter) diff -urN 2005_orig/src/packlib/cspack/tcpaw/tcpaw.c 2005_patched/src/packlib/cspack/tcpaw/tcpaw.c --- 2005_orig/src/packlib/cspack/tcpaw/tcpaw.c 2005-04-18 17:39:28.000000000 +0200 +++ 2005_patched/src/packlib/cspack/tcpaw/tcpaw.c 2005-11-21 14:05:09.000000000 +0100 @@ -301,6 +301,7 @@ #ifndef IBMRT /* this is a kludge, one ought to fix the "prototypes" in this file */ #include +#include /* needed for linux gcc4 */ #endif /* IBMRT */ #endif /* WIN32 */ #endif /* IBM */ @@ -478,7 +479,7 @@ #endif /* VMS */ #ifdef AUTHENT - unsigned char idbuf[100]; + char idbuf[100]; char usbuf[20], pwbuf[20]; char *user = usbuf, *passwd = pwbuf; register int i, len; @@ -487,7 +488,7 @@ #ifdef SOCKETS struct hostent *hp; /* host info for remote host */ struct sockaddr_in peeraddr_in; /* for peer socket address */ - int peerlen; + unsigned peerlen; #endif /* SOCKETS */ #ifdef WIN32 @@ -521,7 +522,7 @@ #ifdef SOCKETS memset ((char *)&peeraddr_in, 0, sizeof(struct sockaddr_in)); peerlen = sizeof(peeraddr_in); - if (getpeername(s, &peeraddr_in, &peerlen) == SOCKET_ERROR) { + if (getpeername(s, (struct sockaddr *)&peeraddr_in, &peerlen) == SOCKET_ERROR) { #ifdef LOGFILE fprintf(logfile, "%s: getpeername failed\n", Prog_Name); #endif /* LOGFILE */ @@ -658,7 +659,7 @@ SOCKET *isock, *osock; { #ifdef AUTHENT - unsigned char idbuf[100]; + char idbuf[100]; char usbuf[20], pwbuf[20]; char *user = usbuf, *passwd = pwbuf; register int i, len; @@ -727,7 +728,7 @@ unsigned short sport = *port; /* VM */ #if defined ( _WIN32) && defined (AUTHENT) - unsigned char idbuf[100]; + char idbuf[100]; char usbuf[20], pwbuf[20]; char *user = usbuf, *passwd = pwbuf; register int i, len; @@ -800,7 +801,8 @@ } #endif /* Bind the listen address to the socket. */ - if (bind(ls, &myaddr_in, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { +/* if (bind(ls, &myaddr_in, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { */ + if (bind(ls, (struct sockaddr *)&myaddr_in, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { #if defined(IBM) || defined(_WIN32) tcperror("server_sock_setup: bind(ls,...)"); #else @@ -829,7 +831,8 @@ exit(1); } addrlen = sizeof(struct sockaddr_in); - s = accept(ls, &peeraddr_in, &addrlen); +/* s = accept(ls, &peeraddr_in, &addrlen); */ + s = accept(ls, (struct sockaddr *)&peeraddr_in, (socklen_t *)&addrlen); if ( s == INVALID_SOCKET) { fprintf(stderr, "%s: accept error\n", "server_sock_setup"); return(-1); @@ -984,7 +987,7 @@ char *user = NULL, *passwd = NULL; int port; #if defined(AUTHENT) - unsigned char idbuf[100]; + char idbuf[100]; #endif /* AUTHENT */ #ifdef VMS @@ -1290,7 +1293,8 @@ /* Try to connect to the remote server at the address * which was just built into peeraddr. */ - if (connect(s, &peeraddr_in, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { +/* if (connect(s, &peeraddr_in, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { */ + if (connect(s, (struct sockaddr *)&peeraddr_in, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { #ifndef _WIN32 close(s); #else @@ -1313,7 +1317,8 @@ } addrlen = sizeof(struct sockaddr_in); - if (getsockname(s, &myaddr_in, &addrlen) == SOCKET_ERROR) { +/* if (getsockname(s, &myaddr_in, &addrlen) == SOCKET_ERROR) { */ + if (getsockname(s, (struct sockaddr *)&myaddr_in, (socklen_t *)&addrlen) == SOCKET_ERROR) { #if defined(IBM) || defined(_WIN32) tcperror("client_sock_setup"); #else @@ -2158,6 +2163,7 @@ #define ID 10 #define MACHINE 11 +static rnetrc(char*,char**,char**); static char tokval[100]; static struct toktab { @@ -2423,6 +2429,7 @@ char *host, **aname, **apass; { char *hdir, buf[BUFSIZ]; + int token(); int t; #ifndef _WIN32 struct stat stb; @@ -2498,7 +2505,7 @@ static FILE *cfile; #endif -static +int token() { @@ -2577,7 +2584,7 @@ FILE *fi; static char pbuf[ MAXPASSWD + 1 ]; void (*sig)(), catch(); - + if((fi = fopen("/dev/tty", "r")) == NULL) return((char*)NULL); setbuf(fi, (char*)NULL); @@ -2618,7 +2625,7 @@ return(pbuf); } -static void +void catch() { ++intrupt; @@ -2688,7 +2695,8 @@ ((struct in_addr *)(hp->h_addr))->s_addr; /* bcopy(hp->h_addr, (caddr_t)&sin.sin_addr, hp->h_length); */ } - if (connect(s, &sin, sizeof(struct sockaddr_in)) == SOCKET_ERROR ) { +/* if (connect(s, &sin, sizeof(struct sockaddr_in)) == SOCKET_ERROR ) { */ + if (connect(s, (struct sockaddr *)&sin, sizeof(struct sockaddr_in)) == SOCKET_ERROR ) { #ifndef _WIN32 if (errno == ECONNREFUSED && timo <= 16) { (void) close(s); @@ -3352,7 +3360,8 @@ ((struct in_addr *)(hp->h_addr))->s_addr; /* bcopy(hp->h_addr, (caddr_t)&sin.sin_addr, hp->h_length); */ } - if (connect(s, &sin, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { +/* if (connect(s, &sin, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { */ + if (connect(s, (struct sockaddr *)&sin, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { #ifndef WIN32 if (errno == ECONNREFUSED && timo <= 16) { (void) close(s); diff -urN 2005_orig/src/packlib/fatmen/fmc/faexit.c 2005_patched/src/packlib/fatmen/fmc/faexit.c --- 2005_orig/src/packlib/fatmen/fmc/faexit.c 1997-09-02 14:56:52.000000000 +0200 +++ 2005_patched/src/packlib/fatmen/fmc/faexit.c 2006-04-10 14:52:11.000000000 +0200 @@ -27,6 +27,7 @@ void faexit(icode) #endif #if defined(CERNLIB_QX_SC) +#include /* standard C library defs */ void faexit_(icode) #endif int *icode; diff -urN 2005_orig/src/packlib/hbook/chbook/Imakefile 2005_patched/src/packlib/hbook/chbook/Imakefile --- 2005_orig/src/packlib/hbook/chbook/Imakefile 1999-11-15 14:25:58.000000000 +0100 +++ 2005_patched/src/packlib/hbook/chbook/Imakefile 2006-07-11 16:04:46.000000000 +0200 @@ -13,7 +13,19 @@ #endif #if defined(CERNLIB_LINUX) +EXTRA_DEFINES := $(EXTRA_DEFINES) -D_SVID_SOURCE +#endif + +#if defined(CERNLIB_LINUX) && !defined(CERNLIB_QMLXIA64) +EXTRA_DEFINES := $(EXTRA_DEFINES) -Df2cFortran +#endif + +#if defined(CERNLIB_QMLXIA64) +#if defined(CERNLIB_GCC4) +EXTRA_DEFINES := $(EXTRA_DEFINES) -DgFortran +#else EXTRA_DEFINES := $(EXTRA_DEFINES) -Df2cFortran #endif +#endif SubdirLibraryTarget(NullParameter,NullParameter) diff -urN 2005_orig/src/packlib/hbook/hbook/hcntpar.inc 2005_patched/src/packlib/hbook/hbook/hcntpar.inc --- 2005_orig/src/packlib/hbook/hbook/hcntpar.inc 1996-01-16 18:07:52.000000000 +0100 +++ 2005_patched/src/packlib/hbook/hbook/hcntpar.inc 2005-10-07 10:59:35.000000000 +0200 @@ -24,7 +24,7 @@ + ZIFREA=7, ZNWTIT=8, ZITIT1=9, ZNCHRZ=13, ZIFBIT=8, + ZDESC=1, ZLNAME=2, ZNAME=3, ZRANGE=4, ZNADDR=12, + ZARIND=11, ZIBLOK=8, ZNBLOK=10, ZIBANK=9, ZIFTMP=11, - + ZID=12, ZITMP=10, ZNTMP=6, ZNTMP1=3, ZLINK=6) + + ZID=12, ZITMP=10, ZNTMP=6, ZNTMP1=4, ZLINK=6) * #endif diff -urN 2005_orig/src/packlib/hbook/hntup/hballoc.F 2005_patched/src/packlib/hbook/hntup/hballoc.F --- 2005_orig/src/packlib/hbook/hntup/hballoc.F 1996-01-16 18:07:56.000000000 +0100 +++ 2005_patched/src/packlib/hbook/hntup/hballoc.F 2005-12-07 18:32:13.000000000 +0100 @@ -25,8 +25,13 @@ *..=========> ( A.A.Rademakers ) * CHARACTER*(*) CHDIR, VAR, BLOCK - INTEGER IDN, ITYPE, ISIZE, NELEM, IBASE(1), IBUF(1) - INTEGER IOFF, NUSE, IFIRST + INTEGER IDN, ITYPE, ISIZE, NELEM, NUSE, IFIRST, IBASE(1) +#if defined(CERNLIB_QMLXIA64) + INTEGER*8 IBUF(1), IOFF + PARAMETER (NADUPW=4, LADUPW=2) +#else + INTEGER IBUF(1), IOFF +#endif * LC = LENOCC(CHDIR) LV = LENOCC(VAR) @@ -38,7 +43,15 @@ IF (NUSE .EQ. 0) THEN IOFF = 0 ELSE +#if defined(CERNLIB_QMLXIA64) && defined(CERNLIB_QMGLIBC) +* IBUF contains an address (dynamic memory allocation) +* which may exceed the 32 bit address space +* use intrinsic LOC function here (which returns a 64 bit address) +* IOFF is used afterwards as index to the PAWC common + IOFF = IBUF(1) - LOC(IBASE(1))/NADUPW +#else IOFF = IBUF(1) - LOCF(IBASE(1)) +#endif ENDIF * END diff -urN 2005_orig/src/packlib/hbook/hntup/hbnt.F 2005_patched/src/packlib/hbook/hntup/hbnt.F --- 2005_orig/src/packlib/hbook/hntup/hbnt.F 1996-01-16 18:07:56.000000000 +0100 +++ 2005_patched/src/packlib/hbook/hntup/hbnt.F 2005-10-07 13:24:17.000000000 +0200 @@ -274,6 +274,8 @@ * 3 * * Offset of variable in LNAME bank (INDX-1)*ZNADDR* * 4 * * Offset in dynamically allocated buffer (only * * * * used via HGNTBF) otherwise 0 * + * 5 * * spare (used in 64 bit architectures for upper * + * * * address part * ************************************************************************ #endif * diff -urN 2005_orig/src/packlib/hbook/hntup/hgnt2.F 2005_patched/src/packlib/hbook/hntup/hgnt2.F --- 2005_orig/src/packlib/hbook/hntup/hgnt2.F 1999-03-05 16:42:35.000000000 +0100 +++ 2005_patched/src/packlib/hbook/hntup/hgnt2.F 2005-10-07 14:19:58.000000000 +0200 @@ -21,7 +21,7 @@ *. *. Return in the preset addresses (set by HBNAME) or *. in IQ(IVOFF(n)+1) (if NVAR<0) the values of the variables in -*. the current block for the event (row) IDNEVT. +*. the current block for the event (row) IDNEVT. \ *. *. This routine does the actual reading of the variables in block LBLOK. *. @@ -34,7 +34,13 @@ #include "hbook/hcrecv.inc" * CHARACTER*(*) VAR1(*) +#if defined(CERNLIB_QMLXIA64) + INTEGER*8 IVOFF(*), IOFFST, IOFFSTT + INTEGER IOFFSTV(2) + EQUIVALENCE (IOFFSTV, IOFFSTT) +#else INTEGER IVOFF(*) +#endif CHARACTER*32 VAR INTEGER ILOGIC, HNMPTR LOGICAL LOGIC, INDVAR, ALLVAR, USEBUF, CHKOFF @@ -452,10 +458,15 @@ IQ(LTMP1+JTMP+1) = IOFF IF (USEBUF) THEN IF (IEDIF .EQ. 0) THEN - IQ(LTMP1+JTMP+2) = IOFFST + IOFFSTT = IOFFST ELSE - IQ(LTMP1+JTMP+2) = IOFFST + (IEDIF*ISHFT(ISIZE,-2)) + IOFFSTT = IOFFST + (IEDIF*ISHFT(ISIZE,-2)) ENDIF + IQ(LTMP1+JTMP+2) = IOFFSTT +#if defined(CERNLIB_QMLXIA64) +* store upper part of 64 bit address + IQ(LTMP1+JTMP+3) = IOFFSTV(2) +#endif ELSE IQ(LTMP1+JTMP+2) = 0 ENDIF diff -urN 2005_orig/src/packlib/hbook/hntup/hgntf.F 2005_patched/src/packlib/hbook/hntup/hgntf.F --- 2005_orig/src/packlib/hbook/hntup/hgntf.F 1999-03-05 16:42:35.000000000 +0100 +++ 2005_patched/src/packlib/hbook/hntup/hgntf.F 2005-10-07 12:42:52.000000000 +0200 @@ -37,6 +37,13 @@ INTEGER ILOGIC LOGICAL LOGIC, INDVAR, USEBUF EQUIVALENCE (LOGIC, ILOGIC) + +#if defined(CERNLIB_QMLXIA64) + INTEGER*8 IOFFST, IOFFSTT + INTEGER IOFFSTV(2) + EQUIVALENCE (IOFFSTV, IOFFSTT) +#endif + * #include "hbook/jbyt.inc" * @@ -76,6 +83,12 @@ INDX = IQ(LTMP1+JTMP) IOFF = IQ(LTMP1+JTMP+1) IOFFST = IQ(LTMP1+JTMP+2) +#if defined(CERNLIB_QMLXIA64) +* fetch full 64 bit address + IOFFSTV(1) = IQ(LTMP1+JTMP+2) + IOFFSTV(2) = IQ(LTMP1+JTMP+3) + IOFFST = IOFFSTT +#endif IF (IOFFST .EQ. 0) THEN USEBUF = .FALSE. ELSE @@ -442,10 +455,15 @@ * IF (USEBUF) THEN IF (IEDIF .EQ. 0) THEN - IQ(LTMP1+JTMP+2) = IOFFST + IOFFSTT = IOFFST ELSE - IQ(LTMP1+JTMP+2) = IOFFST + (IEDIF*ISHFT(ISIZE,-2)) + IOFFSTT = IOFFST + (IEDIF*ISHFT(ISIZE,-2)) ENDIF + IQ(LTMP1+JTMP+2) = IOFFSTT +#if defined(CERNLIB_QMLXIA64) +* store upper part of 64 bit address + IQ(LTMP1+JTMP+3) = IOFFSTV(2) +#endif ELSE IQ(LTMP1+JTMP+2) = 0 ENDIF diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/Imakefile 2005_patched/src/packlib/kernlib/kerngen/ccgen/Imakefile --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/Imakefile 2002-09-19 18:44:52.000000000 +0200 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/Imakefile 2006-07-04 10:46:18.000000000 +0200 @@ -11,6 +11,10 @@ sleepf.c signalf.c sigprnt.c sigunbl.c stati.c systei.c \ @@\ tminit.c unlini.c tmread.c +#ifdef CERNLIB_QMLXIA64 +SRCS_C += chkloc.c +#endif + #ifndef CERNLIB_OS9 SRCS_C += timel.c lstati.c #endif diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/abend.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/abend.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/abend.c 1997-02-04 18:34:12.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/abend.c 2006-04-10 15:24:32.000000000 +0200 @@ -19,6 +19,7 @@ CERN PROGLIB# Z035 ABEND .VERSION KERNFOR 4.31 911111 */ #if defined(CERNLIB_QX_SC) +#include void type_of_call abend_() #endif #if defined(CERNLIB_QXNO_SC) diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/chkloc.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/chkloc.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/chkloc.c 1970-01-01 01:00:00.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/chkloc.c 2006-06-14 13:56:38.000000000 +0200 @@ -0,0 +1,10 @@ +/* + * Utility routine for locf and locb + * H. Vogt (harald.vogt@desy.de) + * + */ + +#if defined(CERNLIB_QMLXIA64) +#include "lp64gs/chkloc.c" +#endif + diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/ctimef.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/ctimef.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/ctimef.c 1997-02-04 18:34:14.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/ctimef.c 2006-04-10 15:27:41.000000000 +0200 @@ -24,6 +24,7 @@ STIME decoded time string of length 24 (CHARACTER*24 STIME) */ #if defined(CERNLIB_QX_SC) +#include void type_of_call ctimef_(clock, stime) #endif #if defined(CERNLIB_QXNO_SC) diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/exitf.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/exitf.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/exitf.c 1997-02-04 18:34:16.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/exitf.c 2006-04-10 15:29:19.000000000 +0200 @@ -19,6 +19,7 @@ CERN PROGLIB# Z035 EXITF .VERSION KERNFOR 4.39 940228 */ #if defined(CERNLIB_QX_SC) +#include void type_of_call exitf_(st) #endif #if defined(CERNLIB_QXNO_SC) diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/getwdi.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/getwdi.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/getwdi.c 1997-09-02 16:26:36.000000000 +0200 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/getwdi.c 2006-04-10 15:35:53.000000000 +0200 @@ -29,6 +29,7 @@ ISLATE(1) returns its lenth NTEXT */ #include +#include #ifdef WIN32 #include # ifndef getcwd @@ -58,7 +59,7 @@ #endif int *lgname; { - char *malloc(); +/* char *malloc(); - see above "#include " */ char *ptalc, *pttext; int fchput(); int nalc; diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/jumptn.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/jumptn.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/jumptn.c 2004-07-29 16:07:43.000000000 +0200 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/jumptn.c 2006-07-13 11:25:39.000000000 +0200 @@ -20,8 +20,10 @@ */ #include "kerngen/pilot.h" -#if defined(CERNLIB_QMLXIA64)||defined(CERNLIB_QMVAOS) -#include "vaogs/jumptn.c" +#if defined(CERNLIB_QMVAOS) +#include "vaogs/jumptn.c" +#elif defined(CERNLIB_QMLXIA64) +#include "lp64gs/jumptn.c" #else /*> ROUTINE JUMPTN CERN PROGLIB# Z043 JUMPTN .VERSION KERNFOR 4.40 940929 diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/jumpxn.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/jumpxn.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/jumpxn.c 2004-07-29 16:07:43.000000000 +0200 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/jumpxn.c 2006-07-17 15:55:29.000000000 +0200 @@ -20,8 +20,10 @@ */ #include "kerngen/pilot.h" -#if defined(CERNLIB_QMLXIA64)||defined(CERNLIB_QMVAOS) +#if defined(CERNLIB_QMVAOS) #include "vaogs/jumpxn.c" +#elif defined(CERNLIB_QMLXIA64) +#include "lp64gs/jumpxn.c" #else /*> ROUTINE JUMPXN CERN PROGLIB# Z042 JUMPXN .VERSION KERNFOR 4.40 940929 diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/lenocc.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/lenocc.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/lenocc.c 1997-10-23 18:25:11.000000000 +0200 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/lenocc.c 2006-03-31 17:18:22.000000000 +0200 @@ -46,7 +46,7 @@ /* look at the last ntail characters */ - ntail = ((int)chcur & 3); + ntail = ((unsigned long)chcur & 3); for (i = ntail; i > 0; i--) { if (*--chcur != ' ') goto exit; } diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/locb.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/locb.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/locb.c 1997-09-02 16:26:37.000000000 +0200 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/locb.c 2006-06-14 13:52:42.000000000 +0200 @@ -26,6 +26,9 @@ # define DummyDef #endif +#if defined(CERNLIB_QMLXIA64) +#include "lp64gs/locb.c" +#else /*> ROUTINE LOCB CERN PROGLIB# N101 LOCB .VERSION KERNFOR 4.36 930602 @@ -47,6 +50,8 @@ return( (int) iadr ); } /*> END <----------------------------------------------------------*/ +#endif #ifdef CERNLIB_TCGEN_LOCB #undef CERNLIB_TCGEN_LOCB #endif + diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/locf.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/locf.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/locf.c 2004-07-29 16:06:07.000000000 +0200 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/locf.c 2006-06-14 13:48:45.000000000 +0200 @@ -50,6 +50,8 @@ #include "irtdgs/locf.c" #elif defined(CERNLIB_QMVAOS) #include "vaogs/locf.c" +#elif defined(CERNLIB_CERNLIB_QMLXIA64) +#include "lp64gs/locf.c" #else /*> ROUTINE LOCF CERN PROGLIB# N100 LOCF .VERSION KERNFOR 4.36 930602 @@ -68,25 +70,7 @@ DummyDef #endif { -#if defined(CERNLIB_QMLXIA64) - const unsigned long long int mask=0x00000000ffffffff; - static unsigned long long int base=1; - unsigned long long int jadr=(unsigned long long int) iadr; - unsigned long long int jadrl = ((mask & jadr) >> LADUPW); - - if (base == 1) { - base = (~mask & jadr); - } else if(base != (~mask & jadr)) { - printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); - printf("locf_() Warning: changing base from %lx to %lx!!!\n", - base, (~mask & jadr)); - printf("This may result in program crash or incorrect results\n"); - printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); - } - return ((unsigned) jadrl); -#else return( ((unsigned) iadr) >> LADUPW ); -#endif } #undef Dummy2LocPar #undef DummyDef diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/lp64gs/chkloc.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/lp64gs/chkloc.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/lp64gs/chkloc.c 1970-01-01 01:00:00.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/lp64gs/chkloc.c 2006-07-17 15:35:46.000000000 +0200 @@ -0,0 +1,58 @@ +/* + * + * Revision 1.1.1.1 2006/06/14 + * Kernlib utility for locf, locb on LP64 architectures H. Vogt + * (AMD64/Intel EM64T and IA64) + * + */ + +#include "stdio.h" +#include + +/*> ROUTINE LOCF + CERN PROGLIB# N100 LOCF .VERSION KERNFOR 4.36 930602 +*/ +/*> ROUTINE LOCB + CERN PROGLIB# N101 LOCB .VERSION KERNFOR 4.36 930602 +*/ + +unsigned int chkloc(iadr) + char *iadr; +{ + /* 64 bit architectures may exceed the 32 bit address space ! */ + + /* AMD64/Intel EM64T architectures have the dynamic segments above + 0x80000000000 and the stack immediately below this whereas the text and + data segments are staring from 0x400000. The implementations address + space is limited to 0x00007fffffffffff. + Allocated memory with malloc/calloc is starting from the end of text and + data segments upwards. + + IA64 architectures have the dynamic segments are above 0x2000000000000000, + the stack is above 0x8000000000000000, the data segments starts at + 0x6000000000000000 and the text segments start at 0x4000000000000000 + Allocated memory with malloc/calloc is starting from the end of + data segments upwards. All addresses here are expected to be in + the data segment area. */ + + const unsigned long mask=0xffffffff00000000; + static unsigned long limit=0x00000000ffffffff; + unsigned long jadr=((unsigned long) iadr & mask); +#if !defined (__ia64__) + if ( jadr != 0x0000000000000000) { +#else + if ( jadr != 0x6000000000000000) { +#endif + printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + printf("LOCB/LOCF: address %p exceeds the 32 bit address space\n", iadr); + printf("or is not in the data segments\n"); + printf("This may result in program crash or incorrect results\n"); + printf("Therefore we will stop here\n"); + printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + exit (999); + } + jadr=((unsigned long) iadr & limit); + return ((unsigned) jadr); +} +/*> END <----------------------------------------------------------*/ + diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/lp64gs/jumptn.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/lp64gs/jumptn.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/lp64gs/jumptn.c 1970-01-01 01:00:00.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/lp64gs/jumptn.c 2006-07-17 14:44:52.000000000 +0200 @@ -0,0 +1,83 @@ +/* + * $Id: jumptn.c,v 1.1.1.1 1996/02/15 17:49:32 mclareni Exp $ + * + * $Log: jumptn.c,v $ + * Revision 1.1.1.1 1996/02/15 17:49:32 mclareni + * Kernlib + * + */ +/*> ROUTINE JUMPTN + CERN PROGLIB# Z043 JUMPTN .VERSION KERNLP64 1.00 060717 + Copy of JUMPTN .VERSION KERNVMI 1.09 940531 + ORIG. 21/04/88 JZ+FCA +C +C- To transfer to the user routine TARGET (say) with 2 parameters +C- two steps are needed : + +C- 1) EXTERNAL TARGET to get the address of TARGET +C- IADR = JUMPAD (TARGET) + +C- 3) CALL JUMPT2 (IADR,par1,par2) to transfer +*/ +#define jumpt0 jumpt0_ +#define jumpt1 jumpt1_ +#define jumpt2 jumpt2_ +#define jumpt3 jumpt3_ +#define jumpt4 jumpt4_ + +extern int jumpad_(); + +static void (*jumpto)(); + +void jumpt0(iadr) + int *iadr; +{ + long func; + func = *iadr + (long)jumpad_; + jumpto = (void(*)()) func; + jumpto(); + return; +} + +void jumpt1(iadr,ipara) + int *iadr; + char *ipara; +{ + long func; + func = *iadr + (long)jumpad_; + jumpto = (void(*)()) func; + jumpto (ipara); + return; +} + +void jumpt2(iadr, ipara, iparb) + int *iadr; + char *ipara, *iparb; +{ + long func; + func = *iadr + (long)jumpad_; + jumpto = (void(*)()) func; + jumpto (ipara, iparb); + return; +} +void jumpt3(iadr, ipara, iparb, iparc) + int *iadr; + char *ipara, *iparb, *iparc; +{ + long func; + func = *iadr + (long)jumpad_; + jumpto = (void(*)()) func; + jumpto (ipara, iparb, iparc); + return; +} +void jumpt4(iadr, ipara, iparb, iparc, ipard) + int *iadr; + char *ipara, *iparb, *iparc, *ipard; +{ + long func; + func = *iadr + (long)jumpad_; + jumpto = (void(*)()) func; + jumpto (ipara, iparb, iparc, ipard); + return; +} +/*> END <----------------------------------------------------------*/ diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/lp64gs/jumpxn.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/lp64gs/jumpxn.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/lp64gs/jumpxn.c 1970-01-01 01:00:00.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/lp64gs/jumpxn.c 2006-07-17 15:57:53.000000000 +0200 @@ -0,0 +1,92 @@ +/* + * $Id: jumpxn.c,v 1.1.1.1 1996/02/15 17:49:32 mclareni Exp $ + * + * $Log: jumpxn.c,v $ + * Revision 1.1.1.1 1996/02/15 17:49:32 mclareni + * Kernlib + * + */ +/*> ROUTINE JUMPXN + CERN PROGLIB# Z043 JUMPXN .VERSION KERNLP64 1.00 060717 + Copy of JUMPXN .VERSION KERNVMI 1.08 930527 + ORIG. 21/04/88 JZ+FCA, adapted 11/05/93 AP+JZ +C +C- To transfer to the user routine TARGET (say) with 2 parameters +C- three steps are needed : +C- Check that relative jump addresses fits into 32 bits + +C- 1) EXTERNAL TARGET to get the address of TARGET +C- IADR = JUMPAD (TARGET) + +C- 2) CALL JUMPST (IADR) to set the tranfer address + +C- 3) CALL JUMPX2 (par1,par2) to transfer +*/ + +#include "stdio.h" +#include + +static void (*tarsub)(); + +/* ---- jumpad --------------------------------------------- */ +int jumpad_(ifun) + char *ifun; +{ + long temp; + + temp = (long)ifun - (long)jumpad_; + if (labs(temp) > 0x3fffffff) { + printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + printf("JUMPAD: address %p exceeds the 32 bit address space\n", temp); + printf("This may result in program crash or incorrect results\n"); + printf("Therefore we will stop here\n"); + printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + exit (999); + } + return (int) temp; +} + +/* ---- jumpst --------------------------------------------- */ +void jumpst_(iadr) + int *iadr; +{ + long true; + + true = (long)jumpad_; + true = true + *iadr; + tarsub = (void (*)())true; +} + +/* ---- jumpxn --------------------------------------------- */ +jumpx0_() +{ + (*tarsub)(); + return; +} + +jumpx1_(ipara) + char *ipara; +{ + (*tarsub)(ipara); + return; +} + +jumpx2_(ipara, iparb) + char *ipara, *iparb; +{ + (*tarsub)(ipara, iparb); + return; +} +jumpx3_(ipara, iparb, iparc) + char *ipara, *iparb, *iparc; +{ + (*tarsub)(ipara, iparb, iparc); + return; +} +jumpx4_(ipara, iparb, iparc, ipard) + char *ipara, *iparb, *iparc, *ipard; +{ + (*tarsub)(ipara, iparb, iparc, ipard); + return; +} +/*> END <----------------------------------------------------------*/ diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/lp64gs/locb.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/lp64gs/locb.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/lp64gs/locb.c 1970-01-01 01:00:00.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/lp64gs/locb.c 2006-06-14 13:26:45.000000000 +0200 @@ -0,0 +1,12 @@ +/*> ROUTINE LOCB + CERN PROGLIB# N101 LOCB .VERSION KERNFOR 4.36 930602 +*/ + +unsigned int chkloc(char *address); + +unsigned int locb_(iadr) + char *iadr; +{ + return (chkloc(iadr)); +} + diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/lp64gs/locf.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/lp64gs/locf.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/lp64gs/locf.c 1970-01-01 01:00:00.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/lp64gs/locf.c 2006-06-14 13:25:36.000000000 +0200 @@ -0,0 +1,10 @@ +/*> ROUTINE LOCF + CERN PROGLIB# N100 LOCF .VERSION KERNFOR 4.36 930602 +*/ +unsigned int chkloc(char *address); + +unsigned int locf_(iadr) + char *iadr; +{ + return ( (chkloc(iadr)) >> 2 ); +} diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/lstati.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/lstati.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/lstati.c 1997-02-04 18:34:35.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/lstati.c 2006-03-31 17:15:20.000000000 +0200 @@ -26,6 +26,7 @@ Fortran interface routine to lstat */ #include +#include #include #include #include "kerngen/fortchar.h" @@ -56,7 +57,7 @@ ptname = fchtak(fname,*lgname); if (ptname == NULL) goto out1; - buf = (struct stat *) malloc(sizeof (struct stat)); + buf = malloc(sizeof (struct stat)); if (buf == NULL) goto out2; istat = lstat(ptname, buf); diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/signalf.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/signalf.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/signalf.c 1999-10-06 16:17:01.000000000 +0200 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/signalf.c 2006-03-31 16:49:20.000000000 +0200 @@ -45,6 +45,7 @@ C- function value = adr of previous handler */ #include +typedef void (*sighandler_t)(int); #if defined(CERNLIB_QX_SC) int type_of_call signalf_(signum,funct,flag) #endif @@ -58,7 +59,7 @@ int *funct; { int signo, istat; - int handler; + sighandler_t handler; void *oldhand; signo = *signum; @@ -67,14 +68,15 @@ if (*flag < 0) handler = *funct; #endif #if !defined(CERNLIB_QCCINDAD) - if (*flag < 0) handler = (int)funct; + if (*flag < 0) handler = (sighandler_t)funct; #endif - else if (*flag == 0) handler = (int)SIG_DFL; - else if (*flag == 1) handler = (int)SIG_IGN; - else handler = *flag; + else if (*flag == 0) handler = (sighandler_t)SIG_DFL; + else if (*flag == 1) handler = (sighandler_t)SIG_IGN; + else handler = (sighandler_t)(long)*flag; oldhand = signal(signo,handler); - istat = (int)oldhand; + unsigned long myistat = (unsigned long)oldhand; + istat = (int)myistat; #ifndef __GNUC__ if (oldhand == SIG_ERR) istat = -1; #endif diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/sigprnt.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/sigprnt.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/sigprnt.c 1997-02-04 18:34:42.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/sigprnt.c 2006-03-31 16:57:26.000000000 +0200 @@ -34,7 +34,7 @@ #ifndef CERNLIB_WINNT sigset_t oldmask; - sigprocmask (NULL, NULL, &oldmask); + sigprocmask ( 0, NULL, &oldmask); printf (" blocked signals are: %x\n", oldmask); #else diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/stati.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/stati.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/stati.c 1997-09-02 16:26:39.000000000 +0200 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/stati.c 2006-03-31 17:10:20.000000000 +0200 @@ -26,6 +26,7 @@ Fortran interface routine to stat */ #include +#include #if defined(CERNLIB_QMVAX)||defined(CERNLIB_QMOS9) #include #include @@ -72,7 +73,7 @@ if (ptname == NULL) goto out1; #ifndef WIN32 - buf = (struct stat *) malloc(sizeof (struct stat)); + buf = malloc(sizeof (struct stat)); #else buf = (struct _stat *) malloc(sizeof (struct _stat)); #endif diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgen/timel.c 2005_patched/src/packlib/kernlib/kerngen/ccgen/timel.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgen/timel.c 1997-02-04 18:34:47.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgen/timel.c 2006-05-04 13:19:50.000000000 +0200 @@ -30,6 +30,7 @@ #include #include #include +#include /* For ia64... */ #ifndef CLOCKS_PER_SEC #define CLOCKS_PER_SEC CLK_TCK diff -urN 2005_orig/src/packlib/kernlib/kerngen/ccgenu/fchtak.c 2005_patched/src/packlib/kernlib/kerngen/ccgenu/fchtak.c --- 2005_orig/src/packlib/kernlib/kerngen/ccgenu/fchtak.c 1996-02-15 18:49:40.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/ccgenu/fchtak.c 2006-04-10 15:39:22.000000000 +0200 @@ -16,6 +16,7 @@ return the memory pointer */ #include +#include #include "kerngen/fortchar.h" char *fchtak(ftext,lgtext) #if defined(CERNLIB_QMCRY) @@ -26,7 +27,7 @@ #endif int lgtext; { - char *malloc(); + /* char *malloc(); - see above "#include " */ char *ptalc, *ptuse; char *utext; int nalc; diff -urN 2005_orig/src/packlib/kernlib/kerngen/kerngen/klnx.h 2005_patched/src/packlib/kernlib/kerngen/kerngen/klnx.h --- 2005_orig/src/packlib/kernlib/kerngen/kerngen/klnx.h 1998-09-25 11:31:11.000000000 +0200 +++ 2005_patched/src/packlib/kernlib/kerngen/kerngen/klnx.h 2005-11-22 20:22:40.000000000 +0100 @@ -8,15 +8,22 @@ * Hollerith storage not orthodox * UCOPY et al. to copy integers #endif -#ifndef CERNLIB_QMLNX -#define CERNLIB_QMLNX -#endif #ifndef CERNLIB_QPOSIX #define CERNLIB_QPOSIX #endif #ifndef CERNLIB_QIEEE #define CERNLIB_QIEEE #endif +#ifndef CERNLIB_QINTCOPY +#define CERNLIB_QINTCOPY +#endif +#ifndef CERNLIB_QINTZERO +#define CERNLIB_QINTZERO +#endif +#if (!defined(CERNLIB_GFORTRAN)) +# ifndef CERNLIB_QMLNX +# define CERNLIB_QMLNX +# endif #if (!defined(CERNLIB_PPC)) # ifdef CERNLIB_QISASTD # undef CERNLIB_QISASTD @@ -25,6 +32,9 @@ # undef CERNLIB_QORTHOLL # endif #else +# ifdef CERNLIB_QMLNX +# undef CERNLIB_QMLNX +# endif # ifndef CERNLIB_QISASTD # define CERNLIB_QISASTD # endif @@ -32,9 +42,12 @@ # define CERNLIB_QORTHOLL # endif #endif -#ifndef CERNLIB_QINTCOPY -#define CERNLIB_QINTCOPY -#endif -#ifndef CERNLIB_QINTZERO -#define CERNLIB_QINTZERO + +#else +# ifndef CERNLIB_QISASTD +# define CERNLIB_QISASTD +# endif +# ifdef CERNLIB_QORTHOLL +# undef CERNLIB_QORTHOLL +# endif #endif diff -urN 2005_orig/src/packlib/kernlib/kerngen/tcgen/Imakefile 2005_patched/src/packlib/kernlib/kerngen/tcgen/Imakefile --- 2005_orig/src/packlib/kernlib/kerngen/tcgen/Imakefile 1997-02-04 18:36:14.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/tcgen/Imakefile 2005-12-16 16:13:22.000000000 +0100 @@ -52,7 +52,7 @@ #if defined(CERNLIB_DOS) || defined(CERNLIB_MPW) || defined(CERNLIB_LNX) || defined(CERNLIB_WINNT) SRCS_F := $(SRCS_F) lenocc.F #endif -#ifdef CERNLIB_HPUX +#if defined(CERNLIB_HPUX) || defined(CERNLIB_GCC4) SRCS_F := $(SRCS_F) getarg.F #endif diff -urN 2005_orig/src/packlib/kernlib/kerngen/tcgen/getarg.F 2005_patched/src/packlib/kernlib/kerngen/tcgen/getarg.F --- 2005_orig/src/packlib/kernlib/kerngen/tcgen/getarg.F 1996-02-15 18:49:40.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/tcgen/getarg.F 2005-12-01 10:58:30.000000000 +0100 @@ -11,4 +11,6 @@ #include "hpxgs/getarg.F" #elif defined(CERNLIB_QMVAX) #include "vaxsys/getarg.F" +#elif defined(CERNLIB_GFORTRAN) +#include "lnxgfort/getarg.F" #endif diff -urN 2005_orig/src/packlib/kernlib/kerngen/tcgen/lnxgfort/getarg.F 2005_patched/src/packlib/kernlib/kerngen/tcgen/lnxgfort/getarg.F --- 2005_orig/src/packlib/kernlib/kerngen/tcgen/lnxgfort/getarg.F 1970-01-01 01:00:00.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/tcgen/lnxgfort/getarg.F 2006-06-07 11:52:11.000000000 +0200 @@ -0,0 +1,17 @@ +* + SUBROUTINE GETARG (JARG, CHARG) +* The following stuff is required to use gfortrans inline routine GETARG +* It is required to avoid the calling GETARG here which conflicts +* to the Fortran rules + CHARACTER CHARG*(*) + CALL MYGETARG (JARG, CHARG) + END + + SUBROUTINE MYGETARG (JARG, CHARG) + CHARACTER CHARG*(*) +* gfortran translates the following line to a call +* to its library routine _gfortran_getarg_i4 +* therefore it will not clash in the linking step + CALL GETARG (JARG, CHARG) + END + diff -urN 2005_orig/src/packlib/kernlib/kerngen/tcgens/iucomh.F 2005_patched/src/packlib/kernlib/kerngen/tcgens/iucomh.F --- 2005_orig/src/packlib/kernlib/kerngen/tcgens/iucomh.F 1997-02-04 18:36:24.000000000 +0100 +++ 2005_patched/src/packlib/kernlib/kerngen/tcgens/iucomh.F 2005-11-22 21:14:05.000000000 +0100 @@ -17,7 +17,7 @@ #include "wntgs/iucomh.F" #elif defined(CERNLIB_QMDOS) #include "dosgs/iucomh.F" -#elif defined(CERNLIB_QMVAOS)||defined(CERNLIB_QMVMI) +#elif defined(CERNLIB_QMVAOS)||defined(CERNLIB_QMVMI)||defined(CERNLIB_GFORTRAN) #include "allgs/iucomh.F" #elif defined(CERNLIB_QMLNX) #include "lnxgs/iucomh.F" diff -urN 2005_orig/src/packlib/kernlib/kerngen/tcgens/rndm.F 2005_patched/src/packlib/kernlib/kerngen/tcgens/rndm.F --- 2005_orig/src/packlib/kernlib/kerngen/tcgens/rndm.F 1997-10-23 18:37:04.000000000 +0200 +++ 2005_patched/src/packlib/kernlib/kerngen/tcgens/rndm.F 2005-12-01 08:51:38.000000000 +0100 @@ -24,7 +24,7 @@ #include "mpwgs/rndm.F" #elif defined(CERNLIB_QMVAOS)||defined(CERNLIB_QMVMI) #include "allgs/rndm.F" -#elif defined(CERNLIB_QMLNX) +#elif defined(CERNLIB_QMLNX)||defined(CERNLIB_GFORTRAN) #include "lnxgs/rndm.F" #elif defined(CERNLIB_QMIRTD) #include "irtdgs/rndm.F" diff -urN 2005_orig/src/packlib/kernlib/kerngen/tcgens/ublow.F 2005_patched/src/packlib/kernlib/kerngen/tcgens/ublow.F --- 2005_orig/src/packlib/kernlib/kerngen/tcgens/ublow.F 1998-09-25 11:32:02.000000000 +0200 +++ 2005_patched/src/packlib/kernlib/kerngen/tcgens/ublow.F 2005-11-22 21:15:08.000000000 +0100 @@ -25,7 +25,7 @@ #include "dosgs/ublow.F" #elif defined(CERNLIB_QMMPW) #include "mpwgs/ublow.F" -#elif defined(CERNLIB_QMVAOS)||defined(CERNLIB_QMVMI) +#elif defined(CERNLIB_QMVAOS)||defined(CERNLIB_QMVMI)||defined(CERNLIB_GFORTRAN) #include "allgs/ublow.F" #elif (defined(CERNLIB_QMLNX) && !defined(CERNLIB_PPC)) #include "lnxgs/ublow.F" diff -urN 2005_orig/src/packlib/kernlib/kerngen/tcgens/ubunch.F 2005_patched/src/packlib/kernlib/kerngen/tcgens/ubunch.F --- 2005_orig/src/packlib/kernlib/kerngen/tcgens/ubunch.F 1998-09-25 11:32:06.000000000 +0200 +++ 2005_patched/src/packlib/kernlib/kerngen/tcgens/ubunch.F 2005-11-22 21:15:24.000000000 +0100 @@ -23,7 +23,7 @@ #include "wntgs/ubunch.F" #elif defined(CERNLIB_QMDOS) || defined(CERNLIB_WINNT) #include "dosgs/ubunch.F" -#elif defined(CERNLIB_QMVAOS)||defined(CERNLIB_QMVMI) +#elif defined(CERNLIB_QMVAOS)||defined(CERNLIB_QMVMI)||defined(CERNLIB_GFORTRAN) #include "allgs/ubunch.F" #elif (defined(CERNLIB_QMLNX) && !defined(CERNLIB_PPC)) #include "lnxgs/ubunch.F" diff -urN 2005_orig/src/packlib/kuip/code_kuip/getline.c 2005_patched/src/packlib/kuip/code_kuip/getline.c --- 2005_orig/src/packlib/kuip/code_kuip/getline.c 1998-08-25 14:47:32.000000000 +0200 +++ 2005_patched/src/packlib/kuip/code_kuip/getline.c 2006-04-10 15:12:30.000000000 +0200 @@ -1351,7 +1351,7 @@ static char * hist_save(p) -char *p; +const char *p; /* makes a copy of the string */ { char *s; diff -urN 2005_orig/src/packlib/kuip/code_kuip/kkern.c 2005_patched/src/packlib/kuip/code_kuip/kkern.c --- 2005_orig/src/packlib/kuip/code_kuip/kkern.c 1996-05-01 14:08:38.000000000 +0200 +++ 2005_patched/src/packlib/kuip/code_kuip/kkern.c 2005-12-02 15:45:26.000000000 +0100 @@ -39,7 +39,8 @@ if( len >= (sizeof blanks) * 4 ) { /* check single characters until next word boundary */ - switch( (int)&str[len] & ( (sizeof blanks) - 1 ) ) { + /* use type long here to be conform with 64 bit architectures*/ + switch( (long)&str[len] & ( (sizeof blanks) - 1 ) ) { case 7: if( str[--len] != ' ' ) return len + 1; case 6: diff -urN 2005_orig/src/packlib/kuip/code_motif/iconwidget.c 2005_patched/src/packlib/kuip/code_motif/iconwidget.c --- 2005_orig/src/packlib/kuip/code_motif/iconwidget.c 1996-03-08 16:33:10.000000000 +0100 +++ 2005_patched/src/packlib/kuip/code_motif/iconwidget.c 2006-03-31 13:50:09.000000000 +0200 @@ -284,7 +284,7 @@ Boolean in = (iw->icon.armed && really) || iw->icon.shadow_type == XmSHADOW_IN; - if ((iw->primitive.shadow_thickness) > 0 && XtIsRealized (iw)) { + if ((iw->primitive.shadow_thickness) > 0 && XtIsRealized ((Widget)iw)) { _XmDrawShadow (XtDisplay (iw), XtWindow (iw), in ? iw->primitive.bottom_shadow_GC : iw->primitive.top_shadow_GC, diff -urN 2005_orig/src/packlib/kuip/code_motif/kmbrow.c 2005_patched/src/packlib/kuip/code_motif/kmbrow.c --- 2005_orig/src/packlib/kuip/code_motif/kmbrow.c 1996-03-08 16:33:08.000000000 +0100 +++ 2005_patched/src/packlib/kuip/code_motif/kmbrow.c 2006-03-31 13:57:17.000000000 +0200 @@ -278,7 +278,7 @@ char *path, *title; char cval[MAX_string], cval1[MAX_string]; int i, fitem, fcnt, dcnt, icon_type; - int browser_count = 0; + long browser_count = 0; BrObject *brobj; diff -urN 2005_orig/src/packlib/kuip/code_motif/kuxxt.c 2005_patched/src/packlib/kuip/code_motif/kuxxt.c --- 2005_orig/src/packlib/kuip/code_motif/kuxxt.c 1996-03-08 16:33:11.000000000 +0100 +++ 2005_patched/src/packlib/kuip/code_motif/kuxxt.c 2006-03-31 15:48:20.000000000 +0200 @@ -340,7 +340,7 @@ { (void) XDeleteContext( XtDisplay( UxTopLevel ), (Window) wgt, - (XContext) client_data ); + (XContext) (long)client_data ); } /****************************************************************************** @@ -385,7 +385,7 @@ return ( UX_ERROR ); XtAddCallback (wgt, XmNdestroyCallback, - UxDeleteContextCB, (XtPointer) xcontext_id); + UxDeleteContextCB, (XtPointer) (long)xcontext_id); return ( UX_NO_ERROR ); } diff -urN 2005_orig/src/packlib/kuip/code_motif/mkdcmp.c 2005_patched/src/packlib/kuip/code_motif/mkdcmp.c --- 2005_orig/src/packlib/kuip/code_motif/mkdcmp.c 1996-03-15 16:54:00.000000000 +0100 +++ 2005_patched/src/packlib/kuip/code_motif/mkdcmp.c 2006-04-10 15:18:06.000000000 +0200 @@ -1541,7 +1541,11 @@ Widget cpanel = stag->command_panel; KmCommand *cmd = stag->cmd; - int ipar = stag->index; + /* for 64 bit compatibility take long here + * int ipar = stag->index; + */ + long ipar = stag->index; + KmParameter *par = cmd->par[ipar]; KmParFile *pfil = par->ptype; diff -urN 2005_orig/src/packlib/kuip/code_motif/mkdgra.c 2005_patched/src/packlib/kuip/code_motif/mkdgra.c --- 2005_orig/src/packlib/kuip/code_motif/mkdgra.c 1996-03-08 16:33:07.000000000 +0100 +++ 2005_patched/src/packlib/kuip/code_motif/mkdgra.c 2006-03-31 16:00:52.000000000 +0200 @@ -289,11 +289,12 @@ km_graph_init_callbacks (km_graphicsDraw, graph_widget, wkid, 0); } -void km_graph_init_callbacks (draw, graph_widget, wkid, flag) +void km_graph_init_callbacks (draw, graph_widget, mywkid, flag) Widget draw, graph_widget; - int wkid, flag; + int mywkid, flag; { /* Add drawing area expose and resize callbacks */ + long wkid = mywkid; if (flag == 0) { XtAddCallback(draw, XmNexposeCallback, (XtCallbackProc)drawing_area_callback, graph_widget); diff -urN 2005_orig/src/packlib/kuip/code_motif/mkuip.c 2005_patched/src/packlib/kuip/code_motif/mkuip.c --- 2005_orig/src/packlib/kuip/code_motif/mkuip.c 1996-10-24 14:13:41.000000000 +0200 +++ 2005_patched/src/packlib/kuip/code_motif/mkuip.c 2006-03-31 16:04:13.000000000 +0200 @@ -1660,7 +1660,7 @@ XmStringFree(xmstr); } /* end for ... */ XtAddCallback (km_listSBox,XmNokCallback, - (XtCallbackProc)kuipList_OK, (XtPointer)flag); + (XtCallbackProc)kuipList_OK, (XtPointer) (long)flag); XtAddCallback (km_listSBox,XmNcancelCallback, (XtCallbackProc)destroy_list_id, NULL); XtAddCallback (km_listSBox,XmNhelpCallback, @@ -1887,7 +1887,7 @@ PdMenu = XmCreatePushButtonGadget (kuipControlShellM,appShell_title[i],arglist,0); XtAddCallback(PdMenu,XmNactivateCallback, - (XtCallbackProc)appShell_activate, (XtPointer)i); + (XtCallbackProc)appShell_activate, (XtPointer) (long)i); XtManageChild(PdMenu); break; } /* end ... if (appShell[i] == NULL) */ @@ -1945,7 +1945,7 @@ PdMenu = XmCreatePushButtonGadget (kuipControlShellM,appShell_title[i],arglist,0); XtAddCallback (PdMenu,XmNactivateCallback, - (XtCallbackProc)appShell_activate, (XtPointer)i); + (XtCallbackProc)appShell_activate, (XtPointer) (long)i); XtManageChild(PdMenu); } } diff -urN 2005_orig/src/packlib/kuip/kuip/kstring.h 2005_patched/src/packlib/kuip/kuip/kstring.h --- 2005_orig/src/packlib/kuip/kuip/kstring.h 1997-03-14 18:16:39.000000000 +0100 +++ 2005_patched/src/packlib/kuip/kuip/kstring.h 2005-11-22 16:49:02.000000000 +0100 @@ -32,8 +32,10 @@ extern char* strrstr( const char* str1, const char* str2 ); +#if !defined(CERNLIB_QMGLIBC) #define strdup Strdup /* prototype without const */ extern char* strdup( const char* str ); +#endif /* diff -urN 2005_orig/src/packlib/kuip/programs/kuipc/kuipcc.c 2005_patched/src/packlib/kuip/programs/kuipc/kuipcc.c --- 2005_orig/src/packlib/kuip/programs/kuipc/kuipcc.c 2000-03-27 16:13:17.000000000 +0200 +++ 2005_patched/src/packlib/kuip/programs/kuipc/kuipcc.c 2005-11-22 17:22:31.000000000 +0100 @@ -354,10 +354,13 @@ } } else { + /* avoid the usage of gets - possible buffer overrun */ fprintf( stderr, "Enter CDF input file name: " ); - gets( ifile ); + fgets( ifile, sizeof ifile, stdin ); + strcpy( strstr( ifile, "\n"), "\0"); fprintf( stderr, "Enter definition output file name: " ); - gets( ofile ); + fgets( ofile, sizeof ofile, stdin ); + strcpy( strstr( ofile, "\n"), "\0"); } if( !explicit ) { diff -urN 2005_orig/src/packlib/kuip/programs/kxterm/help.c 2005_patched/src/packlib/kuip/programs/kxterm/help.c --- 2005_orig/src/packlib/kuip/programs/kxterm/help.c 1996-03-08 16:33:04.000000000 +0100 +++ 2005_patched/src/packlib/kuip/programs/kxterm/help.c 2006-04-11 09:45:52.000000000 +0200 @@ -309,7 +309,7 @@ int *type; XmAnyCallbackStruct *call_data; { - int t = (int)type; + long t = (long)type; if (help[t]) XRaiseWindow(XtDisplay(help[t]), XtWindow(help[t])); diff -urN 2005_orig/src/packlib/kuip/programs/kxterm/kxterm.c 2005_patched/src/packlib/kuip/programs/kxterm/kxterm.c --- 2005_orig/src/packlib/kuip/programs/kxterm/kxterm.c 2005-04-18 17:40:49.000000000 +0200 +++ 2005_patched/src/packlib/kuip/programs/kxterm/kxterm.c 2006-03-31 17:26:32.000000000 +0200 @@ -1533,7 +1533,7 @@ XtPointer cbs; { Widget text_w; - int i = (int) item; + int i = (unsigned long) item; Boolean result = True; text_w = get_selection_owner(widget); diff -urN 2005_orig/src/packlib/kuip/programs/kxterm/uxxt.c 2005_patched/src/packlib/kuip/programs/kxterm/uxxt.c --- 2005_orig/src/packlib/kuip/programs/kxterm/uxxt.c 1996-03-08 16:33:04.000000000 +0100 +++ 2005_patched/src/packlib/kuip/programs/kxterm/uxxt.c 2006-03-31 17:35:04.000000000 +0200 @@ -340,7 +340,7 @@ { (void) XDeleteContext( XtDisplay( UxTopLevel ), (Window) wgt, - (XContext) client_data ); + (XContext) (long)client_data ); } /****************************************************************************** @@ -385,7 +385,7 @@ return ( UX_ERROR ); XtAddCallback (wgt, XmNdestroyCallback, - UxDeleteContextCB, (XtPointer) xcontext_id); + UxDeleteContextCB, (XtPointer) (long)xcontext_id); return ( UX_NO_ERROR ); } diff -urN 2005_orig/src/packlib/zbook/code/zerror.F 2005_patched/src/packlib/zbook/code/zerror.F --- 2005_orig/src/packlib/zbook/code/zerror.F 1996-03-08 13:01:12.000000000 +0100 +++ 2005_patched/src/packlib/zbook/code/zerror.F 2006-05-05 16:16:12.000000000 +0200 @@ -16,6 +16,10 @@ C ****************************************************************** C DIMENSION IZ(1),KEY(1),LAB(6),ID(1) +#if defined(CERNLIB_QMLXIA64) + INTEGER*8 JUMPADR +#endif + C C ------------------------------------------------------------------ C @@ -24,7 +28,7 @@ NEWERR = IERR JZ = IZ(1) IF(IZ(JZ+19).EQ.0) CALL ZUSER(IZ,NEWERR,KEY,ID) -#if (defined(CERNLIB_SINGLE)||defined(CERNLIB_DOUBLE)||defined(CERNLIB_UNIVAC)||defined(CERNLIB_PDP10))&&(!defined(CERNLIB_VAX))&&(!defined(CERNLIB_BESM6)) +#if (defined(CERNLIB_SINGLE)||defined(CERNLIB_DOUBLE)||defined(CERNLIB_UNIVAC)||defined(CERNLIB_PDP10))&&(!defined(CERNLIB_VAX))&&(!defined(CERNLIB_BESM6))&&(!defined(CERNLIB_QMLXIA64)) IF(IZ(JZ+19).NE.0) CALL ZJUMP(IZ(JZ+19),IZ,NEWERR,KEY,ID) #endif #if defined(CERNLIB_VAX) @@ -33,6 +37,13 @@ #if defined(CERNLIB_BESM6) IF(IZ(JZ+19).NE.0) CALL ZJUMP(IZ,NEWERR,KEY,ID,IZ(JZ+19)) #endif +#if defined(CERNLIB_QMLXIA64) + IF(IZ(JZ+19).NE.0) THEN + JUMPADR = IZ(JZ+19) + print '(a,z17)','JUMPADR is:', JUMPADR + CALL JUMPT4(JUMPADR,IZ,NEWERR,KEY,ID) + END IF +#endif C IF (NEWERR.LE.0)RETURN C diff -urN 2005_orig/src/packlib/zbook/code/ztrap.F 2005_patched/src/packlib/zbook/code/ztrap.F --- 2005_orig/src/packlib/zbook/code/ztrap.F 1996-03-08 13:01:13.000000000 +0100 +++ 2005_patched/src/packlib/zbook/code/ztrap.F 2006-05-05 16:18:40.000000000 +0200 @@ -48,8 +48,10 @@ #if defined(CERNLIB_BESM6) IZ(JZ+19) = LOCF(IUSER) #endif -#if defined(CERNLIB_UNIX) +#if defined(CERNLIB_UNIX) && !defined(CERNLIB_QMLXIA64) IZ(JZ+19) = LOCB(IUSER) +#else + IZ(JZ+19) = JUMPAD(IUSER) #endif END #endif diff -urN 2005_orig/src/packlib/zebra/fq/fzdaeof.inc 2005_patched/src/packlib/zebra/fq/fzdaeof.inc --- 2005_orig/src/packlib/zebra/fq/fzdaeof.inc 1996-03-06 11:47:08.000000000 +0100 +++ 2005_patched/src/packlib/zebra/fq/fzdaeof.inc 2005-11-23 16:57:48.000000000 +0100 @@ -30,7 +30,7 @@ *** PARAMETER (IOSEOF = 10) !* for xlf 2.2 *** PARAMETER (IOSEOF = 122) !* for xlf 2.3 PARAMETER (IOSEOF = 1) !* for xlf 3.2 -#elif defined(CERNLIB_QMLNX) +#elif defined(CERNLIB_QMLNX)&&!defined(CERNLIB_GFORTRAN) PARAMETER (IOSEOF = 36) #elif defined(CERNLIB_QMOS9) PARAMETER (IOSEOF = 326) @@ -43,6 +43,8 @@ #elif defined(CERNLIB_WINDOWS) * only valid for dec fortran (e.g. not f2c + microsoft c) PARAMETER (IOSEOF = 36) +#elif defined(CERNLIB_GFORTRAN) + PARAMETER (IOSEOF = 3) #elif 1 PARAMETER (IOSEOF = -1) #endif diff -urN 2005_orig/src/packlib/zebra/zebra/q_and.inc 2005_patched/src/packlib/zebra/zebra/q_and.inc --- 2005_orig/src/packlib/zebra/zebra/q_and.inc 1996-04-18 18:15:05.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_and.inc 2005-11-22 20:44:26.000000000 +0100 @@ -24,7 +24,7 @@ #elif defined(CERNLIB_QMIBMSI) IAND (IZV,IZW) = LAND (IZV, IZW) -#elif defined(CERNLIB_LNX) +#elif (defined(CERNLIB_LNX))&&(!defined(CERNLIB_GFORTRAN)) IAND(IZV,IZW) = AND(IZV,IZW) #elif defined(CERNLIB_SUN) diff -urN 2005_orig/src/packlib/zebra/zebra/q_andor.inc 2005_patched/src/packlib/zebra/zebra/q_andor.inc --- 2005_orig/src/packlib/zebra/zebra/q_andor.inc 1996-03-06 11:46:52.000000000 +0100 +++ 2005_patched/src/packlib/zebra/zebra/q_andor.inc 2005-11-22 20:44:52.000000000 +0100 @@ -36,7 +36,7 @@ IEOR (IZV,IZW) = LXOR (IZV, IZW) NOT (IZW) = LCOMPL (IZW) -#elif defined(CERNLIB_LNX) +#elif (defined(CERNLIB_LNX))&&(!defined(CERNLIB_GFORTRAN)) IAND(IZV,IZW) = AND(IZV,IZW) IOR(IZV,IZW) = OR(IZV,IZW) IEOR(IZV,IZW) = XOR(IZV,IZW) diff -urN 2005_orig/src/packlib/zebra/zebra/q_jbit.inc 2005_patched/src/packlib/zebra/zebra/q_jbit.inc --- 2005_orig/src/packlib/zebra/zebra/q_jbit.inc 1996-04-18 18:15:06.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_jbit.inc 2005-11-22 20:48:58.000000000 +0100 @@ -47,7 +47,7 @@ #elif defined(CERNLIB_QF_SIEM) JBIT (IZW,IZP) = SHFTR (SHFTL(IZW,32-IZP), 31) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) JBIT(IZW,IZP) = AND(ISHFTR(IZW,IZP-1),1) #elif defined(CERNLIB_OS9) diff -urN 2005_orig/src/packlib/zebra/zebra/q_jbyt.inc 2005_patched/src/packlib/zebra/zebra/q_jbyt.inc --- 2005_orig/src/packlib/zebra/zebra/q_jbyt.inc 1996-04-18 18:15:07.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_jbyt.inc 2005-11-22 20:49:28.000000000 +0100 @@ -45,7 +45,7 @@ #elif defined(CERNLIB_QF_SIEM) JBYT (IZW,IZP,NZB)= SHFTR (SHFTL(IZW,33-IZP-NZB), 32-NZB) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) JBYT(IZW,IZP,NZB) = ISHFTR(LSHIFT(IZW,33-IZP-NZB),32-NZB) #elif defined(CERNLIB_OS9) diff -urN 2005_orig/src/packlib/zebra/zebra/q_jbytet.inc 2005_patched/src/packlib/zebra/zebra/q_jbytet.inc --- 2005_orig/src/packlib/zebra/zebra/q_jbytet.inc 1996-04-18 18:15:07.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_jbytet.inc 2005-11-22 20:50:21.000000000 +0100 @@ -52,7 +52,7 @@ JBYTET (MZ,IZW,IZP,NZB) = LAND (MZ, + SHFTR (SHFTL(IZW,33-IZP-NZB), 32-NZB) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) JBYTET (MZ,IZW,IZP,NZB) = AND (MZ, + ISHFTR (LSHIFT(IZW,33-IZP-NZB),32-NZB) ) diff -urN 2005_orig/src/packlib/zebra/zebra/q_jbytor.inc 2005_patched/src/packlib/zebra/zebra/q_jbytor.inc --- 2005_orig/src/packlib/zebra/zebra/q_jbytor.inc 1996-04-18 18:15:10.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_jbytor.inc 2005-11-22 20:50:49.000000000 +0100 @@ -50,7 +50,7 @@ JBYTOR (MZ,IZW,IZP,NZB) = LOR (MZ, + SHFTR (SHFTL(IZW,33-IZP-NZB), 32-NZB) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) JBYTOR (MZ,IZW,IZP,NZB) = OR (MZ, + ISHFTR (LSHIFT(IZW,33-IZP-NZB),32-NZB) ) diff -urN 2005_orig/src/packlib/zebra/zebra/q_mbytet.inc 2005_patched/src/packlib/zebra/zebra/q_mbytet.inc --- 2005_orig/src/packlib/zebra/zebra/q_mbytet.inc 1996-04-18 18:15:11.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_mbytet.inc 2005-11-22 20:51:46.000000000 +0100 @@ -51,7 +51,7 @@ MBYTET (MZ,IZW,IZP,NZB) = LAND (IZW, LCOMPL(SHFTR ( + SHFTL(LCOMPL(MZ),32-NZB), 33-IZP-NZB)) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) MBYTET (MZ,IZW,IZP,NZB) = AND (IZW, + NOT(ISHFTR (LSHIFT(NOT(MZ),32-NZB),33-IZP-NZB)) ) diff -urN 2005_orig/src/packlib/zebra/zebra/q_mbytor.inc 2005_patched/src/packlib/zebra/zebra/q_mbytor.inc --- 2005_orig/src/packlib/zebra/zebra/q_mbytor.inc 1996-04-18 18:15:12.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_mbytor.inc 2005-11-22 20:52:00.000000000 +0100 @@ -51,7 +51,7 @@ MBYTOR (MZ,IZW,IZP,NZB) = LOR (IZW, SHFTR ( + SHFTL(MZ,32-NZB), 33-IZP-NZB) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) MBYTOR (MZ,IZW,IZP,NZB) = OR (IZW, + ISHFTR (LSHIFT(MZ,32-NZB),33-IZP-NZB)) diff -urN 2005_orig/src/packlib/zebra/zebra/q_or.inc 2005_patched/src/packlib/zebra/zebra/q_or.inc --- 2005_orig/src/packlib/zebra/zebra/q_or.inc 1996-04-18 18:15:13.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_or.inc 2005-11-22 20:53:27.000000000 +0100 @@ -24,7 +24,7 @@ #elif defined(CERNLIB_QMIBMSI) IOR (IZV,IZW) = LOR (IZV, IZW) -#elif defined(CERNLIB_LNX) +#elif (defined(CERNLIB_LNX))&&(!defined(CERNLIB_GFORTRAN)) IOR(IZV,IZW) = OR(IZV,IZW) #elif defined(CERNLIB_SUN) diff -urN 2005_orig/src/packlib/zebra/zebra/q_sbit.inc 2005_patched/src/packlib/zebra/zebra/q_sbit.inc --- 2005_orig/src/packlib/zebra/zebra/q_sbit.inc 1996-04-18 18:15:23.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_sbit.inc 2005-11-22 20:54:11.000000000 +0100 @@ -46,7 +46,7 @@ MSBIT (MZ,IZW,IZP) = LOR (LAND (IZW, LCOMPL(SHFTL(1,IZP-1)) ) + , SHFTL(LAND(MZ,1),IZP-1) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) MSBIT (MZ,IZW,IZP) = OR (AND (IZW, NOT(LSHIFT(1,IZP-1))) + ,LSHIFT(AND(MZ,1),IZP-1)) diff -urN 2005_orig/src/packlib/zebra/zebra/q_sbit0.inc 2005_patched/src/packlib/zebra/zebra/q_sbit0.inc --- 2005_orig/src/packlib/zebra/zebra/q_sbit0.inc 1996-04-18 18:15:24.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_sbit0.inc 2005-11-22 20:54:35.000000000 +0100 @@ -41,7 +41,7 @@ #elif defined(CERNLIB_QF_SIEM) MSBIT0 (IZW,IZP) = LAND (IZW, LCOMPL(SHFTL(1,IZP-1)) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) MSBIT0 (IZW,IZP) = AND (IZW, NOT(LSHIFT(1,IZP-1))) #elif defined(CERNLIB_PDP) diff -urN 2005_orig/src/packlib/zebra/zebra/q_sbit1.inc 2005_patched/src/packlib/zebra/zebra/q_sbit1.inc --- 2005_orig/src/packlib/zebra/zebra/q_sbit1.inc 1996-04-18 18:15:24.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_sbit1.inc 2005-11-22 20:54:58.000000000 +0100 @@ -40,7 +40,7 @@ #elif defined(CERNLIB_QF_SIEM) MSBIT1 (IZW,IZP) = LOR (IZW, SHFTL(1,IZP-1) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) MSBIT1 (IZW,IZP) = OR (IZW, LSHIFT(1,IZP-1)) #elif defined(CERNLIB_PDP) diff -urN 2005_orig/src/packlib/zebra/zebra/q_sbyt.inc 2005_patched/src/packlib/zebra/zebra/q_sbyt.inc --- 2005_orig/src/packlib/zebra/zebra/q_sbyt.inc 1996-03-06 11:46:52.000000000 +0100 +++ 2005_patched/src/packlib/zebra/zebra/q_sbyt.inc 2005-11-22 20:55:21.000000000 +0100 @@ -43,7 +43,7 @@ + LAND (IZW, LCOMPL(SHFTL (SHFTR(-1,32-NZB), IZP-1))) + , SHFTR (SHFTL(MZ,32-NZB), 33-IZP-NZB) ) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) MSBYT (MZ,IZW,IZP,NZB) = OR ( + AND (IZW, NOT(LSHIFT (ISHFTR(NOT(0),32-NZB),IZP-1))) + ,ISHFTR (LSHIFT(MZ,32-NZB), 33-IZP-NZB) ) diff -urN 2005_orig/src/packlib/zebra/zebra/q_shift.inc 2005_patched/src/packlib/zebra/zebra/q_shift.inc --- 2005_orig/src/packlib/zebra/zebra/q_shift.inc 1996-03-06 11:46:52.000000000 +0100 +++ 2005_patched/src/packlib/zebra/zebra/q_shift.inc 2005-11-22 20:55:46.000000000 +0100 @@ -36,7 +36,7 @@ ISHFTL (IZW,NZB) = SHFTL (IZW, NZB) ISHFTR (IZW,NZB) = SHFTR (IZW, NZB) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) ISHFTL (IZW,NZB) = LSHIFT (IZW,NZB) #elif (defined(CERNLIB_SUN))&&(!defined(CERNLIB_BUGLRSHFT)) diff -urN 2005_orig/src/packlib/zebra/zebra/q_shiftl.inc 2005_patched/src/packlib/zebra/zebra/q_shiftl.inc --- 2005_orig/src/packlib/zebra/zebra/q_shiftl.inc 1996-04-18 18:15:25.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_shiftl.inc 2005-11-22 20:55:56.000000000 +0100 @@ -28,7 +28,7 @@ #elif defined(CERNLIB_QF_SIEM) ISHFTL (IZW,NZB) = SHFTL (IZW, NZB) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) ISHFTL (IZW,NZB) = LSHIFT (IZW,NZB) #elif (defined(CERNLIB_SUN))&&(!defined(CERNLIB_BUGLRSHFT)) diff -urN 2005_orig/src/packlib/zebra/zebra/q_shiftr.inc 2005_patched/src/packlib/zebra/zebra/q_shiftr.inc --- 2005_orig/src/packlib/zebra/zebra/q_shiftr.inc 1996-04-18 18:15:25.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_shiftr.inc 2005-11-22 20:56:18.000000000 +0100 @@ -32,7 +32,7 @@ #elif defined(CERNLIB_QF_SIEM) ISHFTR (IZW,NZB) = SHFTR (IZW, NZB) -#elif defined(CERNLIB_LINUX) +#elif (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_GFORTRAN)) #elif (defined(CERNLIB_SUN))&&(!defined(CERNLIB_BUGLRSHFT)) ISHFTR (IZW,NZB) = lrshft (IZW, NZB) diff -urN 2005_orig/src/packlib/zebra/zebra/q_xor.inc 2005_patched/src/packlib/zebra/zebra/q_xor.inc --- 2005_orig/src/packlib/zebra/zebra/q_xor.inc 1996-04-18 18:15:26.000000000 +0200 +++ 2005_patched/src/packlib/zebra/zebra/q_xor.inc 2005-11-22 20:56:48.000000000 +0100 @@ -24,7 +24,7 @@ #elif defined(CERNLIB_QMIBMSI) IEOR (IZV,IZW) = LXOR (IZV, IZW) -#elif defined(CERNLIB_LNX) +#elif (defined(CERNLIB_LNX))&&(!defined(CERNLIB_GFORTRAN)) IEOR(IZV,IZW) = XOR(IZV,IZW) #elif defined(CERNLIB_SUN) diff -urN 2005_orig/src/patchy/Imakefile 2005_patched/src/patchy/Imakefile --- 2005_orig/src/patchy/Imakefile 1997-01-21 18:29:14.000000000 +0100 +++ 2005_patched/src/patchy/Imakefile 2005-12-06 17:37:45.000000000 +0100 @@ -78,8 +78,9 @@ $(LDIR)patchy.car: patchy.car @ ln -s $< $@ +/* use $(= b ) for ( i=0; i +#define ALPHA_OSF +#endif + #if defined(CERNLIB_SGI) #define SGI #endif diff -urN 2005_orig/src/pawlib/comis/deccc/cscal_lp64.h 2005_patched/src/pawlib/comis/deccc/cscal_lp64.h --- 2005_orig/src/pawlib/comis/deccc/cscal_lp64.h 1970-01-01 01:00:00.000000000 +0100 +++ 2005_patched/src/pawlib/comis/deccc/cscal_lp64.h 2006-07-12 12:39:16.000000000 +0200 @@ -0,0 +1,48 @@ +#if defined(CERNLIB_QMLXIA64) +#if !defined (__ia64__) +/* for AMD64 and EM64T architectures */ +#define setcall_lp64(type) \ + long *fptr; \ + int *n; \ + unsigned pin[16]; \ +{ \ + int jumpad_(); \ + type (*name)(); \ + unsigned long ptr = (unsigned long)jumpad_; \ + if ( *fptr > 0 ) ptr = 0; \ + ptr += *fptr; \ + name = (type (*)())ptr; \ + long p[16]; \ + int count; for ( count=0; count<16; count++ ) p[count] = pin[count]; \ + /* end of macro */ + +#define setaddr_lp64(__ja, __jb) \ + long aa=__ja; long bb=__jb; \ + a=(char *)((long)(__ja)); b=(char *)((long)(__jb)); \ + /* end of macro */ + +#else +/* for IA64 architectures */ +#define setcall_lp64(type) \ + long *fptr; \ + int *n; \ + unsigned pin[16]; \ +{ \ + int jumpad_(); \ + type (*name)(); \ + unsigned long ptr = (unsigned long)jumpad_; \ + ptr += *fptr; \ + name = (type (*)())ptr; \ + long p[16]; \ + int count; for ( count=0; count<16; count++ ) \ + p[count] = pin[count] + 0x6000000000000000; \ + /* end of macro */ + +#define setaddr_lp64(__ja, __jb) \ + a=(char*)((long)(__ja) | 0x6000000000000000); \ + b=(char*)((long)(__jb) | 0x6000000000000000); \ + /* end of macro */ + +#endif +#endif + diff -urN 2005_orig/src/pawlib/comis/deccc/cscald.c 2005_patched/src/pawlib/comis/deccc/cscald.c --- 2005_orig/src/pawlib/comis/deccc/cscald.c 2004-10-27 11:01:54.000000000 +0200 +++ 2005_patched/src/pawlib/comis/deccc/cscald.c 2006-06-14 18:05:48.000000000 +0200 @@ -29,11 +29,10 @@ #define cscald #undef cscald -#ifdef CERNLIB_WINNT +#if defined(CERNLIB_WINNT) || defined(CERNLIB_GCC4) # include #endif - -#if (defined(CERNLIB_QX_SC))&&(!defined(CERNLIB_WINNT)) +#if (defined(CERNLIB_QX_SC))&&(!defined(CERNLIB_WINNT))&&(!defined(CERNLIB_QMLXIA64)) double cscald_ (name,n,p) #endif #if defined(CERNLIB_QXNO_SC) @@ -46,10 +45,30 @@ int CSCALD (name,n,p) # endif #endif + +/* + * 64-bit pointer systems require a special treatment of addresses - see below + * using the CERNLIB_QMLXIA64 macro definition (H. Vogt - Sep 2005) + * This code will be consistent with that of jumptn.c and jumpxn.c + * in packlib/kernlib/kerngen/ccgen (usage of jumpad_) + * + * for shared objects loaded by the dynamic linker content of the 1st arg + * in cscald_ is a pointer which may be above the 32 bit address space + * therefore *fptr has been changed to type long + * see changes in csintx.F, cskcal.F, ... (introduction of INTEGER*8 array for + * those pointers) + */ + +#if defined(CERNLIB_QMLXIA64) +# include "cscal_lp64.h" +double cscald_ (fptr,n,pin) + setcall_lp64(double) +#else double (type_of_call *(*name)) (); int *n; - int *p[15]; + int *p[16]; { +#endif double d; switch (*n) { diff -urN 2005_orig/src/pawlib/comis/deccc/cscali.c 2005_patched/src/pawlib/comis/deccc/cscali.c --- 2005_orig/src/pawlib/comis/deccc/cscali.c 2004-10-22 14:42:40.000000000 +0200 +++ 2005_patched/src/pawlib/comis/deccc/cscali.c 2006-06-14 18:06:02.000000000 +0200 @@ -26,11 +26,10 @@ #define cscali #undef cscali -#ifdef CERNLIB_WINNT +#if defined(CERNLIB_WINNT) || defined(CERNLIB_GCC4) # include #endif - -#if (defined(CERNLIB_QX_SC))&&(!defined(CERNLIB_WINNT)) +#if (defined(CERNLIB_QX_SC))&&(!defined(CERNLIB_WINNT))&&(!defined(CERNLIB_QMLXIA64)) int cscali_ (name,n,p) #endif #if defined(CERNLIB_QXNO_SC) @@ -39,10 +38,30 @@ #if defined(CERNLIB_QXCAPT) int type_of_call CSCALI (name,n,p) #endif + +/* + * 64-bit pointer systems require a special treatment of addresses - see below + * using the CERNLIB_QMLXIA64 macro definition (H. Vogt - Sep 2005) + * This code will be consistent with that of jumptn.c and jumpxn.c + * in packlib/kernlib/kerngen/ccgen (usage of jumpad_) + * + * for shared objects loaded by the dynamic linker content of the 1st arg + * in cscali_ is a pointer which may be above the 32 bit address space + * therefore *fptr has been changed to type long + * see changes in csintx.F, cskcal.F, ... (introduction of INTEGER*8 array for + * those pointers) + */ + +#if defined(CERNLIB_QMLXIA64) +# include "cscal_lp64.h" +int cscali_ (fptr,n,pin) + setcall_lp64(int) +#else int (type_of_call *(*name)) (); int *n; - int *p[15]; + int *p[16]; { +#endif int i; switch (*n) { diff -urN 2005_orig/src/pawlib/comis/deccc/cscalr.c 2005_patched/src/pawlib/comis/deccc/cscalr.c --- 2005_orig/src/pawlib/comis/deccc/cscalr.c 2004-10-22 14:03:16.000000000 +0200 +++ 2005_patched/src/pawlib/comis/deccc/cscalr.c 2006-06-14 18:06:11.000000000 +0200 @@ -30,19 +30,15 @@ #define cscalr #undef cscalr -#ifdef CERNLIB_WINNT +#if defined(CERNLIB_WINNT) || defined(CERNLIB_GCC4) # include #endif - - -#if (defined(CERNLIB_QX_SC))&&(!defined(CERNLIB_WINNT)) +#if (defined(CERNLIB_QX_SC))&&(!defined(CERNLIB_WINNT))&&(!defined(CERNLIB_QMLXIA64)) float cscalr_ (name,n,p) #endif - #if defined(CERNLIB_QXNO_SC) float cscalr (name,n,p) #endif - #if defined(CERNLIB_QXCAPT) # if defined(CERNLIB_MSSTDCALL) float type_of_call CSCALR(name,n,p) @@ -51,10 +47,29 @@ # endif #endif +/* + * 64-bit pointer systems require a special treatment of addresses - see below + * using the CERNLIB_QMLXIA64 macro definition (H. Vogt - Sep 2005) + * This code will be consistent with that of jumptn.c and jumpxn.c + * in packlib/kernlib/kerngen/ccgen (usage of jumpad_) + * + * for shared objects loaded by the dynamic linker content of the 1st arg + * in cscalr_ is a pointer which may be above the 32 bit address space + * therefore *fptr has been changed to type long + * see changes in csintx.F, cskcal.F, ... (introduction of INTEGER*8 array for + * those pointers) + */ + +#if defined(CERNLIB_QMLXIA64) +# include "cscal_lp64.h" +float cscalr_ (fptr,n,pin) + setcall_lp64(float) +#else float (type_of_call *(*name)) (); int *n; - int *p[15]; + int *p[16]; { +#endif float r; switch (*n) { diff -urN 2005_orig/src/pawlib/comis/deccc/cstrcmp.c 2005_patched/src/pawlib/comis/deccc/cstrcmp.c --- 2005_orig/src/pawlib/comis/deccc/cstrcmp.c 1997-09-02 17:50:44.000000000 +0200 +++ 2005_patched/src/pawlib/comis/deccc/cstrcmp.c 2006-06-26 21:55:32.000000000 +0200 @@ -36,6 +36,43 @@ #else int cstrcmp_(ja,na,jb,nb) #endif + +/* + * 64-bit pointer systems require a special treatment of addresses - see below - + * using the CERNLIB_QMLXIA64 cpp flag (H. Vogt - Sep 2005) + */ + +/* For Itanium, the situation is even worse. Itanium architecture is such + * that the data section starts at 0x6000000000000000. The stack is + * supposed to be between 0x80...0 and 0xa0...0 starting at the high end + * and growing downwards, although on a test machine (merulo.debian.org) + * it seemed instead to start at 0x6000100000000000 and grow downwards. + * The addresses we actually get are truncated to the lowest 32 bits, + * so we assume that those greater than 0x80000000 are in the stack. + * + * Constant strings are in the text section starting at 0x40...0; we hope + * this function doesn't receive any. + * -- Kevin McCarty + */ + +#if defined(CERNLIB_QMLXIA64) +# include "cscal_lp64.h" + int *ja, *jb; + int *na, *nb; +{ + + static int i,la,lb,k; static char *a,*b; + if ( *na >= *nb ) + { + setaddr_lp64(*ja,*jb) + la=*na; lb=*nb; k=1; + } + else + { + setaddr_lp64(*jb,*ja) + la=*nb; lb=*na; k=-1; + } +#else char **ja, **jb; int *na, *nb; { @@ -48,6 +85,7 @@ { a=*jb; b=*ja; la=*nb; lb=*na; k=-1; } +#endif for ( i=0; i b[i]) ? k : -k ); } diff -urN 2005_orig/src/pawlib/paw/cmotif/att_color.c 2005_patched/src/pawlib/paw/cmotif/att_color.c --- 2005_orig/src/pawlib/paw/cmotif/att_color.c 1996-03-01 12:38:53.000000000 +0100 +++ 2005_patched/src/pawlib/paw/cmotif/att_color.c 2006-04-10 17:07:27.000000000 +0200 @@ -114,7 +114,7 @@ XtVaGetValues(ObjectRow,XmNmenuHistory,&CurrentObject,NULL); XtVaGetValues(CurrentObject,XmNuserData,&data,NULL); - switch ((int ) client_data) { + switch ((long) client_data) { case 1: /* Surface */ sprintf(Svalue,"%d",data->SurfaceColor); break; @@ -164,7 +164,7 @@ Ncol=atoi((char *)XmTextGetString(NcolText)); } else Ncol=8; ColorNum=atoi((char *)XmTextGetString(AttColorText)); - switch((int) client_data) { + switch((long) client_data) { case 1: /* UpArrow */ ColorNum++; break; diff -urN 2005_orig/src/pawlib/paw/cmotif/att_define_color.c 2005_patched/src/pawlib/paw/cmotif/att_define_color.c --- 2005_orig/src/pawlib/paw/cmotif/att_define_color.c 1999-03-01 10:07:01.000000000 +0100 +++ 2005_patched/src/pawlib/paw/cmotif/att_define_color.c 2006-04-10 17:10:00.000000000 +0200 @@ -338,7 +338,7 @@ static void MoveScale_cb(Widget w,caddr_t client_data, XmAnyCallbackStruct *call_data) { - switch ((int ) client_data) { + switch ((long) client_data) { case 1 : /* RED */ EditColor.red=((XmScaleCallbackStruct *) call_data)->value; break; @@ -369,7 +369,7 @@ default : fprintf(stderr,"Error in function MoveScale_cb"); } /*end of switch */ - apply_color((int) client_data); + apply_color((long) client_data); } /***************************************************************************** @@ -452,7 +452,7 @@ char *ComStr; ColorNum=atoi((char *)XmTextGetString(ColorIndex)); - switch((int) client_data) { + switch((long) client_data) { case 1: /* UpArrow */ ColorNum++; break; @@ -494,7 +494,7 @@ XmAnyCallbackStruct cb; Ncol=atoi((char *)XmTextGetString(NcolText)); - switch((int) client_data) { + switch((long) client_data) { case 1: /* UpArrow*/ Ncol++; break; diff -urN 2005_orig/src/pawlib/paw/cmotif/att_general.c 2005_patched/src/pawlib/paw/cmotif/att_general.c --- 2005_orig/src/pawlib/paw/cmotif/att_general.c 1996-03-01 12:38:53.000000000 +0100 +++ 2005_patched/src/pawlib/paw/cmotif/att_general.c 2006-04-10 17:11:30.000000000 +0200 @@ -454,7 +454,7 @@ { char ComStr[15]; - sprintf(ComStr,"IGSET MTYP %d",(int) client_data); + sprintf(ComStr,"IGSET MTYP %d",(long) client_data); execute_kuip_cmd(ComStr); if (appres.auto_refresh) { plot_current_histo(); @@ -471,8 +471,8 @@ { char ComStr[15]; - sprintf(ComStr,"IGSET LTYP %d",(int) client_data); - sprintf(ComStr,"SET DMOD %d",(int) client_data); + sprintf(ComStr,"IGSET LTYP %d",(long) client_data); + sprintf(ComStr,"SET DMOD %d",(long) client_data); execute_kuip_cmd(ComStr); if (appres.auto_refresh) { diff -urN 2005_orig/src/pawlib/paw/cmotif/att_geometry.c 2005_patched/src/pawlib/paw/cmotif/att_geometry.c --- 2005_orig/src/pawlib/paw/cmotif/att_geometry.c 1999-02-01 18:56:11.000000000 +0100 +++ 2005_patched/src/pawlib/paw/cmotif/att_geometry.c 2006-04-10 17:14:39.000000000 +0200 @@ -2582,7 +2582,7 @@ char *ComStr; XtVaGetValues(CButton,XmNuserData,&data,NULL); - switch ((int) client_data ) { + switch ((long) client_data ) { case 1 : /**** value change in text */ Fvalue= (float)atof((char *)XmTextGetString(Text)); diff -urN 2005_orig/src/pawlib/paw/cmotif/att_main.c 2005_patched/src/pawlib/paw/cmotif/att_main.c --- 2005_orig/src/pawlib/paw/cmotif/att_main.c 1996-03-01 12:38:54.000000000 +0100 +++ 2005_patched/src/pawlib/paw/cmotif/att_main.c 2006-04-10 17:23:00.000000000 +0200 @@ -139,7 +139,7 @@ { int i; XmAnyCallbackStruct cb; - int pos; + long pos; char tempstr[6]; int tempint; @@ -147,7 +147,7 @@ switch (*label) { case 'B' : - pos=(int) strchr(value,'.')-(int) value; + pos=strchr(value,'.')-value; strncpy(tempstr,value,pos); tempint=atoi(tempstr); if (tempint>=1000) { @@ -157,7 +157,7 @@ StateObject[i].ContourColor=tempint; StateObject[i].SurfaceColor=0; } - value=(char *)((int) value+pos+1); + value=(char *)(value+pos+1); strncpy(tempstr,value,2); StateObject[i].StatColor=tempstr[1]-'0'; StateObject[i].ZoneColor=tempstr[0]-'0'; @@ -324,12 +324,12 @@ static char *Clean(char *string) { char *Apos; - int pos; + long pos; char end[MAX_TITLE_SIZE]; Apos=strrchr(string,39); /* #27 == ' */ if (Apos) { - pos=((int)Apos - (int)string ); + pos=Apos - string; strcpy(end,++Apos); string[pos]='\0'; strcat(Clean(string),"@'"); @@ -692,7 +692,7 @@ XtVaGetValues(ObjectRow,XmNmenuHistory,&CurrentToggle,NULL); XtVaGetValues(CurrentToggle,XmNuserData,&CurrentState,NULL); LineWidth=CurrentState->LineWidth; - switch((int) client_data) { + switch((long) client_data) { case 1: /* UpArrow */ LineWidth++; break; diff -urN 2005_orig/src/pawlib/paw/cmotif/attatch.c 2005_patched/src/pawlib/paw/cmotif/attatch.c --- 2005_orig/src/pawlib/paw/cmotif/attatch.c 1996-03-01 12:38:54.000000000 +0100 +++ 2005_patched/src/pawlib/paw/cmotif/attatch.c 2006-04-10 17:24:52.000000000 +0200 @@ -88,7 +88,7 @@ XtVaGetValues(ObjectRow,XmNmenuHistory,&CurrentObject,NULL); XtVaGetValues(CurrentObject,XmNuserData,&data,NULL); - switch ((int) client_data ) { + switch ((long) client_data ) { case 1 : /**** value change in text */ Svalue=(char *)XmTextGetString(IndexText); @@ -124,7 +124,7 @@ /* value change in scale */ XmScaleGetValue(w,&Ivalue); Svalue=(char *)XmTextGetString(IndexText); - Svalue[((int) client_data )-2]='0' + Ivalue; + Svalue[((long) client_data )-2]='0' + Ivalue; XmTextSetString(IndexText,Svalue); if (data->IndexHatch!=atoi(Svalue)) { data->IndexHatch=atoi(Svalue); diff -urN 2005_orig/src/pawlib/paw/cmotif/axis.c 2005_patched/src/pawlib/paw/cmotif/axis.c --- 2005_orig/src/pawlib/paw/cmotif/axis.c 1996-03-01 12:38:54.000000000 +0100 +++ 2005_patched/src/pawlib/paw/cmotif/axis.c 2006-04-10 17:27:09.000000000 +0200 @@ -1336,7 +1336,7 @@ { XmAnyCallbackStruct cbs1; - switch ((int)type) { + switch ((long)type) { case 1: axis.xo = 1; break; @@ -1432,7 +1432,7 @@ unselect_list(); comstr = XtCalloc(MAX_CMD_LENGTH, 1); - switch ((int)type) { + switch ((long)type) { case 0: XmToggleButtonGadgetSetState(labeltoggleButtonGadget0,True,False); @@ -1680,7 +1680,7 @@ cbs1.reason = 0; cbs1.event = (XEvent *) NULL; - switch ((int) num) { + switch ((long) num) { case 1: if (XmToggleButtonGadgetGetState(labeltoggleButtonGadget1)) XtCallCallbacks(labeltoggleButtonGadget1,XmNvalueChangedCallback, diff -urN 2005_orig/src/pawlib/paw/cmotif/histo.c 2005_patched/src/pawlib/paw/cmotif/histo.c --- 2005_orig/src/pawlib/paw/cmotif/histo.c 1996-03-01 12:38:56.000000000 +0100 +++ 2005_patched/src/pawlib/paw/cmotif/histo.c 2006-04-10 17:33:11.000000000 +0200 @@ -529,7 +529,7 @@ static void show_option(Widget w, int *type, XmToggleButtonCallbackStruct *cbs) { if (cbs->set) { - switch( (int)type ) { + switch( (long)type ) { case 1: if ( !widget_stat ) { widget_stat = create_statFormDialog(); @@ -651,7 +651,7 @@ return; } } else { - switch( (int)type ) { + switch( (long)type ) { case 1: if (widget_stat) { XtUnmanageChild(widget_stat); @@ -758,7 +758,7 @@ int x,y; - switch( (int)type ) { + switch( (long)type ) { case 1: sprintf (comstr,"Set STAT %d%d%d%d%d%d%d" ,XmToggleButtonGadgetGetState(AllchanToggleButtonGadget) @@ -996,7 +996,7 @@ static void coordinate_set(Widget w, int *type, XmAnyCallbackStruct *cbs) { - switch( (int)type ) { + switch( (long)type ) { case 1: sprintf (histogram.coordinate," "); break; @@ -1034,7 +1034,7 @@ int ilen1, ilen2; XmString xmstr; - switch( (int)type ) { + switch( (long)type ) { case 1: histogram.x1 = cbs->value; if( x_range_lock != 0 ) { @@ -1131,7 +1131,7 @@ if( histogram.y1 <= 0 ) histogram.y1 = 1; if( histogram.y2 <= 0 ) histogram.y2 = 1; - if ( (int)type < 3 ) { + if ( (long)type < 3 ) { XmScaleSetValue(X2Scale,histogram.x2); XmScaleSetValue(X1Scale,histogram.x1); if( x_range_lock == 0 || upd_nbin) { diff -urN 2005_orig/src/pawlib/paw/cmotif/init.c 2005_patched/src/pawlib/paw/cmotif/init.c --- 2005_orig/src/pawlib/paw/cmotif/init.c 1996-03-12 17:58:51.000000000 +0100 +++ 2005_patched/src/pawlib/paw/cmotif/init.c 2006-04-10 17:36:44.000000000 +0200 @@ -286,7 +286,7 @@ static void destroy_browser(Widget w, int *which, XmAnyCallbackStruct *cbs) { MenuCbStruct *menu_item; - int i = (int) which; + long i = (long) which; browser[i].widget = NULL; if (browser[i].open_dialog) { @@ -308,7 +308,7 @@ ***********************************************************************/ static void destroy_graphics(Widget w, int *which, XmAnyCallbackStruct *cbs) { - int i = (int) which; + long i = (long) which; graphics[i].widget = NULL; } diff -urN 2005_orig/src/pawlib/paw/ntuple/Imakefile 2005_patched/src/pawlib/paw/ntuple/Imakefile --- 2005_orig/src/pawlib/paw/ntuple/Imakefile 1999-09-14 11:20:08.000000000 +0200 +++ 2005_patched/src/pawlib/paw/ntuple/Imakefile 2006-07-11 15:43:52.000000000 +0200 @@ -16,10 +16,18 @@ EXTRA_DEFINES := $(EXTRA_DEFINES) -Dextname #endif -#if defined(CERNLIB_LINUX) +#if defined(CERNLIB_LINUX) && !defined(CERNLIB_QMLXIA64) EXTRA_DEFINES := $(EXTRA_DEFINES) -Df2cFortran #endif +#if defined(CERNLIB_QMLXIA64) +#if defined(CERNLIB_GCC4) +EXTRA_DEFINES := $(EXTRA_DEFINES) -DgFortran +#else +EXTRA_DEFINES := $(EXTRA_DEFINES) -Df2cFortran +#endif +#endif + #if defined(CERNLIB_HPUX) CCOPTIONS += -Wp,-H10000 #endif diff -urN 2005_orig/src/pawlib/paw/ntuple/qp_execute.c 2005_patched/src/pawlib/paw/ntuple/qp_execute.c --- 2005_orig/src/pawlib/paw/ntuple/qp_execute.c 2001-09-18 15:41:35.000000000 +0200 +++ 2005_patched/src/pawlib/paw/ntuple/qp_execute.c 2006-05-24 21:30:26.000000000 +0200 @@ -189,7 +189,7 @@ typedef char tName[MAX_NAME_LEN+1]; tName *namelist; -int *offsetlist; +long *offsetlist; int *indexlist; @@ -245,7 +245,23 @@ char ntname[MAX_NAME_LEN+6]; int i, ierr, indx, itype, isize, ielem; Int32 * addr; - int ibase[1], ioff, nuse; + + /* LP64 compatibility: + - use static for ibase (at least) because its address is stored + as Int32 in structure CWNBlock + static takes ibase from the stack and puts it the code area. + - use type long for ioff and offsetlist[i] + (for 32 bit architectures type long is 4 Bytes as it is used + also in packlib/hbook/chbook/halloc.c in hballo1 !) + The x86-64 ABI has the code area in the 32 bit address space + but addresses to the stack and to dynamically allocated areas + may and will be above the 32 bit address space (below 0x80000000000). + See also: http://www.x86-64.org/documentation/abi-0.96.pdf + (H. Vogt, Oct. 2005) */ + + static int ibase[1]; + long ioff; + int nuse; int id = qe->id; char * path = qe->path; char * title; @@ -286,7 +302,11 @@ CWNBlock = (RefCWN *) calloc( CWNCount + 1, sizeof( RefCWN ) ); qp_assert( MAX_NAME_LEN == 32 ); /* see hbook.h (HGNTBF) */ namelist = (tName *) calloc( CWNCount + 1, sizeof(tName) ); - offsetlist = (int *) calloc( CWNCount + 1, sizeof(int) ); + + /* offsetlist should be of type long (see above) (H. Vogt, Oct. 2005) */ + + offsetlist = (long *) calloc( CWNCount + 1, sizeof(long) ); + indexlist = (int *) calloc( CWNCount + 1, sizeof(int) ); qp_assert( CWNBlock != 0 && @@ -381,6 +401,7 @@ offsetlist[nt_load_cnt]= CWNBlock[index].p - PAWC.iq_eqv; + strncpy( namelist[nt_load_cnt], vi->name, @@ -871,8 +892,21 @@ if ( cmd->u.scan.pawpp ) { char buf[33]; + /* for LP64 ABI matlab and matrow are 64 bit pointer, type is void* + but PCADDR.jmlab and PCADDR.jmrow are of type int + see: c_pcaddr.h and qp_command.h + it is related to CWNBlock -> see above (H. Vogt)*/ + +#if defined(CERNLIB_QMLXIA64) + unsigned long long int myjmlab, myjmrow; + myjmlab = PCADDR.jmlab; + myjmrow = PCADDR.jmrow; + c->matlab = (TableCallBack) myjmlab; + c->matrow = (TableCallBack) myjmrow; +#else c->matlab = (TableCallBack) PCADDR.jmlab; c->matrow = (TableCallBack) PCADDR.jmrow; +#endif qp_assert( qe->nexpr <= MAX_OUTSTR ); @@ -1791,6 +1825,31 @@ PAWIDN.idnevt = ievt; PAWCHN.ichevt = ievt_chain; +#if defined(CERNLIB_QMLXIA64) +/* avoid addresses from calloc which are above 32 bits here */ + static Int32 helpp[8]; + int i; + if ( npar < 9 ) { + for ( i=0; i +#include #include "qp_report.h" #include "qp_vvec.h" diff -urN 2005_orig/src/pawlib/paw/xbae/caption.c 2005_patched/src/pawlib/paw/xbae/caption.c --- 2005_orig/src/pawlib/paw/xbae/caption.c 1996-03-01 12:39:36.000000000 +0100 +++ 2005_patched/src/pawlib/paw/xbae/caption.c 2006-04-10 17:42:39.000000000 +0200 @@ -244,7 +244,7 @@ * it will use our name as it's label. */ (void) - XtVaCreateManagedWidget(XtName(new), + XtVaCreateManagedWidget(XtName((Widget)new), xmLabelWidgetClass, (Widget)new, XmNbackground, new->core.background_pixel, XmNforeground, new->manager.foreground, diff -urN 2005_orig/src/pawlib/paw/xbae/clip.c 2005_patched/src/pawlib/paw/xbae/clip.c --- 2005_orig/src/pawlib/paw/xbae/clip.c 1996-03-01 12:39:36.000000000 +0100 +++ 2005_patched/src/pawlib/paw/xbae/clip.c 2006-04-10 17:47:28.000000000 +0200 @@ -190,8 +190,8 @@ * XXX It might be more efficient to fake up an Expose event * and call Redisplay directly */ - if (XtIsRealized(cw)) - XClearArea(XtDisplay(cw), XtWindow(cw), + if (XtIsRealized((Widget)cw)) + XClearArea(XtDisplay((Widget)cw), XtWindow((Widget)cw), 0, 0, 0 /*Full Width*/, 0 /*Full Height*/, True); diff -urN 2005_orig/src/pawlib/paw/xbae/matrix.c 2005_patched/src/pawlib/paw/xbae/matrix.c --- 2005_orig/src/pawlib/paw/xbae/matrix.c 1998-09-02 17:23:57.000000000 +0200 +++ 2005_patched/src/pawlib/paw/xbae/matrix.c 2006-04-10 18:02:32.000000000 +0200 @@ -67,7 +67,10 @@ #endif /* this BSDism is used to often to replace it in the code */ +/* but avoid warning of redefinition for linux OS */ +#ifndef linux #define bcopy(src,dst,n) memmove(dst,src,n) +#endif /* * Translations for Matrix (these will also be used by the Clip child). @@ -3467,7 +3470,7 @@ */ VERT_ORIGIN(mw) = call_data->value; - if (!XtIsRealized(mw)) + if (!XtIsRealized((Widget)mw)) return; /* @@ -3646,7 +3649,7 @@ */ HORIZ_ORIGIN(mw) = call_data->value; - if (!XtIsRealized(mw)) + if (!XtIsRealized((Widget)mw)) return; /* @@ -6162,7 +6165,7 @@ (*((XbaeMatrixWidgetClass) XtClass(mw))->matrix_class.cancel_edit) (mw, True); - if (XtIsRealized(mw)) { + if (XtIsRealized((Widget)mw)) { /* * Generate expose events on Matrix and Clip to force the * new rows to be drawn. @@ -6254,7 +6257,7 @@ (*((XbaeMatrixWidgetClass) XtClass(mw))->matrix_class.cancel_edit) (mw, True); - if (XtIsRealized(mw)) { + if (XtIsRealized((Widget)mw)) { /* * Generate expose events on Matrix and Clip to force the * rows to be redrawn. @@ -6349,7 +6352,7 @@ (*((XbaeMatrixWidgetClass) XtClass(mw))->matrix_class.cancel_edit) (mw, True); - if (XtIsRealized(mw)) { + if (XtIsRealized((Widget)mw)) { /* * Generate expose events on Matrix and Clip to force the * new columns to be drawn. @@ -6446,7 +6449,7 @@ (*((XbaeMatrixWidgetClass) XtClass(mw))->matrix_class.cancel_edit) (mw, True); - if (XtIsRealized(mw)) { + if (XtIsRealized((Widget)mw)) { /* * Generate expose events on Matrix and Clip to force the * columns to be redrawn. @@ -6528,7 +6531,7 @@ for (j = 0; j < mw->matrix.columns; j++) mw->matrix.cell_background[i + position][j] = colors[i]; - if (XtIsRealized(mw)) { + if (XtIsRealized((Widget)mw)) { /* * Redraw all the visible non-fixed cells. We don't need to clear first * since only the color changed. @@ -6626,7 +6629,7 @@ for (j = 0; j < num_colors; j++) mw->matrix.cell_background[i][j + position] = colors[j]; - if (XtIsRealized(mw)) { + if (XtIsRealized((Widget)mw)) { /* * Redraw all the visible non-fixed cells. We don't need to clear first * since only the color changed. @@ -6716,7 +6719,7 @@ */ mw->matrix.cell_background[row][column] = color; - if (XtIsRealized(mw)) { + if (XtIsRealized((Widget)mw)) { /* * Redraw the cell if it is visible */ diff -urN 2005_orig/src/scripts/cernlib 2005_patched/src/scripts/cernlib --- 2005_orig/src/scripts/cernlib 2003-01-23 15:00:37.000000000 +0100 +++ 2005_patched/src/scripts/cernlib 2006-01-31 09:30:51.000000000 +0100 @@ -115,6 +115,14 @@ [ -d /usr/X11R6/lib ] && SYSGX11="-L/usr/X11R6/lib -lX11" [ -d /usr/X11R6/lib ] && SYSGMOTIF="-L/usr/X11R6/lib -lXm -lXt -lXp -lXext -lX11" [ `uname -m` = ppc ] && SYSGMOTIF="$SYSGMOTIF -lSM -lICE -lXpm" +# use path to lib64 for x86_64 architecture +# check if compiled in 64 bit environment + SYSARCH=`ldd $CERN/$gver/bin/kuipc | grep /lib64/` + if [ `uname -m` = x86_64 ] && [ -d /usr/X11R6/lib64 ] && [ "$SYSARCH" != "" ] ; then + SYSGDIRS="-L/usr/X11R6/lib64" + SYSGX11="$SYSGDIRS -lX11" + SYSGMOTIF="$SYSGDIRS -lXm -lXt -lXp -lXext -lX11" + fi ;; NeXT) SYSGX11="/usr/lib/X11/libX11.r" ; SYSGMOTIF="-lXm -lXt /usr/lib/X11/libX11.r" ;;