diff --git a/src/detailed_mem.cpp b/src/detailed_mem.cpp index 1cc3b6b58..7570dc78d 100644 --- a/src/detailed_mem.cpp +++ b/src/detailed_mem.cpp @@ -621,7 +621,7 @@ void MemChannelBase::AddressMap(Address addr, uint32_t& row, uint32_t& col, uint } uint32_t chnl = (uint32_t)-1; - if (mParam->interleaveType >= 0 && mParam->interleaveType <= 5) { + if (mParam->interleaveType <= 5) { // for non-power of 2 channels chnl = addr % mParam->channelCount; addr /= mParam->channelCount; diff --git a/src/g_heap/dlmalloc.h.c b/src/g_heap/dlmalloc.h.c index 12ca34b20..62fe60659 100644 --- a/src/g_heap/dlmalloc.h.c +++ b/src/g_heap/dlmalloc.h.c @@ -4166,7 +4166,7 @@ static void* sys_alloc(mstate m, size_t nb) { /* Unmap and unlink any mmapped segments that don't contain used chunks */ static size_t release_unused_segments(mstate m) { size_t released = 0; - unsigned int nsegs = 0; //dsm: Was signed, and gcc was complaining about signed vs unsigned comparisons + size_t nsegs = 0; msegmentptr pred = &m->seg; msegmentptr sp = pred->next; while (sp != 0) { diff --git a/src/log.h b/src/log.h index 7d1526587..1eecb8af5 100644 --- a/src/log.h +++ b/src/log.h @@ -169,7 +169,12 @@ class PrintExpr { #define trace(type, args...) #endif - +/* assert() is already defined as of POSIX.1-2001 and C89. + * Since we are overriding it here we need to make sure we don't create a macro + * redefinition, despite not having '#include ' in zsim. + * (E.g., some environments might include in their system/startup files.) + */ +#undef assert #ifndef NASSERT #define assert(expr) \ if (unlikely(!(expr))) { \ diff --git a/src/virt/cpu.cpp b/src/virt/cpu.cpp index 954eac279..0af67d69d 100644 --- a/src/virt/cpu.cpp +++ b/src/virt/cpu.cpp @@ -59,7 +59,7 @@ PostPatchFn PatchGetcpu(PrePatchArgs args) { uint32_t cpu = cpuenumCpu(procIdx, getCid(args.tid)); // still valid, may become invalid when we leave() assert(cpu != (uint32_t)-1); return [cpu](PostPatchArgs args) { - trace(TimeVirt, "[%d] Post-patching SYS_getcpu", tid); + trace(TimeVirt, "[%d] Post-patching SYS_getcpu", args.tid); ADDRINT arg0 = PIN_GetSyscallArgument(args.ctxt, args.std, 0); ADDRINT arg1 = PIN_GetSyscallArgument(args.ctxt, args.std, 1); VirtGetcpu(args.tid, cpu, arg0, arg1); diff --git a/src/virt/time.cpp b/src/virt/time.cpp index 72195a0bf..35598582a 100644 --- a/src/virt/time.cpp +++ b/src/virt/time.cpp @@ -180,24 +180,24 @@ PostPatchFn PatchNanosleep(PrePatchArgs args) { struct timespec* ts; uint64_t offsetNsec = 0; if (isClock) { - trace(TimeVirt, "[%d] Pre-patching SYS_clock_nanosleep", tid); + trace(TimeVirt, "[%d] Pre-patching SYS_clock_nanosleep", args.tid); int flags = (int) PIN_GetSyscallArgument(ctxt, std, 1); ts = (struct timespec*) PIN_GetSyscallArgument(ctxt, std, 2); if (flags == TIMER_ABSTIME) { - trace(TimeVirt, "[%d] SYS_clock_nanosleep requests TIMER_ABSTIME, offsetting", tid); + trace(TimeVirt, "[%d] SYS_clock_nanosleep requests TIMER_ABSTIME, offsetting", args.tid); uint32_t domain = zinfo->procArray[procIdx]->getClockDomain(); uint64_t simNs = cyclesToNs(zinfo->globPhaseCycles); offsetNsec = simNs + zinfo->clockDomainInfo[domain].realtimeOffsetNs; } } else { - trace(TimeVirt, "[%d] Pre-patching SYS_nanosleep", tid); + trace(TimeVirt, "[%d] Pre-patching SYS_nanosleep", args.tid); ts = (struct timespec*) PIN_GetSyscallArgument(ctxt, std, 0); } // Check preconditions // FIXME, shouldn't this use safeCopy?? if (!ts) return NullPostPatch; // kernel will return EFAULT - if (ts->tv_sec < 0 || ts->tv_nsec < 0 || ts->tv_nsec > 999999999) return false; // kernel will return EINVAL + if (ts->tv_sec < 0 || ts->tv_nsec < 0 || ts->tv_nsec > 999999999) return NullPostPatch; // kernel will return EINVAL uint64_t waitNsec = timespecToNs(*ts); if (waitNsec >= offsetNsec) waitNsec -= offsetNsec; @@ -228,9 +228,9 @@ PostPatchFn PatchNanosleep(PrePatchArgs args) { SYSCALL_STANDARD std = args.std; if (isClock) { - trace(TimeVirt, "[%d] Post-patching SYS_clock_nanosleep", tid); + trace(TimeVirt, "[%d] Post-patching SYS_clock_nanosleep", args.tid); } else { - trace(TimeVirt, "[%d] Post-patching SYS_nanosleep", tid); + trace(TimeVirt, "[%d] Post-patching SYS_nanosleep", args.tid); } int res = (int)(-PIN_GetSyscallNumber(ctxt, std));