From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id 94D512E6D4 for ; Wed, 15 May 2019 08:45:00 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2j4JSD60gnnd for ; Wed, 15 May 2019 08:45:00 -0400 (EDT) Received: from smtp62.i.mail.ru (smtp62.i.mail.ru [217.69.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id D615820382 for ; Wed, 15 May 2019 08:44:59 -0400 (EDT) From: "Alexander V. Tikhonov" Subject: [tarantool-patches] [PATCH v1] Fix LTO in travis-ci Date: Wed, 15 May 2019 15:44:56 +0300 Message-Id: <06d061414ec1c1b8044deadc2ff289f123d1bccc.1557924260.git.avtikhon@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-Help: List-Unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-Subscribe: List-Owner: List-post: List-Archive: To: Alexander Turenko Cc: "Alexander V. Tikhonov" , tarantool-patches@freelists.org Made fixes: - Added CMAKE_EXTRA_PARAMS environment to docker's container runs to enable -DENABLE_LTO=ON/OFF cmake option. - Added CC/CXX environment to docker's container runs to set clang for cmake. - Changed LTO docker's image to 'debian-buster' due to LTO needed higher versions of packages, check for more information commit: commit f9e28ce4602aff3f9bb4e743b0d6167b0f8df88d Author: AKhatskevich Date: Thu Mar 22 11:37:06 2018 +0300 - Fixed sources to avoid of failures on builds with LTO: 1) src/box/memtx_rtree.c: In function ‘mp_decode_rect’: src/box/memtx_rtree.c:86:24: error: ‘c’ may be used uninitialized in this function [-Werror=maybe-uninitialized] rect->coords[i * 2] = c; ^ src/box/memtx_rtree.c:74:10: note: ‘c’ was declared here coord_t c; ^ 2) src/box/sql/func.c: In function ‘quoteFunc’: src/box/sql/func.c:1103:3: error: ‘b’ may be used uninitialized in this function [-Werror=maybe-uninitialized] sql_result_text(context, sql_value_boolean(argv[0]) ? ^ src/box/sql/vdbeapi.c:217:7: note: ‘b’ was declared here bool b; ^ 3) src/box/tuple_update.c: In function ‘update_read_ops’: src/box/tuple_update.c:1022:4: error: ‘field_no’ may be used uninitialized in this function [-Werror=maybe-uninitialized] diag_set(ClientError, ER_NO_SUCH_FIELD_NO, field_no); ^ src/box/tuple_update.c:1014:11: note: ‘field_no’ was declared here int32_t field_no; ^ 4) src/httpc.c: In function ‘httpc_set_verbose’: src/httpc.c:267:2: error: call to ‘_curl_easy_setopt_err_long’ declared with attribute warning: curl_easy_setopt expects a long argument for this option [-Werror] curl_easy_setopt(req->curl_request.easy, CURLOPT_VERBOSE, curl_verbose); ^ 5) src/lua/httpc.c: In function ‘luaT_httpc_request’: src/lua/httpc.c:128:64: error: ‘MEM[(int *)&parser + 20B]’ may be used uninitialized in this function [-Werror=maybe-uninitialized] lua_pushinteger(L, (parser.http_minor > 0) ? parser.http_minor: 0); ^ src/lua/httpc.c:67:21: note: ‘MEM[(int *)&parser + 20B]’ was declared here struct http_parser parser; ^ src/lua/httpc.c:124:64: error: ‘MEM[(int *)&parser + 16B]’ may be used uninitialized in this function [-Werror=maybe-uninitialized] lua_pushinteger(L, (parser.http_major > 0) ? parser.http_major: 0); ^ src/lua/httpc.c:67:21: note: ‘MEM[(int *)&parser + 16B]’ was declared here struct http_parser parser; ^ Close #4215 --- Github: https://github.com/tarantool/tarantool/compare/avtikhon/lto-build-fix Issue: https://github.com/tarantool/tarantool/issues/4215 .travis.mk | 5 ++++- .travis.yml | 4 ++-- src/box/memtx_rtree.c | 2 +- src/box/sql/vdbeapi.c | 2 +- src/box/tuple_update.c | 2 +- src/httpc.c | 2 +- src/lua/httpc.c | 2 +- 7 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.travis.mk b/.travis.mk index 4ac3fc11a..c6af08803 100644 --- a/.travis.mk +++ b/.travis.mk @@ -2,7 +2,7 @@ # Travis CI rules # -DOCKER_IMAGE:=packpack/packpack:debian-stretch +DOCKER_IMAGE?=packpack/packpack:debian-stretch all: package @@ -27,6 +27,9 @@ docker_%: -e CCACHE_DIR=/cache/ccache \ -e COVERALLS_TOKEN=${COVERALLS_TOKEN} \ -e TRAVIS_JOB_ID=${TRAVIS_JOB_ID} \ + -e CMAKE_EXTRA_PARAMS=${CMAKE_EXTRA_PARAMS} \ + -e CC=${CC} \ + -e CXX=${CXX} \ ${DOCKER_IMAGE} \ make -f .travis.mk $(subst docker_,,$@) diff --git a/.travis.yml b/.travis.yml index 6e79cf2fe..92fb54686 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,10 +37,10 @@ jobs: if: branch = "master" # Special targets (only LTO for now). - name: "LTO build + test (Linux, gcc)" - env: TARGET=test CMAKE_EXTRA_PARAMS=-DENABLE_LTO=ON + env: TARGET=test CMAKE_EXTRA_PARAMS=-DENABLE_LTO=ON DOCKER_IMAGE=packpack/packpack:debian-buster if: branch = "master" - name: "LTO build + test (Linux, clang)" - env: TARGET=test CMAKE_EXTRA_PARAMS=-DENABLE_LTO=ON + env: TARGET=test CMAKE_EXTRA_PARAMS=-DENABLE_LTO=ON DOCKER_IMAGE=packpack/packpack:debian-buster if: branch = "master" compiler: clang - name: "LTO build + test (OS X Mojave 10.14)" diff --git a/src/box/memtx_rtree.c b/src/box/memtx_rtree.c index 45e8fb8e3..b91a405d7 100644 --- a/src/box/memtx_rtree.c +++ b/src/box/memtx_rtree.c @@ -71,7 +71,7 @@ static inline int mp_decode_rect(struct rtree_rect *rect, unsigned dimension, const char *mp, unsigned count, const char *what) { - coord_t c; + coord_t c = 0; if (count == dimension) { /* point */ for (unsigned i = 0; i < dimension; i++) { if (mp_decode_num(&mp, i, &c) < 0) diff --git a/src/box/sql/vdbeapi.c b/src/box/sql/vdbeapi.c index d2868567b..04083914a 100644 --- a/src/box/sql/vdbeapi.c +++ b/src/box/sql/vdbeapi.c @@ -214,7 +214,7 @@ sql_value_double(sql_value * pVal) bool sql_value_boolean(sql_value *val) { - bool b; + bool b = false; mem_value_bool((struct Mem *) val, &b); return b; } diff --git a/src/box/tuple_update.c b/src/box/tuple_update.c index 849073258..7a203ced8 100644 --- a/src/box/tuple_update.c +++ b/src/box/tuple_update.c @@ -1011,7 +1011,7 @@ update_read_ops(struct tuple_update *update, const char *expr, "field id must be a number"); return -1; } - int32_t field_no; + int32_t field_no = 0; if (mp_read_i32(update->index_base, op, &expr, &field_no)) return -1; if (field_no - update->index_base >= 0) { diff --git a/src/httpc.c b/src/httpc.c index 80dabd59c..813a3e387 100644 --- a/src/httpc.c +++ b/src/httpc.c @@ -267,7 +267,7 @@ httpc_set_low_speed_limit(struct httpc_request *req, long low_speed_limit) void httpc_set_verbose(struct httpc_request *req, bool curl_verbose) { - curl_easy_setopt(req->curl_request.easy, CURLOPT_VERBOSE, curl_verbose); + curl_easy_setopt(req->curl_request.easy, CURLOPT_VERBOSE, (long) curl_verbose); } void diff --git a/src/lua/httpc.c b/src/lua/httpc.c index c39a2f0de..cdc832efc 100644 --- a/src/lua/httpc.c +++ b/src/lua/httpc.c @@ -64,7 +64,7 @@ static int parse_headers(lua_State *L, char *buffer, size_t len, int max_header_name_len) { - struct http_parser parser; + struct http_parser parser = { 0 }; parser.hdr_name = (char *) calloc(max_header_name_len, sizeof(char)); if (parser.hdr_name == NULL) { diag_set(OutOfMemory, max_header_name_len * sizeof(char), -- 2.17.1