diff options
Diffstat (limited to 'compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h')
| -rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h index 1ccdb30a480..a602bfe0b40 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h @@ -25,7 +25,6 @@ namespace __sanitizer { extern unsigned struct_tm_sz; extern unsigned struct_passwd_sz; extern unsigned struct_group_sz; - extern unsigned struct_sigaction_sz; extern unsigned siginfo_t_sz; extern unsigned struct_itimerval_sz; extern unsigned pthread_t_sz; @@ -33,7 +32,6 @@ namespace __sanitizer { extern unsigned timeval_sz; extern unsigned uid_t_sz; extern unsigned mbstate_t_sz; - extern unsigned sigset_t_sz; #if !SANITIZER_ANDROID extern unsigned ucontext_t_sz; @@ -135,17 +133,32 @@ namespace __sanitizer { void *align; }; - uptr __sanitizer_get_sigaction_sa_sigaction(void *act); - void __sanitizer_set_sigaction_sa_sigaction(void *act, uptr cb); - bool __sanitizer_get_sigaction_sa_siginfo(void *act); +#if SANITIZER_ANDROID + typedef unsigned long __sanitizer_sigset_t; +#elif SANITIZER_MAC + typedef unsigned __sanitizer_sigset_t; +#elif SANITIZER_LINUX + struct __sanitizer_sigset_t { + // The size is determined by looking at sizeof of real sigset_t on linux. + uptr val[128 / sizeof(uptr)]; + }; +#endif - const unsigned struct_sigaction_max_sz = 256; - union __sanitizer_sigaction { - char size[struct_sigaction_max_sz]; // NOLINT + struct __sanitizer_sigaction { + union { + void (*sa_handler)(int sig); + void (*sa_sigaction)(int sig, void *siginfo, void *uctx); + }; + __sanitizer_sigset_t sa_mask; + int sa_flags; +#if SANITIZER_LINUX + void (*sa_restorer)(); +#endif }; extern uptr sig_ign; extern uptr sig_dfl; + extern uptr sa_siginfo; #if SANITIZER_LINUX extern int e_tabsz; |

