715a8f371a
Add two csmith benching scripts
2018-06-04 15:07:38 +02:00
7960b5ba08
Add and implement --enable-deref-arg feature
2018-06-01 19:52:41 +02:00
df2d6179a8
Add a libunwind-powered stack_walker
...
Preserves stack_walker's interface (one can link against stack_walker or
stack_walker_unwind indifferently).
2018-05-18 11:33:39 +02:00
6854eb56e4
[BREAKING CHANGE] Unwinding stops at the end
...
This introduces a breaking change: [undefined] was previously
represented by 0, and is now represented by
`numeric_limits<uintptr_t>::max()`
2018-05-16 16:51:01 +02:00
209e668505
Add READMEs
2018-05-15 18:13:09 +02:00
ee6e534fc9
Add .rodata to compare-sizes
2018-05-15 16:14:17 +02:00
49cd75b7b7
Gen_eh_elf: add --force (force re-generation)
2018-05-11 17:58:09 +02:00
4ccd49fb8a
gen_eh_elf: handle -O{0,1,2,3,s} directly
2018-05-11 15:53:02 +02:00
52ea92dcf8
Fix various problems in PC list handling
2018-05-11 15:52:38 +02:00
bc05e8270c
Add --pc-list switch to generate_eh_elf
2018-05-11 15:52:08 +02:00
13ebe46df2
Refactor extract_pc
...
This is meant to make it easy to call the pc extractor from some other
python code as well, to call it from generate_eh_elf.py
2018-05-11 13:09:58 +02:00
26d7b2afd5
Add C++ code to make use of .pc_list
2018-05-11 13:09:35 +02:00
83b304db95
Add script to extract all valid PCs of ELFs
2018-05-09 17:57:26 +02:00
789e79613c
Refactor python shared snippets
2018-05-09 17:55:57 +02:00
066f1f06c1
Add compare_sizes: compare eh_elf vs eh_frame size
2018-05-09 15:32:42 +02:00
ba75dfa95f
Fix eh_elf path error
...
The function `readlink` does not null-terminate its strings…
2018-05-09 15:32:34 +02:00
7b6ff32465
Enhance Makefile for tests
2018-05-09 12:40:52 +02:00
9aa74ad1f7
Add parameter --remote
...
Allows to offload the heavy steps (the compilation .c -> .o) to some
remote server
2018-05-07 15:49:22 +02:00
afe2d0b7c7
stack_walker: adapt to switch generation policies
2018-05-02 15:08:37 +02:00
c18027a0d2
generate_eh_elf.py: update to use dwarf-assembly options
2018-05-02 15:08:31 +02:00
4b327c7c56
eh_elf generator: now also producing global switch
2018-05-02 14:58:48 +02:00
601fb2fcd0
Python: make compatible with 3.5
...
subprocess.*(…, encoding='utf-8') → .decode('utf-8')
2018-05-02 14:47:05 +02:00
f8cdeda962
Ignore *.bin under tests/
2018-04-27 17:33:16 +02:00
b8f6a2302c
Fix stack walk display
2018-04-27 17:32:49 +02:00
4595bb48fb
StackWalker: multiple fixes
...
Includes adding a few failsafe guards, translating the instruction
pointer before handing it to the eh_elf.so, a few cosmetic changes, ...
2018-04-27 17:31:53 +02:00
f00ec34b4e
CodeGenerator: use hex for switches' bounds
2018-04-27 17:07:58 +02:00
467cfbf0cc
CodeGenerator: fix badly generated eh_elf
2018-04-27 17:07:34 +02:00
0318fabeb0
generate_eh_elf: compile in C to avoid name mangling
...
This made symbol lookup problematic…
2018-04-27 11:36:36 +02:00
39ecc7a8c1
Use those functions in stack_walked.cpp test
2018-04-27 11:06:25 +02:00
f7151c6621
Implement missing stack_walker.cpp functions
2018-04-27 11:06:06 +02:00
da38a9d521
Move _fde_func_t typedef to shared .h
2018-04-27 11:05:34 +02:00
69e6c10c36
Add fde_handler_for_pc (untested)
...
This is an abstraction function to get the _fde_yyy function out of the
eh_elf for a given PC
2018-04-26 19:48:00 +02:00
4ab7d0a594
Add a simple stack_walker test
2018-04-26 19:17:34 +02:00
f587eadbcc
Add a tentative stack walker using eh_elfs
...
This is only a beginning: this does so far load the appropriate
eh_elf.so files and read a context. Unwinding is still absent.
2018-04-26 19:16:01 +02:00
be221f68d5
Check mtime to avoid recreating existing so
2018-04-26 19:15:37 +02:00
353a97c49d
Refactor code generation: use shared/context_struct.h
...
This allows #include'ing `context_struct.h` in the stack walker
implementation as well
2018-04-25 18:11:59 +02:00
771aec2621
Remove debug output
2018-04-25 17:49:02 +02:00
ff0f8c90df
Allow unimplemented registers to appear in DWARF
...
The presence of such a register — eg. rcx, which is actually used in CFA
on a few lines of libgcc_s.so on my system — will yield an assert(0) in
the produced code, but will at least not fail to compile alltogether.
2018-04-25 17:34:31 +02:00
31f811eca4
Add python script to compile easily
2018-04-25 17:33:59 +02:00
c07b0623e4
Add generation of a lookup function
2018-04-24 17:44:09 +02:00
44543d85d3
Generate compilable C code, untested
2018-04-23 18:58:05 +02:00
d13b625cc5
SimpleDwarf, DwarfReader: fix machine registers
2018-04-23 16:46:03 +02:00
dc6072e991
Add simple main
2018-04-23 16:22:32 +02:00
f6e9b8ebd2
Add Makefile
2018-04-23 16:22:27 +02:00
f9f64e9606
SimpleDwarf: few fixes
2018-04-23 16:12:10 +02:00
8bf2e1e49d
SimpleDwarf: add pretty-printing operator<<
2018-04-23 15:59:10 +02:00
13e3647629
Add libdwarfpp-based DwarfReader
2018-04-23 15:09:52 +02:00
8c2191f487
Add simplistic Dwarf representation
...
This is only representing a small fragment of Dwarf, **on purpose**: in
practice, the huge majority of Dwarf observed in the wild belongs to
this fragment.
2018-04-23 15:09:48 +02:00
32c3ec3745
Add README
2018-04-20 11:41:06 +02:00
c3109c60f4
Initial commit
2018-04-20 11:33:48 +02:00