diff options
author | Robert Swiecki <robert@swiecki.net> | 2020-07-03 02:00:48 +0200 |
---|---|---|
committer | Robert Swiecki <robert@swiecki.net> | 2020-07-03 02:00:48 +0200 |
commit | d965646e368b295f2c94e8b5be3229a2846e9cbe (patch) | |
tree | 56885db7eb4bc1b0e5a2cc6754dfcec57314235e | |
parent | 2010ba76cd5cc1c0d62bdf2a226d57021ba0e3c1 (diff) | |
parent | 8301764bc78c7c816bfd77319abe29a52b4a3899 (diff) | |
download | honggfuzz-d965646e368b295f2c94e8b5be3229a2846e9cbe.tar.gz |
Merge branch 'master' of github.com:google/honggfuzz
-rw-r--r-- | libhfuzz/instrument.c | 17 | ||||
-rw-r--r-- | netbsd/trace.c | 21 |
2 files changed, 9 insertions, 29 deletions
diff --git a/libhfuzz/instrument.c b/libhfuzz/instrument.c index 51f563c3..1f97dd37 100644 --- a/libhfuzz/instrument.c +++ b/libhfuzz/instrument.c @@ -221,7 +221,6 @@ __attribute__((weak)) size_t instrumentReserveGuard(size_t cnt) { } if (ATOMIC_GET(globalCovFeedback->guardNb) < guardCnt) { ATOMIC_SET(globalCovFeedback->guardNb, guardCnt); - wmb(); } return base; } @@ -280,7 +279,6 @@ HF_REQUIRE_SSE42_POPCNT void __cyg_profile_func_enter(void* func, void* caller) register bool prev = ATOMIC_BITMAP_SET(globalCovFeedback->bbMapPc, pos); if (!prev) { ATOMIC_PRE_INC(globalCovFeedback->pidNewPC[my_thread_no]); - wmb(); } } @@ -298,7 +296,6 @@ HF_REQUIRE_SSE42_POPCNT static inline void hfuzz_trace_pc_internal(uintptr_t pc) register bool prev = ATOMIC_BITMAP_SET(globalCovFeedback->bbMapPc, ret); if (!prev) { ATOMIC_PRE_INC(globalCovFeedback->pidNewPC[my_thread_no]); - wmb(); } } @@ -321,7 +318,6 @@ HF_REQUIRE_SSE42_POPCNT static inline void hfuzz_trace_cmp1_internal( if (prev < v) { ATOMIC_SET(globalCovFeedback->bbMapCmp[pos], v); ATOMIC_POST_ADD(globalCovFeedback->pidNewCmp[my_thread_no], v - prev); - wmb(); } } @@ -333,7 +329,6 @@ HF_REQUIRE_SSE42_POPCNT static inline void hfuzz_trace_cmp2_internal( if (prev < v) { ATOMIC_SET(globalCovFeedback->bbMapCmp[pos], v); ATOMIC_POST_ADD(globalCovFeedback->pidNewCmp[my_thread_no], v - prev); - wmb(); } } @@ -345,7 +340,6 @@ HF_REQUIRE_SSE42_POPCNT static inline void hfuzz_trace_cmp4_internal( if (prev < v) { ATOMIC_SET(globalCovFeedback->bbMapCmp[pos], v); ATOMIC_POST_ADD(globalCovFeedback->pidNewCmp[my_thread_no], v - prev); - wmb(); } } @@ -357,7 +351,6 @@ HF_REQUIRE_SSE42_POPCNT static inline void hfuzz_trace_cmp8_internal( if (prev < v) { ATOMIC_SET(globalCovFeedback->bbMapCmp[pos], v); ATOMIC_POST_ADD(globalCovFeedback->pidNewCmp[my_thread_no], v - prev); - wmb(); } } @@ -498,7 +491,6 @@ HF_REQUIRE_SSE42_POPCNT void __sanitizer_cov_trace_switch(uint64_t Val, uint64_t if (prev < v) { ATOMIC_SET(globalCovFeedback->bbMapCmp[pos], v); ATOMIC_POST_ADD(globalCovFeedback->pidNewCmp[my_thread_no], v - prev); - wmb(); } } } @@ -524,7 +516,6 @@ HF_REQUIRE_SSE42_POPCNT void __sanitizer_cov_trace_div8(uint64_t Val) { if (prev < v) { ATOMIC_SET(globalCovFeedback->bbMapCmp[pos], v); ATOMIC_POST_ADD(globalCovFeedback->pidNewCmp[my_thread_no], v - prev); - wmb(); } } @@ -535,7 +526,6 @@ HF_REQUIRE_SSE42_POPCNT void __sanitizer_cov_trace_div4(uint32_t Val) { if (prev < v) { ATOMIC_SET(globalCovFeedback->bbMapCmp[pos], v); ATOMIC_POST_ADD(globalCovFeedback->pidNewCmp[my_thread_no], v - prev); - wmb(); } } @@ -550,7 +540,6 @@ HF_REQUIRE_SSE42_POPCNT void __sanitizer_cov_trace_pc_indir(uintptr_t callee) { register bool prev = ATOMIC_BITMAP_SET(globalCovFeedback->bbMapPc, pos); if (!prev) { ATOMIC_PRE_INC(globalCovFeedback->pidNewPC[my_thread_no]); - wmb(); } } @@ -567,7 +556,6 @@ __attribute__((weak)) HF_REQUIRE_SSE42_POPCNT void __sanitizer_cov_indir_call16( register bool prev = ATOMIC_BITMAP_SET(globalCovFeedback->bbMapPc, pos); if (!prev) { ATOMIC_PRE_INC(globalCovFeedback->pidNewPC[my_thread_no]); - wmb(); } } @@ -675,7 +663,6 @@ HF_REQUIRE_SSE42_POPCNT void __sanitizer_cov_trace_pc_guard(uint32_t* guard_ptr) ATOMIC_PRE_INC(globalCovFeedback->pidNewCmp[my_thread_no]); } } - wmb(); } /* Support up to 256 DSO modules with separate 8bit counters */ @@ -725,7 +712,6 @@ void instrument8BitCountersCount(void) { ATOMIC_POST_ADD(globalCovFeedback->pidTotalEdge[my_thread_no], totalEdge); ATOMIC_POST_ADD(globalCovFeedback->pidTotalCmp[my_thread_no], totalCmp); - wmb(); } void __sanitizer_cov_8bit_counters_init(char* start, char* end) { @@ -769,7 +755,6 @@ bool instrumentUpdateCmpMap(uintptr_t addr, uint32_t v) { if (prev < v) { ATOMIC_SET(globalCovFeedback->bbMapCmp[pos], v); ATOMIC_POST_ADD(globalCovFeedback->pidNewCmp[my_thread_no], v - prev); - wmb(); return true; } return false; @@ -784,8 +769,6 @@ void instrumentClearNewCov() { ATOMIC_CLEAR(globalCovFeedback->pidTotalPC[my_thread_no]); ATOMIC_CLEAR(globalCovFeedback->pidTotalEdge[my_thread_no]); ATOMIC_CLEAR(globalCovFeedback->pidTotalCmp[my_thread_no]); - - wmb(); } void instrumentAddConstMem(const void* mem, size_t len, bool check_if_ro) { diff --git a/netbsd/trace.c b/netbsd/trace.c index 8519543f..f5c5d958 100644 --- a/netbsd/trace.c +++ b/netbsd/trace.c @@ -319,14 +319,20 @@ static void arch_traceSaveData(run_t* run, pid_t pid) { arch_getInstrStr(pid, info.psi_lwpid, &pc, instr); + void* sig_addr = info.psi_siginfo.si_addr; + /* User-induced signals don't set si.si_addr */ + if (SI_FROMUSER(&info.psi_siginfo)) { + sig_addr = NULL; + } + LOG_D("Pid: %d, signo: %d, errno: %d, code: %d, addr: %p, pc: %" PRIxREGISTER ", instr: '%s'", pid, info.psi_siginfo.si_signo, info.psi_siginfo.si_errno, info.psi_siginfo.si_code, - info.psi_siginfo.si_addr, pc, instr); + sig_addr, pc, instr); if (!SI_FROMUSER(&info.psi_siginfo) && pc && - info.psi_siginfo.si_addr < run->global->arch_netbsd.ignoreAddr) { + sig_addr < run->global->arch_netbsd.ignoreAddr) { LOG_I("Input is interesting (%s), but the si.si_addr is %p (below %p), skipping", - util_sigName(info.psi_siginfo.si_signo), info.psi_siginfo.si_addr, + util_sigName(info.psi_siginfo.si_signo), sig_addr, run->global->arch_netbsd.ignoreAddr); return; } @@ -433,15 +439,6 @@ static void arch_traceSaveData(run_t* run, pid_t pid) { /* If non-blacklisted crash detected, zero set two MSB */ ATOMIC_POST_ADD(run->global->cfg.dynFileIterExpire, _HF_DYNFILE_SUB_MASK); - void* sig_addr = info.psi_siginfo.si_addr; - pc = 0UL; - sig_addr = NULL; - - /* User-induced signals don't set si.si_addr */ - if (SI_FROMUSER(&info.psi_siginfo)) { - sig_addr = NULL; - } - /* If dry run mode, copy file with same name into workspace */ if (run->global->mutate.mutationsPerRun == 0U && run->global->cfg.useVerifier) { snprintf(run->crashFileName, sizeof(run->crashFileName), "%s/%s", run->global->io.crashDir, |