Created attachment 407378 [details, diff] check __LP64__ before assuming 64bit pointers on amd64 ocaml's runtime assumes that pointers are 64bit on amd64 (as of 3.12.1) How to reproduce: emerge =dev-lang/ocaml-3.12.1 results: compilation errors I have a patch; will also try to send it upstream, but it is so simple suggest you apply it too.
Output of emerge --info: Portage 2.2.20 (python 2.7.9-final-0, default/linux/amd64/13.0/x32, gcc-4.9.3, glibc-2.20-r2, 4.0.8-gentoo x86_64) ================================================================= System uname: Linux-4.0.8-gentoo-x86_64-Intel-R-_Atom-TM-_CPU_330_@_1.60GHz-with-gentoo-2.2 KiB Mem: 3468596 total, 233352 free KiB Swap: 33554428 total, 33421112 free Timestamp of repository gentoo: Wed, 22 Jul 2015 05:15:01 +0000 sh bash 4.3_p33-r2 ld GNU ld (Gentoo 2.24 p1.4) 2.24 distcc 3.1 x86_64-pc-linux-gnux32 [disabled] app-shells/bash: 4.3_p33-r2::gentoo dev-java/java-config: 2.2.0::gentoo dev-lang/perl: 5.20.2::gentoo dev-lang/python: 2.7.9-r1::gentoo, 3.3.5-r1::gentoo dev-util/cmake: 3.2.2::gentoo dev-util/pkgconfig: 0.28-r2::gentoo sys-apps/baselayout: 2.2::gentoo sys-apps/openrc: 0.17::gentoo sys-apps/sandbox: 2.6-r1::gentoo sys-devel/autoconf: 2.69::gentoo sys-devel/automake: 1.11.6-r1::gentoo, 1.14.1::gentoo, 1.15::gentoo sys-devel/binutils: 2.24-r3::gentoo sys-devel/gcc: 4.8.4::gentoo, 4.9.3::gentoo sys-devel/gcc-config: 1.7.3::gentoo sys-devel/libtool: 2.4.6::gentoo sys-devel/make: 4.1-r1::gentoo sys-kernel/linux-headers: 3.18::gentoo (virtual/os-headers) sys-libs/glibc: 2.20-r2::gentoo Repositories: gentoo location: /usr/portage sync-type: rsync sync-uri: rsync://rsync.uk.gentoo.org/gentoo-portage priority: 0 local location: /usr/local/portage masters: gentoo priority: 100 ACCEPT_KEYWORDS="amd64" ACCEPT_LICENSE="*" CBUILD="x86_64-pc-linux-gnux32" CFLAGS="-pipe -march=bonnell -O2 -fno-stack-protector" CHOST="x86_64-pc-linux-gnux32" CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /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" CPPFLAGS="-DG_DISABLE_CAST_CHECKS" CXXFLAGS="-pipe -march=bonnell -O2 -fno-stack-protector" DISTDIR="/usr/portage/distfiles" FCFLAGS="-O2 -pipe" FEATURES="assume-digests binpkg-logs collision-protect config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync multilib-strict news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans usersandbox usersync" FFLAGS="-O2 -pipe" GENTOO_MIRRORS="http://mirror.bytemark.co.uk/gentoo ftp://mirror.bytemark.co.uk/gentoo" LANG="en_GB.utf8" LDFLAGS="-Wl,-O1 -Wl,--as-needed" MAKEOPTS="-j4" PKGDIR="/usr/portage/packages" 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" PORTAGE_TMPDIR="/var/tmp" USE="X aac acl alsa amd64 berkdb bitcoin_policy_spamfilter broadway bzip2 cli cracklib crypt cups cxx dri drm emacs faac fastcgi fortran gdbm gtk gtk3 gudev iconv icu ipv6 ithreads libav libkms lm_sensors logrotate mmx mmxext modules mp3 multilib ncurses nls nossp nptl offensive ogg openmp pam pcre policykit qt3support readline sctp session squashfs sse sse2 sse3 ssl ssse3 sync-plugin-portage syslog tcpd theora threads toolkit-scroll-bars udev unicode v4l vpx wayland wayland-compositor xetex xft xkb xnest xwayland zlib" ABI_X86="x32 64" 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="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 ssse3" DRACUT_MODULES="lvm" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3" RUBY_TARGETS="ruby19 ruby20" USERLAND="GNU" VIDEO_CARDS="nouveau modesetting" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
what about 4.02.2 ? I prefer not to add patches to stable, which is also very outdated
4.02.2 also fails: x86_64-pc-linux-gnux32-gcc -DCAML_NAME_SPACE -pipe -march=bonnell -O2 -fno-stack-protector -O -fno-defer-pop -Wall -D_FILE_OFFSET_BITS=64 -D_REENTRANT -c -o signals.o signals.c signals.c: Assembler messages: signals.c:93: Error: incorrect register `%eax' used with `q' suffix signals.c:93: Error: incorrect register `%eax' used with `q' suffix <builtin>: recipe for target 'signals.o' failed make: *** [signals.o] Error 1 I'll try fixing it and attach a patch if successful.
Created attachment 407696 [details, diff] Same patch as above, adapted for ocaml-4.x This one should fix 4.02.2
Please patch both versions though; mldonkey does not build with ocaml-4.x
Also, the ocamlopt useflag breaks on x32, should probably by usemasked by the x32 profile.
thx; could you please submit a pull request upstream ? https://github.com/ocaml/ocaml
ocaml-4.11.1/runtime/caml contains: #elif defined(__GNUC__) && (defined(__i386__) || (defined(__x86_64__) \ && defined(__ILP32__))) So I think it has been fixed upstream.
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6b92854d276a8b00adccea7265b068b961530a3e commit 6b92854d276a8b00adccea7265b068b961530a3e Author: Mark Wright <gienah@gentoo.org> AuthorDate: 2020-10-10 08:13:21 +0000 Commit: Mark Wright <gienah@gentoo.org> CommitDate: 2020-10-13 12:52:57 +0000 dev-lang/ocaml: Bump to 4.11.1 Thanks to Martin 'The Bishop' Scheffler for reporting ocaml does not compile with gcc-10, and for the patch. This appears to be fixed upstream. Thanks to Josh Parsons for the x32 compile patch, this appears to be fixed upstream. Bug: https://bugs.gentoo.org/735274 Bug: https://bugs.gentoo.org/555598 Package-Manager: Portage-3.0.8, Repoman-3.0.1 Signed-off-by: Mark Wright <gienah@gentoo.org> dev-lang/ocaml/Manifest | 1 + dev-lang/ocaml/metadata.xml | 5 ++- dev-lang/ocaml/ocaml-4.11.1.ebuild | 74 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 1 deletion(-)
Fixed upstream. Non fixed version are no more in the tree