endif()
# Checks for header libraries functions.
+CHECK_LIBRARY_EXISTS(dl dlopen "" HAVE_DLOPEN_IN_LIBDL)
+CHECK_LIBRARY_EXISTS(execinfo backtrace "" HAVE_BACKTRACE_IN_LIBEXECINFO)
CHECK_LIBRARY_EXISTS(pthread pthread_create "" pthread)
CHECK_LIBRARY_EXISTS(pthread sem_init "" HAVE_SEM_INIT_LIB)
CHECK_LIBRARY_EXISTS(pthread sem_open "" HAVE_SEM_OPEN_LIB)
endif()
# Our usage of mmap is Linux-specific (flag MAP_ANONYMOUS), but kFreeBSD uses a GNU libc
-IF(NOT "${CMAKE_SYSTEM}" MATCHES "Linux" AND NOT "${CMAKE_SYSTEM}" MATCHES "kFreeBSD" AND NOT "${CMAKE_SYSTEM}" MATCHES "GNU" AND NOT "${CMAKE_SYSTEM}" MATCHES "Darwin")
+IF(NOT "${CMAKE_SYSTEM}" MATCHES "Linux" AND NOT "${CMAKE_SYSTEM}" MATCHES "FreeBSD" AND NOT "${CMAKE_SYSTEM}" MATCHES "GNU" AND NOT "${CMAKE_SYSTEM}" MATCHES "Darwin")
SET(HAVE_MMAP 0)
message(STATUS "Warning: MMAP is thought as non functional on this architecture (${CMAKE_SYSTEM})")
ENDIF()
### Check for GNU dynamic linker
CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H)
if (HAVE_DLFCN_H)
- execute_process(COMMAND ${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_gnu_dynlinker.c -ldl -o test_gnu_ld
+ if(HAVE_DLOPEN_IN_LIBDL)
+ set(DL_LIBRARY "-ldl")
+ endif(HAVE_DLOPEN_IN_LIBDL)
+ execute_process(COMMAND ${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_gnu_dynlinker.c ${DL_LIBRARY} -o test_gnu_ld
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
OUTPUT_VARIABLE HAVE_GNU_LD_compil
)
endif()
if(MMALLOC_WANT_OVERRIDE_LEGACY AND HAVE_GNU_LD)
- SET(SIMGRID_DEP "${SIMGRID_DEP} -ldl")
+ SET(SIMGRID_DEP "${SIMGRID_DEP} ${DL_LIBRARY}")
endif()
if(HAVE_NS3)
SET(SIMGRID_DEP "${SIMGRID_DEP} -lrt")
endif()
+if(HAVE_BACKTRACE_IN_LIBEXECINFO)
+ SET(SIMGRID_DEP "${SIMGRID_DEP} -lexecinfo")
+endif(HAVE_BACKTRACE_IN_LIBEXECINFO)
+
# Compute the dependencies of SMPI
##################################
if(enable_smpi AND APPLE)
${EXEC} ${TRACEOPTIONS} ${SIMOPTS} ${PLATFORMTMP} ${APPLICATIONTMP}
status=$?
-if [ ${status} = 139 ]; then
- cat >&2 <<EOF
-ERROR: A segmentation fault was triggered.
-A common cause in SimGrid may be the use of a too small stack size for the simulated processes (default 8192 KiB).
-Please see contexts/stack_size parameter, or http://simgrid.org/simgrid/latest/doc/options.html#options_virt_stacksize
-EOF
-fi
-
if [ -z "${KEEP}" ] ; then
if [ -z "${PLATFORM}" ]; then
rm ${PLATFORMTMP}
/* Redefine the classical malloc/free/realloc functions so that they fit well in the mmalloc framework */
#include "mmprivate.h"
+#include "xbt_modinter.h"
#include "internal_config.h"
#include <math.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/mman.h>
+#include <sys/wait.h>
#include "mmprivate.h"
< }
$ mkfile delayed_cat.c
-$ gcc -Wall -o delayed_cat delayed_cat.c
+$ cc -Wall -o delayed_cat delayed_cat.c
& ./delayed_cat
> TOTO
< }
$ mkfile segfault.c
-$ gcc -o segfault segfault.c
+$ cc -o segfault segfault.c
! expect signal SIGSEGV
& ./segfault
$ sleep 1
< }
$ mkfile return1.c
-$ gcc -o return1 return1.c
+$ cc -o return1 return1.c
! expect return 41
< $ ./return1
< }
$ mkfile segfault.c
-$ gcc -o segfault segfault.c
+$ cc -o segfault segfault.c
! expect return 15
< $ ./segfault
< }
$ mkfile return1.c
-$ gcc -o return1 return1.c
+$ cc -o return1 return1.c
! expect return 1
$ ./return1
< }
$ mkfile segfault.c
-$ gcc -o segfault segfault.c
+$ cc -o segfault segfault.c
! expect signal SIGSEGV
$ ./segfault
$ cd ..
< }
$ mkfile getenv.c
-$ gcc -o getenv getenv.c -g
+$ cc -o getenv getenv.c -g
! setenv tesh_test_toto=blah
$ ./getenv