Revert "[safestack] Various Solaris fixes" (#98541)
Reverts llvm/llvm-project#98469 We can't add this dependency ``` OBJECT_LIBS RTSanitizerCommon RTSanitizerCommonLibc ``` safestack is security hardening, and RTSanitizerCommon is too fat for that.
This commit is contained in:
parent
657dbc3feb
commit
c9a4a27b9e
@ -77,7 +77,7 @@ set(ALL_UBSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${RISCV64}
|
||||
${MIPS32} ${MIPS64} ${PPC64} ${S390X} ${SPARC} ${SPARCV9} ${HEXAGON}
|
||||
${LOONGARCH64})
|
||||
set(ALL_SAFESTACK_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM64} ${MIPS32} ${MIPS64}
|
||||
${HEXAGON} ${LOONGARCH64} ${SPARC} ${SPARCV9})
|
||||
${HEXAGON} ${LOONGARCH64})
|
||||
set(ALL_CFI_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${MIPS64}
|
||||
${HEXAGON} ${LOONGARCH64})
|
||||
set(ALL_SCUDO_STANDALONE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64}
|
||||
|
@ -14,8 +14,9 @@ foreach(arch ${SAFESTACK_SUPPORTED_ARCH})
|
||||
ARCHS ${arch}
|
||||
SOURCES ${SAFESTACK_SOURCES}
|
||||
$<TARGET_OBJECTS:RTInterception.${arch}>
|
||||
OBJECT_LIBS RTSanitizerCommon
|
||||
RTSanitizerCommonLibc
|
||||
# Intentionally does not deppend on sanitizer_common,
|
||||
# to keep runtime trivial, and acceptable for security
|
||||
# sensitive applications.
|
||||
CFLAGS ${SAFESTACK_CFLAGS}
|
||||
PARENT_TARGET safestack)
|
||||
endforeach()
|
||||
|
@ -224,17 +224,6 @@ INTERCEPTOR(int, pthread_create, pthread_t *thread,
|
||||
pthread_attr_destroy(&tmpattr);
|
||||
}
|
||||
|
||||
#if SANITIZER_SOLARIS
|
||||
// Solaris pthread_attr_init initializes stacksize to 0 (the default), so
|
||||
// hardcode the actual values as documented in pthread_create(3C).
|
||||
if (size == 0)
|
||||
# if defined(_LP64)
|
||||
size = 2 * 1024 * 1024;
|
||||
# else
|
||||
size = 1024 * 1024;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
SFS_CHECK(size);
|
||||
size = RoundUpTo(size, kStackAlign);
|
||||
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include "sanitizer_common/sanitizer_platform.h"
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <errno.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@ -69,24 +68,6 @@ static void *GetRealLibcAddress(const char *symbol) {
|
||||
SFS_CHECK(real_##func);
|
||||
#endif
|
||||
|
||||
#if SANITIZER_SOLARIS
|
||||
# define _REAL(func) _##func
|
||||
# define DEFINE__REAL(ret_type, func, ...) \
|
||||
extern "C" ret_type _REAL(func)(__VA_ARGS__)
|
||||
|
||||
# if !defined(_LP64) && _FILE_OFFSET_BITS == 64
|
||||
# define _REAL64(func) _##func##64
|
||||
# else
|
||||
# define _REAL64(func) _REAL(func)
|
||||
# endif
|
||||
# define DEFINE__REAL64(ret_type, func, ...) \
|
||||
extern "C" ret_type _REAL64(func)(__VA_ARGS__)
|
||||
|
||||
DEFINE__REAL64(void *, mmap, void *a, size_t b, int c, int d, int e, off_t f);
|
||||
DEFINE__REAL(int, munmap, void *a, size_t b);
|
||||
DEFINE__REAL(int, mprotect, void *a, size_t b, int c);
|
||||
#endif
|
||||
|
||||
using ThreadId = uint64_t;
|
||||
|
||||
inline ThreadId GetTid() {
|
||||
@ -110,10 +91,11 @@ inline int TgKill(pid_t pid, ThreadId tid, int sig) {
|
||||
(void)pid;
|
||||
return _REAL(_lwp_kill, tid, sig);
|
||||
#elif SANITIZER_SOLARIS
|
||||
(void)pid;
|
||||
errno = thr_kill(tid, sig);
|
||||
// TgKill is expected to return -1 on error, not an errno.
|
||||
return errno != 0 ? -1 : 0;
|
||||
# ifdef SYS_lwp_kill
|
||||
return syscall(SYS_lwp_kill, tid, sig);
|
||||
# else
|
||||
return -1;
|
||||
# endif
|
||||
#elif SANITIZER_FREEBSD
|
||||
return syscall(SYS_thr_kill2, pid, tid, sig);
|
||||
#else
|
||||
@ -128,7 +110,8 @@ inline void *Mmap(void *addr, size_t length, int prot, int flags, int fd,
|
||||
#elif SANITIZER_FREEBSD && (defined(__aarch64__) || defined(__x86_64__))
|
||||
return (void *)__syscall(SYS_mmap, addr, length, prot, flags, fd, offset);
|
||||
#elif SANITIZER_SOLARIS
|
||||
return _REAL64(mmap)(addr, length, prot, flags, fd, offset);
|
||||
return (void *)(uintptr_t)syscall(SYS_mmap, addr, length, prot, flags, fd,
|
||||
offset);
|
||||
#else
|
||||
return (void *)syscall(SYS_mmap, addr, length, prot, flags, fd, offset);
|
||||
#endif
|
||||
@ -138,8 +121,6 @@ inline int Munmap(void *addr, size_t length) {
|
||||
#if SANITIZER_NETBSD
|
||||
DEFINE__REAL(int, munmap, void *a, size_t b);
|
||||
return _REAL(munmap, addr, length);
|
||||
#elif SANITIZER_SOLARIS
|
||||
return _REAL(munmap)(addr, length);
|
||||
#else
|
||||
return syscall(SYS_munmap, addr, length);
|
||||
#endif
|
||||
@ -149,8 +130,6 @@ inline int Mprotect(void *addr, size_t length, int prot) {
|
||||
#if SANITIZER_NETBSD
|
||||
DEFINE__REAL(int, mprotect, void *a, size_t b, int c);
|
||||
return _REAL(mprotect, addr, length, prot);
|
||||
#elif SANITIZER_SOLARIS
|
||||
return _REAL(mprotect)(addr, length, prot);
|
||||
#else
|
||||
return syscall(SYS_mprotect, addr, length, prot);
|
||||
#endif
|
||||
|
@ -33,5 +33,5 @@ if config.lto_supported:
|
||||
)
|
||||
)
|
||||
|
||||
if config.host_os not in ["Linux", "FreeBSD", "NetBSD", "SunOS"]:
|
||||
if config.host_os not in ["Linux", "FreeBSD", "NetBSD"]:
|
||||
config.unsupported = True
|
||||
|
Loading…
x
Reference in New Issue
Block a user