From nobody Sat Nov 8 17:33:23 2025 X-Original-To: freebsd-pkgbase@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4d3jhV5cfSz6GKHF for ; Sat, 08 Nov 2025 17:33:46 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic304-24.consmr.mail.gq1.yahoo.com (sonic304-24.consmr.mail.gq1.yahoo.com [98.137.68.205]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4d3jhV2plTz3gBW for ; Sat, 08 Nov 2025 17:33:46 +0000 (UTC) (envelope-from marklmi@yahoo.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=yahoo.com header.s=s2048 header.b=NWggdeo8; dmarc=pass (policy=reject) header.from=yahoo.com; spf=pass (mx1.freebsd.org: domain of marklmi@yahoo.com designates 98.137.68.205 as permitted sender) smtp.mailfrom=marklmi@yahoo.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1762623219; bh=lEoxvMtFEP6mpSBTchix9b6RXpej3fSv/e/hHj73W+4=; h=From:Subject:Date:References:To:In-Reply-To:From:Subject:Reply-To; b=NWggdeo8Y6Wo9tXZR/BUFcjHTyGxzS/E01Ckg0PrrnWeQdLINwoEZU69a6wegw+0lnizL6943C+LVJakmFlEpiqA43TC9IUx06TCdrSdEk3qts/KGnBf6656WcclGhRv/fwy/9wBp/xTmJ/A9rkotx+ImqATJ5nX5dePuDoEWQynMu5PmrG0qHGK6yxJUBEx+0nSLhX0NQ4yfguRYSydfZQ6meOJqn+sGeQn3ne4Z2NoZ+62CT8PDt46REhHPHSI+b2YWnlJGMSxjcQuzBeNTdnrPYxgWYjXSx9QnjZxkBfa8QeIzwzaWTk2mvzqO8DIptsznLPUMs8pixMo9DvqRA== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1762623219; bh=swc5EyCprIlohZrjnJti0kiiBmoJSN/VxYOwvdtsnHe=; h=X-Sonic-MF:From:Subject:Date:To:From:Subject; b=lGsePBi/MHCaq5MfPo6PfiE8arQXZFwKIQmCruGCpahBWlM6xgbgyzJWtEeV7+W2dC2wWyLhPZPHXRIe4SbjXQyuAiLyp0zvli0jF9/hr7kjOZrehSstCxMV8eYH910u8Y333DJclbzYJwDrAwLpwYJL1RAgPhtM9gt78UzVZNf6Op7H5RkkL04hzuhm92OnXeG0b+B0gExCgXyZ5Nj7xAMEclkuQrl1L2HqXaGhuhoNuKHZertpO4PbNNXs60vZuhWajdPE4KKUucX2Yjy/eO764xBJm8tF4/0a5CqoN/j49Y/SALKUoe01J985L0L4az+IrLOlv4iGGFZsUErG7Q== X-YMail-OSG: oSRw9CwVM1lKxr41Fs8CHdqV_MhqSS9H0SRlXMqs5Lhk3DDgYA7uRiDLJ5z1c9b GrK7WPGnKiC.Wb0yDp3SCmQSfvOaQH0TouXNv17uU4HtwnmJ7stQnggLICW.UaqR0UGJWiEie.qS x5HT7cFvyIV.8uCNL3TdU5pYqzBQcWOMpt.1VK_53YDwS1zwaWr.mjOBIzcIh36XyNvH_JszUv_2 Cr_I24F3_n3Igl56wOQC1mxdQC8jy8pOrMkqfERQe9XHjfUCEdMviG3lrtpe63AI92X2MBWsj8.v IUtxure7qisUBaqQ4uxKOtTz8dVHU1s4oA_A6X71KZUf6JAz8JzCPHw_7YvOa2ifsCwmvyOuqE2i Fy2dVkXQIYOUVgHlh00pCwjGtc.Ra7Qjltt9lXmWjcRDTgvQITLOeTWr55C_GcwWoGw1BzdfKHhj WtKevvlYtok1g5vQdiJgXGLlgjgFj832okW5zT0jp6PRmu8xGBAgTnjBvlugerbkrVrPQ_8.SCDX q8dcFGabrWPFvTldE993cjC2f7O1e3DuodGYDjbDYP_NctTG2GJlgQOHDndhRPXyhetph9icuS86 YcTKkxtplq14gp6KitharNgSlk3_xn1AawNCV_qW8enrrVAaNQbUXP5LfCIZZhmjD2jn04KXmbDv m.QNFQW_QBqu61wg_p7e5MbKzp9.ade.2FKOIFZcJTiMfjUqk1gGfo7JlkGXOKTVyZ4s.u0e1cp5 Upcg3PyMwwhVT.5Fi2_3gxGTdIY5wXyv_eAAk2d6AwnYBziQNaRWs6D8gS02KJggGlARawsQqOhf RXUO.AMcBjQvtPDvhNOUN037VVT65BijePuepat1hirJOow7Hfsz62mNIjkv3Y2O2VqYHFeU3lW1 reN_orW6KSPBVmPTL2RHztv2WGaSfY.JXBtGe.DQBWJbqmeuwdqxIVhXxXdYhui2IzJVIL68f1eK F.OgqkwMddE7EtWnQlSQk1Yefyr4MjxMSnT9vU7Hr6tkvCj1dtf3mYu3cRHn5EN2KJa2aybL3Wif cNpO99YsAS3yhIsz4wM5LsX32Lw9b6VeXcrC0owRC6UmJXyVep.G1yq0kQ7s5Pn8lfSsc7bv8tDF mWRTEc6tL4eU.Er51NpJq1ZqjvaOH9EYO6fWJDv573G.hqPCC4bHiE232ZwPVGpnZoprdcmHX0Zj lU1nXSRqTZU0P2TMAQkuHqei8i8L_LIyI.O5THo6.1Xoipx_Yj_ZKAVGPf6NGdMss.yWnY382Rwq cyWbW3MRAMJ3BkrgxhxGR1SHhZm66ZvJsiy9uzHP4PnZvaGHAH2z0W_L77BhjUpYZqmCw7oKA_yI jYPHIet08DdtJZhgkl3gxchU7_foUr2ABJXi6.W2Ly._8CslAWuzyxEsQAtwPYwxW24aeorUzAGB _CpLnTOr8zKAmsl62.LKs_Vz5Z3BtZDfiY0Vx9W482g8qqkHT58JsP05YO8067Rd4nFkgJ_pdXSg Mjz7i7susyPWkJSIkDs03zPcEx8r4GSQ38dz0dvwsUxHUPA13pz91HTN0gFbr3JDM2trq.eFSBsN knHa9NmZBnavJ6Jn2jmQCBC0Ej5EUYaTUE3qFK0I4yGay424bu6NOdolSR79H.1KGjpq0T0HlG_w W0rOQtdPMcUH0yZ_Tt3voEFiOzhPokfqTA4icG_zU0y7Pngqdls.iVVREEFloeAGeXOAGlntTiNv IH_nh1pON9.UaTyYi4T8v9B12yMt9y290OC7RUwsxVr2DSBhKpxaD2wHbI67KCfB84Dfj_mNV.9s mkxPB0zHWlHUWZK7sW8Srmz3CfAbNIi3I8Shhh.yeGiOCeeakyqF1ETDqyHwc2ci7Az94c2g4z_X aHSemkryP6Ih4.T5koqZwEuCDF5VMRqV36vJsyJje6FvCUA_eESTU_k4dCvoQ0zq5votKXHf0m31 qmj0oSJjgKUnfgQCmP4ZF4AhKmXGUq3Q5wFOtO7vlqXkis274srMOBbMVpL4E68TvrVxzoM7wMar Y064GnPllTvNlb4lDcvBsA.ArI7zSIaxXZ5B81atboEnPm8B6Aiy0lMu.9ZQrm6gB.MYFJZmnnYV IBwt17e3e.duZiFlReJBMxpli1e3qui2GtE8Z17zaReGA_zSKQ6rlGa8lENOsg4lo9tNwfWmHzNU gr3U6o8WTUZVoXlm.__Nu6zqIHoyTLw4J29wjCgXGQzYgjcyh.1J69d4r6.FAho5NdzXczKrEVmc enCZxdKGSjxIb3t8TOVGnQSoQ_9n6MT4GY1bhKa_srjyTE4ZzUkOIhzG_5i5BMYPr1Le_mDhN353 U2sxaG3IqdXDxEOkLWR05Uw-- X-Sonic-MF: X-Sonic-ID: b42f8da1-71f0-4703-a6d4-1fc613e8e2cb Received: from sonic.gate.mail.ne1.yahoo.com by sonic304.consmr.mail.gq1.yahoo.com with HTTP; Sat, 8 Nov 2025 17:33:39 +0000 Received: by hermes--production-gq1-86c5846576-vnknd (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 0ba613ff4de498689baffa3103eb65c2; Sat, 08 Nov 2025 17:33:34 +0000 (UTC) From: Mark Millard Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable List-Id: Packaging the FreeBSD base system List-Archive: https://lists.freebsd.org/archives/freebsd-pkgbase List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-pkgbase@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: git: 51e8e8b0f369 - main - Merge commit e24f90190c77 from llvm git (by Brad Smith): Date: Sat, 8 Nov 2025 09:33:23 -0800 References: <23041DE4-706C-427C-9BC5-3AD5EAD13934@yahoo.com> <52E99DD3-C925-4624-BECC-AE1217A1BAD9@yahoo.com> To: Dimitry Andric , FreeBSD-pkgbase@freebsd.org In-Reply-To: <52E99DD3-C925-4624-BECC-AE1217A1BAD9@yahoo.com> Message-Id: <7F2D2ACA-ED0B-4971-8946-DEA4B7F3873D@yahoo.com> X-Mailer: Apple Mail (2.3826.700.81) X-Spamd-Bar: --- X-Spamd-Result: default: False [-3.99 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.99)[-0.992]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; MIME_GOOD(-0.10)[text/plain]; RCVD_TLS_LAST(0.00)[]; FROM_HAS_DN(0.00)[]; ARC_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; RCPT_COUNT_TWO(0.00)[2]; FREEMAIL_FROM(0.00)[yahoo.com]; TO_DN_SOME(0.00)[]; DKIM_TRACE(0.00)[yahoo.com:+]; ASN(0.00)[asn:36647, ipnet:98.137.64.0/20, country:US]; RCVD_VIA_SMTP_AUTH(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[]; DWL_DNSWL_NONE(0.00)[yahoo.com:dkim]; MLMMJ_DEST(0.00)[FreeBSD-pkgbase@freebsd.org]; APPLE_MAILER_COMMON(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; RWL_MAILSPIKE_POSSIBLE(0.00)[98.137.68.205:from]; RCVD_IN_DNSWL_NONE(0.00)[98.137.68.205:from] X-Rspamd-Queue-Id: 4d3jhV2plTz3gBW On Nov 8, 2025, at 08:19, Mark Millard wrote: > On Nov 8, 2025, at 01:29, Mark Millard wrote: >=20 >> On Nov 7, 2025, at 23:03, Mark Millard wrote: >>=20 >>> On Nov 7, 2025, at 19:51, Mark Millard wrote: >>>=20 >>>> Dimitry Andric wrote on >>>> Date: Thu, 06 Nov 2025 15:56:54 UTC : >>>>=20 >>>>> On 5 Nov 2025, at 08:56, Herbert J. Skuhra = wrote: >>>>>>=20 >>>>>> On Fri, 31 Oct 2025 14:48:06 +0100, Jose Luis Duran wrote: >>>>>>>=20 >>>>>>> On Wed, Oct 29, 2025 at 3:50=E2=80=AFPM Dimitry Andric = wrote: >>>>>>>>=20 >>>>>>>> The branch main has been updated by dim: >>>>>>>>=20 >>>>>>>> URL: = https://cgit.FreeBSD.org/src/commit/?id=3D51e8e8b0f36933814b1be08913857727= 876aece5 >>>>>>>>=20 >>>>>>>>=20 >>>> . . . >>>>>>>>=20 >>>>>>>> Merge commit e24f90190c77 from llvm git (by Brad Smith): >>>>>>>>=20 >>>>>>>> [Driver] Enable outline atomics for FreeBSD/aarch64 (#156089) >>>>>>>>=20 >>>>>>>> The compiler_rt helper functions have been built since 12.4, = 13.1, 14 >>>>>>>> and anything newer. >>>>>>>>=20 >>>>>>>>=20 >>>> . . . >>>>>>> I'm sure you're probably aware by now, but aarch64 builds are = failing >>>>>>> after this commit: >>>>>>>=20 >>>>>>> https://ci.freebsd.org/job/FreeBSD-main-aarch64-build/33100/ >>>>>>=20 >>>>>> I am now getting this error on stable/15 (aarch64) after this = change was >>>>>> reverted in f6a81b18a467. >>>>>>=20 >>>>>> I have already tried: >>>>>>=20 >>>>>> % rm -rf /usr/obj/usr >>>>>> % rm -rf ~/.cache/ccache >>>>>> % make SRCCONF=3D/dev/null __MAKE_CONF=3D/dev/null buildworld >>>>>>=20 >>>>>> I am now trying to rebuild world with llvm19 from ports. >>>>>=20 >>>>> I have repeatedly tried to reproduce this problem, but I have been = unsuccessful. >>>>=20 >>>> I tried to set up a simple context to experiment with but ended up >>>> blocked for what I intended. Nothing blocked making a .o for >>>> which: >>>>=20 >>>> 6: 0000000000000000 4 FUNC GLOBAL HIDDEN 2 = shared_static_routine >>>>=20 >>>> Nothing blocked making a .a for which: >>>>=20 >>>> 6: 0000000000000000 4 FUNC GLOBAL HIDDEN 2 = shared_static_routine >>>>=20 >>>> But every one of my attempts to form a .so with such a GLOBAL = HIDDEN status >>>> based on the .a instead ended up with the likes of: >>>>=20 >>>> 30: 0000000000010538 4 FUNC LOCAL HIDDEN 12 = shared_static_routine >>>>=20 >>>> So I did not get to the stage of a program that uses a .so with = GLOBAL HIDDEN >>>> status involved. >>>>=20 >>>> I tried commands that used each of: /usr/bin/ld , /usr/bin/ld.lld = , >>>> /usr/local/bin/ld.bfd , and = /usr/local/bin/aarch64-unknown-freebsd16.0-ld . >>>>=20 >>>> I did similarly on amd64. >>>>=20 >>>> All of them converted the GLOBAL to be a LOCAL in the .so . >>>>=20 >>>> The context used is main 16. >>>>=20 >>>> It looks like the toolchain is deliberately avoiding generating the >>>> GLOBAL HIDDEN combination in the .so . >>>>=20 >>>>> If anybody has a system where this reliably occurs, and can give = me access to it (no privileged user needed, as long as git is = installed), that would be nice. >>>=20 >>>=20 >>> Turns out that my intended test was based on a partial >>> misinterpretation of the original error messages. I'll >>> need to set up a somewhat different test later. >>>=20 >>=20 >> Here is the small example context I came up with to test. I show >> commands to use in comments for each of the 3 tiny source files. >>=20 >>=20 >> File #1 of 3: >>=20 >> // shared_static_routine.c : >>=20 >> // cc -std=3Dc17 -Wpedantic -Wall -o shared_static_routine.o -fPIC -c = shared_static_routine.c -fvisibility=3Dinternal >> // ar rcs libstatic_routine.a shared_static_routine.o >>=20 >> // Note: Ends up with GLOBAL binding and HIDDEN visibility in = libstatic_routine.a >>=20 >>=20 >> void shared_static_routine(void) {} >>=20 >>=20 >> File #2 of 3: >>=20 >> // shared_static_referencing_routine.c : >>=20 >> // BAD: cc -shared -fPIC -Wl,-soname,libshared_routine.so -o = libshared_routine.so = shared_static_referencing_routine.c >> // vs. >> // GOOD: cc -shared -fPIC -Wl,-soname,libshared_routine.so -o = libshared_routine.so -L. -lstatic_routine = shared_static_referencing_routine.c >>=20 >>=20 >> extern void shared_static_routine(void); >>=20 >> void shared_static_referencing_routine(void) { = shared_static_routine(); } >=20 > For reference . . . >=20 > BAD ends up with: >=20 > # readelf -s libshared_routine.so | grep shared_static_routine > 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = shared_static_routine > 40: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = shared_static_routine >=20 > GOOD ends up with: >=20 > # readelf -s libshared_routine.so | grep shared_static_routine > 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS = shared_static_routine.c > 30: 0000000000010538 4 FUNC LOCAL HIDDEN 12 = shared_static_routine >=20 >=20 >> File #3 of 3: >>=20 >> // shared_routine_main.c : >>=20 >> // cc -o shared_routine_main.o -fPIC -c shared_routine_main.c >> // Then . . . >>=20 >> // For good libshared_routine.so case: >> // SUFFICIENT: >> // cc -o shared_routine_main -fPIC shared_routine_main.o -L. = -lshared_routine -Wl,-rpath=3D. >> // ALSO WORKS: >> // cc -o shared_routine_main -fPIC shared_routine_main.o -L. = -lstatic_routine -lshared_routine -Wl,-rpath=3D. >>=20 >> // For the bad libshared_routine.so case, the SUFFICIENT case above = reports: >> // >> // ld: error: undefined reference: shared_static_routine >> // >>> referenced by ./libshared_routine.so (disallowed by = --no-allow-shlib-undefined) >> // cc: error: linker command failed with exit code 1 (use -v to see = invocation) >>=20 >> // For the bad libshared_routine.so case, the ALSO WORKS case above = reports: >> // >> // ld: error: non-exported symbol 'shared_static_routine' in = './libstatic_routine.a(shared_static_routine.o)' is referenced by DSO = './libshared_routine.so' >> // cc: error: linker command failed with exit code 1 (use -v to see = invocation) >>=20 >>=20 >> extern void shared_static_referencing_routine(void); >>=20 >> int main(void) { shared_static_referencing_routine(); } >>=20 On a official pkgbase distribution based aarch64 system I: ) put "CFLAGS.aarch64+=3D-moutline-atomics" in /etc/make.conf (this is to simulate the patch) ) then did the following . . . # cd /usr/src/ # env WITH_META_MODE=3D make -j8 buildworld It resulted in the messages that are like (example): ld: error: non-exported symbol '__aarch64_cas4_acq' in = '/usr/obj/usr/src/arm64.aarch64/tmp/usr/lib/libgcc.a(outline_atomic_cas4_2= .o)' is referenced by DSO = '/usr/obj/usr/src/arm64.aarch64/tmp/usr/lib/libgcc_s.so' And, looking at the = /usr/obj/usr/src/arm64.aarch64/tmp/usr/lib/libgcc_s.so = prpduced shows: # readelf -s /usr/obj/usr/src/arm64.aarch64/tmp/usr/lib/libgcc_s.so | = grep __aarch64_ 6: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas4_acq 10: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas1_rel 11: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas1_acq 12: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas2_rel 13: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas4_rel 14: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas8_rel 15: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas16_rel 16: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas1_acq_rel 17: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas2_acq 18: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas8_acq 19: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas16_acq 20: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas1_relax 21: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas2_acq_rel 22: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas4_acq_rel 23: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas8_acq_rel 24: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas16_acq_rel 25: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas2_relax 26: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas4_relax 27: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas8_relax 28: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_cas16_relax 29: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp2_acq 30: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp4_acq 31: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp1_acq 32: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp1_acq_rel 33: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp8_acq 34: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp1_rel 35: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp2_acq_rel 36: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp1_relax 37: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp4_acq_rel 38: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp8_acq_rel 39: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp2_rel 40: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp4_rel 41: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp8_rel 42: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp2_relax 43: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp4_relax 44: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_swp8_relax 45: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd1_acq 46: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd1_acq_rel 47: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd1_rel 48: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd1_relax 49: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd2_acq 50: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd2_acq_rel 51: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd2_rel 52: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd2_relax 53: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd4_acq 54: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd4_acq_rel 55: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd4_rel 56: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd4_relax 57: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd8_acq 58: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd8_acq_rel 59: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd8_rel 60: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldadd8_relax 61: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr1_acq 62: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr1_acq_rel 63: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr1_rel 64: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr1_relax 65: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr2_acq 66: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr2_acq_rel 67: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr2_rel 68: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr2_relax 69: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr4_acq 70: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr4_acq_rel 71: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr4_rel 72: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr4_relax 73: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr8_acq 74: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr8_acq_rel 75: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr8_rel 76: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldclr8_relax 77: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset1_acq 78: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset1_acq_rel 79: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset1_rel 80: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset1_relax 81: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset2_acq 82: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset2_acq_rel 83: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset2_rel 84: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset2_relax 85: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset4_acq 86: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset4_acq_rel 87: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset4_rel 88: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset4_relax 89: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset8_acq 90: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset8_acq_rel 91: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset8_rel 92: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldset8_relax 93: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor1_acq 94: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor1_acq_rel 95: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor1_rel 96: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor1_relax 97: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor2_acq 98: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor2_acq_rel 99: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor2_rel 100: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor2_relax 101: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor4_acq 102: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor4_acq_rel 103: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor4_rel 104: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor4_relax 105: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor8_acq 106: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor8_acq_rel 107: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor8_rel 108: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND = __aarch64_ldeor8_relax That is like the BAD case in the tiny example. Checking for how /usr/obj/usr/src/arm64.aarch64/tmp/usr/lib/libgcc_s.so = is produced lead to seeing: /usr/obj/usr/src/arm64.aarch64/lib/libgcc_s/libgcc_s.so.1.full.meta . . . /usr/obj/usr/src/arm64.aarch64/lib/libgcc_s/libgcc_s.so.1.meta . . . /usr/obj/usr/src/arm64.aarch64/lib/libgcc_s/_libinstall.meta so, looking at libgcc_s.so.1.full.meta : # Meta data file = /usr/obj/usr/src/arm64.aarch64/lib/libgcc_s/libgcc_s.so.1.full.meta CMD @echo Building shared library libgcc_s.so.1 CMD @rm -f libgcc_s.so.1 libgcc_s.so CMD cc -target aarch64-unknown-freebsd16.0 = --sysroot=3D/usr/obj/usr/src/arm64.aarch64/tmp = -B/usr/obj/usr/src/arm64.aarch64/tmp/usr/bin -nodefaultlibs -Wl,-zrelro = -Wl,--version-script=3DVersion.map -Wl,-- no-undefined-version -shared -Wl,-x -Wl,--fatal-warnings = -Wl,--warn-shared-textrel -o libgcc_s.so.1.full = -Wl,-soname,libgcc_s.so.1 cpu_model/aarch64.pico absvdi2.pico = absvsi2.pico absvti2.pico ad dvdi3.pico addvsi3.pico addvti3.pico apple_versioning.pico ashldi3.pico = ashlti3.pico ashrdi3.pico ashrti3.pico bswapdi2.pico bswapsi2.pico = clear_cache.pico clzdi2.pico clzsi2.pico clzti2.pico cmpdi2.p ico cmpti2.pico ctzdi2.pico ctzsi2.pico ctzti2.pico divdc3.pico = divdi3.pico divmoddi4.pico divmodsi4.pico divmodti4.pico divsc3.pico = divsi3.pico divti3.pico enable_execute_stack.pico extendhfsf2.pico ffsdi2.pico ffssi2.pico ffsti2.pico fixdfdi.pico fixdfti.pico = fixsfdi.pico fixsfti.pico fixunsdfdi.pico fixunsdfsi.pico = fixunsdfti.pico fixunssfdi.pico fixunssfsi.pico fixunssfti.pico = floattidf.pico f loattisf.pico floatunsidf.pico floatunsisf.pico floatuntidf.pico = floatuntisf.pico int_util.pico lshrdi3.pico lshrti3.pico moddi3.pico = modsi3.pico modti3.pico muldc3.pico muldi3.pico mulodi4.pico mulos i4.pico muloti4.pico mulsc3.pico multi3.pico mulvdi3.pico mulvsi3.pico = mulvti3.pico negdf2.pico negdi2.pico negsf2.pico negti2.pico = negvdi2.pico negvsi2.pico negvti2.pico paritydi2.pico paritysi2.pico parityti2.pico popcountdi2.pico popcountsi2.pico popcountti2.pico = powidf2.pico powisf2.pico subvdi3.pico subvsi3.pico subvti3.pico = trampoline_setup.pico truncdfhf2.pico truncsfhf2.pico ucmpdi2.pico u cmpti2.pico udivdi3.pico udivmoddi4.pico udivmodsi4.pico udivmodti4.pico = udivsi3.pico udivti3.pico umoddi3.pico umodsi3.pico umodti3.pico = atomic.pico floatdidf.pico floatdisf.pico floatundidf.pico flo atundisf.pico fp_mode.pico addtf3.pico comparetf2.pico divtc3.pico = divtf3.pico extenddftf2.pico extendhftf2.pico extendsftf2.pico = fixtfdi.pico fixtfsi.pico fixtfti.pico fixunstfdi.pico fixunstfsi.pico fixunstfti.pico floatditf.pico floatsitf.pico floattitf.pico = floatunditf.pico floatunsitf.pico floatuntitf.pico multc3.pico = multf3.pico powitf2.pico subtf3.pico trunctfdf2.pico trunctfhf2.pico = trunct fsf2.pico adddf3.pico addsf3.pico divdf3.pico divsf3.pico = extendsfdf2.pico fixdfsi.pico fixsfsi.pico floatsidf.pico floatsisf.pico = muldf3.pico mulsf3.pico subdf3.pico subsf3.pico truncdfsf2.pico compa redf2.pico comparesf2.pico extendbfsf2.pico truncdfbf2.pico = truncsfbf2.pico gcc_personality_v0.pico Unwind-EHABI.pico = Unwind-sjlj.pico UnwindLevel1-gcc-ext.pico UnwindLevel1.pico = UnwindRegistersRestor e.pico UnwindRegistersSave.pico libunwind.pico s_fabs.pico s_fabsf.pico = s_fabsl.pico s_fmax.pico s_fmaxf.pico s_logb.pico s_logbf.pico = s_scalbn.pico s_scalbnf.pico s_fmaxl.pico s_logbl.pico s_scalbnl. pico -lc CWD /usr/obj/usr/src/arm64.aarch64/lib/libgcc_s TARGET libgcc_s.so.1.full OODATE Version.map cpu_model/aarch64.pico absvdi2.pico absvsi2.pico = absvti2.pico addvdi3.pico addvsi3.pico addvti3.pico = apple_versioning.pico ashldi3.pico ashlti3.pico ashrdi3.pico = ashrti3.pico bswapd i2.pico bswapsi2.pico clear_cache.pico clzdi2.pico clzsi2.pico = clzti2.pico cmpdi2.pico cmpti2.pico ctzdi2.pico ctzsi2.pico ctzti2.pico = divdc3.pico divdi3.pico divmoddi4.pico divmodsi4.pico divmodti4.p ico divsc3.pico divsi3.pico divti3.pico enable_execute_stack.pico = extendhfsf2.pico ffsdi2.pico ffssi2.pico ffsti2.pico fixdfdi.pico = fixdfti.pico fixsfdi.pico fixsfti.pico fixunsdfdi.pico fixunsdfsi.pi co fixunsdfti.pico fixunssfdi.pico fixunssfsi.pico fixunssfti.pico = floattidf.pico floattisf.pico floatunsidf.pico floatunsisf.pico = floatuntidf.pico floatuntisf.pico int_util.pico lshrdi3.pico lshrti3. pico moddi3.pico modsi3.pico modti3.pico muldc3.pico muldi3.pico = mulodi4.pico mulosi4.pico muloti4.pico mulsc3.pico multi3.pico = mulvdi3.pico mulvsi3.pico mulvti3.pico negdf2.pico negdi2.pico negsf2.pi co negti2.pico negvdi2.pico negvsi2.pico negvti2.pico paritydi2.pico = paritysi2.pico parityti2.pico popcountdi2.pico popcountsi2.pico = popcountti2.pico powidf2.pico powisf2.pico subvdi3.pico subvsi3.pic o subvti3.pico trampoline_setup.pico truncdfhf2.pico truncsfhf2.pico = ucmpdi2.pico ucmpti2.pico udivdi3.pico udivmoddi4.pico udivmodsi4.pico = udivmodti4.pico udivsi3.pico udivti3.pico umoddi3.pico umods i3.pico umodti3.pico atomic.pico floatdidf.pico floatdisf.pico = floatundidf.pico floatundisf.pico fp_mode.pico addtf3.pico = comparetf2.pico divtc3.pico divtf3.pico extenddftf2.pico = extendhftf2.pico exte ndsftf2.pico fixtfdi.pico fixtfsi.pico fixtfti.pico fixunstfdi.pico = fixunstfsi.pico fixunstfti.pico floatditf.pico floatsitf.pico = floattitf.pico floatunditf.pico floatunsitf.pico floatuntitf.pico mult c3.pico multf3.pico powitf2.pico subtf3.pico trunctfdf2.pico = trunctfhf2.pico trunctfsf2.pico adddf3.pico addsf3.pico divdf3.pico = divsf3.pico extendsfdf2.pico fixdfsi.pico fixsfsi.pico floatsidf.pico f loatsisf.pico muldf3.pico mulsf3.pico subdf3.pico subsf3.pico = truncdfsf2.pico comparedf2.pico comparesf2.pico extendbfsf2.pico = truncdfbf2.pico truncsfbf2.pico gcc_personality_v0.pico = Unwind-EHABI.pico Unwind-sjlj.pico UnwindLevel1-gcc-ext.pico UnwindLevel1.pico = UnwindRegistersRestore.pico UnwindRegistersSave.pico libunwind.pico = s_fabs.pico s_fabsf.pico s_fabsl.pico s_fmax.pico s_fmaxf.pico s_logb. pico s_logbf.pico s_scalbn.pico s_scalbnf.pico s_fmaxl.pico s_logbl.pico = s_scalbnl.pico -- command output -- . . . For reference: # grep libgcc.a = /usr/obj/usr/src/arm64.aarch64/lib/libgcc_s/libgcc_s.so.1.full.meta #=20 So libgcc.a was not accessed, matching the GLOBAL DEFAULT UND status shown earlier above for the __aarch64_* symbols. # readelf -a = /usr/obj/usr/src/arm64.aarch64/lib/libgcc_s/libgcc_s.so.1.full | grep = NEED [ 5] .gnu.version_r VERNEED 0000000000001dc0 001dc0 000030 = 00 A 8 1 4 0x0000000000000001 (NEEDED) Shared library: [libc.so.7] 0x000000006ffffffe (VERNEED) 0x1dc0 0x000000006fffffff (VERNEEDNUM) 1 On 15.* and main [so 16]] the libc.so.7 reference indirectly involves libsys.so.7 : # ldd -a /usr/obj/usr/src/arm64.aarch64/lib/libgcc_s/libgcc_s.so.1.full /usr/obj/usr/src/arm64.aarch64/lib/libgcc_s/libgcc_s.so.1.full: libc.so.7 =3D> /lib/libc.so.7 (0x187425200000) /lib/libc.so.7: libsys.so.7 =3D> /lib/libsys.so.7 (0x187425a50000) # ldd -a /usr/obj/usr/src/arm64.aarch64/tmp/usr/lib/libgcc_s.so /usr/obj/usr/src/arm64.aarch64/tmp/usr/lib/libgcc_s.so: libc.so.7 =3D> /lib/libc.so.7 (0x7308d5c00000) /lib/libc.so.7: libsys.so.7 =3D> /lib/libsys.so.7 (0x7308d9e00000) and -lsys is not used so the full set of NEEDED are not present. 14.* and before do not have a libsys.so.* and so would have a full set of NEEDED . Might that lead to toolchain behavioral differences? =3D=3D=3D Mark Millard marklmi at yahoo.com