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