Dear Daniel,
well, this definitly would be an issue for the us...@open-mpi.org list.
Your report is definitely important and valid, all functions allowing 
MPI_BOTTOM in the fortran interface should be using OMPI_ADDR to convert for 
the C-interface....

Aaah, I see George has a similar commit -- possibly, we need to sync.
Please see the code attached, compared r15030, it adapts the macros to use 
OMPI_F2C_...

Thanks,
Rainer

On Tuesday 12 June 2007 23:15, Daniel Spångberg wrote:
> One of the users of our computer cluster have reported a problem with his
> simulation code. We have been able to trace this down to a problem with
> the MPI struct when absolute addressing is used for the members in the
> struct, necessating the use of MPI_BOTTOM. The problem occurs with
> MPI_BCAST, but works fine with MPI_SEND and MPI_RECV. I digged down into
> the openmpi code and found out that the problem occurs only in fortran,
> which seems to be because when MPI_BCAST is called, the OMPI_ADDR macro in
> ompi/mpi/f77/constants.h is never evaluated which thus never turns the
> fortran MPI_BOTTOM into a C MPI_BOTTOM. When MPI_SEND and MPI_RECV are
> used the OMPI_ADDR macro is evaluated and no problem occurs.
>
> An example of a problematic code (tested on two processes):
>
>        program testme
>        implicit none
>        include 'mpif.h'
>        integer ierr,rank,size
>        integer btype(1),blen(1),param_batch
>        real param
>        integer(kind=mpi_address_kind) :: disp(1)
>        integer status(MPI_STATUS_SIZE)
>
>        param=0.
>
>        call MPI_INIT(ierr)
>        call MPI_GET_ADDRESS(param,disp(1),ierr)
>        if (ierr.ne.MPI_SUCCESS) write(*,*) 'MPI_GET_ADDRESS FAILED'
>        btype(1)=MPI_REAL
>        blen(1)=1
>        call MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierr)
>        call MPI_COMM_SIZE(MPI_COMM_WORLD,size,ierr)
>        call MPI_TYPE_CREATE_STRUCT(1,blen,disp,btype,param_batch,ierr)
>        if (ierr.ne.MPI_SUCCESS) then
>          write(*,*) 'MPI_TYPE_CREATE_STRUCT FAILED'
>        endif
>        call MPI_TYPE_COMMIT(param_batch,ierr)
>        if (ierr.ne.MPI_SUCCESS) write(*,*) 'MPI_TYPE_COMMIT FAILED'
>        if (rank.eq.0) param=100.
> c      if (rank.eq.0) then
> c        call MPI_SEND(MPI_BOTTOM,1,
> c     x       param_batch,1,0,MPI_COMM_WORLD,ierr)
> c      else
> c        call MPI_RECV(MPI_BOTTOM,1,
> c     x       param_batch,0,0,MPI_COMM_WORLD,status,ierr)
> c      endif
>        call MPI_BCAST(MPI_BOTTOM,1,param_batch,0,MPI_COMM_WORLD,ierr)
>        if (ierr.ne.MPI_SUCCESS) write(*,*) 'MPI_BCAST FAILED'
>        write(*,*) 'Rank:',rank,'Size:',size,'Param=',param
>        call MPI_Finalize(ierr)
>
>        end program testme
>
> mpirun -np 2 testme_submitted_to_devel
> [auchentoshan:21021] *** Process received signal ***
> [auchentoshan:21021] Signal: Segmentation fault (11)
> [auchentoshan:21021] Signal code: Address not mapped (1)
> [auchentoshan:21021] Failing at address: 0x7fc04ffd7c
> [auchentoshan:21021] [ 0] /lib64/tls/libpthread.so.0 [0x3d9660c430]
> [auchentoshan:21021] [ 1] /lib64/tls/libc.so.6(memcpy+0x60) [0x3d95571ec0]
> [auchentoshan:21021] [ 2]
> /opt/openmpi-1.2.1-gcc4/lib/libmpi.so.0(ompi_convertor_pack+0x164)
> [0x2a957cf5b4]
> [auchentoshan:21021] [ 3]
> /opt/openmpi-1.2.1-gcc4/lib/openmpi/mca_pml_ob1.so(mca_pml_ob1_send_request
>_start_copy+0x24c) [0x2a982851dc]
> [auchentoshan:21021] [ 4]
> /opt/openmpi-1.2.1-gcc4/lib/openmpi/mca_pml_ob1.so(mca_pml_ob1_isend+0x217)
> [0x2a9827fe77]
> [auchentoshan:21021] [ 5]
> /opt/openmpi-1.2.1-gcc4/lib/openmpi/mca_coll_tuned.so(ompi_coll_tuned_bcast
>_intra_generic+0x354) [0x2a98ac08b4]
> [auchentoshan:21021] [ 6]
> /opt/openmpi-1.2.1-gcc4/lib/openmpi/mca_coll_tuned.so(ompi_coll_tuned_bcast
>_intra_binomial+0xc8) [0x2a98ac0bd8]
> [auchentoshan:21021] [ 7]
> /opt/openmpi-1.2.1-gcc4/lib/libmpi.so.0(PMPI_Bcast+0x15c) [0x2a957d62ac]
> [auchentoshan:21021] [ 8]
> /opt/openmpi-1.2.1-gcc4/lib/libmpi_f77.so.0(pmpi_bcast_+0x5a)
> [0x2a9567e99a]
> [auchentoshan:21021] [ 9] testme_submitted_to_devel(MAIN__+0x1f8)
> [0x401080]
> [auchentoshan:21021] [10] testme_submitted_to_devel(main+0xe) [0x4011be]
> [auchentoshan:21021] [11] /lib64/tls/libc.so.6(__libc_start_main+0xdb)
> [0x3d9551c3fb]
> [auchentoshan:21021] [12] testme_submitted_to_devel [0x400dfa]
> [auchentoshan:21021] *** End of error message ***
> mpirun noticed that job rank 0 with PID 21021 on node auchentoshan exited
> on signal 11 (Segmentation fault).
> 1 additional process aborted (not shown)
>
> The openmpi version we have tested this on includes the latest, 1.2.2
> version as well although the log message above is for version 1.2.1.
> Distribution: Scientific Linux 4.4 (RHEL4 clone). The problem occurs on
> both AMD64 and i386. The problem occurs both when using gcc/gfortran and
> the portland group compilers version 7.0-4. Interconnect GBE.
>
> daniels@auchentoshan:~ > gcc4 --version
> gcc4 (GCC) 4.1.0 20060515 (Red Hat 4.1.0-18)
> Copyright (C) 2006 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>
> daniels@auchentoshan:~ > gfortran --version
> GNU Fortran 95 (GCC) 4.1.0 20060515 (Red Hat 4.1.0-18)
> Copyright (C) 2006 Free Software Foundation, Inc.
>
> GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
> You may redistribute copies of GNU Fortran
> under the terms of the GNU General Public License.
> For more information about these matters, see the file named COPYING
>
> Working C code which does the same thing:
> #include <stdio.h>
> #include <stdlib.h>
> #include <mpi.h>
>
> int main(int argc, char **argv)
> {
>    int rank,size;
>    float param=0.;
>    MPI_Datatype btype[1],param_batch;
>    MPI_Aint disp[1];
>    int blen[1];
>
>    MPI_Init(&argc,&argv);
>    if (MPI_Get_address(&param,&disp[0])!=MPI_SUCCESS)
>      fprintf(stderr,"MPI_Get_address failed.\n");
>    btype[0]=MPI_FLOAT;
>    blen[0]=1;
>    MPI_Comm_rank(MPI_COMM_WORLD,&rank);
>    MPI_Comm_size(MPI_COMM_WORLD,&size);
>    if (MPI_Type_create_struct(1,blen,disp,btype,&param_batch)!=MPI_SUCCESS)
>      fprintf(stderr,"MPI_Type_Create_Struct failed.\n");
>    if (MPI_Type_commit(&param_batch)!=MPI_SUCCESS)
>      fprintf(stderr,"MPI_Type_Commit failed.\n");
>    if (rank==0)
>      param=100.;
>    if (MPI_Bcast(MPI_BOTTOM,1,param_batch,0,MPI_COMM_WORLD)!=MPI_SUCCESS)
>      fprintf(stderr,"MPI_Bcast failed.\n");
>    printf("Rank:%d, Size:%d, Param=%f\n",rank,size,param);
>    MPI_Finalize();
>    return 0;
> }
>
>
> Best regards
> Daniel Spångberg
>
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel

