From: "jaruga (Jun Aruga) via ruby-core" Date: 2024-04-25T12:31:45+00:00 Subject: [ruby-core:117704] [Ruby master Bug#20447] Ruby 3.3.1 broken on i686 due to "incompatible pointer type" error Issue #20447 has been updated by jaruga (Jun Aruga). I tried several ways to reproduce this issue on Fedora rawhide i686 environment. ## Containers First, I don't find the Fedora rawhide i686 container. I couldn't find the i686 container image on the following Fedora's container registries. * https://registry.fedoraproject.org/repo/fedora/tags/ * https://quay.io/repository/fedora/fedora?tab=tags * https://hub.docker.com/_/fedora/tags The following command showing the CPU architecture meta data doesn't include i686 container. ``` $ skopeo inspect --raw docker://registry.fedoraproject.org/fedora:rawhide | jq ``` ## Mock I tried the mock, Fedora's building software. https://rpm-software-management.github.io/mock/Release-Notes-3.5 The following command to emulate the i686 environment on QEMU didn't work. ``` $ mock -r fedora-rawhide-i386 --forcearch=i386 *.rpm ``` ## setarch I tried `setarch i686` on Fedora rawhide x86_64 environment. ``` $ cat /etc/fedora-release Fedora release 41 (Rawhide) $ rpm -q gcc gcc-14.0.1-0.15.fc41.x86_64 $ gcc --version gcc (GCC) 14.0.1 20240411 (Red Hat 14.0.1-0) Copyright (C) 2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ``` I tried the following commands. But I got the errors. I am not sure why the errors happened. ``` $ git checkout v3_3_1 $ setarch i686 ./autogen.sh $ setarch i686 ./configure warnflags="-Wall -Wincompatible-pointer-types" ... * arch: i686-linux ... * with coroutine: x86 ... * warnflags: -Wall -Wincompatible-pointer-types $ setarch i686 make 2>&1 | tee make.log ... coroutine/x86/Context.S: Assembler messages: coroutine/x86/Context.S:17: Error: invalid instruction suffix for `push' coroutine/x86/Context.S:18: Error: invalid instruction suffix for `push' coroutine/x86/Context.S:19: Error: invalid instruction suffix for `push' coroutine/x86/Context.S:20: Error: invalid instruction suffix for `push' coroutine/x86/Context.S:29: Error: invalid instruction suffix for `pop' coroutine/x86/Context.S:30: Error: invalid instruction suffix for `pop' coroutine/x86/Context.S:31: Error: invalid instruction suffix for `pop' coroutine/x86/Context.S:32: Error: invalid instruction suffix for `pop' make: *** [Makefile:452: coroutine/x86/Context.o] Error 1 ``` ---------------------------------------- Bug #20447: Ruby 3.3.1 broken on i686 due to "incompatible pointer type" error https://bugs.ruby-lang.org/issues/20447#change-108114 * Author: vo.x (Vit Ondruch) * Status: Open * ruby -v: ruby 3.3.1 (2024-04-23 revision c56cd86388) [i686-linux] * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- ~~~ gcc -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -march=i686 -mtune=generic -msse2 -mfpmath=sse -mstackrealign -fasynchronous-unwind-tables -fstack-clash-protection -fPIC -m32 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -I. -I.ext/include/i386-linux -I/builddir/build/BUILD/ruby-3.3.1/include -I/builddir/build/BUILD/ruby-3.3.1 -I/builddir/build/BUILD/ruby-3.3.1/prism -I/builddir/build/BUILD/ruby-3.3.1/enc/unicode/15.0.0 -o time.o -c /builddir/build/BUILD/ruby-3.3.1/time.c make: Leaving directory '/builddir/build/BUILD/ruby-3.3.1/redhat-linux-build' /builddir/build/BUILD/ruby-3.3.1/time.c: In function ���zone_timelocal���: /builddir/build/BUILD/ruby-3.3.1/time.c:2345:35: error: passing argument 3 of ���split_second��� from incompatible pointer type [-Wincompatible-pointer-types] 2345 | split_second(tobj->timew, &t, &s); | ^~ | | | wideval_t * {aka long long unsigned int *} /builddir/build/BUILD/ruby-3.3.1/time.c:616:58: note: expected ���VALUE *��� {aka ���long unsigned int *���} but argument is of type ���wideval_t *��� {aka ���long long unsigned int *���} 616 | split_second(wideval_t timew, wideval_t *timew_p, VALUE *subsecx_p) | ~~~~~~~^~~~~~~~~ make: *** [Makefile:447: time.o] Error 1 make: *** Waiting for unfinished jobs.... make: Entering directory '/builddir/build/BUILD/ruby-3.3.1/redhat-linux-build' ~~~ This is presumably due to #20327 / https://github.com/ruby/ruby/pull/10332. There seems to be medicine in master commit:git|055613fd868a8c94e43893f8c58a00cdd2a81f6d or maybe the whole https://github.com/ruby/ruby/pull/10332, not sure -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/