- 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)".