diff --git a/sysdeps/nptl/dl-tls_init_tp.c b/sysdeps/nptl/dl-tls_init_tp.c
index 53fba774a5..e4d7bb71ad 100644
--- a/sysdeps/nptl/dl-tls_init_tp.c
+++ b/sysdeps/nptl/dl-tls_init_tp.c
@@ -16,6 +16,15 @@
License along with the GNU C Library; if not, see
. */
+#ifdef __CHERI_PURE_CAPABILITY__
+/* This hack ensures that the later indirectly included public const
+ declaration does not conflict with the non-const definition here. */
+# define __rseq_size __rseq_size_public_const
+# define __rseq_offset __rseq_offset_public_const
+# include
+# undef __rseq_size
+# undef __rseq_offset
+#endif
#include
#include
#include
@@ -45,8 +54,13 @@ rtld_mutex_dummy (pthread_mutex_t *lock)
#endif
const unsigned int __rseq_flags;
+#ifdef __CHERI_PURE_CAPABILITY__
+unsigned int __rseq_size attribute_relro;
+ptrdiff_t __rseq_offset attribute_relro;
+#else
const unsigned int __rseq_size attribute_relro;
const ptrdiff_t __rseq_offset attribute_relro;
+#endif
void
__tls_pre_init_tp (void)