NAME=aa ; Fs libc-v7.sig ; no old flag 
FILE=bins/elf/analysis/pid_stripped
CMDS=aa ; Fs bins/other/sigs/libc-v7.sig ; pd 10 @ flirt.libc_start_main
EXPECT=<<EOF
Found 1 FLIRT signatures via bins/other/sigs/libc-v7.sig
            ; CALL XREF from entry0 @ 0x401384
/ flirt.libc_start_main (int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg5, int64_t arg6, int64_t arg_c0h);
|           ; var int64_t var_ch @ rsp+0xc
|           ; var int64_t var_10h @ rsp+0x10
|           ; var int64_t var_18h @ rsp+0x18
|           ; var int64_t var_20h @ rsp+0x20
|           ; var int64_t var_68h @ rsp+0x68
|           ; var int64_t var_70h @ rsp+0x70
|           ; arg int64_t arg_c0h @ rsp+0xc0
|           ; arg int64_t arg1 @ rdi
|           ; arg int64_t arg2 @ rsi
|           ; arg int64_t arg3 @ rdx
|           ; arg int64_t arg4 @ rcx
|           ; arg int64_t arg5 @ r8
|           ; arg int64_t arg6 @ r9
|           0x004e2420      push  r14
|           0x004e2422      push  r13
|           0x004e2424      mov   eax, 0
|           0x004e2429      push  r12
|           0x004e242b      push  rbp
|           0x004e242c      mov   r12, r8                              ; arg5
|           0x004e242f      push  rbx
|           0x004e2430      mov   rbp, rcx                             ; arg4
|           0x004e2433      mov   r13, r9                              ; arg6
|           0x004e2436      sub   rsp, 0x90
EOF
RUN

NAME=Fd libc-v7.sig
FILE=bins/elf/analysis/pid_stripped
CMDS=Fd bins/other/sigs/libc-v7.sig
EXPECT=<<EOF
SIG format
Signature:    , 1 modules
Version:      7
Architecture: 0 (x86)
41564155B8........4154554D89C4534889CD4D89CD4881EC900000004885C0:
 0. 16 D2A2 0298 0000:__libc_start_main
EOF
RUN

NAME=af ; af ; Fs libc-v7.sig - rzshell
FILE=bins/elf/analysis/pid_stripped
CMDS=s 0x4e2420 ; af ; s 0x4e25c7 ; af ; Fs bins/other/sigs/libc-v7.sig ; afl ~4e2420
EXPECT=<<EOF
Found 1 FLIRT signatures via bins/other/sigs/libc-v7.sig
0x004e2420   40 664          flirt.libc_start_main
EOF
RUN

NAME=af ; af ; Fs libc-v7.sig
FILE=bins/elf/analysis/pid_stripped
CMDS=<<EOF
s 0x4e2420
af
s 0x4e25c7
af
Fs bins/other/sigs/libc-v7.sig
afl~4e2420
EOF
EXPECT=<<EOF
Found 1 FLIRT signatures via bins/other/sigs/libc-v7.sig
0x004e2420   40 664          flirt.libc_start_main
EOF
RUN

NAME=aa ; Fs libc-v10.sig
FILE=bins/elf/analysis/pid_stripped
CMDS=aa ; Fs bins/other/sigs/libc-v10.sig
EXPECT=<<EOF
Found 1 FLIRT signatures via bins/other/sigs/libc-v10.sig
EOF
RUN

NAME=Fd libc-v10.sig (malformed v10)
FILE=bins/elf/analysis/pid_stripped
CMDS=Fd bins/other/sigs/libc-v10.sig
EXPECT=<<EOF
SIG format
Signature:    FLIRT v10, 1 modules
Version:      10
Architecture: 0 (x86)
41564155B8........4154554D89C4534889CD4D89CD4881EC900000004885C0:
 0. 16 D2A2 0298 0000:__libc_start_main
EOF
RUN

NAME=af ; af ; Fs libc-v10.sig - rzshell
FILE=bins/elf/analysis/pid_stripped
CMDS=s 0x4e2420 ; af ; s 0x4e25c7 ; af ; Fs bins/other/sigs/libc-v10.sig ; afl ~4e2420
EXPECT=<<EOF
Found 1 FLIRT signatures via bins/other/sigs/libc-v10.sig
0x004e2420   40 664          flirt.libc_start_main
EOF
RUN

