rpms/cernlib/devel 114-install-scripts-properly.dpatch, NONE, 1.1 211-fix-comis-on-64-bit-arches.dpatch, NONE, 1.1 cernlib_2005.05.09.dfsg-2.diff, NONE, 1.1 003-geant-dummy-functions.dpatch, 1.1, 1.2 cernlib.spec, 1.6, 1.7 cernlib-install_scripts.patch, 1.1, NONE cernlib_2005.05.09.dfsg-1.diff, 1.2, NONE

Patrice Dumas (pertusus) fedora-extras-commits at redhat.com
Fri Dec 9 13:18:47 UTC 2005


Author: pertusus

Update of /cvs/extras/rpms/cernlib/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv20590

Modified Files:
	003-geant-dummy-functions.dpatch cernlib.spec 
Added Files:
	114-install-scripts-properly.dpatch 
	211-fix-comis-on-64-bit-arches.dpatch 
	cernlib_2005.05.09.dfsg-2.diff 
Removed Files:
	cernlib-install_scripts.patch cernlib_2005.05.09.dfsg-1.diff 
Log Message:
- use new debian patchset
- enable 64 bit fixes patch




--- NEW FILE 114-install-scripts-properly.dpatch ---
#! /bin/sh /usr/share/dpatch/dpatch-run
## 114-install-scripts-properly.dpatch by  <kmccarty at debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Install scripts properly (i.e. don't try to strip them).

@DPATCH@
diff -urNad cernlib-2005.05.09.dfsg~/src/scripts/Imakefile cernlib-2005.05.09.dfsg/src/scripts/Imakefile
--- cernlib-2005.05.09.dfsg~/src/scripts/Imakefile	2004-07-29 10:17:08.000000000 -0400
+++ cernlib-2005.05.09.dfsg/src/scripts/Imakefile	2005-12-02 10:45:23.091782817 -0500
@@ -1,10 +1,10 @@
 
-InstallProgram(paw,$(CERN_BINDIR))
+InstallNamedProg(paw,paw,$(CERN_BINDIR))
 
 #if defined(CERNLIB_SHIFT)
 InstallNamedProg(cernlib_shift,cernlib,$(CERN_BINDIR))
 #else
-InstallProgram(cernlib,$(CERN_BINDIR))
+InstallNamedProg(cernlib,cernlib,$(CERN_BINDIR))
 #endif
 
-InstallProgram(gxint,$(CERN_BINDIR))
+InstallNamedProg(gxint,gxint,$(CERN_BINDIR))


--- NEW FILE 211-fix-comis-on-64-bit-arches.dpatch ---
#! /bin/sh /usr/share/dpatch/dpatch-run
## 211-fix-comis-on-64-bit-arches.dpatch by  <kmccarty at debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: No description.

@DPATCH@
diff -urNad cernlib-2005.05.09~/src/geant321/gphys/gphot.F cernlib-2005.05.09/src/geant321/gphys/gphot.F
--- cernlib-2005.05.09~/src/geant321/gphys/gphot.F	1995-10-24 10:21:29.000000000 +0000
+++ cernlib-2005.05.09/src/geant321/gphys/gphot.F	2005-09-20 19:27:10.734527890 +0000
@@ -240,7 +240,7 @@
                   ELSE
 C Radiative shell decay
                      JS = JFN+1+2*NSHELL+ISHELL
-                     JS = JPHFN+Q(JS)
+                     JS = JPHFN + INT (Q(JS))    ! compiler optimiztion problem H. Vogt 2004/04/29
                      NPOINT = Q(JS)
                      DO 40 I = 1,NPOINT
                         IF(RN05.LT.Q(JS+I)) THEN
@@ -296,7 +296,7 @@
                   ELSE
 c Nonradiative decay
                      JS = JFN+1+3*NSHELL+ISHELL
-                     JS = JPHFN+Q(JS)
+                     JS = JPHFN + INT (Q(JS))    ! compiler optimiztion problem H. Vogt 2004/04/29
                      NPOINT = Q(JS)
                      DO 60 I = 1,NPOINT
                         IF(RN05.LT.Q(JS+I)) THEN
diff -urNad cernlib-2005.05.09~/src/packlib/kernlib/kerngen/ccgen/locb.c cernlib-2005.05.09/src/packlib/kernlib/kerngen/ccgen/locb.c
--- cernlib-2005.05.09~/src/packlib/kernlib/kerngen/ccgen/locb.c	1997-09-02 14:26:37.000000000 +0000
+++ cernlib-2005.05.09/src/packlib/kernlib/kerngen/ccgen/locb.c	2005-09-20 19:27:10.734527890 +0000
@@ -44,7 +44,25 @@
    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);
