From owner-freebsd-arm@freebsd.org Wed Mar 31 20:11:05 2021 Return-Path: Delivered-To: freebsd-arm@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id F3AF45AE98A for ; Wed, 31 Mar 2021 20:11:05 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic311-24.consmr.mail.gq1.yahoo.com (sonic311-24.consmr.mail.gq1.yahoo.com [98.137.65.205]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4F9crm58qJz4ZM2 for ; Wed, 31 Mar 2021 20:11:04 +0000 (UTC) (envelope-from marklmi@yahoo.com) X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1617221462; bh=WlmGWSbiEIyJCiERkkEBfq5RkKPjpUcson7D9oHQBtL=; h=X-Sonic-MF:Subject:From:Date:To:From:Subject; b=TPxzbvQPEPiEtr9ORbiqfJjxlqVEwdxtH+euHmzAERxMzbN3PIJAWjDRvq+uceoPzHbC+yFowgU4rcxAxAuefv1Ldp6gTAV/zzoixueRQe6Lhg+kw7pfnWBuEZ63oVxYziuhyceGaw1r6VpziXJEDEvcaOKM4fuVF0UkUwWaa4cF3pfh/qGtunY/61ozJpFnSAcGoTIE9jEu6rdIxT2XzSxXB1XgbXDFsW+AQXD1w6dr/o7E/yOrSRguyT7XjfrxsLSl3G4wdBoAbIODHmqVH9c1G7uf2RgLZ9ZIUjxMC2L9vKAjc5oq8TLpVPLxnh7yRhltn/SiWEhgthZQ3eTDMA== X-YMail-OSG: 63YIlrYVM1kAPUdMs3hjuq7BzsHomLvjUPYkQ9378c06D0NRS1LxvB6i0t6fk7n 9c7N71Ubfg1w_w0RTccIGp7jF_QiOK59EQJe2RQyh6CrupU4mArkhZNxVYt4659ImqV8NDA9T66i IlJ8xT06S91Q9WxIk4zGsWxW5UxkfVWdsethA8fVMPcHnbZOMyrnMoDqGLxACnvwyssC1VsvGcN. 7oMwAnUvp5ND5hMMHNBScnmUDvSOI4QuIv_HaY5l0qK.n6aNm1HegKIaPET8RH6FvzarYmbxkfKl VDXjVRjiovXl27MHoa63eNC2.buWLvXwtQyWXDc.66WZYzw3AkXk2ylgr5t3oZUfVwPvEwiqaRHN DVq45nabtHTOMCe2zLiR5izrqNnJkyXV_N0as7Dxqvkl9Re2oaHSd1tA7Rc7xffNev9rTDasGIuM oXAYyInWuQPzGKVpkRzR.hNLgtXSiPNo_tySji2sfwsV1Ho5iKJ11dy1khvLGUaf4VFU8bmEMuhm G8hxIJwDxXlugRUeeWCbY2h9asog09zemmMAFa2eAujllX_02aGVWavsRnw5R221H1azr08fKGr6 Pxxxn2iYkDs27pfYEm2EZ3d2R7XxUTWEpgmxVQJ1q42bWRlx6fyRhNLtef2Baq.WKdxiugHTBSTZ RFU16_hqlrf48lvYUh1fSWw1FdZyqLlEVt4sWHTRUmxd82b928I.z2EmhrIWmASe3hAlME4p0ZL7 Xa2hoppNFt8V8xtegQEF97arrwp31nDshs9Qeb7ZfpU389QMG0qSmUd_vZiAfCsdIhxobs_xn5bX iYwXSq2ESp4iV3FCfSHMLo31T2xbYH3p0xDmTpa6y8ifOjQQnPZw7ZEx5x5Unyfiu6XNwL4Y.Yiz S1Elgpz4mYvm0py4iS37AOvCrHyk2U7Wbz3Lz2nR3cv1UHw8x1St4DXSPIbYvkCM95UddTgpIEF0 FbksUWvZuULxmjUTP0MvgBE6PsGCO69rg2IPZIvy9F1pm3v6hI0jkYhZZYdrHE9Le28qfXvGE6uu rA7IItZlkhJpX7NEwR5U9JcZ6dGOvVayaxdQOJoE93qMt23jgrHPO3coWzkZ.R_5Jd8gy46gGbnj fO3V7AMbN17P2mFgk3c6_.CnNSlO_jYK4wtMREDnyd9K2zWbyJ8GFuhC5WGGOIpGuk5kedbMOtYH yLVabiZ5aWKIPpptJMliUvGI7.qqRJSxfHswtwX.iPpLCNbwMrbSgXxkbH4ISsc3ixagJGpnztWE ttxTXWQnTV1j1C1KYD9Os3vnLTdTmD29CpOcBDjVE.Q6AYb21yalXMVxN1RVj7K9yh_GiPaNNagk WVS4SpUcX7i1RuVE7_ShX4bfM4CIG8k9ziCsMRGxDPJ9tf5Wlon_CPX8HBp._9GvvGYBVb8ocCG4 hNB_DxuMjA_Sskz9.Rc23VSBIOu6ebA1wcVNLZMMY3GAzgpclg7.C9Mv.SHL4Av0uW0jZMUcMl3g LnOiwRfd63HLfaRyPEquiqy7tojF4YakGzHEMNkNitw88oGzvJW0vA4TJoPKnI7bmYgXSKIYJhc7 FnXWc6SMh8sHCJdXR.OKaV6GWxAlHgeFJ1tXurpwJBadxnCnj2hojyBO1tb34p6bcitAWkBAr0qg 52FEdXkFTMRxuqq9oTP68AemBmC.QcrZQuVJ7I5qOqnfddNbWcIksBuMTZcn4d_1maoiGTdbVPGR 6H1e_i9QvnKUWJYtHcl1tigHre4BfnjBV18UyB7M_yQCW9k4GBDZIuKDSQhoMRmAZFxA6zfFTkb3 0wN1v60gHO5qb_QT7LIln03VkTJG_EHOauGSojRU8NGxKPN3hcS1wIOJkKaiGf7KPGOOtIed65oZ 79Q9NHAWf.PJWfEeyrGfAGP237iYLwP39ELItnFk49iI1jsDTQuEXc5uIP2O.A1GgL_1nce4SR2v 2Xyc8dym0xUp20ZerHhIB1dW7vgbsGqVA7gwgG7ltCKv5D1JHxWZGiclXNwCZCpiP3DPSmRn1I8u tl9vUCq5wntXE4HOSXrUw5EZweLcbLHaxVINGq7b4L9zfg_qKyp.7m8nqWYOLv211TBS_DdfjhyY p4hPRktdg2RFWBIMd8UjDwK2zbW9cF890NPbXcrs5VtGoIZBKrlj5g5Z_gwXr2o4yaNkfVasUalN lf0qQNT7H3Viq0YQcxb1pytat8Q8dUF.uJtZtpL_F6DDxUCFaEkVfE1UmOl0XCrwrVmyJlMICRbf OYqsslay7gdFEFxjgbuXs8r40Sp7ylT0xNU0_pOEl69Xqcs5KfBJunVy8guYd1hqqHPUfZe0Y0kZ HTSF82LO6HeWPg8y1_p_0j8_d_tnkDldntNOcphYXaELmfmN7PJwMTfFBm2fqPK9fVwIkTPhhOWA FUZHC2VGCDMQaoQTNaIsvO9_52eRPWV7q6w3xVGQdqN1JyZysLEbjshLQIrVIXjg2tEA0Ir5OLQK UDpNCGQhb1RK6m5eRKQN7WGS6geowU.nM0ic7vQ6VT27auqpNxxwVpp0.NEFy2kSzFw2ong-- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic311.consmr.mail.gq1.yahoo.com with HTTP; Wed, 31 Mar 2021 20:11:02 +0000 Received: by kubenode581.mail-prod1.omega.gq1.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 8573a8067d7d51e92929274a44224ff7; Wed, 31 Mar 2021 20:10:58 +0000 (UTC) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.60.0.2.21\)) Subject: Re: 32-bit executables on aarch64? From: Mark Millard In-Reply-To: Date: Wed, 31 Mar 2021 13:10:58 -0700 Cc: freebsd-arm@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <202103311826.12VIQwxD038077@office.dignus.com> To: Thomas David Rivers X-Mailer: Apple Mail (2.3654.60.0.2.21) X-Rspamd-Queue-Id: 4F9crm58qJz4ZM2 X-Spamd-Bar: -- X-Spamd-Result: default: False [-2.50 / 15.00]; TO_DN_SOME(0.00)[]; FREEMAIL_FROM(0.00)[yahoo.com]; MV_CASE(0.50)[]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; DKIM_TRACE(0.00)[yahoo.com:+]; RCPT_COUNT_TWO(0.00)[2]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; NEURAL_HAM_SHORT(-1.00)[-1.000]; FROM_EQ_ENVFROM(0.00)[]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; ASN(0.00)[asn:36647, ipnet:98.137.64.0/20, country:US]; RBL_DBL_DONT_QUERY_IPS(0.00)[98.137.65.205:from]; DWL_DNSWL_NONE(0.00)[yahoo.com:dkim]; SUBJECT_ENDS_QUESTION(1.00)[]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; MID_RHS_MATCH_FROM(0.00)[]; FROM_HAS_DN(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; SPAMHAUS_ZRD(0.00)[98.137.65.205:from:127.0.2.255]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[98.137.65.205:from]; RWL_MAILSPIKE_POSSIBLE(0.00)[98.137.65.205:from]; RCVD_COUNT_TWO(0.00)[2]; MAILMAN_DEST(0.00)[freebsd-arm] X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Porting FreeBSD to ARM processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Mar 2021 20:11:06 -0000 On 2021-Mar-31, at 12:39, Mark Millard wrote: > On 2021-Mar-31, at 11:26, Thomas David Rivers = wrote: >=20 >> marklmi@yahoo.com wrote: >>> armv7# file `which uname` >>> /usr/bin/uname: ELF 32-bit LSB executable, ARM, EABI5 version 1 = (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, = FreeBSD-style, for FreeBSD 14.0 (1400005), not stripped >>>=20 >>> armv7# uname -apKU >>> FreeBSD RPi4B 14.0-CURRENT FreeBSD 14.0-CURRENT = mm-src-n245445-def0058cc690 GENERIC-NODBG arm armv7 1400005 1400005 >>>=20 >>> (I did both buildworld builds from the same source.) >>>=20 >>> There is no lib32 implementation for aarch64. >>> So, direct execution of code for armv7 FreeBSD >>> without being in such a chroot is not available. >>> (I ignore qemu and the like here.) >>>=20 >>> =3D=3D=3D >>> Mark Millard >>=20 >> Ah! >>=20 >> So, the kernel _can_ run a 32-bit executable... >=20 > Only in a chroot to an armv7 world, not directly. > You can use the chroot's system compiler/toolchain > to build armv7 materials for use in the chroot. >=20 > powerpc64 FreeBSD on on PowerMacs has a lib32 in > the powerpc64 world and so allows 32-bit powerpc > FreeBSD coded to be used either with or without > a choot being in use to do so. amd64 and i386 are > similar. More than the kernel is involved in > avoiding the need for a chroot to be in use. >=20 > powerpc64 allows building without lib32 and > without it the handling is like for aarch64 > and armv7. >=20 >> but we just can't >> build one on an aarch64 machine... >=20 > Without a lib32 in the aarch64 world, the armv7 > FreeBSD code use has to be from inside an > appropriate chroot as far as I know. >=20 >> I wonder if I can "cross-build" an LLVM/dcc for armv7 and just >> cross-compile to get a 32-bit executable that executes on=20 >> a 64-bit kernel.. perhaps with -static to avoid any runtime problems? >=20 > armv7 FreeBSD code use: only in an appropriate > chroot unless the lib32 has been implmented > (as is installed). Some powerpc64 vs. aarch64 comparisons/contrasts: powerpc64 (built with lib32): # ls -ldt /libexec/*ld* -r-xr-xr-x 1 root wheel 143412 Mar 3 19:12 /libexec/ld-elf32.so.1 -r-xr-xr-x 1 root wheel 151528 Mar 3 19:12 /libexec/ld-elf.so.1 The ld-elf32.so.1 is generated by the lib32 build during buildworld (and later is installed). # file /libexec/ld-elf*.so.1 /libexec/ld-elf.so.1: ELF 64-bit MSB shared object, 64-bit PowerPC or = cisco 7500, OpenPOWER ELF V2 ABI, version 1 (FreeBSD), dynamically = linked, for FreeBSD 14.0 (1400005), not stripped /libexec/ld-elf32.so.1: ELF 32-bit MSB shared object, PowerPC or cisco = 4500, version 1 (FreeBSD), dynamically linked, for FreeBSD 14.0 = (1400005), not stripped aarch64 (no option to build lib32): # ls -ldt /libexec/*ld* -r-xr-xr-x 1 root wheel 136600 Mar 3 20:37 /libexec/ld-elf.so.1 # file /libexec/ld-elf*.so.1 /libexec/ld-elf.so.1: ELF 64-bit LSB shared object, ARM aarch64, = version 1 (FreeBSD), dynamically linked, for FreeBSD 14.0 (1400005), not = stripped So aarch64 FreeBSD just does not have the supporting infrastructure in place to run armv7 FreeBSD code directly. But powerpc64 built with lib32 also has: # ls -Tld /usr/lib32/* | more -r--r--r-- 1 root wheel 7816 Mar 12 14:07:13 2021 = /usr/lib32/Scrt1.o -r--r--r-- 1 root wheel 7772 Mar 12 14:07:13 2021 = /usr/lib32/crt1.o -r--r--r-- 1 root wheel 3488 Mar 12 14:07:13 2021 = /usr/lib32/crtbegin.o -r--r--r-- 1 root wheel 3852 Mar 12 14:07:13 2021 = /usr/lib32/crtbeginS.o -r--r--r-- 1 root wheel 3488 Mar 12 14:07:13 2021 = /usr/lib32/crtbeginT.o -r--r--r-- 1 root wheel 2828 Mar 12 14:07:13 2021 = /usr/lib32/crtend.o -r--r--r-- 1 root wheel 2896 Mar 12 14:07:13 2021 = /usr/lib32/crtendS.o -r--r--r-- 1 root wheel 2184 Mar 12 14:07:13 2021 = /usr/lib32/crti.o -r--r--r-- 1 root wheel 1664 Mar 12 14:07:13 2021 = /usr/lib32/crtn.o -r--r--r-- 1 root wheel 8900 Mar 12 14:07:13 2021 = /usr/lib32/crtsavres.o drwxr-xr-x 2 root wheel 512 Mar 12 21:29:28 2021 = /usr/lib32/dtrace drwxr-xr-x 2 root wheel 512 Mar 12 21:29:28 2021 = /usr/lib32/engines -r--r--r-- 1 root wheel 8100 Mar 12 14:07:13 2021 = /usr/lib32/gcrt1.o drwxr-xr-x 2 root wheel 512 Mar 12 21:29:28 2021 /usr/lib32/geom drwxr-xr-x 2 root wheel 1536 Mar 12 21:29:28 2021 /usr/lib32/i18n -r--r--r-- 1 root wheel 56050 Mar 3 19:13:13 2021 = /usr/lib32/lib80211.a lrwxr-xr-x 1 root wheel 13 Mar 12 14:07:13 2021 = /usr/lib32/lib80211.so -> lib80211.so.1 -r--r--r-- 1 root wheel 22604 Mar 12 14:07:13 2021 = /usr/lib32/lib80211.so.1 -r--r--r-- 1 root wheel 57348 Mar 3 19:13:13 2021 = /usr/lib32/lib80211_p.a -r--r--r-- 1 root wheel 494894 Mar 3 19:13:12 2021 = /usr/lib32/lib9p.a lrwxr-xr-x 1 root wheel 10 Mar 12 14:07:13 2021 = /usr/lib32/lib9p.so -> lib9p.so.1 -r--r--r-- 1 root wheel 119288 Mar 12 14:07:13 2021 = /usr/lib32/lib9p.so.1 -r--r--r-- 1 root wheel 502702 Mar 3 19:13:12 2021 = /usr/lib32/lib9p_p.a -r--r--r-- 1 root wheel 28658 Mar 3 19:13:12 2021 = /usr/lib32/libBlocksRuntime.a lrwxr-xr-x 1 root wheel 21 Mar 12 14:07:13 2021 = /usr/lib32/libBlocksRuntime.so -> libBlocksRuntime.so.0 -r--r--r-- 1 root wheel 12796 Mar 12 14:07:13 2021 = /usr/lib32/libBlocksRuntime.so.0 -r--r--r-- 1 root wheel 30794 Mar 3 19:13:12 2021 = /usr/lib32/libBlocksRuntime_p.a -r--r--r-- 1 root wheel 217736 Mar 3 19:13:12 2021 = /usr/lib32/libalias.a lrwxr-xr-x 1 root wheel 13 Mar 12 14:07:13 2021 = /usr/lib32/libalias.so -> libalias.so.7 . . . lrwxr-xr-x 1 root wheel 15 Mar 12 14:07:13 2021 = /usr/lib32/pam_rhosts.so -> pam_rhosts.so.6 -r--r--r-- 1 root wheel 5748 Mar 12 14:07:13 2021 = /usr/lib32/pam_rhosts.so.6 lrwxr-xr-x 1 root wheel 15 Mar 12 14:07:13 2021 = /usr/lib32/pam_rootok.so -> pam_rootok.so.6 -r--r--r-- 1 root wheel 5132 Mar 12 14:07:13 2021 = /usr/lib32/pam_rootok.so.6 lrwxr-xr-x 1 root wheel 18 Mar 12 14:07:13 2021 = /usr/lib32/pam_securetty.so -> pam_securetty.so.6 -r--r--r-- 1 root wheel 6228 Mar 12 14:07:13 2021 = /usr/lib32/pam_securetty.so.6 lrwxr-xr-x 1 root wheel 13 Mar 12 14:07:13 2021 = /usr/lib32/pam_self.so -> pam_self.so.6 -r--r--r-- 1 root wheel 5612 Mar 12 14:07:13 2021 = /usr/lib32/pam_self.so.6 lrwxr-xr-x 1 root wheel 12 Mar 12 14:07:13 2021 = /usr/lib32/pam_ssh.so -> pam_ssh.so.6 -r--r--r-- 1 root wheel 15504 Mar 12 14:07:13 2021 = /usr/lib32/pam_ssh.so.6 lrwxr-xr-x 1 root wheel 16 Mar 12 14:07:13 2021 = /usr/lib32/pam_tacplus.so -> pam_tacplus.so.6 -r--r--r-- 1 root wheel 11036 Mar 12 14:07:13 2021 = /usr/lib32/pam_tacplus.so.6 lrwxr-xr-x 1 root wheel 13 Mar 12 14:07:13 2021 = /usr/lib32/pam_unix.so -> pam_unix.so.6 -r--r--r-- 1 root wheel 16324 Mar 12 14:07:13 2021 = /usr/lib32/pam_unix.so.6 lrwxr-xr-x 1 root wheel 16 Mar 12 14:07:13 2021 = /usr/lib32/pam_zfs_key.so -> pam_zfs_key.so.6 -r--r--r-- 1 root wheel 20492 Mar 12 14:07:13 2021 = /usr/lib32/pam_zfs_key.so.6 where aarch64 has: # ls -Tld /usr/lib32/* ls: /usr/lib32/*: No such file or directory =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)