Commit Graph

61 Commits

Author SHA1 Message Date
Théophile Bastian 4522f97717 Package tarball: ignore heavy useless files 2019-09-27 15:08:45 +02:00
Théophile Bastian 5282f4eb3d Makefile: clarify bap/opam installation 2019-07-16 10:36:26 +02:00
Théophile Bastian 77f937a368 Cleanup repository 2019-07-15 14:12:13 +02:00
Théophile Bastian f81ca9e33b Add csmith test suite 2019-07-15 14:07:32 +02:00
Théophile Bastian a62e64513c Add gzip to testsuite 2019-07-15 14:07:32 +02:00
Théophile Bastian b2cf0a77df Add heuristics analysis 2019-07-15 13:56:02 +02:00
Théophile Bastian c74ec873eb Synth: tolerate undef rbp merge on leaf blocks 2019-07-07 19:04:47 +02:00
Théophile Bastian faef68303e Chk_gen_eh_frame: exit with 1 upon failure 2019-07-07 11:50:50 +02:00
Théophile Bastian 4811d68213 synth: tolerate rbp def/undef merges (one way only)
The easy way of RBP defined vs. undefined merge is implemented (if a
block is defined with RBP undef, we tolerate merging upon it with a
defined RBP by losing this information).
2019-07-05 17:17:43 +02:00
Théophile Bastian 1aa6caa36c csmith check: pyramid: tolerate 1st row address
The first row of a pyramid can have a larger location delta than the
following, because there can be other things than a push between the
function entry point and the first push
2019-07-05 17:14:22 +02:00
Théophile Bastian 1e39d97c88 Synth: do not follow jumps outside of sub 2019-07-05 15:30:17 +02:00
Théophile Bastian a729f654b0 csmith check: fix break in pyramid detection 2019-07-05 15:29:47 +02:00
Théophile Bastian a3a33d4c88 Add performance analysis code + gzip eval 2019-06-11 22:15:32 +02:00
Théophile Bastian db32807dd0 Fix rbp pop heuristic
Add criterion to rbp pop detection:
  iii) that are the last references to %rbp in a `Def` in the
    subroutine's CFG (cf (ii)).
2019-06-11 18:44:05 +02:00
Théophile Bastian 4d6187ac21 Fix recursive call synthesis 2019-06-11 03:22:55 +02:00
Théophile Bastian ec75b2fc92 Fix tail call synthesis 2019-06-11 03:22:22 +02:00
Théophile Bastian 3b2cad0dc4 Revert to bap1.5 2019-06-11 03:21:56 +02:00
Théophile Bastian f1b84f1fbe Add `make tarball` 2019-05-28 21:40:05 +02:00
Théophile Bastian 07e6fd821e README: dependencies instructions 2019-05-28 21:16:40 +02:00
Théophile Bastian ad07f1d30f check_gen_eh_f: better reporting 2019-05-28 21:12:49 +02:00
Théophile Bastian e7c007e811 Compile libdwarfw from master Makefile 2019-05-28 17:07:35 +02:00
Théophile Bastian 8d49af7be8 Use bap 1.6 2019-05-28 17:00:44 +02:00
Théophile Bastian 174c4e8143 master script: fix generate to same file 2019-05-28 16:35:17 +02:00
Théophile Bastian 6df057260d Add uncommitted tests and curiosities 2019-04-05 16:39:21 +02:00
Théophile Bastian 11fa3fab40 Check_gen: patch for flat vs pyramid clang tables
clang generates tables like this

      LOC           CFA      rbx   rbp   r14   r15   ra
   00000000000028a0 rsp+8    u     u     u     u     c-8
   00000000000028a1 rsp+16   u     u     u     u     c-8
   00000000000028a3 rsp+24   u     u     u     u     c-8
   00000000000028a5 rsp+32   u     u     u     u     c-8
   00000000000028a6 rsp+40   u     u     u     u     c-8
   00000000000028aa rsp+64   c-40  c-16  c-32  c-24  c-8
