[MSan] Make unaligned load/store functions compatible for both endians
Reviewers: eugenis Subscribers: jaydeep, sagar, llvm-commits Differential Revision: http://reviews.llvm.org/D17371 llvm-svn: 261513
This commit is contained in:
parent
d8039df523
commit
452417ac12
|
@ -580,13 +580,13 @@ u32 __msan_get_umr_origin() {
|
|||
}
|
||||
|
||||
u16 __sanitizer_unaligned_load16(const uu16 *p) {
|
||||
__msan_retval_tls[0] = *(uu16 *)MEM_TO_SHADOW((uptr)p);
|
||||
*(uu16 *)&__msan_retval_tls[0] = *(uu16 *)MEM_TO_SHADOW((uptr)p);
|
||||
if (__msan_get_track_origins())
|
||||
__msan_retval_origin_tls = GetOriginIfPoisoned((uptr)p, sizeof(*p));
|
||||
return *p;
|
||||
}
|
||||
u32 __sanitizer_unaligned_load32(const uu32 *p) {
|
||||
__msan_retval_tls[0] = *(uu32 *)MEM_TO_SHADOW((uptr)p);
|
||||
*(uu32 *)&__msan_retval_tls[0] = *(uu32 *)MEM_TO_SHADOW((uptr)p);
|
||||
if (__msan_get_track_origins())
|
||||
__msan_retval_origin_tls = GetOriginIfPoisoned((uptr)p, sizeof(*p));
|
||||
return *p;
|
||||
|
@ -598,7 +598,7 @@ u64 __sanitizer_unaligned_load64(const uu64 *p) {
|
|||
return *p;
|
||||
}
|
||||
void __sanitizer_unaligned_store16(uu16 *p, u16 x) {
|
||||
u16 s = __msan_param_tls[1];
|
||||
u16 s = *(uu16 *)&__msan_param_tls[1];
|
||||
*(uu16 *)MEM_TO_SHADOW((uptr)p) = s;
|
||||
if (s && __msan_get_track_origins())
|
||||
if (uu32 o = __msan_param_origin_tls[2])
|
||||
|
@ -606,7 +606,7 @@ void __sanitizer_unaligned_store16(uu16 *p, u16 x) {
|
|||
*p = x;
|
||||
}
|
||||
void __sanitizer_unaligned_store32(uu32 *p, u32 x) {
|
||||
u32 s = __msan_param_tls[1];
|
||||
u32 s = *(uu32 *)&__msan_param_tls[1];
|
||||
*(uu32 *)MEM_TO_SHADOW((uptr)p) = s;
|
||||
if (s && __msan_get_track_origins())
|
||||
if (uu32 o = __msan_param_origin_tls[2])
|
||||
|
|
Loading…
Reference in New Issue