d3bf49b06c7d56b371fe49f13490f7e548a8455a |
|
28-Jan-2014 |
Christopher Ferris <cferris@google.com> |
Fix memory leak. Change-Id: Iaf279d86fe1a9384bbc7cfa40e7b1783bb59a223
/external/libunwind/src/dwarf/Gparser.c
|
5f0e55ca7540d58e8c02dd67e1a062cad285f6c8 |
|
15-Nov-2013 |
Christopher Ferris <cferris@google.com> |
Move stack structures to allocations. The two structures (dwarf_state_record_t, dwarf_reg_state_t) total about 10,000 bytes. This causes failures when trying to call this function from the threaded interface working with a limited stack. Change-Id: Ib4113c14accd935fd20efff26dea5542fac60612
/external/libunwind/src/dwarf/Gparser.c
|
3b8254d3b911193d1270bed6e941f56479ef5a85 |
|
15-May-2013 |
Matt Fischer <matt.fischer@garmin.com> |
Fix unwind info freeing code in DWARF parser The DWARF code allocates its unwind_info objects out of a memory pool. The code which frees the object therefore calls the mempool freeing code. However, there are cases where the free code will be run with an unwind_info that was allocated through a different mechanism (e.g. an ARM exidx table entry). In these cases, the object should not be freed through the mempool code. To correct this, a check was added to ensure that the unwind_info is of the appropriate type before passing the object along to the mempool to be freed.
/external/libunwind/src/dwarf/Gparser.c
|
f92ecb61273bf58f9372f96868a9b8fb4d920ad4 |
|
03-Apr-2013 |
Arun Sharma <asharma@fb.com> |
dwarf: Fix memory leak Need to clean up by calling put_unwind_info() on code paths where fetch_proc_info() fails. Signed-off-by: Arun Sharma <asharma@fb.com>
/external/libunwind/src/dwarf/Gparser.c
|
890e23eb9d3ffd9be2a025189a21794b5ed0e0ff |
|
21-Sep-2012 |
Tommi Rantala <tt.rantala@gmail.com> |
Prefer NULL over zero
/external/libunwind/src/dwarf/Gparser.c
|
7d471b144013924f8d80e532a693fb77dbe73c2b |
|
19-Sep-2012 |
Tommi Rantala <tt.rantala@gmail.com> |
Define and use `CONST_ATTR'
/external/libunwind/src/dwarf/Gparser.c
|
e61c6f69c30d85584ece5250b8b82b03898384f5 |
|
15-Aug-2012 |
Tommi Rantala <tt.rantala@gmail.com> |
Fix function name duplication in Debug() output Fix function name duplication in Debug() output that was caused by manually prepending the debug message with the function name.
/external/libunwind/src/dwarf/Gparser.c
|
69e300e8f6f5e9b136a70d5f3ca80fb8deac6666 |
|
15-Apr-2012 |
Jiri Olsa <jolsa@redhat.com> |
dwarf: Get correct return from expression evaluation Currently the expression evaluation always succeeds, and possible error is not propagated to the caller. The ',' operator makes the condition always return 0. Signed-off-by: Jiri Olsa <jolsa@redhat.com> Tested-by: Paul Pluzhnikov <ppluzhnikov@google.com>
/external/libunwind/src/dwarf/Gparser.c
|
5e59e93d049b9c6261c0db456edb7ab323618b6c |
|
26-Mar-2012 |
Arun Sharma <asharma@fb.com> |
dwarf: introduce a valid bit for dwarf_reg_state_t Without this, cache_match() returns true when (ip == 0).
/external/libunwind/src/dwarf/Gparser.c
|
545023c2072975c6b85a09d5faf2cf05db10e064 |
|
14-Jul-2011 |
Ken Werner <ken.werner@linaro.org> |
Rework the lookup of the ARM specific unwind info Implement routines for finding the proc_info and searching the unwind table for the ARM backend. Signed-off-by: Ken Werner <ken.werner@linaro.org>
/external/libunwind/src/dwarf/Gparser.c
|
9e98f15e9aee12e67cd5956d06ccb559f6a06213 |
|
19-Mar-2011 |
Lassi Tuura <lat@iki.fi> |
Fast back-trace for x86_64 for only collecting the call stack. Adds new function to perform a pure stack walk without unwinding, functionally similar to backtrace() but accelerated by an address attribute cache the caller maintains across calls.
/external/libunwind/src/dwarf/Gparser.c
|
46e10c5abeeb93345367a70db2af3aba4440a49e |
|
27-May-2010 |
Arun Sharma <arun@sharma-home.net> |
Support .debug_frame based unwinding in _UPTi_find_unwind_table() Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
/external/libunwind/src/dwarf/Gparser.c
|
a9dce3c06e6ffcb83957e734d960505415118f00 |
|
25-Apr-2010 |
Lassi Tuura <lat@cern.ch> |
During the stack unwinding process, the return address points to the instruction after the call for a normal frame. libunwind uses IP-1 to lookup unwind information. However, this is not necessary for interrupted frames such as signal frames (or interrupt frames) in the kernel context. This patch handles both cases correctly. Based on work by Mark Wielaard <mwielaard@redhat.com>
/external/libunwind/src/dwarf/Gparser.c
|
4c553ceb2c3fcde6248b05953abc34e162917c4a |
|
20-Apr-2010 |
Lassi Tuura <lat@cern.ch> |
Identify end-of-stack by undefined return address location.
/external/libunwind/src/dwarf/Gparser.c
|
dac2d001afb1fa7040ca7d8ae57032f684d7023e |
|
20-Apr-2010 |
Lassi Tuura <lat@cern.ch> |
Identify signal frames by augmentation attribute.
/external/libunwind/src/dwarf/Gparser.c
|
7bd264e292fa2bfe6f2cc435b827e6d66d3cd0b6 |
|
23-Mar-2010 |
Arun Sharma <aruns@google.com> |
Fix up what looks like an unintentional semi colon. Thanks to Lassi Tuura for noticing it.
/external/libunwind/src/dwarf/Gparser.c
|
9626d66019599de925b9ad1f216388d1c890d193 |
|
25-Nov-2009 |
Paul Pluzhnikov <ppluzhnikov@google.com> |
Fix a race condition in dwarf unwinding. Original code was accessing rs_cache memory without holding a lock in some cases. If there was sufficient cache pressure, entry being accessed may be overwritten by another thread, resulting in a data race. We now make a thread local copy of the data, before releasing the lock. If we end up supporting UNW_CACHE_PER_THREAD properly in the future, this memcpy should be unnecessary.
/external/libunwind/src/dwarf/Gparser.c
|
2648a77f0499b2aeb3d624a1b44d2f1d2dd01835 |
|
19-Nov-2009 |
Paul Pluzhnikov <ppluzhnikov@google.com> |
Simplify control flow Greetings, Attached patch gets rid of additional unnecessary branch (rs_get_cache can not return NULL unless caching_policy is UNW_CACHE_NONE), gets rid of goto's, and makes apply_reg_state (major CPU consumer) execute with cache lock not held (before the patch, apply_reg_state was called with lock held for newly-inserted entries, but not for found-in-cache entries). Tested on Linux/x86_64 with no regressions. Thanks, -- Paul Pluzhnikov
/external/libunwind/src/dwarf/Gparser.c
|
f958b9dc4f19c94281b2679b3a6bbb39828beb90 |
|
19-Nov-2009 |
Paul Pluzhnikov <ppluzhnikov@google.com> |
Get rid of some bogus checks. Greetings, Attached patch is rather on the obvious side: - rs1 can't be NULL since it's assigned on previous line - rs_new never returns NULL, and if it ever did, we'd crash on memcpy that preceeds the NULL check. Tested on Linux/x86_64 with no regressions. Thanks, -- Paul Pluzhnikov
/external/libunwind/src/dwarf/Gparser.c
|
d7089547e2d13c2ae5f9ad896dc4bc5dc796fb0b |
|
24-Oct-2009 |
Arun Sharma <aruns@google.com> |
Fix a warning message on i386 Without this, we may be accessing data beyond the array bounds.
/external/libunwind/src/dwarf/Gparser.c
|
839db77b7b8c74a9a1c844e82bc30b9a8022908f |
|
25-Sep-2009 |
Paul Pluzhnikov <ppluzhnikov@google.com> |
Wait if there is contention on the cache The behavior on wait vs abort unwind depends on the locking primitive chosen by the user. This makes the API consistent and independent of the locking primitive.
/external/libunwind/src/dwarf/Gparser.c
|
84d4150668d83a98420cc91e00026159c3d74a81 |
|
21-Sep-2009 |
Paul Pluzhnikov <ppluzhnikov@google.com> |
Allow caller to block signals. Greetings, We use libunwind just for stack traces (I suspect many others do as well). The use pattern is: GetStackTrace(void** result, int max_depth) { ... unw_getcontext(&uc); unw_init_local(&cursor, &uc); while (n < max_depth) { if (unw_get_reg(&cursor, UNW_REG_IP, (unw_word_t *) &ip) < 0) { break; } result[n++] = ip; if (unw_step(&cursor) <= 0) { break; } } Given this usage, it is quite convenient for us to block signals (or prevent signal handlers from re-entering libunwind by other means) at the "top level", which makes most of the sigprocmask calls performed by libunwind itself unneccessary. The second patch in this series adds a configure option which removes most of the sigprocmask calls. Attached patch is a preliminary for it -- consolidating all of the "sigprocmask; mutex_lock;" sequences into lock_acquire and "mutex_unlock; sigprocmask;" sequences into lock_release. Thanks, -- Paul Pluzhnikov commit 402d15b123d54a7669db7cf17a76dd315094e472 Author: Paul Pluzhnikov <ppluzhnikov@google.com> Date: Mon Sep 21 10:18:28 2009 -0700 Replace "sigprocmask + mutext_lock" with a single lock_acquire. Likewise, replace "mutext_unlock + sigprocmask" with lock_release.
/external/libunwind/src/dwarf/Gparser.c
|
ec53de82ec7c00adb56c9e8b1b03d489a69c494b |
|
16-Mar-2009 |
Arun Sharma <aruns@google.com> |
[PATCH] Avoiding name conflict with the GNU-specific dprintf in stdio.h Signed-off-by: Yang Zhang <yaaang@gmail.com>
/external/libunwind/src/dwarf/Gparser.c
|
55fe524775b47f16589e3fc8f28ccffe5e88a048 |
|
16-Aug-2006 |
Arun Sharma <arun.sharma@google.com> |
Cleanup the hash() function copied from ia64 Fixes the compiler warning on x86-32. Signed-off-by: Arun Sharma <arun.sharma@google.com>
/external/libunwind/src/dwarf/Gparser.c
|
a5d0c1f8b77ae49acc5a48bd43d043a66f66f131 |
|
16-Aug-2006 |
Arun Sharma <arun.sharma@google.com> |
Remove HAVE___THREAD. This was never tested. Signed-off-by: Arun Sharma <arun.sharma@google.com>
/external/libunwind/src/dwarf/Gparser.c
|
58888a5060d5e732c1ab1f0bf6a6c480153dabbd |
|
27-Jul-2006 |
Arun Sharma <aruns@sharma.corp.google.com> |
(dwarf_find_save_locs): Also apply register-state after parsing the FDE
/external/libunwind/src/dwarf/Gparser.c
|
4312719cbc30dfa9e188b24e85185c325e671d00 |
|
27-Jul-2006 |
Arun Sharma <aruns@sharma.corp.google.com> |
[dwarf] Need to guard against multiple threads accessing the rs cache. Signed-off-by: Arun Sharma <arun.sharma@google.com>
/external/libunwind/src/dwarf/Gparser.c
|
c5dc3c150a4fab2962f8d32f78d80ce857e662a5 |
|
27-Jul-2006 |
Arun Sharma <aruns@sharma.corp.google.com> |
[dwarf] Allow return address column to differ from function to function. Signed-off-by: Andrey Veskov <Andrey.Veskov@intel.com> Signed-off-by: Arun Sharma <arun.sharma@google.com>
/external/libunwind/src/dwarf/Gparser.c
|
60b7af702ac56265798ec7202e05f0439c992360 |
|
27-Jul-2006 |
Arun Sharma <aruns@sharma.corp.google.com> |
(dwarf_find_save_locs): Add a comment. Now that dwarf_find_save_locs() not just finds the save-locations but also updates the cursor-state, document this fact (the function really is misnamed now).
/external/libunwind/src/dwarf/Gparser.c
|
3dfde7a3f089cf5c36ff7ed14d8d31034b5eafb8 |
|
27-Jul-2006 |
Arun Sharma <aruns@sharma.corp.google.com> |
(dwarf_find_save_locs): put_unwind_info() is not needed in the cached case.
/external/libunwind/src/dwarf/Gparser.c
|
00db7f752ac26c5aab6b4ca03531a2c3e212b135 |
|
27-Jul-2006 |
Arun Sharma <aruns@sharma.corp.google.com> |
Implement a ip -> dwarf_reg_state cache. Signed-off-by: Arun Sharma <arun.sharma@google.com>
/external/libunwind/src/dwarf/Gparser.c
|
df3d6af467fa67e2a2127b9c49b71359982c099f |
|
20-May-2005 |
hp.com!davidm <hp.com!davidm> |
Don't include <string.h>. Include "libunwind_i.h" instead of "tdep.h". (Logical change 1.294)
/external/libunwind/src/dwarf/Gparser.c
|
c14371409aea0c3f90cdd00f529b347d8a5954f4 |
|
03-May-2005 |
mostang.com!davidm <mostang.com!davidm> |
(fetch_proc_info): Decrement IP before searching for dynamic/static unwind-info, since DWARF expects us to do so (unlikey for ia64, where we are guaranteed that the (return) IP points to the correct unwind-info). 2004/11/17 02:43:39-08:00 mostang.com!davidm (run_cfi_program): Switch over to using dwarf_cie_info instead of unw_dyn_dwarf_fde_info_t. (fetch_proc_info): Clear c->pi before filling it in. (put_unwind_info): If we got non-dynamic unwind-info, free it via a call to mempool_free(). (parse_fde): Switch over to using dwarf_cie_info instead of unw_dyn_dwarf_fde_info_t. (apply_reg_state): Drop accessees to c->cfa_is_sp. 2004/10/25 17:38:51+02:00 homeip.net!davidm Fix typo: DW_CFA_CFA_expression -> DW_CFA_expression. 2004/10/21 11:15:44+02:00 homeip.net!davidm Auto merged 2004/10/21 11:15:12+02:00 homeip.net!davidm (run_cfi_program): Add missing newline in Debug statement. (apply_reg_state): It was wrong to do a dwarf_get() on the CFA-location returned by eval_location_expr(). Instead, we must make sure we're dealing with a memory-location and, if so, just extract the memory address as the CFA. Also, update c->cfa only _after_ the other frame-state has been updated. This seems to be necessary for correct parsing of the sigtramp unwind info. Not sure yet this is 100% correct, but it gets us through Gtest-resume-sig. 2004/10/19 23:24:56-07:00 mostang.com!davidm (run_cfi_program): Fix typos in Debug statements. (Logical change 1.290)
/external/libunwind/src/dwarf/Gparser.c
|
642607dbaab4a55959c6ddb7f6853b2d28d935f7 |
|
20-Aug-2004 |
homeip.net!davidm <homeip.net!davidm> |
Cast register indices of type unw_word_t to (unsigned int) before printing them. Avoids compiler-warning for 64-bit targets. (apply_reg_state): Handle the special case where the stack-pointer plays the role of the CFA and the stack-pointer hasn't been saved. This is based on a patch by Max Asbock. (Logical change 1.253)
/external/libunwind/src/dwarf/Gparser.c
|
aae368ace23687c4f50f575111dc0196350b2c55 |
|
19-Aug-2004 |
homeip.net!davidm <homeip.net!davidm> |
Drop DWARF-parsing debug prints from level 16 to 15. (Logical change 1.248)
/external/libunwind/src/dwarf/Gparser.c
|
88160e0f66447d25bdc4cd0024912e08175b4f58 |
|
17-Aug-2004 |
homeip.net!davidm <homeip.net!davidm> |
Rename: src/dwarf/Gparser-dwarf.c -> src/dwarf/Gparser.c (Logical change 1.241)
/external/libunwind/src/dwarf/Gparser.c
|
3f9d2e9c5c1cfde324c08204259b65f74b2746a1 |
|
17-Aug-2004 |
homeip.net!davidm <homeip.net!davidm> |
Initial revision
/external/libunwind/src/dwarf/Gparser.c
|