Commit Graph
40 Commits
Author SHA1 Message Date
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