NAME=af ; af ; Fs libc-v10.sig
FILE=bins/elf/analysis/pid_stripped
CMDS=<<EOF
s 0x4e2420
af
s 0x4e25c7
af
Fs bins/other/sigs/libc-v10.sig
afl~4e2420
EOF
EXPECT=<<EOF
Found 1 FLIRT signatures via bins/other/sigs/libc-v10.sig
0x004e2420   40 664          flirt.libc_start_main
EOF
RUN

NAME=Fs on static glibc
FILE=bins/elf/static-glibc-2.27
CMDS=<<EOF
aac
Fs bins/other/sigs/libc6_2.27-3ubuntu1_amd64.sig~silence
fl @F:flirt
EOF
EXPECT=<<EOF
0x004004d1 86 flirt.malloc_assert.constprop.13
0x00400527 35 flirt.gconv_release_step.part.1
0x0040054a 79 flirt.length_mismatch
0x00400b70 613 flirt.get_common_indeces.constprop.1
0x00400de0 1657 flirt.libc_start_main
0x00401460 385 flirt.libc_check_standard_fds
0x004015f0 581 flirt.libc_setup_tls
0x00401930 339 flirt.assert_fail_base
0x00401a90 80 flirt.assert_fail
0x00401ae0 7517 flirt.dcgettext
0x00403840 672 flirt.nl_find_domain
0x00403ae0 5366 flirt.nl_load_domain
0x004054e0 601 flirt.cxa_finalize
0x004056b0 1488 flirt.nl_make_l10nflist
0x00405c80 286 flirt.nl_normalize_codeset
0x00405da0 574 flirt.nl_explode_name
0x00405fe0 28945 flirt.gettext_free_exp
0x0040d100 2128 flirt.gettextparse
0x0040d950 256 flirt.gettext_extract_plural
0x0040da50 60 flirt.hash_string
0x0040da90 7 flirt.umount
0x0040dbb0 561 flirt.abort
0x0040ddf0 1092 flirt.msort_with_tmp.part.0
0x0040e6c0 1160 flirt.qsort
0x0040e6d0 212 flirt.getenv
0x0040e7b0 636 flirt.run_exit_handlers
0x0040ea30 32 flirt.exit
0x0040ea50 288 flirt.new_exitfn
0x0040ec70 250 flirt.cxa_atexit
0x0040f430 542 flirt.correctly_grouped_prefixmb
0x0040f650 192 flirt.asprintf
0x0040f710 368 flirt.locked_vfxprintf
0x0040f880 784 flirt.fxprintf
0x0040fe20 33103 flirt.IO_fflush
0x00410210 429 flirt.IO_puts
0x00410410 1898 flirt.adjust_wide_data
0x004115d0 1182 flirt.IO_wdo_write
0x00411f00 400 flirt.IO_vasprintf
0x00412090 374 flirt.libc_message.constprop.0
0x00412210 743 flirt.libc_message
0x00412500 32 flirt.libc_fatal
0x00412520 32 flirt.IO_vtable_check
0x00412540 164 flirt.fgets_unlocked
0x00415430 461 flirt.save_for_backup
0x00415b80 720 flirt.IO_un_link
0x00415e50 661 flirt.IO_link_in
0x004160f0 43 flirt.IO_switch_to_main_get_area
0x00416150 151 flirt.IO_switch_to_get_mode
0x004161f0 74 flirt.IO_free_backup_area
0x00416240 112 flirt.overflow
0x004162b0 490 flirt.underflow
0x004164a0 514 flirt.uflow
0x004166b0 93 flirt.IO_setb
0x00416710 175 flirt.IO_doallocbuf
0x00416830 258 flirt.IO_default_xsputn
0x00416c30 292 flirt.IO_default_setbuf
0x004170c0 327 flirt.IO_no_init
0x00417550 127 flirt.IO_sputbackc
0x00417650 64 flirt.IO_adjust_column
0x00418090 106 flirt.IO_unsave_markers
0x004234b0 65 flirt.strdup
0x0042b6b0 1022 flirt.memcmp_sse2
0x00447cf0 1568 flirt.handle_amd
0x00448310 37 flirt.cache_sysconf
0x00448380 9 flirt.wmemcpy
0x004491d0 80 flirt.get_child_max
0x004492c0 288 flirt.libc_open64
0x004493e0 160 flirt.open64_nocancel
0x00449480 153 flirt.libc_read
0x00449520 36 flirt.read_nocancel
0x00449550 153 flirt.libc_write
0x004495f0 44 flirt.write_nocancel
0x00449650 464 flirt.libc_fcntl
0x00449820 125 flirt.close
0x004498a0 42 flirt.close_nocancel
0x004498d0 1811 flirt.getcwd
0x0044a030 142 flirt.sbrk
0x0044a0c0 64 flirt.getpagesize
0x0044a100 80 flirt.getdtablesize
0x0044a2c0 327 flirt.trecurse
0x0044a410 982 flirt.tsearch
0x0044a7f0 87 flirt.tfind
0x0044ae00 175 flirt.twalk
0x0044aeb0 435 flirt.tdestroy
0x0044b070 432 flirt.next_line
0x0044b220 1168 flirt.get_nprocs
0x0044b6b0 224 flirt.get_nprocs_conf
0x0044b790 144 flirt.get_phys_pages
0x0044b820 144 flirt.get_avphys_pages
0x0044b8b0 17 flirt.getclktck
0x0044b8d0 82 flirt.init_misc
0x0044b990 64 flirt.libc_alloca_cutoff
0x0044b9d0 40 flirt.lll_lock_wait_private
0x0044ba00 28 flirt.lll_unlock_wake_private
0x0044ba20 86 flirt.libc_enable_asynccancel
0x0044ba80 89 flirt.libc_disable_asynccancel
0x0044baf0 32 flirt.stack_chk_fail
0x0044bb10 97 flirt.fortify_fail_abort
0x0044bb80 32 flirt.fortify_fail
0x0044bc30 114 flirt.tunable_set_val
0x0044bcb0 1533 flirt.tunables_init
0x0044c2b0 90 flirt.tunable_get_val
0x0044c310 1038 flirt.dl_aux_init
0x0044c720 2296 flirt.dl_non_dynamic_init
0x0044d020 69 flirt.libc_init_secure
0x0044de00 1296 flirt.gconv_open
0x0044e310 528 flirt.gconv
0x0044e520 89 flirt.gconv_close
0x0044f6c0 1168 flirt.insert_module
0x0044fb50 1008 flirt.gconv_get_path
0x0044ff40 1504 flirt.gconv_read_conf
0x00450520 602 flirt.gconv_get_builtin_trans
0x00458320 18 flirt.release_libc_mem
0x004585d0 692 flirt.new_composite_name
0x00459170 2074 flirt.nl_find_locale
0x00459990 576 flirt.nl_intern_locale_data
0x00459bd0 1488 flirt.nl_load_locale
0x0045a1a0 94 flirt.nl_unload_locale
0x0045a200 1312 flirt.nl_load_locale_from_archive
0x0045a870 80 flirt.setfpucw
0x0045a8c0 132 flirt.sigsetjmp
0x0045abc0 6232 flirt.quicksort
0x0045c620 19 flirt.libc_secure_getenv
0x0045ce30 10704 flirt.group_number
0x0045f800 13172 flirt.IO_vfprintf_internal
0x00462b80 976 flirt.hack_digit
0x00465a50 11033 flirt.printf_fp
0x00468470 192 flirt.asprintf_1
0x00468530 11072 flirt.i18n_number_rewrite
0x0046b070 13435 flirt.IO_vfwprintf
0x0046e540 1929 flirt.parse_one_specmb
0x0046ecd0 2211 flirt.parse_one_specwc
0x0046f6d0 314 flirt.IO_fputs
0x0046f8e0 413 flirt.IO_fwrite
0x0046fae0 727 flirt.IO_getdelim
0x0046fe10 349 flirt.IO_getline
0x004700f0 320 flirt.IO_padn
0x00470230 320 flirt.IO_wpadn
0x00470370 637 flirt.save_for_wbackup.isra.0
0x004706b0 109 flirt.IO_wsetb
0x004709d0 117 flirt.woverflow
0x00470e40 685 flirt.IO_wdefault_xsputn
0x00471530 155 flirt.IO_wdoallocbuf
0x00471640 114 flirt.IO_switch_to_wget_mode
0x004716c0 99 flirt.IO_free_wbackup_area
0x004720c0 165 flirt.libc_scratch_buffer_grow_preserve
0x00472170 184 flirt.libc_scratch_buffer_set_array_size
0x00472230 73 flirt.strndup
0x00472280 451 flirt.strerror_r
0x00472480 102 flirt.strtok_r
0x00472cc0 218 flirt.argz_create_sep
0x00472da0 183 flirt.argz_add_sep
0x00473890 9 flirt.wmemcpy_2
0x004738a0 9 flirt.wmemcpy_1
0x00473ab0 480 flirt.wcrtomb
0x00473c90 806 flirt.wcsrtombs
0x00473fc0 32 flirt.wcschrnul
0x00474a40 8 flirt.time
0x00474f90 139 flirt.rewinddir
0x00475020 141 flirt.getdents
0x004750b0 192 flirt.fdopendir
0x004751a0 8 flirt.getuid
0x004751b0 8 flirt.geteuid
0x004751c0 8 flirt.getgid
0x004751d0 8 flirt.getegid
0x00475450 256 flirt.isatty
0x00475640 63 flirt.towctrans
0x00475680 496 flirt.readonly_area
0x00475870 8192 flirt.is_trusted_path_normalize
0x00477870 686 flirt.dl_dst_count
0x00477b20 2717 flirt.dl_dst_substitute
0x004785c0 735 flirt.dl_init_paths
0x004788a0 4202 flirt.dl_map_object
0x00479910 3696 flirt.do_lookup_x
0x0047a780 2747 flirt.dl_lookup_symbol_x
0x0047b240 176 flirt.dl_setup_hash
0x0047b2f0 181 flirt.dl_add_to_namespace_list
0x0047b3b0 783 flirt.dl_new_object
0x0047d260 2000 flirt.dl_important_hwcaps
0x0047da30 1446 flirt.dl_debug_vdprintf
0x0047dfe0 138 flirt.dl_sysdep_read_whole_file
0x0047e070 162 flirt.dl_debug_printf
0x0047e120 162 flirt.dl_debug_printf_c
0x0047e1d0 148 flirt.dl_dprintf
0x0047e270 102 flirt.dl_name_match_p
0x0047e2e0 117 flirt.dl_higher_prime_number
0x0047e360 340 flirt.dl_strtoul
0x0047eed0 354 flirt.dl_next_tls_modid
0x0047f060 202 flirt.dl_allocate_tls_storage
0x0047f540 128 flirt.dl_tls_get_addr_soft
0x0047f5c0 240 flirt.dl_add_to_slotinfo
0x0047f6b0 416 flirt.dl_get_origin
0x0047f850 197 flirt.dl_scope_free
0x00480690 48 flirt.length_mismatch_1
0x004806c0 210 flirt.dl_exception_create
0x004807a0 729 flirt.dl_exception_create_format
0x00480a80 38 flirt.dl_exception_free
0x00480ab0 236 flirt.dl_cache_libcmp
0x00480ba0 2862 flirt.dl_load_cache_lookup
0x004816d0 56 flirt.dl_unload_cache
0x00482060 195 flirt.fatal_error
0x00482130 80 flirt.dl_signal_exception
0x00482180 80 flirt.dl_signal_error
0x004821d0 208 flirt.dl_catch_exception
0x004822a0 112 flirt.dl_catch_error
0x00482310 162 flirt.longjmp_chk
0x00482370 59 flirt.mpn_cmp
0x004823b0 1466 flirt.mpn_divrem
0x00482970 259 flirt.mpn_lshift
0x00482a80 259 flirt.mpn_rshift
0x00482b90 1072 flirt.mpn_mul
0x00482fc0 281 flirt.mpn_mul_1
0x004830e0 438 flirt.mpn_impn_mul_n_basecase
0x004832a0 1378 flirt.mpn_impn_mul_n
0x00483810 431 flirt.mpn_impn_sqr_n_basecase
0x004839c0 1262 flirt.mpn_impn_sqr_n
0x00483f50 173 flirt.mpn_sub_n_1
0x00484000 235 flirt.mpn_addmul_1
0x004840f0 144 flirt.mpn_extract_double
0x00484180 185 flirt.mpn_extract_long_double
0x00484240 286 flirt.mpn_extract_float128
0x00484360 203 flirt.itoa_word
0x00484c90 138 flirt.strerror
0x00484d40 77 flirt.strsep
0x00484f50 8 flirt.getpid
0x00485160 416 flirt.dl_fixup
0x00485300 544 flirt.dl_profile_fixup
0x00485520 2 flirt.dl_call_pltexit
0x00485530 652 flirt.add_to_global
0x004857c0 144 flirt.dl_find_dso_for_object
0x00485850 528 flirt.dl_open
0x00485a60 298 flirt.dl_show_scope
0x004863b0 4000 flirt.remove_slotinfo
0x00487350 121 flirt.dl_close_worker
0x004874d0 751 flirt.dl_sort_maps
0x004877c0 416 flirt.dl_tlsdesc_resolve_rela_fixup
0x00487960 101 flirt.dl_tlsdesc_resolve_hold_fixup
0x004879d0 25 flirt.dl_unmap
0x00487cf0 83 flirt.dl_addr_inside_object
0x00487d50 173 flirt.mpn_sub_n
0x00487e00 235 flirt.mpn_addmul_1_1
0x004895d0 877 flirt.dl_init
0x00489940 1806 flirt.dl_check_map_versions
0x0048fa10 478 flirt.dl_iterate_phdr
0x0048fbf0 73 flirt.nl_finddomain_subfreeres
0x0048fc40 247 flirt.nl_unload_domain
0x00490bb0 218 flirt.free_slotinfo
EOF
RUN