+
+   if (base == 1) {
+     base = (~mask & jadr);
+   } else if(base != (~mask & jadr)) {
+     printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
+     printf("locb_() 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 ((int) jadrl);
+#else
    return( (int) iadr );
+#endif
 }
 /*> END <----------------------------------------------------------*/
 #ifdef CERNLIB_TCGEN_LOCB
diff -urNad cernlib-2005.05.09~/src/packlib/zbook/code/zjump.c cernlib-2005.05.09/src/packlib/zbook/code/zjump.c
--- cernlib-2005.05.09~/src/packlib/zbook/code/zjump.c	1996-03-08 12:01:12.000000000 +0000
+++ cernlib-2005.05.09/src/packlib/zbook/code/zjump.c	2005-09-20 19:27:10.734527890 +0000
@@ -7,6 +7,9 @@
  *
  */
 #include "zbook/pilot_c.h"
+#if defined(CERNLIB_QMLXIA64)
+static void (*target)();
+#endif
 #if defined(CERNLIB_UNIX)
 #if defined(CERNLIB_QX_SC)
 zjump_(name,p1,p2,p3,p4)
@@ -18,8 +21,23 @@
 ZJUMP(name,p1,p2,p3,p4)
 #endif
 char *p1, *p2, *p3, *p4;
+
+/*  LP64 compatibility:
+    name is taken from a Fortran array and therefore its address is 32 bit
+    which has to be converted to a 64 bit address to satisfy void (*) (H. Vogt) */
+
+#if defined(CERNLIB_QMLXIA64)
+int *name;
+{
+  long jadr;
+  jadr   = *name;  /* convert int to long */
+  target = (void (*)())jadr;
+  (*target)(p1, p2, p3, p4);
+}
+#else
 void (**name)();
 {
    (**name)(p1, p2, p3, p4);
 }
 #endif
+#endif
diff -urNad cernlib-2005.05.09~/src/packlib/zebra/test/brztest/btest2.F cernlib-2005.05.09/src/packlib/zebra/test/brztest/btest2.F
--- cernlib-2005.05.09~/src/packlib/zebra/test/brztest/btest2.F	1997-09-02 15:16:16.000000000 +0000
+++ cernlib-2005.05.09/src/packlib/zebra/test/brztest/btest2.F	2005-09-20 19:27:10.734527890 +0000
@@ -29,6 +29,15 @@
 ********************************************************************************
 *
       COMMON/CRZT/IXSTOR,IXDIV,IFENCE(2),LEV,LEVIN,BLVECT(30000)
+
+*     LP64 compatibility:
+*     For 64-bit pointer systems put local variables referenced by LOCF
+*     in a dummy named common block to keep addresses in the program region.
+*     see also: packlib/ffread/test/main.F (H. Vogt)
+
+#if defined(CERNLIB_QMLXIA64)
+      COMMON /TEST64/LBANK
+#endif
       DIMENSION LQ(999),IQ(999),Q(999)
       EQUIVALENCE (IQ(1),Q(1),LQ(9)),(LQ(1),LEV)
 C
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/code/Imakefile cernlib-2005.05.09/src/pawlib/comis/code/Imakefile
--- cernlib-2005.05.09~/src/pawlib/comis/code/Imakefile	2005-09-20 19:26:47.894420356 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/code/Imakefile	2005-09-20 19:27:10.734527890 +0000
@@ -50,6 +50,10 @@
 SRCS_F := $(SRCS_F) cscrexec.F
 #endif
 
+#if defined(CERNLIB_QMLXIA64)
+SRCS_F := $(SRCS_F) csrtgpl.F csitgpl.F
+#endif
+
 #if defined(CERNLIB_OLD)
 SRCS_F := $(SRCS_F) cspdir.F csrmbk.F
 #endif
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/code/csaddr.F cernlib-2005.05.09/src/pawlib/comis/code/csaddr.F
--- cernlib-2005.05.09~/src/pawlib/comis/code/csaddr.F	1996-02-26 17:16:25.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/code/csaddr.F	2005-09-20 19:27:10.735527676 +0000
@@ -17,8 +17,14 @@
       INTEGER CSLTGP,CSITGP
       CHARACTER*32 NAME
 #include "comis/cstab.inc"
-#if defined(CERNLIB_SHL)
+#if defined(CERNLIB_SHL)&&(!defined(CERNLIB_QMLXIA64))
       INTEGER CS_GET_FUNC
+#endif
+#if defined(CERNLIB_SHL)&&(defined(CERNLIB_QMLXIA64))
+#include "comis/cstab64.inc"
+      INTEGER*8 CS_GET_FUNC
+#endif
+#if defined(CERNLIB_SHL)
       NAME=CHNAME
       NC=LENOCC(NAME)
       CALL CSCHID(NAME(:NC))
@@ -26,21 +32,39 @@
       I=CSLTGP(IPVS)
       IF(I.GT.0)THEN
         IF(IFCS.EQ.0)THEN
+#if defined (CERNLIB_QMLXIA64)
+          IADGPL=CS_GET_FUNC(NAME(1:NC)//'_')
+          IF(IADGPL.NE.0)THEN
+            IFCS=-2
+            CALL CSRTGPL(I)
+#else
           IADGP=CS_GET_FUNC(NAME(1:NC)//'_')
           IF(IADGP.NE.0)THEN
             IFCS=-2
             CALL CSRTGP(I)
+#endif
+#endif
+#if defined(CERNLIB_SHL)
           ELSE
             I=0
           ENDIF
         ENDIF
       ELSE
+#if defined (CERNLIB_QMLXIA64)
+          IADGPL=CS_GET_FUNC(NAME(1:NC)//'_')
+        IF(IADGPL.NE.0)THEN
+          IFCS=-2
+          ITYPGP=-2
+          I=CSITGPL(IPVS)
+        ENDIF
+#else
         IADGP=CS_GET_FUNC(NAME(1:NC)//'_')
         IF(IADGP.NE.0)THEN
           IFCS=-2
           ITYPGP=-2
           I=CSITGP(IPVS)
         ENDIF
+#endif
       END IF
       CSADDR=I
 #endif
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/code/csinit.F cernlib-2005.05.09/src/pawlib/comis/code/csinit.F
--- cernlib-2005.05.09~/src/pawlib/comis/code/csinit.F	2005-04-18 15:41:04.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/code/csinit.F	2005-09-20 19:27:10.735527676 +0000
@@ -64,6 +64,9 @@
 #if defined(CERNLIB_SHL)
 #include "comis/cshlnm.inc"
 #endif
+#if defined(CERNLIB_SHL)&&(defined(CERNLIB_QMLXIA64))
+#include "comis/cstab64.inc"
+#endif
 #if defined(CERNLIB_PAW)
 #include "paw/pcmode.inc"
 #include "comis/cshfill.inc"
@@ -159,6 +162,9 @@
       ICHMINU=ICHAR('-')
       ICHPLUS=ICHAR('+')
       ICHCOMM=ICHAR(',')
+#if defined(CERNLIB_SHL)&&(defined(CERNLIB_QMLXIA64))
+      IPIADGV=0
+#endif
 #if defined(CERNLIB_PAW)
       CALL CSPAWI
       MODHFI=0
@@ -209,11 +215,16 @@
       CHF77 ='f77 -c -pic'
       CHCC  ='cc -c -pic'
 #endif
-#if (defined(CERNLIB_LINUX))
+#if (defined(CERNLIB_LINUX))&&(!defined(CERNLIB_QMLXIA64))
       ITMPLEN=CSTMPD(CHPATH, 256)
       CHF77 ='g77 -c'
       CHCC  ='cc -c'
 #endif
+#if (defined(CERNLIB_LINUX))&&(defined(CERNLIB_QMLXIA64))
+      ITMPLEN=CSTMPD(CHPATH, 256)
+      CHF77 ='g77 -c -fPIC -fno-f2c'
+      CHCC  ='cc -c -fPIC -fno-f2c'
+#endif
 #if (defined(CERNLIB_SGI))&&(defined(CERNLIB_SHL))
       ITMPLEN=CSTMPD(CHPATH, 256)
       CHF77 ='f77 -c'
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/code/csintx.F cernlib-2005.05.09/src/pawlib/comis/code/csintx.F
--- cernlib-2005.05.09~/src/pawlib/comis/code/csintx.F	1996-12-05 09:50:37.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/code/csintx.F	2005-09-20 19:27:10.762521893 +0000
@@ -38,6 +38,9 @@
 #if defined(CERNLIB_PAW)
 #include "comis/cskucs.inc"
 #endif
+#if defined(CERNLIB_QMLXIA64)
+#include "comis/cstab64.inc"
+#endif
 #if (defined(CERNLIB_UNIX))&&(!defined(CERNLIB_ALPHA_OSF))
       INTEGER CSTRCMP
 #endif
@@ -1105,6 +1108,32 @@
       ENDIF
 #endif
 #if (!defined(CERNLIB_VAX))&&(!defined(CERNLIB_APOLLO))
+#if defined(CERNLIB_QMLXIA64)
+      IF(IQ(IP+KSIFCS).EQ.-2)THEN
+*Dynamic linker may give long addresses
+        IADGPL = IADGPLV(IADGP)
+        IF(ITP.EQ.1.OR.ITP.EQ.4.OR.ITP.EQ.6)THEN
+          ICSRES=CSCALI(IADGPL,NPAR,IDA(IOFSPL))
+        ELSEIF(ITP.EQ.2)THEN
+          RCSRES=CSCALR(IADGPL,NPAR,IDA(IOFSPL))
+        ELSEIF(ITP.EQ.5)THEN
+          DCSRES=CSCALD(IADGPL,NPAR,IDA(IOFSPL))
+        ELSEIF(ITP.EQ.7)THEN
+          DCSRES=CSCALD(IADGPL,NPAR,IDA(IOFSPL))
+        ENDIF
+      ELSE
+        IADGPL = IADGP
+        IF(ITP.EQ.1.OR.ITP.EQ.4.OR.ITP.EQ.6)THEN
+          ICSRES=CSCALI(IADGPL,NPAR,IDA(IOFSPL))
+        ELSEIF(ITP.EQ.2)THEN
+          RCSRES=CSCALR(IADGPL,NPAR,IDA(IOFSPL))
+        ELSEIF(ITP.EQ.5)THEN
+          DCSRES=CSCALD(IADGPL,NPAR,IDA(IOFSPL))
+        ELSEIF(ITP.EQ.7)THEN
+          DCSRES=CSCALD(IADGPL,NPAR,IDA(IOFSPL))
+        ENDIF
+      ENDIF
+#else
       IF(ITP.EQ.1.OR.ITP.EQ.4.OR.ITP.EQ.6)THEN
         ICSRES=CSCALI(IADGP,NPAR,IDA(IOFSPL))
       ELSEIF(ITP.EQ.2)THEN
@@ -1115,6 +1144,7 @@
         DCSRES=CSCALD(IADGP,NPAR,IDA(IOFSPL))
       ENDIF
 #endif
+#endif
       IPC=IPC+4
       GO TO 999
 *NUM I
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/code/csitgpl.F cernlib-2005.05.09/src/pawlib/comis/code/csitgpl.F
--- cernlib-2005.05.09~/src/pawlib/comis/code/csitgpl.F	1970-01-01 00:00:00.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/code/csitgpl.F	2005-09-20 19:27:10.763521679 +0000
@@ -0,0 +1,32 @@
+* Comis
+*
+*
+#if (defined(CERNLIB_QMLXIA64))
+#include "comis/pilot.h"
+*CMZU:  1.16/16 04/10/93  12.14.52  by  Vladimir Berezhnoi
+*-- Author : V.Berezhnoi
+* special for 64 bit addresses for dynamic linking (H. Vogt)
+      INTEGER FUNCTION CSITGPL(IP)
+***------------------------------
+*   it is last routine from the tables-set.
+***-----------------------------
+#include "comis/cspar.inc"
+#include "comis/mdpool.inc"
+#include "comis/cspnts.inc"
+#include "comis/cstabps.inc"
+#include "comis/cstab64.inc"
+      I=MHLOC(KSIDP+NWIDEN)
+      IQ(I)=0
+      IQ(I+1)=NCIDEN
+      DO 1 K=1,NWIDEN
+        IQ(I+KSIDP-1+K)=IDEN(K)
+   1  CONTINUE
+      CALL CSRTGPL(I)
+      IF(IP.EQ.0)THEN
+        IPGP=I
+      ELSE
+        IQ(IP)=I
+      ENDIF
+      CSITGP=I
+      END
+#endif
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/code/cskcal.F cernlib-2005.05.09/src/pawlib/comis/code/cskcal.F
--- cernlib-2005.05.09~/src/pawlib/comis/code/cskcal.F	1996-12-05 09:50:39.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/code/cskcal.F	2005-09-20 19:27:10.763521679 +0000
@@ -31,6 +31,9 @@
 #include "comis/cstab.inc"
 #include "comis/csfres.inc"
 #include "comis/cssysd.inc"
+#if defined(CERNLIB_QMLXIA64)
+#include "comis/cstab64.inc"
+#endif
       CHARACTER PRONAME*32
       INTEGER CSCALI
       DOUBLE PRECISION CSCALD
@@ -232,6 +235,34 @@
         I2=I2+KS
         I=I+1
  9203 CONTINUE
+#if defined(CERNLIB_QMLXIA64)
+*  Dynamic linker may give long addresses
+      IF (IFCS.EQ.-2)THEN
+        IADGPL = IADGPLV(IADGP)
+        IF(ITP.EQ.1.OR.ITP.EQ.4.OR.ITP.EQ.6)THEN
+          ICSRES=CSCALI(IADGPL,NPAR,IF77PL(1))
+        ELSEIF(ITP.EQ.2)THEN
+          RCSRES=CSCALR(IADGPL,NPAR,IF77PL(1))
+        ELSEIF(ITP.EQ.5)THEN
+          DCSRES=CSCALD(IADGPL,NPAR,IF77PL(1))
+        ELSEIF(ITP.EQ.7)THEN
+*  I think it will works correctly
+          DCSRES=CSCALD(IADGPL,NPAR,IF77PL(1))
+        ENDIF
+      ELSE
+        IADGPL = IADGP
+        IF(ITP.EQ.1.OR.ITP.EQ.4.OR.ITP.EQ.6)THEN
+          ICSRES=CSCALI(IADGPL,NPAR,IF77PL(1))
+        ELSEIF(ITP.EQ.2)THEN
+          RCSRES=CSCALR(IADGPL,NPAR,IF77PL(1))
+        ELSEIF(ITP.EQ.5)THEN
+          DCSRES=CSCALD(IADGPL,NPAR,IF77PL(1))
+        ELSEIF(ITP.EQ.7)THEN
+*  I think it will works correctly
+          DCSRES=CSCALD(IADGPL,NPAR,IF77PL(1))
+        ENDIF
+      ENDIF
+#else
 *      IT=IABS(ITYPGP)
       IF(ITP.EQ.1.OR.ITP.EQ.4.OR.ITP.EQ.6)THEN
         ICSRES=CSCALI(IADGP,NOPAR,IF77PL(1))
@@ -245,6 +276,7 @@
       ENDIF
 *+SELF,IF=UNIX,IF=-SGI,IF=-IBMRT,IF=-DECS,IF=-HPUX,IF=-SUN,IF=-MSDOS.
 #endif
+#endif
 #if (defined(CERNLIB_UNIX))&&(!defined(CERNLIB_STDUNIX))
       I=1
       DO 9203 K=ITA-NPAR+1,ITA
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/code/cslink.F cernlib-2005.05.09/src/pawlib/comis/code/cslink.F
--- cernlib-2005.05.09~/src/pawlib/comis/code/cslink.F	1996-02-26 17:16:17.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/code/cslink.F	2005-09-20 19:27:10.763521679 +0000
@@ -21,10 +21,15 @@
 #include "comis/cstab.inc"
 #include "comis/cspnts.inc"
 #include "comis/cslun.inc"
-#if defined(CERNLIB_SHL)
+#if defined(CERNLIB_SHL)&&(!defined(CERNLIB_QMLXIA64))
       CHARACTER*(KLENID) FNNAME
       INTEGER CS_GET_FUNC
 #endif
+#if defined(CERNLIB_SHL)&&(defined(CERNLIB_QMLXIA64))
+#include "comis/cstab64.inc"
+      CHARACTER*(KLENID) FNNAME
+      INTEGER*8 CS_GET_FUNC
+#endif
          COMMON/CSGSCM/IGS,JGS,NGS,CSJUNK(3)
       IF(ISTLIB.EQ.0 .AND. ITBS.EQ.0)RETURN
    2  I=IPGP
@@ -60,12 +65,20 @@
 #if defined(CERNLIB_SHL)
           CALL CSGTIDP(I,FNNAME,NC)
           CALL CUTOL(FNNAME(1:NC))
+#if defined (CERNLIB_QMLXIA64)
+          IADGPL=CS_GET_FUNC(FNNAME(1:NC)//'_')
+          IF(IADGPL.NE.0)THEN
+            IFCS=-2
+            CALL CSRTGPL(I)
+          ENDIF
+#else
           IADGP=CS_GET_FUNC(FNNAME(1:NC)//'_')
           IF(IADGP.NE.0)THEN
             IFCS=-2
             CALL CSRTGP(I)
           ENDIF
 #endif
+#endif
           IP=0
         ENDIF
       ENDIF
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/code/csrtgpl.F cernlib-2005.05.09/src/pawlib/comis/code/csrtgpl.F
--- cernlib-2005.05.09~/src/pawlib/comis/code/csrtgpl.F	1970-01-01 00:00:00.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/code/csrtgpl.F	2005-09-20 19:27:10.764521465 +0000
@@ -0,0 +1,31 @@
+* Comis
+*
+*
+#if (defined(CERNLIB_QMLXIA64))
+#include "comis/pilot.h"
+*CMZ :  1.18/14 10/01/95  15.41.06  by  Vladimir Berezhnoi
+*-- Author : V.Berezhnoi
+* special for 64 bit addresses for dynamic linking (H. Vogt)
+
+      SUBROUTINE CSRTGPL(I)
+***--------------------------
+#include "comis/cspar.inc"
+#include "comis/mdpool.inc"
+#include "comis/cstabps.inc"
+#include "comis/cstab.inc"
+#include "comis/cstab64.inc"
+
+      IPIADGV = IPIADGV + 1
+      IF (IPIADGV .GT. MAXIAD64)  THEN
+        WRITE (*,'(2a,I4)') 'to much addresses for dynamik linking, ',
+     &                      'limit is ', MAXIAD64
+        WRITE (*,'(2a)') 'increase MAXIAD64 in cstab64.inc and ',
+     &                    'recompile COMIS'
+
+        STOP
+      END IF
+      IADGPLV(IPIADGV) = IADGPL
+      IADGP            = IPIADGV
+      CALL CCOPYA(IADGP,IQ(I+2),KSIDP-2)
+      END
+#endif
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/comis/cstab64.inc cernlib-2005.05.09/src/pawlib/comis/comis/cstab64.inc
--- cernlib-2005.05.09~/src/pawlib/comis/comis/cstab64.inc	1970-01-01 00:00:00.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/comis/cstab64.inc	2005-09-20 19:27:10.775519109 +0000
@@ -0,0 +1,10 @@
+*
+*
+* cstab64.inc
+*
+      PARAMETER (MAXIAD64=100) !maximum number of shared objects
+      INTEGER*8 IADGPL,IADGPLV(MAXIAD64)
+      INTEGER   IADGPL1, IADGPL2
+      COMMON /CSTB64/ IADGPL,IADGPLV
+      COMMON /CSTB64I/ IPIADGV
+      EQUIVALENCE (IADGPL, IADGPL1)
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/deccc/ccopys.c cernlib-2005.05.09/src/pawlib/comis/deccc/ccopys.c
--- cernlib-2005.05.09~/src/pawlib/comis/deccc/ccopys.c	1997-09-02 15:50:38.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/deccc/ccopys.c	2005-09-20 19:27:10.776518895 +0000
@@ -33,11 +33,25 @@
 #else
 void ccopys_(ja,jb,nn)
 #endif
+
+/*
+ * 64-bit pointer systems require a special treatment of addresses - see below -
+ * using the CERNLIB_QMLXIA64 cpp flag (H. Vogt - Sep 2005)
+ */
+
+#if defined(CERNLIB_QMLXIA64)
+     int *ja, *jb;
+     int *nn;
+{
+  int i,n; char *a,*b;
+  n=*nn; (long)a=*ja; (long)b=*jb;
+#else
      char **ja, **jb;
      int *nn;
 {
   int i,n; char *a,*b;
   n=*nn; a=*ja; b=*jb;
+#endif
   if ( a >= b )
      for ( i=0; i<n; i++ )
           b[i]=a[i];
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/deccc/cs_hlshl.c cernlib-2005.05.09/src/pawlib/comis/deccc/cs_hlshl.c
--- cernlib-2005.05.09~/src/pawlib/comis/deccc/cs_hlshl.c	1998-01-12 09:56:07.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/deccc/cs_hlshl.c	2005-09-20 19:27:10.776518895 +0000
@@ -25,9 +25,21 @@
 #if (defined(CERNLIB_SUN)||defined(CERNLIB_SGI)||defined(CERNLIB_IBMRT)||defined(CERNLIB_ALPHA_OSF)||defined(CERNLIB_LINUX))&&(defined(CERNLIB_SHL))
 /*CMZ :          22/05/95  18.40.45  by  Julian Bunn*/
 /*-- Author :*/
-#if defined(CERNLIB_SUN)||defined(CERNLIB_LINUX)
+#if defined(CERNLIB_SUN)||defined(CERNLIB_LINUX)&&(!defined(CERNLIB_QMLXIA64))
 #define SUN
 #endif
+
+/*
+ * 64-bit pointer systems require a special treatment of addresses  
+ * using the CERNLIB_QMLXIA64 cpp flag (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_)
+ */
+
+#if defined(CERNLIB_LINUX)&&(defined(CERNLIB_QMLXIA64))
+#define ALPHA_OSF
+#endif
+
 #if defined(CERNLIB_SGI)
 #define SGI
 #endif
@@ -37,7 +49,6 @@
 #if defined(CERNLIB_ALPHA_OSF)
 #define ALPHA_OSF
 #endif
-
 #if defined(SUN) || defined(SGI) || defined(ALPHA_OSF)
 #include <dlfcn.h>
 #endif
@@ -274,6 +285,7 @@
 #endif
          p->next = f->first_proc;
          f->first_proc = p;
+         if (debug_level > 0) printf("function pointer is: %p\n", p->funcptr);
          return (void *)(p->funcptr);
       }
      f = f->next;
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/deccc/cscald.c cernlib-2005.05.09/src/pawlib/comis/deccc/cscald.c
--- cernlib-2005.05.09~/src/pawlib/comis/deccc/cscald.c	2004-10-27 09:01:54.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/deccc/cscald.c	2005-09-20 19:27:10.776518895 +0000
@@ -32,8 +32,7 @@
 #ifdef CERNLIB_WINNT
 # include <stdio.h>
 #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,41 @@
     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)
+double cscald_ (fptr,n,pin)
+ long *fptr;
+ int *n;
+ unsigned pin[15];
+{
+   int jumpad_();
+   double (*name)();
+   unsigned long ptr = *fptr + (unsigned long)jumpad_;
+   if ( *fptr > 0 ) ptr = 0;
+   ptr += *fptr;
+   name = (double (*)())ptr;
+/*    printf ("cscald - *fptr,ptr,jumpad_ are: %p %p %p %p\n", *fptr, ptr, jumpad_); */
+   long p[15];
+   int  count;  for ( count=0; count<16; count++ )  p[count] = pin[count];
+#else
  double (type_of_call *(*name)) ();
  int *n;
  int *p[15];
 {
+#endif
    double d;
    switch (*n)
    {
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/deccc/cscali.c cernlib-2005.05.09/src/pawlib/comis/deccc/cscali.c
--- cernlib-2005.05.09~/src/pawlib/comis/deccc/cscali.c	2004-10-22 12:42:40.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/deccc/cscali.c	2005-09-20 19:27:10.777518681 +0000
@@ -29,8 +29,7 @@
 #ifdef CERNLIB_WINNT
 # include <stdio.h>
 #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,41 @@
 #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)
+int cscali_ (fptr,n,pin)
+ long *fptr;
+ int *n;
+ unsigned pin[15];
+{
+   int jumpad_();
+   int (*name)();
+   unsigned long ptr = (unsigned long)jumpad_;
+   if ( *fptr > 0 ) ptr = 0;
+   ptr += *fptr;
+   name = (int (*)())ptr;
+/*    printf ("cscali - *fptr,ptr,jumpad_ are: %p %p %p %p\n", *fptr, ptr, jumpad_); */
+   long p[15];
+   int  count;  for ( count=0; count<16; count++ )  p[count] = pin[count];
+#else
  int (type_of_call *(*name)) ();
  int *n;
  int *p[15];
 {
+#endif
    int i;
    switch (*n)
    {
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/deccc/cscalr.c cernlib-2005.05.09/src/pawlib/comis/deccc/cscalr.c
--- cernlib-2005.05.09~/src/pawlib/comis/deccc/cscalr.c	2004-10-22 12:03:16.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/deccc/cscalr.c	2005-09-20 19:27:10.788516325 +0000
@@ -33,16 +33,12 @@
 #ifdef CERNLIB_WINNT
 # include <stdio.h>
 #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,39 @@
 # 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)
+float cscalr_ (fptr,n,pin)
+ long *fptr;
+ int *n;
+ int pin[15];
+{
+   int jumpad_();
+   float (*name)();
+   unsigned long ptr = (unsigned long)jumpad_;
+   ptr += *fptr;
+   name = (float (*)())ptr;
+/*    printf ("cscalr - *fptr,ptr,jumpad_ are: %p %p %p %p\n", *fptr, ptr, jumpad_); */
+   long p[15];
+   int  count;  for ( count=0; count<16; count++ )  p[count] = pin[count];
+#else
  float (type_of_call *(*name)) ();
  int *n;
  int *p[15];
 {
+#endif
    float r;
    switch (*n)
    {
diff -urNad cernlib-2005.05.09~/src/pawlib/comis/deccc/cstrcmp.c cernlib-2005.05.09/src/pawlib/comis/deccc/cstrcmp.c
--- cernlib-2005.05.09~/src/pawlib/comis/deccc/cstrcmp.c	1997-09-02 15:50:44.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/comis/deccc/cstrcmp.c	2005-09-20 19:27:10.788516325 +0000
@@ -36,6 +36,27 @@
 #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)
+ */
+
+#if defined(CERNLIB_QMLXIA64)
+     int *ja, *jb;
+     int *na, *nb;
+{
+
+  int i,la,lb,k; char *a,*b;
+  if ( *na >= *nb )
+     {
+      (long)a=*ja; (long)b=*jb; la=*na; lb=*nb; k=1;
+      }
+  else
+    {
+      (long)a=*jb; (long)b=*ja; la=*nb; lb=*na; k=-1;
+     }
+#else
      char **ja, **jb;
      int *na, *nb;
 {
@@ -48,6 +69,7 @@
     {
       a=*jb; b=*ja; la=*nb; lb=*na; k=-1;
      }
+#endif
   for ( i=0; i<lb; i++ )
     { if(a[i] != b[i])
       { return ( (a[i] > b[i]) ? k : -k ); }
diff -urNad cernlib-2005.05.09~/src/pawlib/paw/ntuple/qp_execute.c cernlib-2005.05.09/src/pawlib/paw/ntuple/qp_execute.c
--- cernlib-2005.05.09~/src/pawlib/paw/ntuple/qp_execute.c	2001-09-18 13:41:35.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/paw/ntuple/qp_execute.c	2005-09-20 19:27:10.789516111 +0000
@@ -245,7 +245,15 @@
 	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
+	   and the LP64 ABI has the code area in the 32 bit address space
+	   but the stack starts downward from 0x80000000000 (H. Vogt) */
+
+	static int	ibase[1], ioff, nuse;
 	int		id = qe->id;
 	char *		path = qe->path;
 	char *		title;
@@ -871,8 +879,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 );
 
diff -urNad cernlib-2005.05.09~/src/pawlib/paw/ntuple/qp_hbook_if.c cernlib-2005.05.09/src/pawlib/paw/ntuple/qp_hbook_if.c
--- cernlib-2005.05.09~/src/pawlib/paw/ntuple/qp_hbook_if.c	1999-07-05 15:43:35.000000000 +0000
+++ cernlib-2005.05.09/src/pawlib/paw/ntuple/qp_hbook_if.c	2005-09-20 19:27:10.801513541 +0000
@@ -149,7 +149,15 @@
 	int	idn, idtmp;
 	int	icycle;
 	int	ierr;
-	int     izero = 0;
+
+	/* LP64 compatibility:
+	   use static for izero because its address is fetched by hbname_
+	   using locb and locb expects 32 bit addresses only.
+	   static takes izero from the stack and puts it the code area
+	   and the LP64 ABI has the code area in the 32 bit address space
+	   but the stack starts downward from 0x80000000000 (H. Vogt) */
+
+	static int     izero = 0;
 
 	/* split string into  path, id and cycle */
 
diff -urNad cernlib-2005.05.09~/src/scripts/cernlib cernlib-2005.05.09/src/scripts/cernlib
--- cernlib-2005.05.09~/src/scripts/cernlib	2003-01-23 14:00:37.000000000 +0000
+++ cernlib-2005.05.09/src/scripts/cernlib	2005-09-20 19:27:10.801513541 +0000
@@ -115,6 +115,12 @@
 	       [ -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"
+#                      add path to lib64 for x86_64 architecture
+	       if [ `uname -m` = x86_64 ] && [ -d /usr/X11R6/lib64 ] ; then
+		  SYSGDIRS="-L/usr/X11R6/lib -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" ;;

cernlib_2005.05.09.dfsg-2.diff:

***** Error reading new file: [Errno 2] No such file or directory: 'cernlib_2005.05.09.dfsg-2.diff'

Index: 003-geant-dummy-functions.dpatch
===================================================================
RCS file: /cvs/extras/rpms/cernlib/devel/003-geant-dummy-functions.dpatch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 003-geant-dummy-functions.dpatch	30 Nov 2005 22:01:01 -0000	1.1
+++ 003-geant-dummy-functions.dpatch	9 Dec 2005 13:18:44 -0000	1.2
@@ -21,7 +21,7 @@
 diff -urNad cernlib-2005.05.09.dfsg~/src/geant321/gkine/dummy.c cernlib-2005.05.09.dfsg/src/geant321/gkine/dummy.c
 --- cernlib-2005.05.09.dfsg~/src/geant321/gkine/dummy.c	1970-01-01 00:00:00.000000000 +0000
 +++ cernlib-2005.05.09.dfsg/src/geant321/gkine/dummy.c	2005-11-29 16:55:14.274440352 +0000
-@@ -0,0 +1,204 @@
+@@ -0,0 +1,205 @@
 +/* Dummy file to avoid undefined symbols in the library */
 +/* Kevin McCarty, 14 Jan 2003 */
 +/* Last revised 22 November 2005 */
@@ -179,7 +179,8 @@
 + * shared libraries in the 12 official Debian architectures and determining
 + * the maximum size of each common block there. */
 +
-+#define COMMON(fortranname_, size) struct { char c[size]; } fortranname_
++#define COMMON(fortranname_, size) \
++        struct { char c[size]; } fortranname_ = { { 0, } }
 +
 +COMMON(fkadhn_, 1376);
 +COMMON(fkadhp_, 3712);


Index: cernlib.spec
===================================================================
RCS file: /cvs/extras/rpms/cernlib/devel/cernlib.spec,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- cernlib.spec	2 Dec 2005 09:57:41 -0000	1.6
+++ cernlib.spec	9 Dec 2005 13:18:44 -0000	1.7
@@ -1,6 +1,6 @@
 Name:          cernlib
 Version:       2005
-Release:       7%{?dist}
+Release:       8%{?dist}
 Summary:       General purpose CERN library and associated binaries
 Group:         Development/Libraries
 # As explained in the cernlib on debian FAQ, cfortran can be considered LGPL.
@@ -62,7 +62,7 @@
 Source201: cernlib-deadpool.txt
 
 # debian patchset
-Patch0: cernlib_2005.05.09.dfsg-1.diff
+Patch0: cernlib_2005.05.09.dfsg-2.diff
 # change file to directory to DATADIR
 Patch1100: cernlib-enforce-FHS.diff
 Patch1: 001-fix-missing-fluka.dpatch
@@ -84,6 +84,7 @@
 Patch112: 112-remove-nonexistent-prototypes-from-gen.h.dpatch
 # a workaround for cups. Applied in doubt.
 Patch113: 113-cups-postscript-fix.dpatch
+Patch114: 114-install-scripts-properly.dpatch
 Patch200: 200-comis-allow-special-chars-in-path.dpatch
 Patch201: 201-update-kuip-helper-apps.dpatch
 Patch202: 202-fix-includes-in-minuit-example.dpatch
@@ -97,8 +98,8 @@
 Patch208: 208-fix-redundant-packlib-dependencies.dpatch
 Patch209: 209-ignore-unneeded-headers-in-kmutil.c.dpatch
 Patch210: 210-improve-cfortran-header-files.dpatch
-# disabled in the debian patchset
-# 211-fix-comis-on-64-bit-arches.disabled
+# disabled in the debian patchset, enabled here
+Patch211: 211-fix-comis-on-64-bit-arches.dpatch
 Patch300: 300-skip-duplicate-lenocc.dpatch
 # Use another approach, see cernlib-enforce-FHS
 # Patch33: 301-datafiles-comply-with-FHS.dpatch
@@ -168,13 +169,13 @@
 
 # change the cernlib script such that -llapack -lblas is used instead of 
 # cernlib lapack
-# and also depend explicitely on libkernlib now that it is out of packlib
+# depend explicitely on libkernlib now that it is out of packlib
+# use lesstif-pawlib and lesstif-packlib
 # the modified script is renamed cernlib-static later and the debian cernlib
 # script is used instead.
 Patch1200: cernlib-cernlib_kernlib.patch
 # don't stop if the CERN variable isn't defined
 Patch1201: cernlib-gxint-script.diff
-Patch1202: cernlib-install_scripts.patch
 Patch1203: cernlib-hwuli2_use_dimag.diff 
 Patch1204: cernlib-hwhiga_use_dimag.diff
 Patch1205: cernlib-gfortran.diff 
@@ -307,6 +308,7 @@
 %patch -P 111 -p1
 %patch -P 112 -p1
 %patch -P 113 -p1
+%patch -P 114 -p1
 %patch -P 200 -p1
 %patch -P 201 -p1
 %patch -P 202 -p1
@@ -318,7 +320,7 @@
 %patch -P 208 -p1
 %patch -P 209 -p1
 %patch -P 210 -p1
-#%patch -P 211 -p1
+%patch -P 211 -p1
 %patch -P 300 -p1
 #%patch -P 301 -p1
 #%patch -P 302 -p1
@@ -447,7 +449,6 @@
 
 %patch -P 1200
 %patch -P 1201
-%patch -P 1202
 %patch -P 1203
 %patch -P 1204
 # use gfortran
@@ -688,6 +689,10 @@
 %doc debian/debhelper/zftp.README.debian
 
 %changelog
+* Fri Dec  9 2005 Patrice Dumas <dumas at centre-cired.fr> - 2005-8
+- use new debian patchset
+- enable 64 bit fixes patch
+
 * Fri Dec  2 2005 Patrice Dumas <dumas at centre-cired.fr> - 2005-7
 - use updated beta debian patchset
 - remove the BSD in the licence because there is no library nor binary


--- cernlib-install_scripts.patch DELETED ---


--- cernlib_2005.05.09.dfsg-1.diff DELETED ---




More information about the scm-commits mailing list