[PATCH] D56000: [compiler-rt] [xray] Disable alignas() for thread_local objects on NetBSD
Kamil Rytarowski via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Dec 21 08:40:19 PST 2018
krytarowski added inline comments.
================
Comment at: lib/xray/xray_basic_logging.cc:58
-struct alignas(64) ThreadLocalData {
+struct
+/* TLD is not aligned properly on NetBSD, resulting in segfault */
----------------
mgorny wrote:
> krytarowski wrote:
> > Can we introduce a macro like:
> >
> > ```
> > #if SANITIZER_NETBSD
> > #define XRAY_TLS_ALIGNAS64 /* Nor supported */
> > #else
> > #define XRAY_TLS_ALIGNED_SUPPORTED
> > #define XRAY_TLS_ALIGNAS64 alignas(64)
> > #endif
> > ```
> >
> > And later:
> >
> > ```
> > struct XRAY_TLS_ALIGNAS64 ThreadLocalData {
> > ```
> >
> > and
> >
> > ```
> > #ifdef XRAY_TLS_ALIGNED_SUPPORTED
> > static_assert(alignof(ThreadLocalData) >= 64,
> > "ThreadLocalData must be cache line aligned.");
> > #endif
> > ```
> Maybe. Though i suppose it'd make more sense to make `64` an argument to the macro.
```
#if !SANITIZER_NETBSD
#define XRAY_TLS_ALIGNAS(x) alignas(x)
#endif
```
```
struct XRAY_TLS_ALIGNAS(64) ThreadLocalData {
```
and
```
#ifdef XRAY_TLS_ALIGNAS
static_assert(alignof(ThreadLocalData) >= 64,
"ThreadLocalData must be cache line aligned.");
#endif
```
Repository:
rCRT Compiler Runtime
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D56000/new/
https://reviews.llvm.org/D56000
More information about the cfe-commits
mailing list