NAME=FLIRT apply pat signature
FILE=bins/flirt/elf-x86/curl-example
CMDS=<<EOF
e flirt.sigdb.load.system=false
e flirt.sigdb.load.home=false
aaa
Fs bins/flirt/elf-x86/libcurl.a.pat
EOF
EXPECT=<<EOF
Found 100 FLIRT signatures via bins/flirt/elf-x86/libcurl.a.pat
EOF
RUN

NAME=FLIRT apply pat signature
FILE=bins/flirt/elf-x86/curl-example
CMDS=<<EOF
e flirt.sigdb.load.system=false
e flirt.sigdb.load.home=false
aaa
Fs bins/flirt/elf-x86/libcurl.a.sig
EOF
EXPECT=<<EOF
Found 205 FLIRT signatures via bins/flirt/elf-x86/libcurl.a.sig
EOF
RUN

NAME=FLIRT dump pat signature
FILE==
CMDS=<<EOF
Fd bins/flirt/elf-x86/libcurl.a.pat~?
EOF
EXPECT=<<EOF
209
EOF
RUN

NAME=FLIRT verify correctness of main (PAT)
FILE=bins/flirt/elf-x86/test.stripped
CMDS=<<EOF
e flirt.sigdb.load.system=false
e flirt.sigdb.load.home=false
aaa
Fs bins/flirt/elf-x86/test.symbols.pat~silence
pdf @ main
EOF
EXPECT=<<EOF
            ; DATA XREF from flirt.entry0 @ 0x401791
