nnosov
f9635841f6
right caculation of DW_OP_GNU_entry_value, use caller's information
2020-01-26 15:36:33 +04:00
nnosov
898fa1e5e8
add dictionary implementation
2020-01-25 17:26:16 +04:00
nnosov
daf58bce70
save call-site parameters in caller
2020-01-25 17:25:59 +04:00
nnosov
4f94a9e1c2
dwarf stack: save expression and add is_exp_equal() to compare
...
expressions
2020-01-25 17:24:36 +04:00
nnosov
e48cfddeb0
print_stack() raw implementation
2020-01-25 17:22:45 +04:00
nnosov
80018f8808
use CFA derived from DWARF info instad of libunwind caller's SP since
...
libunwind don't show right SP for callers in shared objects
2020-01-24 16:54:05 +04:00
nnosov
48f37ec3e8
better logging formatting, print_registers()
2020-01-24 15:45:33 +04:00
nnosov
fdad3480f9
colorize log messages written to console correspondingly to severity of
...
the message
2020-01-24 14:57:20 +04:00
nnosov
f48bf41cbb
added print_registers() to context
2020-01-24 14:43:43 +04:00
nnosov
952b71d9d3
bunch of changes. mainly is: got right CFA from both libunwind & libdw
2020-01-23 19:49:51 +04:00
nnosov
15a56dfc63
fix dw_op_deref: fetch 8 byte value instead of 4
2020-01-17 09:47:28 +04:00
nnosov
dcfbcd0952
implemented base support of DWARF lexical block and call site
2020-01-17 09:44:59 +04:00
nnosov
e215c6af76
added dw_op_deref_size, adjusted dw_op_deref, fixed
...
DW_OP_GNU_entry_value handling
2020-01-17 09:44:01 +04:00
nnosov
6d6f0d2d45
another one fix to dw_op_breg_x. try to calc DW_OP_GNU_entry_value in
...
caller frame
2020-01-16 17:48:06 +04:00
nnosov
524c4fa52d
fixes for operations: dw_op_addr, dw_op_deref, dw_op_breg_x. Dereference
...
memory location if it's last on the dwarf stack
2020-01-16 17:21:26 +04:00
nnosov
1e395e5cac
fix for find dwarf CU for function, fix for find library base address
2020-01-16 16:51:36 +04:00
nnosov
18450ef1b2
added Makefile for framework
2020-01-16 16:41:33 +04:00
nnosov
7b69c304a9
.gitignore for framework
2020-01-16 16:41:03 +04:00
nnosov
ba9db80f07
introduce parent frame
2020-01-16 16:22:17 +04:00
nnosov
ab58889d93
better debug messaging
2020-01-16 15:30:05 +04:00
nnosov
1cddd773bc
use two stage unwinding: 1st is simply detection of function name using
...
libunwind and save functions cursor. 2nd - use dwarf information to cath
as more info as possible. this approach also allows to dereference
DW_OP_GNU_value operation since it need access to caller frame from
callee context
2020-01-16 14:54:42 +04:00
nnosov
eadbe9a80a
small comment that seems that DW_OP_GNU_entry_value does something that
...
DW_OP_entry_value
2020-01-16 12:34:02 +04:00
nnosov
132e0d3854
temporary extract from pst_parameter location dwarf handling to
...
handle_location()
2020-01-16 12:33:07 +04:00
nnosov
80285dd94e
fix SF in print_expr_block() due to wrong dereference of stack pointer
...
to memory location
2020-01-16 12:31:55 +04:00
nnosov
a60045d9f4
do not handle return parameter value since it's unaccessible in stack
...
trace (no functions returns)
2020-01-14 19:28:38 +04:00
nnosov
e2bdd31cef
use internal linkedlist implementation instead of std::list,
...
std::vector. make stack trace a bit more complex
2020-01-14 18:03:11 +04:00
nnosov
b49318cd11
retrieve return value of function, show frame number on print
2020-01-14 16:57:21 +04:00
nnosov
4bc8c15918
take care that parameter may have 'undefined' or 'constant' values
2020-01-14 14:54:47 +04:00
nnosov
2b3db0f936
better and more dwarf info printing
2020-01-14 14:20:03 +04:00
nnosov
eb9dc1341d
introduce printing functions and their parameters on base of dwarf info
2020-01-14 13:47:08 +04:00
nnosov
fc6a81b460
move calc_expression() & get_value() from context to DWARF stack
2020-01-14 12:21:00 +04:00
nnosov
5ee3935dc2
move out value retrieval from expression evaluation. add get_value()
2020-01-14 11:48:08 +04:00
nnosov
6b43827894
create and use mapping between DW_OP_Rex/breg(x) and appropriate
...
platform-dependent register number
2020-01-14 09:12:00 +04:00
nnosov
b955926d86
added DW_OP_GNU_entry_value operation handling
2020-01-14 08:56:49 +04:00
nnosov
fdfce06ee0
one bug fix & reformeatting of the code
2020-01-13 22:13:39 +04:00
nnosov
2f7dfeca0b
small reformatting of the code
2020-01-13 22:13:08 +04:00
nnosov
964c6d888e
remove unused code
2020-01-13 19:45:08 +04:00
nnosov
1abe271d10
small refactoring and bug fixing of DWARF operations processing
2020-01-13 18:49:11 +04:00
nnosov
a1954685e5
add suppoert of dw_op_fbreg & dw_op_call_frame_cfa DWARF operations and
...
use them
2020-01-13 18:37:56 +04:00
nnosov
50bebda6a1
initial implementation of DWARF Expression state machine parsing and
...
it's usage for retrieve arguments/variables of function
2020-01-13 17:21:46 +04:00
nnosov
08ba87ce98
raw and dirty implementation of handling of constant, stack,
...
arithmetical and logical operations on DWARF expression stack machine
2020-01-11 18:56:03 +04:00
nnosov
58f14a695d
extract context from handler and move it to common. define functions to
...
use in calculation of DWARF expressions
2020-01-11 14:56:45 +04:00
nnosov
8f7fed23dc
global refactoring: use libunwind to get stack frame, get rid on process
...
base address, better DWARF DW_OP_XXX handling, initial implementation of
parameter's values retrieval
2020-01-09 18:49:45 +04:00
nnosov
83fc2bc3ef
beterr DWARF expressions logging, trying to get CFI info for registers
2020-01-05 12:29:18 +04:00
nnosov
1f3a6237ac
pstrace: initial commit
2020-01-04 14:28:08 +04:00