Skip to content

Commit 86dead4

Browse files
fix #24
1 parent 2adbe20 commit 86dead4

File tree

4 files changed

+36
-7
lines changed

4 files changed

+36
-7
lines changed

accel/tcg/tcg-runtime.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,8 @@ __thread struct shadow_stack qasan_shadow_stack;
404404

405405
#ifdef ASAN_GIOVESE
406406

407+
#ifndef DO_NOT_USE_QASAN
408+
407409
#include "qemuafl/asan-giovese-inl.h"
408410

409411
#include <sys/types.h>
@@ -601,6 +603,7 @@ char* asan_giovese_printaddr(target_ulong guest_addr) {
601603

602604
void HELPER(qasan_shadow_stack_push)(target_ulong ptr) {
603605

606+
#ifndef DO_NOT_USE_QASAN
604607
#if defined(TARGET_ARM)
605608
ptr &= ~1;
606609
#endif
@@ -624,11 +627,13 @@ void HELPER(qasan_shadow_stack_push)(target_ulong ptr) {
624627
ns->index = 0;
625628
qasan_shadow_stack.first = ns;
626629
}
630+
#endif
627631

628632
}
629633

630634
void HELPER(qasan_shadow_stack_pop)(target_ulong ptr) {
631635

636+
#ifndef DO_NOT_USE_QASAN
632637
#if defined(TARGET_ARM)
633638
ptr &= ~1;
634639
#endif
@@ -653,13 +658,17 @@ void HELPER(qasan_shadow_stack_pop)(target_ulong ptr) {
653658
} while(cur_bk->buf[cur_bk->index] != ptr);
654659

655660
qasan_shadow_stack.first = cur_bk;
661+
#endif
656662

657663
}
658664

665+
#endif
666+
659667
target_long qasan_actions_dispatcher(void *cpu_env,
660668
target_long action, target_long arg1,
661669
target_long arg2, target_long arg3) {
662670

671+
#ifndef DO_NOT_USE_QASAN
663672
CPUArchState *env = cpu_env;
664673

665674
switch(action) {
@@ -759,6 +768,7 @@ target_long qasan_actions_dispatcher(void *cpu_env,
759768
fprintf(stderr, "Invalid QASAN action " TARGET_FMT_ld "\n", action);
760769
abort();
761770
}
771+
#endif
762772

763773
return 0;
764774
}
@@ -773,6 +783,7 @@ dh_ctype(tl) HELPER(qasan_fake_instr)(CPUArchState *env, dh_ctype(tl) action,
773783

774784
void HELPER(qasan_load1)(CPUArchState *env, target_ulong addr) {
775785

786+
#ifndef DO_NOT_USE_QASAN
776787
if (qasan_disabled) return;
777788

778789
void* ptr = (void*)AFL_G2H(addr);
@@ -784,11 +795,13 @@ void HELPER(qasan_load1)(CPUArchState *env, target_ulong addr) {
784795
#else
785796
__asan_load1(ptr);
786797
#endif
798+
#endif
787799

788800
}
789801

790802
void HELPER(qasan_load2)(CPUArchState *env, target_ulong addr) {
791803

804+
#ifndef DO_NOT_USE_QASAN
792805
if (qasan_disabled) return;
793806

794807
void* ptr = (void*)AFL_G2H(addr);
@@ -800,11 +813,13 @@ void HELPER(qasan_load2)(CPUArchState *env, target_ulong addr) {
800813
#else
801814
__asan_load2(ptr);
802815
#endif
816+
#endif
803817

804818
}
805819

806820
void HELPER(qasan_load4)(CPUArchState *env, target_ulong addr) {
807821

822+
#ifndef DO_NOT_USE_QASAN
808823
if (qasan_disabled) return;
809824

810825
void* ptr = (void*)AFL_G2H(addr);
@@ -816,11 +831,13 @@ void HELPER(qasan_load4)(CPUArchState *env, target_ulong addr) {
816831
#else
817832
__asan_load4(ptr);
818833
#endif
834+
#endif
819835

820836
}
821837

822838
void HELPER(qasan_load8)(CPUArchState *env, target_ulong addr) {
823839

840+
#ifndef DO_NOT_USE_QASAN
824841
if (qasan_disabled) return;
825842

826843
void* ptr = (void*)AFL_G2H(addr);
@@ -832,11 +849,13 @@ void HELPER(qasan_load8)(CPUArchState *env, target_ulong addr) {
832849
#else
833850
__asan_load8(ptr);
834851
#endif
852+
#endif
835853

836854
}
837855

838856
void HELPER(qasan_store1)(CPUArchState *env, target_ulong addr) {
839857

858+
#ifndef DO_NOT_USE_QASAN
840859
if (qasan_disabled) return;
841860

842861
void* ptr = (void*)AFL_G2H(addr);
@@ -848,11 +867,13 @@ void HELPER(qasan_store1)(CPUArchState *env, target_ulong addr) {
848867
#else
849868
__asan_store1(ptr);
850869
#endif
870+
#endif
851871

852872
}
853873

854874
void HELPER(qasan_store2)(CPUArchState *env, target_ulong addr) {
855875

876+
#ifndef DO_NOT_USE_QASAN
856877
if (qasan_disabled) return;
857878

858879
void* ptr = (void*)AFL_G2H(addr);
@@ -864,11 +885,13 @@ void HELPER(qasan_store2)(CPUArchState *env, target_ulong addr) {
864885
#else
865886
__asan_store2(ptr);
866887
#endif
888+
#endif
867889

868890
}
869891

870892
void HELPER(qasan_store4)(CPUArchState *env, target_ulong addr) {
871893

894+
#ifndef DO_NOT_USE_QASAN
872895
if (qasan_disabled) return;
873896

874897
void* ptr = (void*)AFL_G2H(addr);
@@ -880,11 +903,13 @@ void HELPER(qasan_store4)(CPUArchState *env, target_ulong addr) {
880903
#else
881904
__asan_store4(ptr);
882905
#endif
906+
#endif
883907

884908
}
885909

886910
void HELPER(qasan_store8)(CPUArchState *env, target_ulong addr) {
887911

912+
#ifndef DO_NOT_USE_QASAN
888913
if (qasan_disabled) return;
889914

890915
void* ptr = (void*)AFL_G2H(addr);
@@ -896,5 +921,6 @@ void HELPER(qasan_store8)(CPUArchState *env, target_ulong addr) {
896921
#else
897922
__asan_store8(ptr);
898923
#endif
924+
#endif
899925

900926
}

linux-user/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,7 @@ int main(int argc, char **argv, char **envp)
708708
if (getenv("QASAN_SYMBOLIZE"))
709709
qasan_symbolize = atoi(getenv("QASAN_SYMBOLIZE"));
710710

711-
#ifdef ASAN_GIOVESE
711+
#if defined(ASAN_GIOVESE) && !defined(DO_NOT_USE_QASAN)
712712
if (use_qasan)
713713
asan_giovese_init();
714714
#endif

linux-user/signal.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -949,7 +949,7 @@ static void handle_pending_signal(CPUArchState *cpu_env, int sig,
949949
sig != TARGET_SIGWINCH &&
950950
sig != TARGET_SIGCONT) {
951951

952-
#ifdef ASAN_GIOVESE
952+
#if defined(ASAN_GIOVESE) && !defined(DO_NOT_USE_QASAN)
953953
if (use_qasan) {
954954
if (sig == TARGET_SIGILL ||
955955
sig != TARGET_SIGFPE ||
@@ -973,7 +973,7 @@ static void handle_pending_signal(CPUArchState *cpu_env, int sig,
973973
/* ignore sig */
974974
} else if (handler == TARGET_SIG_ERR) {
975975

976-
#ifdef ASAN_GIOVESE
976+
#if defined(ASAN_GIOVESE) && !defined(DO_NOT_USE_QASAN)
977977
if (use_qasan) {
978978
if (sig == TARGET_SIGILL ||
979979
sig != TARGET_SIGFPE ||

qemuafl/qasan-qemu.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,6 @@ extern __thread struct shadow_stack qasan_shadow_stack;
6262

6363
#ifdef ASAN_GIOVESE
6464

65-
#define ASAN_NAME_STR "QEMU-AddressSanitizer"
66-
#include "asan-giovese.h"
67-
6865
#if defined(TARGET_X86_64) || defined(TARGET_I386)
6966

7067
#define PC_GET(env) ((env)->eip)
@@ -91,7 +88,13 @@ extern __thread struct shadow_stack qasan_shadow_stack;
9188
#define SP_GET(env) ((env)->active_tc.gpr[30])
9289

9390
#else
94-
#error "Target not supported by asan-giovese"
91+
//#error "Target not supported by asan-giovese"
92+
#define DO_NOT_USE_QASAN 1
93+
#endif
94+
95+
#ifndef DO_NOT_USE_QASAN
96+
#define ASAN_NAME_STR "QEMU-AddressSanitizer"
97+
#include "asan-giovese.h"
9598
#endif
9699

97100
#else

0 commit comments

Comments
 (0)