Home | History | Annotate | Download | only in honggfuzz
      1 #   honggfuzz - Makefile
      2 #   -----------------------------------------
      3 #
      4 #   Author: Robert Swiecki <swiecki (at] google.com>
      5 #
      6 #   Copyright 2010-2015 by Google Inc. All Rights Reserved.
      7 #
      8 #   Licensed under the Apache License, Version 2.0 (the "License");
      9 #   you may not use this file except in compliance with the License.
     10 #   You may obtain a copy of the License at
     11 #
     12 #     http://www.apache.org/licenses/LICENSE-2.0
     13 #
     14 #   Unless required by applicable law or agreed to in writing, software
     15 #   distributed under the License is distributed on an "AS IS" BASIS,
     16 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     17 #   See the License for the specific language governing permissions and
     18 #   limitations under the License.
     19 #
     20 #   NOTE: xcrun is within xcode...xcode is required on OSX.
     21 #
     22 
     23 # Common for all architectures
     24 CC ?= gcc
     25 LD = $(CC)
     26 BIN := honggfuzz
     27 HFUZZ_CC_BINS := hfuzz_cc/hfuzz-clang hfuzz_cc/hfuzz-clang++ hfuzz_cc/hfuzz-gcc hfuzz_cc/hfuzz-g++
     28 HFUZZ_CC_SRCS := hfuzz_cc/hfuzz-cc.c
     29 COMMON_CFLAGS := -D_GNU_SOURCE -Wall -Werror -Wframe-larger-than=131072 -Wno-format-truncation -I.
     30 COMMON_LDFLAGS := -lm libcommon/libcommon.a
     31 COMMON_SRCS := $(sort $(wildcard *.c))
     32 CFLAGS ?= -O3
     33 LDFLAGS ?=
     34 LIBS_CFLAGS ?= -fPIC -fno-stack-protector -fno-builtin -D__NO_STRING_INLINES -D__NO_INLINE__
     35 HFUZZ_USE_RET_ADDR ?= false
     36 ifneq ($(HFUZZ_USE_RET_ADDR),false)
     37     LIBS_CFLAGS += -D_HF_USE_RET_ADDR=$(HFUZZ_USE_RET_ADDR) -Wno-error=frame-address
     38 endif
     39 
     40 OS ?= $(shell uname -s)
     41 MARCH ?= $(shell uname -m)
     42 
     43 ifeq ($(OS),Linux)
     44     ARCH := LINUX
     45 
     46     ARCH_CFLAGS := -std=c11 -I/usr/local/include \
     47                    -Wextra -Wno-override-init \
     48                    -funroll-loops \
     49                    -D_FILE_OFFSET_BITS=64
     50     ARCH_LDFLAGS := -L/usr/local/include \
     51                     -lpthread -lunwind-ptrace -lunwind-generic -lbfd -lopcodes -lrt -ldl
     52     ARCH_SRCS := $(sort $(wildcard linux/*.c))
     53     LIBS_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
     54 
     55     ifeq ("$(wildcard /usr/include/bfd.h)","")
     56         WARN_LIBRARY += binutils-devel
     57     endif
     58     ifeq ("$(wildcard /usr/include/libunwind-ptrace.h)","")
     59         WARN_LIBRARY += libunwind-devel/libunwind8-devel
     60     endif
     61     ifeq ("$(wildcard /usr/local/include/intel-pt.h)","/usr/local/include/intel-pt.h")
     62         ARCH_CFLAGS += -D_HF_LINUX_INTEL_PT_LIB
     63         ARCH_CFLAGS += -I/usr/local/include
     64         ARCH_LDFLAGS += -L/usr/local/lib -lipt -Wl,--rpath=/usr/local/lib
     65     endif
     66     ifeq ("$(wildcard /usr/include/intel-pt.h)","/usr/include/intel-pt.h")
     67         ARCH_CFLAGS += -D_HF_LINUX_INTEL_PT_LIB
     68         ARCH_LDFLAGS += -lipt
     69     endif
     70     ifdef WARN_LIBRARY
     71         $(info ***************************************************************)
     72         $(info Development libraries which are most likely missing on your OS:)
     73         $(info $(WARN_LIBRARY))
     74         $(info ***************************************************************)
     75     endif
     76     # OS Linux
     77 else ifeq ($(OS),Darwin)
     78     ARCH := DARWIN
     79 
     80     # Figure out which crash reporter to use.
     81     CRASHWRANGLER := third_party/mac
     82     OS_VERSION := $(shell sw_vers -productVersion)
     83     ifneq (,$(findstring 10.13,$(OS_VERSION)))
     84         CRASH_REPORT := $(CRASHWRANGLER)/CrashReport_Sierra.o
     85     else ifneq (,$(findstring 10.12,$(OS_VERSION)))
     86         CRASH_REPORT := $(CRASHWRANGLER)/CrashReport_Yosemite.o
     87     else ifneq (,$(findstring 10.11,$(OS_VERSION)))
     88         # El Capitan didn't break compatibility
     89         CRASH_REPORT := $(CRASHWRANGLER)/CrashReport_Yosemite.o
     90     else ifneq (,$(findstring 10.10,$(OS_VERSION)))
     91         CRASH_REPORT := $(CRASHWRANGLER)/CrashReport_Yosemite.o
     92     else ifneq (,$(findstring 10.9,$(OS_VERSION)))
     93         CRASH_REPORT := $(CRASHWRANGLER)/CrashReport_Mavericks.o
     94     else ifneq (,$(findstring 10.8,$(OS_VERSION)))
     95         CRASH_REPORT := $(CRASHWRANGLER)/CrashReport_Mountain_Lion.o
     96     else
     97         $(error Unsupported MAC OS X version)
     98     endif
     99 
    100     # Figure out which XCode SDK to use.
    101     OSX_SDK_VERSION := $(shell xcrun --show-sdk-version)
    102     SDK_NAME :=macosx$(OSX_SDK_VERSION)
    103     SDK := $(shell xcrun --sdk $(SDK_NAME) --show-sdk-path 2>/dev/null)
    104     ifeq (,$(findstring MacOSX.platform,$(SDK)))
    105         XC_PATH := $(shell xcode-select -p)
    106         $(error $(SDK_NAME) not found in $(XC_PATH))
    107     endif
    108 
    109     CC := $(shell xcrun --sdk $(SDK_NAME) --find cc)
    110     LD := $(shell xcrun --sdk $(SDK_NAME) --find cc)
    111     ARCH_CFLAGS := -arch x86_64 -std=c99 -isysroot $(SDK) \
    112                    -x objective-c -pedantic -fblocks \
    113                    -Wimplicit -Wunused -Wcomment -Wchar-subscripts -Wuninitialized \
    114                    -Wreturn-type -Wpointer-arith -Wno-gnu-case-range -Wno-gnu-designator \
    115                    -Wno-deprecated-declarations -Wno-unknown-pragmas -Wno-attributes
    116     ARCH_LDFLAGS := -F/System/Library/PrivateFrameworks -framework CoreSymbolication -framework IOKit \
    117                     -F$(SDK)/System/Library/Frameworks -F$(SDK)/System/Library/PrivateFrameworks \
    118                     -framework Foundation -framework ApplicationServices -framework Symbolication \
    119                     -framework CoreServices -framework CrashReporterSupport -framework CoreFoundation \
    120                     -framework CommerceKit $(CRASH_REPORT)
    121 
    122     XCODE_VER := $(shell xcodebuild -version | grep "^Xcode" | cut -d " " -f2)
    123     ifeq "8.3" "$(word 1, $(sort 8.3 $(XCODE_VER)))"
    124       ARCH_LDFLAGS += -F/Applications/Xcode.app/Contents/SharedFrameworks \
    125                       -framework CoreSymbolicationDT \
    126                       -Wl,-rpath,/Applications/Xcode.app/Contents/SharedFrameworks
    127     endif
    128 
    129     MIG_RET := $(shell mig -header mac/mach_exc.h -user mac/mach_excUser.c -sheader mac/mach_excServer.h \
    130                  -server mac/mach_excServer.c $(SDK)/usr/include/mach/mach_exc.defs &>/dev/null; echo $$?)
    131     ifeq ($(MIG_RET),1)
    132         $(error mig failed to generate RPC code)
    133     endif
    134     ARCH_SRCS := $(sort $(wildcard mac/*.c))
    135     # OS Darwin
    136 else
    137     ARCH := POSIX
    138     ARCH_SRCS := $(sort $(wildcard posix/*.c))
    139     ARCH_CFLAGS := -std=c11 -I/usr/local/include \
    140                    -Wextra -Wno-initializer-overrides -Wno-override-init \
    141                    -Wno-unknown-warning-option -Wno-unknown-pragmas \
    142                    -funroll-loops
    143     ARCH_LDFLAGS := -lpthread -L/usr/local/include -lrt
    144     # OS Posix
    145 endif
    146 
    147 COMPILER = $(shell $(CC) -v 2>&1 | \
    148   grep -oE '((gcc|clang) version|LLVM version.*clang)' | \
    149   grep -oE '(clang|gcc)' | head -n1)
    150 ifeq ($(COMPILER),clang)
    151   ARCH_CFLAGS += -Wno-initializer-overrides -Wno-unknown-warning-option
    152   ARCH_CFLAGS += -fblocks
    153   CFLAGS_NOBLOCKS = -fno-blocks
    154 
    155   ifneq ($(OS),Darwin)
    156     ARCH_LDFLAGS += -lBlocksRuntime
    157   endif
    158 endif
    159 
    160 SRCS := $(COMMON_SRCS) $(ARCH_SRCS)
    161 OBJS := $(SRCS:.c=.o)
    162 
    163 LHFUZZ_SRCS := $(wildcard libhfuzz/*.c)
    164 LHFUZZ_OBJS := $(LHFUZZ_SRCS:.c=.o)
    165 LHFUZZ_ARCH := libhfuzz/libhfuzz.a
    166 HFUZZ_INC ?= $(shell pwd)
    167 
    168 LCOMMON_SRCS := $(wildcard libcommon/*.c)
    169 LCOMMON_OBJS := $(LCOMMON_SRCS:.c=.o)
    170 LCOMMON_ARCH := libcommon/libcommon.a
    171 
    172 # Respect external user defines
    173 CFLAGS += $(COMMON_CFLAGS) $(ARCH_CFLAGS) -D_HF_ARCH_${ARCH}
    174 LDFLAGS += $(COMMON_LDFLAGS) $(ARCH_LDFLAGS)
    175 
    176 ifeq ($(DEBUG),true)
    177     CFLAGS += -g -ggdb
    178     LDFLAGS += -g -ggdb
    179 endif
    180 
    181 # Control Android builds
    182 ANDROID_API           ?= android-26
    183 ANDROID_DEBUG_ENABLED ?= false
    184 ANDROID_CLANG         ?= true
    185 ANDROID_APP_ABI       ?= armeabi-v7a
    186 ANDROID_SKIP_CLEAN    ?= false
    187 NDK_BUILD_ARGS :=
    188 
    189 ifeq ($(ANDROID_DEBUG_ENABLED),true)
    190   NDK_BUILD_ARGS += V=1 NDK_DEBUG=1 APP_OPTIM=debug
    191 endif
    192 
    193 # By default ndk-build cleans all project files to ensure that no semi-completed
    194 # builds reach the app package. The following flag disables this check. It's mainly
    195 # purposed to be used with android-all rule where we want recursive invocations
    196 # to keep previous targets' binaries.
    197 ifeq ($(ANDROID_SKIP_CLEAN),true)
    198   NDK_BUILD_ARGS += NDK_APP.local.cleaned_binaries=true
    199 endif
    200 
    201 ifeq ($(ANDROID_CLANG),true)
    202   ANDROID_NDK_TOOLCHAIN_VER := clang
    203   # clang works only against APIs >= 23
    204   ifeq ($(ANDROID_APP_ABI),$(filter $(ANDROID_APP_ABI),armeabi armeabi-v7a))
    205     ANDROID_NDK_TOOLCHAIN ?= arm-linux-androideabi-clang
    206     ANDROID_ARCH_CPU := arm
    207   else ifeq ($(ANDROID_APP_ABI),$(filter $(ANDROID_APP_ABI),x86))
    208     ANDROID_NDK_TOOLCHAIN ?= x86-clang
    209     ANDROID_ARCH_CPU := x86
    210   else ifeq ($(ANDROID_APP_ABI),$(filter $(ANDROID_APP_ABI),arm64-v8a))
    211     ANDROID_NDK_TOOLCHAIN ?= aarch64-linux-android-clang
    212     ANDROID_ARCH_CPU := arm64
    213   else ifeq ($(ANDROID_APP_ABI),$(filter $(ANDROID_APP_ABI),x86_64))
    214     ANDROID_NDK_TOOLCHAIN ?= x86_64-clang
    215     ANDROID_ARCH_CPU := x86_64
    216   else
    217     $(error Unsuported / Unknown APP_API '$(ANDROID_APP_ABI)')
    218   endif
    219 else
    220   ANDROID_NDK_TOOLCHAIN_VER := 4.9
    221   ifeq ($(ANDROID_APP_ABI),$(filter $(ANDROID_APP_ABI),armeabi armeabi-v7a))
    222     ANDROID_NDK_TOOLCHAIN ?= arm-linux-androideabi-4.9
    223     ANDROID_ARCH_CPU := arm
    224   else ifeq ($(ANDROID_APP_ABI),$(filter $(ANDROID_APP_ABI),x86))
    225     ANDROID_NDK_TOOLCHAIN ?= x86-4.9
    226     ANDROID_ARCH_CPU := x86
    227   else ifeq ($(ANDROID_APP_ABI),$(filter $(ANDROID_APP_ABI),arm64-v8a))
    228     ANDROID_NDK_TOOLCHAIN ?= aarch64-linux-android-4.9
    229     ANDROID_ARCH_CPU := arm64
    230   else ifeq ($(ANDROID_APP_ABI),$(filter $(ANDROID_APP_ABI),x86_64))
    231     ANDROID_NDK_TOOLCHAIN ?= x86_64-4.9
    232     ANDROID_ARCH_CPU := x86_64
    233   else
    234     $(error Unsuported / Unknown APP_API '$(ANDROID_APP_ABI)')
    235   endif
    236 endif
    237 
    238 SUBDIR_ROOTS := linux mac posix libhfuzz libcommon
    239 DIRS := . $(shell find $(SUBDIR_ROOTS) -type d)
    240 CLEAN_PATTERNS := *.o *~ core *.a *.dSYM *.la *.so *.dylib
    241 SUBDIR_GARBAGE := $(foreach DIR,$(DIRS),$(addprefix $(DIR)/,$(CLEAN_PATTERNS)))
    242 MAC_GARGBAGE := $(wildcard mac/mach_exc*)
    243 ANDROID_GARBAGE := obj libs
    244 
    245 CLEAN_TARGETS := core Makefile.bak \
    246   $(OBJS) $(BIN) $(HFUZZ_CC_BINS) \
    247   $(LHFUZZ_ARCH) $(LHFUZZ_OBJS) $(LCOMMON_ARCH) $(LCOMMON_OBJS) \
    248   $(MAC_GARGBAGE) $(ANDROID_GARBAGE) $(SUBDIR_GARBAGE)
    249 
    250 all: $(BIN) $(HFUZZ_CC_BINS) $(LHFUZZ_ARCH) $(LCOMMON_ARCH)
    251 
    252 %.o: %.c
    253 	$(CC) -c $(CFLAGS) -o $@ $<
    254 
    255 %.so: %.c
    256 	$(CC) -fPIC -shared $(CFLAGS) -o $@ $<
    257 
    258 %.dylib: %.c
    259 	$(CC) -fPIC -shared $(CFLAGS) -o $@ $<
    260 
    261 $(BIN): $(OBJS) $(LCOMMON_ARCH)
    262 	$(LD) -o $(BIN) $(OBJS) $(LDFLAGS)
    263 
    264 $(HFUZZ_CC_BINS): $(LHFUZZ_ARCH) $(LCOMMON_ARCH) $(HFUZZ_CC_SRCS)
    265 	$(LD) -o $@ $(HFUZZ_CC_SRCS) $(LDFLAGS) $(CFLAGS) -D_HFUZZ_INC_PATH=$(HFUZZ_INC)
    266 
    267 $(LHFUZZ_OBJS): $(LHFUZZ_SRCS)
    268 	$(CC) -c $(CFLAGS) $(LIBS_CFLAGS) $(CFLAGS_NOBLOCKS) -o $@ $(@:.o=.c)
    269 
    270 $(LHFUZZ_ARCH): $(LHFUZZ_OBJS) $(LCOMMON_ARCH)
    271 	$(AR) rcs $(LHFUZZ_ARCH) $(LHFUZZ_OBJS) $(LCOMMON_OBJS)
    272 
    273 $(LCOMMON_OBJS): $(LCOMMON_SRCS)
    274 	$(CC) -c $(CFLAGS) $(LIBS_CFLAGS) $(CFLAGS_NOBLOCKS) -o $@ $(@:.o=.c)
    275 
    276 $(LCOMMON_ARCH): $(LCOMMON_OBJS)
    277 	$(AR) rcs $(LCOMMON_ARCH) $(LCOMMON_OBJS)
    278 
    279 .PHONY: clean
    280 clean:
    281 	$(RM) -r $(CLEAN_TARGETS)
    282 
    283 .PHONY: indent
    284 indent:
    285 	clang-format -style="{BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 100, AlignAfterOpenBracket: false}" -i -sort-includes  *.c *.h */*.c */*.h
    286 
    287 .PHONY: depend
    288 depend:
    289 	makedepend -Y. -Y* -- *.c */*.c
    290 
    291 .PHONY: android
    292 android:
    293 	$(info ***************************************************************)
    294 	$(info *                 Use Android NDK 15 or newer                 *)
    295 	$(info ***************************************************************)
    296 	@ANDROID_API=$(ANDROID_API) third_party/android/scripts/compile-libunwind.sh \
    297 	third_party/android/libunwind $(ANDROID_ARCH_CPU)
    298 
    299 	@ANDROID_API=$(ANDROID_API) third_party/android/scripts/compile-capstone.sh \
    300 	third_party/android/capstone $(ANDROID_ARCH_CPU)
    301 
    302   ifeq ($(ANDROID_CLANG),true)
    303 		@ANDROID_API=$(ANDROID_API) third_party/android/scripts/compile-libBlocksRuntime.sh \
    304 		third_party/android/libBlocksRuntime $(ANDROID_ARCH_CPU)
    305   endif
    306 
    307 	ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./android/Android.mk \
    308     APP_PLATFORM=$(ANDROID_API) APP_ABI=$(ANDROID_APP_ABI) \
    309     NDK_TOOLCHAIN=$(ANDROID_NDK_TOOLCHAIN) NDK_TOOLCHAIN_VERSION=$(ANDROID_NDK_TOOLCHAIN_VER) \
    310     $(NDK_BUILD_ARGS) APP_MODULES='honggfuzz hfuzz'
    311 
    312 # Loop all ABIs and pass-through flags since visibility is lost due to sub-process
    313 .PHONY: android-all
    314 android-all:
    315 	@echo "Cleaning workspace:"
    316 	$(MAKE) clean
    317 	@echo ""
    318 
    319 	@for abi in armeabi armeabi-v7a arm64-v8a x86 x86_64; do \
    320 	  ANDROID_APP_ABI=$$abi ANDROID_SKIP_CLEAN=true ANDROID_CLANG=$(ANDROID_CLANG) \
    321 	  ANDROID_API=$(ANDROID_API) ANDROID_DEBUG_ENABLED=$(ANDROID_DEBUG_ENABLED) \
    322 	  $(MAKE) android || { \
    323 	    echo "Recursive make failed"; exit 1; }; \
    324 	  echo ""; \
    325 	done
    326 
    327 .PHONY: android-clean-deps
    328 android-clean-deps:
    329 	@for cpu in arm arm64 x86 x86_64; do \
    330 	  make -C "third_party/android/capstone" clean; \
    331 	  rm -rf "third_party/android/capstone/$$cpu"; \
    332 	  make -C "third_party/android/libunwind" clean; \
    333 	  rm -rf "third_party/android/libunwind/$$cpu"; \
    334 	  ndk-build -C "third_party/android/libBlocksRuntime" \
    335 	    NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk clean; \
    336 	  rm -rf "third_party/android/libBlocksRuntime/$$cpu"; \
    337 	done
    338 
    339 # DO NOT DELETE
    340 
    341 cmdline.o: cmdline.h honggfuzz.h libcommon/util.h libcommon/common.h
    342 cmdline.o: libcommon/files.h libcommon/common.h libcommon/log.h
    343 display.o: display.h honggfuzz.h libcommon/util.h libcommon/common.h
    344 display.o: libcommon/log.h libcommon/common.h
    345 fuzz.o: fuzz.h honggfuzz.h libcommon/util.h arch.h input.h libcommon/common.h
    346 fuzz.o: libcommon/files.h libcommon/common.h libcommon/log.h mangle.h
    347 fuzz.o: report.h sancov.h sanitizers.h subproc.h
    348 honggfuzz.o: cmdline.h honggfuzz.h libcommon/util.h libcommon/common.h
    349 honggfuzz.o: display.h fuzz.h input.h libcommon/files.h libcommon/common.h
    350 honggfuzz.o: libcommon/log.h
    351 input.o: input.h honggfuzz.h libcommon/util.h libcommon/common.h
    352 input.o: libcommon/files.h libcommon/common.h libcommon/log.h
    353 mangle.o: mangle.h honggfuzz.h libcommon/util.h libcommon/common.h
    354 mangle.o: libcommon/log.h libcommon/common.h
    355 report.o: report.h honggfuzz.h libcommon/util.h libcommon/common.h
    356 report.o: libcommon/log.h libcommon/common.h
    357 sancov.o: sancov.h honggfuzz.h libcommon/util.h libcommon/common.h
    358 sancov.o: libcommon/files.h libcommon/common.h libcommon/log.h sanitizers.h
    359 sanitizers.o: sanitizers.h honggfuzz.h libcommon/util.h libcommon/common.h
    360 sanitizers.o: libcommon/files.h libcommon/common.h libcommon/log.h
    361 subproc.o: subproc.h honggfuzz.h libcommon/util.h arch.h fuzz.h
    362 subproc.o: libcommon/common.h libcommon/files.h libcommon/common.h
    363 subproc.o: libcommon/log.h sanitizers.h
    364 hfuzz_cc/hfuzz-cc.o: honggfuzz.h libcommon/util.h libcommon/common.h
    365 hfuzz_cc/hfuzz-cc.o: libcommon/files.h libcommon/common.h libcommon/log.h
    366 libcommon/files.o: libcommon/files.h libcommon/common.h libcommon/log.h
    367 libcommon/files.o: libcommon/util.h
    368 libcommon/log.o: libcommon/log.h libcommon/common.h libcommon/util.h
    369 libcommon/ns.o: libcommon/ns.h libcommon/common.h libcommon/files.h
    370 libcommon/ns.o: libcommon/log.h
    371 libcommon/util.o: libcommon/util.h libcommon/common.h libcommon/files.h
    372 libcommon/util.o: libcommon/log.h
    373 libhfuzz/instrument.o: libhfuzz/instrument.h honggfuzz.h libcommon/util.h
    374 libhfuzz/instrument.o: libcommon/common.h libcommon/log.h libcommon/common.h
    375 libhfuzz/linux.o: libcommon/common.h libhfuzz/libhfuzz.h libcommon/files.h
    376 libhfuzz/linux.o: libcommon/common.h libcommon/log.h libcommon/ns.h
    377 libhfuzz/memorycmp.o: libhfuzz/instrument.h
    378 libhfuzz/persistent.o: libhfuzz/libhfuzz.h honggfuzz.h libcommon/util.h
    379 libhfuzz/persistent.o: libcommon/common.h libcommon/files.h
    380 libhfuzz/persistent.o: libcommon/common.h libcommon/log.h
    381 linux/arch.o: arch.h honggfuzz.h libcommon/util.h fuzz.h libcommon/common.h
    382 linux/arch.o: libcommon/files.h libcommon/common.h libcommon/log.h
    383 linux/arch.o: libcommon/ns.h linux/perf.h linux/trace.h sancov.h sanitizers.h
    384 linux/arch.o: subproc.h
    385 linux/bfd.o: linux/bfd.h linux/unwind.h honggfuzz.h libcommon/util.h
    386 linux/bfd.o: libcommon/common.h libcommon/files.h libcommon/common.h
    387 linux/bfd.o: libcommon/log.h
    388 linux/perf.o: linux/perf.h honggfuzz.h libcommon/util.h libcommon/common.h
    389 linux/perf.o: libcommon/files.h libcommon/common.h libcommon/log.h linux/pt.h
    390 linux/pt.o: libcommon/common.h libcommon/log.h libcommon/common.h
    391 linux/pt.o: libcommon/util.h linux/pt.h honggfuzz.h
    392 linux/trace.o: linux/trace.h honggfuzz.h libcommon/util.h libcommon/common.h
    393 linux/trace.o: libcommon/files.h libcommon/common.h libcommon/log.h
    394 linux/trace.o: linux/bfd.h linux/unwind.h sancov.h sanitizers.h subproc.h
    395 linux/unwind.o: linux/unwind.h honggfuzz.h libcommon/util.h
    396 linux/unwind.o: libcommon/common.h libcommon/log.h libcommon/common.h
    397 mac/arch.o: arch.h honggfuzz.h libcommon/util.h libcommon/common.h
    398 mac/arch.o: libcommon/files.h libcommon/common.h libcommon/log.h sancov.h
    399 mac/arch.o: subproc.h
    400 posix/arch.o: arch.h honggfuzz.h libcommon/util.h fuzz.h libcommon/common.h
    401 posix/arch.o: libcommon/files.h libcommon/common.h libcommon/log.h sancov.h
    402 posix/arch.o: subproc.h
    403