- Used uptr for __sanitizer_kernel_sigset_t.sig to avoid byte order issues on big endian systems
- Corrected the data type of __sanitizer_kernel_sigaction_t.sa_flags which is unsigned int
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
lib/sanitizer_common/sanitizer_platform_limits_posix.h | ||
---|---|---|
610 | Aren't there references in source code files that need to be updated for this change? At a glance I see things like "(sizeof(k_set->sig[0]) * 8)". |
lib/sanitizer_common/sanitizer_platform_limits_posix.h | ||
---|---|---|
610 | There the two functions which reference __sanitizer_kernel_sigset_t.sig:
Both of these functions were producing wrong results on big endian machines because __sanitizer_kernel_sigset_t.sig was declared as a char array. Both these functions return correct result with this change. |
This review *looks* like it has addressed all comment feedback. Does it need to be recreated against trunk?
lib/sanitizer_common/sanitizer_platform_limits_posix.h | ||
---|---|---|
610 | OK, you're saying that the *kernel* defines the signal set array as some multi-byte structure (unsigned long) and thus endian-ness comes into play between the sanitizer code and the kernel. |
Committed revision 283438
lib/sanitizer_common/sanitizer_platform_limits_posix.h | ||
---|---|---|
610 | Yes. |
Aren't there references in source code files that need to be updated for this change? At a glance I see things like "(sizeof(k_set->sig[0]) * 8)".