Re: git: 51e8e8b0f369 - main - Merge commit e24f90190c77 from llvm git (by Brad Smith):
Date: Sat, 08 Nov 2025 17:33:23 UTC
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.com