From: "jaruga (Jun Aruga)" Date: 2021-11-22T09:40:46+00:00 Subject: [ruby-core:106203] [Ruby master Bug#18330] Make failure on 32-bit Linux (Android) with Clang due to implicit 64-to-32-bit integer truncation Issue #18330 has been updated by jaruga (Jun Aruga). The RubyCI reported originally looks ok now. crossruby-master-armv7a-android30 https://rubyci.s3.amazonaws.com/crossruby/crossruby-master-armv7a-android30/recent.html ---------------------------------------- Bug #18330: Make failure on 32-bit Linux (Android) with Clang due to implicit 64-to-32-bit integer truncation https://bugs.ruby-lang.org/issues/18330#change-94810 * Author: xtkoba (Tee KOBAYASHI) * Status: Open * Priority: Normal * Assignee: ioquatix (Samuel Williams) * ruby -v: ruby 3.1.0dev (2021-11-11 master 84202963c5) [arm-linux-android] * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- Observed in crossruby CI for armv7a-android30 (http://rubyci.s3.amazonaws.com/crossruby/crossruby-master-armv7a-android30/log/20211111T210030Z.log.html.gz): ``` compiling io_buffer.c io_buffer.c:297:16: error: implicit conversion loses integer precision: 'off_t' (aka 'long long') to 'size_t' (aka 'unsigned int') [-Werror,-Wshorten-64-to-32] size = rb_file_size(io); ~ ^~~~~~~~~~~~~~~~ io_buffer.c:881:1: error: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long long') to 'unsigned long' [-Werror,-Wshorten-64-to-32] DECLAIR_TYPE(u64, uint64_t, RB_IO_BUFFER_LITTLE_ENDIAN, RB_ULONG2NUM, RB_NUM2ULONG, ruby_swap64) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ io_buffer.c:855:17: note: expanded from macro 'DECLAIR_TYPE' return wrap(value); \ ~~~~ ^~~~~ io_buffer.c:882:1: error: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long long') to 'unsigned long' [-Werror,-Wshorten-64-to-32] DECLAIR_TYPE(U64, uint64_t, RB_IO_BUFFER_BIG_ENDIAN, RB_ULONG2NUM, RB_NUM2ULONG, ruby_swap64) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ io_buffer.c:855:17: note: expanded from macro 'DECLAIR_TYPE' return wrap(value); \ ~~~~ ^~~~~ io_buffer.c:883:1: error: implicit conversion loses integer precision: 'int64_t' (aka 'long long') to 'long' [-Werror,-Wshorten-64-to-32] DECLAIR_TYPE(s64, int64_t, RB_IO_BUFFER_LITTLE_ENDIAN, RB_LONG2NUM, RB_NUM2LONG, ruby_swap64) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ io_buffer.c:855:17: note: expanded from macro 'DECLAIR_TYPE' return wrap(value); \ ~~~~ ^~~~~ io_buffer.c:884:1: error: implicit conversion loses integer precision: 'int64_t' (aka 'long long') to 'long' [-Werror,-Wshorten-64-to-32] DECLAIR_TYPE(S64, int64_t, RB_IO_BUFFER_BIG_ENDIAN, RB_LONG2NUM, RB_NUM2LONG, ruby_swap64) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ io_buffer.c:855:17: note: expanded from macro 'DECLAIR_TYPE' return wrap(value); \ ~~~~ ^~~~~ 5 errors generated. gmake: *** [Makefile:435: io_buffer.o] Error 1 ``` -- https://bugs.ruby-lang.org/ Unsubscribe: