Summary: In preparation for D76818.
Reviewers: PaulkaToast, sivachandra, gchatelet
Reviewed By: PaulkaToast, sivachandra
Subscribers: MaskRay, tschuett, libc-commits
Differential Revision: https://reviews.llvm.org/D76967
#include "config/linux/syscall.h"
#include "include/sys/syscall.h"
+namespace __llvm_libc {
+
extern "C" void __restore_rt()
__attribute__((no_sanitize("thread", "memory", "undefined", "fuzzer"),
hidden));
extern "C" void __restore_rt() { __llvm_libc::syscall(SYS_rt_sigreturn); }
+
+} // namespace __llvm_libc
#define USE_BUILTIN_MEMCPY
#endif
+namespace __llvm_libc {
+
// This is useful for testing.
#if defined(LLVM_LIBC_MEMCPY_MONITOR)
extern "C" void LLVM_LIBC_MEMCPY_MONITOR(char *__restrict,
const char *__restrict, size_t);
#endif
-namespace __llvm_libc {
-
// Copies `kBlockSize` bytes from `src` to `dst`.
template <size_t kBlockSize>
static void Copy(char *__restrict dst, const char *__restrict src) {
#include <stdatomic.h>
#include <stdint.h>
+namespace __llvm_libc {
+
// The futex data has to be exactly 4 bytes long. However, we use a uint type
// here as we do not want to use `_Atomic uint32_t` as the _Atomic keyword which
// is C only. The header stdatomic.h does not define an atomic type
static constexpr uint32_t ClearTIDValue = 0xABCD1234;
};
+} // namespace __llvm_libc
+
#endif // LLVM_LIBC_SRC_THREADS_LINUX_THREAD_UTILS_H