Tidy up .travis.yml:

* Combine address and undefined sanitizers
* Additional targets for older gcc and 32 bit
This commit is contained in:
Vinnie Falco
2017-05-09 19:36:01 -07:00
parent 761e005fd6
commit 5d3fc8fbbd
6 changed files with 103 additions and 75 deletions

View File

@ -16,10 +16,9 @@ env:
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages:
- gcc-5
- g++-5
sources: &base_sources
- ubuntu-toolchain-r-test
packages: &base_packages
- python-software-properties
- libssl-dev
- libffi-dev
@ -35,7 +34,7 @@ addons:
matrix:
include:
# GCC/Coverage/Autobahn (if master or develop branch)
# gcc coverage (+valgrind,+Autobahn if master or develop)
- compiler: gcc
env:
- GCC_VER=5
@ -43,27 +42,99 @@ matrix:
- ADDRESS_MODEL=64
- BUILD_SYSTEM=cmake
- PATH=$PWD/cmake/bin:$PATH
addons:
apt:
packages:
- gcc-5
- g++-5
- *base_packages
sources:
- *base_sources
# Clang/UndefinedBehaviourSanitizer
# older GCC, release
- compiler: gcc
env:
- GCC_VER=4.8
- VARIANT=release
- ADDRESS_MODEL=64
addons:
apt:
packages:
- gcc-4.8
- g++-4.8
- *base_packages
sources:
- *base_sources
# later GCC
- compiler: gcc
env:
- GCC_VER=6
- VARIANT=release
- ADDRESS_MODEL=64
- BUILD_SYSTEM=cmake
- PATH=$PWD/cmake/bin:$PATH
addons:
apt:
packages:
- gcc-6
- g++-6
- *base_packages
sources:
- *base_sources
# clang ubsan+asan
- compiler: clang
env:
- GCC_VER=5
- VARIANT=usan
- VARIANT=ubasan
- CLANG_VER=3.8
- ADDRESS_MODEL=64
- UBSAN_OPTIONS='print_stacktrace=1'
- BUILD_SYSTEM=cmake
- PATH=$PWD/cmake/bin:$PATH
- PATH=$PWD/llvm-$LLVM_VERSION/bin:$PATH
addons:
apt:
packages:
- gcc-5
- g++-5
- *base_packages
sources:
- *base_sources
# Clang/UndefinedBehaviourSanitizer
#- compiler: clang
# env:
# - GCC_VER=4.8
# - VARIANT=usan
# - CLANG_VER=3.8
# - ADDRESS_MODEL=64
# - UBSAN_OPTIONS='print_stacktrace=1'
# - BUILD_SYSTEM=cmake
# - PATH=$PWD/cmake/bin:$PATH
# - PATH=$PWD/llvm-$LLVM_VERSION/bin:$PATH
# addons:
# apt:
# packages:
# - *base_packages
# sources:
# - *base_sources
# Clang/AddressSanitizer
- compiler: clang
env:
- GCC_VER=5
- VARIANT=asan
- CLANG_VER=3.8
- ADDRESS_MODEL=64
- PATH=$PWD/llvm-$LLVM_VERSION/bin:$PATH
#- compiler: clang
# env:
# - GCC_VER=5
# - VARIANT=asan
# - CLANG_VER=3.8
# - ADDRESS_MODEL=64
# - PATH=$PWD/llvm-$LLVM_VERSION/bin:$PATH
# addons:
# apt:
# packages:
# - *base_packages
# sources:
# - *base_sources
cache:
directories:
@ -72,7 +143,7 @@ cache:
- llvm-$LLVM_VERSION
- cmake
before_install:
before_install: &base_before_install
- scripts/install-dependencies.sh
script:

View File

@ -3,6 +3,7 @@ Version 40
* Add to_static_string
* Consolidate get_lowest_layer in type_traits.hpp
* Fix basic_streambuf movable trait
* Tidy up .travis.yml
--------------------------------------------------------------------------------

View File

