Opened 3 years ago
Closed 2 years ago
#63707 closed defect (fixed)
clang-13: fix for SnowLeopard
Reported by: | kencu (Ken) | Owned by: | kencu (Ken) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | snowleopard haspatch | Cc: | mascguy (Christopher Nielsen) |
Port: | clang-13 |
Description (last modified by kencu (Ken))
FYI clang-13 / flang-13 / mlir-13 builds without trouble on SnowLeopard if libcxx has been upgraded to the version that supports thread_local_storage:
To rebuild libcxx with full thread_local support, please install clang-9.0 or any macports-clang >= clang-5.0 and then rebuild libcxx like this: sudo port -v -n upgrade --force --enforce-variants libcxx +emulated_tls
and if the attached patch is used.
$ port -v installed clang-13 The following ports are currently installed: clang-13 @13.0.0_0+analyzer+defaultlibcxx+libstdcxx (active) requested_variants='' platform='darwin 10' archs='x86_64' date='2021-10-27T09:39:39-0700'
Attachments (1)
Change History (10)
Changed 3 years ago by kencu (Ken)
Attachment: | 0017-10.6-and-less-libcxxabi-work-around-no-reexported_symbo.patch added |
---|
comment:1 Changed 3 years ago by kencu (Ken)
Keywords: | snowleopard added |
---|---|
Port: | clang-13 added |
comment:2 Changed 3 years ago by kencu (Ken)
Keywords: | haspatch added |
---|
comment:3 Changed 3 years ago by mascguy (Christopher Nielsen)
Cc: | mascguy added |
---|
comment:4 Changed 3 years ago by kencu (Ken)
Description: | modified (diff) |
---|
comment:5 Changed 3 years ago by devernay (Frédéric Devernay)
comment:6 Changed 3 years ago by kencu (Ken)
We have not been able to automatically bootstrap from bare metal SnowLeopard to a full TLS-supporting libc++ to date.
It is still a two step process -- install libcxx, install clang-9.0 or so, then reinstall libcxx with emulated_tls.
I had an idea to use a bootstrap self-contained version of gcc7 or gcc10 to build clang-something (maybe clang-5.0?) against libstdc++, which is what Ubuntu does, and use that clang as the bootstrap, to build libcxx (with emulated TLS) in one go, and then build clang-9.0, etc against that libc++. Just never got around to it.
Another option -- to download and install a prebuilt libc++ with emulated_tls enabled, and then use that to bootstrap to a new one that we build, was less desirable.
comment:7 Changed 3 years ago by mojca (Mojca Miklavec)
Ken, would you be willing to add that patch to the git tree (even if the build itself is kept disabled for now)?
comment:9 Changed 2 years ago by kencu (Ken)
Owner: | set to kencu |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Great!
Any reason why +emulated_tls should not be the default (and maybe not even a variant) on Snow Leopard, since a modern clang is pretty much a requirement anyway?