Re: git: 24fd63e0970f - main - mips: Don't set __NO_TLS to disable some uses of TLS.

Brandon Bergren bdragon at FreeBSD.org
Fri Feb 19 01:54:44 UTC 2021



On Thu, Feb 18, 2021, at 7:07 PM, Jessica Clarke wrote:
> On 19 Feb 2021, at 00:03, Brandon Bergren <bdragon at FreeBSD.org> wrote:
> 
> Ok, so the mistake was not deleting it 8 years ago and instead leaving
> it around to become part of the ABI. The issue you're referring to
> specifically is __getCurrentRuneLocale and _ThreadRuneLocale (the
> latter doesn't exist for __NO_TLS, and the former changes between
> static inline and extern)? __NO_TLS should have blocked powerpc64 (and
> mips) from becoming tier 2 IMO, but we're stuck with it, so yeah, it's
> a major ABI break (frustratingly tiny but breaks the core system
> libraries) and thus can't be MFC'ed.
> 
> Jess

Right.

And I fixed it for powerpc64 for 13 finally becuase I had the excuse of "Well, we're switching to an entirely incompatible ABI due to lld not supporting ELFv1, so I might as well fix this one at the same time since we're forcing people to reinstall from scratch anyway."

So yeah, in HEAD, all references to __NO_TLS can go away fully, in stable/13 the mips part probably has to stay (riscv can play the tier 3 card though), and in 12 it's baked in for life.

The "(defined(__powerpc64__) && (!defined(_CALL_ELF) || _CALL_ELF == 1))" part is no longer relevant for 13 or HEAD, since the ELFv2 transition is over and done with as of the end of 2019. I probably should have taken that part out last year, since it was meant to just be a temporary compatibility shim so that people could compile both the gcc4.2 ELFv1 and llvm ELFv2 versions of 13-CURRENT out of the same tree back when we were in the middle of switching over.

-- 
  Brandon Bergren
  bdragon at FreeBSD.org


More information about the dev-commits-src-all mailing list