commits
Threads by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
May 2013
- 1 participants
- 70 discussions
[mpich] MPICH primary repository branch, large-count, deleted. v3.0.4-125-g0228281
by noreply@mpich.org 03 May '13
by noreply@mpich.org 03 May '13
03 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, large-count has been deleted
was 02282816b3711a0a2443ad2070698bf19f409c44
-----------------------------------------------------------------------
02282816b3711a0a2443ad2070698bf19f409c44 WIP large count work, use MPI_Aint for dtype size and collectives
-----------------------------------------------------------------------
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-125-gbdd8c14
by noreply@mpich.org 03 May '13
by noreply@mpich.org 03 May '13
03 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via bdd8c149c5077bd0d7abc2a167eaf2670a03fec4 (commit)
from f7b6f82ac880ff0bd8f418e2c97c381947d3aa4a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/bdd8c149c5077bd0d7abc2a167eaf2670…
commit bdd8c149c5077bd0d7abc2a167eaf2670a03fec4
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Fri May 3 16:56:22 2013 -0500
Bug-fix in the weak symbols check for ROMIO.
No reviewer.
diff --git a/src/mpi/romio/configure.ac b/src/mpi/romio/configure.ac
index 68af036..0670739 100644
--- a/src/mpi/romio/configure.ac
+++ b/src/mpi/romio/configure.ac
@@ -893,11 +893,11 @@ if test $FROM_MPICH = yes ; then
fi
# Check to see if weak symbols work correctly
-if test $enable_weak_symbols = yes ; then
+if test "$enable_weak_symbols" = "yes" ; then
# Turn off weak symbols if they aren't available
PAC_PROG_C_WEAK_SYMBOLS(,enable_weak_symbols=no)
fi
-if test $enable_weak_symbols = "yes" ; then
+if test "$enable_weak_symbols" = "yes" ; then
AC_DEFINE(USE_WEAK_SYMBOLS,1,[Define if weak symbols should be used])
# Check for the ability to support multiple weak symbols
if test "$pac_cv_prog_c_weak_symbols" = "pragma weak" ; then
@@ -905,7 +905,7 @@ if test $enable_weak_symbols = "yes" ; then
fi
fi
-if test "$enable_weak_symbols" = 1 ; then
+if test "$enable_weak_symbols" = "yes" ; then
AC_DEFINE(HAVE_WEAK_SYMBOLS,1,[Define if weak symbols available])
HAVE_WEAK_SYMBOLS=1
else
-----------------------------------------------------------------------
Summary of changes:
src/mpi/romio/configure.ac | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, large-count, created. v3.0.4-125-g0228281
by noreply@mpich.org 03 May '13
by noreply@mpich.org 03 May '13
03 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, large-count has been created
at 02282816b3711a0a2443ad2070698bf19f409c44 (commit)
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/02282816b3711a0a2443ad2070698bf19…
commit 02282816b3711a0a2443ad2070698bf19f409c44
Author: Dave Goodell <goodell(a)mcs.anl.gov>
Date: Thu Apr 4 13:02:16 2013 -0500
WIP large count work, use MPI_Aint for dtype size and collectives
Also includes random fixes to `-Wshorten-64-to-32` warnings which might
need to be teased out.
diff --git a/src/include/mpierrs.h b/src/include/mpierrs.h
index 330c296..e467d3f 100644
--- a/src/include/mpierrs.h
+++ b/src/include/mpierrs.h
@@ -298,7 +298,7 @@
int ferr = 0; \
if (HANDLE_GET_KIND(dtype) == HANDLE_KIND_BUILTIN) { ferr=1; } \
else { \
- int errsize; \
+ MPI_Aint errsize; \
MPID_Datatype *errdtypeptr; \
MPID_Datatype_get_ptr(dtype,errdtypeptr); \
MPID_Datatype_get_size_macro(dtype,errsize); \
diff --git a/src/include/mpiutil.h b/src/include/mpiutil.h
index 0e0dfaa..40d5b87 100644
--- a/src/include/mpiutil.h
+++ b/src/include/mpiutil.h
@@ -184,30 +184,36 @@ int MPIR_Assert_fail_fmt(const char *cond, const char *file_name, int line_num,
* "std::numeric_limits<TYPE>" functionality. These rely on either C11
* "_Generic" functionality or some unfortunately complicated GCC builtins. */
#if HAVE_C11__GENERIC
-#define expr_inttype_max(expr_) \
- _Generic(expr_, \
- signed char: SCHAR_MAX, \
- signed short: SHRT_MAX, \
- signed int: INT_MAX, \
- signed long: LONG_MAX, \
- signed long long: LLONG_MAX, \
- unsigned char: UCHAR_MAX, \
- unsigned short: USHRT_MAX, \
- unsigned int: UINT_MAX, \
- unsigned long: ULONG_MAX, \
- unsigned long long: ULLONG_MAX)
-#define expr_inttype_min(expr_) \
- _Generic(expr_, \
- signed char: SCHAR_MIN, \
- signed short: SHRT_MIN, \
- signed int: INT_MIN, \
- signed long: LONG_MIN, \
- signed long long: LLONG_MIN, \
- unsigned char: 0, \
- unsigned short: 0, \
- unsigned int: 0, \
- unsigned long: 0, \
- unsigned long long: 0)
+#define expr_inttype_max(expr_) \
+ _Generic(expr_, \
+ signed char: SCHAR_MAX, \
+ signed short: SHRT_MAX, \
+ signed int: INT_MAX, \
+ signed long: LONG_MAX, \
+ signed long long: LLONG_MAX, \
+ unsigned char: UCHAR_MAX, \
+ unsigned short: USHRT_MAX, \
+ unsigned int: UINT_MAX, \
+ unsigned long: ULONG_MAX, \
+ unsigned long long: ULLONG_MAX, \
+ /* _Generic cares about cv-qualifiers */ \
+ volatile signed int: INT_MAX, \
+ volatile unsigned int: UINT_MAX)
+#define expr_inttype_min(expr_) \
+ _Generic(expr_, \
+ signed char: SCHAR_MIN, \
+ signed short: SHRT_MIN, \
+ signed int: INT_MIN, \
+ signed long: LONG_MIN, \
+ signed long long: LLONG_MIN, \
+ unsigned char: 0, \
+ unsigned short: 0, \
+ unsigned int: 0, \
+ unsigned long: 0, \
+ unsigned long long: 0, \
+ /* _Generic cares about cv-qualifiers */ \
+ volatile signed int: INT_MIN, \
+ volatile unsigned int: 0)
#endif
/* Assigns (src_) to (dst_), checking that (src_) fits in (dst_) without
@@ -218,18 +224,19 @@ int MPIR_Assert_fail_fmt(const char *cond, const char *file_name, int line_num,
* can be found in Chapter 5 of "Secure Coding in C and C++" by Robert Seacord.
*/
#if defined(expr_inttype_max) && defined(expr_inttype_min)
-# define MPIU_Assign_trunc(dst_,src_) \
- do { \
- MPIU_Assert((src_) <= expr_inttype_max(dst_)); \
- MPIU_Assert((src_) >= expr_inttype_min(dst_)); \
- dst_ = (src_); \
+# define MPIU_Assign_trunc(dst_,src_,dst_type_) \
+ do { \
+ MPIU_Assert_has_type((dst_), dst_type_); \
+ MPIU_Assert((src_) <= expr_inttype_max(dst_)); \
+ MPIU_Assert((src_) >= expr_inttype_min(dst_)); \
+ dst_ = (dst_type_)(src_); \
} while (0)
#else
-# define MPIU_Assign_trunc(dst_,src_) \
- do { \
- dst_ = (src_); \
+# define MPIU_Assign_trunc(dst_,src_,dst_type_) \
+ do { \
+ dst_ = (dst_type_)(src_); \
/* will catch some of the cases if the expr_inttype macros aren't available */ \
- MPIU_Assert((dst_) == (src_)); \
+ MPIU_Assert((dst_) == (src_)); \
} while (0)
#endif
diff --git a/src/mpi/coll/allred_group.c b/src/mpi/coll/allred_group.c
index 24c514e..50ee36e 100644
--- a/src/mpi/coll/allred_group.c
+++ b/src/mpi/coll/allred_group.c
@@ -29,7 +29,7 @@ int MPIR_Allreduce_group_intra(void *sendbuf, void *recvbuf, int count,
MPI_Datatype datatype, MPI_Op op, MPID_Comm *comm_ptr,
MPID_Group *group_ptr, int tag, int *errflag)
{
- int type_size;
+ MPI_Aint type_size;
int mpi_errno = MPI_SUCCESS;
int mpi_errno_ret = MPI_SUCCESS;
/* newrank is a rank in group_ptr */
diff --git a/src/mpi/coll/allreduce.c b/src/mpi/coll/allreduce.c
index 02999d0..bca64e2 100644
--- a/src/mpi/coll/allreduce.c
+++ b/src/mpi/coll/allreduce.c
@@ -136,7 +136,8 @@ int MPIR_Allreduce_intra (
int is_homogeneous;
int rc;
#endif
- int comm_size, rank, type_size;
+ int comm_size, rank;
+ MPI_Aint type_size;
int mpi_errno = MPI_SUCCESS;
int mpi_errno_ret = MPI_SUCCESS;
int mask, dst, is_commutative, pof2, newrank, rem, newdst, i,
diff --git a/src/mpi/coll/bcast.c b/src/mpi/coll/bcast.c
index cf9ac0a..cab8c70 100644
--- a/src/mpi/coll/bcast.c
+++ b/src/mpi/coll/bcast.c
@@ -45,7 +45,8 @@ static int MPIR_Bcast_binomial(
int nbytes=0;
int recvd_size;
MPI_Status status;
- int type_size, is_contig, is_homogeneous;
+ int is_contig, is_homogeneous;
+ MPI_Aint type_size;
int position;
void *tmp_buf=NULL;
MPI_Comm comm;
@@ -399,8 +400,9 @@ static int MPIR_Bcast_scatter_doubling_allgather(
int relative_rank, mask;
int mpi_errno = MPI_SUCCESS;
int mpi_errno_ret = MPI_SUCCESS;
- int scatter_size, nbytes=0, curr_size, recv_size = 0;
- int type_size, j, k, i, tmp_mask, is_contig, is_homogeneous;
+ int scatter_size, curr_size, recv_size = 0;
+ int j, k, i, tmp_mask, is_contig, is_homogeneous;
+ MPI_Aint type_size, nbytes = 0;
int relative_dst, dst_tree_root, my_tree_root, send_offset;
int recv_offset, tree_root, nprocs_completed, offset, position;
MPIU_CHKLMEM_DECL(1);
@@ -706,7 +708,8 @@ static int MPIR_Bcast_scatter_ring_allgather(
int mpi_errno = MPI_SUCCESS;
int mpi_errno_ret = MPI_SUCCESS;
int scatter_size, nbytes;
- int type_size, j, i, is_contig, is_homogeneous;
+ int j, i, is_contig, is_homogeneous;
+ MPI_Aint type_size;
int position;
int left, right, jnext;
int curr_size = 0;
@@ -912,8 +915,8 @@ static int MPIR_SMP_Bcast(
{
int mpi_errno = MPI_SUCCESS;
int mpi_errno_ret = MPI_SUCCESS;
- int type_size, is_homogeneous;
- int nbytes=0;
+ int is_homogeneous;
+ MPI_Aint type_size, nbytes=0;
MPI_Status status;
int recvd_size;
diff --git a/src/mpi_t/mpi_t_util.c b/src/mpi_t/mpi_t_util.c
index 8c28b2e..0c71dae 100644
--- a/src/mpi_t/mpi_t_util.c
+++ b/src/mpi_t/mpi_t_util.c
@@ -139,12 +139,12 @@ void MPIU_Tool_strncpy(char *dst, const char *src, int *len)
if (!dst || !*len) {
/* just return the space needed to hold src, including the terminator */
- *len = strlen(src) + 1;
+ *len = (int)(strlen(src) + 1);
}
else {
/* MPL_strncpy will always terminate the string */
MPL_strncpy(dst, src, *len);
- *len = strlen(dst) + 1;
+ *len = (int)(strlen(dst) + 1);
}
}
}
diff --git a/src/mpid/ch3/channels/nemesis/include/mpid_nem_datatypes.h b/src/mpid/ch3/channels/nemesis/include/mpid_nem_datatypes.h
index 04b3c56..bbc7b98 100644
--- a/src/mpid/ch3/channels/nemesis/include/mpid_nem_datatypes.h
+++ b/src/mpid/ch3/channels/nemesis/include/mpid_nem_datatypes.h
@@ -147,7 +147,7 @@
#define MPID_NEM_PKT_HEADER_FIELDS \
int source; \
int dest; \
- int datalen; \
+ MPIDI_msg_sz_t datalen; \
unsigned short seqno; \
unsigned short type /* currently used only with checkpointing */
typedef struct MPID_nem_pkt_header
diff --git a/src/mpid/ch3/channels/nemesis/include/mpid_nem_inline.h b/src/mpid/ch3/channels/nemesis/include/mpid_nem_inline.h
index 6d215a1..5e489ac 100644
--- a/src/mpid/ch3/channels/nemesis/include/mpid_nem_inline.h
+++ b/src/mpid/ch3/channels/nemesis/include/mpid_nem_inline.h
@@ -216,7 +216,7 @@ MPID_nem_mpich_sendv (MPID_IOV **iov, int *n_iov, MPIDI_VC_t *vc, int *again)
while (*n_iov && payload_len >= (*iov)->MPID_IOV_LEN)
{
- int _iov_len = (*iov)->MPID_IOV_LEN;
+ size_t _iov_len = (*iov)->MPID_IOV_LEN;
MPIU_Memcpy (cell_buf, (*iov)->MPID_IOV_BUF, _iov_len);
payload_len -= _iov_len;
cell_buf += _iov_len;
@@ -351,7 +351,7 @@ MPID_nem_mpich_sendv_header (MPID_IOV **iov, int *n_iov, MPIDI_VC_t *vc, int *ag
payload_len = MPID_NEM_MPICH_DATA_LEN - sizeof(MPIDI_CH3_Pkt_t);
while (*n_iov && payload_len >= (*iov)->MPID_IOV_LEN)
{
- int _iov_len = (*iov)->MPID_IOV_LEN;
+ size_t _iov_len = (*iov)->MPID_IOV_LEN;
MPIU_Memcpy (cell_buf, (*iov)->MPID_IOV_BUF, _iov_len);
payload_len -= _iov_len;
cell_buf += _iov_len;
diff --git a/src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c b/src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c
index a26cfb2..d27a525 100644
--- a/src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c
+++ b/src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c
@@ -459,7 +459,9 @@ static int send_id_info(const sockconn_t *const sc)
MPIDI_nem_tcp_idinfo_t id_info;
MPIDI_nem_tcp_header_t hdr;
struct iovec iov[3];
- int pg_id_len = 0, offset, buf_size, iov_cnt = 2;
+ int buf_size, iov_cnt = 2;
+ ssize_t offset;
+ size_t pg_id_len = 0;
MPIDI_STATE_DECL(MPID_STATE_SEND_ID_INFO);
MPIDI_FUNC_ENTER(MPID_STATE_SEND_ID_INFO);
@@ -503,7 +505,7 @@ static int send_id_info(const sockconn_t *const sc)
MPIDI_FUNC_EXIT(MPID_STATE_SEND_ID_INFO);
return mpi_errno;
fn_fail:
- MPIU_DBG_MSG_FMT(NEM_SOCK_DET, VERBOSE, (MPIU_DBG_FDEST, "failure. mpi_errno = %d, offset=%d, errno=%d %s", mpi_errno, offset, errno, MPIU_Strerror(errno)));
+ MPIU_DBG_MSG_FMT(NEM_SOCK_DET, VERBOSE, (MPIU_DBG_FDEST, "failure. mpi_errno = %d, offset=%lld, errno=%d %s", mpi_errno, (long long)offset, errno, MPIU_Strerror(errno)));
goto fn_exit;
}
@@ -518,7 +520,8 @@ static int send_tmpvc_info(const sockconn_t *const sc)
MPIDI_nem_tcp_portinfo_t port_info;
MPIDI_nem_tcp_header_t hdr;
struct iovec iov[3];
- int offset, buf_size, iov_cnt = 2;
+ int buf_size, iov_cnt = 2;
+ ssize_t offset;
MPIDI_STATE_DECL(MPID_STATE_SEND_TMPVC_INFO);
MPIDI_FUNC_ENTER(MPID_STATE_SEND_TMPVC_INFO);
@@ -552,7 +555,7 @@ static int send_tmpvc_info(const sockconn_t *const sc)
MPIDI_FUNC_EXIT(MPID_STATE_SEND_TMPVC_INFO);
return mpi_errno;
fn_fail:
- MPIU_DBG_MSG_FMT(NEM_SOCK_DET, VERBOSE, (MPIU_DBG_FDEST, "failure. mpi_errno = %d, offset=%d, errno=%d %s", mpi_errno, offset, errno, MPIU_Strerror(errno)));
+ MPIU_DBG_MSG_FMT(NEM_SOCK_DET, VERBOSE, (MPIU_DBG_FDEST, "failure. mpi_errno = %d, offset=%lld, errno=%d %s", mpi_errno, (long long)offset, errno, MPIU_Strerror(errno)));
goto fn_exit;
}
@@ -564,7 +567,9 @@ static int recv_id_or_tmpvc_info(sockconn_t *const sc, int *got_sc_eof)
{
int mpi_errno = MPI_SUCCESS;
MPIDI_nem_tcp_header_t hdr;
- int pg_id_len = 0, nread, iov_cnt = 1;
+ int iov_cnt = 1;
+ size_t pg_id_len = 0;
+ ssize_t nread;
int hdr_len = sizeof(MPIDI_nem_tcp_header_t);
struct iovec iov[2];
char *pg_id = NULL;
@@ -695,7 +700,8 @@ static int recv_id_or_tmpvc_info(sockconn_t *const sc, int *got_sc_eof)
#define FCNAME MPIDI_QUOTE(FUNCNAME)
static int send_cmd_pkt(int fd, MPIDI_nem_tcp_socksm_pkt_type_t pkt_type)
{
- int mpi_errno = MPI_SUCCESS, offset;
+ int mpi_errno = MPI_SUCCESS;
+ ssize_t offset;
MPIDI_nem_tcp_header_t pkt;
int pkt_len = sizeof(MPIDI_nem_tcp_header_t);
@@ -729,7 +735,8 @@ static int send_cmd_pkt(int fd, MPIDI_nem_tcp_socksm_pkt_type_t pkt_type)
#define FCNAME MPIDI_QUOTE(FUNCNAME)
static int recv_cmd_pkt(int fd, MPIDI_nem_tcp_socksm_pkt_type_t *pkt_type)
{
- int mpi_errno = MPI_SUCCESS, nread;
+ int mpi_errno = MPI_SUCCESS;
+ ssize_t nread;
MPIDI_nem_tcp_header_t pkt;
int pkt_len = sizeof(MPIDI_nem_tcp_header_t);
MPIDI_STATE_DECL(MPID_STATE_RECV_CMD_PKT);
@@ -1597,11 +1604,11 @@ static int MPID_nem_tcp_recv_handler(sockconn_t *const sc)
{
iov->MPID_IOV_BUF = (char *)iov->MPID_IOV_BUF + bytes_recvd;
iov->MPID_IOV_LEN -= bytes_recvd;
- rreq->dev.iov_count = &rreq->dev.iov[rreq->dev.iov_offset + rreq->dev.iov_count] - iov;
+ rreq->dev.iov_count = (int)(&rreq->dev.iov[rreq->dev.iov_offset + rreq->dev.iov_count] - iov);
rreq->dev.iov_offset = iov - rreq->dev.iov;
MPIU_DBG_MSG_D(CH3_CHANNEL, VERBOSE, "bytes_recvd = %ld", (long int)bytes_recvd);
MPIU_DBG_MSG_D(CH3_CHANNEL, VERBOSE, "iov len = %ld", (long int)iov->MPID_IOV_LEN);
- MPIU_DBG_MSG_D(CH3_CHANNEL, VERBOSE, "iov_offset = %d", rreq->dev.iov_offset);
+ MPIU_DBG_MSG_D(CH3_CHANNEL, VERBOSE, "iov_offset = %lld", (long long)rreq->dev.iov_offset);
goto fn_exit;
}
bytes_recvd -= iov->MPID_IOV_LEN;
@@ -1811,7 +1818,7 @@ int MPID_nem_tcp_connpoll(int in_blocking_poll)
* on many platforms, including modern Linux. */
if (it_plfd->revents & POLLERR || it_plfd->revents & POLLNVAL) {
int req_errno = MPI_SUCCESS;
- int rc;
+ ssize_t rc;
char dummy;
const char *err_str = "UNKNOWN";
diff --git a/src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.h b/src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.h
index ea3e02e..270de1a 100644
--- a/src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.h
+++ b/src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.h
@@ -162,7 +162,7 @@ typedef enum MPIDI_nem_tcp_socksm_pkt_type {
typedef struct MPIDI_nem_tcp_header {
MPIDI_nem_tcp_socksm_pkt_type_t pkt_type;
- int datalen;
+ MPIDI_msg_sz_t datalen;
} MPIDI_nem_tcp_header_t;
typedef struct MPIDI_nem_tcp_idinfo {
diff --git a/src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_utility.c b/src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_utility.c
index b4bca79..fbc9d2c 100644
--- a/src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_utility.c
+++ b/src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_utility.c
@@ -179,7 +179,8 @@ int MPID_nem_tcp_is_sock_connected(int fd)
{
int rc = FALSE;
char buf[1];
- int buf_len = sizeof(buf)/sizeof(buf[0]), ret_recv, error=0;
+ int buf_len = sizeof(buf)/sizeof(buf[0]), error=0;
+ size_t ret_recv;
socklen_t n = sizeof(error);
n = sizeof(error);
diff --git a/src/mpid/ch3/channels/nemesis/src/ch3_isend.c b/src/mpid/ch3/channels/nemesis/src/ch3_isend.c
index 1b15039..da5141a 100644
--- a/src/mpid/ch3/channels/nemesis/src/ch3_isend.c
+++ b/src/mpid/ch3/channels/nemesis/src/ch3_isend.c
@@ -51,8 +51,9 @@ int MPIDI_CH3_iSend (MPIDI_VC_t *vc, MPID_Request *sreq, void * hdr, MPIDI_msg_s
if (MPIDI_CH3I_Sendq_empty(MPIDI_CH3I_shm_sendq))
{
+ MPIU_Assert(hdr_sz <= INT_MAX);
MPIU_DBG_MSG_D (CH3_CHANNEL, VERBOSE, "iSend %d", (int) hdr_sz);
- mpi_errno = MPID_nem_mpich_send_header (hdr, hdr_sz, vc, &again);
+ mpi_errno = MPID_nem_mpich_send_header (hdr, (int)hdr_sz, vc, &again);
if (mpi_errno) MPIU_ERR_POP (mpi_errno);
if (again)
{
diff --git a/src/mpid/ch3/channels/nemesis/src/ch3_istartmsg.c b/src/mpid/ch3/channels/nemesis/src/ch3_istartmsg.c
index a21219e..4e97a0a 100644
--- a/src/mpid/ch3/channels/nemesis/src/ch3_istartmsg.c
+++ b/src/mpid/ch3/channels/nemesis/src/ch3_istartmsg.c
@@ -55,8 +55,9 @@ int MPIDI_CH3_iStartMsg (MPIDI_VC_t *vc, void *hdr, MPIDI_msg_sz_t hdr_sz, MPID_
if (MPIDI_CH3I_Sendq_empty(MPIDI_CH3I_shm_sendq))
/* MT */
{
+ MPIU_Assert(hdr_sz <= INT_MAX);
MPIU_DBG_MSG_D (CH3_CHANNEL, VERBOSE, "iStartMsg %d", (int) hdr_sz);
- mpi_errno = MPID_nem_mpich_send_header (hdr, hdr_sz, vc, &again);
+ mpi_errno = MPID_nem_mpich_send_header (hdr, (int)hdr_sz, vc, &again);
if (mpi_errno) MPIU_ERR_POP (mpi_errno);
if (again)
{
diff --git a/src/mpid/ch3/channels/nemesis/src/ch3_progress.c b/src/mpid/ch3/channels/nemesis/src/ch3_progress.c
index 19810fe..76a50e6 100644
--- a/src/mpid/ch3/channels/nemesis/src/ch3_progress.c
+++ b/src/mpid/ch3/channels/nemesis/src/ch3_progress.c
@@ -723,8 +723,8 @@ int MPID_nem_handle_pkt(MPIDI_VC_t *vc, char *buf, MPIDI_msg_sz_t buflen)
while (n_iov && buflen >= iov->MPID_IOV_LEN)
{
- int iov_len = iov->MPID_IOV_LEN;
- MPIU_DBG_MSG_D(CH3_CHANNEL, VERBOSE, " %d", iov_len);
+ size_t iov_len = iov->MPID_IOV_LEN;
+ MPIU_DBG_MSG_D(CH3_CHANNEL, VERBOSE, " %d", (int)iov_len);
MPIU_Memcpy (iov->MPID_IOV_BUF, buf, iov_len);
buflen -= iov_len;
diff --git a/src/mpid/ch3/channels/nemesis/src/mpid_nem_debug.c b/src/mpid/ch3/channels/nemesis/src/mpid_nem_debug.c
index 1ab1fe1..44dfd0b 100644
--- a/src/mpid/ch3/channels/nemesis/src/mpid_nem_debug.c
+++ b/src/mpid/ch3/channels/nemesis/src/mpid_nem_debug.c
@@ -20,7 +20,7 @@ void MPID_nem_dbg_dump_cell (volatile struct MPID_nem_cell *cell)
MPIU_DBG_MSG_D (ALL, TERSE, " src = %6d", cell->pkt.mpich.source);
MPIU_DBG_MSG_D (ALL, TERSE, " dst = %6d", cell->pkt.mpich.dest);
- MPIU_DBG_MSG_D (ALL, TERSE, " len = %6d", cell->pkt.mpich.datalen);
+ MPIU_DBG_MSG_D (ALL, TERSE, " len = %6d", (int)cell->pkt.mpich.datalen);
MPIU_DBG_MSG_D (ALL, TERSE, " sqn = %6d", cell->pkt.mpich.seqno);
MPIU_DBG_MSG_D (ALL, TERSE, " typ = %6d", cell->pkt.mpich.type);
diff --git a/src/mpid/ch3/channels/nemesis/src/mpid_nem_init.c b/src/mpid/ch3/channels/nemesis/src/mpid_nem_init.c
index 19df691..7a45652 100644
--- a/src/mpid/ch3/channels/nemesis/src/mpid_nem_init.c
+++ b/src/mpid/ch3/channels/nemesis/src/mpid_nem_init.c
@@ -4,7 +4,7 @@
* See COPYRIGHT in top-level directory.
*/
-#include "mpid_nem_pre.h"
+#include "mpiimpl.h"
#include "mpid_nem_impl.h"
#include "mpid_nem_nets.h"
#include <errno.h>
diff --git a/src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_shm.c b/src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_shm.c
index 489de5c..e8ccc6d 100644
--- a/src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_shm.c
+++ b/src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_shm.c
@@ -494,7 +494,7 @@ static int lmt_shm_send_progress(MPIDI_VC_t *vc, MPID_Request *req, int *done)
last = (data_sz - first <= copy_limit) ? data_sz : first + copy_limit;
MPID_Segment_pack(req->dev.segment_ptr, first, &last, (void *)copy_buf->buf[buf_num]); /* cast away volatile */
OPA_write_barrier();
- copy_buf->len[buf_num].val = last - first;
+ MPIU_Assign_trunc(copy_buf->len[buf_num].val, (last - first), volatile int);
first = last;
buf_num = (buf_num+1) % NUM_BUFS;
diff --git a/src/mpid/ch3/include/mpidpre.h b/src/mpid/ch3/include/mpidpre.h
index 032670a..ec37912 100644
--- a/src/mpid/ch3/include/mpidpre.h
+++ b/src/mpid/ch3/include/mpidpre.h
@@ -329,7 +329,7 @@ typedef struct MPIDI_Request {
iov_offset points to the current head element in the IOV */
MPID_IOV iov[MPID_IOV_LIMIT];
int iov_count;
- int iov_offset;
+ size_t iov_offset;
/* OnDataAvail is the action to take when data is now available.
For example, when an operation described by an iov has
diff --git a/src/mpid/ch3/include/mpidrma.h b/src/mpid/ch3/include/mpidrma.h
index 26d1b17..1d354e4 100644
--- a/src/mpid/ch3/include/mpidrma.h
+++ b/src/mpid/ch3/include/mpidrma.h
@@ -40,7 +40,7 @@ enum MPID_Lock_state {
typedef struct MPIDI_RMA_dtype_info { /* for derived datatypes */
int is_contig;
int max_contig_blocks;
- int size;
+ MPI_Aint size;
MPI_Aint extent;
int dataloop_size; /* not needed because this info is sent in
packet header. remove it after lock/unlock
diff --git a/src/mpid/ch3/src/ch3u_handle_connection.c b/src/mpid/ch3/src/ch3u_handle_connection.c
index 6db836a..64a4743 100644
--- a/src/mpid/ch3/src/ch3u_handle_connection.c
+++ b/src/mpid/ch3/src/ch3u_handle_connection.c
@@ -423,7 +423,7 @@ static int terminate_failed_VCs(MPID_Group *new_failed_group)
while (isspace(*c)) /* skip spaces */ \
++c; \
MPIU_ERR_CHKINTERNAL(!isdigit(*c), mpi_errno, "error parsing failed process list"); \
- *(r_p) = strtol(c, &c, 0); \
+ *(r_p) = (int)strtol(c, &c, 0); \
while (isspace(*c)) /* skip spaces */ \
++c; \
} while (0)
diff --git a/src/mpid/ch3/src/ch3u_handle_recv_req.c b/src/mpid/ch3/src/ch3u_handle_recv_req.c
index 872cfb8..deb4138 100644
--- a/src/mpid/ch3/src/ch3u_handle_recv_req.c
+++ b/src/mpid/ch3/src/ch3u_handle_recv_req.c
@@ -90,7 +90,8 @@ int MPIDI_CH3_ReqHandler_PutAccumRespComplete( MPIDI_VC_t *vc,
/* Perform get in get-accumulate */
if (rreq->dev.resp_request_handle != MPI_REQUEST_NULL) {
- int predefined, type_size;
+ int predefined;
+ MPI_Aint type_size;
MPIDI_CH3_Pkt_t upkt;
MPIDI_CH3_Pkt_get_accum_resp_t *get_accum_resp_pkt = &upkt.get_accum_resp;
MPID_Request *resp_req;
@@ -484,7 +485,8 @@ int MPIDI_CH3_ReqHandler_FOPComplete( MPIDI_VC_t *vc,
MPID_Request *resp_req;
MPID_Win *win_ptr;
MPI_User_function *uop;
- int len, one;
+ MPI_Aint len;
+ int one;
MPIDI_STATE_DECL(MPID_STATE_MPIDI_CH3_REQHANDLER_FOPCOMPLETE);
MPIDI_FUNC_ENTER(MPID_STATE_MPIDI_CH3_REQHANDLER_FOPCOMPLETE);
@@ -810,7 +812,8 @@ static int do_accumulate_op(MPID_Request *rreq)
MPID_Segment *segp;
DLOOP_VECTOR *dloop_vec;
MPI_Aint first, last;
- int vec_len, i, type_size, count;
+ int vec_len, i, count;
+ MPI_Aint type_size;
MPI_Datatype type;
MPID_Datatype *dtp;
@@ -848,7 +851,7 @@ static int do_accumulate_op(MPID_Request *rreq)
MPID_Datatype_get_size_macro(type, type_size);
for (i=0; i<vec_len; i++)
{
- count = (dloop_vec[i].DLOOP_VECTOR_LEN)/type_size;
+ MPIU_Assign_trunc(count, (dloop_vec[i].DLOOP_VECTOR_LEN)/type_size, int);
(*uop)((char *)rreq->dev.user_buf + MPIU_PtrToAint(dloop_vec[i].DLOOP_VECTOR_BUF),
(char *)rreq->dev.real_user_buf + MPIU_PtrToAint(dloop_vec[i].DLOOP_VECTOR_BUF),
&count, &type);
@@ -1155,7 +1158,8 @@ static int do_simple_get(MPID_Win *win_ptr, MPIDI_Win_lock_queue *lock_queue)
MPIDI_CH3_Pkt_get_resp_t * get_resp_pkt = &upkt.get_resp;
MPID_Request *req;
MPID_IOV iov[MPID_IOV_LIMIT];
- int type_size, mpi_errno=MPI_SUCCESS;
+ int mpi_errno=MPI_SUCCESS;
+ MPI_Aint type_size;
MPIDI_STATE_DECL(MPID_STATE_DO_SIMPLE_GET);
MPIDI_FUNC_ENTER(MPID_STATE_DO_SIMPLE_GET);
diff --git a/src/mpid/ch3/src/ch3u_request.c b/src/mpid/ch3/src/ch3u_request.c
index 5842b7b..8d44993 100644
--- a/src/mpid/ch3/src/ch3u_request.c
+++ b/src/mpid/ch3/src/ch3u_request.c
@@ -366,8 +366,8 @@ int MPIDI_CH3U_Request_load_recv_iov(MPID_Request * const rreq)
rreq->dev.segment_first,
&last, &rreq->dev.iov[0], &rreq->dev.iov_count);
MPIU_DBG_MSG_FMT(CH3_CHANNEL,VERBOSE,(MPIU_DBG_FDEST,
- "post-upv: first=" MPIDI_MSG_SZ_FMT ", last=" MPIDI_MSG_SZ_FMT ", iov_n=%d, iov_offset=%d",
- rreq->dev.segment_first, last, rreq->dev.iov_count, rreq->dev.iov_offset));
+ "post-upv: first=" MPIDI_MSG_SZ_FMT ", last=" MPIDI_MSG_SZ_FMT ", iov_n=%d, iov_offset=%lld",
+ rreq->dev.segment_first, last, rreq->dev.iov_count, (long long)rreq->dev.iov_offset));
MPIU_Assert(rreq->dev.iov_count >= 0 && rreq->dev.iov_count <=
MPID_IOV_LIMIT);
diff --git a/src/mpid/ch3/src/ch3u_rma_acc_ops.c b/src/mpid/ch3/src/ch3u_rma_acc_ops.c
index 29a46b1..7ff08c3 100644
--- a/src/mpid/ch3/src/ch3u_rma_acc_ops.c
+++ b/src/mpid/ch3/src/ch3u_rma_acc_ops.c
@@ -185,7 +185,7 @@ int MPIDI_Get_accumulate(const void *origin_addr, int origin_count,
type_size = MPID_Datatype_get_basic_size(type);
for (i=0; i<vec_len; i++) {
- count = (dloop_vec[i].DLOOP_VECTOR_LEN)/type_size;
+ MPIU_Assign_trunc(count, (dloop_vec[i].DLOOP_VECTOR_LEN)/type_size, int);
(*uop)((char *)source_buf + MPIU_PtrToAint(dloop_vec[i].DLOOP_VECTOR_BUF),
(char *)target_buf + MPIU_PtrToAint(dloop_vec[i].DLOOP_VECTOR_BUF),
&count, &type);
@@ -298,7 +298,7 @@ int MPIDI_Compare_and_swap(const void *origin_addr, const void *compare_addr,
{
void *base, *dest_addr;
int disp_unit;
- int len;
+ MPI_Aint len;
if (win_ptr->create_flavor == MPI_WIN_FLAVOR_SHARED) {
base = win_ptr->shm_base_addrs[target_rank];
@@ -405,7 +405,8 @@ int MPIDI_Fetch_and_op(const void *origin_addr, void *result_addr,
MPI_User_function *uop;
void *base, *dest_addr;
int disp_unit;
- int len, one;
+ MPI_Aint len;
+ int one;
if (win_ptr->create_flavor == MPI_WIN_FLAVOR_SHARED) {
base = win_ptr->shm_base_addrs[target_rank];
diff --git a/src/mpid/ch3/src/ch3u_rma_ops.c b/src/mpid/ch3/src/ch3u_rma_ops.c
index f2fc7ca..cfaaf68 100644
--- a/src/mpid/ch3/src/ch3u_rma_ops.c
+++ b/src/mpid/ch3/src/ch3u_rma_ops.c
@@ -545,7 +545,7 @@ int MPIDI_Accumulate(const void *origin_addr, int origin_count, MPI_Datatype
if (shm_op) MPIDI_CH3I_SHM_MUTEX_LOCK(win_ptr);
for (i=0; i<vec_len; i++)
{
- count = (dloop_vec[i].DLOOP_VECTOR_LEN)/type_size;
+ MPIU_Assign_trunc(count, (dloop_vec[i].DLOOP_VECTOR_LEN)/type_size, int);
(*uop)((char *)source_buf + MPIU_PtrToAint(dloop_vec[i].DLOOP_VECTOR_BUF),
(char *)target_buf + MPIU_PtrToAint(dloop_vec[i].DLOOP_VECTOR_BUF),
&count, &type);
diff --git a/src/mpid/ch3/src/ch3u_rma_sync.c b/src/mpid/ch3/src/ch3u_rma_sync.c
index 1f6cbf9..bba3853 100644
--- a/src/mpid/ch3/src/ch3u_rma_sync.c
+++ b/src/mpid/ch3/src/ch3u_rma_sync.c
@@ -481,7 +481,7 @@ static int create_datatype(const MPIDI_RMA_dtype_info *dtype_info,
datatypes[0] = MPI_BYTE;
displaces[1] = MPIU_PtrToAint(dataloop);
- blocklens[1] = dataloop_sz;
+ MPIU_Assign_trunc(blocklens[1], dataloop_sz, int);
datatypes[1] = MPI_BYTE;
displaces[2] = MPIU_PtrToAint(o_addr);
@@ -547,7 +547,8 @@ static int MPIDI_CH3I_Send_rma_msg(MPIDI_RMA_Op_t *rma_op, MPID_Win *win_ptr,
MPIDI_CH3_Pkt_accum_t *accum_pkt = &upkt.accum;
MPID_IOV iov[MPID_IOV_LIMIT];
int mpi_errno=MPI_SUCCESS, predefined;
- int origin_dt_derived, target_dt_derived, origin_type_size, iovcnt;
+ int origin_dt_derived, target_dt_derived, iovcnt;
+ MPI_Aint origin_type_size;
MPIDI_VC_t * vc;
MPID_Comm *comm_ptr;
MPID_Datatype *target_dtp=NULL, *origin_dtp=NULL;
@@ -862,10 +863,11 @@ static int MPIDI_CH3I_Send_contig_acc_msg(MPIDI_RMA_Op_t *rma_op,
MPIDI_CH3_Pkt_accum_t *accum_pkt = &upkt.accum;
MPID_IOV iov[MPID_IOV_LIMIT];
int mpi_errno=MPI_SUCCESS;
- int origin_type_size, iovcnt;
+ int iovcnt;
+ MPI_Aint origin_type_size;
MPIDI_VC_t * vc;
MPID_Comm *comm_ptr;
- int len;
+ size_t len;
MPIDI_STATE_DECL(MPID_STATE_MPIDI_CH3I_SEND_CONTIG_ACC_MSG);
MPIDI_RMA_FUNC_ENTER(MPID_STATE_MPIDI_CH3I_SEND_CONTIG_ACC_MSG);
@@ -874,7 +876,7 @@ static int MPIDI_CH3I_Send_contig_acc_msg(MPIDI_RMA_Op_t *rma_op,
MPID_Datatype_get_size_macro(rma_op->origin_datatype, origin_type_size);
/* FIXME: Make this size check efficient and match the packet type */
- len = rma_op->origin_count * origin_type_size;
+ MPIU_Assign_trunc(len, rma_op->origin_count * origin_type_size, size_t);
if (MPIR_PARAM_RMA_ACC_IMMED && len <= MPIDI_RMA_IMMED_INTS*sizeof(int)) {
MPIDI_CH3_Pkt_accum_immed_t * accumi_pkt = &upkt.accum_immed;
void *dest = accumi_pkt->data, *src = rma_op->origin_addr;
@@ -977,7 +979,7 @@ static int MPIDI_CH3I_Send_immed_rmw_msg(MPIDI_RMA_Op_t *rma_op,
MPID_Request *rmw_req = NULL, *resp_req = NULL;
MPIDI_VC_t *vc;
MPID_Comm *comm_ptr;
- int len;
+ MPI_Aint len;
MPIDI_STATE_DECL(MPID_STATE_MPIDI_CH3I_SEND_IMMED_RMW_MSG);
MPIDI_RMA_FUNC_ENTER(MPID_STATE_MPIDI_CH3I_SEND_IMMED_RMW_MSG);
@@ -2033,7 +2035,8 @@ int MPIDI_Win_unlock(int dest, MPID_Win *win_ptr)
* do an optimization where the lock and the RMA operation are
* sent in a single packet. Otherwise, we send a separate lock
* request first. */
- int type_size, predefined;
+ int predefined;
+ MPI_Aint type_size;
MPIDI_VC_t *vc;
MPIDI_RMA_Op_t *curr_op = rma_op;
@@ -2931,7 +2934,8 @@ static int MPIDI_CH3I_Send_lock_put_or_acc(MPID_Win *win_ptr, int target_rank)
MPID_IOV iov[MPID_IOV_LIMIT];
MPID_Comm *comm_ptr;
MPID_Datatype *origin_dtp=NULL;
- int origin_type_size, predefined;
+ int predefined;
+ MPI_Aint origin_type_size;
MPIDI_CH3_Pkt_t upkt;
MPIDI_CH3_Pkt_lock_put_unlock_t *lock_put_unlock_pkt =
&upkt.lock_put_unlock;
@@ -3309,7 +3313,7 @@ int MPIDI_CH3_PktHandler_Put( MPIDI_VC_t *vc, MPIDI_CH3_Pkt_t *pkt,
MPIDI_CH3_Pkt_put_t * put_pkt = &pkt->put;
MPID_Request *req = NULL;
int predefined;
- int type_size;
+ MPI_Aint type_size;
int complete = 0;
char *data_buf = NULL;
MPIDI_msg_sz_t data_len;
@@ -3481,7 +3485,7 @@ int MPIDI_CH3_PktHandler_Get( MPIDI_VC_t *vc, MPIDI_CH3_Pkt_t *pkt,
MPIDI_msg_sz_t data_len;
MPID_Win *win_ptr;
int mpi_errno = MPI_SUCCESS;
- int type_size;
+ MPI_Aint type_size;
MPIDI_STATE_DECL(MPID_STATE_MPIDI_CH3_PKTHANDLER_GET);
MPIDI_FUNC_ENTER(MPID_STATE_MPIDI_CH3_PKTHANDLER_GET);
@@ -3616,7 +3620,7 @@ int MPIDI_CH3_PktHandler_Accumulate( MPIDI_VC_t *vc, MPIDI_CH3_Pkt_t *pkt,
MPIDI_msg_sz_t data_len;
MPID_Win *win_ptr;
int mpi_errno = MPI_SUCCESS;
- int type_size;
+ MPI_Aint type_size;
MPIDI_STATE_DECL(MPID_STATE_MPIDI_CH3_PKTHANDLER_ACCUMULATE);
MPIDI_FUNC_ENTER(MPID_STATE_MPIDI_CH3_PKTHANDLER_ACCUMULATE);
@@ -3809,7 +3813,8 @@ int MPIDI_CH3_PktHandler_Accumulate_Immed( MPIDI_VC_t *vc, MPIDI_CH3_Pkt_t *pkt,
/* Data is already present */
if (accum_pkt->op == MPI_REPLACE) {
/* no datatypes required */
- int len = accum_pkt->count * extent;
+ int len;
+ MPIU_Assign_trunc(len, (accum_pkt->count * extent), int);
/* FIXME: use immediate copy because this is short */
MPIUI_Memcpy( accum_pkt->addr, accum_pkt->data, len );
}
@@ -3865,7 +3870,7 @@ int MPIDI_CH3_PktHandler_CAS( MPIDI_VC_t *vc, MPIDI_CH3_Pkt_t *pkt,
MPIDI_CH3_Pkt_cas_t *cas_pkt = &pkt->cas;
MPID_Win *win_ptr;
MPID_Request *req;
- int len;
+ MPI_Aint len;
MPIDI_STATE_DECL(MPID_STATE_MPIDI_CH3_PKTHANDLER_CAS);
MPIDI_FUNC_ENTER(MPID_STATE_MPIDI_CH3_PKTHANDLER_CAS);
@@ -3937,7 +3942,7 @@ int MPIDI_CH3_PktHandler_CASResp( MPIDI_VC_t *vc ATTRIBUTE((unused)),
int mpi_errno = MPI_SUCCESS;
MPIDI_CH3_Pkt_cas_resp_t *cas_resp_pkt = &pkt->cas_resp;
MPID_Request *req;
- int len;
+ MPI_Aint len;
MPIDI_STATE_DECL(MPID_STATE_MPIDI_CH3_PKTHANDLER_CASRESP);
MPIDI_FUNC_ENTER(MPID_STATE_MPIDI_CH3_PKTHANDLER_CASRESP);
@@ -3972,7 +3977,8 @@ int MPIDI_CH3_PktHandler_FOP( MPIDI_VC_t *vc, MPIDI_CH3_Pkt_t *pkt,
MPIDI_CH3_Pkt_fop_t *fop_pkt = &pkt->fop;
MPID_Request *req;
MPID_Win *win_ptr;
- int len, data_complete = 0;
+ int data_complete = 0;
+ MPI_Aint len;
MPIU_CHKPMEM_DECL(1);
MPIDI_STATE_DECL(MPID_STATE_MPIDI_CH3_PKTHANDLER_FOP);
@@ -4064,7 +4070,8 @@ int MPIDI_CH3_PktHandler_FOPResp( MPIDI_VC_t *vc ATTRIBUTE((unused)),
int mpi_errno = MPI_SUCCESS;
MPIDI_CH3_Pkt_fop_resp_t *fop_resp_pkt = &pkt->fop_resp;
MPID_Request *req;
- int len, complete = 0;
+ int complete = 0;
+ MPI_Aint len;
MPIDI_STATE_DECL(MPID_STATE_MPIDI_CH3_PKTHANDLER_FOPRESP);
MPIDI_FUNC_ENTER(MPID_STATE_MPIDI_CH3_PKTHANDLER_FOPRESP);
@@ -4127,7 +4134,7 @@ int MPIDI_CH3_PktHandler_Get_AccumResp( MPIDI_VC_t *vc, MPIDI_CH3_Pkt_t *pkt,
char *data_buf = NULL;
MPIDI_msg_sz_t data_len;
int mpi_errno = MPI_SUCCESS;
- int type_size;
+ MPI_Aint type_size;
MPIDI_STATE_DECL(MPID_STATE_MPIDI_CH3_PKTHANDLER_GET_ACCUM_RESP);
MPIDI_FUNC_ENTER(MPID_STATE_MPIDI_CH3_PKTHANDLER_GET_ACCUM_RESP);
@@ -4255,7 +4262,7 @@ int MPIDI_CH3_PktHandler_LockPutUnlock( MPIDI_VC_t *vc, MPIDI_CH3_Pkt_t *pkt,
&pkt->lock_put_unlock;
MPID_Win *win_ptr = NULL;
MPID_Request *req = NULL;
- int type_size;
+ MPI_Aint type_size;
int complete;
char *data_buf = NULL;
MPIDI_msg_sz_t data_len;
@@ -4402,7 +4409,7 @@ int MPIDI_CH3_PktHandler_LockGetUnlock( MPIDI_VC_t *vc, MPIDI_CH3_Pkt_t *pkt,
MPIDI_CH3_Pkt_lock_get_unlock_t * lock_get_unlock_pkt =
&pkt->lock_get_unlock;
MPID_Win *win_ptr = NULL;
- int type_size;
+ MPI_Aint type_size;
int mpi_errno = MPI_SUCCESS;
MPIDI_STATE_DECL(MPID_STATE_MPIDI_CH3_PKTHANDLER_LOCKGETUNLOCK);
@@ -4521,7 +4528,7 @@ int MPIDI_CH3_PktHandler_LockAccumUnlock( MPIDI_VC_t *vc, MPIDI_CH3_Pkt_t *pkt,
MPID_Request *req = NULL;
MPID_Win *win_ptr = NULL;
MPIDI_Win_lock_queue *curr_ptr = NULL, *prev_ptr = NULL, *new_ptr = NULL;
- int type_size;
+ MPI_Aint type_size;
int complete;
char *data_buf = NULL;
MPIDI_msg_sz_t data_len;
@@ -4655,7 +4662,7 @@ int MPIDI_CH3_PktHandler_GetResp( MPIDI_VC_t *vc ATTRIBUTE((unused)),
char *data_buf = NULL;
MPIDI_msg_sz_t data_len;
int mpi_errno = MPI_SUCCESS;
- int type_size;
+ MPI_Aint type_size;
MPIDI_STATE_DECL(MPID_STATE_MPIDI_CH3_PKTHANDLER_GETRESP);
MPIDI_FUNC_ENTER(MPID_STATE_MPIDI_CH3_PKTHANDLER_GETRESP);
diff --git a/src/mpid/ch3/src/mpid_vc.c b/src/mpid/ch3/src/mpid_vc.c
index 0d4afa6..52fda47 100644
--- a/src/mpid/ch3/src/mpid_vc.c
+++ b/src/mpid/ch3/src/mpid_vc.c
@@ -919,7 +919,7 @@ static int parse_mapping(char *map_str, mapping_type_t *type, map_block_t **map,
if (!isdigit(*c))
parse_error();
- (*map)[i].start_id = strtol(c, &c, 0);
+ (*map)[i].start_id = (int)strtol(c, &c, 0);
skip_space(c);
expect_and_skip_c(c, ',');
@@ -927,7 +927,7 @@ static int parse_mapping(char *map_str, mapping_type_t *type, map_block_t **map,
if (!isdigit(*c))
parse_error();
- (*map)[i].count = strtol(c, &c, 0);
+ (*map)[i].count = (int)strtol(c, &c, 0);
skip_space(c);
expect_and_skip_c(c, ',');
@@ -935,7 +935,7 @@ static int parse_mapping(char *map_str, mapping_type_t *type, map_block_t **map,
if (!isdigit(*c))
parse_error();
- (*map)[i].size = strtol(c, &c, 0);
+ (*map)[i].size = (int)strtol(c, &c, 0);
expect_and_skip_c(c, ')');
skip_space(c);
diff --git a/src/mpid/ch3/src/mpidi_isend_self.c b/src/mpid/ch3/src/mpidi_isend_self.c
index 8ec7f82..a18ec48 100644
--- a/src/mpid/ch3/src/mpidi_isend_self.c
+++ b/src/mpid/ch3/src/mpidi_isend_self.c
@@ -85,7 +85,7 @@ int MPIDI_Isend_self(const void * buf, int count, MPI_Datatype datatype, int ran
{
if (type != MPIDI_REQUEST_TYPE_RSEND)
{
- int dt_sz;
+ MPI_Aint dt_sz;
/* FIXME: Insert code here to buffer small sends in a temporary buffer? */
diff --git a/src/mpid/common/datatype/dataloop/segment_packunpack.c b/src/mpid/common/datatype/dataloop/segment_packunpack.c
index 661bd93..8ed64ad 100644
--- a/src/mpid/common/datatype/dataloop/segment_packunpack.c
+++ b/src/mpid/common/datatype/dataloop/segment_packunpack.c
@@ -166,8 +166,8 @@ int PREPEND_PREFIX(Segment_vector_m2m)(DLOOP_Offset *blocks_p,
cbufp = (char*) paramp->userbuf + rel_off;
DLOOP_Handle_get_size_macro(el_type, el_size);
- whole_count = (blksz > 0) ? (*blocks_p / (DLOOP_Offset) blksz) : 0;
- blocks_left = (blksz > 0) ? (*blocks_p % (DLOOP_Offset) blksz) : 0;
+ whole_count = (DLOOP_Count)((blksz > 0) ? (*blocks_p / (DLOOP_Offset) blksz) : 0);
+ blocks_left = (DLOOP_Count)((blksz > 0) ? (*blocks_p % (DLOOP_Offset) blksz) : 0);
if (paramp->direction == DLOOP_M2M_TO_USERBUF) {
if (el_size == 8
@@ -295,7 +295,8 @@ int PREPEND_PREFIX(Segment_blkidx_m2m)(DLOOP_Offset *blocks_p,
rel_off + offsetarray[curblock]);
cbufp = (char*) paramp->userbuf + rel_off + offsetarray[curblock];
- if (blocklen > blocks_left) blocklen = blocks_left;
+ /* TODO check for truncation b/c of DLOOP_Offset-->DLOOP_Count */
+ if (blocklen > blocks_left) blocklen = (DLOOP_Count)blocks_left;
if (paramp->direction == DLOOP_M2M_TO_USERBUF) {
src = paramp->streambuf;
diff --git a/src/mpid/common/datatype/dataloop/veccpy.h b/src/mpid/common/datatype/dataloop/veccpy.h
index ea138a8..e1afabb 100644
--- a/src/mpid/common/datatype/dataloop/veccpy.h
+++ b/src/mpid/common/datatype/dataloop/veccpy.h
@@ -56,23 +56,26 @@
type * tmp_src = l_src; \
register int _i, j, k; \
unsigned long total_count = count * nelms; \
- const DLOOP_Offset l_stride = stride; \
+ const DLOOP_Offset l_stride = stride; \
\
+ DLOOP_Assert(stride <= INT_MAX); \
+ DLOOP_Assert(total_count <= INT_MAX); \
+ DLOOP_Assert(nelms <= INT_MAX); \
if (nelms == 1) { \
- for (_i = total_count; _i; _i--) { \
+ for (_i = (int)total_count; _i; _i--) { \
*l_dest++ = *l_src; \
l_src += l_stride; \
} \
} \
else if (nelms == 2) { \
- for (_i = total_count; _i; _i -= 2) { \
+ for (_i = (int)total_count; _i; _i -= 2) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
l_src += l_stride; \
} \
} \
else if (nelms == 3) { \
- for (_i = total_count; _i; _i -= 3) { \
+ for (_i = (int)total_count; _i; _i -= 3) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
*l_dest++ = l_src[2]; \
@@ -80,7 +83,7 @@
} \
} \
else if (nelms == 4) { \
- for (_i = total_count; _i; _i -= 4) { \
+ for (_i = (int)total_count; _i; _i -= 4) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
*l_dest++ = l_src[2]; \
@@ -89,7 +92,7 @@
} \
} \
else if (nelms == 5) { \
- for (_i = total_count; _i; _i -= 5) { \
+ for (_i = (int)total_count; _i; _i -= 5) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
*l_dest++ = l_src[2]; \
@@ -99,7 +102,7 @@
} \
} \
else if (nelms == 6) { \
- for (_i = total_count; _i; _i -= 6) { \
+ for (_i = (int)total_count; _i; _i -= 6) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
*l_dest++ = l_src[2]; \
@@ -110,7 +113,7 @@
} \
} \
else if (nelms == 7) { \
- for (_i = total_count; _i; _i -= 7) { \
+ for (_i = (int)total_count; _i; _i -= 7) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
*l_dest++ = l_src[2]; \
@@ -122,7 +125,7 @@
} \
} \
else if (nelms == 8) { \
- for (_i = total_count; _i; _i -= 8) { \
+ for (_i = (int)total_count; _i; _i -= 8) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
*l_dest++ = l_src[2]; \
@@ -135,10 +138,10 @@
} \
} \
else { \
- _i = total_count; \
+ _i = (int)total_count; \
while (_i) { \
tmp_src = l_src; \
- j = nelms; \
+ j = (int)nelms; \
while (j >= 8) { \
*l_dest++ = tmp_src[0]; \
*l_dest++ = tmp_src[1]; \
@@ -170,21 +173,24 @@
unsigned long total_count = count * nelms; \
const DLOOP_Offset l_stride = stride; \
\
+ DLOOP_Assert(stride <= INT_MAX); \
+ DLOOP_Assert(total_count <= INT_MAX); \
+ DLOOP_Assert(nelms <= INT_MAX); \
if (nelms == 1) { \
- for (_i = total_count; _i; _i--) { \
+ for (_i = (int)total_count; _i; _i--) { \
*l_dest++ = *l_src; \
l_src = (type *) ((char *) l_src + l_stride); \
} \
} \
else if (nelms == 2) { \
- for (_i = total_count; _i; _i -= 2) { \
+ for (_i = (int)total_count; _i; _i -= 2) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
l_src = (type *) ((char *) l_src + l_stride); \
} \
} \
else if (nelms == 3) { \
- for (_i = total_count; _i; _i -= 3) { \
+ for (_i = (int)total_count; _i; _i -= 3) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
*l_dest++ = l_src[2]; \
@@ -192,7 +198,7 @@
} \
} \
else if (nelms == 4) { \
- for (_i = total_count; _i; _i -= 4) { \
+ for (_i = (int)total_count; _i; _i -= 4) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
*l_dest++ = l_src[2]; \
@@ -201,7 +207,7 @@
} \
} \
else if (nelms == 5) { \
- for (_i = total_count; _i; _i -= 5) { \
+ for (_i = (int)total_count; _i; _i -= 5) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
*l_dest++ = l_src[2]; \
@@ -211,7 +217,7 @@
} \
} \
else if (nelms == 6) { \
- for (_i = total_count; _i; _i -= 6) { \
+ for (_i = (int)total_count; _i; _i -= 6) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
*l_dest++ = l_src[2]; \
@@ -222,7 +228,7 @@
} \
} \
else if (nelms == 7) { \
- for (_i = total_count; _i; _i -= 7) { \
+ for (_i = (int)total_count; _i; _i -= 7) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
*l_dest++ = l_src[2]; \
@@ -234,7 +240,7 @@
} \
} \
else if (nelms == 8) { \
- for (_i = total_count; _i; _i -= 8) { \
+ for (_i = (int)total_count; _i; _i -= 8) { \
*l_dest++ = l_src[0]; \
*l_dest++ = l_src[1]; \
*l_dest++ = l_src[2]; \
@@ -247,10 +253,10 @@
} \
} \
else { \
- _i = total_count; \
+ _i = (int)total_count; \
while (_i) { \
tmp_src = l_src; \
- j = nelms; \
+ j = (int)nelms; \
while (j >= 8) { \
*l_dest++ = tmp_src[0]; \
*l_dest++ = tmp_src[1]; \
@@ -282,21 +288,24 @@
unsigned long total_count = count * nelms; \
const DLOOP_Offset l_stride = stride; \
\
+ DLOOP_Assert(stride <= INT_MAX); \
+ DLOOP_Assert(total_count <= INT_MAX); \
+ DLOOP_Assert(nelms <= INT_MAX); \
if (nelms == 1) { \
- for (_i = total_count; _i; _i--) { \
+ for (_i = (int)total_count; _i; _i--) { \
*l_dest = *l_src++; \
l_dest += l_stride; \
} \
} \
else if (nelms == 2) { \
- for (_i = total_count; _i; _i -= 2) { \
+ for (_i = (int)total_count; _i; _i -= 2) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest += l_stride; \
} \
} \
else if (nelms == 3) { \
- for (_i = total_count; _i; _i -= 3) { \
+ for (_i = (int)total_count; _i; _i -= 3) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest[2] = *l_src++; \
@@ -304,7 +313,7 @@
} \
} \
else if (nelms == 4) { \
- for (_i = total_count; _i; _i -= 4) { \
+ for (_i = (int)total_count; _i; _i -= 4) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest[2] = *l_src++; \
@@ -313,7 +322,7 @@
} \
} \
else if (nelms == 5) { \
- for (_i = total_count; _i; _i -= 5) { \
+ for (_i = (int)total_count; _i; _i -= 5) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest[2] = *l_src++; \
@@ -323,7 +332,7 @@
} \
} \
else if (nelms == 6) { \
- for (_i = total_count; _i; _i -= 6) { \
+ for (_i = (int)total_count; _i; _i -= 6) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest[2] = *l_src++; \
@@ -334,7 +343,7 @@
} \
} \
else if (nelms == 7) { \
- for (_i = total_count; _i; _i -= 7) { \
+ for (_i = (int)total_count; _i; _i -= 7) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest[2] = *l_src++; \
@@ -346,7 +355,7 @@
} \
} \
else if (nelms == 8) { \
- for (_i = total_count; _i; _i -= 8) { \
+ for (_i = (int)total_count; _i; _i -= 8) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest[2] = *l_src++; \
@@ -359,10 +368,10 @@
} \
} \
else { \
- _i = total_count; \
+ _i = (int)total_count; \
while (_i) { \
tmp_dest = l_dest; \
- j = nelms; \
+ j = (int)nelms; \
while (j >= 8) { \
tmp_dest[0] = *l_src++; \
tmp_dest[1] = *l_src++; \
@@ -392,23 +401,26 @@
type * tmp_dest = l_dest; \
register int _i, j, k; \
unsigned long total_count = count * nelms; \
- const DLOOP_Offset l_stride = stride; \
+ const DLOOP_Offset l_stride = stride; \
\
+ DLOOP_Assert(stride <= INT_MAX); \
+ DLOOP_Assert(total_count <= INT_MAX); \
+ DLOOP_Assert(nelms <= INT_MAX); \
if (nelms == 1) { \
- for (_i = total_count; _i; _i--) { \
+ for (_i = (int)total_count; _i; _i--) { \
*l_dest = *l_src++; \
l_dest = (type *) ((char *) l_dest + l_stride); \
} \
} \
else if (nelms == 2) { \
- for (_i = total_count; _i; _i -= 2) { \
+ for (_i = (int)total_count; _i; _i -= 2) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest = (type *) ((char *) l_dest + l_stride); \
} \
} \
else if (nelms == 3) { \
- for (_i = total_count; _i; _i -= 3) { \
+ for (_i = (int)total_count; _i; _i -= 3) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest[2] = *l_src++; \
@@ -416,7 +428,7 @@
} \
} \
else if (nelms == 4) { \
- for (_i = total_count; _i; _i -= 4) { \
+ for (_i = (int)total_count; _i; _i -= 4) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest[2] = *l_src++; \
@@ -425,7 +437,7 @@
} \
} \
else if (nelms == 5) { \
- for (_i = total_count; _i; _i -= 5) { \
+ for (_i = (int)total_count; _i; _i -= 5) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest[2] = *l_src++; \
@@ -435,7 +447,7 @@
} \
} \
else if (nelms == 6) { \
- for (_i = total_count; _i; _i -= 6) { \
+ for (_i = (int)total_count; _i; _i -= 6) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest[2] = *l_src++; \
@@ -446,7 +458,7 @@
} \
} \
else if (nelms == 7) { \
- for (_i = total_count; _i; _i -= 7) { \
+ for (_i = (int)total_count; _i; _i -= 7) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest[2] = *l_src++; \
@@ -458,7 +470,7 @@
} \
} \
else if (nelms == 8) { \
- for (_i = total_count; _i; _i -= 8) { \
+ for (_i = (int)total_count; _i; _i -= 8) { \
l_dest[0] = *l_src++; \
l_dest[1] = *l_src++; \
l_dest[2] = *l_src++; \
@@ -471,10 +483,10 @@
} \
} \
else { \
- _i = total_count; \
+ _i = (int)total_count; \
while (_i) { \
tmp_dest = l_dest; \
- j = nelms; \
+ j = (int)nelms; \
while (j >= 8) { \
tmp_dest[0] = *l_src++; \
tmp_dest[1] = *l_src++; \
diff --git a/src/mpid/common/datatype/mpid_datatype.h b/src/mpid/common/datatype/mpid_datatype.h
index 22041b2..84ad551 100644
--- a/src/mpid/common/datatype/mpid_datatype.h
+++ b/src/mpid/common/datatype/mpid_datatype.h
@@ -358,7 +358,7 @@ typedef struct MPID_Datatype {
MPIU_OBJECT_HEADER; /* adds handle and ref_count fields */
/* basic parameters for datatype, accessible via MPI calls */
- int size;
+ MPI_Aint size;
MPI_Aint extent, ub, lb, true_ub, true_lb;
/* chars affecting subsequent datatype processing and creation */
diff --git a/src/mpid/common/datatype/mpid_type_indexed.c b/src/mpid/common/datatype/mpid_type_indexed.c
index 48d4642..0e3e259 100644
--- a/src/mpid/common/datatype/mpid_type_indexed.c
+++ b/src/mpid/common/datatype/mpid_type_indexed.c
@@ -41,7 +41,8 @@ int MPID_Type_indexed(int count,
int mpi_errno = MPI_SUCCESS;
int is_builtin, old_is_contig;
int i, contig_count;
- int el_sz, el_ct, old_ct, old_sz;
+ int el_ct, old_ct;
+ MPI_Aint el_sz, old_sz;
MPI_Aint old_lb, old_ub, old_extent, old_true_lb, old_true_ub;
MPI_Aint min_lb = 0, max_ub = 0, eff_disp;
MPI_Datatype el_type;
@@ -109,8 +110,8 @@ int MPID_Type_indexed(int count,
new_dtp->has_sticky_ub = 0;
new_dtp->has_sticky_lb = 0;
- new_dtp->alignsize = el_sz; /* ??? */
- new_dtp->element_size = (MPI_Aint) el_sz;
+ MPIU_Assign_trunc(new_dtp->alignsize, el_sz, int);
+ new_dtp->element_size = el_sz;
new_dtp->eltype = el_type;
new_dtp->max_contig_blocks = count;
diff --git a/src/mpid/common/sched/mpid_sched.c b/src/mpid/common/sched/mpid_sched.c
index a07e8e1..d44412a 100644
--- a/src/mpid/common/sched/mpid_sched.c
+++ b/src/mpid/common/sched/mpid_sched.c
@@ -122,7 +122,7 @@ fn_fail:
/* initiates the schedule entry "e" in the NBC described by "s", where
* "e" is at "idx" in "s". This means posting nonblocking sends/recvs,
* performing reductions, calling callbacks, etc. */
-static int MPIDU_Sched_start_entry(struct MPIDU_Sched *s, int idx, struct MPIDU_Sched_entry *e)
+static int MPIDU_Sched_start_entry(struct MPIDU_Sched *s, size_t idx, struct MPIDU_Sched_entry *e)
{
int mpi_errno = MPI_SUCCESS;
int context_offset;
@@ -237,7 +237,7 @@ fn_fail:
static int MPIDU_Sched_continue(struct MPIDU_Sched *s)
{
int mpi_errno = MPI_SUCCESS;
- int i;
+ size_t i;
for (i = s->idx; i < s->num_entries; ++i) {
struct MPIDU_Sched_entry *e = &s->entries[i];
@@ -680,12 +680,12 @@ int MPID_Sched_copy(const void *inbuf, int incount, MPI_Datatype intype,
/* some sanity checking up front */
#if defined(HAVE_ERROR_CHECKING) && !defined(NDEBUG)
{
- int intype_size, outtype_size;
+ MPI_Aint intype_size, outtype_size;
MPID_Datatype_get_size_macro(intype, intype_size);
MPID_Datatype_get_size_macro(outtype, outtype_size);
if (incount * intype_size > outcount * outtype_size) {
- MPIU_Error_printf("truncation: intype=%#x, intype_size=%d, incount=%d, outtype=%#x, outtype_size=%d outcount=%d\n",
- intype, intype_size, incount, outtype, outtype_size, outcount);
+ MPIU_Error_printf("truncation: intype=%#x, intype_size=%lld, incount=%d, outtype=%#x, outtype_size=%lld outcount=%d\n",
+ intype, (long long)intype_size, incount, outtype, (long long)outtype_size, outcount);
}
}
#endif
@@ -787,7 +787,7 @@ fn_fail:
static int MPIDU_Sched_progress_state(struct MPIDU_Sched_state *state, int *made_progress)
{
int mpi_errno = MPI_SUCCESS;
- int i;
+ size_t i;
struct MPIDU_Sched *s;
struct MPIDU_Sched *tmp;
diff --git a/src/util/dbg/dbg_printf.c b/src/util/dbg/dbg_printf.c
index 0810ca0..dc674ee 100644
--- a/src/util/dbg/dbg_printf.c
+++ b/src/util/dbg/dbg_printf.c
@@ -625,7 +625,7 @@ static int MPIU_DBG_ProcessArgs( int *argc_p, char ***argv_p )
if (*p == '=' && p[1] != 0) {
char *sOut;
p++;
- whichRank = strtol( p, &sOut, 10 );
+ whichRank = (int)strtol( p, &sOut, 10 );
if (p == sOut) {
MPIU_DBG_Usage( "-mpich-dbg-rank", 0 );
whichRank = -1;
@@ -678,7 +678,7 @@ static int MPIU_DBG_ProcessEnv( void )
s = getenv( "MPICH_DBG_RANK" );
if (s) {
char *sOut;
- whichRank = strtol( s, &sOut, 10 );
+ whichRank = (int)strtol( s, &sOut, 10 );
if (s == sOut) {
MPIU_DBG_Usage( "MPICH_DBG_RANK", 0 );
whichRank = -1;
@@ -1129,17 +1129,17 @@ static int MPIU_DBG_OpenFile(FILE **dbg_fp)
static int setDBGClass( const char *s )
{
int i;
- int slen = 0;
- int len = 0;
-
+ size_t slen = 0;
+ size_t len = 0;
+
if (s && *s) slen = strlen(s);
while (s && *s) {
for (i=0; MPIU_Classnames[i].LCName; i++) {
/* The LCLen and UCLen *should* be the same, but
just in case, we separate them */
- int LClen = strlen(MPIU_Classnames[i].LCName);
- int UClen = strlen(MPIU_Classnames[i].UCName);
+ size_t LClen = strlen(MPIU_Classnames[i].LCName);
+ size_t UClen = strlen(MPIU_Classnames[i].UCName);
int matchClass = 0;
/* Allow the upper case and lower case in all cases */
diff --git a/src/util/instrm/instr.c b/src/util/instrm/instr.c
index cf94ed4..340cc3a 100644
--- a/src/util/instrm/instr.c
+++ b/src/util/instrm/instr.c
@@ -116,7 +116,7 @@ int MPIU_INSTR_ToStr_Duration_Count( char *buf, size_t maxBuf, void *ptr )
snprintf( buf, maxBuf, "%-40s:\t%d\t%e", dPtr->desc, dPtr->count, ttime );
if (dPtr->nitems) {
char *p;
- int len = strlen(buf);
+ size_t len = strlen(buf);
int i;
/* Add each integer value, separated by a tab. */
maxBuf -= len;
diff --git a/src/util/wrappers/mpiu_shm_wrappers.h b/src/util/wrappers/mpiu_shm_wrappers.h
index 02774e4..3224faf 100644
--- a/src/util/wrappers/mpiu_shm_wrappers.h
+++ b/src/util/wrappers/mpiu_shm_wrappers.h
@@ -301,7 +301,7 @@ fn_fail:
#undef FCNAME
#define FCNAME MPIU_QUOTE(FUNCNAME)
static inline int MPIU_SHMW_Hnd_deserialize(
- MPIU_SHMW_Hnd_t hnd, const char *str_hnd, int str_hnd_len)
+ MPIU_SHMW_Hnd_t hnd, const char *str_hnd, size_t str_hnd_len)
{
int mpi_errno = MPI_SUCCESS;
int rc = -1;
@@ -615,7 +615,7 @@ static inline int MPIU_SHMW_Seg_create_attach_templ(
MPI_ERR_OTHER, "**lseek", "**lseek %s",
MPIU_OSW_Strerror(MPIU_OSW_Get_errno()));
- MPIU_OSW_RETRYON_INTR((rc == -1), (rc = write(lhnd, "", 1)));
+ MPIU_OSW_RETRYON_INTR((rc == -1), (rc = (int)write(lhnd, "", 1)));
MPIU_ERR_CHKANDJUMP((rc == -1), mpi_errno, MPI_ERR_OTHER,
"**write");
-----------------------------------------------------------------------
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-124-gf7b6f82
by noreply@mpich.org 03 May '13
by noreply@mpich.org 03 May '13
03 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via f7b6f82ac880ff0bd8f418e2c97c381947d3aa4a (commit)
via 10ecd01bc7f3c233ba16ee654e072fac114d4b63 (commit)
via 0d3c7a5cb0d28571008e0a415d392a88e7ce3388 (commit)
via da86da32172780e676261e1938b4e016772a6be3 (commit)
via 4cbc2d55371a92adf71e3e9253662f287e28f438 (commit)
via 305d986aadad4e71f59499da35f3cec4fd217595 (commit)
from 9fced770486b15aa39e40b54ab6b81c773938be1 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/f7b6f82ac880ff0bd8f418e2c97c38194…
commit f7b6f82ac880ff0bd8f418e2c97c381947d3aa4a
Merge: 9fced77 10ecd01
Author: Dave Goodell <goodell(a)mcs.anl.gov>
Date: Fri May 3 14:18:36 2013 -0500
Merge branch 'better-large-count' (early part)
This doesn't actually fix any large count issues, it just provides some
useful infrastructure for fixing them in the future.
http://git.mpich.org/mpich.git/commitdiff/10ecd01bc7f3c233ba16ee654e072fac1…
commit 10ecd01bc7f3c233ba16ee654e072fac114d4b63
Author: Dave Goodell <goodell(a)mcs.anl.gov>
Date: Mon Mar 18 15:51:17 2013 -0500
add `MPIU_Assign_trunc` macro
This macro performs assignment, checking that the source value can be
safely expressed in the destination type without truncation. The robust
version requires C11 `_Generic`, though a weaker fallback is present.
Reviewed-by: dinan
diff --git a/src/include/mpiutil.h b/src/include/mpiutil.h
index ffb5c19..0e0dfaa 100644
--- a/src/include/mpiutil.h
+++ b/src/include/mpiutil.h
@@ -180,6 +180,59 @@ int MPIR_Assert_fail_fmt(const char *cond, const char *file_name, int line_num,
("overflow detected: (%llx * %llx) > %s", (a_), (b_), #max_)); \
+/* Helper macros that give us a crude version of C++'s
+ * "std::numeric_limits<TYPE>" functionality. These rely on either C11
+ * "_Generic" functionality or some unfortunately complicated GCC builtins. */
+#if HAVE_C11__GENERIC
+#define expr_inttype_max(expr_) \
+ _Generic(expr_, \
+ signed char: SCHAR_MAX, \
+ signed short: SHRT_MAX, \
+ signed int: INT_MAX, \
+ signed long: LONG_MAX, \
+ signed long long: LLONG_MAX, \
+ unsigned char: UCHAR_MAX, \
+ unsigned short: USHRT_MAX, \
+ unsigned int: UINT_MAX, \
+ unsigned long: ULONG_MAX, \
+ unsigned long long: ULLONG_MAX)
+#define expr_inttype_min(expr_) \
+ _Generic(expr_, \
+ signed char: SCHAR_MIN, \
+ signed short: SHRT_MIN, \
+ signed int: INT_MIN, \
+ signed long: LONG_MIN, \
+ signed long long: LLONG_MIN, \
+ unsigned char: 0, \
+ unsigned short: 0, \
+ unsigned int: 0, \
+ unsigned long: 0, \
+ unsigned long long: 0)
+#endif
+
+/* Assigns (src_) to (dst_), checking that (src_) fits in (dst_) without
+ * truncation.
+ *
+ * When fiddling with this macro, please keep C's overly complicated integer
+ * promotion/truncation/conversion rules in mind. A discussion of these issues
+ * can be found in Chapter 5 of "Secure Coding in C and C++" by Robert Seacord.
+ */
+#if defined(expr_inttype_max) && defined(expr_inttype_min)
+# define MPIU_Assign_trunc(dst_,src_) \
+ do { \
+ MPIU_Assert((src_) <= expr_inttype_max(dst_)); \
+ MPIU_Assert((src_) >= expr_inttype_min(dst_)); \
+ dst_ = (src_); \
+ } while (0)
+#else
+# define MPIU_Assign_trunc(dst_,src_) \
+ do { \
+ dst_ = (src_); \
+ /* will catch some of the cases if the expr_inttype macros aren't available */ \
+ MPIU_Assert((dst_) == (src_)); \
+ } while (0)
+#endif
+
/*
* Ensure an MPI_Aint value fits into a signed int.
* Useful for detecting overflow when MPI_Aint is larger than an int.
http://git.mpich.org/mpich.git/commitdiff/0d3c7a5cb0d28571008e0a415d392a88e…
commit 0d3c7a5cb0d28571008e0a415d392a88e7ce3388
Author: Dave Goodell <goodell(a)mcs.anl.gov>
Date: Mon Mar 18 15:49:13 2013 -0500
add static type checking asserts
If C11 `_Generic` or some equivalent functionality is present in the
compiler, statically check the type of the expression given to the
`MPIU_Assert_has_type` macro.
Reviewed-by: dinan
diff --git a/src/include/mpiutil.h b/src/include/mpiutil.h
index 552a7e7..ffb5c19 100644
--- a/src/include/mpiutil.h
+++ b/src/include/mpiutil.h
@@ -231,6 +231,20 @@ int MPIR_Assert_fail_fmt(const char *cond, const char *file_name, int line_num,
#endif
/* -------------------------------------------------------------------------- */
+/* static type checking macros */
+
+/* implement using C11's "_Generic" functionality (optimal case) */
+#ifdef HAVE_C11__GENERIC
+# define MPIU_Assert_has_type(expr_,type_) \
+ MPIU_Static_assert(_Generic((expr_), type_: 1, default: 0), \
+ "expression '" #expr_ "' does not have type '" #type_ "'")
+#endif
+/* fallthrough to do nothing */
+#ifndef MPIU_Assert_has_type
+# define MPIU_Assert_has_type(expr_,type_) do {} while (0)
+#endif
+
+/* -------------------------------------------------------------------------- */
/*
* Basic utility macros
*/
http://git.mpich.org/mpich.git/commitdiff/da86da32172780e676261e1938b4e0167…
commit da86da32172780e676261e1938b4e016772a6be3
Author: Dave Goodell <goodell(a)mcs.anl.gov>
Date: Mon Mar 18 15:42:50 2013 -0500
detect C11 `_Generic` in some cases
Really just clang right now.
Reviewed-by: dinan
diff --git a/src/include/mpiutil.h b/src/include/mpiutil.h
index 760b0b9..552a7e7 100644
--- a/src/include/mpiutil.h
+++ b/src/include/mpiutil.h
@@ -17,6 +17,9 @@ int MPID_Abort( struct MPID_Comm *comm, int mpi_errno, int exit_code, const char
/* modern versions of clang support lots of C11 features */
#if defined(__has_extension)
+# if __has_extension(c_generic_selections)
+# define HAVE_C11__GENERIC 1
+# endif
# if __has_extension(c_static_assert)
# define HAVE_C11__STATIC_ASSERT 1
# endif
http://git.mpich.org/mpich.git/commitdiff/4cbc2d55371a92adf71e3e9253662f287…
commit 4cbc2d55371a92adf71e3e9253662f287e28f438
Author: Dave Goodell <goodell(a)mcs.anl.gov>
Date: Mon Mar 18 14:09:28 2013 -0500
add `MPIU_Static_assert`
Adds some very useful compile-time assertions. They fall back to
runtime assertions if the compiler does not support compile-time
assertions.
Reviewed-by: dinan
diff --git a/src/include/mpiutil.h b/src/include/mpiutil.h
index 3ca2706..760b0b9 100644
--- a/src/include/mpiutil.h
+++ b/src/include/mpiutil.h
@@ -12,6 +12,24 @@ struct MPID_Comm;
int MPID_Abort( struct MPID_Comm *comm, int mpi_errno, int exit_code, const char *error_msg );
#endif
+/* -------------------------------------------------------------------------- */
+/* detect compiler characteristics from predefined preprocesor tokens */
+
+/* modern versions of clang support lots of C11 features */
+#if defined(__has_extension)
+# if __has_extension(c_static_assert)
+# define HAVE_C11__STATIC_ASSERT 1
+# endif
+#endif
+
+/* GCC 4.6 added support for _Static_assert:
+ * http://gcc.gnu.org/gcc-4.6/changes.html */
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && !defined __cplusplus
+# define HAVE_C11__STATIC_ASSERT 1
+#endif
+
+/* -------------------------------------------------------------------------- */
+
/*
* MPIU_Sterror()
*
@@ -187,6 +205,29 @@ int MPIR_Assert_fail_fmt(const char *cond, const char *file_name, int line_num,
#define MPID_Ensure_Aint_fits_in_pointer(aint) \
MPIU_Assert((aint) == (MPI_Aint)(MPIR_Upint) MPI_AINT_CAST_TO_VOID_PTR(aint));
+/* -------------------------------------------------------------------------- */
+/* static assertions
+ *
+ * C11 adds static assertions. They can be faked in pre-C11 compilers through
+ * various tricks as long as you are willing to accept some ugly error messages
+ * when the assert trips. See
+ * http://www.pixelbeat.org/programming/gcc/static_assert.html
+ * for some implementation options.
+ *
+ * For now, we just use some simple preprocessor tests to use real static
+ * assertions when the compiler supports them (modern clang and gcc do).
+ * Eventually add configure logic to detect this.
+ */
+/* the case we usually want to hit */
+#ifdef HAVE_C11__STATIC_ASSERT
+# define MPIU_Static_assert(cond_,msg_) _Static_assert(cond_,msg_)
+#endif
+/* fallthrough to a run-time assertion */
+#ifndef MPIU_Static_assert
+# define MPIU_Static_assert(cond_,msg_) MPIU_Assert_fmt_msg((cond_), ("%s", (msg_)))
+#endif
+
+/* -------------------------------------------------------------------------- */
/*
* Basic utility macros
*/
http://git.mpich.org/mpich.git/commitdiff/305d986aadad4e71f59499da35f3cec4f…
commit 305d986aadad4e71f59499da35f3cec4fd217595
Author: Dave Goodell <goodell(a)mcs.anl.gov>
Date: Mon Mar 18 15:47:41 2013 -0500
add `MPIU_Prod_overflows_max`
Rename `MPIU_Assert_prod_overflow` to the more descriptive
`MPIU_Assert_prod_pos_overflow_safe` and refactor it to use the new
macro.
Reviewed-by: dinan
diff --git a/src/include/mpiutil.h b/src/include/mpiutil.h
index 828824d..3ca2706 100644
--- a/src/include/mpiutil.h
+++ b/src/include/mpiutil.h
@@ -145,16 +145,19 @@ int MPIR_Assert_fail_fmt(const char *cond, const char *file_name, int line_num,
# define MPIU_Assert_fmt_msg(cond_,fmt_arg_parens_)
#endif
+
+/* evaluates to TRUE if ((a_)*(b_)>(max_)), only detects overflow for positive
+ * a_ and _b. */
+#define MPIU_Prod_overflows_max(a_, b_, max_) \
+ ( (a_) > 0 && (b_) > 0 && ((a_) > ((max_) / (b_))) )
+
/* asserts that ((a_)*(b_)<=(max_)) holds in a way that is robust against
- * undefined overflow behavior and is suitable for both signed and unsigned math
- * (only suitable for positive values) */
-#define MPIU_Assert_prod_overflow(a_, b_, max_) \
- do { \
- if ((a_) >= 0 && (b_) >= 0) { \
- MPIU_Assert_fmt_msg((a_) <= ((max_) / (b_)), \
- ("overflow detected: %llx * %llx > %s", (a_), (b_), #max_)); \
- } \
- } while (0)
+ * undefined integer overflow behavior and is suitable for both signed and
+ * unsigned math (only suitable for positive values of (a_) and (b_)) */
+#define MPIU_Assert_prod_pos_overflow_safe(a_, b_, max_) \
+ MPIU_Assert_fmt_msg(!MPIU_Prod_overflows_max((a_),(b_),(max_)), \
+ ("overflow detected: (%llx * %llx) > %s", (a_), (b_), #max_)); \
+
/*
* Ensure an MPI_Aint value fits into a signed int.
-----------------------------------------------------------------------
Summary of changes:
src/include/mpiutil.h | 130 ++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 122 insertions(+), 8 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-118-g9fced77
by noreply@mpich.org 03 May '13
by noreply@mpich.org 03 May '13
03 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via 9fced770486b15aa39e40b54ab6b81c773938be1 (commit)
from fc23bcafaf3d7bace1aa4360d3c9ce3e7a06a609 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/9fced770486b15aa39e40b54ab6b81c77…
commit 9fced770486b15aa39e40b54ab6b81c773938be1
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Fri May 3 13:05:33 2013 -0500
Missed adding back a few files in [657da4c2].
No reviewer.
diff --git a/confdb/aclocal_am.m4 b/confdb/aclocal_am.m4
new file mode 100644
index 0000000..4d3b0de
--- /dev/null
+++ b/confdb/aclocal_am.m4
@@ -0,0 +1,6 @@
+dnl AM_IGNORE is an extension that tells (a patched) automake not to
+dnl include the specified AC_SUBST variable in the Makefile.in that
+dnl automake generates. We don't use AC_DEFUN, since aclocal will
+dnl then complain that AM_IGNORE is a duplicate (if you are using the
+dnl patched automake/aclocal).
+m4_ifdef([AM_IGNORE],[],[m4_define([AM_IGNORE],[])])
diff --git a/confdb/aclocal_atomic.m4 b/confdb/aclocal_atomic.m4
new file mode 100644
index 0000000..4e96cfb
--- /dev/null
+++ b/confdb/aclocal_atomic.m4
@@ -0,0 +1,227 @@
+dnl /*D PAC_C_MEMATOMIC - Try and determine how to implement memory-atomic
+dnl operations with the selected C compiler
+dnl
+dnl Synopsis:
+dnl PAC_C_MEMATOMIC
+dnl
+dnl Notes:
+dnl Defines names of the following form
+dnl + HAVE_GCC_ASM_AND_X86_{MFENCE,LFENCE,SFENCE} - gcc __asm__ will issue
+dnl mfence, lfence, or sfence
+dnl . HAVE___ASM_AND_X86_{MFENCE,LFENCE,SFENCE} - __asm _emit will issue
+dnl mfence, lfence, or sfence
+dnl . HAVE_ASM_AND_X86_{MFENCE,LFENCE,SFENCE} - asm("...") will issue
+dnl mfence, lfence, or sfence
+dnl . HAVE__INTERLOCKEDEXCHANGE - _InterlockedExchange intrinsic is available
+dnl (IA64)
+dnl . HAVE_GCC_ASM_SPARC_MEMBAR - gcc __asm__ will issue SPARC architecture
+dnl memory barrier instruction
+dnl . HAVE_SOLARIS_ASM_SPARC_MEMBAR - Solaris asm() will issue SPARC
+dnl architecture memory barrier instruction
+dnl . HAVE_GCC_ASM_SPARC_STBAR - gcc __asm__ will issue stbar
+dnl - HAVE_SOLARIS_ASM_SPARC_STBAR - Solaris __asm() will issue stbar
+dnl
+dnl D*/
+AC_DEFUN([PAC_C_MEMATOMIC],[
+AC_CACHE_CHECK([for x86 mfence instruction using __asm__],
+ pac_cv_have_gcc_asm_and_x86_mfence,[
+AC_TRY_RUN([
+int main(int argc, char **argv)
+{
+ __asm__ __volatile__ ( ".byte 0x0f, 0xae, 0xf0" ::: "memory" );
+ exit(0);
+}
+],
+pac_cv_have_gcc_asm_and_x86_mfence=yes,pac_cv_have_gcc_asm_and_x86_mfence=no)])
+
+if test "$pac_cv_have_gcc_asm_and_x86_mfence" = "yes" ; then
+ AC_DEFINE(HAVE_GCC_ASM_AND_X86_MFENCE, 1, [Define if using gcc on a x86 system with the mfence instruction])
+fi
+
+AC_CACHE_CHECK([for x86 sfence instruction using __asm__],
+ pac_cv_have_gcc_asm_and_x86_sfence,[
+AC_TRY_RUN([
+int main(int argc, char **argv)
+{
+ __asm__ __volatile__ ( ".byte 0x0f, 0xae, 0xf8" ::: "memory" );
+ exit(0);
+}
+],
+pac_cv_have_gcc_asm_and_x86_sfence=yes,pac_cv_have_gcc_asm_and_x86_sfence=no)])
+
+if test "$pac_cv_have_gcc_asm_and_x86_sfence" = "yes" ; then
+ AC_DEFINE(HAVE_GCC_ASM_AND_X86_SFENCE, 1, [Define if using gcc on a x86 system with the sfence instruction])
+fi
+
+AC_CACHE_CHECK([for x86 lfence instruction using __asm__],
+ pac_cv_have_gcc_asm_and_x86_lfence,[
+AC_TRY_RUN([
+int main(int argc, char **argv)
+{
+ __asm__ __volatile__ ( ".byte 0x0f, 0xae, 0xe8" ::: "memory" );
+ exit(0);
+}
+],
+pac_cv_have_gcc_asm_and_x86_lfence=yes,pac_cv_have_gcc_asm_and_x86_lfence=no)])
+
+if test "$pac_cv_have_gcc_asm_and_x86_lfence" = "yes" ; then
+ AC_DEFINE(HAVE_GCC_ASM_AND_X86_LFENCE, 1, [Define if using gcc on a x86 system with the lfence instruction])
+fi
+
+dnl Some compilers, like icc, may want __asm _emit
+AC_CACHE_CHECK([for x86 mfence instruction using __asm],
+ pac_cv_have___asm_and_x86_mfence,[
+AC_TRY_RUN([
+int main(int argc, char **argv)
+{
+ __asm _emit 0x0f __asm _emit 0xae __asm _emit 0xf0 ;
+ exit(0);
+}
+],
+pac_cv_have___asm_and_x86_mfence=yes,pac_cv_have___asm_and_x86_mfence=no)])
+
+if test "$pac_cv_have___asm_and_x86_mfence" = "yes" ; then
+ AC_DEFINE(HAVE___ASM_AND_X86_MFENCE, 1, [Define if using __asm on a x86 system with the mfence instruction])
+fi
+
+AC_CACHE_CHECK([for x86 sfence instruction using __asm],
+ pac_cv_have___asm_and_x86_sfence,[
+AC_TRY_RUN([
+int main(int argc, char **argv)
+{
+ __asm sfence ;
+ exit(0);
+}
+],
+pac_cv_have___asm_and_x86_sfence=yes,pac_cv_have___asm_and_x86_sfence=no)])
+
+if test "$pac_cv_have___asm_and_x86_sfence" = "yes" ; then
+ AC_DEFINE(HAVE___ASM_AND_X86_SFENCE, 1, [Define if using __asm on a x86 system with the sfence instruction])
+fi
+
+AC_CACHE_CHECK([for x86 lfence instruction using __asm],
+ pac_cv_have___asm_and_x86_lfence,[
+AC_TRY_RUN([
+int main(int argc, char **argv)
+{
+ __asm _emit 0x0f __asm _emit 0xae __asm _emit 0xe8 ;
+ exit(0);
+}
+],
+pac_cv_have___asm_and_x86_lfence=yes,pac_cv_have___asm_and_x86_lfence=no)])
+
+if test "$lac_cv_have___asm_and_x86_lfence" = "yes" ; then
+ AC_DEFINE(HAVE___ASM_AND_X86_LFENCE, 1, [Define if using __asm on a x86 system with the lfence instruction])
+fi
+
+dnl
+dnl Some compilers, such as pgcc, may require additional arguments.
+dnl pgcc may need -Masmkeyword flag. We may want to try this with and
+dnl without adding -Masmkeyword to CFLAGS
+
+AC_CACHE_CHECK([for x86 mfence instruction using asm()],
+ pac_cv_have_asm_and_x86_mfence,[
+AC_TRY_RUN([
+int main(int argc, char **argv)
+{
+ asm("_emit 0x0f __asm _emit 0xae __asm _emit 0xf0");
+ exit(0);
+}
+],
+pac_cv_have_asm_and_x86_mfence=yes,pac_cv_have_asm_and_x86_mfence=no)])
+
+if test "$pac_cv_have_asm_and_x86_mfence" = "yes" ; then
+ AC_DEFINE(HAVE_ASM_AND_X86_MFENCE, 1, [Define if using asm() on a x86 system with the mfence instruction])
+fi
+
+AC_CACHE_CHECK([for x86 sfence instruction using asm()],
+ pac_cv_have_asm_and_x86_sfence,[
+AC_TRY_RUN([
+int main(int argc, char **argv)
+{
+ asm("sfence");
+ exit(0);
+}
+],
+pac_cv_have_asm_and_x86_sfence=yes,pac_cv_have_asm_and_x86_sfence=no)])
+
+if test "$pac_cv_have_asm_and_x86_sfence" = "yes" ; then
+ AC_DEFINE(HAVE_ASM_AND_X86_SFENCE, 1, [Define if using asm() on a x86 system with the sfence instruction])
+fi
+
+AC_CACHE_CHECK([for x86 lfence instruction using asm()],
+ pac_cv_have_asm_and_x86_lfence,[
+AC_TRY_RUN([
+int main(int argc, char **argv)
+{
+ asm("_emit 0x0f __asm _emit 0xae __asm _emit 0xe8");
+ exit(0);
+}
+],
+pac_cv_have_asm_and_x86_lfence=yes,pac_cv_have_asm_and_x86_lfence=no)])
+
+if test "$pac_cv_have_asm_and_x86_lfence" = "yes" ; then
+ AC_DEFINE(HAVE_ASM_AND_X86_LFENCE, 1, [Define if using asm() on a x86 system with the lfence instruction])
+fi
+
+AC_CACHE_CHECK([for _InterlockedExchange intrinsic],
+ pac_cv_have__InterlockedExchange,[
+AC_TRY_RUN([
+int main(int argc, char **argv)
+{
+ unsigned long lock, *lock_ptr;
+ lock_ptr = &lock;
+ _InterlockedExchange(lock_ptr, 1);
+ exit(0);
+}
+],
+pac_cv_have__InterlockedExchange=yes,pac_cv_have__InterlockedExchange=no)])
+
+if test "$pac_cv_have__InterlockedExchange" = "yes" ; then
+ AC_DEFINE(HAVE__INTERLOCKEDEXCHANGE, 1, [Define if _InterlockedExchange intrinsic is available])
+fi
+
+AC_CACHE_CHECK([for SPARC membar instruction with gcc],
+ pac_cv_gcc_sparc_membar,[
+AC_TRY_RUN([
+int main(int argc, char **argv){
+ __asm__ __volatile__ ( "membar #StoreLoad | #StoreStore" : : : "memory" );
+ exit(0);
+}],pac_cv_gcc_sparc_membar=yes,pac_cv_gcc_sparc_membar=no)])
+if test "$pac_cv_gcc_sparc_membar" = yes ; then
+ AC_DEFINE(HAVE_GCC_ASM_SPARC_MEMBAR,1,[Define if gcc asm membar supported])
+fi
+
+AC_CACHE_CHECK([for SPARC membar instruction with Solaris C],
+ pac_cv_solaris_sparc_membar,[
+AC_TRY_RUN([
+int main(int argc, char **argv){
+ __asm ( "membar #StoreLoad | #StoreStore");
+ exit(0);
+}],pac_cv_solaris_sparc_membar=yes,pac_cv_solaris_sparc_membar=no)])
+if test "$pac_cv_solaris_sparc_membar" = yes ; then
+ AC_DEFINE(HAVE_SOLARIS_ASM_SPARC_MEMBAR,1,[Define if solaris asm membar supported])
+fi
+
+AC_CACHE_CHECK([for SPARC stbar instruction with gcc],
+ pac_cv_gcc_sparc_stbar,[
+AC_TRY_RUN([
+int main(int argc, char **argv){
+ __asm__ __volatile__ ( "stbar" : : : "memory" );
+ exit(0);
+}],pac_cv_gcc_sparc_stbar=yes,pac_cv_gcc_sparc_stbar=no)])
+if test "$pac_cv_gcc_sparc_stbar" = yes ; then
+ AC_DEFINE(HAVE_GCC_ASM_SPARC_STBAR,1,[Define if gcc asm stbar supported])
+fi
+
+AC_CACHE_CHECK([for SPARC stbar instruction with Solaris C],
+ pac_cv_solaris_sparc_stbar,[
+AC_TRY_RUN([
+int main(int argc, char **argv){
+ __asm ( "stbar" );
+ exit(0);
+}],pac_cv_solaris_sparc_stbar=yes,pac_cv_solaris_sparc_stbar=no)])
+if test "$pac_cv_solaris_sparc_stbar" = yes ; then
+ AC_DEFINE(HAVE_SOLARIS_ASM_SPARC_STBAR,1,[Define if solaris asm stbar supported])
+fi
+])
\ No newline at end of file
diff --git a/confdb/aclocal_f77old.m4 b/confdb/aclocal_f77old.m4
new file mode 100644
index 0000000..5d6e2d9
--- /dev/null
+++ b/confdb/aclocal_f77old.m4
@@ -0,0 +1,389 @@
+dnl/*D
+dnl PAC_PROG_F77_CMDARGS - Determine how to access the command line from
+dnl Fortran 77
+dnl
+dnl Output Effects:
+dnl The following variables are set:
+dnl.vb
+dnl F77_GETARG - Statement to get an argument i into string s
+dnl F77_IARGC - Routine to return the number of arguments
+dnl FXX_MODULE - Module command when using Fortran 90 compiler
+dnl F77_GETARGDECL - Declaration of routine used for F77_GETARG
+dnl F77_GETARG_FFLAGS - Flags needed when compiling/linking
+dnl F77_GETARG_LDFLAGS - Flags needed when linking
+dnl.ve
+dnl If 'F77_GETARG' has a value, then that value and the values for these
+dnl other symbols will be used instead. If no approach is found, all of these
+dnl variables will have empty values.
+dnl If no other approach works and a file 'f77argdef' is in the directory,
+dnl that file will be sourced for the values of the above four variables.
+dnl
+dnl In most cases, you should add F77_GETARG_FFLAGS to the FFLAGS variable
+dnl and F77_GETARG_LDFLAGS to the LDFLAGS variable, to ensure that tests are
+dnl performed on the compiler version that will be used.
+dnl
+dnl 'AC_SUBST' is called for all six variables.
+dnl
+dnl One complication is that on systems with multiple Fortran compilers,
+dnl some libraries used by one Fortran compiler may have been (mis)placed
+dnl in a common location. We have had trouble with libg2c in particular.
+dnl To work around this, we test whether iargc etc. work first. This
+dnl will catch most systems and will speed up the tests.
+dnl
+dnl Next, the libraries are only added if they are needed to complete a
+dnl link; they aren''t added just because they exist.
+dnl
+dnl f77argdef
+dnl D*/
+dnl
+dnl Random notes
+dnl You can export the command line arguments from C to the g77 compiler
+dnl using
+dnl extern char **__libc_argv;
+dnl extern int __libc_argc;
+dnl f_setarg( __libc_argc, __libc_argv );
+dnl
+AC_DEFUN([PAC_PROG_F77_CMDARGS],[
+found_cached="yes"
+AC_MSG_CHECKING([for routines to access the command line from Fortran 77])
+AC_CACHE_VAL(pac_cv_prog_f77_cmdarg,
+[
+ AC_MSG_RESULT([searching...])
+ found_cached="no"
+ # First, we perform a quick check. Does iargc and getarg work?
+ fxx_module="${FXX_MODULE:-}"
+ f77_getargdecl="${F77_GETARGDECL:-external getarg}"
+ f77_getarg="${F77_GETARG:-call GETARG(i,s)}"
+ f77_iargc="${F77_IARGC:-IARGC()}"
+ #
+ # Grumble. The Absoft Fortran compiler computes i - i as 0 and then
+ # 1.0 / 0 at compile time, even though the code may never be executed.
+ # What we need is a way to generate an error, so the second usage of i
+ # was replaced with f77_iargc.
+ cat > conftest.f <<EOF
+ program main
+$fxx_module
+ integer i, j
+ character*20 s
+ $f77_getargdecl
+ i = 0
+ $f77_getarg
+ i=$f77_iargc
+ if (i .gt. 1) then
+ j = i - $f77_iargc
+ j = 1.0 / j
+ endif
+ end
+EOF
+ found_answer="no"
+ if test -z "$ac_fcompilelink" ; then
+ ac_fcompilelink="${F77-f77} -o conftest $FFLAGS $flags conftest.f $LDFLAGS $LIBS 1>&AC_FD_CC"
+ fi
+ AC_MSG_CHECKING([whether ${F77-f77} $flags $libs works with GETARG and IARGC])
+ if AC_TRY_EVAL(ac_fcompilelink) && test -x conftest ; then
+ # Check that cross != yes so that this works with autoconf 2.52
+ # Check that cross_compiling != yes so that this works with
+ # autoconf 2.6x for some (but almost certainly not all)x
+ # Question: why do we test that this runs? It looks like we
+ # needed this for some old Fortran compilers that produced
+ # executable code that then did not run.
+ if test "$ac_cv_prog_f77_cross" != "yes" -a \
+ "$cross_compiling" != "yes" ; then
+ if ./conftest >/dev/null 2>&1 ; then
+ found_answer="yes"
+ FXX_MODULE="$fxx_module"
+ F77_GETARGDECL="$f77_getargdecl"
+ F77_GETARG="$f77_getarg"
+ F77_IARGC="$f77_iargc"
+ AC_MSG_RESULT(yes)
+ fi
+ fi
+ fi
+ if test $found_answer = "no" ; then
+ AC_MSG_RESULT(no)
+ # Grumph. Here are a bunch of different approaches
+ # We have several axes the check:
+ # Library to link with (none, -lU77 (HPUX), -lg2c (LINUX f77))
+ # PEPCF90 (Intel ifc)
+ # The first line is a dummy
+ # (we experimented with using a <space>, but this caused other
+ # problems because we need <space> in the IFS)
+ trial_LIBS="0 -lU77 -lPEPCF90"
+ if test "$NOG2C" != "1" ; then
+ trial_LIBS="$trial_LIBS -lg2c"
+ fi
+ # Discard libs that are not availble:
+ save_IFS="$IFS"
+ # Make sure that IFS includes a space, or the tests that run programs
+ # may fail
+ IFS=" ""
+"
+ save_trial_LIBS="$trial_LIBS"
+ trial_LIBS=""
+ cat > conftest.f <<EOF
+ program main
+ end
+EOF
+ ac_fcompilelink_test='${F77-f77} -o conftest $FFLAGS conftest.f $LDFLAGS $libs $LIBS 1>&AC_FD_CC'
+ for libs in $save_trial_LIBS ; do
+ if test "$libs" = "0" ; then
+ lib_ok="yes"
+ else
+ AC_MSG_CHECKING([whether Fortran 77 links with $libs])
+ if AC_TRY_EVAL(ac_fcompilelink_test) && test -x conftest ; then
+ AC_MSG_RESULT([yes])
+ lib_ok="yes"
+ else
+ AC_MSG_RESULT([no])
+ lib_ok="no"
+ fi
+ fi
+ if test "$lib_ok" = "yes" ; then
+ trial_LIBS="$trial_LIBS
+$libs"
+ fi
+ done
+
+ # Options to use when compiling and linking
+ # +U77 is needed by HP Fortran to access getarg etc.
+ # The -N109 was used for getarg before we realized that GETARG
+ # was necessary with the (non standard conforming) Absoft compiler
+ # (Fortran is monocase; Absoft uses mixedcase by default)
+ # The -f is used by Absoft and is the compiler switch that folds
+ # symbolic names to lower case. Without this option, the compiler
+ # considers upper- and lower-case letters to be unique.
+ # The -YEXT_NAMES=LCS will cause external names to be output as lower
+ # case letter for Absoft F90 compilers (default is upper case)
+ # The first line is "<space><newline>, the space is important
+ # To make the Absoft f77 and f90 work together, we need to prefer the
+ # upper case versions of the arguments. They also require libU77.
+ # -YCFRL=1 causes Absoft f90 to work with g77 and similar (f2c-based)
+ # Fortran compilers
+ #
+ # Problem: The Intel efc compiler hangs when presented with -N109 .
+ # The only real fix for this is to detect this compiler and exclude
+ # the test. We may want to reorganize these tests so that if we
+ # can compile code without special options, we never look for them.
+ #
+ using_intel_efc="no"
+ pac_test_msg=`$F77 -V 2>&1 | grep 'Intel(R) Fortran Itanium'`
+ if test "$pac_test_msg" != "" ; then
+ using_intel_efc="yes"
+ fi
+ if test "$using_intel_efc" = "yes" ; then
+ trial_FLAGS="000"
+ else
+ trial_FLAGS="000
+-N109
+-f
+-YEXT_NAMES=UCS
+-YEXT_NAMES=LCS
+-YCFRL=1
++U77"
+ fi
+ # Discard options that are not available:
+ # (IFS already saved above)
+ IFS=" ""
+"
+ save_trial_FLAGS="$trial_FLAGS"
+ trial_FLAGS=""
+ for flag in $save_trial_FLAGS ; do
+ if test "$flag" = " " -o "$flag" = "000" ; then
+ opt_ok="yes"
+ else
+ PAC_F77_CHECK_COMPILER_OPTION($flag,opt_ok=yes,opt_ok=no)
+ fi
+ if test "$opt_ok" = "yes" ; then
+ if test "$flag" = " " -o "$flag" = "000" ; then
+ fflag=""
+ else
+ fflag="$flag"
+ fi
+ # discard options that don't allow mixed-case name matching
+ cat > conftest.f <<EOF
+ program main
+ call aB()
+ end
+ subroutine Ab()
+ end
+EOF
+ if test -n "$fflag" ; then flagval="with $fflag" ; else flagval="" ; fi
+ AC_MSG_CHECKING([whether Fortran 77 routine names are case-insensitive $flagval])
+ dnl we can use double quotes here because all is already
+ dnl evaluated
+ ac_fcompilelink_test="${F77-f77} -o conftest $fflag $FFLAGS conftest.f $LDFLAGS $LIBS 1>&AC_FD_CC"
+ if AC_TRY_EVAL(ac_fcompilelink_test) && test -x conftest ; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ opt_ok="no"
+ fi
+ fi
+ if test "$opt_ok" = "yes" ; then
+ trial_FLAGS="$trial_FLAGS
+$flag"
+ fi
+ done
+ IFS="$save_IFS"
+ # Name of routines. Since these are in groups, we use a case statement
+ # and loop until the end (accomplished by reaching the end of the
+ # case statement
+ # For one version of Nag F90, the names are
+ # call f90_unix_MP_getarg(i,s) and f90_unix_MP_iargc().
+ trial=0
+ while test -z "$pac_cv_prog_f77_cmdarg" ; do
+ case $trial in
+ 0) # User-specified values, if any
+ if test -z "$F77_GETARG" -o -z "$F77_IARGC" ; then
+ trial=`expr $trial + 1`
+ continue
+ fi
+ MSG="Using environment values of F77_GETARG etc."
+ ;;
+ 1) # Standard practice, uppercase (some compilers are case-sensitive)
+ FXX_MODULE=""
+ F77_GETARGDECL="external GETARG"
+ F77_GETARG="call GETARG(i,s)"
+ F77_IARGC="IARGC()"
+ MSG="GETARG and IARGC"
+ ;;
+ 2) # Standard practice, lowercase
+ FXX_MODULE=""
+ F77_GETARGDECL="external getarg"
+ F77_GETARG="call getarg(i,s)"
+ F77_IARGC="iargc()"
+ MSG="getarg and iargc"
+ ;;
+ 3) # Posix alternative
+ FXX_MODULE=""
+ F77_GETARGDECL="external pxfgetarg"
+ F77_GETARG="call pxfgetarg(i,s,l,ier)"
+ F77_IARGC="ipxfargc()"
+ MSG="pxfgetarg and ipxfargc"
+ ;;
+ 4) # Nag f90_unix_env module
+ FXX_MODULE=" use f90_unix_env"
+ F77_GETARGDECL=""
+ F77_GETARG="call getarg(i,s)"
+ F77_IARGC="iargc()"
+ MSG="f90_unix_env module"
+ ;;
+ 5) # Nag f90_unix module
+ FXX_MODULE=" use f90_unix"
+ F77_GETARGDECL=""
+ F77_GETARG="call getarg(i,s)"
+ F77_IARGC="iargc()"
+ MSG="f90_unix module"
+ ;;
+ 6) # user spec in a file
+ if test -s f77argdef ; then
+ . ./f77argdef
+ MSG="Using definitions in the file f77argdef"
+ else
+ trial=`expr $trial + 1`
+ continue
+ fi
+ ;;
+ 7) # gfortran won't find getarg if it is marked as external
+ FXX_MODULE=""
+ F77_GETARGDECL="intrinsic GETARG"
+ F77_GETARG="call GETARG(i,s)"
+ F77_IARGC="IARGC()"
+ MSG="intrinsic GETARG and IARGC"
+ ;;
+ *) # exit from while loop
+ FXX_MODULE=""
+ F77_GETARGDECL=""
+ F77_GETARG=""
+ F77_IARGC=""
+ break
+ ;;
+ esac
+ # Create the program. Make sure that we can run it.
+ # Force a divide-by-zero if there is a problem (but only at runtime!
+ # (the Absoft compiler does divide-by-zero at compile time)
+ cat > conftest.f <<EOF
+ program main
+$FXX_MODULE
+ integer i, j
+ character*20 s
+ $F77_GETARGDECL
+ i = 0
+ $F77_GETARG
+ i=$F77_IARGC
+ if (i .gt. 1) then
+ j = i - $F77_IARGC
+ j = 1.0 / j
+ endif
+ end
+EOF
+ #
+ # Now, try to find some way to compile and link that program, looping
+ # over the possibilities of options and libraries
+ save_IFS="$IFS"
+ IFS=" ""
+"
+ for libs in $trial_LIBS ; do
+ if test -n "$pac_cv_prog_f77_cmdarg" ; then break ; fi
+ if test "$libs" = " " -o "$libs" = "0" ; then libs="" ; fi
+ for flags in $trial_FLAGS ; do
+ if test "$flags" = " " -o "$flags" = "000"; then flags="" ; fi
+ AC_MSG_CHECKING([whether ${F77-f77} $flags $libs works with $MSG])
+ IFS="$save_IFS"
+ dnl We need this here because we've fiddled with IFS
+ ac_fcompilelink_test="${F77-f77} -o conftest $FFLAGS $flags conftest.f $LDFLAGS $libs $LIBS 1>&AC_FD_CC"
+ found_answer="no"
+ if AC_TRY_EVAL(ac_fcompilelink_test) && test -x conftest ; then
+ if test "$ac_cv_prog_f77_cross" != "yes" -a \
+ "$cross_compiling" != "yes" ; then
+ if ./conftest >/dev/null 2>&1 ; then
+ found_answer="yes"
+ fi
+ else
+ found_answer="yes"
+ fi
+ fi
+ IFS=" ""
+"
+ if test "$found_answer" = "yes" ; then
+ AC_MSG_RESULT([yes])
+ pac_cv_prog_f77_cmdarg="$MSG"
+ pac_cv_prog_f77_cmdarg_fflags="$flags"
+ pac_cv_prog_f77_cmdarg_ldflags="$libs"
+ break
+ else
+ AC_MSG_RESULT([no])
+ echo "configure: failed program was:" >&AC_FD_CC
+ cat conftest.f >&AC_FD_CC
+ fi
+ done
+ done
+ IFS="$save_IFS"
+ rm -f conftest.*
+ trial=`expr $trial + 1`
+ done
+fi
+pac_cv_F77_GETARGDECL="$F77_GETARGDECL"
+pac_cv_F77_IARGC="$F77_IARGC"
+pac_cv_F77_GETARG="$F77_GETARG"
+pac_cv_FXX_MODULE="$FXX_MODULE"
+])
+if test "$found_cached" = "yes" ; then
+ AC_MSG_RESULT([$pac_cv_prog_f77_cmdarg])
+elif test -z "$pac_cv_F77_IARGC" ; then
+ AC_MSG_WARN([Could not find a way to access the command line from Fortran 77])
+fi
+# Set the variable values based on pac_cv_prog_xxx
+F77_GETARGDECL="$pac_cv_F77_GETARGDECL"
+F77_IARGC="$pac_cv_F77_IARGC"
+F77_GETARG="$pac_cv_F77_GETARG"
+FXX_MODULE="$pac_cv_FXX_MODULE"
+F77_GETARG_FFLAGS="$pac_cv_prog_f77_cmdarg_fflags"
+F77_GETARG_LDFLAGS="$pac_cv_prog_f77_cmdarg_ldflags"
+AC_SUBST(F77_GETARGDECL)
+AC_SUBST(F77_IARGC)
+AC_SUBST(F77_GETARG)
+AC_SUBST(FXX_MODULE)
+AC_SUBST(F77_GETARG_FFLAGS)
+AC_SUBST(F77_GETARG_LDFLAGS)
+])
-----------------------------------------------------------------------
Summary of changes:
confdb/aclocal_am.m4 | 6 +
confdb/aclocal_atomic.m4 | 227 +++++++++++++++++++++++++++
confdb/aclocal_f77old.m4 | 389 ++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 622 insertions(+), 0 deletions(-)
create mode 100644 confdb/aclocal_am.m4
create mode 100644 confdb/aclocal_atomic.m4
create mode 100644 confdb/aclocal_f77old.m4
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-117-gfc23bca
by noreply@mpich.org 03 May '13
by noreply@mpich.org 03 May '13
03 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via fc23bcafaf3d7bace1aa4360d3c9ce3e7a06a609 (commit)
from 976d7b9b5519c08462cfa6a7c2a7bb38303afe5f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/fc23bcafaf3d7bace1aa4360d3c9ce3e7…
commit fc23bcafaf3d7bace1aa4360d3c9ce3e7a06a609
Author: William Gropp <wgropp(a)illinois.edu>
Date: Fri May 3 09:21:47 2013 -0400
Suppress warnings about alignment (code already ensures correctness)
diff --git a/src/binding/f77/buildiface b/src/binding/f77/buildiface
index 5f30c6d..dd617e2 100755
--- a/src/binding/f77/buildiface
+++ b/src/binding/f77/buildiface
@@ -2563,7 +2563,7 @@ sub status_out_ftoc {
if ((((MPI_Aint)v$count) & MPIR_COUNT_ALIGNMENT) == 0)
l$count = (MPI_Status*)(void *)v$count;
else
- l$count->MPI_ERROR = ((MPI_Status*)v$count)->MPI_ERROR;
+ l$count->MPI_ERROR = ((MPI_Status*)(void*)v$count)->MPI_ERROR;
}\n";
}
}
@@ -2696,7 +2696,7 @@ sub status_array_out_ftoc {
int li;
l$count = (MPI_Status*)$malloc($Array_size * sizeof(MPI_Status));
for (li=0; li<$Array_size; li++)
- l$count\[li].MPI_ERROR = ((MPI_Status*)v$count)[li].MPI_ERROR;
+ l$count\[li].MPI_ERROR = ((MPI_Status*)(void*)v$count)[li].MPI_ERROR;
}\n";
}
elsif ($fixStatusAlignment) {
@@ -2709,7 +2709,7 @@ sub status_array_out_ftoc {
lalloc$count = 1;
l$count = (MPI_Status*)$malloc($Array_size * sizeof(MPI_Status));
for (li=0; li<$Array_size; li++)
- l$count\[li].MPI_ERROR = ((MPI_Status*)v$count)[li].MPI_ERROR;
+ l$count\[li].MPI_ERROR = ((MPI_Status*)(void*)v$count)[li].MPI_ERROR;
}
}\n";
}
-----------------------------------------------------------------------
Summary of changes:
src/binding/f77/buildiface | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-116-g976d7b9
by noreply@mpich.org 02 May '13
by noreply@mpich.org 02 May '13
02 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via 976d7b9b5519c08462cfa6a7c2a7bb38303afe5f (commit)
via 657da4c2d50ba84ef6a2fbf68f782ed1be307a1a (commit)
from 7dc192b8fbd33cffef12432d0137833ccd597771 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/976d7b9b5519c08462cfa6a7c2a7bb383…
commit 976d7b9b5519c08462cfa6a7c2a7bb38303afe5f
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Thu May 2 22:07:07 2013 -0500
Revert accidental commit [7dc192b8]
diff --git a/src/pm/hydra/include/hydra.h b/src/pm/hydra/include/hydra.h
index 7837ca3..6cdbfa9 100644
--- a/src/pm/hydra/include/hydra.h
+++ b/src/pm/hydra/include/hydra.h
@@ -163,44 +163,6 @@ extern char **environ;
#define HYDRA_NAMESERVER_DEFAULT_PORT 6392
-struct HYD_string_stash {
- char **strlist;
- int max_count;
- int cur_count;
-};
-
-#define HYD_STRING_STASH_INIT(stash) \
- do { \
- (stash).strlist = NULL; \
- (stash).max_count = 0; \
- (stash).cur_count = 0; \
- } while (0)
-
-#define HYD_STRING_STASH(stash, str, status) \
- do { \
- if ((stash).cur_count >= (stash).max_count - 1) { \
- HYDU_REALLOC((stash).strlist, char **, (stash).max_count + HYD_NUM_TMP_STRINGS, \
- (status)); \
- (stash).max_count += HYD_NUM_TMP_STRINGS; \
- } \
- (stash).strlist[(stash).cur_count++] = (str); \
- (stash).strlist[(stash).cur_count] = NULL; \
- } while (0)
-
-#define HYD_STRING_SPIT(stash, str, status) \
- do { \
- if ((stash).cur_count == 0) { \
- (str) = HYDU_strdup(""); \
- } \
- else { \
- (status) = HYDU_str_alloc_and_join((stash).strlist, &(str)); \
- HYDU_ERR_POP((status), "unable to join strings\n"); \
- HYDU_free_strlist((stash).strlist); \
- HYDU_FREE((stash).strlist); \
- HYD_STRING_STASH_INIT((stash)); \
- } \
- } while (0)
-
enum HYD_bool {
HYD_FALSE = 0,
HYD_TRUE = 1
@@ -646,6 +608,19 @@ HYD_status HYDU_sock_cloexec(int fd);
HYDU_free((void *) p); \
}
+#define HYDU_STRLIST_CONSOLIDATE(strlist, i, status) \
+ { \
+ char *out; \
+ if ((i) >= (HYD_NUM_TMP_STRINGS / 2)) { \
+ (strlist)[(i)] = NULL; \
+ (status) = HYDU_str_alloc_and_join((strlist), &out); \
+ HYDU_ERR_POP((status), "unable to join strings\n"); \
+ HYDU_free_strlist((strlist)); \
+ strlist[0] = out; \
+ (i) = 1; \
+ } \
+ }
+
HYD_status HYDU_list_append_strlist(char **exec, char **client_arg);
HYD_status HYDU_print_strlist(char **args);
void HYDU_free_strlist(char **args);
diff --git a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
index 9ec7b30..3fb1992 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
@@ -183,10 +183,10 @@ static HYD_status fn_init(int fd, char *args[])
static HYD_status fn_initack(int fd, char *args[])
{
int id, i;
- char *val, *cmd;
+ char *val;
struct HYD_pmcd_token *tokens;
int token_count;
- struct HYD_string_stash stash;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -209,19 +209,22 @@ static HYD_status fn_initack(int fd, char *args[])
}
HYDU_ASSERT(i < HYD_pmcd_pmip.local.proxy_process_count, status);
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=initack\ncmd=set size="), status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_process_count),
- status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=initack\ncmd=set size=");
+ tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_process_count);
- HYD_STRING_STASH(stash, HYDU_strdup("\ncmd=set rank="), status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(id), status);
+ /* FIXME: allow for multiple ranks per PMI ID */
+ tmp[i++] = HYDU_strdup("\ncmd=set rank=");
+ tmp[i++] = HYDU_int_to_str(id);
- HYD_STRING_STASH(stash, HYDU_strdup("\ncmd=set debug="), status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(HYD_pmcd_pmip.user_global.debug), status);
- HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
+ tmp[i++] = HYDU_strdup("\ncmd=set debug=");
+ tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.user_global.debug);
+ tmp[i++] = HYDU_strdup("\n");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "error while joining strings\n");
+ HYDU_free_strlist(tmp);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -238,22 +241,25 @@ static HYD_status fn_initack(int fd, char *args[])
static HYD_status fn_get_maxes(int fd, char *args[])
{
- struct HYD_string_stash stash;
- char *cmd;
+ int i;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=maxes kvsname_max="), status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(PMI_MAXKVSLEN), status);
- HYD_STRING_STASH(stash, HYDU_strdup(" keylen_max="), status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(PMI_MAXKEYLEN), status);
- HYD_STRING_STASH(stash, HYDU_strdup(" vallen_max="), status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(PMI_MAXVALLEN), status);
- HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
-
- HYD_STRING_SPIT(stash, cmd, status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=maxes kvsname_max=");
+ tmp[i++] = HYDU_int_to_str(PMI_MAXKVSLEN);
+ tmp[i++] = HYDU_strdup(" keylen_max=");
+ tmp[i++] = HYDU_int_to_str(PMI_MAXKEYLEN);
+ tmp[i++] = HYDU_strdup(" vallen_max=");
+ tmp[i++] = HYDU_int_to_str(PMI_MAXVALLEN);
+ tmp[i++] = HYDU_strdup("\n");
+ tmp[i++] = NULL;
+
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -271,8 +277,7 @@ static HYD_status fn_get_appnum(int fd, char *args[])
{
int i, idx;
struct HYD_exec *exec;
- struct HYD_string_stash stash;
- char *cmd;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -291,12 +296,15 @@ static HYD_status fn_get_appnum(int fd, char *args[])
break;
}
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=appnum appnum="), status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(exec->appnum), status);
- HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=appnum appnum=");
+ tmp[i++] = HYDU_int_to_str(exec->appnum);
+ tmp[i++] = HYDU_strdup("\n");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -312,18 +320,21 @@ static HYD_status fn_get_appnum(int fd, char *args[])
static HYD_status fn_get_my_kvsname(int fd, char *args[])
{
- struct HYD_string_stash stash;
- char *cmd;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ int i;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=my_kvsname kvsname="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname), status);
- HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=my_kvsname kvsname=");
+ tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname);
+ tmp[i++] = HYDU_strdup("\n");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -339,25 +350,26 @@ static HYD_status fn_get_my_kvsname(int fd, char *args[])
static HYD_status fn_get_usize(int fd, char *args[])
{
- struct HYD_string_stash stash;
- char *cmd;
+ int i;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=universe_size size="), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=universe_size size=");
if (HYD_pmcd_pmip.user_global.usize == HYD_USIZE_SYSTEM)
- HYD_STRING_STASH(stash,
- HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_core_map.global_count),
- status);
+ tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_core_map.global_count);
else if (HYD_pmcd_pmip.user_global.usize == HYD_USIZE_INFINITE)
- HYD_STRING_STASH(stash, HYDU_int_to_str(-1), status);
+ tmp[i++] = HYDU_int_to_str(-1);
else
- HYD_STRING_STASH(stash, HYDU_int_to_str(HYD_pmcd_pmip.user_global.usize), status);
- HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
+ tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.user_global.usize);
+ tmp[i++] = HYDU_strdup("\n");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -373,8 +385,7 @@ static HYD_status fn_get_usize(int fd, char *args[])
static HYD_status fn_get(int fd, char *args[])
{
- struct HYD_string_stash stash;
- char *cmd, *key, *val;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *key, *val;
struct HYD_pmcd_token *tokens;
int token_count, i;
HYD_status status = HYD_SUCCESS;
@@ -389,13 +400,15 @@ static HYD_status fn_get(int fd, char *args[])
"unable to find token: key\n");
if (!strcmp(key, "PMI_process_mapping")) {
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=get_result rc=0 msg=success value="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.system_global.pmi_process_mapping),
- status);
- HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=get_result rc=0 msg=success value=");
+ tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.system_global.pmi_process_mapping);
+ tmp[i++] = HYDU_strdup("\n");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -410,20 +423,23 @@ static HYD_status fn_get(int fd, char *args[])
}
}
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=get_result rc="), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=get_result rc=");
if (val) {
- HYD_STRING_STASH(stash, HYDU_strdup("0 msg=success value="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(val), status);
+ tmp[i++] = HYDU_strdup("0 msg=success value=");
+ tmp[i++] = HYDU_strdup(val);
}
else {
- HYD_STRING_STASH(stash, HYDU_strdup("-1 msg=key_"), status);
- HYD_STRING_STASH(stash, HYDU_strdup(key), status);
- HYD_STRING_STASH(stash, HYDU_strdup("_not_found value=unknown"), status);
+ tmp[i++] = HYDU_strdup("-1 msg=key_");
+ tmp[i++] = HYDU_strdup(key);
+ tmp[i++] = HYDU_strdup("_not_found value=unknown");
}
- HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
+ tmp[i++] = HYDU_strdup("\n");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending command downstream\n");
@@ -441,11 +457,10 @@ static HYD_status fn_get(int fd, char *args[])
static HYD_status fn_put(int fd, char *args[])
{
- struct HYD_string_stash stash;
- char *cmd;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
char *key, *val;
struct HYD_pmcd_token *tokens;
- int token_count;
+ int token_count, i;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -462,12 +477,15 @@ static HYD_status fn_put(int fd, char *args[])
val = HYDU_strdup("");
/* add to the cache */
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup(key), status);
- HYD_STRING_STASH(stash, HYDU_strdup("="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(val), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup(key);
+ tmp[i++] = HYDU_strdup("=");
+ tmp[i++] = HYDU_strdup(val);
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
cache_put.keyval[cache_put.keyval_len++] = cmd;
debug("cached command: %s\n", cmd);
diff --git a/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c b/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
index 8d2c66d..4246057 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
@@ -17,23 +17,25 @@ static struct HYD_pmcd_pmi_v2_reqs *pending_reqs = NULL;
static HYD_status send_cmd_upstream(const char *start, int fd, char *args[])
{
- int i, sent, closed;
- struct HYD_string_stash stash;
- char *buf;
+ int i, j, sent, closed;
+ char *tmp[HYD_NUM_TMP_STRINGS], *buf;
struct HYD_pmcd_hdr hdr;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup(start), status);
+ j = 0;
+ tmp[j++] = HYDU_strdup(start);
for (i = 0; args[i]; i++) {
- HYD_STRING_STASH(stash, HYDU_strdup(args[i]), status);
+ tmp[j++] = HYDU_strdup(args[i]);
if (args[i + 1])
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[j++] = HYDU_strdup(";");
}
+ tmp[j] = NULL;
- HYD_STRING_SPIT(stash, buf, status);
+ status = HYDU_str_alloc_and_join(tmp, &buf);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
HYD_pmcd_init_header(&hdr);
hdr.cmd = PMI_CMD;
@@ -150,8 +152,7 @@ static HYD_status fn_fullinit(int fd, char *args[])
{
int id, i;
char *rank_str;
- struct HYD_string_stash stash;
- char *cmd;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -176,29 +177,30 @@ static HYD_status fn_fullinit(int fd, char *args[])
}
HYDU_ASSERT(i < HYD_pmcd_pmip.local.proxy_process_count, status);
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash,
- HYDU_strdup("cmd=fullinit-response;pmi-version=2;pmi-subversion=0;rank="),
- status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(id), status);
+ i = 0;
+ /* FIXME: allow for multiple ranks per PMI ID */
+ tmp[i++] = HYDU_strdup("cmd=fullinit-response;pmi-version=2;pmi-subversion=0;rank=");
+ tmp[i++] = HYDU_int_to_str(id);
- HYD_STRING_STASH(stash, HYDU_strdup(";size="), status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_process_count),
- status);
- HYD_STRING_STASH(stash, HYDU_strdup(";appnum=0"), status);
+ tmp[i++] = HYDU_strdup(";size=");
+ tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_process_count);
+ tmp[i++] = HYDU_strdup(";appnum=0");
if (HYD_pmcd_pmip.local.spawner_kvsname) {
- HYD_STRING_STASH(stash, HYDU_strdup(";spawner-jobid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.local.spawner_kvsname), status);
+ tmp[i++] = HYDU_strdup(";spawner-jobid=");
+ tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.spawner_kvsname);
}
if (HYD_pmcd_pmip.user_global.debug) {
- HYD_STRING_STASH(stash, HYDU_strdup(";debugged=TRUE;pmiverbose=TRUE"), status);
+ tmp[i++] = HYDU_strdup(";debugged=TRUE;pmiverbose=TRUE");
}
else {
- HYD_STRING_STASH(stash, HYDU_strdup(";debugged=FALSE;pmiverbose=FALSE"), status);
+ tmp[i++] = HYDU_strdup(";debugged=FALSE;pmiverbose=FALSE");
}
- HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
+ tmp[i++] = HYDU_strdup(";rc=0;");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "error while joining strings\n");
+ HYDU_free_strlist(tmp);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -214,8 +216,8 @@ static HYD_status fn_fullinit(int fd, char *args[])
static HYD_status fn_job_getid(int fd, char *args[])
{
- struct HYD_string_stash stash;
- char *cmd, *thrid;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid;
+ int i;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -227,18 +229,22 @@ static HYD_status fn_job_getid(int fd, char *args[])
thrid = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "thrid");
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=job-getid-response;"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=job-getid-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("thrid=");
+ tmp[i++] = HYDU_strdup(thrid);
+ tmp[i++] = HYDU_strdup(";");
}
- HYD_STRING_STASH(stash, HYDU_strdup("jobid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
+ tmp[i++] = HYDU_strdup("jobid=");
+ tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname);
+ tmp[i++] = HYDU_strdup(";rc=0;");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+
+ HYDU_free_strlist(tmp);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -253,10 +259,11 @@ static HYD_status fn_job_getid(int fd, char *args[])
static HYD_status fn_info_putnodeattr(int fd, char *args[])
{
- struct HYD_string_stash stash;
- char *key, *val, *thrid, *cmd;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ char *key, *val, *thrid;
+ int i, ret;
struct HYD_pmcd_token *tokens;
- int token_count, ret;
+ int token_count;
struct HYD_pmcd_pmi_v2_reqs *req;
HYD_status status = HYD_SUCCESS;
@@ -277,18 +284,21 @@ static HYD_status fn_info_putnodeattr(int fd, char *args[])
status = HYD_pmcd_pmi_add_kvs(key, val, HYD_pmcd_pmip.local.kvs, &ret);
HYDU_ERR_POP(status, "unable to put data into kvs\n");
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-putnodeattr-response;"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=info-putnodeattr-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("thrid=");
+ tmp[i++] = HYDU_strdup(thrid);
+ tmp[i++] = HYDU_strdup(";");
}
- HYD_STRING_STASH(stash, HYDU_strdup("rc="), status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(ret), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("rc=");
+ tmp[i++] = HYDU_int_to_str(ret);
+ tmp[i++] = HYDU_strdup(";");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -312,11 +322,10 @@ static HYD_status fn_info_putnodeattr(int fd, char *args[])
static HYD_status fn_info_getnodeattr(int fd, char *args[])
{
- int found;
+ int i, found;
struct HYD_pmcd_pmi_kvs_pair *run;
char *key, *waitval, *thrid;
- struct HYD_string_stash stash;
- char *cmd;
+ char *tmp[HYD_NUM_TMP_STRINGS] = { 0 }, *cmd;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -344,18 +353,21 @@ static HYD_status fn_info_getnodeattr(int fd, char *args[])
}
if (found) { /* We found the attribute */
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-getnodeattr-response;"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=info-getnodeattr-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("thrid=");
+ tmp[i++] = HYDU_strdup(thrid);
+ tmp[i++] = HYDU_strdup(";");
}
- HYD_STRING_STASH(stash, HYDU_strdup("found=TRUE;value="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(run->val), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
+ tmp[i++] = HYDU_strdup("found=TRUE;value=");
+ tmp[i++] = HYDU_strdup(run->val);
+ tmp[i++] = HYDU_strdup(";rc=0;");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -369,16 +381,19 @@ static HYD_status fn_info_getnodeattr(int fd, char *args[])
}
else {
/* Tell the client that we can't find the attribute */
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-getnodeattr-response;"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=info-getnodeattr-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("thrid=");
+ tmp[i++] = HYDU_strdup(thrid);
+ tmp[i++] = HYDU_strdup(";");
}
- HYD_STRING_STASH(stash, HYDU_strdup("found=FALSE;rc=0;"), status);
+ tmp[i++] = HYDU_strdup("found=FALSE;rc=0;");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -394,10 +409,9 @@ static HYD_status fn_info_getnodeattr(int fd, char *args[])
static HYD_status fn_info_getjobattr(int fd, char *args[])
{
- struct HYD_string_stash stash;
- char *cmd, *key, *thrid;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *key, *thrid;
struct HYD_pmcd_token *tokens;
- int token_count;
+ int token_count, i;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -412,19 +426,21 @@ static HYD_status fn_info_getjobattr(int fd, char *args[])
thrid = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "thrid");
if (!strcmp(key, "PMI_process_mapping")) {
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-getjobattr-response;"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=info-getjobattr-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("thrid=");
+ tmp[i++] = HYDU_strdup(thrid);
+ tmp[i++] = HYDU_strdup(";");
}
- HYD_STRING_STASH(stash, HYDU_strdup("found=TRUE;value="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.system_global.pmi_process_mapping),
- status);
- HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
+ tmp[i++] = HYDU_strdup("found=TRUE;value=");
+ tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.system_global.pmi_process_mapping);
+ tmp[i++] = HYDU_strdup(";rc=0;");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -446,10 +462,9 @@ static HYD_status fn_info_getjobattr(int fd, char *args[])
static HYD_status fn_finalize(int fd, char *args[])
{
char *thrid;
- struct HYD_string_stash stash;
- char *cmd;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
struct HYD_pmcd_token *tokens;
- int token_count;
+ int token_count, i;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -459,16 +474,19 @@ static HYD_status fn_finalize(int fd, char *args[])
thrid = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "thrid");
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=finalize-response;"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=finalize-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("thrid=");
+ tmp[i++] = HYDU_strdup(thrid);
+ tmp[i++] = HYDU_strdup(";");
}
- HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
+ tmp[i++] = HYDU_strdup("rc=0;");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
index a18d807..cbc4c08 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
@@ -243,7 +243,7 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
int token_count, i, j, k, new_pgid, total_spawns;
int argcnt, num_segments;
char *control_port, *proxy_args[HYD_NUM_TMP_STRINGS] = { NULL };
- struct HYD_string_stash stash;
+ char *tmp[HYD_NUM_TMP_STRINGS];
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -398,12 +398,15 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
if (path == NULL)
execname = HYDU_strdup(val);
else {
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup(path), status);
- HYD_STRING_STASH(stash, HYDU_strdup("/"), status);
- HYD_STRING_STASH(stash, HYDU_strdup(val), status);
-
- HYD_STRING_SPIT(stash, execname, status);
+ i = 0;
+ tmp[i++] = HYDU_strdup(path);
+ tmp[i++] = HYDU_strdup("/");
+ tmp[i++] = HYDU_strdup(val);
+ tmp[i++] = NULL;
+
+ status = HYDU_str_alloc_and_join(tmp, &execname);
+ HYDU_ERR_POP(status, "error while joining strings\n");
+ HYDU_free_strlist(tmp);
}
i = 0;
@@ -510,13 +513,16 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
HYDU_ERR_POP(status, "launcher cannot launch processes\n");
{
- char *cmd;
+ char *cmd_str[HYD_NUM_TMP_STRINGS], *cmd;
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=spawn_result rc=0"), status);
- HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
+ i = 0;
+ cmd_str[i++] = HYDU_strdup("cmd=spawn_result rc=0");
+ cmd_str[i++] = HYDU_strdup("\n");
+ cmd_str[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(cmd_str, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(cmd_str);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "error writing PMI line\n");
@@ -541,9 +547,8 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
static HYD_status fn_publish_name(int fd, int pid, int pgid, char *args[])
{
- struct HYD_string_stash stash;
- char *cmd, *val;
- int token_count;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *val;
+ int i, token_count;
struct HYD_pmcd_token *tokens;
char *name, *port;
int success = 0;
@@ -565,16 +570,16 @@ static HYD_status fn_publish_name(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_publish(name, port, &success);
HYDU_ERR_POP(status, "error publishing service\n");
- HYD_STRING_STASH_INIT(stash);
+ i = 0;
if (success)
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=publish_result info=ok rc=0 msg=success\n"),
- status);
+ tmp[i++] = HYDU_strdup("cmd=publish_result info=ok rc=0 msg=success\n");
else
- HYD_STRING_STASH(stash,
- HYDU_strdup("cmd=publish_result info=ok rc=1 msg=key_already_present\n"),
- status);
+ tmp[i++] = HYDU_strdup("cmd=publish_result info=ok rc=1 msg=key_already_present\n");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -590,9 +595,8 @@ static HYD_status fn_publish_name(int fd, int pid, int pgid, char *args[])
static HYD_status fn_unpublish_name(int fd, int pid, int pgid, char *args[])
{
- struct HYD_string_stash stash;
- char *cmd, *name;
- int token_count;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *name;
+ int i, token_count;
struct HYD_pmcd_token *tokens;
int success = 0;
HYD_status status = HYD_SUCCESS;
@@ -608,16 +612,16 @@ static HYD_status fn_unpublish_name(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_unpublish(name, &success);
HYDU_ERR_POP(status, "error unpublishing service\n");
- HYD_STRING_STASH_INIT(stash);
+ i = 0;
if (success)
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=unpublish_result info=ok rc=0 msg=success\n"),
- status);
+ tmp[i++] = HYDU_strdup("cmd=unpublish_result info=ok rc=0 msg=success\n");
else
- HYD_STRING_STASH(stash,
- HYDU_strdup("cmd=unpublish_result info=ok rc=1 msg=service_not_found\n"),
- status);
+ tmp[i++] = HYDU_strdup("cmd=unpublish_result info=ok rc=1 msg=service_not_found\n");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -633,9 +637,8 @@ static HYD_status fn_unpublish_name(int fd, int pid, int pgid, char *args[])
static HYD_status fn_lookup_name(int fd, int pid, int pgid, char *args[])
{
- struct HYD_string_stash stash;
- char *cmd, *name, *value;
- int token_count;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *name, *value;
+ int i, token_count;
struct HYD_pmcd_token *tokens;
HYD_status status = HYD_SUCCESS;
@@ -650,18 +653,21 @@ static HYD_status fn_lookup_name(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_lookup(name, &value);
HYDU_ERR_POP(status, "error while looking up service\n");
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=lookup_result"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=lookup_result");
if (value) {
- HYD_STRING_STASH(stash, HYDU_strdup(" port="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(value), status);
- HYD_STRING_STASH(stash, HYDU_strdup(" info=ok rc=0 msg=success\n"), status);
+ tmp[i++] = HYDU_strdup(" port=");
+ tmp[i++] = HYDU_strdup(value);
+ tmp[i++] = HYDU_strdup(" info=ok rc=0 msg=success\n");
}
else {
- HYD_STRING_STASH(stash, HYDU_strdup(" rc=1 msg=service_not_found\n"), status);
+ tmp[i++] = HYDU_strdup(" rc=1 msg=service_not_found\n");
}
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
index bdfc7f7..87ff14f 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
@@ -111,12 +111,13 @@ static HYD_status poke_progress(char *key)
static HYD_status fn_info_getjobattr(int fd, int pid, int pgid, char *args[])
{
+ int i;
struct HYD_proxy *proxy;
struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
struct HYD_pmcd_pmi_kvs_pair *run;
const char *key;
- char *thrid, *val, *cmd;
- struct HYD_string_stash stash;
+ char *thrid, *val;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -148,24 +149,28 @@ static HYD_status fn_info_getjobattr(int fd, int pid, int pgid, char *args[])
}
}
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-getjobattr-response;"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=info-getjobattr-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("thrid=");
+ tmp[i++] = HYDU_strdup(thrid);
+ tmp[i++] = HYDU_strdup(";");
}
- HYD_STRING_STASH(stash, HYDU_strdup("found="), status);
+ tmp[i++] = HYDU_strdup("found=");
if (val) {
- HYD_STRING_STASH(stash, HYDU_strdup("TRUE;value="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(val), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
+ tmp[i++] = HYDU_strdup("TRUE;value=");
+ tmp[i++] = HYDU_strdup(val);
+ tmp[i++] = HYDU_strdup(";rc=0;");
}
else {
- HYD_STRING_STASH(stash, HYDU_strdup("FALSE;rc=0;"), status);
+ tmp[i++] = HYDU_strdup("FALSE;rc=0;");
}
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+
+ HYDU_free_strlist(tmp);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -183,9 +188,9 @@ static HYD_status fn_info_getjobattr(int fd, int pid, int pgid, char *args[])
static HYD_status fn_kvs_put(int fd, int pid, int pgid, char *args[])
{
- struct HYD_string_stash stash;
- char *key, *val, *thrid, *cmd;
- int ret;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ char *key, *val, *thrid;
+ int i, ret;
struct HYD_proxy *proxy;
struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
struct HYD_pmcd_token *tokens;
@@ -217,18 +222,22 @@ static HYD_status fn_kvs_put(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_add_kvs(key, val, pg_scratch->kvs, &ret);
HYDU_ERR_POP(status, "unable to put data into kvs\n");
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=kvs-put-response;"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=kvs-put-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("thrid=");
+ tmp[i++] = HYDU_strdup(thrid);
+ tmp[i++] = HYDU_strdup(";");
}
- HYD_STRING_STASH(stash, HYDU_strdup("rc="), status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(ret), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("rc=");
+ tmp[i++] = HYDU_int_to_str(ret);
+ tmp[i++] = HYDU_strdup(";");
+ tmp[i++] = NULL;
+
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
- HYD_STRING_SPIT(stash, cmd, status);
+ HYDU_free_strlist(tmp);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -259,8 +268,8 @@ static HYD_status fn_kvs_get(int fd, int pid, int pgid, char *args[])
struct HYD_pg *pg;
struct HYD_proxy *proxy;
struct HYD_pmcd_pmi_kvs_pair *run;
- char *key, *thrid, *cmd;
- struct HYD_string_stash stash;
+ char *key, *thrid;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -313,24 +322,27 @@ static HYD_status fn_kvs_get(int fd, int pid, int pgid, char *args[])
}
}
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=kvs-get-response;"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=kvs-get-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("thrid=");
+ tmp[i++] = HYDU_strdup(thrid);
+ tmp[i++] = HYDU_strdup(";");
}
if (found) {
- HYD_STRING_STASH(stash, HYDU_strdup("found=TRUE;value="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(run->val), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("found=TRUE;value=");
+ tmp[i++] = HYDU_strdup(run->val);
+ tmp[i++] = HYDU_strdup(";");
}
else {
- HYD_STRING_STASH(stash, HYDU_strdup("found=FALSE;"), status);
+ tmp[i++] = HYDU_strdup("found=FALSE;");
}
- HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
+ tmp[i++] = HYDU_strdup("rc=0;");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -349,8 +361,7 @@ static HYD_status fn_kvs_fence(int fd, int pid, int pgid, char *args[])
{
struct HYD_proxy *proxy;
struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
- struct HYD_string_stash stash;
- char *cmd, *thrid;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid;
struct HYD_pmcd_token *tokens;
int token_count, i;
static int fence_count = 0;
@@ -385,16 +396,19 @@ static HYD_status fn_kvs_fence(int fd, int pid, int pgid, char *args[])
pg_scratch->ecount[i].epoch = 1;
}
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=kvs-fence-response;"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=kvs-fence-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("thrid=");
+ tmp[i++] = HYDU_strdup(thrid);
+ tmp[i++] = HYDU_strdup(";");
}
- HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
+ tmp[i++] = HYDU_strdup("rc=0;");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -458,7 +472,7 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
int token_count, i, j, k, new_pgid;
int argcnt, num_segments;
char *control_port, *proxy_args[HYD_NUM_TMP_STRINGS] = { NULL };
- struct HYD_string_stash stash;
+ char *tmp[HYD_NUM_TMP_STRINGS];
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -599,12 +613,15 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
if (path == NULL)
execname = HYDU_strdup(val);
else {
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup(path), status);
- HYD_STRING_STASH(stash, HYDU_strdup("/"), status);
- HYD_STRING_STASH(stash, HYDU_strdup(val), status);
-
- HYD_STRING_SPIT(stash, execname, status);
+ i = 0;
+ tmp[i++] = HYDU_strdup(path);
+ tmp[i++] = HYDU_strdup("/");
+ tmp[i++] = HYDU_strdup(val);
+ tmp[i++] = NULL;
+
+ status = HYDU_str_alloc_and_join(tmp, &execname);
+ HYDU_ERR_POP(status, "error while joining strings\n");
+ HYDU_free_strlist(tmp);
}
i = 0;
@@ -710,22 +727,25 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
HYDU_ERR_POP(status, "launcher cannot launch processes\n");
{
- char *cmd;
+ char *cmd_str[HYD_NUM_TMP_STRINGS], *cmd;
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=spawn-response;"), status);
+ i = 0;
+ cmd_str[i++] = HYDU_strdup("cmd=spawn-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ cmd_str[i++] = HYDU_strdup("thrid=");
+ cmd_str[i++] = HYDU_strdup(thrid);
+ cmd_str[i++] = HYDU_strdup(";");
}
- HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
- HYD_STRING_STASH(stash, HYDU_strdup("jobid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(pg_scratch->kvs->kvsname), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
- HYD_STRING_STASH(stash, HYDU_strdup("nerrs=0;"), status);
+ cmd_str[i++] = HYDU_strdup("rc=0;");
+ cmd_str[i++] = HYDU_strdup("jobid=");
+ cmd_str[i++] = HYDU_strdup(pg_scratch->kvs->kvsname);
+ cmd_str[i++] = HYDU_strdup(";");
+ cmd_str[i++] = HYDU_strdup("nerrs=0;");
+ cmd_str[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(cmd_str, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(cmd_str);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -746,9 +766,9 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
static HYD_status fn_name_publish(int fd, int pid, int pgid, char *args[])
{
- struct HYD_string_stash stash;
- char *cmd, *thrid, *val, *name, *port;
- int token_count, success;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid, *val;
+ char *name, *port;
+ int i, token_count, success;
struct HYD_pmcd_token *tokens;
HYD_status status = HYD_SUCCESS;
@@ -770,22 +790,25 @@ static HYD_status fn_name_publish(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_publish(name, port, &success);
HYDU_ERR_POP(status, "error publishing service\n");
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=name-publish-response;"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=name-publish-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("thrid=");
+ tmp[i++] = HYDU_strdup(thrid);
+ tmp[i++] = HYDU_strdup(";");
}
if (!success) {
- HYD_STRING_STASH(stash, HYDU_strdup("rc=1;errmsg=duplicate_service_"), status);
- HYD_STRING_STASH(stash, HYDU_strdup(name), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("rc=1;errmsg=duplicate_service_");
+ tmp[i++] = HYDU_strdup(name);
+ tmp[i++] = HYDU_strdup(";");
}
else
- HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
+ tmp[i++] = HYDU_strdup("rc=0;");
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -801,9 +824,8 @@ static HYD_status fn_name_publish(int fd, int pid, int pgid, char *args[])
static HYD_status fn_name_unpublish(int fd, int pid, int pgid, char *args[])
{
- struct HYD_string_stash stash;
- char *cmd, *thrid, *name;
- int token_count, success;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid, *name;
+ int i, token_count, success;
struct HYD_pmcd_token *tokens;
HYD_status status = HYD_SUCCESS;
@@ -820,22 +842,25 @@ static HYD_status fn_name_unpublish(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_unpublish(name, &success);
HYDU_ERR_POP(status, "error unpublishing service\n");
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=name-unpublish-response;"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=name-unpublish-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("thrid=");
+ tmp[i++] = HYDU_strdup(thrid);
+ tmp[i++] = HYDU_strdup(";");
}
if (success)
- HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
+ tmp[i++] = HYDU_strdup("rc=0;");
else {
- HYD_STRING_STASH(stash, HYDU_strdup("rc=1;errmsg=service_"), status);
- HYD_STRING_STASH(stash, HYDU_strdup(name), status);
- HYD_STRING_STASH(stash, HYDU_strdup("_not_found;"), status);
+ tmp[i++] = HYDU_strdup("rc=1;errmsg=service_");
+ tmp[i++] = HYDU_strdup(name);
+ tmp[i++] = HYDU_strdup("_not_found;");
}
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -851,10 +876,9 @@ static HYD_status fn_name_unpublish(int fd, int pid, int pgid, char *args[])
static HYD_status fn_name_lookup(int fd, int pid, int pgid, char *args[])
{
- struct HYD_string_stash stash;
- char *cmd, *thrid, *name, *value;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid, *name, *value;
struct HYD_pmcd_pmi_publish *publish;
- int token_count;
+ int i, token_count;
struct HYD_pmcd_token *tokens;
HYD_status status = HYD_SUCCESS;
@@ -874,23 +898,26 @@ static HYD_status fn_name_lookup(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_lookup(name, &value);
HYDU_ERR_POP(status, "error while looking up service\n");
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("cmd=name-lookup-response;"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=name-lookup-response;");
if (thrid) {
- HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ tmp[i++] = HYDU_strdup("thrid=");
+ tmp[i++] = HYDU_strdup(thrid);
+ tmp[i++] = HYDU_strdup(";");
}
if (value) {
- HYD_STRING_STASH(stash, HYDU_strdup("port="), status);
- HYD_STRING_STASH(stash, HYDU_strdup(value), status);
- HYD_STRING_STASH(stash, HYDU_strdup(";found=TRUE;rc=0;"), status);
+ tmp[i++] = HYDU_strdup("port=");
+ tmp[i++] = HYDU_strdup(value);
+ tmp[i++] = HYDU_strdup(";found=TRUE;rc=0;");
}
else {
- HYD_STRING_STASH(stash, HYDU_strdup("found=FALSE;rc=1;"), status);
+ tmp[i++] = HYDU_strdup("found=FALSE;rc=1;");
}
+ tmp[i++] = NULL;
- HYD_STRING_SPIT(stash, cmd, status);
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_utils.c b/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
index a64f111..45222aa 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
@@ -12,8 +12,8 @@
HYD_status HYD_pmcd_pmi_fill_in_proxy_args(char **proxy_args, char *control_port, int pgid)
{
- int arg, use_ddd, use_valgrind, use_strace, retries, ret;
- struct HYD_string_stash stash;
+ int i, arg, use_ddd, use_valgrind, use_strace, retries, ret;
+ char *path_str[HYD_NUM_TMP_STRINGS];
HYD_status status = HYD_SUCCESS;
arg = 0;
@@ -45,11 +45,13 @@ HYD_status HYD_pmcd_pmi_fill_in_proxy_args(char **proxy_args, char *control_port
proxy_args[arg++] = HYDU_strdup("-ff");
}
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup(HYD_server_info.base_path), status);
- HYD_STRING_STASH(stash, HYDU_strdup("hydra_pmi_proxy"), status);
- HYD_STRING_SPIT(stash, proxy_args[arg], status);
- arg++;
+ i = 0;
+ path_str[i++] = HYDU_strdup(HYD_server_info.base_path);
+ path_str[i++] = HYDU_strdup("hydra_pmi_proxy");
+ path_str[i] = NULL;
+ status = HYDU_str_alloc_and_join(path_str, &proxy_args[arg++]);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(path_str);
proxy_args[arg++] = HYDU_strdup("--control-port");
proxy_args[arg++] = HYDU_strdup(control_port);
@@ -111,8 +113,8 @@ HYD_status HYD_pmcd_pmi_fill_in_proxy_args(char **proxy_args, char *control_port
static HYD_status pmi_process_mapping(struct HYD_pg *pg, char **process_mapping_str)
{
- int is_equal, filler_round, core_count;
- struct HYD_string_stash stash;
+ int i, is_equal, filler_round, core_count;
+ char *tmp[HYD_NUM_TMP_STRINGS];
struct block {
int start_idx;
int num_nodes;
@@ -202,23 +204,28 @@ static HYD_status pmi_process_mapping(struct HYD_pg *pg, char **process_mapping_
create_mapping_key:
/* Create the mapping out of the blocks */
- HYD_STRING_STASH_INIT(stash);
- HYD_STRING_STASH(stash, HYDU_strdup("("), status);
- HYD_STRING_STASH(stash, HYDU_strdup("vector,"), status);
+ i = 0;
+ tmp[i++] = HYDU_strdup("(");
+ tmp[i++] = HYDU_strdup("vector,");
for (block = blocklist_head; block; block = block->next) {
- HYD_STRING_STASH(stash, HYDU_strdup("("), status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(block->start_idx), status);
- HYD_STRING_STASH(stash, HYDU_strdup(","), status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(block->num_nodes), status);
- HYD_STRING_STASH(stash, HYDU_strdup(","), status);
- HYD_STRING_STASH(stash, HYDU_int_to_str(block->core_count), status);
- HYD_STRING_STASH(stash, HYDU_strdup(")"), status);
+ tmp[i++] = HYDU_strdup("(");
+ tmp[i++] = HYDU_int_to_str(block->start_idx);
+ tmp[i++] = HYDU_strdup(",");
+ tmp[i++] = HYDU_int_to_str(block->num_nodes);
+ tmp[i++] = HYDU_strdup(",");
+ tmp[i++] = HYDU_int_to_str(block->core_count);
+ tmp[i++] = HYDU_strdup(")");
if (block->next)
- HYD_STRING_STASH(stash, HYDU_strdup(","), status);
+ tmp[i++] = HYDU_strdup(",");
+ HYDU_STRLIST_CONSOLIDATE(tmp, i, status);
}
- HYD_STRING_STASH(stash, HYDU_strdup(")"), status);
+ tmp[i++] = HYDU_strdup(")");
+ tmp[i++] = NULL;
+
+ status = HYDU_str_alloc_and_join(tmp, process_mapping_str);
+ HYDU_ERR_POP(status, "error while joining strings\n");
- HYD_STRING_SPIT(stash, *process_mapping_str, status);
+ HYDU_free_strlist(tmp);
for (block = blocklist_head; block; block = nblock) {
nblock = block->next;
http://git.mpich.org/mpich.git/commitdiff/657da4c2d50ba84ef6a2fbf68f782ed1b…
commit 657da4c2d50ba84ef6a2fbf68f782ed1be307a1a
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Thu May 2 22:06:58 2013 -0500
Revert accidental commit [99e8252a]
diff --git a/confdb/aclocal.m4 b/confdb/aclocal.m4
index 36fb15c..488feaa 100644
--- a/confdb/aclocal.m4
+++ b/confdb/aclocal.m4
@@ -1,13 +1,18 @@
dnl This version of aclocal.m4 simply includes all of the individual
dnl components
+builtin(include,aclocal_am.m4)
builtin(include,aclocal_bugfix.m4)
builtin(include,aclocal_cache.m4)
builtin(include,aclocal_cc.m4)
+builtin(include,aclocal_atomic.m4)
dnl aclocal_cross.m4 uses autoconf features dated back to 2.13.
dnl too old to be useful, 07/14/2010.
dnl builtin(include,aclocal_cross.m4)
builtin(include,aclocal_cxx.m4)
builtin(include,aclocal_f77.m4)
+dnl aclocal_f77old.m4 contains PAC_PROG_F77_CMDARGS which is NOT used in MPICH
+dnl but it is still used by other packages, so leave it in confdb.
+dnl builtin(include,aclocal_f77old.m4)
builtin(include,aclocal_util.m4)
builtin(include,aclocal_subcfg.m4)
builtin(include,aclocal_make.m4)
diff --git a/confdb/aclocal_attr_alias.m4 b/confdb/aclocal_attr_alias.m4
index 33db329..32f0165 100644
--- a/confdb/aclocal_attr_alias.m4
+++ b/confdb/aclocal_attr_alias.m4
@@ -148,7 +148,7 @@ int same_addrs2( void *ptr )
])
],[
rm -f pac_conftest_other.$OBJEXT
- AC_RUN_LOG([cp conftest.$OBJEXT pac_conftest_other.$OBJEXT])
+ PAC_RUNLOG([cp conftest.$OBJEXT pac_conftest_other.$OBJEXT])
test -s pac_conftest_other.$OBJEXT && pac_c_attr_alias_other=yes
dnl cp conftest.$ac_ext pac_conftest_other.$ac_ext
dnl echo
@@ -196,7 +196,7 @@ extern int same_addrs2( void *ptr );
])
],[
rm -f pac_conftest_main$EXEEXT
- AC_RUN_LOG([cp conftest$EXEEXT pac_conftest_main$EXEEXT])
+ PAC_RUNLOG([cp conftest$EXEEXT pac_conftest_main$EXEEXT])
test -x pac_conftest_main$EXEEXT && pac_c_attr_alias_main=yes
dnl cp conftest.$ac_ext pac_conftest_main.$ac_ext
dnl echo
@@ -371,7 +371,7 @@ dnl
AC_LANG_PUSH([C])
AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],[
cp conftest.$ac_ext pac_conftest.c
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
PAC_PUSH_FLAG([LIBS])
LIBS="pac_conftest.$OBJEXT $LIBS"
AC_LANG_PUSH([Fortran]) dnl AC_LANG_PUSH([Fortran 77])
@@ -429,7 +429,7 @@ extern mpif_cmblk_t mpifcmb_ __attribute__ ((alias("mpifcmbr")));
])
],[
cp conftest.$ac_ext pac_conftest.c
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
PAC_PUSH_FLAG([LIBS])
LIBS="pac_conftest.$OBJEXT $LIBS"
AC_LANG_PUSH([Fortran]) dnl AC_LANG_PUSH([Fortran 77])
diff --git a/confdb/aclocal_cc.m4 b/confdb/aclocal_cc.m4
index 06a5145..98fdc34 100644
--- a/confdb/aclocal_cc.m4
+++ b/confdb/aclocal_cc.m4
@@ -105,7 +105,7 @@ if test "$pac_result" = "yes" ; then
int foo(void){return 0;}
])
],[
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $LIBS"
diff --git a/confdb/aclocal_cxx.m4 b/confdb/aclocal_cxx.m4
index 418d8b7..279b668 100644
--- a/confdb/aclocal_cxx.m4
+++ b/confdb/aclocal_cxx.m4
@@ -153,7 +153,7 @@ if test "$pac_result" = "yes" ; then
int foo(void){return 0;}
])
],[
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $LIBS"
diff --git a/confdb/aclocal_f77.m4 b/confdb/aclocal_f77.m4
index 38225e0..92d310b 100644
--- a/confdb/aclocal_f77.m4
+++ b/confdb/aclocal_f77.m4
@@ -64,7 +64,7 @@ AC_COMPILE_IFELSE([
end
])
],[
- AC_RUN_LOG([mv conftest.$OBJEXT f77conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT f77conftest.$OBJEXT])
saved_LIBS="$LIBS"
dnl FLIBS is set by AC_F77_LIBRARY_LDFLAGS
LIBS="f77conftest.$OBJEXT $FLIBS $LIBS"
@@ -96,7 +96,7 @@ if test "$pac_found" != "yes" ; then
AC_COMPILE_IFELSE([
AC_LANG_SOURCE([void ${call} ${sym}(int a) {}])
],[
- AC_RUN_LOG([mv conftest.$OBJEXT cconftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT cconftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="cconftest.$OBJEXT $LIBS"
AC_LANG_PUSH([Fortran 77])
@@ -242,7 +242,7 @@ AC_COMPILE_IFELSE([
])
],[
# pac_f77compile_ok=yes
- AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
# Save original LIBS, prepend previously generated object file to LIBS
saved_LIBS="$LIBS"
LIBS="pac_f77conftest.$OBJEXT $FLIBS $LIBS"
@@ -349,7 +349,7 @@ int cisize_(char *i1p, char *i2p) {
dnl Endof ac_lang_source
],[
# pac_compile_ok=yes
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
# Save LIBS and prepend object file to LIBS
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $LIBS"
@@ -481,7 +481,7 @@ if test "$pac_result" = "yes" ; then
end
])
],[
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $LIBS"
@@ -541,10 +541,10 @@ AC_COMPILE_IFELSE([
])
],[
# pac_f77compile_ok=yes
- AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
- AC_RUN_LOG([test -d conftestdir || mkdir conftestdir])
- AC_RUN_LOG([${AR-ar} ${AR_FLAGS-cr} conftestdir/libf77conftest.a pac_f77conftest.$OBJEXT])
- AC_RUN_LOG([${RANLIB-ranlib} conftestdir/libf77conftest.a])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ PAC_RUNLOG([test -d conftestdir || mkdir conftestdir])
+ PAC_RUNLOG([${AR-ar} ${AR_FLAGS-cr} conftestdir/libf77conftest.a pac_f77conftest.$OBJEXT])
+ PAC_RUNLOG([${RANLIB-ranlib} conftestdir/libf77conftest.a])
# Save original LIBS, prepend previously generated object file to LIBS
saved_LIBS="$LIBS"
LIBS="-lf77conftest $LIBS"
@@ -595,7 +595,7 @@ ifelse([$1],[],[checkdir=f77tmpdir],[checkdir=$1;checkdir_is_given=yes])
AC_CACHE_CHECK([for include directory flag for Fortran],
pac_cv_prog_f77_has_incdir,[
test -d $checkdir || mkdir $checkdir
-dnl AC_RUN_LOG([echo ' call sub()' > $checkdir/conftestf.h])
+dnl PAC_RUNLOG([echo ' call sub()' > $checkdir/conftestf.h])
echo ' call sub()' > $checkdir/conftestf.h
AC_LANG_PUSH([Fortran 77])
saved_FFLAGS="$FFLAGS"
@@ -673,7 +673,7 @@ AC_COMPILE_IFELSE([
AC_LANG_SOURCE([$2])
],[
# pac_f77compile_ok=yes
- AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
# Save original LIBS, prepend previously generated object file to LIBS
saved_LIBS="$LIBS"
LIBS="pac_f77conftest.$OBJEXT $FLIBS $LIBS"
@@ -732,7 +732,7 @@ AC_COMPILE_IFELSE([
])
],[
# pac_f77compile_ok=yes
- AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
# Save original LIBS, prepend previously generated object file to LIBS
saved_LIBS="$LIBS"
LIBS="pac_f77conftest.$OBJEXT $FLIBS $saved_LIBS"
@@ -833,7 +833,7 @@ dnl Use F77 as a linker to compile a Fortran main and C subprogram.
if test "$pac_linkwithC" != "yes" ; then
AC_LANG_PUSH([C])
AC_COMPILE_IFELSE([],[
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $saved_LIBS"
AC_LANG_PUSH([Fortran 77])
@@ -852,7 +852,7 @@ dnl Use C as a linker and FLIBS to compile a Fortran main and C subprogram.
if test "$pac_linkwithf77" != "yes" ; then
AC_LANG_PUSH([Fortran 77])
AC_COMPILE_IFELSE([],[
- AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_f77conftest.$OBJEXT $FLIBS $saved_LIBS"
AC_LANG_PUSH([C])
@@ -961,7 +961,7 @@ int $confname(int a) {
}
])
],[
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
AC_LANG_PUSH([Fortran 77])
AC_LANG_CONFTEST([
@@ -1089,7 +1089,7 @@ dnl Use F77 as a linker to compile a Fortran main and C subprogram.
if test "$pac_linkwithC" != "yes" ; then
AC_LANG_PUSH([C])
AC_COMPILE_IFELSE([],[
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $saved_LIBS"
AC_LANG_PUSH([Fortran 77])
@@ -1110,7 +1110,7 @@ dnl Use C as a linker and FLIBS to compile a Fortran main and C subprogram.
if test "$pac_linkwithf77" != "yes" ; then
AC_LANG_PUSH([Fortran 77])
AC_COMPILE_IFELSE([],[
- AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_f77conftest.$OBJEXT $FLIBS $saved_LIBS"
AC_LANG_PUSH([C])
@@ -1277,7 +1277,7 @@ AC_COMPILE_IFELSE([
end
])
],[
- AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
saved_LIBS="$LIBS"
# This test checks if Fortran init can be done in pure C environment,
# i.e. no FLIBS in linking, so don't put FLIBS in LIBS below
@@ -1368,7 +1368,7 @@ void ftest_( $pac_mpi_fint *itrue, $pac_mpi_fint *ifalse )
}
])
],[
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $saved_LIBS"
AC_LANG_PUSH([Fortran 77])
diff --git a/confdb/aclocal_fc.m4 b/confdb/aclocal_fc.m4
index 716f085..02a5d5d 100644
--- a/confdb/aclocal_fc.m4
+++ b/confdb/aclocal_fc.m4
@@ -468,7 +468,7 @@ AC_COMPILE_IFELSE([
])
],[
# pac_f77compile_ok=yes
- AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
# Save original LIBS, prepend previously generated object file to LIBS
saved_LIBS="$LIBS"
LIBS="pac_f77conftest.$OBJEXT $LIBS"
@@ -589,7 +589,7 @@ int $confname( int a )
])
],[
pac_compile_ok=yes
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
# Save LIBS and prepend object file to LIBS
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $LIBS"
@@ -678,7 +678,7 @@ if test "$pac_result" = "yes" ; then
end
])
],[
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $LIBS"
@@ -778,7 +778,7 @@ AC_MSG_CHECKING([for Fortran 90 compiler vendor])
pac_cv_fc_vendor="unknown"
for arg in --version -V -v ; do
rm -f conftest.txt
- AC_RUN_LOG([$FC $arg </dev/null >conftest.txt 2>&1])
+ PAC_RUNLOG([$FC $arg </dev/null >conftest.txt 2>&1])
# Ignore the return code, because some compilers set the
# return code to zero on invalid arguments and some to
# non-zero on success (with no files to compile)
@@ -1027,7 +1027,7 @@ int cisize_(char *i1p, char *i2p)
}
])
],[
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
pac_ccompile_ok=yes
],[
pac_ccompile_ok=no
diff --git a/confdb/aclocal_make.m4 b/confdb/aclocal_make.m4
index 0f73e23..147e92e 100644
--- a/confdb/aclocal_make.m4
+++ b/confdb/aclocal_make.m4
@@ -148,6 +148,7 @@ dnl
dnl D*/
AC_DEFUN([PAC_PROG_MAKE_VPATH],[
AC_SUBST(VPATH)
+dnl AM_IGNORE(VPATH)
AC_CACHE_CHECK([for virtual path format],
pac_cv_prog_make_vpath,[
AC_REQUIRE([PAC_PROG_MAKE_PROGRAM])
@@ -304,6 +305,7 @@ PAC_PROG_MAKE_INCLUDE
PAC_PROG_MAKE_ALLOWS_COMMENTS
PAC_PROG_MAKE_VPATH
AC_SUBST(SET_CFLAGS)
+dnl AM_IGNORE(SET_CFLAGS)
PAC_PROG_MAKE_SET_CFLAGS([SET_CFLAGS='CFLAGS='])
if test "$pac_cv_prog_make_echos_dir" = "no" ; then
AC_PROG_MAKE_SET
diff --git a/confdb/aclocal_runlog.m4 b/confdb/aclocal_runlog.m4
index ebab6ba..9b85db5 100644
--- a/confdb/aclocal_runlog.m4
+++ b/confdb/aclocal_runlog.m4
@@ -1,46 +1,252 @@
-dnl PAC_RUNLOG_IFELSE(COMMMAND,[ACTION-IF-RUN-OK],[ACTION-IF-RUN-FAIL])
-AC_DEFUN([PAC_RUNLOG_IFELSE],[AS_IF([AC_RUN_LOG([$1])],[$2],[$3])])
-
+dnl
+dnl PAC_RUN_LOG mimics _AC_RUN_LOG which is autoconf internal routine.
+dnl We also make sure PAC_RUN_LOG can be used in AS_IF, so the last
+dnl test command should have terminating ]), i.e. without newline before ]).
+dnl
+AC_DEFUN([PAC_RUNLOG],[
+{ AS_ECHO(["$as_me:$LINENO: $1"]) >&AS_MESSAGE_LOG_FD
+ (eval $1) 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ AS_ECHO(["$as_me:$LINENO: \$? = $ac_status"]) >&AS_MESSAGE_LOG_FD
+ test $ac_status = 0; }])
+dnl
+dnl PAC_COMMAND_IFELSE is written to replace AC_TRY_EVAL with added logging
+dnl to config.log, i.e. AC_TRY_EVAL does not log anything to config.log.
+dnl If autoconf provides AC_COMMAND_IFELSE or AC_EVAL_IFELSE,
+dnl AC_COMMAND_IFELSE dnl should be replaced by the official autoconf macros.
+dnl
+dnl PAC_COMMAND_IFELSE(COMMMAND,[ACTION-IF-RUN-OK],[ACTION-IF-RUN-FAIL])
+dnl
+AC_DEFUN([PAC_COMMAND_IFELSE],[
+dnl Should use _AC_DO_TOKENS but use AC_RUN_LOG instead
+dnl because _AC_XX is autoconf's undocumented macro.
+AS_IF([PAC_RUNLOG([$1])],[
+ $2
+],[
+ AS_ECHO(["$as_me: program exited with status $ac_status"]) >&AS_MESSAGE_LOG_FD
+ m4_ifvaln([$3],[
+ (exit $ac_status)
+ $3
+ ])
+])
+])
+dnl
+dnl
+dnl
+AC_DEFUN([PAC_EVAL_IFELSE],[
+dnl Should use _AC_DO_TOKENS but use AC_RUN_LOG instead
+dnl because _AC_XX is autoconf's undocumented macro.
+AS_IF([PAC_RUNLOG([$$1])],[
+ $2
+],[
+ AS_ECHO(["$as_me: program exited with status $ac_status"]) >&AS_MESSAGE_LOG_FD
+ m4_ifvaln([$3],[
+ (exit $ac_status)
+ $3
+ ])
+])
+])
+dnl
+dnl
+dnl
+AC_DEFUN([PAC_RUNLOG_IFELSE],[
+dnl pac_TESTLOG is the internal temporary logfile for this macro.
+pac_TESTLOG="pac_test.log"
+rm -f $pac_TESTLOG
+PAC_COMMAND_IFELSE([$1 > $pac_TESTLOG],[
+ ifelse([$2],[],[],[$2])
+],[
+ AS_ECHO(["*** $1 :"]) >&AS_MESSAGE_LOG_FD
+ cat $pac_TESTLOG >&AS_MESSAGE_LOG_FD
+ ifelse([$3],[],[],[$3])
+])
+rm -f $pac_TESTLOG
+])
+dnl
+dnl
+dnl
+dnl PAS_VAR_COPY - A portable layer that mimics AS_VAR_COPY when it is not
+dnl defined as in older autoconf, e.g. 2.63 and older.
+dnl This macro is absolutely necessary, because AS_VAR_GET in
+dnl some newer autoconf, e.g. 2.64, seems to be totally broken,
+dnl or behave very different from older autoconf, i.e. 2.63.
+dnl
+AC_DEFUN([PAS_VAR_COPY],[
+m4_ifdef([AS_VAR_COPY], [AS_VAR_COPY([$1],[$2])], [$1=AS_VAR_GET([$2])])
+])
+dnl
+dnl
+dnl
+dnl PAC_VAR_PUSHVAL(VARNAME, [LastSavedValue]))
+dnl
+dnl Save the content of the shell variable, VARNAME, onto a stack.
+dnl The saved value of VARNAME is restorable with respect to the nesting
+dnl of the macro.
+dnl
+dnl The Last saved value of VARNAME on the stack is stored in shell variable
+dnl pac_LastSavedValueOf_$VARNAME if the 2nd argument is NOT supplied.
+dnl If the 2nd argument is present, the last saved value will be stored
+dnl in the 2nd argument instead.
+dnl
+dnl The First saved value of VARNAME on the stack is stored in shell variable
+dnl dnl pac_FirstSavedValueOf_$VARNAME.
+dnl
+AC_DEFUN([PAC_VAR_PUSHVAL],[
+# START of PUSHVAL
+dnl define local m4-name pac_stk_level.
+AS_VAR_PUSHDEF([pac_stk_level], [pac_stk_$1_level])
+AS_VAR_SET_IF([pac_stk_level],[
+ dnl autoconf < 2.64 does not have AS_VAR_ARITH, so use expr instead.
+ AS_VAR_SET([pac_stk_level], [`expr $pac_stk_level + 1`])
+],[
+ AS_VAR_SET([pac_stk_level], [0])
+])
+dnl AS_ECHO_N(["PUSHVAL: pac_stk_level = $pac_stk_level, "])
+dnl Save the content of VARNAME, i.e. $VARNAME, onto the stack.
+AS_VAR_SET([pac_stk_$1_$pac_stk_level],[$$1])
+AS_VAR_IF([pac_stk_level], [0], [
+ dnl Save the 1st pushed value of VARNAME as pac_FirstSavedValueOf_$VARNAME
+ PAS_VAR_COPY([pac_FirstSavedValueOf_$1],[pac_stk_$1_$pac_stk_level])
+])
+ifelse([$2],[],[
+ dnl Save the last pushed value of VARNAME as pac_LastSavedValueOf_$VARNAME
+ PAS_VAR_COPY([pac_LastSavedValueOf_$1],[pac_stk_$1_$pac_stk_level])
+ dnl AS_ECHO(["pac_LastSavedValueOf_$1 = $pac_LastSavedValueOf_$1"])
+],[
+ dnl Save the last pushed value of VARNAME as $2
+ PAS_VAR_COPY([$2],[pac_stk_$1_$pac_stk_level])
+ dnl AS_ECHO(["$2 = $$2"])
+])
+AS_VAR_POPDEF([pac_stk_level])
+# END of PUSHVAL
+])
+dnl
+dnl
+dnl
+dnl PAC_VAR_POPVAL(VARNAME)
+dnl
+dnl Restore variable, VARNAME, from the stack.
+dnl This macro is safe with respect to the nesting.
+dnl Some minimal checking of nesting balance of PAC_VAR_PUSH[POP]VAL()
+dnl is done here.
+dnl
+AC_DEFUN([PAC_VAR_POPVAL],[
+# START of POPVAL
+dnl define local m4-name pac_stk_level.
+AS_VAR_PUSHDEF([pac_stk_level], [pac_stk_$1_level])
+AS_VAR_SET_IF([pac_stk_level],[
+ AS_VAR_IF([pac_stk_level],[-1],[
+ AC_MSG_WARN(["Imbalance of PUSHVAL/POPVAL of $1"])
+ ],[
+ dnl AS_ECHO_N(["POPVAL: pac_stk_level = $pac_stk_level, "])
+ PAS_VAR_COPY([$1],[pac_stk_$1_$pac_stk_level])
+ dnl AS_ECHO(["popped_val = $$1"])
+ dnl autoconf < 2.64 does not have AS_VAR_ARITH, so use expr instead.
+ AS_VAR_SET([pac_stk_level], [`expr $pac_stk_level - 1`])
+ ])
+],[
+ AC_MSG_WARN(["Uninitialized PUSHVAL/POPVAL of $1"])
+])
+AS_VAR_POPDEF([pac_stk_level])
+# END of POPVAL
+])
+dnl
+dnl
+dnl
dnl PAC_COMPILE_IFELSE_LOG is a wrapper around AC_COMPILE_IFELSE with the
dnl output of ac_compile to a specified logfile instead of AS_MESSAGE_LOG_FD
dnl
dnl PAC_COMPILE_IFELSE_LOG(logfilename, input,
dnl [action-if-true], [action-if-false])
dnl
+dnl where input, [action-if-true] and [action-if-false] are used
+dnl in AC_COMPILE_IFELSE(input, [action-if-true], [action-if-false]).
+dnl This macro is nesting safe.
+dnl
AC_DEFUN([PAC_COMPILE_IFELSE_LOG],[
-PAC_PUSH_FLAG([ac_compile])
-ac_compile="`echo $ac_compile | sed -e 's|>.*$|> $1 2>\&1|g'`"
-AC_COMPILE_IFELSE([$2],[$3],[$4])
-PAC_POP_FLAG([ac_compile])
+dnl
+dnl Instead of defining our own ac_compile and do AC_TRY_EVAL
+dnl on these variables. We modify ac_compile used by AC_*_IFELSE
+dnl by piping the output of the command to a logfile. The reason is that
+dnl 1) AC_TRY_EVAL is discouraged by Autoconf. 2) defining our ac_compile
+dnl could mess up the usage and order of *CFLAGS, LDFLAGS and LIBS in
+dnl these commands, i.e. deviate from how GNU standard uses these variables.
+dnl
+dnl Replace ">&AS_MESSAGE_LOG_FD" by "> FILE 2>&1" in ac_compile.
+dnl Save a copy of ac_compile on a stack
+dnl which is safe through nested invocations of this macro.
+PAC_VAR_PUSHVAL([ac_compile])
+dnl Modify ac_compile based on the unmodified ac_compile.
+ac_compile="`echo $pac_FirstSavedValueOf_ac_compile | sed -e 's|>.*$|> $1 2>\&1|g'`"
+AC_COMPILE_IFELSE([$2],[
+ ifelse([$3],[],[:],[$3])
+],[
+ ifelse([$4],[],[:],[$4])
+])
+dnl Restore the original ac_compile from the stack.
+PAC_VAR_POPVAL([ac_compile])
])
-
+dnl
+dnl
+dnl
dnl PAC_LINK_IFELSE_LOG is a wrapper around AC_LINK_IFELSE with the
dnl output of ac_link to a specified logfile instead of AS_MESSAGE_LOG_FD
dnl
dnl PAC_LINK_IFELSE_LOG(logfilename, input,
dnl [action-if-true], [action-if-false])
dnl
+dnl where input, [action-if-true] and [action-if-false] are used
+dnl in AC_LINK_IFELSE(input, [action-if-true], [action-if-false]).
+dnl This macro is nesting safe.
+dnl
AC_DEFUN([PAC_LINK_IFELSE_LOG],[
-PAC_PUSH_FLAG([ac_link])
-ac_link="`echo $ac_link | sed -e 's|>.*$|> $1 2>\&1|g'`"
-AC_LINK_IFELSE([$2],[$3],[$4])
-PAC_POP_FLAG([ac_link])
+dnl
+dnl Instead of defining our own ac_link and do AC_TRY_EVAL
+dnl on these variables. We modify ac_link used by AC_*_IFELSE
+dnl by piping the output of the command to a logfile. The reason is that
+dnl 1) AC_TRY_EVAL is discouraged by Autoconf. 2) defining our ac_link
+dnl could mess up the usage and order of *CFLAGS, LDFLAGS and LIBS in
+dnl these commands, i.e. deviate from how GNU standard uses these variables.
+dnl
+dnl Replace ">&AS_MESSAGE_LOG_FD" by "> FILE 2>&1" in ac_link.
+dnl Save a copy of ac_link on a stack
+dnl which is safe through nested invocations of this macro.
+PAC_VAR_PUSHVAL([ac_link])
+dnl Modify ac_link based on the unmodified ac_link.
+ac_link="`echo $pac_FirstSavedValueOf_ac_link | sed -e 's|>.*$|> $1 2>\&1|g'`"
+dnl
+AC_LINK_IFELSE([$2],[
+ ifelse([$3],[],[:],[$3])
+],[
+ ifelse([$4],[],[:],[$4])
])
-
+dnl Restore the original ac_link from the stack.
+PAC_VAR_POPVAL([ac_link])
+])
+dnl
+dnl
+dnl
dnl PAC_COMPLINK_IFELSE (input1, input2, [action-if-true], [action-if-false])
dnl
dnl where input1 and input2 are either AC_LANG_SOURCE or AC_LANG_PROGRAM
dnl enclosed input programs.
dnl
dnl The macro first compiles input1 and uses the object file created
-dnl as part of LIBS during linking.
+dnl as part of LIBS during linking. This macro is nesting safe.
dnl
AC_DEFUN([PAC_COMPLINK_IFELSE],[
AC_COMPILE_IFELSE([$1],[
- AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
- PAC_PUSH_FLAG([LIBS])
- LIBS="pac_conftest.$OBJEXT $LIBS"
- AC_LINK_IFELSE([$2],[$3],[$4])
- PAC_POP_FLAG([LIBS])
- rm -f pac_conftest.$OBJEXT]),[$4]
+ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_VAR_PUSHVAL([LIBS])
+ LIBS="pac_conftest.$OBJEXT $pac_FirstSavedValueOf_LIBS"
+ AC_LINK_IFELSE([$2],[
+ ifelse([$3],[],[:],[$3])
+ ],[
+ ifelse([$4],[],[:],[$4])
+ ])
+ PAC_VAR_POPVAL([LIBS])
+ rm -f pac_conftest.$OBJEXT
+],[
+ ifelse([$4],[],[:],[$4])
+])
])
-----------------------------------------------------------------------
Summary of changes:
confdb/aclocal.m4 | 5 +
confdb/aclocal_attr_alias.m4 | 8 +-
confdb/aclocal_cc.m4 | 2 +-
confdb/aclocal_cxx.m4 | 2 +-
confdb/aclocal_f77.m4 | 38 +++---
confdb/aclocal_fc.m4 | 10 +-
confdb/aclocal_make.m4 | 2 +
confdb/aclocal_runlog.m4 | 246 +++++++++++++++++++++++++++---
src/pm/hydra/include/hydra.h | 51 ++-----
src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c | 166 +++++++++++---------
src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c | 198 +++++++++++++-----------
src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c | 90 ++++++-----
src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c | 237 ++++++++++++++++-------------
src/pm/hydra/pm/pmiserv/pmiserv_utils.c | 51 ++++---
14 files changed, 685 insertions(+), 421 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-114-g7dc192b
by noreply@mpich.org 02 May '13
by noreply@mpich.org 02 May '13
02 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via 7dc192b8fbd33cffef12432d0137833ccd597771 (commit)
via f65916e1200372811aebbf534c239a589153e4c9 (commit)
via 99e8252a5ab5f4f3cae2738f2f4d5ebedfe17920 (commit)
from 109dc655f6cbbe8a75f78a7b72f7d743e6e26c80 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/7dc192b8fbd33cffef12432d0137833cc…
commit 7dc192b8fbd33cffef12432d0137833ccd597771
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Wed May 1 20:10:11 2013 -0500
(incomplete) Added new string stash/spit macros.
We have been allocating a "large enough" pool of temporary strings and
hoping that we don't overflow it for our temporary allocations. This
commit provides macros that better check for overflow problems without
making the code too clumsy.
No reviewer.
diff --git a/src/pm/hydra/include/hydra.h b/src/pm/hydra/include/hydra.h
index 6cdbfa9..7837ca3 100644
--- a/src/pm/hydra/include/hydra.h
+++ b/src/pm/hydra/include/hydra.h
@@ -163,6 +163,44 @@ extern char **environ;
#define HYDRA_NAMESERVER_DEFAULT_PORT 6392
+struct HYD_string_stash {
+ char **strlist;
+ int max_count;
+ int cur_count;
+};
+
+#define HYD_STRING_STASH_INIT(stash) \
+ do { \
+ (stash).strlist = NULL; \
+ (stash).max_count = 0; \
+ (stash).cur_count = 0; \
+ } while (0)
+
+#define HYD_STRING_STASH(stash, str, status) \
+ do { \
+ if ((stash).cur_count >= (stash).max_count - 1) { \
+ HYDU_REALLOC((stash).strlist, char **, (stash).max_count + HYD_NUM_TMP_STRINGS, \
+ (status)); \
+ (stash).max_count += HYD_NUM_TMP_STRINGS; \
+ } \
+ (stash).strlist[(stash).cur_count++] = (str); \
+ (stash).strlist[(stash).cur_count] = NULL; \
+ } while (0)
+
+#define HYD_STRING_SPIT(stash, str, status) \
+ do { \
+ if ((stash).cur_count == 0) { \
+ (str) = HYDU_strdup(""); \
+ } \
+ else { \
+ (status) = HYDU_str_alloc_and_join((stash).strlist, &(str)); \
+ HYDU_ERR_POP((status), "unable to join strings\n"); \
+ HYDU_free_strlist((stash).strlist); \
+ HYDU_FREE((stash).strlist); \
+ HYD_STRING_STASH_INIT((stash)); \
+ } \
+ } while (0)
+
enum HYD_bool {
HYD_FALSE = 0,
HYD_TRUE = 1
@@ -608,19 +646,6 @@ HYD_status HYDU_sock_cloexec(int fd);
HYDU_free((void *) p); \
}
-#define HYDU_STRLIST_CONSOLIDATE(strlist, i, status) \
- { \
- char *out; \
- if ((i) >= (HYD_NUM_TMP_STRINGS / 2)) { \
- (strlist)[(i)] = NULL; \
- (status) = HYDU_str_alloc_and_join((strlist), &out); \
- HYDU_ERR_POP((status), "unable to join strings\n"); \
- HYDU_free_strlist((strlist)); \
- strlist[0] = out; \
- (i) = 1; \
- } \
- }
-
HYD_status HYDU_list_append_strlist(char **exec, char **client_arg);
HYD_status HYDU_print_strlist(char **args);
void HYDU_free_strlist(char **args);
diff --git a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
index 3fb1992..9ec7b30 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
@@ -183,10 +183,10 @@ static HYD_status fn_init(int fd, char *args[])
static HYD_status fn_initack(int fd, char *args[])
{
int id, i;
- char *val;
+ char *val, *cmd;
struct HYD_pmcd_token *tokens;
int token_count;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -209,22 +209,19 @@ static HYD_status fn_initack(int fd, char *args[])
}
HYDU_ASSERT(i < HYD_pmcd_pmip.local.proxy_process_count, status);
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=initack\ncmd=set size=");
- tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_process_count);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=initack\ncmd=set size="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_process_count),
+ status);
- /* FIXME: allow for multiple ranks per PMI ID */
- tmp[i++] = HYDU_strdup("\ncmd=set rank=");
- tmp[i++] = HYDU_int_to_str(id);
+ HYD_STRING_STASH(stash, HYDU_strdup("\ncmd=set rank="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(id), status);
- tmp[i++] = HYDU_strdup("\ncmd=set debug=");
- tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.user_global.debug);
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("\ncmd=set debug="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(HYD_pmcd_pmip.user_global.debug), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "error while joining strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -241,25 +238,22 @@ static HYD_status fn_initack(int fd, char *args[])
static HYD_status fn_get_maxes(int fd, char *args[])
{
- int i;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=maxes kvsname_max=");
- tmp[i++] = HYDU_int_to_str(PMI_MAXKVSLEN);
- tmp[i++] = HYDU_strdup(" keylen_max=");
- tmp[i++] = HYDU_int_to_str(PMI_MAXKEYLEN);
- tmp[i++] = HYDU_strdup(" vallen_max=");
- tmp[i++] = HYDU_int_to_str(PMI_MAXVALLEN);
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
-
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=maxes kvsname_max="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(PMI_MAXKVSLEN), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(" keylen_max="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(PMI_MAXKEYLEN), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(" vallen_max="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(PMI_MAXVALLEN), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
+
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -277,7 +271,8 @@ static HYD_status fn_get_appnum(int fd, char *args[])
{
int i, idx;
struct HYD_exec *exec;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -296,15 +291,12 @@ static HYD_status fn_get_appnum(int fd, char *args[])
break;
}
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=appnum appnum=");
- tmp[i++] = HYDU_int_to_str(exec->appnum);
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=appnum appnum="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(exec->appnum), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -320,21 +312,18 @@ static HYD_status fn_get_appnum(int fd, char *args[])
static HYD_status fn_get_my_kvsname(int fd, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
- int i;
+ struct HYD_string_stash stash;
+ char *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=my_kvsname kvsname=");
- tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname);
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=my_kvsname kvsname="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -350,26 +339,25 @@ static HYD_status fn_get_my_kvsname(int fd, char *args[])
static HYD_status fn_get_usize(int fd, char *args[])
{
- int i;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=universe_size size=");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=universe_size size="), status);
if (HYD_pmcd_pmip.user_global.usize == HYD_USIZE_SYSTEM)
- tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_core_map.global_count);
+ HYD_STRING_STASH(stash,
+ HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_core_map.global_count),
+ status);
else if (HYD_pmcd_pmip.user_global.usize == HYD_USIZE_INFINITE)
- tmp[i++] = HYDU_int_to_str(-1);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(-1), status);
else
- tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.user_global.usize);
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_int_to_str(HYD_pmcd_pmip.user_global.usize), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -385,7 +373,8 @@ static HYD_status fn_get_usize(int fd, char *args[])
static HYD_status fn_get(int fd, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *key, *val;
+ struct HYD_string_stash stash;
+ char *cmd, *key, *val;
struct HYD_pmcd_token *tokens;
int token_count, i;
HYD_status status = HYD_SUCCESS;
@@ -400,15 +389,13 @@ static HYD_status fn_get(int fd, char *args[])
"unable to find token: key\n");
if (!strcmp(key, "PMI_process_mapping")) {
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=get_result rc=0 msg=success value=");
- tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.system_global.pmi_process_mapping);
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=get_result rc=0 msg=success value="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.system_global.pmi_process_mapping),
+ status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending PMI response\n");
@@ -423,23 +410,20 @@ static HYD_status fn_get(int fd, char *args[])
}
}
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=get_result rc=");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=get_result rc="), status);
if (val) {
- tmp[i++] = HYDU_strdup("0 msg=success value=");
- tmp[i++] = HYDU_strdup(val);
+ HYD_STRING_STASH(stash, HYDU_strdup("0 msg=success value="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(val), status);
}
else {
- tmp[i++] = HYDU_strdup("-1 msg=key_");
- tmp[i++] = HYDU_strdup(key);
- tmp[i++] = HYDU_strdup("_not_found value=unknown");
+ HYD_STRING_STASH(stash, HYDU_strdup("-1 msg=key_"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(key), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("_not_found value=unknown"), status);
}
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = send_cmd_downstream(fd, cmd);
HYDU_ERR_POP(status, "error sending command downstream\n");
@@ -457,10 +441,11 @@ static HYD_status fn_get(int fd, char *args[])
static HYD_status fn_put(int fd, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
char *key, *val;
struct HYD_pmcd_token *tokens;
- int token_count, i;
+ int token_count;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -477,15 +462,12 @@ static HYD_status fn_put(int fd, char *args[])
val = HYDU_strdup("");
/* add to the cache */
- i = 0;
- tmp[i++] = HYDU_strdup(key);
- tmp[i++] = HYDU_strdup("=");
- tmp[i++] = HYDU_strdup(val);
- tmp[i++] = NULL;
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup(key), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(val), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
cache_put.keyval[cache_put.keyval_len++] = cmd;
debug("cached command: %s\n", cmd);
diff --git a/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c b/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
index 4246057..8d2c66d 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
@@ -17,25 +17,23 @@ static struct HYD_pmcd_pmi_v2_reqs *pending_reqs = NULL;
static HYD_status send_cmd_upstream(const char *start, int fd, char *args[])
{
- int i, j, sent, closed;
- char *tmp[HYD_NUM_TMP_STRINGS], *buf;
+ int i, sent, closed;
+ struct HYD_string_stash stash;
+ char *buf;
struct HYD_pmcd_hdr hdr;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
- j = 0;
- tmp[j++] = HYDU_strdup(start);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup(start), status);
for (i = 0; args[i]; i++) {
- tmp[j++] = HYDU_strdup(args[i]);
+ HYD_STRING_STASH(stash, HYDU_strdup(args[i]), status);
if (args[i + 1])
- tmp[j++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[j] = NULL;
- status = HYDU_str_alloc_and_join(tmp, &buf);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, buf, status);
HYD_pmcd_init_header(&hdr);
hdr.cmd = PMI_CMD;
@@ -152,7 +150,8 @@ static HYD_status fn_fullinit(int fd, char *args[])
{
int id, i;
char *rank_str;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -177,30 +176,29 @@ static HYD_status fn_fullinit(int fd, char *args[])
}
HYDU_ASSERT(i < HYD_pmcd_pmip.local.proxy_process_count, status);
- i = 0;
- /* FIXME: allow for multiple ranks per PMI ID */
- tmp[i++] = HYDU_strdup("cmd=fullinit-response;pmi-version=2;pmi-subversion=0;rank=");
- tmp[i++] = HYDU_int_to_str(id);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash,
+ HYDU_strdup("cmd=fullinit-response;pmi-version=2;pmi-subversion=0;rank="),
+ status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(id), status);
- tmp[i++] = HYDU_strdup(";size=");
- tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_process_count);
- tmp[i++] = HYDU_strdup(";appnum=0");
+ HYD_STRING_STASH(stash, HYDU_strdup(";size="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_process_count),
+ status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";appnum=0"), status);
if (HYD_pmcd_pmip.local.spawner_kvsname) {
- tmp[i++] = HYDU_strdup(";spawner-jobid=");
- tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.spawner_kvsname);
+ HYD_STRING_STASH(stash, HYDU_strdup(";spawner-jobid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.local.spawner_kvsname), status);
}
if (HYD_pmcd_pmip.user_global.debug) {
- tmp[i++] = HYDU_strdup(";debugged=TRUE;pmiverbose=TRUE");
+ HYD_STRING_STASH(stash, HYDU_strdup(";debugged=TRUE;pmiverbose=TRUE"), status);
}
else {
- tmp[i++] = HYDU_strdup(";debugged=FALSE;pmiverbose=FALSE");
+ HYD_STRING_STASH(stash, HYDU_strdup(";debugged=FALSE;pmiverbose=FALSE"), status);
}
- tmp[i++] = HYDU_strdup(";rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "error while joining strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -216,8 +214,8 @@ static HYD_status fn_fullinit(int fd, char *args[])
static HYD_status fn_job_getid(int fd, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid;
- int i;
+ struct HYD_string_stash stash;
+ char *cmd, *thrid;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -229,22 +227,18 @@ static HYD_status fn_job_getid(int fd, char *args[])
thrid = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "thrid");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=job-getid-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=job-getid-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("jobid=");
- tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname);
- tmp[i++] = HYDU_strdup(";rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("jobid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
-
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -259,11 +253,10 @@ static HYD_status fn_job_getid(int fd, char *args[])
static HYD_status fn_info_putnodeattr(int fd, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
- char *key, *val, *thrid;
- int i, ret;
+ struct HYD_string_stash stash;
+ char *key, *val, *thrid, *cmd;
struct HYD_pmcd_token *tokens;
- int token_count;
+ int token_count, ret;
struct HYD_pmcd_pmi_v2_reqs *req;
HYD_status status = HYD_SUCCESS;
@@ -284,21 +277,18 @@ static HYD_status fn_info_putnodeattr(int fd, char *args[])
status = HYD_pmcd_pmi_add_kvs(key, val, HYD_pmcd_pmip.local.kvs, &ret);
HYDU_ERR_POP(status, "unable to put data into kvs\n");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=info-putnodeattr-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-putnodeattr-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("rc=");
- tmp[i++] = HYDU_int_to_str(ret);
- tmp[i++] = HYDU_strdup(";");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("rc="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(ret), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -322,10 +312,11 @@ static HYD_status fn_info_putnodeattr(int fd, char *args[])
static HYD_status fn_info_getnodeattr(int fd, char *args[])
{
- int i, found;
+ int found;
struct HYD_pmcd_pmi_kvs_pair *run;
char *key, *waitval, *thrid;
- char *tmp[HYD_NUM_TMP_STRINGS] = { 0 }, *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -353,21 +344,18 @@ static HYD_status fn_info_getnodeattr(int fd, char *args[])
}
if (found) { /* We found the attribute */
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=info-getnodeattr-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-getnodeattr-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("found=TRUE;value=");
- tmp[i++] = HYDU_strdup(run->val);
- tmp[i++] = HYDU_strdup(";rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("found=TRUE;value="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(run->val), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -381,19 +369,16 @@ static HYD_status fn_info_getnodeattr(int fd, char *args[])
}
else {
/* Tell the client that we can't find the attribute */
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=info-getnodeattr-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-getnodeattr-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("found=FALSE;rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("found=FALSE;rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -409,9 +394,10 @@ static HYD_status fn_info_getnodeattr(int fd, char *args[])
static HYD_status fn_info_getjobattr(int fd, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *key, *thrid;
+ struct HYD_string_stash stash;
+ char *cmd, *key, *thrid;
struct HYD_pmcd_token *tokens;
- int token_count, i;
+ int token_count;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -426,21 +412,19 @@ static HYD_status fn_info_getjobattr(int fd, char *args[])
thrid = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "thrid");
if (!strcmp(key, "PMI_process_mapping")) {
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=info-getjobattr-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-getjobattr-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("found=TRUE;value=");
- tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.system_global.pmi_process_mapping);
- tmp[i++] = HYDU_strdup(";rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("found=TRUE;value="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(HYD_pmcd_pmip.system_global.pmi_process_mapping),
+ status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
@@ -462,9 +446,10 @@ static HYD_status fn_info_getjobattr(int fd, char *args[])
static HYD_status fn_finalize(int fd, char *args[])
{
char *thrid;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ struct HYD_string_stash stash;
+ char *cmd;
struct HYD_pmcd_token *tokens;
- int token_count, i;
+ int token_count;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -474,19 +459,16 @@ static HYD_status fn_finalize(int fd, char *args[])
thrid = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "thrid");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=finalize-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=finalize-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
send_cmd_downstream(fd, cmd);
HYDU_FREE(cmd);
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
index cbc4c08..a18d807 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
@@ -243,7 +243,7 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
int token_count, i, j, k, new_pgid, total_spawns;
int argcnt, num_segments;
char *control_port, *proxy_args[HYD_NUM_TMP_STRINGS] = { NULL };
- char *tmp[HYD_NUM_TMP_STRINGS];
+ struct HYD_string_stash stash;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -398,15 +398,12 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
if (path == NULL)
execname = HYDU_strdup(val);
else {
- i = 0;
- tmp[i++] = HYDU_strdup(path);
- tmp[i++] = HYDU_strdup("/");
- tmp[i++] = HYDU_strdup(val);
- tmp[i++] = NULL;
-
- status = HYDU_str_alloc_and_join(tmp, &execname);
- HYDU_ERR_POP(status, "error while joining strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup(path), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("/"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(val), status);
+
+ HYD_STRING_SPIT(stash, execname, status);
}
i = 0;
@@ -513,16 +510,13 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
HYDU_ERR_POP(status, "launcher cannot launch processes\n");
{
- char *cmd_str[HYD_NUM_TMP_STRINGS], *cmd;
+ char *cmd;
- i = 0;
- cmd_str[i++] = HYDU_strdup("cmd=spawn_result rc=0");
- cmd_str[i++] = HYDU_strdup("\n");
- cmd_str[i++] = NULL;
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=spawn_result rc=0"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("\n"), status);
- status = HYDU_str_alloc_and_join(cmd_str, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(cmd_str);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "error writing PMI line\n");
@@ -547,8 +541,9 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
static HYD_status fn_publish_name(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *val;
- int i, token_count;
+ struct HYD_string_stash stash;
+ char *cmd, *val;
+ int token_count;
struct HYD_pmcd_token *tokens;
char *name, *port;
int success = 0;
@@ -570,16 +565,16 @@ static HYD_status fn_publish_name(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_publish(name, port, &success);
HYDU_ERR_POP(status, "error publishing service\n");
- i = 0;
+ HYD_STRING_STASH_INIT(stash);
if (success)
- tmp[i++] = HYDU_strdup("cmd=publish_result info=ok rc=0 msg=success\n");
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=publish_result info=ok rc=0 msg=success\n"),
+ status);
else
- tmp[i++] = HYDU_strdup("cmd=publish_result info=ok rc=1 msg=key_already_present\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash,
+ HYDU_strdup("cmd=publish_result info=ok rc=1 msg=key_already_present\n"),
+ status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -595,8 +590,9 @@ static HYD_status fn_publish_name(int fd, int pid, int pgid, char *args[])
static HYD_status fn_unpublish_name(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *name;
- int i, token_count;
+ struct HYD_string_stash stash;
+ char *cmd, *name;
+ int token_count;
struct HYD_pmcd_token *tokens;
int success = 0;
HYD_status status = HYD_SUCCESS;
@@ -612,16 +608,16 @@ static HYD_status fn_unpublish_name(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_unpublish(name, &success);
HYDU_ERR_POP(status, "error unpublishing service\n");
- i = 0;
+ HYD_STRING_STASH_INIT(stash);
if (success)
- tmp[i++] = HYDU_strdup("cmd=unpublish_result info=ok rc=0 msg=success\n");
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=unpublish_result info=ok rc=0 msg=success\n"),
+ status);
else
- tmp[i++] = HYDU_strdup("cmd=unpublish_result info=ok rc=1 msg=service_not_found\n");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash,
+ HYDU_strdup("cmd=unpublish_result info=ok rc=1 msg=service_not_found\n"),
+ status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -637,8 +633,9 @@ static HYD_status fn_unpublish_name(int fd, int pid, int pgid, char *args[])
static HYD_status fn_lookup_name(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *name, *value;
- int i, token_count;
+ struct HYD_string_stash stash;
+ char *cmd, *name, *value;
+ int token_count;
struct HYD_pmcd_token *tokens;
HYD_status status = HYD_SUCCESS;
@@ -653,21 +650,18 @@ static HYD_status fn_lookup_name(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_lookup(name, &value);
HYDU_ERR_POP(status, "error while looking up service\n");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=lookup_result");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=lookup_result"), status);
if (value) {
- tmp[i++] = HYDU_strdup(" port=");
- tmp[i++] = HYDU_strdup(value);
- tmp[i++] = HYDU_strdup(" info=ok rc=0 msg=success\n");
+ HYD_STRING_STASH(stash, HYDU_strdup(" port="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(value), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(" info=ok rc=0 msg=success\n"), status);
}
else {
- tmp[i++] = HYDU_strdup(" rc=1 msg=service_not_found\n");
+ HYD_STRING_STASH(stash, HYDU_strdup(" rc=1 msg=service_not_found\n"), status);
}
- tmp[i++] = NULL;
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
index 87ff14f..bdfc7f7 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
@@ -111,13 +111,12 @@ static HYD_status poke_progress(char *key)
static HYD_status fn_info_getjobattr(int fd, int pid, int pgid, char *args[])
{
- int i;
struct HYD_proxy *proxy;
struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
struct HYD_pmcd_pmi_kvs_pair *run;
const char *key;
- char *thrid, *val;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ char *thrid, *val, *cmd;
+ struct HYD_string_stash stash;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -149,28 +148,24 @@ static HYD_status fn_info_getjobattr(int fd, int pid, int pgid, char *args[])
}
}
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=info-getjobattr-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=info-getjobattr-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("found=");
+ HYD_STRING_STASH(stash, HYDU_strdup("found="), status);
if (val) {
- tmp[i++] = HYDU_strdup("TRUE;value=");
- tmp[i++] = HYDU_strdup(val);
- tmp[i++] = HYDU_strdup(";rc=0;");
+ HYD_STRING_STASH(stash, HYDU_strdup("TRUE;value="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(val), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";rc=0;"), status);
}
else {
- tmp[i++] = HYDU_strdup("FALSE;rc=0;");
+ HYD_STRING_STASH(stash, HYDU_strdup("FALSE;rc=0;"), status);
}
- tmp[i++] = NULL;
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
-
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -188,9 +183,9 @@ static HYD_status fn_info_getjobattr(int fd, int pid, int pgid, char *args[])
static HYD_status fn_kvs_put(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
- char *key, *val, *thrid;
- int i, ret;
+ struct HYD_string_stash stash;
+ char *key, *val, *thrid, *cmd;
+ int ret;
struct HYD_proxy *proxy;
struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
struct HYD_pmcd_token *tokens;
@@ -222,22 +217,18 @@ static HYD_status fn_kvs_put(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_add_kvs(key, val, pg_scratch->kvs, &ret);
HYDU_ERR_POP(status, "unable to put data into kvs\n");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=kvs-put-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=kvs-put-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("rc=");
- tmp[i++] = HYDU_int_to_str(ret);
- tmp[i++] = HYDU_strdup(";");
- tmp[i++] = NULL;
-
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
+ HYD_STRING_STASH(stash, HYDU_strdup("rc="), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(ret), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -268,8 +259,8 @@ static HYD_status fn_kvs_get(int fd, int pid, int pgid, char *args[])
struct HYD_pg *pg;
struct HYD_proxy *proxy;
struct HYD_pmcd_pmi_kvs_pair *run;
- char *key, *thrid;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ char *key, *thrid, *cmd;
+ struct HYD_string_stash stash;
struct HYD_pmcd_token *tokens;
int token_count;
HYD_status status = HYD_SUCCESS;
@@ -322,27 +313,24 @@ static HYD_status fn_kvs_get(int fd, int pid, int pgid, char *args[])
}
}
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=kvs-get-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=kvs-get-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
if (found) {
- tmp[i++] = HYDU_strdup("found=TRUE;value=");
- tmp[i++] = HYDU_strdup(run->val);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("found=TRUE;value="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(run->val), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
else {
- tmp[i++] = HYDU_strdup("found=FALSE;");
+ HYD_STRING_STASH(stash, HYDU_strdup("found=FALSE;"), status);
}
- tmp[i++] = HYDU_strdup("rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -361,7 +349,8 @@ static HYD_status fn_kvs_fence(int fd, int pid, int pgid, char *args[])
{
struct HYD_proxy *proxy;
struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid;
+ struct HYD_string_stash stash;
+ char *cmd, *thrid;
struct HYD_pmcd_token *tokens;
int token_count, i;
static int fence_count = 0;
@@ -396,19 +385,16 @@ static HYD_status fn_kvs_fence(int fd, int pid, int pgid, char *args[])
pg_scratch->ecount[i].epoch = 1;
}
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=kvs-fence-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=kvs-fence-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- tmp[i++] = HYDU_strdup("rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -472,7 +458,7 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
int token_count, i, j, k, new_pgid;
int argcnt, num_segments;
char *control_port, *proxy_args[HYD_NUM_TMP_STRINGS] = { NULL };
- char *tmp[HYD_NUM_TMP_STRINGS];
+ struct HYD_string_stash stash;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -613,15 +599,12 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
if (path == NULL)
execname = HYDU_strdup(val);
else {
- i = 0;
- tmp[i++] = HYDU_strdup(path);
- tmp[i++] = HYDU_strdup("/");
- tmp[i++] = HYDU_strdup(val);
- tmp[i++] = NULL;
-
- status = HYDU_str_alloc_and_join(tmp, &execname);
- HYDU_ERR_POP(status, "error while joining strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup(path), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("/"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(val), status);
+
+ HYD_STRING_SPIT(stash, execname, status);
}
i = 0;
@@ -727,25 +710,22 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
HYDU_ERR_POP(status, "launcher cannot launch processes\n");
{
- char *cmd_str[HYD_NUM_TMP_STRINGS], *cmd;
+ char *cmd;
- i = 0;
- cmd_str[i++] = HYDU_strdup("cmd=spawn-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=spawn-response;"), status);
if (thrid) {
- cmd_str[i++] = HYDU_strdup("thrid=");
- cmd_str[i++] = HYDU_strdup(thrid);
- cmd_str[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
- cmd_str[i++] = HYDU_strdup("rc=0;");
- cmd_str[i++] = HYDU_strdup("jobid=");
- cmd_str[i++] = HYDU_strdup(pg_scratch->kvs->kvsname);
- cmd_str[i++] = HYDU_strdup(";");
- cmd_str[i++] = HYDU_strdup("nerrs=0;");
- cmd_str[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("jobid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(pg_scratch->kvs->kvsname), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("nerrs=0;"), status);
- status = HYDU_str_alloc_and_join(cmd_str, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(cmd_str);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -766,9 +746,9 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
static HYD_status fn_name_publish(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid, *val;
- char *name, *port;
- int i, token_count, success;
+ struct HYD_string_stash stash;
+ char *cmd, *thrid, *val, *name, *port;
+ int token_count, success;
struct HYD_pmcd_token *tokens;
HYD_status status = HYD_SUCCESS;
@@ -790,25 +770,22 @@ static HYD_status fn_name_publish(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_publish(name, port, &success);
HYDU_ERR_POP(status, "error publishing service\n");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=name-publish-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=name-publish-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
if (!success) {
- tmp[i++] = HYDU_strdup("rc=1;errmsg=duplicate_service_");
- tmp[i++] = HYDU_strdup(name);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=1;errmsg=duplicate_service_"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(name), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
else
- tmp[i++] = HYDU_strdup("rc=0;");
- tmp[i++] = NULL;
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -824,8 +801,9 @@ static HYD_status fn_name_publish(int fd, int pid, int pgid, char *args[])
static HYD_status fn_name_unpublish(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid, *name;
- int i, token_count, success;
+ struct HYD_string_stash stash;
+ char *cmd, *thrid, *name;
+ int token_count, success;
struct HYD_pmcd_token *tokens;
HYD_status status = HYD_SUCCESS;
@@ -842,25 +820,22 @@ static HYD_status fn_name_unpublish(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_unpublish(name, &success);
HYDU_ERR_POP(status, "error unpublishing service\n");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=name-unpublish-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=name-unpublish-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
if (success)
- tmp[i++] = HYDU_strdup("rc=0;");
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=0;"), status);
else {
- tmp[i++] = HYDU_strdup("rc=1;errmsg=service_");
- tmp[i++] = HYDU_strdup(name);
- tmp[i++] = HYDU_strdup("_not_found;");
+ HYD_STRING_STASH(stash, HYDU_strdup("rc=1;errmsg=service_"), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(name), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("_not_found;"), status);
}
- tmp[i++] = NULL;
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
@@ -876,9 +851,10 @@ static HYD_status fn_name_unpublish(int fd, int pid, int pgid, char *args[])
static HYD_status fn_name_lookup(int fd, int pid, int pgid, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *thrid, *name, *value;
+ struct HYD_string_stash stash;
+ char *cmd, *thrid, *name, *value;
struct HYD_pmcd_pmi_publish *publish;
- int i, token_count;
+ int token_count;
struct HYD_pmcd_token *tokens;
HYD_status status = HYD_SUCCESS;
@@ -898,26 +874,23 @@ static HYD_status fn_name_lookup(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_lookup(name, &value);
HYDU_ERR_POP(status, "error while looking up service\n");
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=name-lookup-response;");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("cmd=name-lookup-response;"), status);
if (thrid) {
- tmp[i++] = HYDU_strdup("thrid=");
- tmp[i++] = HYDU_strdup(thrid);
- tmp[i++] = HYDU_strdup(";");
+ HYD_STRING_STASH(stash, HYDU_strdup("thrid="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(thrid), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";"), status);
}
if (value) {
- tmp[i++] = HYDU_strdup("port=");
- tmp[i++] = HYDU_strdup(value);
- tmp[i++] = HYDU_strdup(";found=TRUE;rc=0;");
+ HYD_STRING_STASH(stash, HYDU_strdup("port="), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(value), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(";found=TRUE;rc=0;"), status);
}
else {
- tmp[i++] = HYDU_strdup("found=FALSE;rc=1;");
+ HYD_STRING_STASH(stash, HYDU_strdup("found=FALSE;rc=1;"), status);
}
- tmp[i++] = NULL;
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, cmd, status);
status = cmd_response(fd, pid, cmd);
HYDU_ERR_POP(status, "send command failed\n");
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_utils.c b/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
index 45222aa..a64f111 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
@@ -12,8 +12,8 @@
HYD_status HYD_pmcd_pmi_fill_in_proxy_args(char **proxy_args, char *control_port, int pgid)
{
- int i, arg, use_ddd, use_valgrind, use_strace, retries, ret;
- char *path_str[HYD_NUM_TMP_STRINGS];
+ int arg, use_ddd, use_valgrind, use_strace, retries, ret;
+ struct HYD_string_stash stash;
HYD_status status = HYD_SUCCESS;
arg = 0;
@@ -45,13 +45,11 @@ HYD_status HYD_pmcd_pmi_fill_in_proxy_args(char **proxy_args, char *control_port
proxy_args[arg++] = HYDU_strdup("-ff");
}
- i = 0;
- path_str[i++] = HYDU_strdup(HYD_server_info.base_path);
- path_str[i++] = HYDU_strdup("hydra_pmi_proxy");
- path_str[i] = NULL;
- status = HYDU_str_alloc_and_join(path_str, &proxy_args[arg++]);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(path_str);
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup(HYD_server_info.base_path), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("hydra_pmi_proxy"), status);
+ HYD_STRING_SPIT(stash, proxy_args[arg], status);
+ arg++;
proxy_args[arg++] = HYDU_strdup("--control-port");
proxy_args[arg++] = HYDU_strdup(control_port);
@@ -113,8 +111,8 @@ HYD_status HYD_pmcd_pmi_fill_in_proxy_args(char **proxy_args, char *control_port
static HYD_status pmi_process_mapping(struct HYD_pg *pg, char **process_mapping_str)
{
- int i, is_equal, filler_round, core_count;
- char *tmp[HYD_NUM_TMP_STRINGS];
+ int is_equal, filler_round, core_count;
+ struct HYD_string_stash stash;
struct block {
int start_idx;
int num_nodes;
@@ -204,28 +202,23 @@ static HYD_status pmi_process_mapping(struct HYD_pg *pg, char **process_mapping_
create_mapping_key:
/* Create the mapping out of the blocks */
- i = 0;
- tmp[i++] = HYDU_strdup("(");
- tmp[i++] = HYDU_strdup("vector,");
+ HYD_STRING_STASH_INIT(stash);
+ HYD_STRING_STASH(stash, HYDU_strdup("("), status);
+ HYD_STRING_STASH(stash, HYDU_strdup("vector,"), status);
for (block = blocklist_head; block; block = block->next) {
- tmp[i++] = HYDU_strdup("(");
- tmp[i++] = HYDU_int_to_str(block->start_idx);
- tmp[i++] = HYDU_strdup(",");
- tmp[i++] = HYDU_int_to_str(block->num_nodes);
- tmp[i++] = HYDU_strdup(",");
- tmp[i++] = HYDU_int_to_str(block->core_count);
- tmp[i++] = HYDU_strdup(")");
+ HYD_STRING_STASH(stash, HYDU_strdup("("), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(block->start_idx), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(","), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(block->num_nodes), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(","), status);
+ HYD_STRING_STASH(stash, HYDU_int_to_str(block->core_count), status);
+ HYD_STRING_STASH(stash, HYDU_strdup(")"), status);
if (block->next)
- tmp[i++] = HYDU_strdup(",");
- HYDU_STRLIST_CONSOLIDATE(tmp, i, status);
+ HYD_STRING_STASH(stash, HYDU_strdup(","), status);
}
- tmp[i++] = HYDU_strdup(")");
- tmp[i++] = NULL;
-
- status = HYDU_str_alloc_and_join(tmp, process_mapping_str);
- HYDU_ERR_POP(status, "error while joining strings\n");
+ HYD_STRING_STASH(stash, HYDU_strdup(")"), status);
- HYDU_free_strlist(tmp);
+ HYD_STRING_SPIT(stash, *process_mapping_str, status);
for (block = blocklist_head; block; block = nblock) {
nblock = block->next;
http://git.mpich.org/mpich.git/commitdiff/f65916e1200372811aebbf534c239a589…
commit f65916e1200372811aebbf534c239a589153e4c9
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun Apr 28 22:05:54 2013 -0500
VPATH bug-fix.
This bug didn't show up on Ubuntu, but did on FreeBSD. Perhaps
FreeBSD doesn't automatically fix this for us.
No reviewer.
diff --git a/src/util/param/Makefile.mk b/src/util/param/Makefile.mk
index 88148b3..8c3fd7f 100644
--- a/src/util/param/Makefile.mk
+++ b/src/util/param/Makefile.mk
@@ -12,7 +12,6 @@ dist_noinst_DATA += src/util/param/params.yml
if MAINTAINER_MODE
# normally built by autogen.sh, but this rebuild rule is here
-src/util/param/param_vals.c: src/util/param/params.yml $(top_srcdir)/maint/genparams
+$(top_srcdir)/src/util/param/param_vals.c: $(top_srcdir)/src/util/param/params.yml $(top_srcdir)/maint/genparams
( cd $(top_srcdir) && ./maint/genparams )
endif MAINTAINER_MODE
-
http://git.mpich.org/mpich.git/commitdiff/99e8252a5ab5f4f3cae2738f2f4d5ebed…
commit 99e8252a5ab5f4f3cae2738f2f4d5ebedfe17920
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sat Apr 27 12:16:40 2013 -0500
Cleanup confdb macros.
1. AC_RUN_LOG is no longer an autoconf internal macro (it might have been
at some point). We can use it directly.
2. Replace PAC_RUNLOG_IFELSE to use autoconf-native macros, plus some
minor additional work. Get rid of PAC_COMMAND_IFELSE and
PAC_EVAL_IFELSE, which seem to be identical to PAC_RUNLOG_IFELSE. One
option is to just point them to PAC_RUNLOG_IFELSE, but this commit
does not do that, since they seem to be unused. Other projects that
use these macros can just point to PAC_RUNLOG_IFELSE if needed.
3. We no longer need PAS_VAR_COPY since AS_VAR_COPY is present in
newer autoconf versions.
4. PAC_VAR_PUSHFLAG and PAC_VAR_POPFLAG are duplicates of
PAC_PUSH_FLAG and PAC_POP_FLAG. Also, unlike the PAC_VAR_ macro
variants, the flag is not updated by the PAC_PUSH/PAC_POP macros, so
the older value is retained.
5. The AM_IGNORE macro provided in confdb only works for a patched
automake, with no patch available to use. We should either have both
or neither.
6. aclocal_atomic.m4 is now replaced by OPA.
7. The old F77 macros were kept around as backup when we moved to the
new macros (though this is really the job of the VCS). It's been
several years since that was done. We can safely remove the f77old.m4
file. It is still in git if we ever need to go back.
8. Other general cleanup.
No reviewer.
diff --git a/confdb/aclocal.m4 b/confdb/aclocal.m4
index 488feaa..36fb15c 100644
--- a/confdb/aclocal.m4
+++ b/confdb/aclocal.m4
@@ -1,18 +1,13 @@
dnl This version of aclocal.m4 simply includes all of the individual
dnl components
-builtin(include,aclocal_am.m4)
builtin(include,aclocal_bugfix.m4)
builtin(include,aclocal_cache.m4)
builtin(include,aclocal_cc.m4)
-builtin(include,aclocal_atomic.m4)
dnl aclocal_cross.m4 uses autoconf features dated back to 2.13.
dnl too old to be useful, 07/14/2010.
dnl builtin(include,aclocal_cross.m4)
builtin(include,aclocal_cxx.m4)
builtin(include,aclocal_f77.m4)
-dnl aclocal_f77old.m4 contains PAC_PROG_F77_CMDARGS which is NOT used in MPICH
-dnl but it is still used by other packages, so leave it in confdb.
-dnl builtin(include,aclocal_f77old.m4)
builtin(include,aclocal_util.m4)
builtin(include,aclocal_subcfg.m4)
builtin(include,aclocal_make.m4)
diff --git a/confdb/aclocal_am.m4 b/confdb/aclocal_am.m4
deleted file mode 100644
index 4d3b0de..0000000
--- a/confdb/aclocal_am.m4
+++ /dev/null
@@ -1,6 +0,0 @@
-dnl AM_IGNORE is an extension that tells (a patched) automake not to
-dnl include the specified AC_SUBST variable in the Makefile.in that
-dnl automake generates. We don't use AC_DEFUN, since aclocal will
-dnl then complain that AM_IGNORE is a duplicate (if you are using the
-dnl patched automake/aclocal).
-m4_ifdef([AM_IGNORE],[],[m4_define([AM_IGNORE],[])])
diff --git a/confdb/aclocal_atomic.m4 b/confdb/aclocal_atomic.m4
deleted file mode 100644
index 4e96cfb..0000000
--- a/confdb/aclocal_atomic.m4
+++ /dev/null
@@ -1,227 +0,0 @@
-dnl /*D PAC_C_MEMATOMIC - Try and determine how to implement memory-atomic
-dnl operations with the selected C compiler
-dnl
-dnl Synopsis:
-dnl PAC_C_MEMATOMIC
-dnl
-dnl Notes:
-dnl Defines names of the following form
-dnl + HAVE_GCC_ASM_AND_X86_{MFENCE,LFENCE,SFENCE} - gcc __asm__ will issue
-dnl mfence, lfence, or sfence
-dnl . HAVE___ASM_AND_X86_{MFENCE,LFENCE,SFENCE} - __asm _emit will issue
-dnl mfence, lfence, or sfence
-dnl . HAVE_ASM_AND_X86_{MFENCE,LFENCE,SFENCE} - asm("...") will issue
-dnl mfence, lfence, or sfence
-dnl . HAVE__INTERLOCKEDEXCHANGE - _InterlockedExchange intrinsic is available
-dnl (IA64)
-dnl . HAVE_GCC_ASM_SPARC_MEMBAR - gcc __asm__ will issue SPARC architecture
-dnl memory barrier instruction
-dnl . HAVE_SOLARIS_ASM_SPARC_MEMBAR - Solaris asm() will issue SPARC
-dnl architecture memory barrier instruction
-dnl . HAVE_GCC_ASM_SPARC_STBAR - gcc __asm__ will issue stbar
-dnl - HAVE_SOLARIS_ASM_SPARC_STBAR - Solaris __asm() will issue stbar
-dnl
-dnl D*/
-AC_DEFUN([PAC_C_MEMATOMIC],[
-AC_CACHE_CHECK([for x86 mfence instruction using __asm__],
- pac_cv_have_gcc_asm_and_x86_mfence,[
-AC_TRY_RUN([
-int main(int argc, char **argv)
-{
- __asm__ __volatile__ ( ".byte 0x0f, 0xae, 0xf0" ::: "memory" );
- exit(0);
-}
-],
-pac_cv_have_gcc_asm_and_x86_mfence=yes,pac_cv_have_gcc_asm_and_x86_mfence=no)])
-
-if test "$pac_cv_have_gcc_asm_and_x86_mfence" = "yes" ; then
- AC_DEFINE(HAVE_GCC_ASM_AND_X86_MFENCE, 1, [Define if using gcc on a x86 system with the mfence instruction])
-fi
-
-AC_CACHE_CHECK([for x86 sfence instruction using __asm__],
- pac_cv_have_gcc_asm_and_x86_sfence,[
-AC_TRY_RUN([
-int main(int argc, char **argv)
-{
- __asm__ __volatile__ ( ".byte 0x0f, 0xae, 0xf8" ::: "memory" );
- exit(0);
-}
-],
-pac_cv_have_gcc_asm_and_x86_sfence=yes,pac_cv_have_gcc_asm_and_x86_sfence=no)])
-
-if test "$pac_cv_have_gcc_asm_and_x86_sfence" = "yes" ; then
- AC_DEFINE(HAVE_GCC_ASM_AND_X86_SFENCE, 1, [Define if using gcc on a x86 system with the sfence instruction])
-fi
-
-AC_CACHE_CHECK([for x86 lfence instruction using __asm__],
- pac_cv_have_gcc_asm_and_x86_lfence,[
-AC_TRY_RUN([
-int main(int argc, char **argv)
-{
- __asm__ __volatile__ ( ".byte 0x0f, 0xae, 0xe8" ::: "memory" );
- exit(0);
-}
-],
-pac_cv_have_gcc_asm_and_x86_lfence=yes,pac_cv_have_gcc_asm_and_x86_lfence=no)])
-
-if test "$pac_cv_have_gcc_asm_and_x86_lfence" = "yes" ; then
- AC_DEFINE(HAVE_GCC_ASM_AND_X86_LFENCE, 1, [Define if using gcc on a x86 system with the lfence instruction])
-fi
-
-dnl Some compilers, like icc, may want __asm _emit
-AC_CACHE_CHECK([for x86 mfence instruction using __asm],
- pac_cv_have___asm_and_x86_mfence,[
-AC_TRY_RUN([
-int main(int argc, char **argv)
-{
- __asm _emit 0x0f __asm _emit 0xae __asm _emit 0xf0 ;
- exit(0);
-}
-],
-pac_cv_have___asm_and_x86_mfence=yes,pac_cv_have___asm_and_x86_mfence=no)])
-
-if test "$pac_cv_have___asm_and_x86_mfence" = "yes" ; then
- AC_DEFINE(HAVE___ASM_AND_X86_MFENCE, 1, [Define if using __asm on a x86 system with the mfence instruction])
-fi
-
-AC_CACHE_CHECK([for x86 sfence instruction using __asm],
- pac_cv_have___asm_and_x86_sfence,[
-AC_TRY_RUN([
-int main(int argc, char **argv)
-{
- __asm sfence ;
- exit(0);
-}
-],
-pac_cv_have___asm_and_x86_sfence=yes,pac_cv_have___asm_and_x86_sfence=no)])
-
-if test "$pac_cv_have___asm_and_x86_sfence" = "yes" ; then
- AC_DEFINE(HAVE___ASM_AND_X86_SFENCE, 1, [Define if using __asm on a x86 system with the sfence instruction])
-fi
-
-AC_CACHE_CHECK([for x86 lfence instruction using __asm],
- pac_cv_have___asm_and_x86_lfence,[
-AC_TRY_RUN([
-int main(int argc, char **argv)
-{
- __asm _emit 0x0f __asm _emit 0xae __asm _emit 0xe8 ;
- exit(0);
-}
-],
-pac_cv_have___asm_and_x86_lfence=yes,pac_cv_have___asm_and_x86_lfence=no)])
-
-if test "$lac_cv_have___asm_and_x86_lfence" = "yes" ; then
- AC_DEFINE(HAVE___ASM_AND_X86_LFENCE, 1, [Define if using __asm on a x86 system with the lfence instruction])
-fi
-
-dnl
-dnl Some compilers, such as pgcc, may require additional arguments.
-dnl pgcc may need -Masmkeyword flag. We may want to try this with and
-dnl without adding -Masmkeyword to CFLAGS
-
-AC_CACHE_CHECK([for x86 mfence instruction using asm()],
- pac_cv_have_asm_and_x86_mfence,[
-AC_TRY_RUN([
-int main(int argc, char **argv)
-{
- asm("_emit 0x0f __asm _emit 0xae __asm _emit 0xf0");
- exit(0);
-}
-],
-pac_cv_have_asm_and_x86_mfence=yes,pac_cv_have_asm_and_x86_mfence=no)])
-
-if test "$pac_cv_have_asm_and_x86_mfence" = "yes" ; then
- AC_DEFINE(HAVE_ASM_AND_X86_MFENCE, 1, [Define if using asm() on a x86 system with the mfence instruction])
-fi
-
-AC_CACHE_CHECK([for x86 sfence instruction using asm()],
- pac_cv_have_asm_and_x86_sfence,[
-AC_TRY_RUN([
-int main(int argc, char **argv)
-{
- asm("sfence");
- exit(0);
-}
-],
-pac_cv_have_asm_and_x86_sfence=yes,pac_cv_have_asm_and_x86_sfence=no)])
-
-if test "$pac_cv_have_asm_and_x86_sfence" = "yes" ; then
- AC_DEFINE(HAVE_ASM_AND_X86_SFENCE, 1, [Define if using asm() on a x86 system with the sfence instruction])
-fi
-
-AC_CACHE_CHECK([for x86 lfence instruction using asm()],
- pac_cv_have_asm_and_x86_lfence,[
-AC_TRY_RUN([
-int main(int argc, char **argv)
-{
- asm("_emit 0x0f __asm _emit 0xae __asm _emit 0xe8");
- exit(0);
-}
-],
-pac_cv_have_asm_and_x86_lfence=yes,pac_cv_have_asm_and_x86_lfence=no)])
-
-if test "$pac_cv_have_asm_and_x86_lfence" = "yes" ; then
- AC_DEFINE(HAVE_ASM_AND_X86_LFENCE, 1, [Define if using asm() on a x86 system with the lfence instruction])
-fi
-
-AC_CACHE_CHECK([for _InterlockedExchange intrinsic],
- pac_cv_have__InterlockedExchange,[
-AC_TRY_RUN([
-int main(int argc, char **argv)
-{
- unsigned long lock, *lock_ptr;
- lock_ptr = &lock;
- _InterlockedExchange(lock_ptr, 1);
- exit(0);
-}
-],
-pac_cv_have__InterlockedExchange=yes,pac_cv_have__InterlockedExchange=no)])
-
-if test "$pac_cv_have__InterlockedExchange" = "yes" ; then
- AC_DEFINE(HAVE__INTERLOCKEDEXCHANGE, 1, [Define if _InterlockedExchange intrinsic is available])
-fi
-
-AC_CACHE_CHECK([for SPARC membar instruction with gcc],
- pac_cv_gcc_sparc_membar,[
-AC_TRY_RUN([
-int main(int argc, char **argv){
- __asm__ __volatile__ ( "membar #StoreLoad | #StoreStore" : : : "memory" );
- exit(0);
-}],pac_cv_gcc_sparc_membar=yes,pac_cv_gcc_sparc_membar=no)])
-if test "$pac_cv_gcc_sparc_membar" = yes ; then
- AC_DEFINE(HAVE_GCC_ASM_SPARC_MEMBAR,1,[Define if gcc asm membar supported])
-fi
-
-AC_CACHE_CHECK([for SPARC membar instruction with Solaris C],
- pac_cv_solaris_sparc_membar,[
-AC_TRY_RUN([
-int main(int argc, char **argv){
- __asm ( "membar #StoreLoad | #StoreStore");
- exit(0);
-}],pac_cv_solaris_sparc_membar=yes,pac_cv_solaris_sparc_membar=no)])
-if test "$pac_cv_solaris_sparc_membar" = yes ; then
- AC_DEFINE(HAVE_SOLARIS_ASM_SPARC_MEMBAR,1,[Define if solaris asm membar supported])
-fi
-
-AC_CACHE_CHECK([for SPARC stbar instruction with gcc],
- pac_cv_gcc_sparc_stbar,[
-AC_TRY_RUN([
-int main(int argc, char **argv){
- __asm__ __volatile__ ( "stbar" : : : "memory" );
- exit(0);
-}],pac_cv_gcc_sparc_stbar=yes,pac_cv_gcc_sparc_stbar=no)])
-if test "$pac_cv_gcc_sparc_stbar" = yes ; then
- AC_DEFINE(HAVE_GCC_ASM_SPARC_STBAR,1,[Define if gcc asm stbar supported])
-fi
-
-AC_CACHE_CHECK([for SPARC stbar instruction with Solaris C],
- pac_cv_solaris_sparc_stbar,[
-AC_TRY_RUN([
-int main(int argc, char **argv){
- __asm ( "stbar" );
- exit(0);
-}],pac_cv_solaris_sparc_stbar=yes,pac_cv_solaris_sparc_stbar=no)])
-if test "$pac_cv_solaris_sparc_stbar" = yes ; then
- AC_DEFINE(HAVE_SOLARIS_ASM_SPARC_STBAR,1,[Define if solaris asm stbar supported])
-fi
-])
\ No newline at end of file
diff --git a/confdb/aclocal_attr_alias.m4 b/confdb/aclocal_attr_alias.m4
index 32f0165..33db329 100644
--- a/confdb/aclocal_attr_alias.m4
+++ b/confdb/aclocal_attr_alias.m4
@@ -148,7 +148,7 @@ int same_addrs2( void *ptr )
])
],[
rm -f pac_conftest_other.$OBJEXT
- PAC_RUNLOG([cp conftest.$OBJEXT pac_conftest_other.$OBJEXT])
+ AC_RUN_LOG([cp conftest.$OBJEXT pac_conftest_other.$OBJEXT])
test -s pac_conftest_other.$OBJEXT && pac_c_attr_alias_other=yes
dnl cp conftest.$ac_ext pac_conftest_other.$ac_ext
dnl echo
@@ -196,7 +196,7 @@ extern int same_addrs2( void *ptr );
])
],[
rm -f pac_conftest_main$EXEEXT
- PAC_RUNLOG([cp conftest$EXEEXT pac_conftest_main$EXEEXT])
+ AC_RUN_LOG([cp conftest$EXEEXT pac_conftest_main$EXEEXT])
test -x pac_conftest_main$EXEEXT && pac_c_attr_alias_main=yes
dnl cp conftest.$ac_ext pac_conftest_main.$ac_ext
dnl echo
@@ -371,7 +371,7 @@ dnl
AC_LANG_PUSH([C])
AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],[
cp conftest.$ac_ext pac_conftest.c
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
PAC_PUSH_FLAG([LIBS])
LIBS="pac_conftest.$OBJEXT $LIBS"
AC_LANG_PUSH([Fortran]) dnl AC_LANG_PUSH([Fortran 77])
@@ -429,7 +429,7 @@ extern mpif_cmblk_t mpifcmb_ __attribute__ ((alias("mpifcmbr")));
])
],[
cp conftest.$ac_ext pac_conftest.c
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
PAC_PUSH_FLAG([LIBS])
LIBS="pac_conftest.$OBJEXT $LIBS"
AC_LANG_PUSH([Fortran]) dnl AC_LANG_PUSH([Fortran 77])
diff --git a/confdb/aclocal_cc.m4 b/confdb/aclocal_cc.m4
index 98fdc34..06a5145 100644
--- a/confdb/aclocal_cc.m4
+++ b/confdb/aclocal_cc.m4
@@ -105,7 +105,7 @@ if test "$pac_result" = "yes" ; then
int foo(void){return 0;}
])
],[
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $LIBS"
diff --git a/confdb/aclocal_cxx.m4 b/confdb/aclocal_cxx.m4
index 279b668..418d8b7 100644
--- a/confdb/aclocal_cxx.m4
+++ b/confdb/aclocal_cxx.m4
@@ -153,7 +153,7 @@ if test "$pac_result" = "yes" ; then
int foo(void){return 0;}
])
],[
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $LIBS"
diff --git a/confdb/aclocal_f77.m4 b/confdb/aclocal_f77.m4
index 92d310b..38225e0 100644
--- a/confdb/aclocal_f77.m4
+++ b/confdb/aclocal_f77.m4
@@ -64,7 +64,7 @@ AC_COMPILE_IFELSE([
end
])
],[
- PAC_RUNLOG([mv conftest.$OBJEXT f77conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT f77conftest.$OBJEXT])
saved_LIBS="$LIBS"
dnl FLIBS is set by AC_F77_LIBRARY_LDFLAGS
LIBS="f77conftest.$OBJEXT $FLIBS $LIBS"
@@ -96,7 +96,7 @@ if test "$pac_found" != "yes" ; then
AC_COMPILE_IFELSE([
AC_LANG_SOURCE([void ${call} ${sym}(int a) {}])
],[
- PAC_RUNLOG([mv conftest.$OBJEXT cconftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT cconftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="cconftest.$OBJEXT $LIBS"
AC_LANG_PUSH([Fortran 77])
@@ -242,7 +242,7 @@ AC_COMPILE_IFELSE([
])
],[
# pac_f77compile_ok=yes
- PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
# Save original LIBS, prepend previously generated object file to LIBS
saved_LIBS="$LIBS"
LIBS="pac_f77conftest.$OBJEXT $FLIBS $LIBS"
@@ -349,7 +349,7 @@ int cisize_(char *i1p, char *i2p) {
dnl Endof ac_lang_source
],[
# pac_compile_ok=yes
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
# Save LIBS and prepend object file to LIBS
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $LIBS"
@@ -481,7 +481,7 @@ if test "$pac_result" = "yes" ; then
end
])
],[
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $LIBS"
@@ -541,10 +541,10 @@ AC_COMPILE_IFELSE([
])
],[
# pac_f77compile_ok=yes
- PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
- PAC_RUNLOG([test -d conftestdir || mkdir conftestdir])
- PAC_RUNLOG([${AR-ar} ${AR_FLAGS-cr} conftestdir/libf77conftest.a pac_f77conftest.$OBJEXT])
- PAC_RUNLOG([${RANLIB-ranlib} conftestdir/libf77conftest.a])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ AC_RUN_LOG([test -d conftestdir || mkdir conftestdir])
+ AC_RUN_LOG([${AR-ar} ${AR_FLAGS-cr} conftestdir/libf77conftest.a pac_f77conftest.$OBJEXT])
+ AC_RUN_LOG([${RANLIB-ranlib} conftestdir/libf77conftest.a])
# Save original LIBS, prepend previously generated object file to LIBS
saved_LIBS="$LIBS"
LIBS="-lf77conftest $LIBS"
@@ -595,7 +595,7 @@ ifelse([$1],[],[checkdir=f77tmpdir],[checkdir=$1;checkdir_is_given=yes])
AC_CACHE_CHECK([for include directory flag for Fortran],
pac_cv_prog_f77_has_incdir,[
test -d $checkdir || mkdir $checkdir
-dnl PAC_RUNLOG([echo ' call sub()' > $checkdir/conftestf.h])
+dnl AC_RUN_LOG([echo ' call sub()' > $checkdir/conftestf.h])
echo ' call sub()' > $checkdir/conftestf.h
AC_LANG_PUSH([Fortran 77])
saved_FFLAGS="$FFLAGS"
@@ -673,7 +673,7 @@ AC_COMPILE_IFELSE([
AC_LANG_SOURCE([$2])
],[
# pac_f77compile_ok=yes
- PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
# Save original LIBS, prepend previously generated object file to LIBS
saved_LIBS="$LIBS"
LIBS="pac_f77conftest.$OBJEXT $FLIBS $LIBS"
@@ -732,7 +732,7 @@ AC_COMPILE_IFELSE([
])
],[
# pac_f77compile_ok=yes
- PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
# Save original LIBS, prepend previously generated object file to LIBS
saved_LIBS="$LIBS"
LIBS="pac_f77conftest.$OBJEXT $FLIBS $saved_LIBS"
@@ -833,7 +833,7 @@ dnl Use F77 as a linker to compile a Fortran main and C subprogram.
if test "$pac_linkwithC" != "yes" ; then
AC_LANG_PUSH([C])
AC_COMPILE_IFELSE([],[
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $saved_LIBS"
AC_LANG_PUSH([Fortran 77])
@@ -852,7 +852,7 @@ dnl Use C as a linker and FLIBS to compile a Fortran main and C subprogram.
if test "$pac_linkwithf77" != "yes" ; then
AC_LANG_PUSH([Fortran 77])
AC_COMPILE_IFELSE([],[
- PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_f77conftest.$OBJEXT $FLIBS $saved_LIBS"
AC_LANG_PUSH([C])
@@ -961,7 +961,7 @@ int $confname(int a) {
}
])
],[
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
AC_LANG_PUSH([Fortran 77])
AC_LANG_CONFTEST([
@@ -1089,7 +1089,7 @@ dnl Use F77 as a linker to compile a Fortran main and C subprogram.
if test "$pac_linkwithC" != "yes" ; then
AC_LANG_PUSH([C])
AC_COMPILE_IFELSE([],[
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $saved_LIBS"
AC_LANG_PUSH([Fortran 77])
@@ -1110,7 +1110,7 @@ dnl Use C as a linker and FLIBS to compile a Fortran main and C subprogram.
if test "$pac_linkwithf77" != "yes" ; then
AC_LANG_PUSH([Fortran 77])
AC_COMPILE_IFELSE([],[
- PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_f77conftest.$OBJEXT $FLIBS $saved_LIBS"
AC_LANG_PUSH([C])
@@ -1277,7 +1277,7 @@ AC_COMPILE_IFELSE([
end
])
],[
- PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
saved_LIBS="$LIBS"
# This test checks if Fortran init can be done in pure C environment,
# i.e. no FLIBS in linking, so don't put FLIBS in LIBS below
@@ -1368,7 +1368,7 @@ void ftest_( $pac_mpi_fint *itrue, $pac_mpi_fint *ifalse )
}
])
],[
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $saved_LIBS"
AC_LANG_PUSH([Fortran 77])
diff --git a/confdb/aclocal_f77old.m4 b/confdb/aclocal_f77old.m4
deleted file mode 100644
index 5d6e2d9..0000000
--- a/confdb/aclocal_f77old.m4
+++ /dev/null
@@ -1,389 +0,0 @@
-dnl/*D
-dnl PAC_PROG_F77_CMDARGS - Determine how to access the command line from
-dnl Fortran 77
-dnl
-dnl Output Effects:
-dnl The following variables are set:
-dnl.vb
-dnl F77_GETARG - Statement to get an argument i into string s
-dnl F77_IARGC - Routine to return the number of arguments
-dnl FXX_MODULE - Module command when using Fortran 90 compiler
-dnl F77_GETARGDECL - Declaration of routine used for F77_GETARG
-dnl F77_GETARG_FFLAGS - Flags needed when compiling/linking
-dnl F77_GETARG_LDFLAGS - Flags needed when linking
-dnl.ve
-dnl If 'F77_GETARG' has a value, then that value and the values for these
-dnl other symbols will be used instead. If no approach is found, all of these
-dnl variables will have empty values.
-dnl If no other approach works and a file 'f77argdef' is in the directory,
-dnl that file will be sourced for the values of the above four variables.
-dnl
-dnl In most cases, you should add F77_GETARG_FFLAGS to the FFLAGS variable
-dnl and F77_GETARG_LDFLAGS to the LDFLAGS variable, to ensure that tests are
-dnl performed on the compiler version that will be used.
-dnl
-dnl 'AC_SUBST' is called for all six variables.
-dnl
-dnl One complication is that on systems with multiple Fortran compilers,
-dnl some libraries used by one Fortran compiler may have been (mis)placed
-dnl in a common location. We have had trouble with libg2c in particular.
-dnl To work around this, we test whether iargc etc. work first. This
-dnl will catch most systems and will speed up the tests.
-dnl
-dnl Next, the libraries are only added if they are needed to complete a
-dnl link; they aren''t added just because they exist.
-dnl
-dnl f77argdef
-dnl D*/
-dnl
-dnl Random notes
-dnl You can export the command line arguments from C to the g77 compiler
-dnl using
-dnl extern char **__libc_argv;
-dnl extern int __libc_argc;
-dnl f_setarg( __libc_argc, __libc_argv );
-dnl
-AC_DEFUN([PAC_PROG_F77_CMDARGS],[
-found_cached="yes"
-AC_MSG_CHECKING([for routines to access the command line from Fortran 77])
-AC_CACHE_VAL(pac_cv_prog_f77_cmdarg,
-[
- AC_MSG_RESULT([searching...])
- found_cached="no"
- # First, we perform a quick check. Does iargc and getarg work?
- fxx_module="${FXX_MODULE:-}"
- f77_getargdecl="${F77_GETARGDECL:-external getarg}"
- f77_getarg="${F77_GETARG:-call GETARG(i,s)}"
- f77_iargc="${F77_IARGC:-IARGC()}"
- #
- # Grumble. The Absoft Fortran compiler computes i - i as 0 and then
- # 1.0 / 0 at compile time, even though the code may never be executed.
- # What we need is a way to generate an error, so the second usage of i
- # was replaced with f77_iargc.
- cat > conftest.f <<EOF
- program main
-$fxx_module
- integer i, j
- character*20 s
- $f77_getargdecl
- i = 0
- $f77_getarg
- i=$f77_iargc
- if (i .gt. 1) then
- j = i - $f77_iargc
- j = 1.0 / j
- endif
- end
-EOF
- found_answer="no"
- if test -z "$ac_fcompilelink" ; then
- ac_fcompilelink="${F77-f77} -o conftest $FFLAGS $flags conftest.f $LDFLAGS $LIBS 1>&AC_FD_CC"
- fi
- AC_MSG_CHECKING([whether ${F77-f77} $flags $libs works with GETARG and IARGC])
- if AC_TRY_EVAL(ac_fcompilelink) && test -x conftest ; then
- # Check that cross != yes so that this works with autoconf 2.52
- # Check that cross_compiling != yes so that this works with
- # autoconf 2.6x for some (but almost certainly not all)x
- # Question: why do we test that this runs? It looks like we
- # needed this for some old Fortran compilers that produced
- # executable code that then did not run.
- if test "$ac_cv_prog_f77_cross" != "yes" -a \
- "$cross_compiling" != "yes" ; then
- if ./conftest >/dev/null 2>&1 ; then
- found_answer="yes"
- FXX_MODULE="$fxx_module"
- F77_GETARGDECL="$f77_getargdecl"
- F77_GETARG="$f77_getarg"
- F77_IARGC="$f77_iargc"
- AC_MSG_RESULT(yes)
- fi
- fi
- fi
- if test $found_answer = "no" ; then
- AC_MSG_RESULT(no)
- # Grumph. Here are a bunch of different approaches
- # We have several axes the check:
- # Library to link with (none, -lU77 (HPUX), -lg2c (LINUX f77))
- # PEPCF90 (Intel ifc)
- # The first line is a dummy
- # (we experimented with using a <space>, but this caused other
- # problems because we need <space> in the IFS)
- trial_LIBS="0 -lU77 -lPEPCF90"
- if test "$NOG2C" != "1" ; then
- trial_LIBS="$trial_LIBS -lg2c"
- fi
- # Discard libs that are not availble:
- save_IFS="$IFS"
- # Make sure that IFS includes a space, or the tests that run programs
- # may fail
- IFS=" ""
-"
- save_trial_LIBS="$trial_LIBS"
- trial_LIBS=""
- cat > conftest.f <<EOF
- program main
- end
-EOF
- ac_fcompilelink_test='${F77-f77} -o conftest $FFLAGS conftest.f $LDFLAGS $libs $LIBS 1>&AC_FD_CC'
- for libs in $save_trial_LIBS ; do
- if test "$libs" = "0" ; then
- lib_ok="yes"
- else
- AC_MSG_CHECKING([whether Fortran 77 links with $libs])
- if AC_TRY_EVAL(ac_fcompilelink_test) && test -x conftest ; then
- AC_MSG_RESULT([yes])
- lib_ok="yes"
- else
- AC_MSG_RESULT([no])
- lib_ok="no"
- fi
- fi
- if test "$lib_ok" = "yes" ; then
- trial_LIBS="$trial_LIBS
-$libs"
- fi
- done
-
- # Options to use when compiling and linking
- # +U77 is needed by HP Fortran to access getarg etc.
- # The -N109 was used for getarg before we realized that GETARG
- # was necessary with the (non standard conforming) Absoft compiler
- # (Fortran is monocase; Absoft uses mixedcase by default)
- # The -f is used by Absoft and is the compiler switch that folds
- # symbolic names to lower case. Without this option, the compiler
- # considers upper- and lower-case letters to be unique.
- # The -YEXT_NAMES=LCS will cause external names to be output as lower
- # case letter for Absoft F90 compilers (default is upper case)
- # The first line is "<space><newline>, the space is important
- # To make the Absoft f77 and f90 work together, we need to prefer the
- # upper case versions of the arguments. They also require libU77.
- # -YCFRL=1 causes Absoft f90 to work with g77 and similar (f2c-based)
- # Fortran compilers
- #
- # Problem: The Intel efc compiler hangs when presented with -N109 .
- # The only real fix for this is to detect this compiler and exclude
- # the test. We may want to reorganize these tests so that if we
- # can compile code without special options, we never look for them.
- #
- using_intel_efc="no"
- pac_test_msg=`$F77 -V 2>&1 | grep 'Intel(R) Fortran Itanium'`
- if test "$pac_test_msg" != "" ; then
- using_intel_efc="yes"
- fi
- if test "$using_intel_efc" = "yes" ; then
- trial_FLAGS="000"
- else
- trial_FLAGS="000
--N109
--f
--YEXT_NAMES=UCS
--YEXT_NAMES=LCS
--YCFRL=1
-+U77"
- fi
- # Discard options that are not available:
- # (IFS already saved above)
- IFS=" ""
-"
- save_trial_FLAGS="$trial_FLAGS"
- trial_FLAGS=""
- for flag in $save_trial_FLAGS ; do
- if test "$flag" = " " -o "$flag" = "000" ; then
- opt_ok="yes"
- else
- PAC_F77_CHECK_COMPILER_OPTION($flag,opt_ok=yes,opt_ok=no)
- fi
- if test "$opt_ok" = "yes" ; then
- if test "$flag" = " " -o "$flag" = "000" ; then
- fflag=""
- else
- fflag="$flag"
- fi
- # discard options that don't allow mixed-case name matching
- cat > conftest.f <<EOF
- program main
- call aB()
- end
- subroutine Ab()
- end
-EOF
- if test -n "$fflag" ; then flagval="with $fflag" ; else flagval="" ; fi
- AC_MSG_CHECKING([whether Fortran 77 routine names are case-insensitive $flagval])
- dnl we can use double quotes here because all is already
- dnl evaluated
- ac_fcompilelink_test="${F77-f77} -o conftest $fflag $FFLAGS conftest.f $LDFLAGS $LIBS 1>&AC_FD_CC"
- if AC_TRY_EVAL(ac_fcompilelink_test) && test -x conftest ; then
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- opt_ok="no"
- fi
- fi
- if test "$opt_ok" = "yes" ; then
- trial_FLAGS="$trial_FLAGS
-$flag"
- fi
- done
- IFS="$save_IFS"
- # Name of routines. Since these are in groups, we use a case statement
- # and loop until the end (accomplished by reaching the end of the
- # case statement
- # For one version of Nag F90, the names are
- # call f90_unix_MP_getarg(i,s) and f90_unix_MP_iargc().
- trial=0
- while test -z "$pac_cv_prog_f77_cmdarg" ; do
- case $trial in
- 0) # User-specified values, if any
- if test -z "$F77_GETARG" -o -z "$F77_IARGC" ; then
- trial=`expr $trial + 1`
- continue
- fi
- MSG="Using environment values of F77_GETARG etc."
- ;;
- 1) # Standard practice, uppercase (some compilers are case-sensitive)
- FXX_MODULE=""
- F77_GETARGDECL="external GETARG"
- F77_GETARG="call GETARG(i,s)"
- F77_IARGC="IARGC()"
- MSG="GETARG and IARGC"
- ;;
- 2) # Standard practice, lowercase
- FXX_MODULE=""
- F77_GETARGDECL="external getarg"
- F77_GETARG="call getarg(i,s)"
- F77_IARGC="iargc()"
- MSG="getarg and iargc"
- ;;
- 3) # Posix alternative
- FXX_MODULE=""
- F77_GETARGDECL="external pxfgetarg"
- F77_GETARG="call pxfgetarg(i,s,l,ier)"
- F77_IARGC="ipxfargc()"
- MSG="pxfgetarg and ipxfargc"
- ;;
- 4) # Nag f90_unix_env module
- FXX_MODULE=" use f90_unix_env"
- F77_GETARGDECL=""
- F77_GETARG="call getarg(i,s)"
- F77_IARGC="iargc()"
- MSG="f90_unix_env module"
- ;;
- 5) # Nag f90_unix module
- FXX_MODULE=" use f90_unix"
- F77_GETARGDECL=""
- F77_GETARG="call getarg(i,s)"
- F77_IARGC="iargc()"
- MSG="f90_unix module"
- ;;
- 6) # user spec in a file
- if test -s f77argdef ; then
- . ./f77argdef
- MSG="Using definitions in the file f77argdef"
- else
- trial=`expr $trial + 1`
- continue
- fi
- ;;
- 7) # gfortran won't find getarg if it is marked as external
- FXX_MODULE=""
- F77_GETARGDECL="intrinsic GETARG"
- F77_GETARG="call GETARG(i,s)"
- F77_IARGC="IARGC()"
- MSG="intrinsic GETARG and IARGC"
- ;;
- *) # exit from while loop
- FXX_MODULE=""
- F77_GETARGDECL=""
- F77_GETARG=""
- F77_IARGC=""
- break
- ;;
- esac
- # Create the program. Make sure that we can run it.
- # Force a divide-by-zero if there is a problem (but only at runtime!
- # (the Absoft compiler does divide-by-zero at compile time)
- cat > conftest.f <<EOF
- program main
-$FXX_MODULE
- integer i, j
- character*20 s
- $F77_GETARGDECL
- i = 0
- $F77_GETARG
- i=$F77_IARGC
- if (i .gt. 1) then
- j = i - $F77_IARGC
- j = 1.0 / j
- endif
- end
-EOF
- #
- # Now, try to find some way to compile and link that program, looping
- # over the possibilities of options and libraries
- save_IFS="$IFS"
- IFS=" ""
-"
- for libs in $trial_LIBS ; do
- if test -n "$pac_cv_prog_f77_cmdarg" ; then break ; fi
- if test "$libs" = " " -o "$libs" = "0" ; then libs="" ; fi
- for flags in $trial_FLAGS ; do
- if test "$flags" = " " -o "$flags" = "000"; then flags="" ; fi
- AC_MSG_CHECKING([whether ${F77-f77} $flags $libs works with $MSG])
- IFS="$save_IFS"
- dnl We need this here because we've fiddled with IFS
- ac_fcompilelink_test="${F77-f77} -o conftest $FFLAGS $flags conftest.f $LDFLAGS $libs $LIBS 1>&AC_FD_CC"
- found_answer="no"
- if AC_TRY_EVAL(ac_fcompilelink_test) && test -x conftest ; then
- if test "$ac_cv_prog_f77_cross" != "yes" -a \
- "$cross_compiling" != "yes" ; then
- if ./conftest >/dev/null 2>&1 ; then
- found_answer="yes"
- fi
- else
- found_answer="yes"
- fi
- fi
- IFS=" ""
-"
- if test "$found_answer" = "yes" ; then
- AC_MSG_RESULT([yes])
- pac_cv_prog_f77_cmdarg="$MSG"
- pac_cv_prog_f77_cmdarg_fflags="$flags"
- pac_cv_prog_f77_cmdarg_ldflags="$libs"
- break
- else
- AC_MSG_RESULT([no])
- echo "configure: failed program was:" >&AC_FD_CC
- cat conftest.f >&AC_FD_CC
- fi
- done
- done
- IFS="$save_IFS"
- rm -f conftest.*
- trial=`expr $trial + 1`
- done
-fi
-pac_cv_F77_GETARGDECL="$F77_GETARGDECL"
-pac_cv_F77_IARGC="$F77_IARGC"
-pac_cv_F77_GETARG="$F77_GETARG"
-pac_cv_FXX_MODULE="$FXX_MODULE"
-])
-if test "$found_cached" = "yes" ; then
- AC_MSG_RESULT([$pac_cv_prog_f77_cmdarg])
-elif test -z "$pac_cv_F77_IARGC" ; then
- AC_MSG_WARN([Could not find a way to access the command line from Fortran 77])
-fi
-# Set the variable values based on pac_cv_prog_xxx
-F77_GETARGDECL="$pac_cv_F77_GETARGDECL"
-F77_IARGC="$pac_cv_F77_IARGC"
-F77_GETARG="$pac_cv_F77_GETARG"
-FXX_MODULE="$pac_cv_FXX_MODULE"
-F77_GETARG_FFLAGS="$pac_cv_prog_f77_cmdarg_fflags"
-F77_GETARG_LDFLAGS="$pac_cv_prog_f77_cmdarg_ldflags"
-AC_SUBST(F77_GETARGDECL)
-AC_SUBST(F77_IARGC)
-AC_SUBST(F77_GETARG)
-AC_SUBST(FXX_MODULE)
-AC_SUBST(F77_GETARG_FFLAGS)
-AC_SUBST(F77_GETARG_LDFLAGS)
-])
diff --git a/confdb/aclocal_fc.m4 b/confdb/aclocal_fc.m4
index 02a5d5d..716f085 100644
--- a/confdb/aclocal_fc.m4
+++ b/confdb/aclocal_fc.m4
@@ -468,7 +468,7 @@ AC_COMPILE_IFELSE([
])
],[
# pac_f77compile_ok=yes
- PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT])
# Save original LIBS, prepend previously generated object file to LIBS
saved_LIBS="$LIBS"
LIBS="pac_f77conftest.$OBJEXT $LIBS"
@@ -589,7 +589,7 @@ int $confname( int a )
])
],[
pac_compile_ok=yes
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
# Save LIBS and prepend object file to LIBS
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $LIBS"
@@ -678,7 +678,7 @@ if test "$pac_result" = "yes" ; then
end
])
],[
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
saved_LIBS="$LIBS"
LIBS="pac_conftest.$OBJEXT $LIBS"
@@ -778,7 +778,7 @@ AC_MSG_CHECKING([for Fortran 90 compiler vendor])
pac_cv_fc_vendor="unknown"
for arg in --version -V -v ; do
rm -f conftest.txt
- PAC_RUNLOG([$FC $arg </dev/null >conftest.txt 2>&1])
+ AC_RUN_LOG([$FC $arg </dev/null >conftest.txt 2>&1])
# Ignore the return code, because some compilers set the
# return code to zero on invalid arguments and some to
# non-zero on success (with no files to compile)
@@ -1027,7 +1027,7 @@ int cisize_(char *i1p, char *i2p)
}
])
],[
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
pac_ccompile_ok=yes
],[
pac_ccompile_ok=no
diff --git a/confdb/aclocal_make.m4 b/confdb/aclocal_make.m4
index 147e92e..0f73e23 100644
--- a/confdb/aclocal_make.m4
+++ b/confdb/aclocal_make.m4
@@ -148,7 +148,6 @@ dnl
dnl D*/
AC_DEFUN([PAC_PROG_MAKE_VPATH],[
AC_SUBST(VPATH)
-dnl AM_IGNORE(VPATH)
AC_CACHE_CHECK([for virtual path format],
pac_cv_prog_make_vpath,[
AC_REQUIRE([PAC_PROG_MAKE_PROGRAM])
@@ -305,7 +304,6 @@ PAC_PROG_MAKE_INCLUDE
PAC_PROG_MAKE_ALLOWS_COMMENTS
PAC_PROG_MAKE_VPATH
AC_SUBST(SET_CFLAGS)
-dnl AM_IGNORE(SET_CFLAGS)
PAC_PROG_MAKE_SET_CFLAGS([SET_CFLAGS='CFLAGS='])
if test "$pac_cv_prog_make_echos_dir" = "no" ; then
AC_PROG_MAKE_SET
diff --git a/confdb/aclocal_runlog.m4 b/confdb/aclocal_runlog.m4
index 9b85db5..ebab6ba 100644
--- a/confdb/aclocal_runlog.m4
+++ b/confdb/aclocal_runlog.m4
@@ -1,252 +1,46 @@
-dnl
-dnl PAC_RUN_LOG mimics _AC_RUN_LOG which is autoconf internal routine.
-dnl We also make sure PAC_RUN_LOG can be used in AS_IF, so the last
-dnl test command should have terminating ]), i.e. without newline before ]).
-dnl
-AC_DEFUN([PAC_RUNLOG],[
-{ AS_ECHO(["$as_me:$LINENO: $1"]) >&AS_MESSAGE_LOG_FD
- (eval $1) 2>&AS_MESSAGE_LOG_FD
- ac_status=$?
- AS_ECHO(["$as_me:$LINENO: \$? = $ac_status"]) >&AS_MESSAGE_LOG_FD
- test $ac_status = 0; }])
-dnl
-dnl PAC_COMMAND_IFELSE is written to replace AC_TRY_EVAL with added logging
-dnl to config.log, i.e. AC_TRY_EVAL does not log anything to config.log.
-dnl If autoconf provides AC_COMMAND_IFELSE or AC_EVAL_IFELSE,
-dnl AC_COMMAND_IFELSE dnl should be replaced by the official autoconf macros.
-dnl
-dnl PAC_COMMAND_IFELSE(COMMMAND,[ACTION-IF-RUN-OK],[ACTION-IF-RUN-FAIL])
-dnl
-AC_DEFUN([PAC_COMMAND_IFELSE],[
-dnl Should use _AC_DO_TOKENS but use AC_RUN_LOG instead
-dnl because _AC_XX is autoconf's undocumented macro.
-AS_IF([PAC_RUNLOG([$1])],[
- $2
-],[
- AS_ECHO(["$as_me: program exited with status $ac_status"]) >&AS_MESSAGE_LOG_FD
- m4_ifvaln([$3],[
- (exit $ac_status)
- $3
- ])
-])
-])
-dnl
-dnl
-dnl
-AC_DEFUN([PAC_EVAL_IFELSE],[
-dnl Should use _AC_DO_TOKENS but use AC_RUN_LOG instead
-dnl because _AC_XX is autoconf's undocumented macro.
-AS_IF([PAC_RUNLOG([$$1])],[
- $2
-],[
- AS_ECHO(["$as_me: program exited with status $ac_status"]) >&AS_MESSAGE_LOG_FD
- m4_ifvaln([$3],[
- (exit $ac_status)
- $3
- ])
-])
-])
-dnl
-dnl
-dnl
-AC_DEFUN([PAC_RUNLOG_IFELSE],[
-dnl pac_TESTLOG is the internal temporary logfile for this macro.
-pac_TESTLOG="pac_test.log"
-rm -f $pac_TESTLOG
-PAC_COMMAND_IFELSE([$1 > $pac_TESTLOG],[
- ifelse([$2],[],[],[$2])
-],[
- AS_ECHO(["*** $1 :"]) >&AS_MESSAGE_LOG_FD
- cat $pac_TESTLOG >&AS_MESSAGE_LOG_FD
- ifelse([$3],[],[],[$3])
-])
-rm -f $pac_TESTLOG
-])
-dnl
-dnl
-dnl
-dnl PAS_VAR_COPY - A portable layer that mimics AS_VAR_COPY when it is not
-dnl defined as in older autoconf, e.g. 2.63 and older.
-dnl This macro is absolutely necessary, because AS_VAR_GET in
-dnl some newer autoconf, e.g. 2.64, seems to be totally broken,
-dnl or behave very different from older autoconf, i.e. 2.63.
-dnl
-AC_DEFUN([PAS_VAR_COPY],[
-m4_ifdef([AS_VAR_COPY], [AS_VAR_COPY([$1],[$2])], [$1=AS_VAR_GET([$2])])
-])
-dnl
-dnl
-dnl
-dnl PAC_VAR_PUSHVAL(VARNAME, [LastSavedValue]))
-dnl
-dnl Save the content of the shell variable, VARNAME, onto a stack.
-dnl The saved value of VARNAME is restorable with respect to the nesting
-dnl of the macro.
-dnl
-dnl The Last saved value of VARNAME on the stack is stored in shell variable
-dnl pac_LastSavedValueOf_$VARNAME if the 2nd argument is NOT supplied.
-dnl If the 2nd argument is present, the last saved value will be stored
-dnl in the 2nd argument instead.
-dnl
-dnl The First saved value of VARNAME on the stack is stored in shell variable
-dnl dnl pac_FirstSavedValueOf_$VARNAME.
-dnl
-AC_DEFUN([PAC_VAR_PUSHVAL],[
-# START of PUSHVAL
-dnl define local m4-name pac_stk_level.
-AS_VAR_PUSHDEF([pac_stk_level], [pac_stk_$1_level])
-AS_VAR_SET_IF([pac_stk_level],[
- dnl autoconf < 2.64 does not have AS_VAR_ARITH, so use expr instead.
- AS_VAR_SET([pac_stk_level], [`expr $pac_stk_level + 1`])
-],[
- AS_VAR_SET([pac_stk_level], [0])
-])
-dnl AS_ECHO_N(["PUSHVAL: pac_stk_level = $pac_stk_level, "])
-dnl Save the content of VARNAME, i.e. $VARNAME, onto the stack.
-AS_VAR_SET([pac_stk_$1_$pac_stk_level],[$$1])
-AS_VAR_IF([pac_stk_level], [0], [
- dnl Save the 1st pushed value of VARNAME as pac_FirstSavedValueOf_$VARNAME
- PAS_VAR_COPY([pac_FirstSavedValueOf_$1],[pac_stk_$1_$pac_stk_level])
-])
-ifelse([$2],[],[
- dnl Save the last pushed value of VARNAME as pac_LastSavedValueOf_$VARNAME
- PAS_VAR_COPY([pac_LastSavedValueOf_$1],[pac_stk_$1_$pac_stk_level])
- dnl AS_ECHO(["pac_LastSavedValueOf_$1 = $pac_LastSavedValueOf_$1"])
-],[
- dnl Save the last pushed value of VARNAME as $2
- PAS_VAR_COPY([$2],[pac_stk_$1_$pac_stk_level])
- dnl AS_ECHO(["$2 = $$2"])
-])
-AS_VAR_POPDEF([pac_stk_level])
-# END of PUSHVAL
-])
-dnl
-dnl
-dnl
-dnl PAC_VAR_POPVAL(VARNAME)
-dnl
-dnl Restore variable, VARNAME, from the stack.
-dnl This macro is safe with respect to the nesting.
-dnl Some minimal checking of nesting balance of PAC_VAR_PUSH[POP]VAL()
-dnl is done here.
-dnl
-AC_DEFUN([PAC_VAR_POPVAL],[
-# START of POPVAL
-dnl define local m4-name pac_stk_level.
-AS_VAR_PUSHDEF([pac_stk_level], [pac_stk_$1_level])
-AS_VAR_SET_IF([pac_stk_level],[
- AS_VAR_IF([pac_stk_level],[-1],[
- AC_MSG_WARN(["Imbalance of PUSHVAL/POPVAL of $1"])
- ],[
- dnl AS_ECHO_N(["POPVAL: pac_stk_level = $pac_stk_level, "])
- PAS_VAR_COPY([$1],[pac_stk_$1_$pac_stk_level])
- dnl AS_ECHO(["popped_val = $$1"])
- dnl autoconf < 2.64 does not have AS_VAR_ARITH, so use expr instead.
- AS_VAR_SET([pac_stk_level], [`expr $pac_stk_level - 1`])
- ])
-],[
- AC_MSG_WARN(["Uninitialized PUSHVAL/POPVAL of $1"])
-])
-AS_VAR_POPDEF([pac_stk_level])
-# END of POPVAL
-])
-dnl
-dnl
-dnl
+dnl PAC_RUNLOG_IFELSE(COMMMAND,[ACTION-IF-RUN-OK],[ACTION-IF-RUN-FAIL])
+AC_DEFUN([PAC_RUNLOG_IFELSE],[AS_IF([AC_RUN_LOG([$1])],[$2],[$3])])
+
dnl PAC_COMPILE_IFELSE_LOG is a wrapper around AC_COMPILE_IFELSE with the
dnl output of ac_compile to a specified logfile instead of AS_MESSAGE_LOG_FD
dnl
dnl PAC_COMPILE_IFELSE_LOG(logfilename, input,
dnl [action-if-true], [action-if-false])
dnl
-dnl where input, [action-if-true] and [action-if-false] are used
-dnl in AC_COMPILE_IFELSE(input, [action-if-true], [action-if-false]).
-dnl This macro is nesting safe.
-dnl
AC_DEFUN([PAC_COMPILE_IFELSE_LOG],[
-dnl
-dnl Instead of defining our own ac_compile and do AC_TRY_EVAL
-dnl on these variables. We modify ac_compile used by AC_*_IFELSE
-dnl by piping the output of the command to a logfile. The reason is that
-dnl 1) AC_TRY_EVAL is discouraged by Autoconf. 2) defining our ac_compile
-dnl could mess up the usage and order of *CFLAGS, LDFLAGS and LIBS in
-dnl these commands, i.e. deviate from how GNU standard uses these variables.
-dnl
-dnl Replace ">&AS_MESSAGE_LOG_FD" by "> FILE 2>&1" in ac_compile.
-dnl Save a copy of ac_compile on a stack
-dnl which is safe through nested invocations of this macro.
-PAC_VAR_PUSHVAL([ac_compile])
-dnl Modify ac_compile based on the unmodified ac_compile.
-ac_compile="`echo $pac_FirstSavedValueOf_ac_compile | sed -e 's|>.*$|> $1 2>\&1|g'`"
-AC_COMPILE_IFELSE([$2],[
- ifelse([$3],[],[:],[$3])
-],[
- ifelse([$4],[],[:],[$4])
-])
-dnl Restore the original ac_compile from the stack.
-PAC_VAR_POPVAL([ac_compile])
+PAC_PUSH_FLAG([ac_compile])
+ac_compile="`echo $ac_compile | sed -e 's|>.*$|> $1 2>\&1|g'`"
+AC_COMPILE_IFELSE([$2],[$3],[$4])
+PAC_POP_FLAG([ac_compile])
])
-dnl
-dnl
-dnl
+
dnl PAC_LINK_IFELSE_LOG is a wrapper around AC_LINK_IFELSE with the
dnl output of ac_link to a specified logfile instead of AS_MESSAGE_LOG_FD
dnl
dnl PAC_LINK_IFELSE_LOG(logfilename, input,
dnl [action-if-true], [action-if-false])
dnl
-dnl where input, [action-if-true] and [action-if-false] are used
-dnl in AC_LINK_IFELSE(input, [action-if-true], [action-if-false]).
-dnl This macro is nesting safe.
-dnl
AC_DEFUN([PAC_LINK_IFELSE_LOG],[
-dnl
-dnl Instead of defining our own ac_link and do AC_TRY_EVAL
-dnl on these variables. We modify ac_link used by AC_*_IFELSE
-dnl by piping the output of the command to a logfile. The reason is that
-dnl 1) AC_TRY_EVAL is discouraged by Autoconf. 2) defining our ac_link
-dnl could mess up the usage and order of *CFLAGS, LDFLAGS and LIBS in
-dnl these commands, i.e. deviate from how GNU standard uses these variables.
-dnl
-dnl Replace ">&AS_MESSAGE_LOG_FD" by "> FILE 2>&1" in ac_link.
-dnl Save a copy of ac_link on a stack
-dnl which is safe through nested invocations of this macro.
-PAC_VAR_PUSHVAL([ac_link])
-dnl Modify ac_link based on the unmodified ac_link.
-ac_link="`echo $pac_FirstSavedValueOf_ac_link | sed -e 's|>.*$|> $1 2>\&1|g'`"
-dnl
-AC_LINK_IFELSE([$2],[
- ifelse([$3],[],[:],[$3])
-],[
- ifelse([$4],[],[:],[$4])
+PAC_PUSH_FLAG([ac_link])
+ac_link="`echo $ac_link | sed -e 's|>.*$|> $1 2>\&1|g'`"
+AC_LINK_IFELSE([$2],[$3],[$4])
+PAC_POP_FLAG([ac_link])
])
-dnl Restore the original ac_link from the stack.
-PAC_VAR_POPVAL([ac_link])
-])
-dnl
-dnl
-dnl
+
dnl PAC_COMPLINK_IFELSE (input1, input2, [action-if-true], [action-if-false])
dnl
dnl where input1 and input2 are either AC_LANG_SOURCE or AC_LANG_PROGRAM
dnl enclosed input programs.
dnl
dnl The macro first compiles input1 and uses the object file created
-dnl as part of LIBS during linking. This macro is nesting safe.
+dnl as part of LIBS during linking.
dnl
AC_DEFUN([PAC_COMPLINK_IFELSE],[
AC_COMPILE_IFELSE([$1],[
- PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
- PAC_VAR_PUSHVAL([LIBS])
- LIBS="pac_conftest.$OBJEXT $pac_FirstSavedValueOf_LIBS"
- AC_LINK_IFELSE([$2],[
- ifelse([$3],[],[:],[$3])
- ],[
- ifelse([$4],[],[:],[$4])
- ])
- PAC_VAR_POPVAL([LIBS])
- rm -f pac_conftest.$OBJEXT
-],[
- ifelse([$4],[],[:],[$4])
-])
+ AC_RUN_LOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
+ PAC_PUSH_FLAG([LIBS])
+ LIBS="pac_conftest.$OBJEXT $LIBS"
+ AC_LINK_IFELSE([$2],[$3],[$4])
+ PAC_POP_FLAG([LIBS])
+ rm -f pac_conftest.$OBJEXT]),[$4]
])
-----------------------------------------------------------------------
Summary of changes:
confdb/aclocal.m4 | 5 -
confdb/aclocal_am.m4 | 6 -
confdb/aclocal_atomic.m4 | 227 -----------------
confdb/aclocal_attr_alias.m4 | 8 +-
confdb/aclocal_cc.m4 | 2 +-
confdb/aclocal_cxx.m4 | 2 +-
confdb/aclocal_f77.m4 | 38 ++--
confdb/aclocal_f77old.m4 | 389 ------------------------------
confdb/aclocal_fc.m4 | 10 +-
confdb/aclocal_make.m4 | 2 -
confdb/aclocal_runlog.m4 | 246 ++-----------------
src/pm/hydra/include/hydra.h | 51 +++-
src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c | 166 ++++++-------
src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c | 198 +++++++--------
src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c | 90 ++++----
src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c | 237 ++++++++----------
src/pm/hydra/pm/pmiserv/pmiserv_utils.c | 51 ++---
src/util/param/Makefile.mk | 3 +-
18 files changed, 422 insertions(+), 1309 deletions(-)
delete mode 100644 confdb/aclocal_am.m4
delete mode 100644 confdb/aclocal_atomic.m4
delete mode 100644 confdb/aclocal_f77old.m4
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-111-g109dc65
by noreply@mpich.org 02 May '13
by noreply@mpich.org 02 May '13
02 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via 109dc655f6cbbe8a75f78a7b72f7d743e6e26c80 (commit)
from 3d96864e665e281a543383ec7e68b25d1861276a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/109dc655f6cbbe8a75f78a7b72f7d743e…
commit 109dc655f6cbbe8a75f78a7b72f7d743e6e26c80
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun Apr 28 04:50:11 2013 -0500
Replace weak-symbols check in ROMIO with the confdb version.
No reviewer.
diff --git a/src/mpi/romio/configure.ac b/src/mpi/romio/configure.ac
index b46d458..68af036 100644
--- a/src/mpi/romio/configure.ac
+++ b/src/mpi/romio/configure.ac
@@ -126,7 +126,6 @@ MPI_OFFSET_KIND1="!"
MPI_OFFSET_KIND2="!"
TEST_CC=""
TEST_F77=""
-TRY_WEAK_SYMBOLS=1
#
have_aio=no
#
@@ -188,9 +187,6 @@ fi
if test "$enable_debug" = "yes" ; then
DEBUG=yes
fi
-if test "$enable_weak_symbols" = "no" ; then
- TRY_WEAK_SYMBOLS=0
-fi
MPI=$with_mpi
if test -n "$with_mpi"; then
CC=$MPI/bin/mpicc
@@ -895,122 +891,25 @@ if test $FROM_MPICH = yes ; then
MPI_FARRAY6="!"
MPI_FARRAY7="!"
fi
-#
-#
-# Test for weak symbol support...
-# We can't put # in the message because it causes autoconf to generate
-# incorrect code
-HAVE_WEAK_SYMBOLS=0
-if test -n "$arch_hpux" || test -n "$arch_sppux" ; then
-# multiple secondary definitions not allowed by HP compilers
-# Fortran interface for HP already uses one secondary defn.
-# therefore, do not use this method for profiling interface.
-# build profiling interface explicitly.
- TRY_WEAK_SYMBOLS=0
-fi
-if test $TRY_WEAK_SYMBOLS = 1 ; then
- AC_MSG_CHECKING([for weak symbol support])
- AC_TRY_LINK([
-extern int PFoo(int);
-#pragma weak PFoo = Foo
-int Foo(int a) { return a; }
-],[return PFoo(1);],has_pragma_weak=1)
- #
- # Some systems (Linux ia64 and ecc, for example), support weak symbols
- # only within a single object file! This tests that case.
- # Note that there is an extern int PFoo declaration before the
- # pragma. Some compilers require this in order to make the weak symbol
- # extenally visible.
-if test "$has_pragma_weak" = 1 ; then
- AC_MSG_RESULT([pragma weak])
- AC_MSG_CHECKING([that weak symbols are visible to other files])
- rm -f conftest*
- cat >>conftest1.c <<EOF
-extern int PFoo(int);
-#pragma weak PFoo = Foo
-int Foo(int);
-int Foo(int a) { return a; }
-EOF
- cat >>conftest2.c <<EOF
-extern int PFoo(int);
-int main(int argc, char **argv) {
-return PFoo(0);}
-EOF
- ac_link2='${CC-cc} -o conftest$EXEEXT $CFLAGS $CPPFLAGS $LDFLAGS conftest1.c conftest2.c $LIBS >conftest.out 2>&1'
- if eval $ac_link2 ; then
- AC_MSG_RESULT(yes)
- AC_MSG_CHECKING([that the compiler correctly implements weak symbols])
- # The gcc 3.4.x compiler accepts the pragma weak, but does not
- # correctly implement it on systems where the loader doesn't
- # support weak symbols (e.g., cygwin). This is a bug in gcc, but it
- # it is one that *we* have to detect.
- rm -f conftest*
- cat >>conftest1.c <<EOF
-extern int PFoo(int);
-#pragma weak PFoo = Foo
-int Foo(int);
-int Foo(int a) { return a; }
-EOF
- cat >>conftest2.c <<EOF
-extern int Foo(int);
-int PFoo(int a) { return a+1;}
-int main(int argc, char **argv) {
-return Foo(0);}
-EOF
- if eval $ac_link2 ; then
- AC_MSG_RESULT(yes)
- has_pragma_weak=1
- else
- AC_MSG_RESULT(no)
- echo "$ac_link2" >> config.log
- echo "Failed program was" >> config.log
- cat conftest1.c >>config.log
- cat conftest2.c >>config.log
- if test -s conftest.out ; then cat conftest.out >> config.log ; fi
- has_pragma_weak=0
- fi
- else
- echo "$ac_link2" 1>&AC_FD_CC
- echo "Failed program was" 1>&AC_FD_CC
- cat conftest1.c 1>&AC_FD_CC
- cat conftest2.c 1>&AC_FD_CC
- if test -s conftest.out ; then cat conftest.out 1>&AC_FD_CC ; fi
- AC_MSG_RESULT(no)
- has_pragma_weak=0
- fi
- rm -f conftest*
- fi
- if test "$has_pragma_weak" = 1 ; then
- HAVE_WEAK_SYMBOLS=1
- AC_DEFINE(HAVE_PRAGMA_WEAK,1,[Define if pragma weak available])
- else
- AC_TRY_LINK([
-extern int PFoo(int);
-#pragma _HP_SECONDARY_DEF Foo PFoo
-int Foo(int a) { return a; }
-],[return PFoo(1);],has_pragma_hp_secondary=1)
- if test "$has_pragma_hp_secondary" = 1 ; then
- AC_MSG_RESULT([pragma _HP_SECONDARY_DEF])
- HAVE_WEAK_SYMBOLS=1
- AC_DEFINE(HAVE_PRAGMA_HP_SEC_DEF,1,[Define for HP weak pragma])
- else
- AC_TRY_LINK([
-extern int PFoo(int);
-#pragma _CRI duplicate PFoo as Foo
-int Foo(int a) { return a; }
-],[return PFoo(1);],has_pragma_cri_duplicate=1)
- if test "$has_pragma_cri_duplicate" = 1 ; then
- AC_MSG_RESULT([pragma _CRI duplicate x as y])
- HAVE_WEAK_SYMBOLS=1
- AC_DEFINE(HAVE_PRAGMA_CRI_DUP,1,[Define for CRAY weak dup])
- else
- AC_MSG_RESULT(no)
- fi
+
+# Check to see if weak symbols work correctly
+if test $enable_weak_symbols = yes ; then
+ # Turn off weak symbols if they aren't available
+ PAC_PROG_C_WEAK_SYMBOLS(,enable_weak_symbols=no)
+fi
+if test $enable_weak_symbols = "yes" ; then
+ AC_DEFINE(USE_WEAK_SYMBOLS,1,[Define if weak symbols should be used])
+ # Check for the ability to support multiple weak symbols
+ if test "$pac_cv_prog_c_weak_symbols" = "pragma weak" ; then
+ PAC_PROG_C_MULTIPLE_WEAK_SYMBOLS(AC_DEFINE(HAVE_MULTIPLE_PRAGMA_WEAK,1,[Define if multiple weak symbols may be defined]))
fi
- fi
fi
-if test "$HAVE_WEAK_SYMBOLS" = 1 ; then
+
+if test "$enable_weak_symbols" = 1 ; then
AC_DEFINE(HAVE_WEAK_SYMBOLS,1,[Define if weak symbols available])
+ HAVE_WEAK_SYMBOLS=1
+else
+ HAVE_WEAK_SYMBOLS=0
fi
AC_SUBST(HAVE_WEAK_SYMBOLS)
-----------------------------------------------------------------------
Summary of changes:
src/mpi/romio/configure.ac | 131 +++++---------------------------------------
1 files changed, 15 insertions(+), 116 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, dev/portals-work, deleted. v3.0.1-63-g608e384
by noreply@mpich.org 02 May '13
by noreply@mpich.org 02 May '13
02 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, dev/portals-work has been deleted
was 608e3845d35feb8fc2735ca94f54a12f67c798bd
-----------------------------------------------------------------------
608e3845d35feb8fc2735ca94f54a12f67c798bd Various Portals netmod fixes
-----------------------------------------------------------------------
hooks/post-receive
--
MPICH primary repository
1
0