Skip to content

Commit c174d8d

Browse files
committed
Merge branch 'master' into mercury_profiling_interface
2 parents b7fdd9b + d190059 commit c174d8d

File tree

10 files changed

+729
-53
lines changed

10 files changed

+729
-53
lines changed

.travis.yml

Lines changed: 64 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ compiler:
77
- gcc
88
- clang
99

10-
dist: xenial
10+
dist: bionic
1111

1212
cache:
1313
directories:
@@ -21,71 +21,92 @@ env:
2121

2222
jobs:
2323
include:
24-
- os: linux
25-
compiler: gcc
26-
addons:
27-
apt:
28-
sources:
29-
- ubuntu-toolchain-r-test
30-
packages:
31-
- gcc-9
32-
- g++-9
33-
- libtsan0
34-
- libasan5
35-
- liblsan0
36-
env: MERCURY_BUILD_CONFIGURATION="Tsan"
37-
- os: linux
38-
compiler: gcc
39-
addons:
40-
apt:
41-
sources:
42-
- ubuntu-toolchain-r-test
43-
packages:
44-
- gcc-9
45-
- g++-9
46-
- libtsan0
47-
- libasan5
48-
- liblsan0
49-
env: MERCURY_BUILD_CONFIGURATION="Asan"
50-
- os: linux
51-
compiler: gcc
52-
addons:
53-
apt:
54-
sources:
55-
- ubuntu-toolchain-r-test
56-
packages:
57-
- gcc-9
58-
- g++-9
59-
env: MERCURY_DO_COVERAGE="true"
24+
- os: linux
25+
addons:
26+
apt:
27+
sources:
28+
- ubuntu-toolchain-r-test
29+
packages:
30+
- clang-format-10
31+
env: CHECK_FORMAT="true"
32+
- os: linux
33+
compiler: gcc
34+
addons:
35+
apt:
36+
sources:
37+
- ubuntu-toolchain-r-test
38+
packages:
39+
- gcc-10
40+
- g++-10
41+
- libtsan0
42+
- libasan6
43+
- libubsan1
44+
env: MERCURY_BUILD_CONFIGURATION="Tsan"
45+
- os: linux
46+
compiler: gcc
47+
addons:
48+
apt:
49+
sources:
50+
- ubuntu-toolchain-r-test
51+
packages:
52+
- gcc-10
53+
- g++-10
54+
- libtsan0
55+
- libasan6
56+
- libubsan1
57+
env: MERCURY_BUILD_CONFIGURATION="Asan"
58+
- os: linux
59+
compiler: gcc
60+
addons:
61+
apt:
62+
sources:
63+
- ubuntu-toolchain-r-test
64+
packages:
65+
- gcc-10
66+
- g++-10
67+
- libtsan0
68+
- libasan6
69+
- libubsan1
70+
env: MERCURY_BUILD_CONFIGURATION="Ubsan"
71+
- os: linux
72+
compiler: gcc
73+
addons:
74+
apt:
75+
sources:
76+
- ubuntu-toolchain-r-test
77+
packages:
78+
- gcc-10
79+
- g++-10
80+
env: MERCURY_DO_COVERAGE="true"
6081

6182
branches:
6283
only:
6384
- master
6485

6586
before_install:
66-
- if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then git fetch origin pull/${TRAVIS_PULL_REQUEST}/head:pr${TRAVIS_PULL_REQUEST}; git checkout pr${TRAVIS_PULL_REQUEST}; fi
87+
- if [[ "$TRAVIS_PULL_REQUEST" != "false" ]] && [[ "$CHECK_FORMAT" != "true" ]]; then git fetch origin pull/${TRAVIS_PULL_REQUEST}/head:pr${TRAVIS_PULL_REQUEST}; git checkout pr${TRAVIS_PULL_REQUEST}; fi
6788
- echo "Existing directories in $HOME" && ls $HOME
6889
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi
6990
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew cask uninstall --force oclint; fi
7091
- if [[ "$TRAVIS_OS_NAME" == "osx" && "$CC" == "gcc" ]]; then brew install gcc; fi
7192
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install libfabric; fi
7293

7394
install:
74-
- ./Testing/script/travis_build.sh
95+
- if [[ "$CHECK_FORMAT" == "true" ]]; then install -D ./Testing/script/git-clang-format $HOME/install/bin/git-clang-format; else ./Testing/script/travis_build.sh; fi
7596

7697
before_script:
7798
- if [ -d "$HOME/install/bin" ]; then ls $HOME/install/bin; fi
7899
- export PATH=$HOME/install/bin:$PATH
79100
- export LD_LIBRARY_PATH=$HOME/install/lib:$HOME/install/lib64:$LD_LIBRARY_PATH
80101
- export PKG_CONFIG_PATH=$HOME/install/lib/pkgconfig:$PKG_CONFIG_PATH
81-
- if [[ "$CC" == "gcc" && `command -v gcc-9` ]]; then export CC=gcc-9; export CXX=g++-9; export AR=gcc-ar-9; export NM=gcc-nm-9; export RANLIB=gcc-ranlib-9; export COV=gcov-9; fi
102+
- if [[ "$CC" == "gcc" && `command -v gcc-10` ]]; then export CC=gcc-10; export CXX=g++-10; export AR=gcc-ar-10; export NM=gcc-nm-10; export RANLIB=gcc-ranlib-10; export COV=gcov-10; fi
82103
- $CC --version
83104
- if [[ "$TRAVIS_EVENT_TYPE" == "cron" ]]; then export MERCURY_DASHBOARD_MODEL="Nightly"; elif [[ "$TRAVIS_EVENT_TYPE" == "pull_request" ]]; then export MERCURY_DASHBOARD_MODEL="Experimental"; else export MERCURY_DASHBOARD_MODEL="Continuous"; fi
84105
- ctest --version
85106
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then cat /proc/sys/kernel/yama/ptrace_scope; fi
86107
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ulimit -a; fi
87-
- fi_info
108+
- if [[ "$CHECK_FORMAT" != "true" ]]; then fi_info; fi
109+
- if [[ "$CHECK_FORMAT" == "true" ]]; then which clang-format-10; git config --global clangFormat.binary clang-format-10; fi
88110

