ASan-related hack to speedup aarch64 builds. 93/175393/1 accepted/tizen_5.5_base_mobile_hotfix accepted/tizen_5.5_base_wearable_hotfix tizen_5.0_base tizen_5.5_base tizen_5.5_base_mobile_hotfix tizen_5.5_base_wearable_hotfix tizen_5.5_tv accepted/tizen/5.0/base/20181101.091254 accepted/tizen/5.5/base/mobile/hotfix/20201023.083817 accepted/tizen/5.5/base/wearable/hotfix/20201023.080204 submit/tizen_5.0_base/20181101.000001 submit/tizen_5.5_base_mobile_hotfix/20201023.171502 submit/tizen_5.5_base_wearable_hotfix/20201023.155602 tizen_5.5.m2_release
authorMaxim Ostapenko <m.ostapenko@samsung.com>
Fri, 8 Jul 2016 12:47:42 +0000 (15:47 +0300)
committerSoonKyu Park <sk7.park@samsung.com>
Tue, 10 Apr 2018 04:45:33 +0000 (13:45 +0900)
Switch off memory pages checks in qemu if memory regions are mapped by ASan

Change-Id: I8233802ee35db00c799f5645072b8014f823b5c6
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
translate-all.c

index 1e7c61b..5f66573 100644 (file)
@@ -1291,6 +1291,16 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
  */
 void tb_invalidate_phys_range(tb_page_addr_t start, tb_page_addr_t end)
 {
+#if TARGET_LONG_SIZE == 8
+    target_ulong asan_low_shadow_start = 0x0ffffff000;
+    target_ulong asan_shadow_gap_start = 0x1200000000;
+    target_ulong asan_high_shadow_start = 0x1400000000;
+
+    if (start == asan_low_shadow_start || start == asan_shadow_gap_start
+        || start == asan_high_shadow_start)
+      return;
+#endif
+
     while (start < end) {
         tb_invalidate_phys_page_range(start, end, 0);
         start &= TARGET_PAGE_MASK;
@@ -1947,6 +1957,16 @@ void page_set_flags(target_ulong start, target_ulong end, int flags)
         flags |= PAGE_WRITE_ORG;
     }
 
+#if TARGET_LONG_SIZE == 8
+    target_ulong asan_low_shadow_start = 0x0ffffff000;
+    target_ulong asan_shadow_gap_start = 0x1200000000;
+    target_ulong asan_high_shadow_start = 0x1400000000;
+
+    if (start == asan_low_shadow_start || start == asan_shadow_gap_start
+        || start == asan_high_shadow_start)
+      return;
+#endif
+
     for (addr = start, len = end - start;
          len != 0;
          len -= TARGET_PAGE_SIZE, addr += TARGET_PAGE_SIZE) {
@@ -1988,6 +2008,16 @@ int page_check_range(target_ulong start, target_ulong len, int flags)
     end = TARGET_PAGE_ALIGN(start + len);
     start = start & TARGET_PAGE_MASK;
 
+#if TARGET_LONG_SIZE == 8
+    target_ulong asan_low_shadow_start = 0x0ffffff000;
+    target_ulong asan_shadow_gap_start = 0x1200000000;
+    target_ulong asan_high_shadow_start = 0x1400000000;
+
+    if (start == asan_low_shadow_start || start == asan_shadow_gap_start
+        || start == asan_high_shadow_start)
+      return 0;
+#endif
+
     for (addr = start, len = end - start;
          len != 0;
          len -= TARGET_PAGE_SIZE, addr += TARGET_PAGE_SIZE) {