[tarantool-patches] Re: [PATCH v1 1/1] box: fix compilation with old gcc

Alexander Turenko alexander.turenko at tarantool.org
Thu Sep 12 23:02:49 MSK 2019


I have no objections, the commit looks safe. LGTM.

However I pushed the same commit to
kshch/gh-4438-gcc-4-build-fixup-full-ci to test on all targets just in
case. All CI jobs are green.

CCed Kirill Yukhin to push.

CCed Alexander Tikhonov to elaborate whether we can protect ourself from
such mistakes in the future.

issue: https://github.com/tarantool/tarantool/issues/4438
branch: https://github.com/tarantool/tarantool/tree/kshch/gh-4438-gcc-4-build-fixup

WBR, Alexander Turenko.

On Mon, Sep 09, 2019 at 06:11:46PM +0300, Kirill Shcherbatov wrote:
> LTO build fails on warning message:

Usual Debug build fails too with gcc-4.8.5.

> In file included from /tarantool/src/lib/core/diag.h:33:0,
>                  from /tarantool/src/box/engine.h:36,
>                  from /tarantool/src/box/memtx_engine.h:40,
>                  from /tarantool/src/box/memtx_engine.c:31:
> /tarantool/src/box/memtx_engine.c: In function
> 'metmx_tuple_chunk_delete':
> /tarantool/src/trivia/util.h:201:49: error: initialization from
> incompatible pointer type [-Werror]
>   const typeof( ((type *)0)->member  ) *__mptr = (ptr); \
>                                                  ^
> /tarantool/src/box/memtx_engine.c:1115:3: note: in expansion of macro
> 'container_of'
>    container_of((typeof(tuple_chunk->data) *)data,
>    ^
> /tarantool/src/trivia/util.h:201:49: error: (near initialization for
> 'tuple_chunk') [-Werror]
>   const typeof( ((type *)0)->member  ) *__mptr = (ptr); \
>                                                  ^
> /tarantool/src/box/memtx_engine.c:1115:3: note: in expansion of macro
> 'container_of'
>    container_of((typeof(tuple_chunk->data) *)data,

As I see you already added the issue number here (on the branch
kshch/gh-4438-gcc-4-build-fixup), that is good.

> ---
>  src/box/memtx_engine.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/box/memtx_engine.c b/src/box/memtx_engine.c
> index f6a33282c..6a6cc584f 100644
> --- a/src/box/memtx_engine.c
> +++ b/src/box/memtx_engine.c
> @@ -1112,7 +1112,7 @@ metmx_tuple_chunk_delete(struct tuple_format *format, const char *data)
>  {
>  	struct memtx_engine *memtx = (struct memtx_engine *)format->engine;
>  	struct tuple_chunk *tuple_chunk =
> -		container_of((typeof(tuple_chunk->data) *)data,
> +		container_of((const char (*)[0])data,
>  			     struct tuple_chunk, data);
>  	uint32_t sz = tuple_chunk_sz(tuple_chunk->data_sz);
>  	smfree(&memtx->alloc, tuple_chunk, sz);
> -- 
> 2.23.0
> 




More information about the Tarantool-patches mailing list