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
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