-- 
----------------------------------------------------------------
Dipl.-Inf. Rainer Keller       http://www.hlrs.de/people/keller
 High Performance Computing       Tel: ++49 (0)711-685 6 5858
   Center Stuttgart (HLRS)           Fax: ++49 (0)711-685 6 5832
 POSTAL:Nobelstrasse 19                 email: kel...@hlrs.de     
 ACTUAL:Allmandring 30, R.O.030            AIM:rusraink
 70550 Stuttgart
Index: constants.h
===================================================================
--- constants.h	(Revision 15017)
+++ constants.h	(Arbeitskopie)
@@ -89,7 +89,7 @@

 /* Note that the rationale for the types of each of these variables is
    discussed in ompi/include/mpif-common.h.  Do not change the types
-   without also changing ompi/mpi/runtime/ompi_mpi_init.c and
+   without also changing ompi/runtime/ompi_mpi_init.c and
    ompi/include/mpif-common.h. */

 DECL(int, MPI_FORTRAN_BOTTOM, mpi_fortran_bottom,
@@ -215,7 +215,7 @@
 #endif /* weak / specific symbol type */

 /* Convert between Fortran and C MPI_BOTTOM */
-#define OMPI_ADDR(addr)  (OMPI_IS_FORTRAN_BOTTOM(addr) ? MPI_BOTTOM : (addr))
-#define OMPI_IN_PLACE(addr)  (OMPI_IS_FORTRAN_IN_PLACE(addr) ? MPI_IN_PLACE : (addr))
+#define OMPI_F2C_BOTTOM(addr)    (OMPI_IS_FORTRAN_BOTTOM(addr) ? MPI_BOTTOM : (addr))
+#define OMPI_F2C_IN_PLACE(addr)  (OMPI_IS_FORTRAN_IN_PLACE(addr) ? MPI_IN_PLACE : (addr))

 #endif /* OMPI_F77_CONSTANTS_H */
Index: accumulate_f.c
===================================================================
--- accumulate_f.c	(Revision 15017)
+++ accumulate_f.c	(Arbeitskopie)
@@ -70,7 +70,7 @@
     MPI_Win c_win = MPI_Win_f2c(*win);
     MPI_Op c_op = MPI_Op_f2c(*op);

-    *ierr = OMPI_INT_2_FINT(MPI_Accumulate(OMPI_ADDR(origin_addr), 
+    *ierr = OMPI_INT_2_FINT(MPI_Accumulate(OMPI_F2C_BOTTOM(origin_addr), 
 					   OMPI_FINT_2_INT(*origin_count),
 					   c_origin_datatype, 
 					   OMPI_FINT_2_INT(*target_rank),
Index: allgather_f.c
===================================================================
--- allgather_f.c	(Revision 15017)
+++ allgather_f.c	(Arbeitskopie)
@@ -69,9 +69,9 @@
     c_sendtype = MPI_Type_f2c(*sendtype);
     c_recvtype = MPI_Type_f2c(*recvtype);

-    if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) {
-        sendbuf = MPI_IN_PLACE;
-    }
+    sendbuf = OMPI_F2C_IN_PLACE(sendbuf);
+    sendbuf = OMPI_F2C_BOTTOM(sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM(recvbuf);

     *ierr = OMPI_INT_2_FINT(MPI_Allgather(sendbuf,
 					  OMPI_FINT_2_INT(*sendcount),
Index: allgatherv_f.c
===================================================================
--- allgatherv_f.c	(Revision 15017)
+++ allgatherv_f.c	(Arbeitskopie)
@@ -76,9 +76,9 @@
     OMPI_ARRAY_FINT_2_INT(recvcounts, size);
     OMPI_ARRAY_FINT_2_INT(displs, size);

-    if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) {
-        sendbuf = MPI_IN_PLACE;
-    }
+    sendbuf = OMPI_F2C_IN_PLACE(sendbuf);
+    sendbuf = OMPI_F2C_BOTTOM(sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM(recvbuf);

     *ierr = OMPI_INT_2_FINT(MPI_Allgatherv(sendbuf,
 					   OMPI_FINT_2_INT(*sendcount),
Index: allreduce_f.c
===================================================================
--- allreduce_f.c	(Revision 15017)
+++ allreduce_f.c	(Arbeitskopie)
@@ -70,9 +70,9 @@
     c_type = MPI_Type_f2c(*datatype);
     c_op = MPI_Op_f2c(*op);

-    if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) {
-        sendbuf = MPI_IN_PLACE;
-    }
+    sendbuf = OMPI_F2C_IN_PLACE(sendbuf);
+    sendbuf = OMPI_F2C_BOTTOM(sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM(recvbuf);

     *ierr = OMPI_INT_2_FINT(MPI_Allreduce(sendbuf, recvbuf,
 					  OMPI_FINT_2_INT(*count),
Index: alltoall_f.c
===================================================================
--- alltoall_f.c	(Revision 15017)
+++ alltoall_f.c	(Arbeitskopie)
@@ -19,6 +19,7 @@
 #include "ompi_config.h"

 #include "ompi/mpi/f77/bindings.h"
+#include "ompi/mpi/f77/constants.h"

 #if OMPI_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER
 #pragma weak PMPI_ALLTOALL = mpi_alltoall_f
@@ -68,10 +69,14 @@
     c_sendtype = MPI_Type_f2c(*sendtype);
     c_recvtype = MPI_Type_f2c(*recvtype);

+    sendbuf = OMPI_F2C_IN_PLACE(sendbuf);
+    sendbuf = OMPI_F2C_BOTTOM(sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM(recvbuf);
+
     *ierr = OMPI_INT_2_FINT(MPI_Alltoall(sendbuf,
-					  OMPI_FINT_2_INT(*sendcount),
-					  c_sendtype, 
-					  recvbuf, 
-					  OMPI_FINT_2_INT(*recvcount),
-					  c_recvtype, c_comm));
+                                         OMPI_FINT_2_INT(*sendcount),
+                                         c_sendtype, 
+                                         recvbuf, 
+                                         OMPI_FINT_2_INT(*recvcount),
+                                         c_recvtype, c_comm));
 }
Index: alltoallv_f.c
===================================================================
--- alltoallv_f.c	(Revision 15017)
+++ alltoallv_f.c	(Arbeitskopie)
@@ -19,6 +19,7 @@
 #include "ompi_config.h"

 #include "ompi/mpi/f77/bindings.h"
+#include "ompi/mpi/f77/constants.h"

 #if OMPI_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER
 #pragma weak PMPI_ALLTOALLV = mpi_alltoallv_f
@@ -80,6 +81,9 @@
     OMPI_ARRAY_FINT_2_INT(recvcounts, size);
     OMPI_ARRAY_FINT_2_INT(rdispls, size);

+    sendbuf = OMPI_F2C_IN_PLACE(sendbuf);
+    sendbuf = OMPI_F2C_BOTTOM(sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM(recvbuf);

     *ierr = OMPI_INT_2_FINT(MPI_Alltoallv(sendbuf, 
 					  OMPI_ARRAY_NAME_CONVERT(sendcounts),
Index: alltoallw_f.c
===================================================================
--- alltoallw_f.c	(Revision 15017)
+++ alltoallw_f.c	(Arbeitskopie)
@@ -19,6 +19,7 @@
 #include "ompi_config.h"

 #include "ompi/mpi/f77/bindings.h"
+#include "ompi/mpi/f77/constants.h"

 #if OMPI_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER
 #pragma weak PMPI_ALLTOALLW = mpi_alltoallw_f
@@ -88,6 +89,10 @@
         --size;
     }

+    /* Alltoallw does not support MPI_IN_PLACE */
+    sendbuf = OMPI_F2C_BOTTOM(sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM(recvbuf);
+
     *ierr = OMPI_INT_2_FINT(MPI_Alltoallw(sendbuf, 
 					  OMPI_ARRAY_NAME_CONVERT(sendcounts),
 					  OMPI_ARRAY_NAME_CONVERT(sdispls),
Index: bcast_f.c
===================================================================
--- bcast_f.c	(Revision 15017)
+++ bcast_f.c	(Arbeitskopie)
@@ -19,6 +19,7 @@
 #include "ompi_config.h"

 #include "ompi/mpi/f77/bindings.h"
+#include "ompi/mpi/f77/constants.h"

 #if OMPI_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER
 #pragma weak PMPI_BCAST = mpi_bcast_f
@@ -66,7 +67,7 @@
     c_comm = MPI_Comm_f2c(*comm);
     c_type = MPI_Type_f2c(*datatype);

-    *ierr = OMPI_INT_2_FINT(MPI_Bcast(buffer, 
+    *ierr = OMPI_INT_2_FINT(MPI_Bcast(OMPI_F2C_BOTTOM(buffer), 
 				      OMPI_FINT_2_INT(*count), 
 				      c_type,
 				      OMPI_FINT_2_INT(*root),
Index: bsend_f.c
===================================================================
--- bsend_f.c	(Revision 15017)
+++ bsend_f.c	(Arbeitskopie)
@@ -65,7 +65,7 @@

     c_comm = MPI_Comm_f2c (*comm);

-    *ierr = OMPI_INT_2_FINT(MPI_Bsend(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count),
+    *ierr = OMPI_INT_2_FINT(MPI_Bsend(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count),
 				      c_type, OMPI_FINT_2_INT(*dest),
 				      OMPI_FINT_2_INT(*tag), c_comm));
 }
Index: bsend_init_f.c
===================================================================
--- bsend_init_f.c	(Revision 15017)
+++ bsend_init_f.c	(Arbeitskopie)
@@ -66,7 +66,7 @@

     c_comm = MPI_Comm_f2c (*comm);

-    *ierr = OMPI_INT_2_FINT(MPI_Bsend_init(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count),
+    *ierr = OMPI_INT_2_FINT(MPI_Bsend_init(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count),
 					   c_type,
 					   OMPI_FINT_2_INT(*dest),
 					   OMPI_FINT_2_INT(*tag), 
Index: exscan_f.c
===================================================================
--- exscan_f.c	(Revision 15017)
+++ exscan_f.c	(Arbeitskopie)
@@ -19,6 +19,7 @@
 #include "ompi_config.h"

 #include "ompi/mpi/f77/bindings.h"
+#include "ompi/mpi/f77/constants.h"

 #if OMPI_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER
 #pragma weak PMPI_EXSCAN = mpi_exscan_f
@@ -69,6 +70,10 @@
     c_type = MPI_Type_f2c(*datatype);
     c_op = MPI_Op_f2c(*op);

+    /* MPI_IN_PLACE is not supported */
+    sendbuf = OMPI_F2C_BOTTOM (sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM (recvbuf);
+
     *ierr = OMPI_INT_2_FINT(MPI_Exscan(sendbuf, recvbuf, 
 				       OMPI_FINT_2_INT(*count),
 				       c_type, c_op, c_comm));
Index: file_iread_at_f.c
===================================================================
--- file_iread_at_f.c	(Revision 15017)
+++ file_iread_at_f.c	(Arbeitskopie)
@@ -67,7 +67,7 @@
    MPI_Request c_request;

    *ierr = OMPI_INT_2_FINT(MPI_File_iread_at(c_fh, (MPI_Offset) *offset,
-                                             OMPI_ADDR(buf),
+                                             OMPI_F2C_BOTTOM(buf),
                                              OMPI_FINT_2_INT(*count),
                                              c_type, 
                                              &c_request));
Index: file_iread_f.c
===================================================================
--- file_iread_f.c	(Revision 15017)
+++ file_iread_f.c	(Arbeitskopie)
@@ -65,7 +65,7 @@
    MPI_Datatype c_type = MPI_Type_f2c(*datatype);
    MPI_Request c_request;

-   *ierr = OMPI_INT_2_FINT(MPI_File_iread(c_fh, OMPI_ADDR(buf),
+   *ierr = OMPI_INT_2_FINT(MPI_File_iread(c_fh, OMPI_F2C_BOTTOM(buf),
                                           OMPI_FINT_2_INT(*count),
                                           c_type, &c_request));

Index: file_iread_shared_f.c
===================================================================
--- file_iread_shared_f.c	(Revision 15017)
+++ file_iread_shared_f.c	(Arbeitskopie)
@@ -67,7 +67,7 @@
    MPI_Request c_request;

    *ierr = OMPI_INT_2_FINT(MPI_File_iread_shared(c_fh,
-                                                 OMPI_ADDR(buf),
+                                                 OMPI_F2C_BOTTOM(buf),
                                                  OMPI_FINT_2_INT(*count),
                                                  c_type,
                                                  &c_request));
Index: file_iwrite_at_f.c
===================================================================
--- file_iwrite_at_f.c	(Revision 15017)
+++ file_iwrite_at_f.c	(Arbeitskopie)
@@ -67,7 +67,7 @@
    MPI_Request c_request;

    *ierr = OMPI_INT_2_FINT(MPI_File_iwrite_at(c_fh, (MPI_Offset) *offset,
-                                              OMPI_ADDR(buf),
+                                              OMPI_F2C_BOTTOM(buf),
                                               OMPI_FINT_2_INT(*count),
                                               c_type, &c_request));
    if (MPI_SUCCESS == OMPI_FINT_2_INT(*ierr)) {
Index: file_iwrite_f.c
===================================================================
--- file_iwrite_f.c	(Revision 15017)
+++ file_iwrite_f.c	(Arbeitskopie)
@@ -64,7 +64,7 @@
    MPI_Datatype c_type = MPI_Type_f2c(*datatype);
    MPI_Request c_request;

-   *ierr = OMPI_INT_2_FINT(MPI_File_iwrite(c_fh, OMPI_ADDR(buf),
+   *ierr = OMPI_INT_2_FINT(MPI_File_iwrite(c_fh, OMPI_F2C_BOTTOM(buf),
 					   OMPI_FINT_2_INT(*count),
 					   c_type, &c_request));

Index: file_iwrite_shared_f.c
===================================================================
--- file_iwrite_shared_f.c	(Revision 15017)
+++ file_iwrite_shared_f.c	(Arbeitskopie)
@@ -67,7 +67,7 @@
    MPI_Request c_request;

    *ierr = OMPI_INT_2_FINT(MPI_File_iwrite_shared(c_fh,
-                                                  OMPI_ADDR(buf),
+                                                  OMPI_F2C_BOTTOM(buf),
                                                   OMPI_FINT_2_INT(*count),
                                                   c_type,
                                                   &c_request));
Index: file_read_all_begin_f.c
===================================================================
--- file_read_all_begin_f.c	(Revision 15017)
+++ file_read_all_begin_f.c	(Arbeitskopie)
@@ -65,7 +65,7 @@
    MPI_File c_fh = MPI_File_f2c(*fh);
    MPI_Datatype c_type = MPI_Type_f2c(*datatype);

-   *ierr = OMPI_INT_2_FINT(MPI_File_read_all_begin(c_fh, OMPI_ADDR(buf),
+   *ierr = OMPI_INT_2_FINT(MPI_File_read_all_begin(c_fh, OMPI_F2C_BOTTOM(buf),
                                                    OMPI_FINT_2_INT(*count),
                                                    c_type));
 }
Index: file_read_all_f.c
===================================================================
--- file_read_all_f.c	(Revision 15017)
+++ file_read_all_f.c	(Arbeitskopie)
@@ -85,7 +85,7 @@
 #endif
    }

-   *ierr = OMPI_INT_2_FINT(MPI_File_read_all(c_fh, OMPI_ADDR(buf),
+   *ierr = OMPI_INT_2_FINT(MPI_File_read_all(c_fh, OMPI_F2C_BOTTOM(buf),
                                              OMPI_FINT_2_INT(*count),
                                              c_type, c_status));

Index: file_read_at_all_begin_f.c
===================================================================
--- file_read_at_all_begin_f.c	(Revision 15017)
+++ file_read_at_all_begin_f.c	(Arbeitskopie)
@@ -67,7 +67,7 @@

    *ierr = OMPI_FINT_2_INT(MPI_File_read_at_all_begin(c_fh, 
                                                       (MPI_Offset) *offset,
-                                                      OMPI_ADDR(buf),
+                                                      OMPI_F2C_BOTTOM(buf),
                                                       OMPI_FINT_2_INT(*count),
                                                       c_type));
 }
Index: file_read_at_all_f.c
===================================================================
--- file_read_at_all_f.c	(Revision 15017)
+++ file_read_at_all_f.c	(Arbeitskopie)
@@ -90,7 +90,7 @@

    *ierr = OMPI_FINT_2_INT(MPI_File_read_at_all(c_fh, 
                                                 (MPI_Offset) *offset,
-                                                OMPI_ADDR(buf),
+                                                OMPI_F2C_BOTTOM(buf),
                                                 OMPI_FINT_2_INT(*count),
                                                 c_type,
                                                 c_status));
Index: file_read_f.c
===================================================================
--- file_read_f.c	(Revision 15017)
+++ file_read_f.c	(Arbeitskopie)
@@ -86,7 +86,7 @@
 #endif
    }

-   *ierr = OMPI_INT_2_FINT(MPI_File_read(c_fh, OMPI_ADDR(buf),
+   *ierr = OMPI_INT_2_FINT(MPI_File_read(c_fh, OMPI_F2C_BOTTOM(buf),
                                          OMPI_FINT_2_INT(*count),
                                          c_type, c_status));

Index: file_read_ordered_begin_f.c
===================================================================
--- file_read_ordered_begin_f.c	(Revision 15017)
+++ file_read_ordered_begin_f.c	(Arbeitskopie)
@@ -64,7 +64,7 @@
    MPI_File c_fh = MPI_File_f2c(*fh);
    MPI_Datatype c_type = MPI_Type_f2c(*datatype);

-   *ierr = OMPI_INT_2_FINT(MPI_File_read_ordered_begin(c_fh, OMPI_ADDR(buf), 
+   *ierr = OMPI_INT_2_FINT(MPI_File_read_ordered_begin(c_fh, OMPI_F2C_BOTTOM(buf), 
                                                        OMPI_FINT_2_INT(*count),
                                                        c_type));
 }
Index: file_read_ordered_f.c
===================================================================
--- file_read_ordered_f.c	(Revision 15017)
+++ file_read_ordered_f.c	(Arbeitskopie)
@@ -87,7 +87,7 @@
    }

    *ierr = OMPI_FINT_2_INT(MPI_File_read_ordered(c_fh, 
-                                                 OMPI_ADDR(buf),
+                                                 OMPI_F2C_BOTTOM(buf),
 						 OMPI_FINT_2_INT(*count),
 						 c_type,
 						 c_status));
Index: file_read_shared_f.c
===================================================================
--- file_read_shared_f.c	(Revision 15017)
+++ file_read_shared_f.c	(Arbeitskopie)
@@ -87,7 +87,7 @@
    }

    *ierr = OMPI_FINT_2_INT(MPI_File_read_shared(c_fh, 
-                                                OMPI_ADDR(buf), 
+                                                OMPI_F2C_BOTTOM(buf), 
                                                 OMPI_FINT_2_INT(*count),
                                                 c_type,
                                                 c_status));
Index: file_write_all_begin_f.c
===================================================================
--- file_write_all_begin_f.c	(Revision 15017)
+++ file_write_all_begin_f.c	(Arbeitskopie)
@@ -65,7 +65,7 @@
    MPI_File c_fh = MPI_File_f2c(*fh);
    MPI_Datatype c_type = MPI_Type_f2c(*datatype);

-   *ierr = OMPI_INT_2_FINT(MPI_File_write_all_begin(c_fh, OMPI_ADDR(buf), 
+   *ierr = OMPI_INT_2_FINT(MPI_File_write_all_begin(c_fh, OMPI_F2C_BOTTOM(buf), 
 						    OMPI_FINT_2_INT(*count),
 						    c_type));
 }
Index: file_write_all_f.c
===================================================================
--- file_write_all_f.c	(Revision 15017)
+++ file_write_all_f.c	(Arbeitskopie)
@@ -85,7 +85,7 @@
 #endif
    }

-   *ierr = OMPI_INT_2_FINT(MPI_File_write_all(c_fh, OMPI_ADDR(buf),
+   *ierr = OMPI_INT_2_FINT(MPI_File_write_all(c_fh, OMPI_F2C_BOTTOM(buf),
 					      OMPI_FINT_2_INT(*count),
 					      c_type, c_status));

Index: file_write_at_all_begin_f.c
===================================================================
--- file_write_at_all_begin_f.c	(Revision 15017)
+++ file_write_at_all_begin_f.c	(Arbeitskopie)
@@ -67,7 +67,7 @@

    *ierr = OMPI_FINT_2_INT(MPI_File_write_at_all_begin(c_fh, 
 						       (MPI_Offset) *offset,
-						       OMPI_ADDR(buf), 
+						       OMPI_F2C_BOTTOM(buf), 
 						       OMPI_FINT_2_INT(*count),
 						       c_type));
 }
Index: file_write_at_all_f.c
===================================================================
--- file_write_at_all_f.c	(Revision 15017)
+++ file_write_at_all_f.c	(Arbeitskopie)
@@ -89,7 +89,7 @@

    *ierr = OMPI_FINT_2_INT(MPI_File_write_at_all(c_fh, 
 						 (MPI_Offset) *offset,
-						 OMPI_ADDR(buf), 
+						 OMPI_F2C_BOTTOM(buf), 
 						 OMPI_FINT_2_INT(*count),
 						 c_type,
 						 c_status));
Index: file_write_at_f.c
===================================================================
--- file_write_at_f.c	(Revision 15017)
+++ file_write_at_f.c	(Arbeitskopie)
@@ -87,7 +87,7 @@

    *ierr = OMPI_FINT_2_INT(MPI_File_write_at(c_fh, 
                                              (MPI_Offset) *offset,
-                                             OMPI_ADDR(buf), 
+                                             OMPI_F2C_BOTTOM(buf), 
                                              OMPI_FINT_2_INT(*count),
                                              c_type, c_status));

Index: file_write_f.c
===================================================================
--- file_write_f.c	(Revision 15017)
+++ file_write_f.c	(Arbeitskopie)
@@ -85,7 +85,7 @@
 #endif
    }

-   *ierr = OMPI_INT_2_FINT(MPI_File_write(c_fh, OMPI_ADDR(buf),
+   *ierr = OMPI_INT_2_FINT(MPI_File_write(c_fh, OMPI_F2C_BOTTOM(buf),
                                           OMPI_FINT_2_INT(*count),
                                           c_type, c_status));

Index: file_write_ordered_begin_f.c
===================================================================
--- file_write_ordered_begin_f.c	(Revision 15017)
+++ file_write_ordered_begin_f.c	(Arbeitskopie)
@@ -65,7 +65,7 @@
    MPI_File c_fh = MPI_File_f2c(*fh);
    MPI_Datatype c_type = MPI_Type_f2c(*datatype);

-   *ierr = OMPI_INT_2_FINT(MPI_File_write_ordered_begin(c_fh, OMPI_ADDR(buf), 
+   *ierr = OMPI_INT_2_FINT(MPI_File_write_ordered_begin(c_fh, OMPI_F2C_BOTTOM(buf), 
                                                         OMPI_FINT_2_INT(*count),
                                                         c_type));
 }
Index: file_write_ordered_f.c
===================================================================
--- file_write_ordered_f.c	(Revision 15017)
+++ file_write_ordered_f.c	(Arbeitskopie)
@@ -87,7 +87,7 @@
    }

    *ierr = OMPI_FINT_2_INT(MPI_File_write_ordered(c_fh, 
-                                                  OMPI_ADDR(buf), 
+                                                  OMPI_F2C_BOTTOM(buf), 
                                                   OMPI_FINT_2_INT(*count),
                                                   c_type,
                                                   c_status));
Index: file_write_shared_f.c
===================================================================
--- file_write_shared_f.c	(Revision 15017)
+++ file_write_shared_f.c	(Arbeitskopie)
@@ -87,7 +87,7 @@
    }

    *ierr = OMPI_FINT_2_INT(MPI_File_write_shared(c_fh, 
-                                                 OMPI_ADDR(buf), 
+                                                 OMPI_F2C_BOTTOM(buf), 
                                                  OMPI_FINT_2_INT(*count),
                                                  c_type,
                                                  c_status));
Index: gather_f.c
===================================================================
--- gather_f.c	(Revision 15017)
+++ gather_f.c	(Arbeitskopie)
@@ -69,9 +69,9 @@
     c_sendtype = MPI_Type_f2c(*sendtype);
     c_recvtype = MPI_Type_f2c(*recvtype);

-    if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) {
-        sendbuf = MPI_IN_PLACE;
-    }
+    sendbuf = OMPI_F2C_IN_PLACE(sendbuf);
+    sendbuf = OMPI_F2C_BOTTOM(sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM(recvbuf);

     *ierr = OMPI_INT_2_FINT(MPI_Gather(sendbuf, OMPI_FINT_2_INT(*sendcount),
 				       c_sendtype, recvbuf, 
Index: gatherv_f.c
===================================================================
--- gatherv_f.c	(Revision 15017)
+++ gatherv_f.c	(Arbeitskopie)
@@ -77,9 +77,9 @@
     OMPI_ARRAY_FINT_2_INT(recvcounts, size);
     OMPI_ARRAY_FINT_2_INT(displs, size);

-    if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) {
-        sendbuf = MPI_IN_PLACE;
-    }
+    sendbuf = OMPI_F2C_IN_PLACE(sendbuf);
+    sendbuf = OMPI_F2C_BOTTOM(sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM(recvbuf);

     *ierr = OMPI_INT_2_FINT(MPI_Gatherv(sendbuf, OMPI_FINT_2_INT(*sendcount),
 					c_sendtype, recvbuf,
Index: get_f.c
===================================================================
--- get_f.c	(Revision 15017)
+++ get_f.c	(Arbeitskopie)
@@ -68,7 +68,7 @@
     MPI_Datatype c_target_datatype = MPI_Type_f2c(*target_datatype);
     MPI_Win c_win = MPI_Win_f2c(*win);

-    *ierr = OMPI_INT_2_FINT(MPI_Get(OMPI_ADDR(origin_addr), 
+    *ierr = OMPI_INT_2_FINT(MPI_Get(OMPI_F2C_BOTTOM(origin_addr), 
 				    OMPI_FINT_2_INT(*origin_count),
 				    c_origin_datatype,
 				    OMPI_FINT_2_INT(*target_rank),
Index: ibsend_f.c
===================================================================
--- ibsend_f.c	(Revision 15017)
+++ ibsend_f.c	(Arbeitskopie)
@@ -68,7 +68,7 @@

    c_comm = MPI_Comm_f2c (*comm);

-   *ierr = OMPI_INT_2_FINT(MPI_Ibsend(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count),
+   *ierr = OMPI_INT_2_FINT(MPI_Ibsend(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count),
                                       c_type, OMPI_FINT_2_INT(*dest),
                                       OMPI_FINT_2_INT(*tag),
                                       c_comm, &c_req));
Index: irecv_f.c
===================================================================
--- irecv_f.c	(Revision 15017)
+++ irecv_f.c	(Arbeitskopie)
@@ -68,7 +68,7 @@

    c_comm = MPI_Comm_f2c (*comm);

-   *ierr = OMPI_INT_2_FINT(MPI_Irecv(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count),
+   *ierr = OMPI_INT_2_FINT(MPI_Irecv(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count),
                                      c_type, OMPI_FINT_2_INT(*source),
                                      OMPI_FINT_2_INT(*tag), c_comm, &c_req));

Index: irsend_f.c
===================================================================
--- irsend_f.c	(Revision 15017)
+++ irsend_f.c	(Arbeitskopie)
@@ -66,7 +66,7 @@

    c_comm = MPI_Comm_f2c (*comm);

-   *ierr = OMPI_INT_2_FINT(MPI_Irsend(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count),
+   *ierr = OMPI_INT_2_FINT(MPI_Irsend(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count),
                                       c_type, OMPI_FINT_2_INT(*dest),
                                       OMPI_FINT_2_INT(*tag), c_comm,
                                       &c_req));
Index: isend_f.c
===================================================================
--- isend_f.c	(Revision 15017)
+++ isend_f.c	(Arbeitskopie)
@@ -66,7 +66,7 @@

    c_comm = MPI_Comm_f2c (*comm);

-   *ierr = OMPI_INT_2_FINT(MPI_Isend(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count),
+   *ierr = OMPI_INT_2_FINT(MPI_Isend(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count),
                                      c_type, OMPI_FINT_2_INT(*dest),
                                      OMPI_FINT_2_INT(*tag),
                                      c_comm, &c_req));
Index: issend_f.c
===================================================================
--- issend_f.c	(Revision 15017)
+++ issend_f.c	(Arbeitskopie)
@@ -66,7 +66,7 @@

    c_comm = MPI_Comm_f2c (*comm);

-   *ierr = OMPI_INT_2_FINT(MPI_Issend(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count),
+   *ierr = OMPI_INT_2_FINT(MPI_Issend(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count),
                                       c_type, OMPI_FINT_2_INT(*dest),
                                       OMPI_FINT_2_INT(*tag),
                                       c_comm, &c_req));
Index: pack_external_f.c
===================================================================
--- pack_external_f.c	(Revision 15017)
+++ pack_external_f.c	(Arbeitskopie)
@@ -65,7 +65,7 @@
 {
    MPI_Datatype type = MPI_Type_f2c(*datatype);

-   *ierr = OMPI_INT_2_FINT(MPI_Pack_external(datarep, OMPI_ADDR(inbuf),
+   *ierr = OMPI_INT_2_FINT(MPI_Pack_external(datarep, OMPI_F2C_BOTTOM(inbuf),
                                              OMPI_FINT_2_INT(*incount),
                                              type, outbuf,
                                              *outsize,
Index: pack_f.c
===================================================================
--- pack_f.c	(Revision 15017)
+++ pack_f.c	(Arbeitskopie)
@@ -70,7 +70,7 @@
    c_type = MPI_Type_f2c(*datatype);
    OMPI_SINGLE_FINT_2_INT(position);

-   *ierr = OMPI_INT_2_FINT(MPI_Pack(OMPI_ADDR(inbuf), OMPI_FINT_2_INT(*incount),
+   *ierr = OMPI_INT_2_FINT(MPI_Pack(OMPI_F2C_BOTTOM(inbuf), OMPI_FINT_2_INT(*incount),
                                     c_type, outbuf,
                                     OMPI_FINT_2_INT(*outsize),
                                     OMPI_SINGLE_NAME_CONVERT(position),
Index: put_f.c
===================================================================
--- put_f.c	(Revision 15017)
+++ put_f.c	(Arbeitskopie)
@@ -68,7 +68,7 @@
    MPI_Datatype c_target_datatype = MPI_Type_f2c(*target_datatype);
    MPI_Win c_win = MPI_Win_f2c(*win);

-   *ierr = OMPI_INT_2_FINT(MPI_Put(OMPI_ADDR(origin_addr),
+   *ierr = OMPI_INT_2_FINT(MPI_Put(OMPI_F2C_BOTTOM(origin_addr),
                                    OMPI_FINT_2_INT(*origin_count),
                                    c_origin_datatype,
                                    OMPI_FINT_2_INT(*target_rank),
Index: recv_f.c
===================================================================
--- recv_f.c	(Revision 15017)
+++ recv_f.c	(Arbeitskopie)
@@ -87,7 +87,7 @@
    }

    /* Call the C function */
-   *ierr = OMPI_INT_2_FINT(MPI_Recv(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count),
+   *ierr = OMPI_INT_2_FINT(MPI_Recv(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count),
                                     c_type, OMPI_FINT_2_INT(*source), 
                                     OMPI_FINT_2_INT(*tag), c_comm,
                                     c_status));
Index: recv_init_f.c
===================================================================
--- recv_init_f.c	(Revision 15017)
+++ recv_init_f.c	(Arbeitskopie)
@@ -68,7 +68,7 @@

    c_comm = MPI_Comm_f2c (*comm);

-   *ierr = OMPI_INT_2_FINT(MPI_Recv_init(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count),
+   *ierr = OMPI_INT_2_FINT(MPI_Recv_init(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count),
                                          c_type, OMPI_FINT_2_INT(*source),
                                          OMPI_INT_2_FINT(*tag), c_comm,
                                          &c_req));
Index: reduce_f.c
===================================================================
--- reduce_f.c	(Revision 15017)
+++ reduce_f.c	(Arbeitskopie)
@@ -70,9 +70,9 @@
     c_op = MPI_Op_f2c(*op);
     c_comm = MPI_Comm_f2c(*comm);

-    if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) {
-        sendbuf = MPI_IN_PLACE;
-    }
+    sendbuf = OMPI_F2C_IN_PLACE(sendbuf);
+    sendbuf = OMPI_F2C_BOTTOM(sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM(recvbuf);

     *ierr = OMPI_INT_2_FINT(MPI_Reduce(sendbuf, recvbuf,
 				       OMPI_FINT_2_INT(*count),
Index: reduce_scatter_f.c
===================================================================
--- reduce_scatter_f.c	(Revision 15017)
+++ reduce_scatter_f.c	(Arbeitskopie)
@@ -75,9 +75,9 @@
     MPI_Comm_size(c_comm, &size);
     OMPI_ARRAY_FINT_2_INT(recvcounts, size);

-    if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) {
-        sendbuf = MPI_IN_PLACE;
-    }
+    sendbuf = OMPI_F2C_IN_PLACE(sendbuf);
+    sendbuf = OMPI_F2C_BOTTOM(sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM(recvbuf);

     *ierr = OMPI_INT_2_FINT(MPI_Reduce_scatter(sendbuf, recvbuf,
 				       OMPI_ARRAY_NAME_CONVERT(recvcounts),
Index: rsend_f.c
===================================================================
--- rsend_f.c	(Revision 15017)
+++ rsend_f.c	(Arbeitskopie)
@@ -66,7 +66,7 @@

    c_comm = MPI_Comm_f2c (*comm);

-   *ierr = OMPI_INT_2_FINT(MPI_Rsend(OMPI_ADDR(ibuf), OMPI_FINT_2_INT(*count),
+   *ierr = OMPI_INT_2_FINT(MPI_Rsend(OMPI_F2C_BOTTOM(ibuf), OMPI_FINT_2_INT(*count),
                                      c_type, OMPI_FINT_2_INT(*dest),
                                      OMPI_FINT_2_INT(*tag), c_comm));
 }
Index: rsend_init_f.c
===================================================================
--- rsend_init_f.c	(Revision 15017)
+++ rsend_init_f.c	(Arbeitskopie)
@@ -69,7 +69,7 @@

    c_comm = MPI_Comm_f2c (*comm);

-   *ierr = OMPI_INT_2_FINT(MPI_Rsend_init(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count),
+   *ierr = OMPI_INT_2_FINT(MPI_Rsend_init(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count),
                                           c_type, OMPI_FINT_2_INT(*dest),
                                           OMPI_FINT_2_INT(*tag),
                                           c_comm, &c_req));
Index: scan_f.c
===================================================================
--- scan_f.c	(Revision 15017)
+++ scan_f.c	(Arbeitskopie)
@@ -70,9 +70,9 @@
     c_op = MPI_Op_f2c(*op);
     c_comm = MPI_Comm_f2c(*comm);

-    if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) {
-        sendbuf = MPI_IN_PLACE;
-    }
+    sendbuf = OMPI_F2C_IN_PLACE(sendbuf);
+    sendbuf = OMPI_F2C_BOTTOM(sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM(recvbuf);

     *ierr = OMPI_INT_2_FINT(MPI_Scan(sendbuf, recvbuf,
 				     OMPI_FINT_2_INT(*count),
Index: scatter_f.c
===================================================================
--- scatter_f.c	(Revision 15017)
+++ scatter_f.c	(Arbeitskopie)
@@ -69,9 +69,9 @@
     c_sendtype = MPI_Type_f2c(*sendtype);
     c_recvtype = MPI_Type_f2c(*recvtype);

-    if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) {
-        sendbuf = MPI_IN_PLACE;
-    }
+    sendbuf = OMPI_F2C_IN_PLACE(sendbuf);
+    sendbuf = OMPI_F2C_BOTTOM(sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM(recvbuf);

     *ierr = OMPI_INT_2_FINT(MPI_Scatter(sendbuf,OMPI_FINT_2_INT(*sendcount),
 					c_sendtype, recvbuf, 
Index: scatterv_f.c
===================================================================
--- scatterv_f.c	(Revision 15017)
+++ scatterv_f.c	(Arbeitskopie)
@@ -78,9 +78,9 @@
     OMPI_ARRAY_FINT_2_INT(sendcounts, size);
     OMPI_ARRAY_FINT_2_INT(displs, size);

-    if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) {
-        sendbuf = MPI_IN_PLACE;
-    }
+    sendbuf = OMPI_F2C_IN_PLACE(sendbuf);
+    sendbuf = OMPI_F2C_BOTTOM(sendbuf);
+    recvbuf = OMPI_F2C_BOTTOM(recvbuf);

     *ierr = OMPI_INT_2_FINT(MPI_Scatterv(sendbuf, 
 					 OMPI_ARRAY_NAME_CONVERT(sendcounts),
Index: send_f.c
===================================================================
--- send_f.c	(Revision 15017)
+++ send_f.c	(Arbeitskopie)
@@ -64,7 +64,7 @@
     MPI_Comm c_comm = MPI_Comm_f2c(*comm);
     MPI_Datatype c_type = MPI_Type_f2c(*datatype);

-    *ierr = OMPI_INT_2_FINT(MPI_Send(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), 
+    *ierr = OMPI_INT_2_FINT(MPI_Send(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), 
                                      c_type, OMPI_FINT_2_INT(*dest), 
                                      OMPI_FINT_2_INT(*tag), c_comm));
 }
Index: send_init_f.c
===================================================================
--- send_init_f.c	(Revision 15017)
+++ send_init_f.c	(Arbeitskopie)
@@ -68,7 +68,7 @@

    c_comm = MPI_Comm_f2c (*comm);

-   *ierr = OMPI_INT_2_FINT(MPI_Send_init(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count),
+   *ierr = OMPI_INT_2_FINT(MPI_Send_init(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count),
                                          c_type, OMPI_FINT_2_INT(*dest),
                                          OMPI_FINT_2_INT(*tag), 
                                          c_comm, &c_req));
Index: sendrecv_f.c
===================================================================
--- sendrecv_f.c	(Revision 15017)
+++ sendrecv_f.c	(Arbeitskopie)
@@ -71,11 +71,11 @@

    c_comm = MPI_Comm_f2c (*comm);

-   *ierr = OMPI_INT_2_FINT(MPI_Sendrecv(OMPI_ADDR(sendbuf), OMPI_FINT_2_INT(*sendcount),
+   *ierr = OMPI_INT_2_FINT(MPI_Sendrecv(OMPI_F2C_BOTTOM(sendbuf), OMPI_FINT_2_INT(*sendcount),
                                         c_sendtype,
                                         OMPI_FINT_2_INT(*dest),
                                         OMPI_FINT_2_INT(*sendtag),
-                                        OMPI_ADDR(recvbuf), *recvcount,
+                                        OMPI_F2C_BOTTOM(recvbuf), *recvcount,
                                         c_recvtype, OMPI_FINT_2_INT(*source),
                                         OMPI_FINT_2_INT(*recvtag),
                                         c_comm, &c_status));
Index: sendrecv_replace_f.c
===================================================================
--- sendrecv_replace_f.c	(Revision 15017)
+++ sendrecv_replace_f.c	(Arbeitskopie)
@@ -69,7 +69,7 @@

    c_comm = MPI_Comm_f2c (*comm);

-   *ierr = OMPI_INT_2_FINT(MPI_Sendrecv_replace(OMPI_ADDR(buf),
+   *ierr = OMPI_INT_2_FINT(MPI_Sendrecv_replace(OMPI_F2C_BOTTOM(buf),
                                                 OMPI_FINT_2_INT(*count),
                                                 c_type, 
                                                 OMPI_FINT_2_INT(*dest), 
Index: ssend_f.c
===================================================================
--- ssend_f.c	(Revision 15017)
+++ ssend_f.c	(Arbeitskopie)
@@ -67,7 +67,7 @@

    c_comm = MPI_Comm_f2c (*comm);

-   *ierr = OMPI_INT_2_FINT(MPI_Ssend(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count),
+   *ierr = OMPI_INT_2_FINT(MPI_Ssend(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count),
                                      c_type, OMPI_FINT_2_INT(*dest),
                                      OMPI_FINT_2_INT(*tag), c_comm));
 }
Index: ssend_init_f.c
===================================================================
--- ssend_init_f.c	(Revision 15017)
+++ ssend_init_f.c	(Arbeitskopie)
@@ -68,7 +68,7 @@

    c_comm = MPI_Comm_f2c (*comm);

-   *ierr = OMPI_INT_2_FINT(MPI_Ssend_init(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count),
+   *ierr = OMPI_INT_2_FINT(MPI_Ssend_init(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count),
                                           c_type, OMPI_FINT_2_INT(*dest),
                                           OMPI_FINT_2_INT(*tag),
                                           c_comm, &c_req));
Index: unpack_external_f.c
===================================================================
--- unpack_external_f.c	(Revision 15017)
+++ unpack_external_f.c	(Arbeitskopie)
@@ -69,7 +69,7 @@
    *ierr = OMPI_INT_2_FINT(MPI_Unpack_external(datarep, inbuf, 
                                                *insize, 
                                                position,
-                                               OMPI_ADDR(outbuf),
+                                               OMPI_F2C_BOTTOM(outbuf),
                                                OMPI_FINT_2_INT(*outcount),
                                                c_type));
 }
Index: unpack_f.c
===================================================================
--- unpack_f.c	(Revision 15017)
+++ unpack_f.c	(Arbeitskopie)
@@ -72,7 +72,7 @@

    *ierr = OMPI_INT_2_FINT(MPI_Unpack(inbuf, OMPI_FINT_2_INT(*insize),
                                       OMPI_SINGLE_NAME_CONVERT(position),
-                                      OMPI_ADDR(outbuf), OMPI_FINT_2_INT(*outcount),
+                                      OMPI_F2C_BOTTOM(outbuf), OMPI_FINT_2_INT(*outcount),
                                       c_type, c_comm));
    if (MPI_SUCCESS == OMPI_FINT_2_INT(*ierr)) {
         OMPI_SINGLE_INT_2_FINT(position);

Reply via email to