mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 03:27:39 +00:00
d1d4388201
It hasn't been helpful enough to be justify the maintenance burden. What actually does help is mprotect(), kprintf(), --ftrace and --strace which can always be counted upon to work correctly. We aren't losing much with this change. Support for ASAN on AARCH64 was never implemented. Applying ASAN to the core libc runtimes was disabled many months ago. If there is some way to have an ASAN runtime for user programs that is less invasive we can potentially consider reintroducing support. But now is premature.
123 lines
3.8 KiB
C
123 lines
3.8 KiB
C
#ifdef _COSMO_SOURCE
|
|
#ifndef COSMOPOLITAN_LIBC_DCE_H_
|
|
#define COSMOPOLITAN_LIBC_DCE_H_
|
|
/*─────────────────────────────────────────────────────────────────────────────╗
|
|
│ cosmopolitan § autotune » dead code elimination │
|
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
|
|
|
#ifndef SUPPORT_VECTOR
|
|
#ifdef __x86_64__
|
|
/**
|
|
* Supported Platforms Tuning Knob (Runtime & Compile-Time)
|
|
* Tuning this bitmask will remove platform polyfills at compile-time.
|
|
*/
|
|
#define SUPPORT_VECTOR 255
|
|
#else
|
|
#define SUPPORT_VECTOR (_HOSTLINUX | _HOSTXNU | _HOSTFREEBSD)
|
|
#endif
|
|
#endif
|
|
|
|
#define _HOSTLINUX 1
|
|
#define _HOSTMETAL 2
|
|
#define _HOSTWINDOWS 4
|
|
#define _HOSTXNU 8
|
|
#define _HOSTOPENBSD 16
|
|
#define _HOSTFREEBSD 32
|
|
#define _HOSTNETBSD 64
|
|
|
|
#ifdef NDEBUG
|
|
#define NoDebug() 1
|
|
#else
|
|
#define NoDebug() 0
|
|
#endif
|
|
|
|
#ifdef MODE_DBG
|
|
#define IsModeDbg() 1
|
|
#else
|
|
#define IsModeDbg() 0
|
|
#endif
|
|
|
|
#ifdef TRUSTWORTHY
|
|
#define IsTrustworthy() 1
|
|
#else
|
|
#define IsTrustworthy() 0
|
|
#endif
|
|
|
|
#ifdef TINY
|
|
#define IsTiny() 1
|
|
#else
|
|
#define IsTiny() 0
|
|
#endif
|
|
|
|
#ifdef __OPTIMIZE__
|
|
#define IsOptimized() 1
|
|
#else
|
|
#define IsOptimized() 0
|
|
#endif
|
|
|
|
#ifdef __aarch64__
|
|
#define IsAarch64() 1
|
|
#define IsXnuSilicon() IsXnu()
|
|
#else
|
|
#define IsAarch64() 0
|
|
#define IsXnuSilicon() 0
|
|
#endif
|
|
|
|
#if defined(__x86_64__)
|
|
#define _ARCH_NAME "amd64"
|
|
#elif defined(__aarch64__)
|
|
#define _ARCH_NAME "arm64"
|
|
#elif defined(__powerpc64__)
|
|
#define _ARCH_NAME "ppc64"
|
|
#elif defined(__s390x__)
|
|
#define _ARCH_NAME "s390x"
|
|
#elif defined(__riscv)
|
|
#define _ARCH_NAME "riscv"
|
|
#endif
|
|
|
|
#define SupportsLinux() ((SUPPORT_VECTOR & _HOSTLINUX) == _HOSTLINUX)
|
|
#define SupportsMetal() ((SUPPORT_VECTOR & _HOSTMETAL) == _HOSTMETAL)
|
|
#define SupportsWindows() ((SUPPORT_VECTOR & _HOSTWINDOWS) == _HOSTWINDOWS)
|
|
#define SupportsXnu() ((SUPPORT_VECTOR & _HOSTXNU) == _HOSTXNU)
|
|
#define SupportsFreebsd() ((SUPPORT_VECTOR & _HOSTFREEBSD) == _HOSTFREEBSD)
|
|
#define SupportsOpenbsd() ((SUPPORT_VECTOR & _HOSTOPENBSD) == _HOSTOPENBSD)
|
|
#define SupportsNetbsd() ((SUPPORT_VECTOR & _HOSTNETBSD) == _HOSTNETBSD)
|
|
#define SupportsBsd() \
|
|
(!!(SUPPORT_VECTOR & (_HOSTXNU | _HOSTFREEBSD | _HOSTOPENBSD | _HOSTNETBSD)))
|
|
#define SupportsSystemv() \
|
|
(!!(SUPPORT_VECTOR & \
|
|
(_HOSTLINUX | _HOSTXNU | _HOSTOPENBSD | _HOSTFREEBSD | _HOSTNETBSD)))
|
|
|
|
#ifndef __ASSEMBLER__
|
|
#define IsLinux() (SupportsLinux() && (__hostos & _HOSTLINUX))
|
|
#define IsMetal() (SupportsMetal() && (__hostos & _HOSTMETAL))
|
|
#define IsWindows() (SupportsWindows() && (__hostos & _HOSTWINDOWS))
|
|
#define IsXnu() (SupportsXnu() && (__hostos & _HOSTXNU))
|
|
#define IsFreebsd() (SupportsFreebsd() && (__hostos & _HOSTFREEBSD))
|
|
#define IsOpenbsd() (SupportsOpenbsd() && (__hostos & _HOSTOPENBSD))
|
|
#define IsNetbsd() (SupportsNetbsd() && (__hostos & _HOSTNETBSD))
|
|
#define IsBsd() (IsXnu() || IsFreebsd() || IsOpenbsd() || IsNetbsd())
|
|
#else
|
|
/* clang-format off */
|
|
#define IsLinux() $_HOSTLINUX,__hostos(%rip)
|
|
#define IsMetal() $_HOSTMETAL,__hostos(%rip)
|
|
#define IsWindows() $_HOSTWINDOWS,__hostos(%rip)
|
|
#define IsBsd() $_HOSTXNU|_HOSTFREEBSD|_HOSTOPENBSD|_HOSTNETBSD,__hostos(%rip)
|
|
#define IsXnu() $_HOSTXNU,__hostos(%rip)
|
|
#define IsFreebsd() $_HOSTFREEBSD,__hostos(%rip)
|
|
#define IsOpenbsd() $_HOSTOPENBSD,__hostos(%rip)
|
|
#define IsNetbsd() $_HOSTNETBSD,__hostos(%rip)
|
|
/* clang-format on */
|
|
#endif
|
|
|
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
COSMOPOLITAN_C_START_
|
|
|
|
extern const int __hostos;
|
|
|
|
int IsQemuUser(void);
|
|
|
|
COSMOPOLITAN_C_END_
|
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
|
#endif /* COSMOPOLITAN_LIBC_DCE_H_ */
|
|
#endif /* _COSMO_SOURCE */
|