Commit Graph
100 Commits
Author SHA1 Message Date
nnosov 657ddf182b Implement range of memory access validation instead of pointer and use
it. Export new validator to users.
Various small fixes
2020-05-06 11:49:22 +04:00
nnosov f483155e07 special handling of CFA pseudo register since libunwind provides wron
value
2020-05-02 13:56:39 +04:00
nnosov d1441b3b6f haide frame storage from user and introduce separate method
pst_get_register() to obtain register value within function's stack
frame
2020-05-02 13:51:31 +04:00
nnosov 1825515ca0 move printing of stack trace headers from library to user's program 2020-04-25 09:09:55 +04:00
nnosov 3e72295ee9 rename logger type. disable debug logging by default. extend test to
check pointer validity
2020-04-25 08:05:45 +04:00
nnosov 7206abc6a9 check pointer's validity. clean-up unused bits in parameter's value 2020-04-25 07:38:46 +04:00
nnosov 41d8a846fb handle syscall's return codes more accurate 2020-04-25 07:35:53 +04:00
nnosov 187032a773 introduce pointer dereference validation method 2020-04-23 09:22:56 +04:00
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