Merge r6139:

- Minor changes for mpxlc

- kludge; add option "initkludge" to cause PMPI_Init to return
  &mpiwrap_walk_type_EXTERNALLY_VISIBLE
  and adjust mpiwrap_type_test.c accordingly

and also add an export script so that libmpiwrap.so is built
correctly on AIX5 (r????).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6275
This commit is contained in:
Julian Seward 2006-10-17 01:46:55 +00:00
parent 95ef240080
commit ff7968b2c1
3 changed files with 360 additions and 42 deletions

View File

@ -84,11 +84,20 @@
/* Where are API symbols?
Open MPI lib/libmpi.so, soname = libmpi.so.0
AIX: in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore*_r.o)
ditto Quadrics MPI
*/
/* ifdef OpenMPI ... */
#define I_WRAP_FNNAME_U(_name) I_WRAP_SONAME_FNNAME_ZU(libmpiZdsoZa,_name)
#if defined(_AIX)
# define I_WRAP_FNNAME_U(_name) \
I_WRAP_SONAME_FNNAME_ZU(libmpiZurZdaZLmpicoreZaZurZdoZR,_name)
/* Don't change this without also changing all the names in
libmpiwrap.exp. */
#else
# define I_WRAP_FNNAME_U(_name) \
I_WRAP_SONAME_FNNAME_ZU(libmpiZdsoZa,_name)
#endif
/*------------------------------------------------------------*/
/*--- Decls ---*/
@ -119,11 +128,12 @@ typedef unsigned long UWord;
static const char* preamble = "valgrind MPI wrappers";
/* established at startup */
static pid_t my_pid = -1;
static char* options_str = NULL;
static int opt_verbosity = 1;
static Bool opt_missing = 0; /* 0:silent; 1:warn; 2:abort */
static Bool opt_help = False;
static pid_t my_pid = -1;
static char* options_str = NULL;
static int opt_verbosity = 1;
static Bool opt_missing = 0; /* 0:silent; 1:warn; 2:abort */
static Bool opt_help = False;
static Bool opt_initkludge = False;
static void before ( char* fnname )
{
@ -145,6 +155,8 @@ static void before ( char* fnname )
opt_verbosity--;
if (NULL != strstr(options_str, "help"))
opt_help = True;
if (NULL != strstr(options_str, "initkludge"))
opt_initkludge = True;
}
if (opt_verbosity > 0)
fprintf(stderr, "%s %5d: Active for pid %d\n",
@ -160,13 +172,14 @@ static void before ( char* fnname )
fprintf(stderr, "Valid options for the MPIWRAP_DEBUG environment"
" variable are:\n");
fprintf(stderr, "\n");
fprintf(stderr, " quiet be silent except for errors\n");
fprintf(stderr, " verbose show wrapper entries/exits\n");
fprintf(stderr, " strict abort the program if a function"
fprintf(stderr, " quiet be silent except for errors\n");
fprintf(stderr, " verbose show wrapper entries/exits\n");
fprintf(stderr, " strict abort the program if a function"
" with no wrapper is used\n");
fprintf(stderr, " warn give a warning if a function"
fprintf(stderr, " warn give a warning if a function"
" with no wrapper is used\n");
fprintf(stderr, " help display this message, then exit\n");
fprintf(stderr, " help display this message, then exit\n");
fprintf(stderr, " initkludge debugging hack; do not use\n");
fprintf(stderr, "\n");
fprintf(stderr, "Multiple options are allowed, eg"
" MPIWRAP_DEBUG=strict,verbose\n");
@ -186,7 +199,7 @@ static void before ( char* fnname )
fprintf(stderr, "%s %5d: enter PMPI_%s\n", preamble, my_pid, fnname );
}
static inline void after ( char* fnname, int err )
static __inline__ void after ( char* fnname, int err )
{
if (opt_verbosity > 1)
fprintf(stderr, "%s %5d: exit PMPI_%s (err = %d)\n",
@ -291,21 +304,21 @@ static void showCombiner ( FILE* f, int combiner )
/* Note, PMPI_Comm_rank/size are themselves wrapped. Should work
fine. */
static inline int comm_rank ( MPI_Comm comm )
static __inline__ int comm_rank ( MPI_Comm comm )
{
int err, r;
err = PMPI_Comm_rank(comm, &r);
return err ? 0/*arbitrary*/ : r;
}
static inline int comm_size ( MPI_Comm comm )
static __inline__ int comm_size ( MPI_Comm comm )
{
int err, r;
err = PMPI_Comm_size(comm, &r);
return err ? 0/*arbitrary*/ : r;
}
static inline Bool count_from_Status( /*OUT*/int* recv_count,
static __inline__ Bool count_from_Status( /*OUT*/int* recv_count,
MPI_Datatype datatype,
MPI_Status* status)
{
@ -326,7 +339,7 @@ static inline Bool count_from_Status( /*OUT*/int* recv_count,
types that support assignment and equality operations." Hence the
following function should compile for any compliant definition of
MPI_Request. */
static inline
static __inline__
Bool eq_MPI_Request ( MPI_Request r1, MPI_Request r2 )
{
return r1 == r2;
@ -674,7 +687,7 @@ void walk_type_array ( void(*f)(void*,long), char* base,
void mpiwrap_walk_type_EXTERNALLY_VISIBLE
( void(*f)(void*,long), char* base, MPI_Datatype ty )
{
return walk_type(f, base, ty);
walk_type(f, base, ty);
}
@ -688,7 +701,7 @@ void mpiwrap_walk_type_EXTERNALLY_VISIBLE
----------------
*/
static inline
static __inline__
void check_mem_is_defined_untyped ( void* buffer, long nbytes )
{
if (nbytes > 0) {
@ -696,7 +709,7 @@ void check_mem_is_defined_untyped ( void* buffer, long nbytes )
}
}
static inline
static __inline__
void check_mem_is_addressable_untyped ( void* buffer, long nbytes )
{
if (nbytes > 0) {
@ -704,7 +717,7 @@ void check_mem_is_addressable_untyped ( void* buffer, long nbytes )
}
}
static inline
static __inline__
void make_mem_defined_if_addressable_untyped ( void* buffer, long nbytes )
{
if (nbytes > 0) {
@ -712,7 +725,7 @@ void make_mem_defined_if_addressable_untyped ( void* buffer, long nbytes )
}
}
static inline
static __inline__
void make_mem_defined_if_addressable_if_success_untyped ( int err,
void* buffer, long nbytes )
{
@ -724,7 +737,7 @@ void make_mem_defined_if_addressable_if_success_untyped ( int err,
/* Set the specified area to 'addressible but undefined'
(safe-to-write) state. */
static inline
static __inline__
void make_mem_undefined_untyped ( void* buffer, long nbytes )
{
if (nbytes > 0) {
@ -874,7 +887,11 @@ int WRAPPER_FOR(PMPI_Get_count)(MPI_Status* status,
int err;
VALGRIND_GET_ORIG_FN(fn);
before("Get_count");
# if defined(_AIX)
check_mem_is_addressable_untyped(status, sizeof(*status));
# else
check_mem_is_defined_untyped(status, sizeof(*status));
# endif
CALL_FN_W_WWW(err, fn, status,ty,count);
after("Get_count", err);
return err;
@ -1061,7 +1078,7 @@ MPI_Request* clone_Request_array ( int count, MPI_Request* orig )
if (count < 0)
count = 0; /* Hmm. Call Mulder and Scully. */
copy = malloc( count * sizeof(MPI_Request) );
if (copy == NULL) {
if (copy == NULL && count > 0) {
UNLOCK_SREQS;
barf("clone_Request_array: malloc failed");
}
@ -1776,7 +1793,7 @@ int WRAPPER_FOR(PMPI_Error_string)( int errorcode, char* string,
/* --- Init --- */
/* rd: *argc, *argv[0 .. *argc-1] */
int WRAPPER_FOR(PMPI_Init)(int *argc, char ***argv)
long WRAPPER_FOR(PMPI_Init)(int *argc, char ***argv)
{
OrigFn fn;
int err;
@ -1786,7 +1803,10 @@ int WRAPPER_FOR(PMPI_Init)(int *argc, char ***argv)
check_mem_is_defined_untyped(*argv, *argc * sizeof(char**));
CALL_FN_W_WW(err, fn, argc,argv);
after("Init", err);
return err;
if (opt_initkludge)
return (long)(void*)&mpiwrap_walk_type_EXTERNALLY_VISIBLE;
else
return (long)err;
}
/* --- Initialized --- */

View File

@ -0,0 +1,298 @@
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Abort
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Accumulate
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Add_error_class
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Add_error_code
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Add_error_string
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Allgather
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Allgatherv
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Alloc_mem
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Allreduce
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Alltoall
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Alltoallv
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Alltoallw
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Attr_delete
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Attr_get
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Attr_put
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Barrier
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Bcast
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Bsend
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Bsend_init
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Buffer_attach
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Buffer_detach
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Cancel
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Cart_coords
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Cart_create
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Cart_get
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Cart_map
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Cart_rank
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Cart_shift
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Cart_sub
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Cartdim_get
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Close_port
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_accept
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_c2f
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_call_errhandler
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_compare
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_connect
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_create
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_create_errhandler
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_create_keyval
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_delete_attr
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_disconnect
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_dup
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_f2c
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_free
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_free_keyval
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_get_attr
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_get_errhandler
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_get_name
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_get_parent
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_group
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_join
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_rank
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_remote_group
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_remote_size
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_set_attr
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_set_errhandler
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_set_name
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_size
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_spawn
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_spawn_multiple
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_split
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Comm_test_inter
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Dims_create
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Errhandler_c2f
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Errhandler_create
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Errhandler_f2c
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Errhandler_free
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Errhandler_get
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Errhandler_set
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Error_class
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Error_string
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Exscan
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_c2f
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_call_errhandler
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_close
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_create_errhandler
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_delete
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_f2c
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_get_amode
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_get_atomicity
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_get_byte_offset
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_get_errhandler
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_get_group
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_get_info
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_get_position
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_get_position_shared
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_get_size
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_get_type_extent
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_get_view
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_iread
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_iread_at
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_iread_shared
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_iwrite
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_iwrite_at
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_iwrite_shared
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_open
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_preallocate
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_read
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_read_all
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_read_all_begin
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_read_all_end
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_read_at
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_read_at_all
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_read_at_all_begin
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_read_at_all_end
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_read_ordered
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_read_ordered_begin
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_read_ordered_end
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_read_shared
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_seek
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_seek_shared
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_set_atomicity
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_set_errhandler
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_set_info
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_set_size
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_set_view
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_sync
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_write
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_write_all
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_write_all_begin
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_write_all_end
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_write_at
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_write_at_all
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_write_at_all_begin
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_write_at_all_end
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_write_ordered
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_write_ordered_begin
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_write_ordered_end
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_File_write_shared
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Finalize
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Finalized
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Free_mem
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Gather
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Gatherv
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Get
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Get_address
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Get_count
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Get_elements
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Get_processor_name
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Get_version
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Graph_create
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Graph_get
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Graph_map
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Graph_neighbors
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Graph_neighbors_count
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Graphdims_get
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Grequest_complete
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Grequest_start
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_c2f
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_compare
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_difference
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_excl
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_f2c
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_free
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_incl
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_intersection
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_range_excl
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_range_incl
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_rank
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_size
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_translate_ranks
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Group_union
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Ibsend
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Info_c2f
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Info_create
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Info_delete
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Info_dup
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Info_f2c
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Info_free
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Info_get
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Info_get_nkeys
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Info_get_nthkey
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Info_get_valuelen
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Info_set
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Init
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Init_thread
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Initialized
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Intercomm_create
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Intercomm_merge
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Iprobe
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Irecv
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Irsend
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Is_thread_main
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Isend
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Issend
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Keyval_create
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Keyval_free
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Lookup_name
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Op_c2f
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Op_create
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Op_f2c
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Op_free
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Open_port
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Pack
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Pack_external
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Pack_external_size
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Pack_size
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Probe
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Publish_name
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Put
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Query_thread
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Recv
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Recv_init
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Reduce
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Reduce_scatter
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Register_datarep
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Request_c2f
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Request_f2c
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Request_free
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Request_get_status
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Rsend
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Rsend_init
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Scan
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Scatter
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Scatterv
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Send
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Send_init
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Sendrecv
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Sendrecv_replace
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Ssend
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Ssend_init
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Start
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Startall
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Status_c2f
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Status_f2c
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Status_set_cancelled
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Status_set_elements
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Test
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Test_cancelled
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Testall
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Testany
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Testsome
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Topo_test
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_c2f
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_commit
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_contiguous
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_create_darray
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_create_f90_complex
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_create_f90_integer
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_create_f90_real
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_create_hindexed
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_create_hvector
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_create_indexed_block
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_create_keyval
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_create_resized
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_create_struct
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_create_subarray
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_delete_attr
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_dup
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_f2c
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_free
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_free_keyval
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_get_attr
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_get_extent
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_get_name
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_get_true_extent
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_hindexed
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_hvector
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_indexed
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_lb
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_match_size
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_set_attr
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_set_name
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_size
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_struct
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_ub
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Type_vector
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Unpack
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Unpack_external
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Unpublish_name
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Wait
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Waitall
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Waitany
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Waitsome
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_c2f
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_call_errhandler
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_complete
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_create
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_create_errhandler
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_create_keyval
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_delete_attr
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_f2c
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_fence
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_free
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_free_keyval
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_get_attr
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_get_errhandler
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_get_group
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_get_name
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_lock
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_post
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_set_attr
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_set_errhandler
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_set_name
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_start
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_test
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_unlock
_vgwZU_libmpiZurZdaZLmpicoreZaZurZdoZR_PMPI_Win_wait

View File

@ -9,7 +9,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <dlfcn.h>
#include "mpi.h"
#include "../memcheck/memcheck.h"
@ -19,6 +18,8 @@ typedef unsigned char Bool;
#define False ((Bool)0)
#define True ((Bool)1)
void* walk_type_fn = NULL;
static Ty tycon_Contiguous ( int count, Ty t )
{
Ty t2;
@ -96,7 +97,7 @@ static Ty tycon_HIndexed2 ( MPI_Aint d1, int copies1,
return tres;
}
//////////////////////////////////////
/* ------------------------------ */
char characterise ( unsigned char b )
{
@ -125,23 +126,14 @@ void sendToMyself ( Bool commit_free, Ty* tyP, char* name )
char* rbuf_walk;
int r;
void* dl_handle = NULL;
/* C: what a fabulous functional programming language :-) */
void(*dl_walk_type)(void(*)(void*,long),char*,MPI_Datatype) = NULL;
/* NULL: gives a handle which is RTLD_GLOBAL syms in current
process image */
dl_handle = dlopen(NULL, RTLD_LAZY);
if (!dl_handle) {
printf("sendToMyself: can't dlopen current process image\n");
return;
}
dl_walk_type = dlsym(dl_handle, "mpiwrap_walk_type_EXTERNALLY_VISIBLE");
void(*dl_walk_type)(void(*)(void*,long),char*,MPI_Datatype)
= (void(*)(void(*)(void*,long),char*,MPI_Datatype))
walk_type_fn;
if (!dl_walk_type) {
printf("sendToMyself: can't find mpiwrap_walk_type_EXTERNALLY_VISIBLE"
" in current process image\n");
dlclose(dl_handle);
return;
}
@ -192,7 +184,6 @@ void sendToMyself ( Bool commit_free, Ty* tyP, char* name )
dl_walk_type( sendToMyself_callback, rbuf_walk, *tyP );
dlclose(dl_handle);
if (commit_free) {
r = MPI_Type_free( tyP );
assert(r == MPI_SUCCESS);
@ -225,13 +216,22 @@ typedef char* Nm;
int main ( int argc, char** argv )
{
int rank, size;
char* opts;
if (!RUNNING_ON_VALGRIND) {
printf("error: this program must be run on valgrind\n");
return 1;
}
opts = getenv("MPIWRAP_DEBUG");
if ((!opts) || NULL==strstr(opts, "initkludge")) {
printf("error: program requires MPIWRAP_DEBUG=initkludge\n");
return 1;
}
walk_type_fn = (void*)(long) MPI_Init( &argc, &argv );
printf("mpiwrap_type_test: walk_type_fn = %p\n", walk_type_fn);
assert(walk_type_fn);
MPI_Init( &argc, &argv );
MPI_Comm_size( MPI_COMM_WORLD, &size );
MPI_Comm_rank( MPI_COMM_WORLD, &rank );