/ int main (int argc, char **argv, char **envp);
|           ; var int64_t var_18h @ rbp-0x18
|           ; var int64_t var_dh @ rbp-0xd
|           ; var int64_t var_8h @ rbp-0x8
|           0x00401895      push  rbp
|           0x00401896      mov   rbp, rsp
|           0x00401899      sub   rsp, 0x20
|           0x0040189d      mov   rax, qword fs:[0x28]
|           0x004018a6      mov   qword [var_8h], rax
|           0x004018aa      xor   eax, eax
|           0x004018ac      lea   rax, [0x00482004]                    ; "r"
|           0x004018b3      mov   rsi, rax                             ; int64_t arg2
|           0x004018b6      lea   rax, str.test                        ; 0x482006 ; "test"
|           0x004018bd      mov   rdi, rax                             ; int64_t arg1
|           0x004018c0      call  flirt.IO_fopen64
|           0x004018c5      mov   qword [var_18h], rax
|           0x004018c9      mov   rax, qword [var_18h]
|           0x004018cd      mov   edx, 1                               ; int64_t arg3
|           0x004018d2      mov   esi, 5                               ; int64_t arg2
|           0x004018d7      mov   rdi, rax                             ; uint64_t arg1
|           0x004018da      call  flirt.fseek
|           0x004018df      mov   rdx, qword [var_18h]
|           0x004018e3      lea   rax, [var_dh]
|           0x004018e7      mov   rcx, rdx                             ; int64_t arg4
|           0x004018ea      mov   edx, 1                               ; int64_t arg3
|           0x004018ef      mov   esi, 5                               ; int64_t arg2
|           0x004018f4      mov   rdi, rax                             ; int64_t arg1
|           0x004018f7      call  flirt.IO_fread
|           0x004018fc      mov   rax, qword [var_18h]
|           0x00401900      mov   rdi, rax                             ; int64_t arg1
|           0x00401903      call  flirt.IO_fclose
|           0x00401908      mov   eax, 0
|           0x0040190d      mov   rdx, qword [var_8h]
|           0x00401911      sub   rdx, qword fs:[0x28]
|       ,=< 0x0040191a      je    0x401921
|       |   0x0040191c      call  flirt.chk_fail
|       `-> 0x00401921      leave
\           0x00401922      ret
EOF
RUN


NAME=FLIRT verify correctness of main (SIG)
FILE=bins/flirt/elf-x86/test.stripped
CMDS=<<EOF
e flirt.sigdb.load.system=false
e flirt.sigdb.load.home=false
aaa
Fs bins/flirt/elf-x86/test.symbols.sig~silence
pdf @ main
EOF
EXPECT=<<EOF
            ; DATA XREF from flirt.entry0 @ 0x401791
/ int main (int argc, char **argv, char **envp);
|           ; var int64_t var_18h @ rbp-0x18
|           ; var int64_t var_dh @ rbp-0xd
|           ; var int64_t var_8h @ rbp-0x8
|           0x00401895      push  rbp
|           0x00401896      mov   rbp, rsp
|           0x00401899      sub   rsp, 0x20
|           0x0040189d      mov   rax, qword fs:[0x28]
|           0x004018a6      mov   qword [var_8h], rax
|           0x004018aa      xor   eax, eax
|           0x004018ac      lea   rax, [0x00482004]                    ; "r"
|           0x004018b3      mov   rsi, rax                             ; int64_t arg2
|           0x004018b6      lea   rax, str.test                        ; 0x482006 ; "test"
|           0x004018bd      mov   rdi, rax                             ; int64_t arg1
|           0x004018c0      call  flirt.IO_fopen64
|           0x004018c5      mov   qword [var_18h], rax
|           0x004018c9      mov   rax, qword [var_18h]
|           0x004018cd      mov   edx, 1                               ; int64_t arg3
|           0x004018d2      mov   esi, 5                               ; int64_t arg2
|           0x004018d7      mov   rdi, rax                             ; uint64_t arg1
|           0x004018da      call  flirt.fseek
|           0x004018df      mov   rdx, qword [var_18h]
|           0x004018e3      lea   rax, [var_dh]
|           0x004018e7      mov   rcx, rdx                             ; int64_t arg4
|           0x004018ea      mov   edx, 1                               ; int64_t arg3
|           0x004018ef      mov   esi, 5                               ; int64_t arg2
|           0x004018f4      mov   rdi, rax                             ; int64_t arg1
|           0x004018f7      call  flirt.IO_fread
|           0x004018fc      mov   rax, qword [var_18h]
|           0x00401900      mov   rdi, rax                             ; int64_t arg1
|           0x00401903      call  flirt.IO_fclose
|           0x00401908      mov   eax, 0
|           0x0040190d      mov   rdx, qword [var_8h]
|           0x00401911      sub   rdx, qword fs:[0x28]
|       ,=< 0x0040191a      je    0x401921
|       |   0x0040191c      call  flirt.chk_fail
|       `-> 0x00401921      leave
\           0x00401922      ret
EOF
RUN