89111
script:
90-
- ctest -VV --output-on-failure -S ./Testing/script/travis_script.cmake
91-
112+
- if [[ "$CHECK_FORMAT" == "true" ]]; then echo "${TRAVIS_COMMIT_RANGE/.../}"; ./Testing/script/travis_format.sh "${TRAVIS_COMMIT_RANGE/.../ }"; else ctest -VV --output-on-failure -S ./Testing/script/travis_script.cmake; fi

CMake/CheckUbsan.cmake

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
set(UBSAN_FLAG "-fsanitize=undefined")
2+
set(UBSAN_C_FLAGS "-O1 -g ${UBSAN_FLAG} -fno-omit-frame-pointer")
3+
set(UBSAN_CXX_FLAGS ${UBSAN_C_FLAGS})
4+
5+
get_property(UBSAN_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
6+
foreach(lang ${UBSAN_LANGUAGES})
7+
set(UBSAN_${lang}_LANG_ENABLED 1)
8+
endforeach()
9+
10+
if(UBSAN_C_LANG_ENABLED)
11+
include(CheckCCompilerFlag)
12+
set(CMAKE_REQUIRED_LINK_OPTIONS ${UBSAN_FLAG})
13+
check_c_compiler_flag(${UBSAN_FLAG} UBSAN_C_FLAG_SUPPORTED)
14+
if(NOT UBSAN_C_FLAG_SUPPORTED)
15+
message(STATUS "Ubsan flags are not supported by the C compiler.")
16+
else()
17+
if(NOT CMAKE_C_FLAGS_UBSAN)
18+
set(CMAKE_C_FLAGS_UBSAN ${UBSAN_C_FLAGS} CACHE STRING "Flags used by the C compiler during UBSAN builds." FORCE)
19+
endif()
20+
endif()
21+
unset(CMAKE_REQUIRED_LINK_OPTIONS)
22+
endif()
23+
24+
if(UBSAN_CXX_LANG_ENABLED)
25+
include(CheckCXXCompilerFlag)
26+
set(CMAKE_REQUIRED_LINK_OPTIONS ${UBSAN_FLAG})
27+
check_cxx_compiler_flag(${UBSAN_FLAG} UBSAN_CXX_FLAG_SUPPORTED)
28+
if(NOT UBSAN_CXX_FLAG_SUPPORTED)
29+
message(STATUS "Ubsan flags are not supported by the CXX compiler.")
30+
else()
31+
if(NOT CMAKE_CXX_FLAGS_UBSAN)
32+
set(CMAKE_CXX_FLAGS_UBSAN ${UBSAN_CXX_FLAGS} CACHE STRING "Flags used by the CXX compiler during UBSAN builds." FORCE)
33+
endif()
34+
endif()
35+
unset(CMAKE_REQUIRED_LINK_OPTIONS)
36+
endif()
37+

CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,17 +138,18 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
138138
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build." FORCE)
139139
# Set the possible values of build type for cmake-gui
140140
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
141-
"MinSizeRel" "RelWithDebInfo" "Asan" "Tsan")
141+
"MinSizeRel" "RelWithDebInfo" "Asan" "Tsan" "Ubsan")
142142
endif()
143143

144144
if(NOT CMAKE_C_FLAGS AND CMAKE_COMPILER_IS_GNUCC)
145145
message(STATUS "GCC detected, setting additional flags")
146146
set(CMAKE_C_FLAGS "-Wall -Wextra -Winline -Wcast-qual -std=gnu99 -Wshadow" CACHE STRING "Flags used by the compiler during all build types." FORCE)
147147
endif()
148148

149-
# Detect Asan and Tsan compiler flags
149+
# Detect Asan/Tsan/Ubsan compiler flags
150150
include(CheckAsan)
151151
include(CheckTsan)
152+
include(CheckUbsan)
152153

153154
#-----------------------------------------------------------------------------
154155
# Targets built within this project are exported at Install time for use
@@ -222,6 +223,7 @@ function(mercury_set_lib_options libtarget libname libtype)
222223
OUTPUT_NAME_RELWITHDEBINFO ${LIB_RELEASE_NAME}
223224
OUTPUT_NAME_ASAN ${LIB_DEBUG_NAME}
224225
OUTPUT_NAME_TSAN ${LIB_DEBUG_NAME}
226+
OUTPUT_NAME_UBSAN ${LIB_DEBUG_NAME}
225227
VERSION ${LIB_VERSION}
226228
SOVERSION ${API_VERSION}
227229
)

Testing/driver/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ project(MERCURY_TEST_DRIVER CXX)
33

44
include(CheckAsan)
55
include(CheckTsan)
6+
include(CheckUbsan)
67

78
set(KWSYS_NAMESPACE mercury_sys)
89
set(KWSYS_USE_SystemTools 1)

0 commit comments

Comments
 (0)