From 3161bc5c1a5297f3261e9263a2d54bda94af1bc4 Mon Sep 17 00:00:00 2001 From: "Alex Xu (Hello71)" Date: Tue, 23 Nov 2021 15:05:01 -0500 Subject: [PATCH] meson: check for lld split TLSDESC bug (fixes #5665) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Emma Anholt Tested-by: Michel Dänzer Signed-off-by: Alex Xu (Hello71) Part-of: --- meson.build | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 7d1a39e131e..23b17a3e2ac 100644 --- a/meson.build +++ b/meson.build @@ -536,7 +536,15 @@ if not have_mtls_dialect else # -fpic to force dynamic tls, otherwise TLS relaxation defeats check gnu2_test = cc.run('int __thread x; int main() { return x; }', args: ['-mtls-dialect=gnu2', '-fpic'], name: '-mtls-dialect=gnu2') - if gnu2_test.returncode() == 0 + if gnu2_test.returncode() == 0 and ( + host_machine.cpu_family() != 'x86_64' or + # https://github.com/mesonbuild/meson/issues/6377 + #cc.get_linker_id() != 'ld.lld' or + cc.links('''int __thread x; int y; int main() { __asm__( + "leaq x@TLSDESC(%rip), %rax\n" + "movq y@GOTPCREL(%rip), %rdx\n" + "call *x@TLSCALL(%rax)\n"); }''', name: 'split TLSDESC') + ) c_args += '-mtls-dialect=gnu2' cpp_args += '-mtls-dialect=gnu2' endif