NAME=Print SigDB contents
FILE==
CMDS=<<EOF
e flirt.sigdb.load.system=false
e flirt.sigdb.load.home=false
e flirt.sigdb.path=bins/sigdb/fake-db
Fl
EOF
EXPECT=<<EOF
bin arch bits name          modules details                    
---------------------------------------------------------------
elf x86  64   match.sig     1       Built with rizin 0.4.0-git
elf x86  64   not-match.pat 1       
EOF
RUN

NAME=Do analysis and apply SigDB automatically
FILE=bins/sigdb/elf-x86-64-static-libc
CMDS=<<EOF
e flirt.sigdb.load.system=false
e flirt.sigdb.load.home=false
e flirt.sigdb.path=bins/sigdb/fake-db
aaa
afl~printf
EOF
EXPECT=<<EOF
0x00409c70   18 516  -> 514  flirt.printf
0x0046fc50    7 516  -> 342  flirt.printf_1
EOF
RUN

NAME=Do analysis and apply SigDB manually
FILE=bins/sigdb/elf-x86-64-static-libc
CMDS=<<EOF
e flirt.sigdb.load.system=false
e flirt.sigdb.load.home=false
aaa
e flirt.sigdb.path=bins/sigdb/fake-db
Fa match.sig
afl~printf
EOF
EXPECT=<<EOF
Applying elf/x86/64/match.sig signature file
0x00409c70   18 516  -> 514  flirt.printf
0x0046fc50    7 516  -> 342  flirt.printf_1
EOF
RUN
