Commit Graph
107 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
CFA-deref
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 59cf6fee85 remove unneeded file 2020-01-23 19:50:49 +04:00
nnosov 4dd3e48309 makefile clean-up 2020-01-23 19:50:38 +04:00
nnosov d78a716df5 readme: added good link to explanation what is CFA on X86_64 2020-01-23 19:50:20 +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 6e6e0c22ed add output about frame state to gdb script 2020-01-23 19:27:38 +04:00
nnosov a919d73fb8 add core file, .gdb_history and /*.txt to gitignore 2020-01-22 20:08:25 +04:00
nnosov a427b63cb5 run trace under GDB in batch mode and print SP in every frame 2020-01-22 20:04:39 +04:00
nnosov f1a2039996 update readme with a good link to DW_AT_GNU_call_site_XXX explanation 2020-01-20 10:58:17 +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 f044133d8a small changes 2020-01-16 14:52:34 +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 06385ba36e add more useful links to readme 2020-01-16 12:30:59 +04:00
nnosov ece42e1c2c fix markdown syntax 2020-01-15 13:59:06 +04:00
nnosov 12fd67bcd0 Useful lins added 2020-01-15 13:55:13 +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 71204c7a21 update readme 2020-01-13 19:45:08 +04:00
nnosov f05d46b855 added email address of an author 2020-01-13 19:41:45 +04:00
nnosov f5914dc18a update readme.md 2020-01-13 19:02:39 +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