History log of /external/libunwind/src/dwarf/Gparser.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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