2c0f916cac65c1a14e9a917452a430c490ff9620 |
|
10-Feb-2016 |
Christopher Ferris <cferris@google.com> |
Make sure that elf_image structure is copied. A previous change modified the code so that a pointer to the elf_image structure from the map data was returned instead of copied. This can cause a race condition when doing local unwinds if the map needs to be rebuilt. One thread might have a pointer to a freed data structure. To fix this, make sure that the elf_image is always copied when the contents are going to be used. In addition, remove the map pointer in the mapped data because it could also be stale when a local unwind causes a map rebuild. Add a big comment in front of the elf_image structure to explain this so it won't happen again. Bug: 27123610 Change-Id: I09166be04b62b32db82a2b85282e464924e69e2d
/external/libunwind/include/tdep-arm/libunwind_i.h
|
06e604a3cc470460af1ff7a179ccc7e51bd98072 |
|
02-Feb-2016 |
David Srbecky <dsrbecky@google.com> |
Cache decompressed .gnu_debugdata sections. Change-Id: Ia7260642e7567acb72b1cce38016ce063acbf521
/external/libunwind/include/tdep-arm/libunwind_i.h
|
18cf8168ef34750ffae6451bded31ff06d2d2763 |
|
29-Oct-2015 |
Christopher Ferris <cferris@google.com> |
Add a size when checking local reads/writes. When doing a local unwind and checking whether a read or a write is valid, the length of the read/write is not checked. This can lead to crashes if attempting to read from within a map, but it would cross into out of the map. The fix is to check the size of the read/write. Bug: 25371801 Change-Id: I52556cec06268ce3be5a6fb718147ba62c0a489f
/external/libunwind/include/tdep-arm/libunwind_i.h
|
4a9fd609328bb843b31d96bd8b3041eff4538ca6 |
|
19-Aug-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Update all mapoff checks to check against 0." Makes ART's cfi-test fail. This reverts commit 4a4ba40ed815be9307ac64023565d5b22c7fdf39. Change-Id: I0698a2e37f9fe0a54695a7a8f99c4e23b2478f47
/external/libunwind/include/tdep-arm/libunwind_i.h
|
4a4ba40ed815be9307ac64023565d5b22c7fdf39 |
|
14-Aug-2015 |
Christopher Ferris <cferris@google.com> |
Update all mapoff checks to check against 0. The dlopen of a shared library from an apk results in huge non-zero map offsets. This can cause failures due to the checks in the code of the map offset against the elf data. We don't really support a non-zero offset for an executable map, so it's easier to assume this is always zero. Bug: 23192251 Change-Id: Ie4c34ed5c181135ecd3fe7c968b4a424f8eb34b9
/external/libunwind/include/tdep-arm/libunwind_i.h
|
ae38b20031a02d3f6f56a8315c1f097ae5293c56 |
|
04-May-2015 |
Christopher Ferris <cferris@google.com> |
Implement method to read elf data from memory. I rewrote the entirety of elfxx.h/elfxx.c to support this. For the rewrite, I modified the way that the symbol tables are searched. The searched every single entry in the symbol table, and all symbol tables. The new method finds the first entry that actually has a name and stops. I also added some quick checks to make sure that a malformed elf would not cause a crash when reading the symbol names from the symbol tables. I had to implement the functionality of dwarf_find_unwind_table to handle reading from memory, instead of from a file. I didn't implement debug frame support since that likelihood of that appearing in memory seems low. I also modified the dwarf_find_unwind_table to remove an abort and just fail if that particular path is encountered. In addition, I added a quick check to make sure that a malformed dynamic section doesn't cause a crash. Bug: 19517541 Change-Id: I6075d87035dca41fa5e5dfcbe287a680a7671836
/external/libunwind/include/tdep-arm/libunwind_i.h
|
f622936d6c5239b3d5ccafdf38189cec8bca55c0 |
|
15-Apr-2014 |
Christopher Ferris <cferris@google.com> |
Make sure that all memory accesses are guarded. This doesn't protect the fpreg reads completely. It's still possible to have a bad address that has the first part in readable memory and the second part in unreadable memory. Since none of the code android uses uses the fpreg data, this should be okay. Bug: 13946101 Change-Id: I9187b16d0427cbc8af6751cf0b8476ea2d1bfc38
/external/libunwind/include/tdep-arm/libunwind_i.h
|
f4a8df5f4f338f1a12c25213227e98b34b42447f |
|
08-Mar-2014 |
Christopher Ferris <cferris@google.com> |
Fix maps caching for local processes. It is possible for the map to change while running libunwind. For example, if lots of threads are doing local unwinds at the same time. Allow the cached map to regenerate when it detects this case. Included in this change is a refactor of all of the os code so that it can also be used to do caching. This is a prelude to being able to attempt to push the code upstream. Also, this moves the code back closer to the original upstream code. Hopefully, this will allow me to upstream all of these changes. Change-Id: Ia219fa61e16e36416133bc95b1dd2161bd5b8ff7
/external/libunwind/include/tdep-arm/libunwind_i.h
|
16b95a68caaa7e021209e2cd6a877ae1e558f740 |
|
23-Jan-2014 |
Christopher Ferris <cferris@google.com> |
Add speed-ups to libunwind. Add caching of /proc/self/maps data structures. Add caching of elf image maps attached to the maps data structure. Add a set of new map api functions to handle creation/destruction of the maps by external code. Remove the creation of the maps data structure in the local address space init. Change-Id: I0adae397d433fc3902f83a6f377f6889161937e5
/external/libunwind/include/tdep-arm/libunwind_i.h
|
7d46a21e0a2cb561e4cad57b101a7137e01023dc |
|
14-Nov-2013 |
Christopher Ferris <cferris@google.com> |
For current process, check memory accesses. When attempting to unwind the current process, the library simple reads and writes to memory for memory accesses. Unfortunately, if an unwind winds up with invalid data, then the process can segfault. Add a guard to all memory accesses that verifies that reads/writes are valid before attempting them. For now, this guard is a nop on all systems except linux systems. Also, modify the adjust_ip function to use the access_mem function so that all reads go through the right function. Bug: 11652982 Change-Id: I9d1feacae585374f6bf1d899f8a006ec9ecb47c4
/external/libunwind/include/tdep-arm/libunwind_i.h
|
efb75a0b84fed700173700a2e4fee153ba491b32 |
|
01-Oct-2013 |
Christopher Ferris <cferris@google.com> |
Update external/libunwind to build in android. Bug: 8410085 Change-Id: Ideb46602d1e1cf2df5f858ef11d498055c02b969
/external/libunwind/include/tdep-arm/libunwind_i.h
|
5d0f376b08126b51a001d7cdfba1ec4e0d644f54 |
|
21-Sep-2012 |
Tommi Rantala <tt.rantala@gmail.com> |
Invert tdep_init() flag logic Invert the flag that signals that tdep_init() was called, to move the symbol from data to BSS.
/external/libunwind/include/tdep-arm/libunwind_i.h
|
d93d96ad833390519ea68a2df22dd55dd26a3214 |
|
22-May-2012 |
Martin Milata <mmilata@redhat.com> |
Fix compilation on IA64 - Add tdep macro for {dwarf,ia64}_find_unwind_table so that ia64 doesn't try to use dwarf code. - Fix extraneous #if. - Fix mistyped filename in Makefile.am. - Link ia64-specific tests with correct libraries. Signed-off-by: Martin Milata <mmilata@redhat.com>
/external/libunwind/include/tdep-arm/libunwind_i.h
|
0eba2169fb19ef0707a2c96201e33769001b5f11 |
|
25-Oct-2011 |
Ken Werner <ken.werner@linaro.org> |
[ARM] Add support for systems that don't support ucontext.h Define unw_tdep_context rather than using ucontext_t in order to support systems that lack ucontext.h. Note that POSIX.1-2008 removed getcontext, makecontext and swapcontext from its specification. Signed-off-by: Ken Werner <ken.werner@linaro.org>
/external/libunwind/include/tdep-arm/libunwind_i.h
|
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/include/tdep-arm/libunwind_i.h
|
36511d3d1f040bbf778094e907725ad0617326c8 |
|
21-Apr-2011 |
Ken Werner <ken.werner@linaro.org> |
Add support for handling signal frames on ARM Linux. This patch add support for resuming at a certain stack frame even if signal frames are involved. For restoring the registers the trampoline (sigreturn) is used. RT and non-RT signal frames are handled for both >=2.6.18 and <2.6.18 kernels. Signed-off-by: Ken Werner <ken.werner@linaro.org>
/external/libunwind/include/tdep-arm/libunwind_i.h
|
e2962af9d31266761700b431da894421c0d757ec |
|
06-Apr-2011 |
Arun Sharma <asharma@fb.com> |
Implement a cheaper getcontext() Since the fast unwinding code path doesn't need the full context, a faster target dependent getcontext is implemented. Signed-off-by: Lassi Tuura <lat@cern.ch>
/external/libunwind/include/tdep-arm/libunwind_i.h
|
5f38f35d5d6c78aafa6da20845d9ceff74af00f8 |
|
01-Apr-2011 |
Lassi Tuura <lat@cern.ch> |
Drop a call frame in tdep_trace and avoid a call to unw_step. Dropping the extra frame for unw_backtrace itself using unw_step is approximately 15% slower than skipping the frame in tdep_trace. So drop the frame in the latter, and make the function a private implementation detail for libunwind, not an exported interface. Also moves unw_getcontext call back into unw_backtrace to avoid an extra call frame in case slow_backtrace does not get inlined into unw_backtrace.
/external/libunwind/include/tdep-arm/libunwind_i.h
|
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/include/tdep-arm/libunwind_i.h
|
cf8d5e41af582b9070576889dcc479397a19bf48 |
|
23-Mar-2011 |
Ken Werner <ken.werner@linaro.org> |
Have the ARM extbtl-parser operate on the DWARF model directly. This eliminates the arm_stackframe and therefore the need to synchronize the two models. It also clears the way for unwinding call stacks with mixed DWARF- and extbl-frames. Signed-off-by: Ken Werner <ken.werner@linaro.org>
/external/libunwind/include/tdep-arm/libunwind_i.h
|
6a671546741e8355dd9f821f171e4a3c895d28ec |
|
15-Mar-2011 |
Zachary T Welch <zwelch@codesourcery.com> |
Use ARM-specific unwinding tables in unw_step Uses ex_tables routines to provide a new means of unwinding the stack. Set UNW_ARM_UNWIND_METHOD=4 to use ARM-specific unwinding tables. Signed-off-by: Ken Werner <ken.werner@linaro.org>
/external/libunwind/include/tdep-arm/libunwind_i.h
|
ffc474b8c8972200642acaef3e5aa10ee853609a |
|
15-Mar-2011 |
Zachary T Welch <zwelch@codesourcery.com> |
Add module for parsing ARM-specific unwind tables Handles lookup, extracting unwind entries, and decoding the entry using a callback mechanism. Signed-off-by: Ken Werner <ken.werner@linaro.org>
/external/libunwind/include/tdep-arm/libunwind_i.h
|
ec633a1911e365ba6016fa9fcbd81cad72f7afdb |
|
02-Mar-2011 |
Ken Werner <ken.werner@linaro.org> |
Use UNW_OBJ instead of UNWI_ARCH_OBJ to rename unwi_unwind_method on ARM. This results in different unwi_unwind_method symbol names for the local and generic versions. It allows to statically link against both libraries. Signed-off-by: Ken Werner <ken.werner@linaro.org>
/external/libunwind/include/tdep-arm/libunwind_i.h
|
00aed9631b112d7aa7adc98054b62549cfc857da |
|
27-May-2010 |
Arun Sharma <arun@sharma-home.net> |
Add an experimental and optional frame chain unwinding for ARM The environment variable UNW_ARM_UNWIND_METHOD controls the unwind method. 1 - debug_frame unwinding 2 - frame chain unwinding, 3 - 1 & 2 (default)) Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
/external/libunwind/include/tdep-arm/libunwind_i.h
|
1787a2fd284a786b409af74047a12de02c644cd1 |
|
15-May-2010 |
Arun Sharma <arun@sharma-home.net> |
Add path and pathlen arguments to tdep_get_elf_image() Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
/external/libunwind/include/tdep-arm/libunwind_i.h
|
dac2d001afb1fa7040ca7d8ae57032f684d7023e |
|
20-Apr-2010 |
Lassi Tuura <lat@cern.ch> |
Identify signal frames by augmentation attribute.
/external/libunwind/include/tdep-arm/libunwind_i.h
|
3842dac7333e42aa44531eda34ba55200b99ccf8 |
|
05-Feb-2008 |
Daniel Jacobowitz <drow@false.org> |
Add initial ARM and MIPS support. To support this, also enable the reading of .debug_frame sections (used in lieu of .eh_frame sections when they're not available).
/external/libunwind/include/tdep-arm/libunwind_i.h
|