From 5f512d2afc1a845d2059c3c5eca6c20daecdae38 Mon Sep 17 00:00:00 2001 From: fyshhh Date: Thu, 20 Jan 2022 17:13:12 -0800 Subject: [PATCH 1/3] Fix compiler warnings for mtcp_restart --- src/mtcp/mtcp_restart.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/mtcp/mtcp_restart.c b/src/mtcp/mtcp_restart.c index bc7e4533b..27f86a683 100644 --- a/src/mtcp/mtcp_restart.c +++ b/src/mtcp/mtcp_restart.c @@ -468,6 +468,8 @@ int discover_union_ckpt_images(char *argv[], return rank; } +// This is to satisfy compiler warnings. +#if 0 NO_OPTIMIZE static unsigned long int mygetauxval(char **evp, unsigned long int type) @@ -480,6 +482,7 @@ mygetauxval(char **evp, unsigned long int type) } return 0; } +#endif NO_OPTIMIZE static int @@ -512,7 +515,7 @@ uint64_t vdsoStartTmp = 0; static void remap_vdso_and_vvar_regions() { Area area; - int rc = 0; + void *rc = 0; uint64_t vvarStart = 0; uint64_t vdsoStart = 0; uint64_t vvarSize = 0; @@ -527,11 +530,11 @@ remap_vdso_and_vvar_regions() { while (mtcp_readmapsline(mapsfd, &area)) { if (mtcp_strcmp(area.name, "[vvar]") == 0) { - vvarStart = area.addr; - vvarSize = area.size; + vvarStart = (uint64_t) area.addr; + vvarSize = (uint64_t) area.size; } else if (mtcp_strcmp(area.name, "[vdso]") == 0) { - vdsoStart = area.addr; - vdsoSize = area.size; + vdsoStart = (uint64_t) area.addr; + vdsoSize = (uint64_t) area.size; } if (vvarStart > 0 && vdsoStart > 0) { @@ -542,7 +545,7 @@ remap_vdso_and_vvar_regions() { mtcp_sys_lseek(mapsfd, 0, SEEK_SET); while (mtcp_readmapsline(mapsfd, &area)) { - if (prev_addr + vvarSize + vdsoSize <= area.addr) { + if (prev_addr + vvarSize + vdsoSize <= (uint64_t) area.addr) { vvarStartTmp = prev_addr; vdsoStartTmp = prev_addr + vvarSize; break; @@ -710,8 +713,6 @@ main(int argc, char *argv[], char **environ) // If we want to test this, we can add code to do a trial mremap with a page // before vvar and after vdso, and verify that we get an EFAULT. // In May, 2020, on Cori and elsewhere, vvar is 3 pages and vdso is 2 pages. - char *vdsoStart = (char *)mygetauxval(environ, AT_SYSINFO_EHDR); - remap_vdso_and_vvar_regions(); // Now that we moved vdso/vvar, we need to update the vdso address @@ -773,10 +774,12 @@ main(int argc, char *argv[], char **environ) // mtcp_restart is statically linked, and doesn't need it. Area heap_area; MTCP_ASSERT(getMappedArea(&heap_area, "[heap]") == 1); - start1 = max(heap_area.endAddr, lh_info.memRange.end); + start1 = (char *) max((uint64_t) heap_area.endAddr, + (uint64_t) lh_info.memRange.end); Area stack_area; MTCP_ASSERT(getMappedArea(&stack_area, "[stack]") == 1); - end1 = min(stack_area.endAddr - 4 * GB, highMemStart - 4 * GB); + end1 = (char *) min((uint64_t) stack_area.endAddr - 4 * GB, + (uint64_t) highMemStart - 4 * GB); start2 = 0; end2 = start2; } @@ -1432,10 +1435,10 @@ unmap_memory_areas_and_restore_vdso(RestoreInfo *rinfo, LowerHalfInfo_t *lh_info // Do not unmap lower half DPRINTF("Skipping lower half memory section: %p-%p\n", area.addr, area.endAddr); - } else if (area.addr == vdsoStartTmpCopy) { + } else if ((uint64_t) area.addr == vdsoStartTmpCopy) { DPRINTF("Skipping temporary vDSO section: %p-%p\n", area.addr, area.endAddr); - } else if (area.addr == vvarStartTmpCopy) { + } else if ((uint64_t) area.addr == vvarStartTmpCopy) { DPRINTF("Skipping temporary vvar section: %p-%p\n", area.addr, area.endAddr); } else if (area.size > 0) { From 0b25199bc3e230c71dbccb2adb8a06dcaf7091f9 Mon Sep 17 00:00:00 2001 From: fyshhh Date: Thu, 20 Jan 2022 18:09:11 -0800 Subject: [PATCH 2/3] Enforce -Werror flag during build --- configure | 4 ++++ src/mtcp/mtcp_restart.c | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 9d534baf2..a67f0b063 100755 --- a/configure +++ b/configure @@ -4989,6 +4989,10 @@ if test -n "$ac_unrecognized_opts"; then esac fi +CFLAGS="$CFLAGS -Werror" +CPPFLAGS="$CPPFLAGS -Werror" +CXXFLAGS="$CXXFLAGS -Werror" + # Check whether --enable-logging was given. if test "${enable_logging+set}" = set; then : enableval=$enable_logging; use_logging=$enableval diff --git a/src/mtcp/mtcp_restart.c b/src/mtcp/mtcp_restart.c index 27f86a683..305a05ba7 100644 --- a/src/mtcp/mtcp_restart.c +++ b/src/mtcp/mtcp_restart.c @@ -468,7 +468,8 @@ int discover_union_ckpt_images(char *argv[], return rank; } -// This is to satisfy compiler warnings. +// This is to satisfy compiler warnings, although we can probably just remove +// it. #if 0 NO_OPTIMIZE static unsigned long int From 5d97577700490f6fcce192942bed0b0ab4bba9be Mon Sep 17 00:00:00 2001 From: fyshhh Date: Fri, 21 Jan 2022 12:01:24 -0800 Subject: [PATCH 3/3] Fix compiler warnings for certain files --- contrib/mpi-proxy-split/p2p_drain_send_recv.cpp | 1 - contrib/mpi-proxy-split/p2p_log_replay.cpp | 1 - contrib/mpi-proxy-split/split_process.cpp | 4 ++-- contrib/mpi-proxy-split/two-phase-algo.cpp | 5 ++--- src/mtcp/mtcp_split_process.c | 7 +++---- 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/contrib/mpi-proxy-split/p2p_drain_send_recv.cpp b/contrib/mpi-proxy-split/p2p_drain_send_recv.cpp index e5b079c16..b9cdbc104 100644 --- a/contrib/mpi-proxy-split/p2p_drain_send_recv.cpp +++ b/contrib/mpi-proxy-split/p2p_drain_send_recv.cpp @@ -179,7 +179,6 @@ removePendingSendRequests() for (it = g_async_calls.begin(); it != g_async_calls.end();) { MPI_Request request = it->first; mpi_async_call_t *call = it->second; - int flag = 0; if (call->type == ISEND_REQUEST) { UPDATE_REQUEST_MAP(request, MPI_REQUEST_NULL); // FIXME: We should free `call' to avoid memory leak diff --git a/contrib/mpi-proxy-split/p2p_log_replay.cpp b/contrib/mpi-proxy-split/p2p_log_replay.cpp index ac1c85502..014520744 100644 --- a/contrib/mpi-proxy-split/p2p_log_replay.cpp +++ b/contrib/mpi-proxy-split/p2p_log_replay.cpp @@ -128,7 +128,6 @@ logRequestInfo(MPI_Request request, mpi_req_t req_type) request_info_t* lookupRequestInfo(MPI_Request request) { - request_info_t *req_info; std::unordered_map::iterator it; it = request_log.find(request); if (it != request_log.end()) { diff --git a/contrib/mpi-proxy-split/split_process.cpp b/contrib/mpi-proxy-split/split_process.cpp index e31b07db3..95bb44f0f 100644 --- a/contrib/mpi-proxy-split/split_process.cpp +++ b/contrib/mpi-proxy-split/split_process.cpp @@ -333,7 +333,8 @@ startProxy() // Read from stdout of lh_proxy full lh_info struct, including orig memRange. close(pipefd_out[1]); // close write end of pipe // FIXME: should be a readall. Check for return error code. - if (read(pipefd_out[0], &lh_info, sizeof lh_info) < sizeof lh_info) { + if ((unsigned long) read(pipefd_out[0], &lh_info, sizeof lh_info) + < sizeof lh_info) { JWARNING(false)(JASSERT_ERRNO) .Text("Read fewer bytes than expected"); break; } @@ -352,7 +353,6 @@ findLHMemRange(MemRange_t *lh_mem_range) bool is_set = false; Area area; - char prev_path_name[PATH_MAX]; char next_path_name[PATH_MAX]; uint64_t prev_addr_end; uint64_t next_addr_start; diff --git a/contrib/mpi-proxy-split/two-phase-algo.cpp b/contrib/mpi-proxy-split/two-phase-algo.cpp index fd6381c12..800164a58 100644 --- a/contrib/mpi-proxy-split/two-phase-algo.cpp +++ b/contrib/mpi-proxy-split/two-phase-algo.cpp @@ -130,7 +130,8 @@ TwoPhaseAlgo::commit_begin(MPI_Comm comm) // Set state again incase we returned from beforeTrivialBarrier MPI_Request request; MPI_Comm realComm = VIRTUAL_TO_REAL_COMM(comm); - int flag = 0; + // Consider removing the #if 0 segment below? + // int flag = 0; int tb_rc = -1; JUMP_TO_LOWER_HALF(lh_info.fsaddr); tb_rc = NEXT_FUNC(Ibarrier)(realComm, &request); @@ -198,8 +199,6 @@ TwoPhaseAlgo::replayTrivialBarrier() if (_replayTrivialBarrier) { MPI_Request request; MPI_Comm realComm = VIRTUAL_TO_REAL_COMM(_comm); - int flag = 0; - int tb_rc = -1; JUMP_TO_LOWER_HALF(lh_info.fsaddr); tb_rc = NEXT_FUNC(Ibarrier)(realComm, &request); RETURN_TO_UPPER_HALF(); diff --git a/src/mtcp/mtcp_split_process.c b/src/mtcp/mtcp_split_process.c index 8c048d741..32e3947fb 100644 --- a/src/mtcp/mtcp_split_process.c +++ b/src/mtcp/mtcp_split_process.c @@ -255,17 +255,16 @@ setLhMemRange() Area area; const uint64_t ONE_GB = 0x40000000; - const uint64_t TWO_GB = 0x80000000; MemRange_t lh_mem_range; int found = getMappedArea(&area, "[stack]"); if (found) { #if !defined(MANA_USE_LH_FIXED_ADDRESS) - lh_mem_range.start = (VA)area.addr - TWO_GB; + lh_mem_range.start = (VA)area.addr - 2 * ONE_GB; lh_mem_range.end = (VA)area.addr - ONE_GB; #else - lh_mem_range.start = 0x2aab00000000; - lh_mem_range.end = 0x2aab00000000 + ONE_GB; + lh_mem_range.start = (VA) 0x2aab00000000; + lh_mem_range.end = (VA) 0x2aab00000000 + ONE_GB; #endif } else { DPRINTF("Failed to find [stack] memory segment\n");