Tested all versions with gcc-13 and dev-libs/librdkafka-1.8.2 with gcc-12. The asm should not be trying to use amd64 registers on arm64 Reproducible: Always Steps to Reproduce: 1. emerge random version of dev-libs/librdkafka on arm64 2. read the build log. 3. Actual Results: dev-libs/librdkafka fails to build Expected Results: The build system does not use amd64 registers on arm64 Pi4_GCC-12 ~ # emerge --info Portage 3.0.44 (python 3.10.10-final-0, default/linux/arm64/17.0/desktop, gcc-12, glibc-2.36-r7, 6.1.1-gentoo aarch64) ================================================================= System uname: Linux-6.1.1-gentoo-aarch64-with-glibc2.36 KiB Mem: 72945508 total, 61922716 free KiB Swap: 0 total, 0 free Timestamp of repository gentoo: Thu, 16 Feb 2023 20:00:01 +0000 Head commit of repository gentoo: 05b8a0768e6eee3c15d416114fc6c7fd002e8436 sh bash 5.2_p15-r2 ld GNU ld (Gentoo 2.39 p5) 2.39.0 distcc 3.4 aarch64-unknown-linux-gnu [disabled] app-misc/pax-utils: 1.3.7::gentoo app-shells/bash: 5.2_p15-r2::gentoo dev-java/java-config: 2.3.1::gentoo dev-lang/perl: 5.36.0-r2::gentoo dev-lang/python: 3.9.16::gentoo, 3.10.10_p1::gentoo, 3.11.2_p1::gentoo dev-lang/rust: 1.67.1::gentoo dev-util/cmake: 3.25.2::gentoo dev-util/meson: 1.0.0::gentoo sys-apps/baselayout: 2.13-r1::gentoo sys-apps/openrc: 0.46::gentoo sys-apps/sandbox: 2.30-r1::gentoo sys-devel/autoconf: 2.13-r7::gentoo, 2.71-r5::gentoo sys-devel/automake: 1.16.5::gentoo sys-devel/binutils: 2.39-r4::gentoo, 2.40-r1::gentoo sys-devel/binutils-config: 5.5::gentoo sys-devel/clang: 14.0.6-r1::gentoo, 15.0.7-r1::gentoo sys-devel/gcc: 11.3.1_p20221007::gentoo, 12.2.1_p20230121-r1::gentoo sys-devel/gcc-config: 2.10::gentoo sys-devel/libtool: 2.4.7-r1::gentoo sys-devel/lld: 14.0.6-r1::gentoo, 15.0.7::gentoo sys-devel/llvm: 13.0.1::gentoo, 14.0.6-r2::gentoo, 15.0.7::gentoo sys-devel/make: 4.4::gentoo sys-kernel/linux-headers: 6.1::gentoo (virtual/os-headers) sys-libs/glibc: 2.36-r7::gentoo Repositories: gentoo location: /var/db/repos/gentoo sync-type: rsync sync-uri: rsync://rsync.gentoo.org/gentoo-portage priority: -1000 volatile: True sync-rsync-extra-opts: sync-rsync-verify-max-age: 24 sync-rsync-verify-metamanifest: yes sync-rsync-verify-jobs: 1 Installed sets: @extras, @fs-extras, @kde-extras, @more_extras ACCEPT_KEYWORDS="arm64 ~arm64" ACCEPT_LICENSE="@FREE all-rights-reserved bh-luxi bluez-firmware fairuse FraunhoferFDK freedist IUPAC-InChi kaptan linux-firmware linux-fw-redistributable MPEG-4 MSttfEULA no-source-code OSGi-Specification-2.0 raspberrypi-videocore-bin rpi-eeprom SSPL-1 sun-bcla-jai Turkowski unRAR xgraph" CBUILD="aarch64-unknown-linux-gnu" CFLAGS="-mcpu=cortex-a72+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -fomit-frame-pointer -flto=6" CHOST="aarch64-unknown-linux-gnu" CONFIG_PROTECT="/boot/cmdline.txt /boot/config.txt /etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php7.4/ext-active/ /etc/php/apache2-php8.0/ext-active/ /etc/php/apache2-php8.1/ext-active/ /etc/php/apache2-php8.2/ext-active/ /etc/php/cgi-php7.4/ext-active/ /etc/php/cgi-php8.0/ext-active/ /etc/php/cgi-php8.1/ext-active/ /etc/php/cgi-php8.2/ext-active/ /etc/php/cli-php7.4/ext-active/ /etc/php/cli-php8.0/ext-active/ /etc/php/cli-php8.1/ext-active/ /etc/php/cli-php8.2/ext-active/ /etc/php/fpm-php7.4/ext-active/ /etc/php/fpm-php8.0/ext-active/ /etc/php/fpm-php8.1/ext-active/ /etc/php/fpm-php8.2/ext-active/ /etc/php/phpdbg-php7.4/ext-active/ /etc/php/phpdbg-php8.0/ext-active/ /etc/php/phpdbg-php8.1/ext-active/ /etc/php/phpdbg-php8.2/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c" CXXFLAGS="-mcpu=cortex-a72+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -fomit-frame-pointer -flto=6" DISTDIR="/var/cache/distfiles" ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR XDG_STATE_HOME" FCFLAGS="-mcpu=cortex-a72+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -fomit-frame-pointer -flto=6" FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg buildpkg-live collision-protect config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" FFLAGS="-mcpu=cortex-a72+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe -fomit-frame-pointer -flto=6" GENTOO_MIRRORS="http://mirrors.gethosted.online/gentoo http://www.mirrorservice.org/sites/distfiles.gentoo.org/ http://mirrors.soeasyto.com/distfiles.gentoo.org/ http://mirror.leaseweb.com/gentoo/ http://gentoo.mirrors.ovh.net/gentoo-distfiles/ http://ftp.snt.utwente.nl/pub/os/linux/gentoo https://www.mirrorservice.org/sites/distfiles.gentoo.org/ http://mirror.bytemark.co.uk/gentoo/ http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror/ http://ftp-stud.hs-esslingen.de/pub/Mirrors/gentoo/" LANG="C.UTF8" LDFLAGS="-Wl,-O1 -Wl,--as-needed" LEX="flex" LINGUAS="en en_GB" MAKEOPTS="-j32" PKGDIR="/var/cache/packages" PORTAGE_BINHOST="http://bloodnoc.org/~roy/BINHOSTS/gcc-12.x/armv8a" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git" PORTAGE_TMPDIR="/var/tmp" SHELL="/bin/bash" USE="X a52 aac aalib accessibility acl acpi alsa arm64 bluetooth bluray branding btrfs bzip2 cairo cdda cdr clamav clang cli context crypt cups dbus default-gold dillo dmraid doc dot dri dts dvd dvdnav dvdr eds egl elogind encode exif extras f2fs faad fat ffmpeg flac fontconfig fortran gdbm geoclue gif gles1 gnome-keyring gpm graphite gstreamer gtk gtk3 gui hfs iconv icu introspection iptables ipv6 jack jadetex jfs jit jpeg kde latex lcms libglvnd libnotify libtirpc lto lvm mad map mdadm minizip mng modemmanager mp3 mp4 mpeg mysql mysqli ncurses netifrc ngspice nls nptl nss ntfs ogg openexr opengl openmp openssl pam pango pcre pcre16 pcre32 pdf php pie pim png policykit postgres postproc ppds python qml qt5 rar raspberry-pi readline reiser4 reiserfs script sdk sdl seccomp servletapi skia sound speex spell split-usr sqlite ssl ssp startup-notification svc svg test-rust thesaurus thin threads tiff tk truetype twolame udev udf udisks unicode upower usb vala virt-network vorbis vulkan webengine widgets wmf wxwidgets x264 x265 xattr xcb xface xfs xft xml xpm xscreensaver xv xvfb xvid xvmc zip zlib" ADA_TARGET="gnat_2021" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_ARM="edsp thumb vfp vfpv3 vfpv4 vfp-d32 crc32 v4 v5 v6 v7 v8 thumb2" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev libinput synaptics" KERNEL="linux" L10N="en en-GB" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-4 php8-0" POSTGRES_TARGETS="postgres12 postgres13" PYTHON_SINGLE_TARGET="python3_10" PYTHON_TARGETS="python3_10" RUBY_TARGETS="ruby26 ruby27 ruby30 ruby31" USERLAND="GNU" VIDEO_CARDS="amdgpu fbdev nouveau radeon v3d vc4" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq proto steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EMERGE_DEFAULT_OPTS, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, INSTALL_MASK, LC_ALL, LD, LFLAGS, LIBTOOL, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RANLIB, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS
Created attachment 853104 [details] gcc-12 build log
Also ran into this on ppc, looks like it's a repeat of https://github.com/confluentinc/librdkafka/issues/1290 . Except this time it's LTO's fault, it optimizes out the dead code so the test passes when it shouldn't. Removing LTO fixes.
afka_partition.o rdkafka_subscription.o rdkafka_assignment.o rdkafka_assignor.o rdkafka_range_assignor.o rdkafka_roundrobin_assignor.o rdkafka_sticky_assignor.o rdkafka_feature.o rdcrc32.o crc32c.o rdmurmur2.o rdfnv1a.o rdaddr.o rdrand.o rdlist.o tinycthread.o tinycthread_extra.o rdlog.o rdstring.o rdkafka_event.o rdkafka_metadata.o rdregex.o rdports.o rdkafka_metadata_cache.o rdavl.o rdkafka_sasl.o rdkafka_sasl_plain.o rdkafka_interceptor.o rdkafka_msgset_writer.o rdkafka_msgset_reader.o rdkafka_header.o rdkafka_admin.o rdkafka_aux.o rdkafka_background.o rdkafka_idempotence.o rdkafka_cert.o rdkafka_txnmgr.o rdkafka_coord.o rdvarint.o rdbuf.o rdmap.o rdunittest.o rdkafka_mock.o rdkafka_mock_handlers.o rdkafka_mock_cgrp.o rdkafka_error.o rdkafka_sasl_scram.o rdkafka_sasl_oauthbearer.o snappy.o rdgz.o rdhdrhistogram.o rdkafka_ssl.o rdkafka_lz4.o rdxxhash.o lz4.o lz4frame.o lz4hc.o rddl.o rdkafka_plugin.o -o librdkafka.so.1 -lm -lssl -lcrypto -lz -ldl -lpthread -lrt -lpthread -lrt In function ‘rd_crc32c_global_init’, inlined from ‘rd_kafka_global_init0’ at rdkafka.c:136:9: crc32c.c:374:9: error: unknown register name ‘%edx’ in ‘asm’ 374 | SSE42(sse42); | ^ crc32c.c:374:9: error: unknown register name ‘%ebx’ in ‘asm’ /var/tmp/portage/dev-libs/librdkafka-1.8.2/temp/cc2om93j.s: Assembler messages: /var/tmp/portage/dev-libs/librdkafka-1.8.2/temp/cc2om93j.s:1411: Error: operand 1 must be an integer register -- `crc32b (x4),x0' /var/tmp/portage/dev-libs/librdkafka-1.8.2/temp/cc2om93j.s:1434: Error: unknown mnemonic `crc32q' -- `crc32q (x2),x0' /var/tmp/portage/dev-libs/librdkafka-1.8.2/temp/cc2om93j.s:1435: Error: unknown mnemonic `crc32q' -- `crc32q 8192(x2),x1' /var/tmp/portage/dev-libs/librdkafka-1.8.2/temp/cc2om93j.s:1436: Error: unknown mnemonic `crc32q' -- `crc32q 16384(x2),x3' /var/tmp/portage/dev-libs/librdkafka-1.8.2/temp/cc2om93j.s:1491: Error: unknown mnemonic `crc32q' -- `crc32q (x2),x0' /var/tmp/portage/dev-libs/librdkafka-1.8.2/temp/cc2om93j.s:1492: Error: unknown mnemonic `crc32q' -- `crc32q 256(x2),x1' /var/tmp/portage/dev-libs/librdkafka-1.8.2/temp/cc2om93j.s:1493: Error: unknown mnemonic `crc32q' -- `crc32q 512(x2),x3' /var/tmp/portage/dev-libs/librdkafka-1.8.2/temp/cc2om93j.s:1544: Error: unknown mnemonic `crc32q' -- `crc32q (x2),x0' /var/tmp/portage/dev-libs/librdkafka-1.8.2/temp/cc2om93j.s:1561: Error: operand 1 must be an integer register -- `crc32b (x4),x0' make[2]: *** [/var/tmp/portage/dev-libs/librdkafka-1.8.2/temp/cca7jsBk.mk:35: /var/tmp/portage/dev-libs/librdkafka-1.8.2/temp/ccFu7Vcs.ltrans11.ltrans.o] Error 1
It was reported in 2019, and upstream first responded to the report 3 years later, in order to say: > Closing due to inactivity, does not seem like a common issue. The project is aptly named. For a humorous writeup on the topic, see https://0ver.org/#apache-kafka
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=77daa955c05041001df330ba94144b1e5dcc8112 commit 77daa955c05041001df330ba94144b1e5dcc8112 Author: Eli Schwartz <eschwartz@gentoo.org> AuthorDate: 2024-09-06 04:59:23 +0000 Commit: Eli Schwartz <eschwartz@gentoo.org> CommitDate: 2024-09-06 05:03:32 +0000 dev-libs/librdkafka: mark as LTO-unsafe Upstream has an innovative bug report strategy. Wait for people to report bugs in the software, then ignore the bug report for several years, then show up and as the very first official reply: > Closing due to inactivity, does not seem like a common issue. We can presume that this will never be fixed. Although the nuance of whether it is broken depends on the exact architecture used, it is not worth figuring out where it is safe to use for such a, well, *kafkaesque* bit of software. :) Bug: https://github.com/confluentinc/librdkafka/issues/2426 Closes: https://bugs.gentoo.org/895464 Signed-off-by: Eli Schwartz <eschwartz@gentoo.org> dev-libs/librdkafka/librdkafka-2.2.0-r1.ebuild | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)