forked from OSchip/llvm-project
[compiler-rt][hwasan] Add GetShadowOffset function
Similar to SHADOW_OFFSET on asan, we can use this for hwasan so platforms that use a constant value for the start of shadow memory can just use the constant rather than access a global. Differential Revision: https://reviews.llvm.org/D104275
This commit is contained in:
parent
e52364532a
commit
fc006b3e5d
|
@ -15,6 +15,7 @@
|
|||
|
||||
#include "hwasan.h"
|
||||
#include "hwasan_interface_internal.h"
|
||||
#include "hwasan_mapping.h"
|
||||
#include "hwasan_poisoning.h"
|
||||
#include "sanitizer_common/sanitizer_allocator.h"
|
||||
#include "sanitizer_common/sanitizer_allocator_checks.h"
|
||||
|
@ -114,7 +115,7 @@ inline bool InTaggableRegion(uptr addr) {
|
|||
// Aliases are mapped next to shadow so that the upper bits match the shadow
|
||||
// base.
|
||||
return (addr >> kTaggableRegionCheckShift) ==
|
||||
(__hwasan_shadow_memory_dynamic_address >> kTaggableRegionCheckShift);
|
||||
(GetShadowOffset() >> kTaggableRegionCheckShift);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -50,12 +50,14 @@ extern uptr kHighMemEnd;
|
|||
|
||||
extern uptr kAliasRegionStart;
|
||||
|
||||
inline uptr GetShadowOffset() {
|
||||
return SANITIZER_FUCHSIA ? 0 : __hwasan_shadow_memory_dynamic_address;
|
||||
}
|
||||
inline uptr MemToShadow(uptr untagged_addr) {
|
||||
return (untagged_addr >> kShadowScale) +
|
||||
__hwasan_shadow_memory_dynamic_address;
|
||||
return (untagged_addr >> kShadowScale) + GetShadowOffset();
|
||||
}
|
||||
inline uptr ShadowToMem(uptr shadow_addr) {
|
||||
return (shadow_addr - __hwasan_shadow_memory_dynamic_address) << kShadowScale;
|
||||
return (shadow_addr - GetShadowOffset()) << kShadowScale;
|
||||
}
|
||||
inline uptr MemToShadowSize(uptr size) {
|
||||
return size >> kShadowScale;
|
||||
|
|
Loading…
Reference in New Issue