2019-04-05 16:32:00 +02:00
Théophile Bastian 344ac84ef3 Ignore ghost subroutines for clang
A ghost subroutine is a subroutine having, in the IR representation, no
content. At clang -O0, some might be generated, eg.

<foo_func>:
foo_addr        nop

which translates to Empty in BIL.
2019-04-05 11:23:18 +02:00
Théophile Bastian 6c18d9f537 Use rbp only on the subs where we need it 2019-04-05 11:23:13 +02:00
Théophile Bastian 29ab916c55 Fix next_instr_graph out-of-subroutine pointers
The disasm-based next_instr_graph would introduce next instructions out
of the current subroutine for eg. calls, jmp to plts, etc.
2019-04-04 19:47:36 +02:00
Théophile Bastian 5f7dfb6f5f Use disasm to generate next_instr_graph 2019-04-04 13:49:39 +02:00
Théophile Bastian 3d336de196 Add flag to never go back to undefined rbp
Once rbp has been set in the DWARF, if this flag is set, nothing will
remove it from the table. This mimicks gcc and allows us to check easily
our tables against theirs.
2019-04-04 11:52:47 +02:00
Théophile Bastian 4313ee91a7 Curiosities: `mov %rsp, %rbp` not switching to rbp tracking 2019-04-04 11:51:57 +02:00
Théophile Bastian c3050da113 Csmith checker: check rbp column 2019-04-03 18:20:03 +02:00
Théophile Bastian 5d6929f84c csmith_gen: add COMPILE_CMD option 2019-04-03 12:22:07 +02:00
Théophile Bastian 2b2d44c18e csmith/check_gen_eh_frame: verbose mode 2019-04-03 12:19:53 +02:00
Théophile Bastian 30fe23b541 Fix rbp to rsp switch
Use rsp+16, because we'll pop the saved rbp from the stack just after
2019-04-03 12:19:53 +02:00
Théophile Bastian 180e32a4b3 Generate RBP column when needed 2019-04-03 12:19:49 +02:00
Théophile Bastian fc8c9c45d6 Enhance eh_frame validity checker/differ 2019-03-31 16:26:55 +02:00
Théophile Bastian 681153b954 Script to check csmith synth validity 2019-03-29 19:26:58 +01:00
Théophile Bastian 719fa27f99 Ensure a crashing FDE still generates other FDEs 2019-03-29 19:24:51 +01:00
Théophile Bastian d7c1aaa6b5 CSmith: add script to generate tests 2019-03-18 20:50:49 +01:00
Théophile Bastian 693a48f070 Add synthesize_dwarf.sh
Update documentation and Makefile accordingly.
2019-03-18 14:27:24 +01:00
Théophile Bastian 8fa2bc5952 ml_dwarf_write: write to a separate file
Don't try to write into the ELF file directly, use objcopy.

Updated README
2019-03-18 14:20:53 +01:00
Francesco Zappa Nardelli 484b20c732 initial commit of ocaml->c wrappers. as bap linking is already complicated, two independent binaries communicate via a tmp.marshall file for now. 2018-12-30 10:10:51 -08:00
Théophile Bastian 828abdf495 Remove relocation data in dwarf_write 2018-12-23 15:36:24 +01:00
Théophile Bastian effccb087e Convert Simplest types to C-like types 2018-12-23 12:27:38 +01:00
Théophile Bastian db2f5787d3 Tentative rewrite of Dareog to write DWARF to ELF
Rewrite from Simon Ser's code from Dareog. Yet untested.
2018-12-23 11:15:46 +01:00
Théophile Bastian 465c951c0d Add libdwarfw as submodule 2018-12-07 17:16:18 +01:00
Théophile Bastian 0c42aa6bcf Ignore and remove *.plugin compiled files
Added by mistake previously — link to a built file under _build. Should
not be there and prevents compilation.
2018-12-07 17:15:20 +01:00
Théophile Bastian 5ecd56a134 Simplest: compute first and last address of sub 2018-11-20 16:55:56 +01:00
Théophile Bastian e021d781f4 Use AddrMap instead of CfaChange list 2018-11-19 18:11:20 +01:00