--- ./opal/mca/memory/patcher/memory_patcher_component.c.orig 2020-12-18 20:44:38.000000000 +0000 +++ ./opal/mca/memory/patcher/memory_patcher_component.c 2021-01-14 20:52:10.545290518 +0000 @@ -55,10 +55,17 @@ #include "memory_patcher.h" #undef opal_memory_changed -#define HAS_SHMDT (defined(SYS_shmdt) || \ - (defined(IPCOP_shmdt) && defined(SYS_ipc))) -#define HAS_SHMAT (defined(SYS_shmat) || \ - (defined(IPCOP_shmat) && defined(SYS_ipc))) +#if defined(SYS_shmdt) || (defined(IPCOP_shmdt) && defined(SYS_ipc)) +# define HAS_SHMDT 1 +# else +# define HAS_SHMDT 0 +#endif + +#if defined(SYS_shmat) || (defined(IPCOP_shmat) && defined(SYS_ipc)) +# define HAS_SHMAT 1 +# else +# define HAS_SHMAT 0 +#endif static int patcher_open(void); static int patcher_close(void); @@ -281,9 +288,9 @@ advice == MADV_FREE || #endif #ifdef MADV_REMOVE - advice == MADV_REMOVE || + advice == MADV_REMOVE #endif - advice == POSIX_MADV_DONTNEED) + ) { opal_mem_hooks_release_hook (start, length, false); } @@ -473,8 +480,8 @@ uintptr_t attach_addr = (uintptr_t)shmaddr; if (shmflg & SHM_RND) { - attach_addr -= ((uintptr_t)shmaddr) % SHMLBA; - size += ((uintptr_t)shmaddr) % SHMLBA; + attach_addr -= ((uintptr_t)shmaddr) % sysconf(_SC_PAGESIZE); + size += ((uintptr_t)shmaddr) % sysconf(_SC_PAGESIZE); } opal_mem_hooks_release_hook ((void*)attach_addr, size, false); } @@ -486,7 +493,7 @@ unsigned long ret; ret = memory_patcher_syscall(SYS_ipc, IPCOP_shmat, shmid, shmflg, &shmaddr, shmaddr); - result = (ret > -(unsigned long)SHMLBA) ? (void *)ret : (void *)shmaddr; + result = (ret > -(unsigned long)sysconf(_SC_PAGESIZE)) ? (void *)ret : (void *)shmaddr; #endif } else { result = original_shmat (shmid, shmaddr, shmflg);