Skip to content

Commit a5f3d98

Browse files
vitalybukaaaryanshukla
authored andcommitted
Revert "[safestack] Various Solaris fixes" (llvm#98541)
Reverts llvm#98469 We can't add this dependency ``` OBJECT_LIBS RTSanitizerCommon RTSanitizerCommonLibc ``` safestack is security hardening, and RTSanitizerCommon is too fat for that.
1 parent f087f82 commit a5f3d98

File tree

5 files changed

+12
-43
lines changed

5 files changed

+12
-43
lines changed

compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ set(ALL_UBSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${RISCV64}
7777
${MIPS32} ${MIPS64} ${PPC64} ${S390X} ${SPARC} ${SPARCV9} ${HEXAGON}
7878
${LOONGARCH64})
7979
set(ALL_SAFESTACK_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM64} ${MIPS32} ${MIPS64}
80-
${HEXAGON} ${LOONGARCH64} ${SPARC} ${SPARCV9})
80+
${HEXAGON} ${LOONGARCH64})
8181
set(ALL_CFI_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${MIPS64}
8282
${HEXAGON} ${LOONGARCH64})
8383
set(ALL_SCUDO_STANDALONE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64}

compiler-rt/lib/safestack/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ foreach(arch ${SAFESTACK_SUPPORTED_ARCH})
1414
ARCHS ${arch}
1515
SOURCES ${SAFESTACK_SOURCES}
1616
$<TARGET_OBJECTS:RTInterception.${arch}>
17-
OBJECT_LIBS RTSanitizerCommon
18-
RTSanitizerCommonLibc
17+
# Intentionally does not deppend on sanitizer_common,
18+
# to keep runtime trivial, and acceptable for security
19+
# sensitive applications.
1920
CFLAGS ${SAFESTACK_CFLAGS}
2021
PARENT_TARGET safestack)
2122
endforeach()

compiler-rt/lib/safestack/safestack.cpp

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -224,17 +224,6 @@ INTERCEPTOR(int, pthread_create, pthread_t *thread,
224224
pthread_attr_destroy(&tmpattr);
225225
}
226226

227-
#if SANITIZER_SOLARIS
228-
// Solaris pthread_attr_init initializes stacksize to 0 (the default), so
229-
// hardcode the actual values as documented in pthread_create(3C).
230-
if (size == 0)
231-
# if defined(_LP64)
232-
size = 2 * 1024 * 1024;
233-
# else
234-
size = 1024 * 1024;
235-
# endif
236-
#endif
237-
238227
SFS_CHECK(size);
239228
size = RoundUpTo(size, kStackAlign);
240229

compiler-rt/lib/safestack/safestack_platform.h

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#include "sanitizer_common/sanitizer_platform.h"
1818

1919
#include <dlfcn.h>
20-
#include <errno.h>
2120
#include <stdint.h>
2221
#include <stdio.h>
2322
#include <stdlib.h>
@@ -69,24 +68,6 @@ static void *GetRealLibcAddress(const char *symbol) {
6968
SFS_CHECK(real_##func);
7069
#endif
7170

72-
#if SANITIZER_SOLARIS
73-
# define _REAL(func) _##func
74-
# define DEFINE__REAL(ret_type, func, ...) \
75-
extern "C" ret_type _REAL(func)(__VA_ARGS__)
76-
77-
# if !defined(_LP64) && _FILE_OFFSET_BITS == 64
78-
# define _REAL64(func) _##func##64
79-
# else
80-
# define _REAL64(func) _REAL(func)
81-
# endif
82-
# define DEFINE__REAL64(ret_type, func, ...) \
83-
extern "C" ret_type _REAL64(func)(__VA_ARGS__)
84-
85-
DEFINE__REAL64(void *, mmap, void *a, size_t b, int c, int d, int e, off_t f);
86-
DEFINE__REAL(int, munmap, void *a, size_t b);
87-
DEFINE__REAL(int, mprotect, void *a, size_t b, int c);
88-
#endif
89-
9071
using ThreadId = uint64_t;
9172

9273
inline ThreadId GetTid() {
@@ -110,10 +91,11 @@ inline int TgKill(pid_t pid, ThreadId tid, int sig) {
11091
(void)pid;
11192
return _REAL(_lwp_kill, tid, sig);
11293
#elif SANITIZER_SOLARIS
113-
(void)pid;
114-
errno = thr_kill(tid, sig);
115-
// TgKill is expected to return -1 on error, not an errno.
116-
return errno != 0 ? -1 : 0;
94+
# ifdef SYS_lwp_kill
95+
return syscall(SYS_lwp_kill, tid, sig);
96+
# else
97+
return -1;
98+
# endif
11799
#elif SANITIZER_FREEBSD
118100
return syscall(SYS_thr_kill2, pid, tid, sig);
119101
#else
@@ -128,7 +110,8 @@ inline void *Mmap(void *addr, size_t length, int prot, int flags, int fd,
128110
#elif SANITIZER_FREEBSD && (defined(__aarch64__) || defined(__x86_64__))
129111
return (void *)__syscall(SYS_mmap, addr, length, prot, flags, fd, offset);
130112
#elif SANITIZER_SOLARIS
131-
return _REAL64(mmap)(addr, length, prot, flags, fd, offset);
113+
return (void *)(uintptr_t)syscall(SYS_mmap, addr, length, prot, flags, fd,
114+
offset);
132115
#else
133116
return (void *)syscall(SYS_mmap, addr, length, prot, flags, fd, offset);
134117
#endif
@@ -138,8 +121,6 @@ inline int Munmap(void *addr, size_t length) {
138121
#if SANITIZER_NETBSD
139122
DEFINE__REAL(int, munmap, void *a, size_t b);
140123
return _REAL(munmap, addr, length);
141-
#elif SANITIZER_SOLARIS
142-
return _REAL(munmap)(addr, length);
143124
#else
144125
return syscall(SYS_munmap, addr, length);
145126
#endif
@@ -149,8 +130,6 @@ inline int Mprotect(void *addr, size_t length, int prot) {
149130
#if SANITIZER_NETBSD
150131
DEFINE__REAL(int, mprotect, void *a, size_t b, int c);
151132
return _REAL(mprotect, addr, length, prot);
152-
#elif SANITIZER_SOLARIS
153-
return _REAL(mprotect)(addr, length, prot);
154133
#else
155134
return syscall(SYS_mprotect, addr, length, prot);
156135
#endif

compiler-rt/test/safestack/lit.cfg.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,5 @@
3333
)
3434
)
3535

36-
if config.host_os not in ["Linux", "FreeBSD", "NetBSD", "SunOS"]:
36+
if config.host_os not in ["Linux", "FreeBSD", "NetBSD"]:
3737
config.unsupported = True

0 commit comments

Comments
 (0)