Add ptrace(2) backend for NetBSD Model this code after existing Linux backend and try to keep differences to minimum. Features and design choices, compared to the Linux code: - capstone dependency as a disassembler - no bfd support - -D_KERNTYPES for register_t type - no clone() support - no disable ASLR switch (personality) - no libunwind support, there is no port of HP libunwind version - no hardware assisted profiling aid support - traditional PT_ATTACH in place of 'seize' operation - poll(2) detecting of signals, instead of sigtimedwait(2) which didn't work for unknown reasons - no cross-ABI support (i386 on amd64 host) - currently only amd64 and i386 support Missing or incomplete features are subject for improvement. Tested with NetBSD/amd64 8.99.23
diff --git a/Makefile b/Makefile index 86e4b47..0e0ae0c 100644 --- a/Makefile +++ b/Makefile
@@ -137,6 +137,17 @@ endif ARCH_SRCS := $(sort $(wildcard mac/*.c)) # OS Darwin +else ifeq ($(OS),NetBSD) + ARCH := NETBSD + + ARCH_SRCS := $(sort $(wildcard netbsd/*.c)) + ARCH_CFLAGS := -std=c11 -I/usr/local/include \ + -Wextra -Wno-override-init \ + -funroll-loops -D_KERNTYPES + ARCH_LDFLAGS := -L/usr/local/include \ + -pthread -lcapstone -lrt + + # OS NetBSD else ARCH := POSIX @@ -246,7 +257,7 @@ endif endif -SUBDIR_ROOTS := linux mac posix libhfuzz libhfcommon libhfnetdriver +SUBDIR_ROOTS := linux mac netbsd posix libhfuzz libhfcommon libhfnetdriver DIRS := . $(shell find $(SUBDIR_ROOTS) -type d) CLEAN_PATTERNS := *.o *~ core *.a *.dSYM *.la *.so *.dylib SUBDIR_GARBAGE := $(foreach DIR,$(DIRS),$(addprefix $(DIR)/,$(CLEAN_PATTERNS))) @@ -449,6 +460,16 @@ mac/arch.o: arch.h honggfuzz.h libhfcommon/util.h fuzz.h libhfcommon/common.h mac/arch.o: libhfcommon/files.h libhfcommon/common.h libhfcommon/log.h mac/arch.o: sancov.h subproc.h +netbsd/arch.o: arch.h honggfuzz.h libhfcommon/util.h fuzz.h +netbsd/arch.o: libhfcommon/common.h libhfcommon/files.h libhfcommon/common.h +netbsd/arch.o: libhfcommon/log.h libhfcommon/ns.h netbsd/trace.h +netbsd/arch.o: sancov.h sanitizers.h subproc.h +netbsd/trace.o: netbsd/trace.h honggfuzz.h libhfcommon/util.h +netbsd/trace.o: libhfcommon/common.h libhfcommon/files.h libhfcommon/common.h +netbsd/trace.o: libhfcommon/log.h netbsd/unwind.h sancov.h +netbsd/trace.o: sanitizers.h socketfuzzer.h subproc.h +netbsd/unwind.o: netbsd/unwind.h honggfuzz.h libhfcommon/util.h +netbsd/unwind.o: libhfcommon/common.h libhfcommon/log.h posix/arch.o: arch.h honggfuzz.h libhfcommon/util.h fuzz.h posix/arch.o: libhfcommon/common.h libhfcommon/files.h libhfcommon/common.h posix/arch.o: libhfcommon/log.h sancov.h subproc.h