Date: Sat, 8 Nov 2025 09:33:23 -0800 From: Mark Millard <marklmi@yahoo.com> To: Dimitry Andric <dim@FreeBSD.org>, FreeBSD-pkgbase@freebsd.org Subject: Re: git: 51e8e8b0f369 - main - Merge commit e24f90190c77 from llvm git (by Brad Smith): Message-ID: <7F2D2ACA-ED0B-4971-8946-DEA4B7F3873D@yahoo.com> In-Reply-To: <52E99DD3-C925-4624-BECC-AE1217A1BAD9@yahoo.com> References: <23041DE4-706C-427C-9BC5-3AD5EAD13934@yahoo.com> <C1FDECCF-DCCD-42EF-AF58-22EC3A6C0CA5@yahoo.com> <D7A7C424-28D7-401A-8655-2802B07C8DDA@yahoo.com> <52E99DD3-C925-4624-BECC-AE1217A1BAD9@yahoo.com>
index | next in thread | previous in thread | raw e-mail
On Nov 8, 2025, at 08:19, Mark Millard <marklmi@yahoo.com> wrote: > On Nov 8, 2025, at 01:29, Mark Millard <marklmi@yahoo.com> wrote: > >> On Nov 7, 2025, at 23:03, Mark Millard <marklmi@yahoo.com> wrote: >> >>> On Nov 7, 2025, at 19:51, Mark Millard <marklmi@yahoo.com> wrote: >>> >>>> Dimitry Andric <dim_at_FreeBSD.org> wrote on >>>> Date: Thu, 06 Nov 2025 15:56:54 UTC : >>>> >>>>> On 5 Nov 2025, at 08:56, Herbert J. Skuhra <herbert@gojira.at> wrote: >>>>>> >>>>>> On Fri, 31 Oct 2025 14:48:06 +0100, Jose Luis Duran wrote: >>>>>>> >>>>>>> On Wed, Oct 29, 2025 at 3:50 PM Dimitry Andric <dim@freebsd.org> wrote: >>>>>>>> >>>>>>>> The branch main has been updated by dim: >>>>>>>> >>>>>>>> URL: https://cgit.FreeBSD.org/src/commit/?id=51e8e8b0f36933814b1be08913857727876aece5 >>>>>>>> >>>>>>>> >>>> . . . >>>>>>>> >>>>>>>> Merge commit e24f90190c77 from llvm git (by Brad Smith): >>>>>>>> >>>>>>>> [Driver] Enable outline atomics for FreeBSD/aarch64 (#156089) >>>>>>>> >>>>>>>> The compiler_rt helper functions have been built since 12.4, 13.1, 14 >>>>>>>> and anything newer. >>>>>>>> >>>>>>>> >>>> . . . >>>>>>> I'm sure you're probably aware by now, but aarch64 builds are failing >>>>>>> after this commit: >>>>>>> >>>>>>> https://ci.freebsd.org/job/FreeBSD-main-aarch64-build/33100/ >>>>>> >>>>>> I am now getting this error on stable/15 (aarch64) after this change was >>>>>> reverted in f6a81b18a467. >>>>>> >>>>>> I have already tried: >>>>>> >>>>>> % rm -rf /usr/obj/usr >>>>>> % rm -rf ~/.cache/ccache >>>>>> % make SRCCONF=/dev/null __MAKE_CONF=/dev/null buildworld >>>>>> >>>>>> I am now trying to rebuild world with llvm19 from ports. >>>>> >>>>> I have repeatedly tried to reproduce this problem, but I have been unsuccessful. >>>> >>>> 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: >>>> >>>> 6: 0000000000000000 4 FUNC GLOBAL HIDDEN 2 shared_static_routine >>>> >>>> Nothing blocked making a .a for which: >>>> >>>> 6: 0000000000000000 4 FUNC GLOBAL HIDDEN 2 shared_static_routine >>>> >>>> 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: >>>> >>>> 30: 0000000000010538 4 FUNC LOCAL HIDDEN 12 shared_static_routine >>>> >>>> So I did not get to the stage of a program that uses a .so with GLOBAL HIDDEN >>>> status involved. >>>> >>>> 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 . >>>> >>>> I did similarly on amd64. >>>> >>>> All of them converted the GLOBAL to be a LOCAL in the .so . >>>> >>>> The context used is main 16. >>>> >>>> It looks like the toolchain is deliberately avoiding generating the >>>> GLOBAL HIDDEN combination in the .so . >>>> >>>>> 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. >>> >>> >>> 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. >>> >> >> 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. >> >> >> File #1 of 3: >> >> // shared_static_routine.c : >> >> // cc -std=c17 -Wpedantic -Wall -o shared_static_routine.o -fPIC -c shared_static_routine.c -fvisibility=internal >> // ar rcs libstatic_routine.a shared_static_routine.o >> >> // Note: Ends up with GLOBAL binding and HIDDEN visibility in libstatic_routine.a >> >> >> void shared_static_routine(void) {} >> >> >> File #2 of 3: >> >> // shared_static_referencing_routine.c : >> >> // 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 >> >> >> extern void shared_static_routine(void); >> >> void shared_static_referencing_routine(void) { shared_static_routine(); } > > For reference . . . > > BAD ends up with: > > # 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 > > GOOD ends up with: > > # 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 > > >> File #3 of 3: >> >> // shared_routine_main.c : >> >> // cc -o shared_routine_main.o -fPIC -c shared_routine_main.c >> // Then . . . >> >> // For good libshared_routine.so case: >> // SUFFICIENT: >> // cc -o shared_routine_main -fPIC shared_routine_main.o -L. -lshared_routine -Wl,-rpath=. >> // ALSO WORKS: >> // cc -o shared_routine_main -fPIC shared_routine_main.o -L. -lstatic_routine -lshared_routine -Wl,-rpath=. >> >> // 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) >> >> // 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) >> >> >> extern void shared_static_referencing_routine(void); >> >> int main(void) { shared_static_referencing_routine(); } >> On a official pkgbase distribution based aarch64 system I: ) put "CFLAGS.aarch64+=-moutline-atomics" in /etc/make.conf (this is to simulate the patch) ) then did the following . . . # cd /usr/src/ # env WITH_META_MODE= 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 <http://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 <http://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=/usr/obj/usr/src/arm64.aarch64/tmp -B/usr/obj/usr/src/arm64.aarch64/tmp/usr/bin -nodefaultlibs -Wl,-zrelro -Wl,--version-script=Version.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 # 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 => /lib/libc.so.7 (0x187425200000) /lib/libc.so.7: libsys.so.7 => /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 => /lib/libc.so.7 (0x7308d5c00000) /lib/libc.so.7: libsys.so.7 => /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? === Mark Millard marklmi at yahoo.comhelp
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7F2D2ACA-ED0B-4971-8946-DEA4B7F3873D>
