From efbab6ba3f7434fca41be1b38e4a5281695f231c Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 29 May 2018 18:21:55 -0700 Subject: [PATCH] Disable use of thread_local Clang build was failing with: /usr/bin/ld: .libs/libharfbuzz_la-hb-blob.o: relocation R_X86_64_PC32 against undefined hidden symbol `_ZTH12_hb_CrapPool' can not be used when making a shared object Instead of fighting it, just disable use of it. --- src/hb-private.hh | 4 ++-- src/hb-static.cc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hb-private.hh b/src/hb-private.hh index 0c291a1de..985950352 100644 --- a/src/hb-private.hh +++ b/src/hb-private.hh @@ -588,13 +588,13 @@ static_assert (Namespace::Type::min_size + 1 <= sizeof (_Null##Type), "Null pool /* To be fully correct, CrapPool must be thread_local. However, we do not rely on CrapPool * for correct operation. It only exist to catch and divert program logic bugs instead of * causing bad memory access. So, races there are not actually introducing incorrectness - * in the code. So maybe disable? Has ~12kb binary size overhead to have it. */ + * in the code. Has ~12kb binary size overhead to have it, also clang build fails with it. */ #ifdef HB_NO_VISIBILITY static #else extern HB_INTERNAL #endif -thread_local void * _hb_CrapPool[HB_NULL_POOL_SIZE / sizeof (void *)] +/*thread_local*/ void * _hb_CrapPool[HB_NULL_POOL_SIZE / sizeof (void *)] #ifdef HB_NO_VISIBILITY = {} #endif diff --git a/src/hb-static.cc b/src/hb-static.cc index e60121dd0..e26e5c801 100644 --- a/src/hb-static.cc +++ b/src/hb-static.cc @@ -28,5 +28,5 @@ #ifndef HB_NO_VISIBILITY void * const _hb_NullPool[HB_NULL_POOL_SIZE / sizeof (void *)] = {}; -thread_local void * _hb_CrapPool[HB_NULL_POOL_SIZE / sizeof (void *)] = {}; +/*thread_local*/ void * _hb_CrapPool[HB_NULL_POOL_SIZE / sizeof (void *)] = {}; #endif