import "../../../just/libafl-qemu.just" import "../dummy_libc/Justfile" import "../fuzzer_name.just" GASAN_SOURCE_DIR := source_directory() [unix] compile_gasan: #!/bin/sh . {{ DOTENV }} cargo \ build \ --package gasan \ --target ${CROSS_TARGET} \ --profile {{ PROFILE }} \ --target-dir {{ TARGET_DIR }} [unix] fix_gasan: #!/bin/sh . {{ DOTENV }} cargo \ fix \ --package gasan \ --target ${CROSS_TARGET} \ --profile {{ PROFILE }} \ --target-dir {{ TARGET_DIR }} \ --features test \ --allow-dirty [unix] rel_gasan: compile_gasan build_dummy #!/bin/sh . {{ DOTENV }} ${CROSS_CC} \ ${LIBRASAN_CFLAGS} \ -r \ -nodefaultlibs \ -nostartfiles \ -nostdlib \ -g \ -u patch_aligned_alloc \ -u patch_atoi \ -u patch_atol \ -u patch_atoll \ -u patch_calloc \ -u patch_free \ -u patch_malloc \ -u patch_malloc_usable_size \ -u patch_memalign \ -u patch_memset \ -u patch_mmap \ -u patch_munmap \ -u patch_posix_memalign \ -u patch_pvalloc \ -u patch_read \ -u patch_realloc \ -u patch_reallocarray \ -u patch_valloc \ -u patch_write \ -o {{ TARGET_DIR }}/$CROSS_TARGET/{{ PROFILE_DIR }}/libgasan.rel \ {{ TARGET_DIR }}/$CROSS_TARGET/{{ PROFILE_DIR }}/libgasan.a \ [unix] rename_gasan: rel_gasan #!/bin/sh . {{ DOTENV }} ${CROSS_OBJCOPY} \ --redefine-syms={{ GASAN_SOURCE_DIR }}/rename_real.syms \ --redefine-syms={{ GASAN_SOURCE_DIR }}/rename_patch.syms \ {{ TARGET_DIR }}/$CROSS_TARGET/{{ PROFILE_DIR }}/libgasan.rel \ {{ TARGET_DIR }}/$CROSS_TARGET/{{ PROFILE_DIR }}/libgasan.renamed [unix] link_gasan: rename_gasan #!/bin/sh . {{ DOTENV }} ${CROSS_CC} \ -shared \ -nodefaultlibs \ -nostartfiles \ -nostdlib \ -g \ -u aligned_alloc \ -u atoi \ -u atol \ -u atoll \ -u calloc \ -u free \ -u malloc \ -u malloc_usable_size \ -u memalign \ -u memset \ -u mmap \ -u munmap \ -u posix_memalign \ -u pvalloc \ -u read \ -u realloc \ -u reallocarray \ -u valloc \ -u write \ -Wl,--version-script={{ GASAN_SOURCE_DIR }}/gasan.map \ -Wl,--gc-sections \ -Wl,--no-undefined \ -o {{ TARGET_DIR }}/$CROSS_TARGET/{{ PROFILE_DIR }}/_libgasan.so \ {{ TARGET_DIR }}/$CROSS_TARGET/{{ PROFILE_DIR }}/libgasan.renamed \ -L {{ TARGET_DIR }}/$CROSS_TARGET/{{ PROFILE_DIR }} \ "-ldummy_libc" \ strip_gasan: link_gasan #!/bin/sh . {{ DOTENV }} ${CROSS_STRIP} \ --strip-unneeded \ -o {{ TARGET_DIR }}/$CROSS_TARGET/{{ PROFILE_DIR }}/libgasan.so \ {{ TARGET_DIR }}/$CROSS_TARGET/{{ PROFILE_DIR }}/_libgasan.so [unix] build_gasan: strip_gasan