@ -115,6 +115,12 @@ if ("${VARIANT}" STREQUAL "coverage")
set(CMAKE_BUILD_TYPE RELWITHDEBINFO)
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov")
elseif ("${VARIANT}" STREQUAL "ubasan")
set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} -funsigned-char -fno-omit-frame-pointer -fsanitize=address,undefined -fsanitize-blacklist=${PROJECT_SOURCE_DIR}/scripts/blacklist.supp")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address,undefined")
set(CMAKE_BUILD_TYPE RELWITHDEBINFO)
elseif ("${VARIANT}" STREQUAL "asan")
set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} -funsigned-char -fsanitize=address -fno-omit-frame-pointer")
@ -123,7 +129,7 @@ elseif ("${VARIANT}" STREQUAL "asan")
elseif ("${VARIANT}" STREQUAL "usan")
set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} -fsanitize=undefined -fsanitize-blacklist=${PROJECT_SOURCE_DIR}/scripts/usan.supp -fno-omit-frame-pointer")
"${CMAKE_CXX_FLAGS} -fsanitize=undefined -fsanitize-blacklist=${PROJECT_SOURCE_DIR}/scripts/blacklist.supp -fno-omit-frame-pointer")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined")
set(CMAKE_BUILD_TYPE RELWITHDEBINFO)

10
Jamroot
View File

@ -60,6 +60,14 @@ variant coverage
<linkflags>"-lgcov"
;
variant ubasan
:
release
:
<cxxflags>"-funsigned-char -fno-omit-frame-pointer -fsanitize=address,undefined -fsanitize-blacklist=scripts/blacklist.supp"
<linkflags>"-fsanitize=address,undefined"
;
variant asan
:
release
@ -80,7 +88,7 @@ variant usan
:
debug
:
<cxxflags>"-fsanitize=undefined -fsanitize-blacklist=scripts/usan.supp -fno-omit-frame-pointer"
<cxxflags>"-fsanitize=undefined -fsanitize-blacklist=scripts/blacklist.supp -fno-omit-frame-pointer"
<linkflags>"-fsanitize=undefined"
;

View File

@ -1,58 +0,0 @@
* Add writer::prepare(msg&) interface to set Content-Type
Boost.Http
* Use enum instead of bool in isRequest
Docs:
* Include Example program listings in the docs
* Fix index in docs
* melpon sandbox?
* Implement cleanup-param to remove spaces around template arguments
e.g. in basic_streambuf move constructor members
* Don't put using namespace at file scope in examples,
do something like "using ba = boost::asio" instead.
Core:
* Replace Jamroot with Jamfile
* Fix bidirectional buffers iterators operator->()
* Complete allocator testing in basic_streambuf
WebSocket:
* Minimize sizeof(websocket::stream)
* Move check for message size limit to account for compression
* more invokable unit test coverage
* More control over the HTTP request and response during handshakes
* optimized versions of key/masking, choose prepared_key size
* Give callers control over the http request/response used during handshake
* Investigate poor autobahn results in Debug builds
* Fall through composed operation switch cases
* Use close_code::no_code instead of close_code::none
* Make request_type, response_type public APIs,
use in stream member function signatures
HTTP:
* Define Parser concept in HTTP
- Need parse version of read() so caller can set parser options
like maximum size of headers, maximum body size, etc
* add bool should_close(message_v1 const&) to replace the use
of eof return value from write and async_write
* More fine grained parser errors
* HTTP parser size limit with test (configurable?)
* HTTP parser trailers with test
* Decode chunk encoding parameters
* URL parser, strong URL character checking in HTTP parser
* Fix prepare() calling content_length() without init()
* Complete allocator testing in basic_streambuf, basic_headers
* Custom HTTP error codes for various situations
* Branch prediction hints in parser
* Check basic_parser_v1 against rfc7230 for leading message whitespace
* Fix the order of message constructor parameters:
body first then headers (since body is constructed with arguments more often)
* Unit tests for char tables
* Remove status_code() from API when isRequest==true, et. al.
* Permit sending trailers and parameters in chunk-encoding chunks
Future:
* SOCKS proxy client and server implementations