summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Swiecki <robert@swiecki.net>2020-07-03 02:00:48 +0200
committerRobert Swiecki <robert@swiecki.net>2020-07-03 02:00:48 +0200
commitd965646e368b295f2c94e8b5be3229a2846e9cbe (patch)
tree56885db7eb4bc1b0e5a2cc6754dfcec57314235e
parent2010ba76cd5cc1c0d62bdf2a226d57021ba0e3c1 (diff)
parent8301764bc78c7c816bfd77319abe29a52b4a3899 (diff)
downloadhonggfuzz-d965646e368b295f2c94e8b5be3229a2846e9cbe.tar.gz
Merge branch 'master' of github.com:google/honggfuzz
-rw-r--r--libhfuzz/instrument.c17
-rw-r--r--netbsd/trace.c21
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,