1NAME=zs unset
2FILE=-
3CMDS=<<EOF
4zs test1
5za foo1 b aabbccdd
6za bar1 b aabbccdd
7zs test2
8za foo2 b aabbccdd
9za bar2 b aabbccdd
10zs test3
11za foo3 b aabbccdd
12za bar3 b aabbccdd
13zs *
14zs-test2
15z~foo1
16z~bar1
17z~foo2
18z~bar2
19z~foo3
20z~bar3
21EOF
22EXPECT=<<EOF
23(test1) foo1:
24(test1) bar1:
25foo2:
26bar2:
27(test3) foo3:
28(test3) bar3:
29EOF
30RUN
31
32NAME=zsr newname
33FILE=-
34CMDS=<<EOF
35zs test1
36za foo1 b aabbccdd
37za bar1 b aabbccdd
38zs test2
39za foo2 b aabbccdd
40za bar2 b aabbccdd
41zs test3
42za foo3 b aabbccdd
43za bar3 b aabbccdd
44zs test2
45zsr newtest2
46zs *
47z~foo1
48z~bar1
49z~foo2
50z~bar2
51z~foo3
52z~bar3
53EOF
54EXPECT=<<EOF
55(test1) foo1:
56(test1) bar1:
57(newtest2) foo2:
58(newtest2) bar2:
59(test3) foo3:
60(test3) bar3:
61EOF
62RUN
63
64NAME=zsr newname (dupplicated name)
65FILE=-
66CMDS=<<EOF
67zs test1
68za foo1 b aabbccdd
69za bar1 b aabbccdd
70zs test2
71za foo2 b aabbccdd
72za bar2 b aabbccdd
73zs test3
74za foo3 b aabbccdd
75za bar3 b aabbccdd
76zs test2
77zsr test1
78zs *
79z~foo1
80z~bar1
81z~foo2
82z~bar2
83z~foo3
84z~bar3
85EOF
86EXPECT=<<EOF
87(test1) foo1:
88(test1) bar1:
89(test2) foo2:
90(test2) bar2:
91(test3) foo3:
92(test3) bar3:
93EOF
94RUN
95
96NAME=zsr newname (root zs)
97FILE=-
98CMDS=<<EOF
99zs test1
100za foo1 b aabbccdd
101za bar1 b aabbccdd
102zs test2
103za foo2 b aabbccdd
104za bar2 b aabbccdd
105zs test3
106za foo3 b aabbccdd
107za bar3 b aabbccdd
108zs *
109zsr newtest
110z~foo1
111z~bar1
112z~foo2
113z~bar2
114z~foo3
115z~bar3
116EOF
117EXPECT=<<EOF
118(test1) foo1:
119(test1) bar1:
120(test2) foo2:
121(test2) bar2:
122(test3) foo3:
123(test3) bar3:
124EOF
125RUN
126
127NAME=z-
128FILE=-
129CMDS=<<EOF
130zs test
131za foo b aa
132zs test2
133za foo b aa
134za bar b bb
135zs *
136z-foo
137z
138zs test2
139z-foo
140z
141zs *
142z
143zs-test
144z
145z-foo
146z
147EOF
148EXPECT=<<EOF
149(test2) bar:
150  bytes: bb
151  mask: ff
152(test) foo:
153  bytes: aa
154  mask: ff
155(test2) foo:
156  bytes: aa
157  mask: ff
158bar:
159  bytes: bb
160  mask: ff
161(test2) bar:
162  bytes: bb
163  mask: ff
164(test) foo:
165  bytes: aa
166  mask: ff
167(test2) bar:
168  bytes: bb
169  mask: ff
170foo:
171  bytes: aa
172  mask: ff
173(test2) bar:
174  bytes: bb
175  mask: ff
176EOF
177RUN
178
179NAME=z-*
180FILE=-
181CMDS=<<EOF
182zs test1
183za foo1 b aabbccdd
184za bar1 b aabbccdd
185zs test2
186za foo2 b aabbccdd
187za bar2 b aabbccdd
188zs test3
189za foo3 b aabbccdd
190za bar3 b aabbccdd
191zs test2
192z-*
193zs *
194z~foo2
195z~bar2
196EOF
197EXPECT=<<EOF
198EOF
199RUN
200
201NAME=za b and binmasks
202FILE=-
203CMDS=<<EOF
204za test b .abbc.dd..
205z
206EOF
207EXPECT=<<EOF
208test:
209  bytes: 0abbc0dd00
210  mask: 0ffff0ff00
211EOF
212RUN
213
214NAME=za b zero mask
215FILE=-
216CMDS=<<EOF
217za test b ....
218z
219EOF
220EXPECT=<<EOF
221EOF
222RUN
223
224NAME=za g
225FILE=-
226CMDS=<<EOF
227za test g cc=1 nbbs=2 edges=3 ebbs=4
228z
229EOF
230EXPECT=<<EOF
231test:
232  graph: cc=1 nbbs=2 edges=3 ebbs=4 bbsum=0
233EOF
234RUN
235
236NAME=za o
237FILE=-
238CMDS=<<EOF
239za test o 0x8048123
240z
241EOF
242EXPECT=<<EOF
243test:
244  addr: 0x08048123
245EOF
246RUN
247
248NAME=za r
249FILE=-
250CMDS=<<EOF
251za test r sym1 sym3 sym2
252z
253EOF
254EXPECT=<<EOF
255test:
256  refs: sym1, sym3, sym2
257EOF
258RUN
259
260NAME=za b + z/
261FILE=bins/elf/analysis/go_stripped
262CMDS=<<EOF
263za sym.fmt.Println b 653b2530000000724b53b834e7150883ec188b15401c22088d4c24048b5c242083ec08ff742434ff742434ff742434525051e829ffffff8b44242089038b4424248943048b44242889430889d883c4345bc204006a106a1ce85e350700c20400
264z/
265?v sign.bytes.sym.fmt.Println_0
266EOF
267EXPECT=<<EOF
2680x805b030
269EOF
270RUN
271
272NAME=za a + z/
273FILE=bins/elf/analysis/go_stripped
274CMDS=<<EOF
275za sym.fmt.Println a 653b2530000000724b53b834e7150883ec188b15401c22088d4c24048b5c242083ec08ff742434ff742434ff742434525051e829ffffff8b44242089038b4424248943048b44242889430889d883c4345bc204006a106a1ce85e350700c20400
276z/
277?v sign.bytes.sym.fmt.Println_1
278EOF
279EXPECT=<<EOF
2800x805b030
281EOF
282RUN
283
284NAME=za r + z/
285FILE=bins/elf/analysis/zigs
286CMDS=<<EOF
287aaa
288za main r sym.print
289z/
290?v sign.refs.main_0
291EOF
292EXPECT=<<EOF
2930x40055b
294EOF
295RUN
296
297NAME=z/ with search.in
298FILE=bins/elf/analysis/go_stripped
299CMDS=<<EOF
300za date_string b 323030362d30312d30322031353a30343a30352e393939393939393939202d30373030204d535400
301za sym.fmt.Println b 653b2530000000724b53b834e7150883ec188b15401c22088d4c24048b5c242083ec08ff742434ff742434ff742434525051e829ffffff8b44242089038b4424248943048b44242889430889d883c4345bc204006a106a1ce85e350700c20400
302fs sign
303f~?
304e io.va=0
305e search.in=file
306z/
307e io.va=1
308?v sign.bytes.date_string_0
309?v sign.bytes.sym.fmt.Println_0
310f-*
311f~?
312e search.in=bin.sections.x
313z/
314?v sign.bytes.elf_header_0
315?v sign.bytes.sym.fmt.Println_0
316EOF
317EXPECT=<<EOF
3180
3190x15d898
3200x13030
3210
3220x0
3230x805b030
324EOF
325RUN
326
327NAME=z/ with search.align
328FILE=malloc://1024
329CMDS=<<EOF
330wx 00112233445566778899aabbccddeeff
331za foo b 1122
332e zign.minsz = 0
333e zign.mincc = 0
334fs *
335e search.align=2
336z/
337f~?
338e search.align=1
339z/
340f~?
341EOF
342EXPECT=<<EOF
3430
3441
345EOF
346RUN
347
348NAME=z/ with search.{from,to}
349FILE=malloc://1024
350CMDS=<<EOF
351wx 00112233445566778899aabbccddeeff
352za a b 11223344
353za b b bbccddee
354e zign.minsz = 0
355e zign.mincc = 0
356fs *
357f~?
358e search.in=raw
359e search.from=0x0
360e search.to=0x8
361z/
362?v sign.bytes.a_0
363?v sign.bytes.b_0
364f-*
365f~?
366e search.from=0x8
367e search.to=0xf
368z/
369?v sign.bytes.a_0
370?v sign.bytes.b_0
371EOF
372EXPECT=<<EOF
3730
3740x1
3750x0
3760
3770x0
3780xb
379EOF
380RUN
381
382NAME=z/ with zign.minsz
383FILE=malloc://1024
384CMDS=<<EOF
385wx 00112233445566778899aabbccddeeff
386za foo b 11223344
387e zign.minsz = 0
388fs *
389z/
390f~?
391f-*
392e zign.minsz = 5
393z/
394f~?
395EOF
396EXPECT=<<EOF
3971
3980
399EOF
400RUN
401
402NAME=za b ; z/ ; aa ; axt
403FILE=bins/elf/analysis/zigs_stripped
404CMDS=<<EOF
405za sym.print b 5548....48......48......48......48....bf........b8........e8........90c9c3
406z/
407e anal.hasnext=0
408aa
409axt 0x400536
410EOF
411EXPECT=<<EOF
412main 0x40056f [CALL] call sign.bytes.sym.print_0
413EOF
414RUN
415
416NAME=zaf
417FILE=bins/elf/analysis/zigs
418CMDS=<<EOF
419aaa
420e zign.mincc = 0
421zs zigs
422zaf main
423z
424EOF
425EXPECT=<<EOF
426zigs:main:
427  bytes: 554889e54883ec10897dfc488975f0bf13064000e8c2ffffffb800000000c9c3
428  mask: ffffffffffffffffffffffffffffffff00000000ff00000000ffffffffffffff
429  graph: cc=1 nbbs=1 edges=0 ebbs=1 bbsum=32
430  addr: 0x0040055b
431  realname: main
432  refs: sym.print
433  vars: b-12, b-24, r82, r78
434  types: func.main.ret=int, func.main.args=2, func.main.arg.0="int,argc", func.main.arg.1="char **,argv"
435  bbhash: 9890426532f35eb3a80fe773d887714fe27d13ea125ad7e90beab16a51b74496
436EOF
437RUN
438
439NAME=zaf at offset
440FILE=bins/elf/analysis/zigs
441CMDS=<<EOF
442aaa
443e zign.mincc = 0
444zs zigs
445zaf @ main
446z
447EOF
448EXPECT=<<EOF
449zigs:main:
450  bytes: 554889e54883ec10897dfc488975f0bf13064000e8c2ffffffb800000000c9c3
451  mask: ffffffffffffffffffffffffffffffff00000000ff00000000ffffffffffffff
452  graph: cc=1 nbbs=1 edges=0 ebbs=1 bbsum=32
453  addr: 0x0040055b
454  realname: main
455  refs: sym.print
456  vars: b-12, b-24, r82, r78
457  types: func.main.ret=int, func.main.args=2, func.main.arg.0="int,argc", func.main.arg.1="char **,argv"
458  bbhash: 9890426532f35eb3a80fe773d887714fe27d13ea125ad7e90beab16a51b74496
459EOF
460RUN
461
462NAME=zaf (root zignspace)
463FILE=bins/elf/analysis/zigs
464CMDS=<<EOF
465aaa
466e zign.mincc = 0
467zaf main
468z
469EOF
470EXPECT=<<EOF
471main:
472  bytes: 554889e54883ec10897dfc488975f0bf13064000e8c2ffffffb800000000c9c3
473  mask: ffffffffffffffffffffffffffffffff00000000ff00000000ffffffffffffff
474  graph: cc=1 nbbs=1 edges=0 ebbs=1 bbsum=32
475  addr: 0x0040055b
476  refs: sym.print
477  vars: b-12, b-24, r82, r78
478  types: func.main.ret=int, func.main.args=2, func.main.arg.0="int,argc", func.main.arg.1="char **,argv"
479  bbhash: 9890426532f35eb3a80fe773d887714fe27d13ea125ad7e90beab16a51b74496
480EOF
481RUN
482
483NAME=zaf zigname
484FILE=bins/elf/analysis/zigs
485CMDS=<<EOF
486aaa
487e zign.mincc = 0
488zs zigs
489zaf main foobar
490z
491EOF
492EXPECT=<<EOF
493foobar:
494  bytes: 554889e54883ec10897dfc488975f0bf13064000e8c2ffffffb800000000c9c3
495  mask: ffffffffffffffffffffffffffffffff00000000ff00000000ffffffffffffff
496  graph: cc=1 nbbs=1 edges=0 ebbs=1 bbsum=32
497  addr: 0x0040055b
498  realname: main
499  refs: sym.print
500  vars: b-12, b-24, r82, r78
501  types: func.main.ret=int, func.main.args=2, func.main.arg.0="int,argc", func.main.arg.1="char **,argv"
502  bbhash: 9890426532f35eb3a80fe773d887714fe27d13ea125ad7e90beab16a51b74496
503EOF
504RUN
505
506NAME=zaf zigname (root zignspace)
507FILE=bins/elf/analysis/zigs
508CMDS=<<EOF
509aaa
510e zign.mincc = 0
511zaf main foobar
512z
513EOF
514EXPECT=<<EOF
515foobar:
516  bytes: 554889e54883ec10897dfc488975f0bf13064000e8c2ffffffb800000000c9c3
517  mask: ffffffffffffffffffffffffffffffff00000000ff00000000ffffffffffffff
518  graph: cc=1 nbbs=1 edges=0 ebbs=1 bbsum=32
519  addr: 0x0040055b
520  realname: main
521  refs: sym.print
522  vars: b-12, b-24, r82, r78
523  types: func.main.ret=int, func.main.args=2, func.main.arg.0="int,argc", func.main.arg.1="char **,argv"
524  bbhash: 9890426532f35eb3a80fe773d887714fe27d13ea125ad7e90beab16a51b74496
525EOF
526RUN
527
528NAME=zs + zaf + z/
529FILE=bins/elf/analysis/zigs
530CMDS=<<EOF
531aaa
532zs zigs
533zaf main
534z/
535?v sign.bytes.zigs:main_0
536EOF
537EXPECT=<<EOF
5380x40055b
539EOF
540RUN
541
542NAME=zs + zaf zigname + z/
543FILE=bins/elf/analysis/zigs
544CMDS=<<EOF
545aaa
546zaf main foobar
547z/
548?v sign.bytes.foobar_0
549EOF
550EXPECT=<<EOF
5510x40055b
552EOF
553RUN
554
555NAME=zc
556FILE=bins/elf/analysis/zigs_stripped
557CMDS=<<EOF
558aa
559za sym.print b 5548....48......48......48......48....bf........b8........e8........90c9c3
560z. @@ fcn*
561?v sign.bytes.sym.print_0
562EOF
563EXPECT=<<EOF
5640x400536
565EOF
566RUN
567
568NAME=zc graph zign
569FILE=bins/elf/analysis/zigs_stripped
570CMDS=<<EOF
571aa
572za sym.print g cc=1 nbbs=1 edges=0 ebbs=1
573e zign.mincc = 0
574z. @@ fcn*
575?v sign.graph.sym.print_0
576EOF
577EXPECT=<<EOF
5780x400536
579EOF
580RUN
581
582NAME=zc graph zign with zign.mincc
583FILE=bins/elf/analysis/zigs_stripped
584CMDS=<<EOF
585aa
586za sym.print g cc=1 nbbs=1 edges=0 ebbs=1
587e zign.mincc = 0
588z. @@ fcn*
589?v sign.graph.sym.print_0
590f-*
591e zign.mincc = 10
592z. @@ fcn*
593?v sign.graph.sym.print_0
594EOF
595EXPECT=<<EOF
5960x400536
5970x0
598EOF
599RUN
600
601NAME=z/ graph zign
602FILE=bins/elf/analysis/zigs_stripped
603CMDS=<<EOF
604aa
605za sym.print_metric g cc=1 nbbs=1 edges=0 ebbs=1
606e zign.mincc = 0
607z/
608?v sign.graph.sym.print_metric_4
609EOF
610EXPECT=<<EOF
6110x400536
612EOF
613RUN
614
615NAME=z/ bytes + graph zign
616FILE=bins/elf/analysis/zigs_stripped
617CMDS=<<EOF
618aa
619za sym.print b 5548....48......48......48......48....bf........b8........e8........90c9c3
620za sym.print g cc=1 nbbs=1 edges=0 ebbs=1
621e zign.minsz = 0
622e zign.mincc = 0
623z/
624?v sign.bytes.sym.print_0
625?v sign.graph.sym.print_4
626EOF
627EXPECT=<<EOF
6280x400536
6290x400536
630EOF
631RUN
632
633NAME=z/ + zign.{bytes,graph}
634FILE=bins/elf/analysis/zigs_stripped
635CMDS=<<EOF
636aa
637za sym.print b 5548....48......48......48......48....bf........b8........e8........90c9c3
638za sym.print g cc=1 nbbs=1 edges=0 ebbs=1
639e zign.minsz = 0
640e zign.mincc = 0
641fs sign
642e zign.bytes = true
643e zign.graph = false
644z/
645f~sign.bytes.sym.print?
646f~sign.graph.sym.print?
647f-*
648e zign.bytes = false
649e zign.graph = true
650z/
651f~sign.bytes.sym.print?
652f~sign.graph.sym.print?
653EOF
654EXPECT=<<EOF
6551
6560
6570
6585
659EOF
660RUN
661
662NAME=zc + zign.{bytes,graph}
663FILE=bins/elf/analysis/zigs_stripped
664CMDS=<<EOF
665aa
666za sym.print b 5548....48......48......48......48....bf........b8........e8........90c9c3
667za sym.print g cc=1 nbbs=1 edges=0 ebbs=1
668e zign.minsz = 0
669e zign.mincc = 0
670fs sign
671e zign.bytes = true
672e zign.graph = false
673z. @ 0x400536
674f~sign.bytes.sym.print?
675f~sign.graph.sym.print?
676f-*
677e zign.bytes = false
678e zign.graph = true
679z. @ 0x400536
680f~sign.bytes.sym.print?
681f~sign.graph.sym.print?
682EOF
683EXPECT=<<EOF
6841
6850
6860
6871
688EOF
689RUN
690
691NAME=aa ; zfs libc-v7.sig
692FILE=bins/elf/analysis/pid_stripped
693CMDS=aa ; zfs bins/other/sigs/libc-v7.sig
694EXPECT=<<EOF
695Found flirt.__libc_start_main
696EOF
697RUN
698
699NAME=zfd libc-v7.sig
700FILE=bins/elf/analysis/pid_stripped
701CMDS=zfd bins/other/sigs/libc-v7.sig
702EXPECT=<<EOF
70341564155B8........4154554D89C4534889CD4D89CD4881EC900000004885C0:
704 0. 16 D2A2 0298 0000:__libc_start_main
705EOF
706RUN
707
708NAME=af ; af ; zfs libc-v7.sig - newshell
709ARGS=-ecfg.newshell=true
710FILE=bins/elf/analysis/pid_stripped
711CMDS=s 0x4e2420 ; af ; s 0x4e25c7 ; af ; zfs bins/other/sigs/libc-v7.sig ; afl ~4e2420
712EXPECT=<<EOF
713Found flirt.__libc_start_main
7140x004e2420   40 664          flirt.__libc_start_main
715EOF
716RUN
717
718NAME=af ; af ; zfs libc-v7.sig
719FILE=bins/elf/analysis/pid_stripped
720CMDS=<<EOF
721s 0x4e2420
722af
723s 0x4e25c7
724af
725zfs bins/other/sigs/libc-v7.sig
726afl~4e2420
727EOF
728EXPECT=<<EOF
729Found flirt.__libc_start_main
7300x004e2420   40 664          flirt.__libc_start_main
731EOF
732RUN
733
734NAME=aa ; zfs libc-v10.sig
735FILE=bins/elf/analysis/pid_stripped
736CMDS=aa ; zfs bins/other/sigs/libc-v10.sig
737EXPECT=<<EOF
738Found flirt.__libc_start_main
739EOF
740RUN
741
742NAME=zfd libc-v10.sig
743FILE=bins/elf/analysis/pid_stripped
744CMDS=zfd bins/other/sigs/libc-v10.sig
745EXPECT=<<EOF
74641564155B8........4154554D89C4534889CD4D89CD4881EC900000004885C0:
747 0. 16 D2A2 0298 0000:__libc_start_main
748EOF
749RUN
750
751NAME=af ; af ; zfs libc-v10.sig - newshell
752ARGS=-ecfg.newshell=true
753FILE=bins/elf/analysis/pid_stripped
754CMDS=s 0x4e2420 ; af ; s 0x4e25c7 ; af ; zfs bins/other/sigs/libc-v10.sig ; afl ~4e2420
755EXPECT=<<EOF
756Found flirt.__libc_start_main
7570x004e2420   40 664          flirt.__libc_start_main
758EOF
759RUN
760
761NAME=af ; af ; zfs libc-v10.sig
762FILE=bins/elf/analysis/pid_stripped
763CMDS=<<EOF
764s 0x4e2420
765af
766s 0x4e25c7
767af
768zfs bins/other/sigs/libc-v10.sig
769afl~4e2420
770EOF
771EXPECT=<<EOF
772Found flirt.__libc_start_main
7730x004e2420   40 664          flirt.__libc_start_main
774EOF
775RUN
776
777NAME=zfs on static glibc
778FILE=bins/elf/static-glibc-2.27
779CMDS=<<EOF
780aac
781zfs bins/other/sigs/libc6_2.27-3ubuntu1_amd64.sig~silence
782f@F:flirt
783EOF
784EXPECT=<<EOF
7850x004004d1 86 flirt.__malloc_assert.constprop.13
7860x00400527 35 flirt.__gconv_release_step.part.1
7870x00400b70 613 flirt.get_common_indeces.constprop.1
7880x00400de0 1657 flirt.__libc_start_main
7890x00401460 385 flirt.__libc_check_standard_fds
7900x004015f0 581 flirt.__libc_setup_tls
7910x00401930 339 flirt.__assert_fail_base
7920x00401a90 80 flirt.__assert_fail
7930x00401ae0 7517 flirt.__dcgettext
7940x00403840 672 flirt._nl_find_domain
7950x00403ae0 5366 flirt._nl_load_domain
7960x004054e0 601 flirt.__cxa_finalize
7970x004056b0 1488 flirt._nl_make_l10nflist
7980x00405c80 286 flirt._nl_normalize_codeset
7990x00405da0 574 flirt._nl_explode_name
8000x00405fe0 28945 flirt.__gettext_free_exp
8010x0040d100 2128 flirt.__gettextparse
8020x0040d950 256 flirt.__gettext_extract_plural
8030x0040da50 60 flirt.__hash_string
8040x0040da90 7 flirt.__umount
8050x0040dbb0 561 flirt.abort
8060x0040ddf0 1092 flirt.msort_with_tmp.part.0
8070x0040e6c0 1160 flirt.qsort
8080x0040e6d0 212 flirt.getenv
8090x0040e7b0 636 flirt.__run_exit_handlers
8100x0040ea30 32 flirt.exit
8110x0040ea50 288 flirt.__new_exitfn
8120x0040ec70 250 flirt.__cxa_atexit
8130x0040f430 542 flirt.__correctly_grouped_prefixmb
8140x0040f710 368 flirt.locked_vfxprintf
8150x0040f880 784 flirt.__fxprintf
8160x0040fe20 33103 flirt._IO_fflush
8170x00410210 429 flirt._IO_puts
8180x00410410 1898 flirt.adjust_wide_data
8190x004115d0 1182 flirt._IO_wdo_write
8200x00411f00 400 flirt._IO_vasprintf
8210x00412090 374 flirt.__libc_message.constprop.0
8220x00412210 743 flirt.__libc_message
8230x00412500 32 flirt.__libc_fatal
8240x00412520 32 flirt._IO_vtable_check
8250x00412540 164 flirt.__fgets_unlocked
8260x00415430 461 flirt.save_for_backup
8270x00415b80 720 flirt._IO_un_link
8280x00415e50 661 flirt._IO_link_in
8290x004160f0 43 flirt._IO_switch_to_main_get_area
8300x00416150 151 flirt._IO_switch_to_get_mode
8310x004161f0 74 flirt._IO_free_backup_area
8320x00416240 112 flirt.__overflow
8330x004162b0 490 flirt.__underflow
8340x004164a0 514 flirt.__uflow
8350x004166b0 93 flirt._IO_setb
8360x00416710 175 flirt._IO_doallocbuf
8370x00416830 258 flirt._IO_default_xsputn
8380x00416c30 292 flirt._IO_default_setbuf
8390x004170c0 327 flirt._IO_no_init
8400x00417550 127 flirt._IO_sputbackc
8410x00417650 64 flirt._IO_adjust_column
8420x00418090 106 flirt._IO_unsave_markers
8430x004234b0 65 flirt.__strdup
8440x0042b6b0 1022 flirt.__memcmp_sse2
8450x00447cf0 1568 flirt.handle_amd
8460x00448310 37 flirt.__cache_sysconf
8470x004491d0 80 flirt.__get_child_max
8480x004492c0 288 flirt.__libc_open64
8490x004493e0 160 flirt.__open64_nocancel
8500x00449480 153 flirt.__libc_read
8510x00449520 36 flirt.__read_nocancel
8520x00449550 153 flirt.__libc_write
8530x004495f0 44 flirt.__write_nocancel
8540x00449650 464 flirt.__libc_fcntl
8550x00449820 125 flirt.__close
8560x004498a0 42 flirt.__close_nocancel
8570x004498d0 1811 flirt.__getcwd
8580x0044a030 142 flirt.__sbrk
8590x0044a0c0 64 flirt.__getpagesize
8600x0044a100 80 flirt.__getdtablesize
8610x0044a2c0 327 flirt.trecurse
8620x0044a410 982 flirt.__tsearch
8630x0044a7f0 87 flirt.__tfind
8640x0044ae00 175 flirt.__twalk
8650x0044aeb0 435 flirt.__tdestroy
8660x0044b070 432 flirt.next_line
8670x0044b220 1168 flirt.__get_nprocs
8680x0044b6b0 224 flirt.__get_nprocs_conf
8690x0044b790 144 flirt.__get_phys_pages
8700x0044b820 144 flirt.__get_avphys_pages
8710x0044b8b0 17 flirt.__getclktck
8720x0044b8d0 82 flirt.__init_misc
8730x0044b990 64 flirt.__libc_alloca_cutoff
8740x0044b9d0 40 flirt.__lll_lock_wait_private
8750x0044ba00 28 flirt.__lll_unlock_wake_private
8760x0044ba20 86 flirt.__libc_enable_asynccancel
8770x0044ba80 89 flirt.__libc_disable_asynccancel
8780x0044baf0 32 flirt.__stack_chk_fail
8790x0044bb10 97 flirt.__fortify_fail_abort
8800x0044bb80 32 flirt.__fortify_fail
8810x0044bc30 114 flirt.__tunable_set_val
8820x0044bcb0 1533 flirt.__tunables_init
8830x0044c2b0 90 flirt.__tunable_get_val
8840x0044c310 1038 flirt._dl_aux_init
8850x0044c720 2296 flirt._dl_non_dynamic_init
8860x0044d020 69 flirt.__libc_init_secure
8870x0044de00 1296 flirt.__gconv_open
8880x0044e310 528 flirt.__gconv
8890x0044e520 89 flirt.__gconv_close
8900x0044f6c0 1168 flirt.insert_module
8910x0044fb50 1008 flirt.__gconv_get_path
8920x0044ff40 1504 flirt.__gconv_read_conf
8930x00450520 602 flirt.__gconv_get_builtin_trans
8940x00458320 18 flirt.release_libc_mem
8950x004585d0 692 flirt.new_composite_name
8960x00459170 2074 flirt._nl_find_locale
8970x00459990 1821 flirt._nl_intern_locale_data
8980x00459bd0 1488 flirt._nl_load_locale
8990x0045a1a0 94 flirt._nl_unload_locale
9000x0045a200 1312 flirt._nl_load_locale_from_archive
9010x0045a870 80 flirt.__setfpucw
9020x0045a8c0 132 flirt.__sigsetjmp
9030x0045abc0 6232 flirt._quicksort
9040x0045c620 19 flirt.__libc_secure_getenv
9050x0045ce30 10673 flirt.group_number
9060x0045f800 13172 flirt._IO_vfprintf_internal
9070x00462b80 976 flirt.hack_digit
9080x00465a50 11033 flirt.___printf_fp
9090x00468470 192 flirt.___asprintf
9100x00468530 11072 flirt._i18n_number_rewrite
9110x0046b070 13435 flirt._IO_vfwprintf
9120x0046e540 1929 flirt.__parse_one_specmb
9130x0046ecd0 2211 flirt.__parse_one_specwc
9140x0046f6d0 314 flirt._IO_fputs
9150x0046f8e0 413 flirt._IO_fwrite
9160x0046fae0 727 flirt._IO_getdelim
9170x0046fe10 349 flirt._IO_getline
9180x004700f0 320 flirt._IO_padn
9190x00470230 320 flirt._IO_wpadn
9200x00470370 637 flirt.save_for_wbackup.isra.0
9210x004706b0 109 flirt._IO_wsetb
9220x004709d0 117 flirt.__woverflow
9230x00470e40 685 flirt._IO_wdefault_xsputn
9240x00471530 155 flirt._IO_wdoallocbuf
9250x00471640 114 flirt._IO_switch_to_wget_mode
9260x004716c0 99 flirt._IO_free_wbackup_area
9270x004720c0 165 flirt.__libc_scratch_buffer_grow_preserve
9280x00472170 184 flirt.__libc_scratch_buffer_set_array_size
9290x00472230 73 flirt.__strndup
9300x00472280 451 flirt.__strerror_r
9310x00472480 102 flirt.__strtok_r
9320x00472cc0 218 flirt.__argz_create_sep
9330x00472da0 183 flirt.__argz_add_sep
9340x00473890 9 flirt.__wmemcpy
9350x00473ab0 480 flirt.__wcrtomb
9360x00473c90 806 flirt.__wcsrtombs
9370x00473fc0 32 flirt.__wcschrnul
9380x00474a40 8 flirt.time
9390x00474f90 139 flirt.__rewinddir
9400x00475020 141 flirt.__getdents
9410x004750b0 192 flirt.__fdopendir
9420x004751a0 8 flirt.__getuid
9430x004751b0 8 flirt.__geteuid
9440x004751c0 8 flirt.__getgid
9450x004751d0 8 flirt.__getegid
9460x00475450 256 flirt.__isatty
9470x00475640 63 flirt.__towctrans
9480x00475680 496 flirt.__readonly_area
9490x00475870 8192 flirt.is_trusted_path_normalize
9500x00477870 686 flirt._dl_dst_count
9510x00477b20 2717 flirt._dl_dst_substitute
9520x004785c0 735 flirt._dl_init_paths
9530x004788a0 4202 flirt._dl_map_object
9540x00479910 3696 flirt.do_lookup_x
9550x0047a780 2747 flirt._dl_lookup_symbol_x
9560x0047b240 176 flirt._dl_setup_hash
9570x0047b2f0 181 flirt._dl_add_to_namespace_list
9580x0047b3b0 783 flirt._dl_new_object
9590x0047d260 2000 flirt._dl_important_hwcaps
9600x0047da30 1446 flirt._dl_debug_vdprintf
9610x0047dfe0 138 flirt._dl_sysdep_read_whole_file
9620x0047e070 162 flirt._dl_debug_printf
9630x0047e120 162 flirt._dl_debug_printf_c
9640x0047e1d0 148 flirt._dl_dprintf
9650x0047e270 102 flirt._dl_name_match_p
9660x0047e2e0 117 flirt._dl_higher_prime_number
9670x0047e360 340 flirt._dl_strtoul
9680x0047eed0 354 flirt._dl_next_tls_modid
9690x0047f060 202 flirt._dl_allocate_tls_storage
9700x0047f540 128 flirt._dl_tls_get_addr_soft
9710x0047f5c0 240 flirt._dl_add_to_slotinfo
9720x0047f6b0 416 flirt._dl_get_origin
9730x0047f850 197 flirt._dl_scope_free
9740x00480690 48 flirt.length_mismatch
9750x004806c0 210 flirt._dl_exception_create
9760x004807a0 729 flirt._dl_exception_create_format
9770x00480a80 38 flirt._dl_exception_free
9780x00480ab0 236 flirt._dl_cache_libcmp
9790x00480ba0 2862 flirt._dl_load_cache_lookup
9800x004816d0 56 flirt._dl_unload_cache
9810x00482060 195 flirt.fatal_error
9820x00482130 80 flirt._dl_signal_exception
9830x00482180 80 flirt._dl_signal_error
9840x004821d0 208 flirt._dl_catch_exception
9850x004822a0 112 flirt._dl_catch_error
9860x00482310 162 flirt.____longjmp_chk
9870x00482370 59 flirt.__mpn_cmp
9880x004823b0 1466 flirt.__mpn_divrem
9890x00482970 259 flirt.__mpn_lshift
9900x00482a80 259 flirt.__mpn_rshift
9910x00482b90 1072 flirt.__mpn_mul
9920x00482fc0 281 flirt.__mpn_mul_1
9930x004830e0 438 flirt.__mpn_impn_mul_n_basecase
9940x004832a0 1378 flirt.__mpn_impn_mul_n
9950x00483810 431 flirt.__mpn_impn_sqr_n_basecase
9960x004839c0 1262 flirt.__mpn_impn_sqr_n
9970x00483f50 173 flirt.__mpn_sub_n
9980x004840f0 144 flirt.__mpn_extract_double
9990x00484180 185 flirt.__mpn_extract_long_double
10000x00484240 286 flirt.__mpn_extract_float128
10010x00484360 203 flirt._itoa_word
10020x00484c90 138 flirt.strerror
10030x00484d40 77 flirt.__strsep
10040x00484f50 8 flirt.__getpid
10050x00485160 416 flirt._dl_fixup
10060x00485300 544 flirt._dl_profile_fixup
10070x00485520 2 flirt._dl_call_pltexit
10080x00485530 652 flirt.add_to_global
10090x004857c0 144 flirt._dl_find_dso_for_object
10100x00485850 528 flirt._dl_open
10110x00485a60 298 flirt._dl_show_scope
10120x004863b0 4000 flirt.remove_slotinfo
10130x00487350 121 flirt._dl_close_worker
10140x004874d0 751 flirt._dl_sort_maps
10150x004877c0 416 flirt._dl_tlsdesc_resolve_rela_fixup
10160x00487960 101 flirt._dl_tlsdesc_resolve_hold_fixup
10170x004879d0 25 flirt._dl_unmap
10180x00487cf0 83 flirt._dl_addr_inside_object
10190x00487e00 235 flirt.__mpn_addmul_1
10200x004895d0 877 flirt._dl_init
10210x00489940 1806 flirt._dl_check_map_versions
10220x0048fa10 478 flirt.__dl_iterate_phdr
10230x0048fbf0 73 flirt._nl_finddomain_subfreeres
10240x0048fc40 247 flirt._nl_unload_domain
10250x00490bb0 218 flirt.free_slotinfo
1026EOF
1027RUN
1028
1029NAME=zb bad count
1030FILE=bins/elf/static-glibc-2.27
1031CMDS=<<EOF
1032s 0x00410210
1033e zign.maxsz = 32
1034af
1035za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1036za sym.exact b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1037zb NOTANUMBER
1038EOF
1039EXPECT=<<EOF
1040EOF
1041RUN
1042
1043NAME=zb negative count
1044FILE=bins/elf/static-glibc-2.27
1045CMDS=<<EOF
1046s 0x00410210
1047e zign.maxsz = 32
1048af
1049za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1050za sym.exact b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1051zb -1
1052EOF
1053EXPECT=<<EOF
1054EOF
1055RUN
1056
1057NAME=zb single exact match
1058FILE=bins/elf/static-glibc-2.27
1059CMDS=<<EOF
1060s 0x00410210
1061e zign.maxsz = 32
1062af
1063za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1064za sym.exact b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1065zb
1066EOF
1067EXPECT=<<EOF
10681.00000  1.00000 B  1.00000 G   sym.exact
1069EOF
1070RUN
1071
1072NAME=zb match 5 by default
1073FILE=bins/elf/static-glibc-2.27
1074CMDS=<<EOF
1075s 0x00410210
1076e zign.maxsz = 32
1077af
1078za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1079za sym.exact b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1080za sym.second g cc=16 nbbs=29 edges=44 ebbs=1 bbsum=407
1081za sym.second b ff5541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1082za sym.third g cc=16 nbbs=28 edges=44 ebbs=1 bbsum=407
1083za sym.third b ffff41544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1084za sym.fourth g cc=16 nbbs=28 edges=43 ebbs=1 bbsum=407
1085za sym.fourth b ffffff544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1086za sym.fith g cc=16 nbbs=28 edges=43 ebbs=1 bbsum=401
1087za sym.fith b ffffffff4989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1088za sym.not_shown g cc=15 nbbs=28 edges=43 ebbs=1 bbsum=395
1089za sym.not_shown b ffffffffff89fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1090zb ~[5]
1091EOF
1092EXPECT=<<EOF
1093sym.exact
1094sym.second
1095sym.third
1096sym.fourth
1097sym.fith
1098EOF
1099RUN
1100
1101NAME=zb match 6 of 6 with 100 count
1102FILE=bins/elf/static-glibc-2.27
1103CMDS=<<EOF
1104s 0x00410210
1105e zign.maxsz = 32
1106af
1107za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1108za sym.exact b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1109za sym.second g cc=16 nbbs=29 edges=44 ebbs=1 bbsum=407
1110za sym.second b ff5541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1111za sym.third g cc=16 nbbs=28 edges=44 ebbs=1 bbsum=407
1112za sym.third b ffff41544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1113za sym.fourth g cc=16 nbbs=28 edges=43 ebbs=1 bbsum=407
1114za sym.fourth b ffffff544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1115za sym.fith g cc=16 nbbs=28 edges=43 ebbs=1 bbsum=401
1116za sym.fith b ffffffff4989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1117za sym.sixth g cc=15 nbbs=28 edges=43 ebbs=1 bbsum=395
1118za sym.sixth b ffffffffff89fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1119zb 100~[5]
1120EOF
1121EXPECT=<<EOF
1122sym.exact
1123sym.second
1124sym.third
1125sym.fourth
1126sym.fith
1127sym.sixth
1128EOF
1129RUN
1130
1131NAME=zb ignore masked bytes
1132FILE=bins/elf/static-glibc-2.27
1133CMDS=<<EOF
1134s 0x00410210
1135e zign.maxsz = 32
1136af
1137za sym.perf1 b 415541544989fc55534883ec08e800000000488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1138za sym.perf2 b 415541544989fc55534883ec08e8ffffffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1139zb ~[0]
1140EOF
1141EXPECT=<<EOF
11421.00000
11431.00000
1144EOF
1145RUN
1146
1147NAME=zb count 1
1148FILE=bins/elf/static-glibc-2.27
1149CMDS=<<EOF
1150s 0x00410210
1151e zign.maxsz = 32
1152af
1153za sym.right g cc=16 nbbs=28 edges=44 ebbs=1 bbsum=407
1154za sym.right b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1155za sym.wrong g cc=16 nbbs=28 edges=43 ebbs=1 bbsum=407
1156za sym.wrong b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1157za sym.nope g cc=16 nbbs=28 edges=43 ebbs=1 bbsum=401
1158za sym.nope b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1159za sym.bad g cc=15 nbbs=28 edges=43 ebbs=1 bbsum=395
1160za sym.bad b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1161zb 1 ~?
1162EOF
1163EXPECT=<<EOF
11641
1165EOF
1166RUN
1167
1168NAME=zb duplicate zigs match
1169FILE=bins/elf/static-glibc-2.27
1170CMDS=<<EOF
1171s 0x00410210
1172af
1173za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1174za sym.exact b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1175za sym.duplicate1 g cc=16 nbbs=29 edges=44 ebbs=1 bbsum=407
1176za sym.duplicate1 b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1177za sym.duplicate2 g cc=16 nbbs=29 edges=44 ebbs=1 bbsum=407
1178za sym.duplicate2 b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1179za sym.duplicate3 g cc=16 nbbs=29 edges=44 ebbs=1 bbsum=407
1180za sym.duplicate3 b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1181za sym.duplicate4 g cc=16 nbbs=29 edges=44 ebbs=1 bbsum=407
1182za sym.duplicate4 b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1183za sym.duplicate5 g cc=16 nbbs=29 edges=44 ebbs=1 bbsum=407
1184za sym.duplicate5 b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1185za sym.duplicate6 g cc=16 nbbs=29 edges=44 ebbs=1 bbsum=407
1186za sym.duplicate6 b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1187zb ~sym.duplicate?
1188EOF
1189EXPECT=<<EOF
11904
1191EOF
1192RUN
1193
1194NAME=zj producing valid types
1195FILE=bins/elf/static-glibc-2.27
1196CMDS=<<EOF
1197aaa
1198zaf fcn.00484d40 fcn.00484d40
1199zj
1200EOF
1201EXPECT=<<EOF
1202[{"name":"fcn.00484d40","bytes":"55534883ec08488b1f4885db741b4889fd4889dfe857b7f7ff4801d8803800751748c74500000000004883c4084889d85b5dc30f1f440000c600004883c001488945004883c4084889d85b5dc3","mask":"ffffffffffffffffffffffffff00ffffffffffffff00000000ffffffffffffff00ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff","graph":{"cc":4,"nbbs":5,"edges":5,"ebbs":2,"bbsum":72},"addr":4738368,"refs":[],"xrefs":[],"vars":["r82"],"types":[{"name":"arg1","type":"int64_t"}],"hash":{"bbhash":"8ff8a5c7f84179483b764fbb18dc4c44f39da6527a0a16485c7ae519f00e687f"}}]
1203EOF
1204RUN
1205
1206NAME=x86-64 function with hole
1207FILE=bins/elf/libc.so.6
1208CMDS=<<EOF
1209s 0xec800
1210af
1211zaf
1212z*
1213EOF
1214EXPECT=<<EOF
1215zs *
1216za sym.__write b f30f1efa488d05256d0d008b0085c07517b8010000000f05483d00f0ffff7758c30f1f800000000041544989d4554889f55389fb4883ec10e823c901004c89e24889ee89df4189c0b8010000000f05483d00f0ffff77354489c74889442408e85cc90100488b4424084883c4105b5d415cc3660f1f440000488b15c1150d00f7d864890248c7c0ffffffffc3488b15ad150d00f7d864890248c7c0ffffffffebb6:ffffffffff000000000000ffffffffff00ffffffffffffffff0000000000ff00ff00000000000000ffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff0000000000ff00ffffffffffffffffff00000000ffffffffffffffffffffffffffff000000000000ff000000000000ffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffff00
1217za sym.__write g cc=6 nbbs=7 edges=7 ebbs=3 bbsum=148
1218za sym.__write o 0x000ec800
1219za sym.__write r sym.__libc_enable_asynccancel sym.__libc_disable_asynccancel
1220za sym.__write v s-32 r72 r78 r82
1221za sym.__write t func.sym.__write.args=3 func.sym.__write.arg.0="int64_t,arg1" func.sym.__write.arg.1="int64_t,arg2" func.sym.__write.arg.2="int64_t,arg3"
1222za sym.__write h 4f2d194bae72345352b26e0a36531e7d6ff6cb5d6b50b92487246507b8dafdc5
1223EOF
1224RUN
1225
1226NAME=x86-64 function with jumpback
1227FILE=bins/elf/libc.so.6
1228CMDS=<<EOF
1229s 0x8a900
1230af
1231zaf
1232z*
1233EOF
1234EXPECT=<<EOF
1235zs *
1236za sym.bcopy b f30f1efa4887fee92479f9ff:ffffffffffffffff00000000
1237za sym.bcopy g cc=1 nbbs=2 edges=1 ebbs=1 bbsum=23
1238za sym.bcopy o 0x0008a900
1239za sym.bcopy r sym..plt.sec
1240za sym.bcopy v r82
1241za sym.bcopy t func.sym.bcopy.args=1 func.sym.bcopy.arg.0="int64_t,arg1"
1242za sym.bcopy h 7549556f94a4c26907f0304da9892c797a73e6c44907dc2030389392a9df8f69
1243EOF
1244RUN
1245
1246NAME=x86-64 r_sign_fcn_bytes bounds check
1247FILE=bins/elf/libc.so.6
1248CMDS=<<EOF
1249s 0x0593a0
1250e zign.maxsz = 41
1251af
1252zaf
1253z* ~za sym._IO_printf b
1254EOF
1255EXPECT=<<EOF
1256za sym._IO_printf b f30f1efa4881ecd80000004889742428488954243048894c24384c894424404c894c244884c074370f:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
1257EOF
1258RUN
1259
1260NAME=80386 function with hole
1261FILE=bins/elf/fcn_in_test.elf
1262CMDS=<<EOF
1263s 0x1090
1264af
1265zaf
1266z*
1267EOF
1268EXPECT=<<EOF
1269zs *
1270za sym.deregister_tm_clones b e8e400000081c26b2f00008d8a180000008d821800000039c8741d8b82ecffffff85c074135589e583ec1451ffd083c410c9c38d74260090c3:ff00000000ff0000000000ffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffff0000000000ff
1271za sym.deregister_tm_clones g cc=4 nbbs=4 edges=4 ebbs=2 bbsum=52
1272za sym.deregister_tm_clones o 0x00001090
1273za sym.deregister_tm_clones r sym.__x86.get_pc_thunk.dx
1274za sym.deregister_tm_clones h 903d0936e77ecc1f2e91f7b2eb2476fdc06d7f2ba9501b1436468dbda5d7caaa
1275EOF
1276RUN
1277
1278NAME=80386 function with jumpback
1279FILE=bins/elf/fcn_in_test.elf
1280CMDS=<<EOF
1281s 0x1184
1282af
1283zaf
1284z*
1285EOF
1286EXPECT=<<EOF
1287zs *
1288za main b 31c075f8ebf689c05090909090c3:ffffff00ff00ffffffffffffffff
1289za main g cc=2 nbbs=4 edges=4 ebbs=1 bbsum=18
1290za main o 0x00001184
1291za main t func.main.ret=int func.main.args=3 func.main.arg.0="int,argc" func.main.arg.1="char **,argv" func.main.arg.2="char **,envp"
1292za main h a9f218a725149b64061b9064406b46abe5653b97eb0f88a3e3e0086d1532c898
1293EOF
1294RUN
1295
1296NAME=80386 r_sign_fcn_bytes bounds check
1297FILE=bins/elf/fcn_in_test.elf
1298CMDS=<<EOF
1299s 0x00001120
1300e zign.maxsz = 32
1301af
1302zaf
1303z* ~za sym.__do_global_dtors_aux b
1304EOF
1305EXPECT=<<EOF
1306za sym.__do_global_dtors_aux b f30f1efb5589e553e853ffffff81c3d32e000083ec0480bb180000000075288b:ffffffffffffffffff00000000ff0000000000ffffffffffffffffffffff00ff
1307EOF
1308RUN
1309
1310NAME=MIPS R3000 function with hole
1311FILE=bins/elf/libc.so.0
1312CMDS=<<EOF
1313s 0x00051490
1314af
1315zaf
1316z*
1317EOF
1318EXPECT=<<EOF
1319zs *
1320za sym.fpathconf b 3c1c0005279c11200399e02127bdfef8afbf0100afb100fcafb000f8afbc001004810008008088218f9980180320f809000000008fbc00102404ffff100000142403000910a000412404007f24a5ffff2ca20013104000088f83805c0005108024638d00004310218c420000005c102100400008000000008f9980180320f809000000008fbc00102404ffff240300161000002eac4300001000002c240400ff8f9980180320f809000000008fbc00100220202127a500188f998224004080210320f8098c510000044100088fbc00108e030000240200591462001c2404ffff240400ff10000019ae110000100000178fa40040100000152404100010000013000020218f9980f0022020210320f80927a500600440000c8fbc00108fa200743043f0003402800010620003240260001462000500000000100000042404000110000002240400202404ffff8fbf01008fb100fc8fb000f80080102103e0000827bd0108:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff000000ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff000000ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff000000ffffffffffffffffffffffffffffffffff000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
1321za sym.fpathconf g cc=5 nbbs=8 edges=9 ebbs=2 bbsum=176
1322za sym.fpathconf o 0x00051490
1323za sym.fpathconf v s-8 s-12 s-16 s-248 r4 r5
1324za sym.fpathconf t func.sym.fpathconf.args=2 func.sym.fpathconf.arg.0="int32_t,arg1" func.sym.fpathconf.arg.1="int32_t,arg2"
1325za sym.fpathconf h 52f232c2d8158ce806cadf84ed77273fb11711dfa6cb5feb997ce03c1459be43
1326EOF
1327RUN
1328
1329NAME=MIPS R3000 function with jumpback
1330FILE=bins/elf/ld-uClibc-0.9.33.2.so
1331CMDS=<<EOF
1332s 0x2a1c
1333af
1334zaf
1335z*
1336EOF
1337EXPECT=<<EOF
1338zs *
1339za sym._dl_malloc b 3c1c0002279cc5e40399e0218f82807427bdfff88c590000afbe00041320000503a0f02103c0e8218fbe00040320000827bd000803c0e8218f99801c8fbe0004273928dc1000ff9e27bd0008:ffffffffffffffffffffffffff000000ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffff
1340za sym._dl_malloc g cc=8 nbbs=12 edges=16 ebbs=2 bbsum=396
1341za sym._dl_malloc o 0x00002a1c
1342za sym._dl_malloc r sym._dl_dprintf sym._dl_dprintf
1343za sym._dl_malloc v b16 s-4 s-12 s-16 s-20 s-8 s-24 s-32 s-80 s-76 s-28 s-36 s-40 r4 r6 r7 r5
1344za sym._dl_malloc t func.sym._dl_malloc.args=5 func.sym._dl_malloc.arg.0="int32_t,arg1" func.sym._dl_malloc.arg.1="int32_t,arg2" func.sym._dl_malloc.arg.2="int32_t,arg3" func.sym._dl_malloc.arg.3="int32_t,arg4" func.sym._dl_malloc.arg.4="int32_t,arg_10h"
1345za sym._dl_malloc h ec986971438cf486e01f14e9bc442d9f4c457854207d30fe4aa9f1ffdf892911
1346EOF
1347RUN
1348
1349NAME=MIPS R3000  r_sign_fcn_bytes bounds check
1350FILE=bins/elf/libc.so.0
1351CMDS=<<EOF
1352s 0x00051490
1353af
1354e zign.maxsz = 41
1355zaf
1356z* ~za sym.fpathconf b
1357EOF
1358EXPECT=<<EOF
1359za sym.fpathconf b 3c1c0005279c11200399e02127bdfef8afbf0100afb100fcafb000f8afbc001004810008008088218f:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff
1360EOF
1361RUN
1362
1363NAME=PowerPC function with hole
1364FILE=bins/elf/busybox-powerpc
1365CMDS=<<EOF
1366s 0x100e2b0c
1367af
1368zaf
1369z*
1370EOF
1371EXPECT=<<EOF
1372zs *
1373za fcn.100e2b0c b 38c000014800000c38c00000480000049421ffd07c0802a63d401013bf2100147c9923787cbe2b787cda33787c7f1b7890010034480000083bff0001897f0000812aa39c5560083c7c09022e700900204082ffe82f8b002b419e00182f8b002d3b80000040be00143b800001480000083b8000003bff000157c007357c6a1b7840820044881f00003bde000a2f80003040be00288c1f00013bdefffe600000207feafb785400063e2f80007840be000c57de083c3bff00012f9e0010409d00083bc00010381efffe390000002b800022419d00943800ffff7fa0f3967c1df1d67c0000f8541b063e480000087feafb78893f00007c08e8407c88e8003bff00013809ffd061290020540b063e2b0900602b8b0009409d00143929ffa93960002840990008552b063e7f8bf000409c00384181001040a600247f8bd840409d001c4bfe70057f9cd038380000223900ffff900300004bffff987c08f1d67d0b02144bffff8c2f990000419e0008915900002f9a00007d3c00d03c007fff55290ffe6000ffff7fe90214419e001c7f88f84040bd00144bfe6fb138000022900300007fe8fb782f9c0000419e00087d0800d0800100347d034378bb210014382100307c0803a64e800020:ffffffffff0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ff000000ff000000ffffffffff000000ff000000ffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff000000ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
1374za fcn.100e2b0c g cc=19 nbbs=35 edges=52 ebbs=1 bbsum=448
1375za fcn.100e2b0c o 0x100e2b0c
1376za fcn.100e2b0c v b0 b1 s4 r6 r7 r5
1377za fcn.100e2b0c t func.fcn.100e2b0c.args=6 func.fcn.100e2b0c.arg.0="int32_t,arg1" func.fcn.100e2b0c.arg.1="int32_t,arg2" func.fcn.100e2b0c.arg.2="int32_t,arg3" func.fcn.100e2b0c.arg.3="int32_t,arg_0h" func.fcn.100e2b0c.arg.4="int32_t,arg_1h" func.fcn.100e2b0c.arg.5="int32_t,arg_34h"
1378za fcn.100e2b0c h 3b28d8f368cb414615bda7313fc4cdc24096498e7183cc05165607770be26928
1379EOF
1380RUN
1381
1382NAME=PowerPC function with jumpback
1383FILE=bins/elf/busybox-powerpc
1384CMDS=<<EOF
1385s 0x10002d70
1386af
1387zaf
1388z*
1389EOF
1390EXPECT=<<EOF
1391zs *
1392za fcn.10002d70 b 38a0000038c000004bfffed4:ffffffffffffffffff000000
1393za fcn.10002d70 g cc=12 nbbs=19 edges=29 ebbs=1 bbsum=304
1394za fcn.10002d70 o 0x10002d70
1395za fcn.10002d70 v b-4096 s4 s-36 s0 s-4136 r5 r6
1396za fcn.10002d70 t func.fcn.10002d70.args=4 func.fcn.10002d70.arg.0="int32_t,arg1" func.fcn.10002d70.arg.1="int32_t,arg2" func.fcn.10002d70.arg.2="int32_t,arg_1030h" func.fcn.10002d70.arg.3="int32_t,arg_1034h"
1397za fcn.10002d70 h b73e65dc846183808d8e385076f9bbcd0b1dcdaa5652254fb55b3b159462a507
1398EOF
1399RUN
1400
1401NAME=PowerPC r_sign_fcn_bytes bounds check
1402FILE=bins/elf/busybox-powerpc
1403CMDS=<<EOF
1404s 0x1000016c
1405af
1406e zign.maxsz = 30
1407zaf
1408z* ~za fcn.1000016c b
1409EOF
1410EXPECT=<<EOF
1411za fcn.1000016c b 3d2000007c0802a6392900009421fff02f89000090010014419e001c3c80:ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff
1412EOF
1413RUN
1414
1415NAME=ARM function with hole
1416FILE=bins/elf/libmagic.so
1417CMDS=<<EOF
1418s 0x78ea
1419af
1420zaf
1421z*
1422EOF
1423EXPECT=<<EOF
1424zs *
1425za sym._Unwind_VRS_Get b 10b5041c042913d8081c00f072fd05031103030001200ce00220002b09d10f2a07d88240a418029a61681160181c00e0022010bd:ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffff
1426za sym._Unwind_VRS_Get g cc=2 nbbs=4 edges=4 ebbs=1 bbsum=28
1427za sym._Unwind_VRS_Get o 0x000078ea
1428za sym._Unwind_VRS_Get r sym.__gnu_thumb1_case_uqi
1429za sym._Unwind_VRS_Get v r0 r1
1430za sym._Unwind_VRS_Get t func.sym._Unwind_VRS_Get.args=2 func.sym._Unwind_VRS_Get.arg.0="int16_t,arg1" func.sym._Unwind_VRS_Get.arg.1="int16_t,arg2"
1431za sym._Unwind_VRS_Get h 3132d0ebfa3b792867a4ffc36455e088bf3fcffc7627bd48c64bf901308463db
1432EOF
1433RUN
1434
1435NAME=ARM function with jumpback
1436FILE=bins/elf/libverifyPass.so
1437CMDS=<<EOF
1438s 0x0000183c
1439af
1440zaf
1441z* ~sym.__aeabi_unwind_cpp_pr0 b
1442EOF
1443EXPECT=<<EOF
1444za sym.__aeabi_unwind_cpp_pr0 b 0030a0e3d4feffea
1445EOF
1446RUN
1447
1448NAME=ARM r_sign_fcn_bytes bounds check
1449FILE=bins/elf/libverifyPass.so
1450CMDS=<<EOF
1451s 0x00001844
1452af
1453e zign.maxsz = 42
1454zaf
1455z* ~za fcn.00001844 b
1456EOF
1457EXPECT=<<EOF
1458za fcn.00001844 b f04f2de9a8519fe5a8319fe505508fe0033095e714d04de2000053e30040a0e1026041e20800000a0600:ffffffff0000f0ff0000f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
1459EOF
1460RUN
1461
1462NAME=ARM aarch64 function with hole
1463FILE=bins/elf/switch-hello-world.elf
1464CMDS=<<EOF
1465s 0x12180
1466af
1467zaf
1468z*
1469EOF
1470EXPECT=<<EOF
1471zs *
1472za sym.memset b 200c014e0400028b5f8001f1c80300545f4000f102020054013c084ea2001836010000f981801ff8c0035fd61f2003d582001036010000b981c01fb8c0035fd6820000b4010000394200083681e01f78c0035fd60000803dc200303780009f3c620028360004803d80009e3cc0035fd60004803d000001ad80003fadc0035fd61f2003d5211c001203ec7c920000803d5f0004f12028407a80010054820003cb634000d1424001d1600001ad600082ad420001f1a8ffff5480003ead80003fadc0035fd61f2003d5e5003bd585fe2737a50c0012bf100071810200546004803d600001ad63e47a92600002ad600003ad820003cb420004d1630002911f2003d523740bd563000191420001f1a8ffff54600000ad600001ad80003ead80003fadc0035fd61f2003d5bf140071410200546004803d600001ad600002ad600003ad63e07992820003cb420004d16300029123740bd563000291420002f1a8ffff5480003cad80003dad80003ead80003fadc0035fd686008052c720c51ae50001915f0005ebc3f8ff54e60400d16500078b63400091a20003eba500268aa0000054600082ac60003fad420001f1a8ffff54e30305aa820005cb420007eba300005423740bd56300078b420007eba2ffff544200078b638000d1b6ffff17:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
1473za sym.memset g cc=28 nbbs=35 edges=47 ebbs=8 bbsum=460
1474za sym.memset o 0x00012180
1475za sym.memset v r10 r6 r14
1476za sym.memset t func.sym.memset.args=3 func.sym.memset.arg.0="void *,s" func.sym.memset.arg.1="int,c" func.sym.memset.arg.2="size_t,n"
1477za sym.memset h 82e8b18bbf263f9ed0e31d6b68099efe6eb8805a429444f8aa119af00c47369c
1478EOF
1479RUN
1480
1481NAME=ARM aarch64 function with jmpback
1482FILE=bins/elf/switch-hello-world.elf
1483CMDS=<<EOF
1484s 0x131a4
1485af
1486zaf
1487z*
1488EOF
1489EXPECT=<<EOF
1490zs *
1491za sym.strnlen b c1ffffb4ecc300b202ec7c92080c40f2610300542e0400d1cefd44d34310c1a868000ccb69d800b28a000ccb8bd800b20601298a47012b8ace0500f1c80007aa005940fac0feff54c80007aa68fdffb4400000cb660000b4002000d1e70306aa002000d1e70cc0daed10c0da000c4d8b1f0001eb0090819ac0035fd62e0400d1eb0308cb1f2100f1ca0d4092cefd44d3090080924310c1a86bf17dd34a01088b2925cb9ace114a8b630009aa850009aa63d09fda84d0859adaffff17:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000f0ff0000f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
1492za sym.strnlen g cc=7 nbbs=11 edges=14 ebbs=2 bbsum=196
1493za sym.strnlen o 0x000131a4
1494za sym.strnlen v r10 r6 r22
1495za sym.strnlen t func.sym.strnlen.args=3 func.sym.strnlen.arg.0="int64_t,arg1" func.sym.strnlen.arg.1="int64_t,arg2" func.sym.strnlen.arg.2="int64_t,arg5"
1496za sym.strnlen h c573e9053dfa735f51cca8aea51eda71ca46fd402d11feb4d7f8ccf1b3b46d72
1497EOF
1498RUN
1499
1500NAME=ARM aarch64 r_sign_fcn_bytes bounds check
1501FILE=bins/elf/switch-hello-world.elf
1502CMDS=<<EOF
1503s 0x00016e9c
1504e zign.maxsz = 94
1505af
1506zaf
1507z* ~za sym._vfprintf_r b
1508EOF
1509EXPECT=<<EOF
1510za sym._vfprintf_r b ff0314d1fd7b00a9fd030091f35301a9f30302aaf55b02a9f76303a9f70300aaf80303aaf96b04a9fa0301aafb7305a9e827066d6a170094000040f9e06700f989efff97e05700f9020180d2e0a3059101008052a4ecff97b70000b4e052:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000fcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
1511EOF
1512RUN
1513
1514NAME=zbr bad count
1515FILE=bins/elf/static-glibc-2.27
1516CMDS=<<EOF
1517aa
1518e zign.maxsz = 32
1519za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1520za sym.exact b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1521zbr sym.exact NOTNUMBER
1522EOF
1523EXPECT=<<EOF
1524EOF
1525RUN
1526
1527NAME=zbr negative count
1528FILE=bins/elf/static-glibc-2.27
1529CMDS=<<EOF
1530aa
1531e zign.maxsz = 32
1532za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1533za sym.exact b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1534zbr sym.exact -3
1535EOF
1536EXPECT=<<EOF
1537EOF
1538RUN
1539
1540NAME=zbr zero count
1541FILE=bins/elf/static-glibc-2.27
1542CMDS=<<EOF
1543aa
1544e zign.maxsz = 32
1545za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1546za sym.exact b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1547zbr sym.exact 0
1548EOF
1549EXPECT=<<EOF
1550EOF
1551RUN
1552
1553NAME=zbr single match
1554FILE=bins/elf/static-glibc-2.27
1555CMDS=<<EOF
1556aa
1557e zign.maxsz = 32
1558za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1559za sym.exact b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1560zbr sym.exact 1~[5]
1561EOF
1562EXPECT=<<EOF
1563fcn.00410210
1564EOF
1565RUN
1566
1567NAME=zbr exact match
1568FILE=bins/elf/static-glibc-2.27
1569CMDS=<<EOF
1570aa
1571e zign.maxsz = 32
1572za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1573za sym.exact b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1574zbr sym.exact 1
1575EOF
1576EXPECT=<<EOF
15771.00000  1.00000 B  1.00000 G   fcn.00410210
1578EOF
1579RUN
1580
1581NAME=zbr try match 5 but only 4
1582FILE=bins/elf/static-glibc-2.27
1583CMDS=<<EOF
1584aa
1585e zign.maxsz = 32
1586za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1587za sym.exact b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1588zbr sym.exact ~[5]
1589EOF
1590EXPECT=<<EOF
1591fcn.00410210
1592main
1593entry0
1594fcn.00400de0
1595EOF
1596RUN
1597
1598NAME=zbr match 5 by default
1599FILE=bins/elf/ls
1600CMDS=<<EOF
1601aa
1602e zign.maxsz = 32
1603za main b 41574156415541545589fd534889f34883ec58488b3e64488b04252800000048
1604za main g cc=429 nbbs=300 edges=437 ebbs=8 bbsum=6739
1605zbr main ~[5]
1606EOF
1607EXPECT=<<EOF
1608main
1609sym._obstack_newchunk
1610sym._obstack_free
1611sym._obstack_begin
1612sym._obstack_begin_1
1613EOF
1614RUN
1615
1616NAME=zbr ignore masked bytes
1617FILE=bins/elf/static-glibc-2.27
1618CMDS=<<EOF
1619aa
1620e zign.maxsz = 32
1621za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1622za sym.exact b 415541544989fc55534883ec08e8aaaaaaaa488baaaaaaaaaa4889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1623zbr sym.exact 1
1624EOF
1625EXPECT=<<EOF
16261.00000  1.00000 B  1.00000 G   fcn.00410210
1627EOF
1628RUN
1629
1630NAME=zb zign.threshold
1631FILE=bins/elf/static-glibc-2.27
1632CMDS=<<EOF
1633s 0x00410210
1634e zign.maxsz = 32
1635af
1636za sym.1 g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1637za sym.1 b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1638za sym.2 g cc=16 nbbs=25 edges=40 ebbs=1 bbsum=377
1639za sym.2 b 41544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1640za sym.3 g cc=14 nbbs=21 edges=35 ebbs=1 bbsum=347
1641za sym.3 b fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffff00000000ff000000000000ffffffffffffff
1642za sym.4 g cc=12 nbbs=17 edges=30 ebbs=1 bbsum=307
1643za sym.4 b 4883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffff00000000ff000000000000ffffffffffffff
1644za sym.5 g cc=10 nbbs=14 edges=22 ebbs=1 bbsum=284
1645za sym.5 b 08e89e02ffff488b2d77952a004889c38b450048:ffff00000000ff000000000000ffffffffffffff
1646e zign.threshold = .99
1647zb ~[5]
1648e zign.threshold = .9
1649zb ~[5]
1650e zign.threshold = .8
1651zb ~[5]
1652e zign.threshold = .7
1653zb ~[5]
1654EOF
1655EXPECT=<<EOF
1656sym.1
1657sym.1
1658sym.2
1659sym.1
1660sym.2
1661sym.3
1662sym.1
1663sym.2
1664sym.3
1665sym.4
1666EOF
1667RUN
1668
1669NAME=zbr zign.threshold
1670FILE=bins/elf/ls
1671CMDS=<<EOF
1672aa
1673e zign.maxsz = 32
1674za main b 41574156415541545589fd534889f34883ec58488b3e64488b04252800000048
1675za main g cc=429 nbbs=300 edges=437 ebbs=8 bbsum=6739
1676e zign.threshold = 1.0
1677zbr main~[5]
1678e zign.threshold = 0.5
1679zbr main~[5]
1680e zign.threshold = 0.3
1681zbr main~[5]
1682e zign.threshold = 0.12
1683zbr main 30~[5]
1684EOF
1685EXPECT=<<EOF
1686main
1687main
1688main
1689main
1690sym._obstack_newchunk
1691EOF
1692RUN
1693
1694NAME=zbr invalid threshold
1695FILE=bins/elf/ls
1696CMDS=<<EOF
1697aa
1698e zign.maxsz = 32
1699e zign.threshold = 99.0
1700za main b 41574156415541545589fd534889f34883ec58488b3e64488b04252800000048
1701za main g cc=429 nbbs=300 edges=437 ebbs=8 bbsum=6739
1702zbr main ~[5]
1703EOF
1704EXPECT=<<EOF
1705main
1706sym._obstack_newchunk
1707sym._obstack_free
1708sym._obstack_begin
1709sym._obstack_begin_1
1710EOF
1711RUN
1712
1713NAME=zb invalid threshold
1714FILE=bins/elf/static-glibc-2.27
1715CMDS=<<EOF
1716s 0x00410210
1717e zign.threshold = 99.0
1718e zign.maxsz = 32
1719af
1720za sym.exact g cc=17 nbbs=29 edges=44 ebbs=1 bbsum=407
1721za sym.exact b 415541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1722za sym.second g cc=16 nbbs=29 edges=44 ebbs=1 bbsum=407
1723za sym.second b ff5541544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1724za sym.third g cc=16 nbbs=28 edges=44 ebbs=1 bbsum=407
1725za sym.third b ffff41544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1726za sym.fourth g cc=16 nbbs=28 edges=43 ebbs=1 bbsum=407
1727za sym.fourth b ffffff544989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1728za sym.fith g cc=16 nbbs=28 edges=43 ebbs=1 bbsum=401
1729za sym.fith b ffffffff4989fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1730za sym.not_shown g cc=15 nbbs=28 edges=43 ebbs=1 bbsum=395
1731za sym.not_shown b ffffffffff89fc55534883ec08e89e02ffff488b2d77952a004889c38b450048:ffffffffffffffffffffffffffff00000000ff000000000000ffffffffffffff
1732zb ~[5]
1733EOF
1734EXPECT=<<EOF
1735sym.exact
1736sym.second
1737sym.third
1738sym.fourth
1739sym.fith
1740EOF
1741RUN
1742
1743NAME=manually add signatures
1744FILE=-
1745CMDS=<<EOF
1746zs *
1747za main b 41574156415541544189fc554889f5534883ec48488b3e64488b042528000000488944243831c067e8b3f40000488d35b6570100bf06000000ff1531ee0100488d3500590100488d3dc4580100ff1565ec0100488d3db7580100ff1538ec0100488d3d499e0000c705e7f001000200000067e899320100c6059a0102000148b80000000000000080488905410202008b05abf00100c705d10002000000000048c705360202000000000048c70523020200ffffffffc6057c0102000083f8020f849c0e000083f8030f85da010000c705c001020000000000be0700000031ff67e81b0a0100c605a301020000488d3d65580100c7059701020000000000c7058901020000000000c6057f01020000c6057701020000c7055501020000000000c6053601020000c7052801020001000000c6051f01020000c6051701020000c705080102000000000048c705f50002000000000048c705e200020000000000c6056001020000ff1575ea01004989c54885c07438b904000000488d15618a0100488d35dae701004889c767e84192000085c00f880c0900004898488d15408a010031ff8b348267e85509010048c7055a00020050000000488d3da9570100ff151dea01004989c54885c074098038000f85060900004c8d6c242031c0be13540000bf010000004c89eaff156aeb010083f8ff740e0f:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff000000000000ffffffffffff0000000000ff000000000000ff000000000000ff0000000000ff000000000000ff0000000000ff000000000000ff000000000000000000ffff00000000ff000000000000ffffffffffffffffffffff000000000000ff0000000000ff000000000000000000ff00000000000000000000ff00000000000000000000ff000000000000ff0000ffff00000000ff0000ffff00000000ff000000000000000000ffffffffffffffffff00000000ff000000000000ff000000000000ff000000000000000000ff000000000000000000ff000000000000ff000000000000ff000000000000000000ff000000000000ff000000000000000000ff000000000000ff000000000000ff000000000000000000ff00000000000000000000ff00000000000000000000ff000000000000ff0000000000ffffffffffffff00ffffffffffff000000000000ff000000000000ffffffffff00000000ffffffff00000000ffffff000000000000ffffffffffffff00000000ff00000000000000000000ff000000000000ff0000000000ffffffffffffff00ffffffffff00000000ffffffffffffffff00000000ffffffffffffffffff0000000000ffffffff00ff
1748za main g cc=147 nbbs=226 edges=355 ebbs=8 bbsum=4859
1749za main o 0x000040a0
1750za main r sym._obstack_begin sym._obstack_begin sym._obstack_begin
1751za main v s-64 s-88 s-116 s-96 s-80 s-67 s-65 s-66 s-86 r110 r114
1752za main t func.main.ret=int func.main.args=3 func.main.arg.0="int,argc" func.main.arg.1="char,**,argv" func.main.arg.2="char,**,envp"
1753za main h c82a35182e4217e7d7a4662c066be72bff254100ad71e29492350dba46fad184
1754z*
1755EOF
1756EXPECT=<<EOF
1757zs *
1758za main b 41574156415541544189fc554889f5534883ec48488b3e64488b042528000000488944243831c067e8b3f40000488d35b6570100bf06000000ff1531ee0100488d3500590100488d3dc4580100ff1565ec0100488d3db7580100ff1538ec0100488d3d499e0000c705e7f001000200000067e899320100c6059a0102000148b80000000000000080488905410202008b05abf00100c705d10002000000000048c705360202000000000048c70523020200ffffffffc6057c0102000083f8020f849c0e000083f8030f85da010000c705c001020000000000be0700000031ff67e81b0a0100c605a301020000488d3d65580100c7059701020000000000c7058901020000000000c6057f01020000c6057701020000c7055501020000000000c6053601020000c7052801020001000000c6051f01020000c6051701020000c705080102000000000048c705f50002000000000048c705e200020000000000c6056001020000ff1575ea01004989c54885c07438b904000000488d15618a0100488d35dae701004889c767e84192000085c00f880c0900004898488d15408a010031ff8b348267e85509010048c7055a00020050000000488d3da9570100ff151dea01004989c54885c074098038000f85060900004c8d6c242031c0be13540000bf010000004c89eaff156aeb010083f8ff740e0f:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff000000000000ffffffffffff0000000000ff000000000000ff000000000000ff0000000000ff000000000000ff0000000000ff000000000000ff000000000000000000ffff00000000ff000000000000ffffffffffffffffffffff000000000000ff0000000000ff000000000000000000ff00000000000000000000ff00000000000000000000ff000000000000ff0000ffff00000000ff0000ffff00000000ff000000000000000000ffffffffffffffffff00000000ff000000000000ff000000000000ff000000000000000000ff000000000000000000ff000000000000ff000000000000ff000000000000000000ff000000000000ff000000000000000000ff000000000000ff000000000000ff000000000000000000ff00000000000000000000ff00000000000000000000ff000000000000ff0000000000ffffffffffffff00ffffffffffff000000000000ff000000000000ffffffffff00000000ffffffff00000000ffffff000000000000ffffffffffffff00000000ff00000000000000000000ff000000000000ff0000000000ffffffffffffff00ffffffffff00000000ffffffffffffffff00000000ffffffffffffffffff0000000000ffffffff00ff
1759za main g cc=147 nbbs=226 edges=355 ebbs=8 bbsum=4859
1760za main o 0x000040a0
1761za main r sym._obstack_begin sym._obstack_begin sym._obstack_begin
1762za main v s-64 s-88 s-116 s-96 s-80 s-67 s-65 s-66 s-86 r110 r114
1763za main t func.main.ret=int func.main.args=3 func.main.arg.0="int,argc" func.main.arg.1="char,**,argv" func.main.arg.2="char,**,envp"
1764za main h c82a35182e4217e7d7a4662c066be72bff254100ad71e29492350dba46fad184
1765EOF
1766RUN
1767
1768NAME=add types and function name on sig match
1769FILE=bins/elf/ls
1770CMDS=<<EOF
1771zs *
1772za main o 0x00004070
1773za main t func.sym.new_function_name.ret=int func.sym.new_function_name.args=2 func.sym.new_function_name.arg.0="int,NEWARGC" func.sym.new_function_name.arg.1="char **,NEWARGV"
1774za main n sym.new_function_name
1775s main
1776af
1777e zign.offset = true
1778z.
1779afs
1780afn
1781EOF
1782EXPECT=<<EOF
1783int sym.new_function_name (int NEWARGC, char **NEWARGV);
1784sym.new_function_name
1785EOF
1786RUN
1787