Commit Graph
100 Commits
Author SHA1 Message Date
nnosov 46bcfad427 small refactoring. memory leak fix 2020-04-23 09:22:20 +04:00
nnosov e18fdd78a1 support of volatile & revalue references 2020-04-22 13:47:57 +04:00
nnosov b35f9fcb01 rename function-related function's names 2020-04-22 13:33:36 +04:00
nnosov 39f34d7814 better printing of parameters. export access to parameter's children 2020-04-22 13:05:04 +04:00
nnosov e5531f9986 add support of pointers to functions, small refactoring of pst_parameter 2020-04-19 11:53:32 +04:00
nnosov ab5863c981 Update README.md 2020-04-18 21:58:27 +04:00
nnosov a0475eeda7 make visible to user libunwind function's context, SP register and CFA 2020-04-16 20:54:53 +04:00
nnosov a36d8ff7b9 update information about pst interface 2020-04-16 20:23:03 +04:00
nnosov bc1b1577a5 cleanup of external interface info 2020-04-16 20:18:37 +04:00
nnosov 36786245c7 small optimization in code related to handling DWARF information about
parameter
2020-04-16 19:20:19 +04:00
nnosov c7e9925efe extend to user types of parameter and initialize them. introduce
'typename' to parameter_info, it's C/C++ name of parameter type. rewrite
parameter printing using new capabilities.
2020-04-16 18:56:40 +04:00
nnosov f9f26f5f7d use bitset for parameter state instead of separate boolean fields 2020-04-16 13:45:26 +04:00
nnosov 5a1dd37dd4 check that basic handling (actually, unwind_simple) wer performed and if
not, do it from unwind_pretty
2020-04-16 13:27:33 +04:00
nnosov 62a6faeb76 clean-up Makefile 2020-04-16 13:26:18 +04:00
nnosov aae7ee6a20 tune eclipse project settings 2020-04-16 13:25:53 +04:00
nnosov f3dc0a0e04 Added 'Usage' chapter to readme 2020-04-06 09:34:16 +04:00
nnosov 3317cd212b exprt next_function, next_parameter function_info, parameter_info to
external interface of the library
2020-04-05 14:59:41 +04:00
nnosov e2e7535149 introduce separate print functions for 'simple' and 'pretty' variands of
unwinding
2020-04-05 13:33:19 +04:00
nnosov 3adc8eb1ef remove unused includes 2020-04-05 13:32:03 +04:00
nnosov 5b4d7d0349 refactor of function unwinding 2020-03-07 10:15:56 +04:00
nnosov 09f6432061 fix include path 2020-02-09 20:09:41 +04:00
nnosov 259ad6b68d remove libstdc++ from dependencies 2020-02-09 20:09:24 +04:00
nnosov 1d43624115 update readme 2020-02-09 20:09:01 +04:00
nnosov c09c6c1f1b make non-public context functions static 2020-02-05 22:35:08 +04:00
nnosov c4376721ad minor allocator changes 2020-02-05 22:34:48 +04:00
nnosov d52b92b8dc make dw_op_XX static 2020-02-05 22:34:21 +04:00
nnosov e2c9ba33ba change expternal interface function names and description 2020-02-05 19:48:18 +04:00
nnosov 80ccab3948 add _GNU_SOURCE to project configuration for fix indexing of source code
by Eclipse
2020-02-05 17:06:52 +04:00
nnosov 80a4df4373 fix Makefile clean, fix compilation warnings 2020-02-05 16:30:40 +04:00
nnosov cdacdce8e5 fix compilation errors related to C specifics 2020-02-05 16:14:52 +04:00
nnosov ef055f0324 various changes related to refactor of header files 2020-02-05 12:45:06 +04:00
nnosov 064951f4c8 build shared version of the library 2020-02-05 12:23:47 +04:00
nnosov 24efc4580b implement external interface to library and use it in tests. need to be
reworked a bit to use file descriptor or buffer provided to callse
2020-02-05 12:13:26 +04:00
nnosov d4e9307fe1 add pst_handler_new() 2020-02-05 12:12:02 +04:00
nnosov bfb9200d3a Merge pull request #2 from nnosov/move_to_c
code hierarchy refactoring
2020-02-05 09:42:24 +04:00
nnosov 3c7105eb97 code hierarchy refactoring 2020-02-05 09:41:22 +04:00
nnosov f3c50f6472 Merge pull request #1 from nnosov/move_to_c
Move to c
2020-02-05 07:12:36 +04:00
nnosov c21c623be4 handle DW_AT_low_pc & DW_AT_call_tail_call for call-site 2020-02-05 07:02:19 +04:00
nnosov 0d06b02747 small refactoring and bug-fixing 2020-02-04 19:55:51 +04:00
nnosov 813fe52bf1 pst_allocator refactoring, use mutex to access fields 2020-02-03 18:06:25 +04:00
nnosov 70e39e14a9 refactor dwarf_handler 2020-02-03 17:55:33 +04:00
nnosov ac408ab21a small refactoring 2020-02-03 15:46:22 +04:00
nnosov 810ce7519d do not use struct function pointers elsewhere, use them only in case
when polymorphysm needed
2020-02-03 15:04:09 +04:00
nnosov b79db14d0c pst_parameter: do not return failure if location expression calculation
failed, because it don't allow to add parameter to function
2020-02-02 15:53:16 +04:00
nnosov cfb9ac91c8 remove extra logging 2020-02-02 15:46:13 +04:00
nnosov 6f0f3fa795 handle_location: fix value retrieval 2020-02-02 15:44:52 +04:00
nnosov 1d50b04ea0 dwarf_stack: fix set/get value 2020-02-02 15:44:21 +04:00
nnosov 99f4bd72be fixed several bugs related to refactoring 2020-02-02 14:58:53 +04:00
nnosov 5e6b78a82c fix compilation and linking issues. use __cxa_demangle for now so depend
on libstdc++
2020-02-02 12:54:54 +04:00
nnosov dbaffdf689 fix most of compilation warnings 2020-02-02 12:28:43 +04:00
nnosov abba9f735b rename hash_miltimap.c->cpp 2020-02-02 12:15:18 +04:00
nnosov ef4cb44fb2 pst_function reimplemented in C 2020-02-02 10:25:40 +04:00
nnosov 836a0a9f29 minor refactoring 2020-02-01 21:26:07 +04:00
nnosov 0064239418 call_site_XXX moved to C language, added my oldest hash_map
implementation
2020-02-01 21:19:55 +04:00
nnosov dbd8e31129 define pst_log macro to use global log 2020-02-01 18:11:50 +04:00
nnosov 7c13dfa9e1 define pst_alloc & pst_free macro to use global allocator 2020-02-01 17:57:43 +04:00
nnosov e27f0c5c18 move pst_call_site & pst_parameter to C language and separate them 2020-02-01 17:09:12 +04:00
nnosov 8251ba526f all code except of pst_function & pst_handler rewritten on C language.
Logger nad Allocator decided to be a global for all library
2020-02-01 15:19:55 +04:00
nnosov fcdb15ba95 remove unused code from dwarf_stack 2020-01-29 10:05:18 +04:00
nnosov 340abfc31c fix pst_alloc_init.. names and stub for pst_alloc_init_cutom() 2020-01-28 20:17:47 +04:00
nnosov 701976beb0 remove next_frame from pst_context since it's not used 2020-01-28 19:27:25 +04:00
nnosov 097c0f93d3 added stub for pst_alloc_fini() 2020-01-28 19:26:33 +04:00
nnosov e62db2210d move pst_context to separate files 2020-01-28 16:44:43 +04:00
nnosov 6da79926d0 add simple libc-based allocat to extend it in future 2020-01-28 16:31:32 +04:00
nnosov c2fdeccd34 move register-related code to separate files, move DWARF module & handle
to pst_context, move get_frame() from pst_handler to pst_function
2020-01-28 14:24:32 +04:00
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 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