b5ab7580d01cab4d090784f1351d1b3895a60f23 |
|
19-Apr-2016 |
Christopher Ferris <cferris@google.com> |
Update address space of map if it changes. In debuggerd, a single BacktraceMap is created that is used to unwind all of the threads in the process. Unfortunately, the address space data can be cached in the libunwind copy of the map data. However, the address space is only valid in the Backtrace object and does not survive across unwinds. This can lead to a crash when a cached map that is only present in memory tries to access the already destroyed address space. The fix is to update the address space, if necessary, whenever a cached map that only exists in memory is about to be used. Bug: 28210681 Change-Id: I3cedb043aed499f3eb27f9838d040be77dc92d9a
/external/libunwind/src/elfxx.h
|
6292bbbc3f678648fb5a1ec8222d33f6a5bb992a |
|
02-Mar-2016 |
Christopher Ferris <cferris@google.com> |
Ignore compressed sections on local unwinds. When doing local unwinds, attempts to work on compressed sections is not necessary since this is only called from ART. ART already dumps the java stacks and that's the only compressed sections that will be used. It turns out that trying to process the compressed section in local unwinds can cause problems since the uncompressed section can be large, which means suddenly a lot more memory being consumed by the process. It also takes extra time to complete the unwind, which can cause problems when an ANR occurs, which might trigger a cascade of ANRs since the unwind is so cpu intensive. Bug: 27391690 Change-Id: I98be5754cc4de4071616db334dc0c9862d3a2504
/external/libunwind/src/elfxx.h
|
164059ed9cd0efbea262cf3b74b2aed41689ae91 |
|
19-Feb-2016 |
Christopher Ferris <cferris@google.com> |
Fix the caching of the compressed section. A previous change fixed a race condtion, but caused a big memory leak of the compressed section data. In order to fix this, move the caching of the compressed section at the point that we cache the elf image data itself. Bug: 27152097 (cherry picked from commit c5017fdb02aa2a9c87c059c9263e5dfc390da289) Change-Id: Ib9e4342acf591fdaaf05fd7fabb6bc0b02b8f3f1
/external/libunwind/src/elfxx.h
|
1aaf3b45edb306600589f5a3969d7a7004798823 |
|
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 (cherry picked from commit 2c0f916cac65c1a14e9a917452a430c490ff9620) Change-Id: I162b396c24923fe9e3d774488b221244d822096c
/external/libunwind/src/elfxx.h
|
344ee5841222c15cbc8a91e1f75e6f6f02d7d234 |
|
11-May-2015 |
David Srbecky <dsrbecky@google.com> |
Decompress debug symbols. Debug symbols may be stored in LZMA compressed section .gnu_debugdata. libunwind already contained some support for it however it was disabled at compile time. This CL re-enables it and extends it. The decompression code is based on LZMA SDK. Change-Id: Ie199ce1fc31770940db288b5e57b50942f12be7b
/external/libunwind/src/elfxx.h
|
38de87fa176fb72dd0db0fd7ad400eb95712482b |
|
16-Jan-2016 |
Christopher Ferris <cferris@google.com> |
Ignore non-exec and /dev/ maps. When caching elf maps, do not try and cache a map that is not readable and writable or is in /dev/. The only exception is to allow caching maps which begins with /dev/ashmem/. Bug: 26589772 Change-Id: I670bc5869d125f48f72ee583156db1d4806ca7b9
/external/libunwind/src/elfxx.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/src/elfxx.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/src/elfxx.h
|
44387e81c0e2a029f6bfe54cbdbd345b1a22cf93 |
|
14-May-2015 |
Christopher Ferris <cferris@google.com> |
Fix missing return in failure case. Bug: 19517541 Change-Id: I4b21835ee8f2e604152a6436693461cc24ddb745
/external/libunwind/src/elfxx.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/src/elfxx.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/src/elfxx.h
|
2c3444d0f4821b159d60290c514a8aeba8d9061f |
|
21-Sep-2013 |
Masatake YAMATO <yamato@redhat.com> |
Remove one of duplicated declarations of `get_proc_name' Declarations of `get_proc_name' of is duplicated. Signed-off-by: Masatake YAMATO <yamato@redhat.com>
/external/libunwind/src/elfxx.h
|
d41a453bbf195818e3fa66ed0a123f0c06aa754b |
|
19-May-2013 |
Arun Sharma <asharma@fb.com> |
Fix a build error <elf.h> needs to be included before the check for ELF_CLASS.
/external/libunwind/src/elfxx.h
|
eac65dc9b8cc18fa4c65c0485878a11c470357b6 |
|
15-Apr-2013 |
Matt Fischer <matt.fischer@garmin.com> |
Add basic support for the QNX operating system This change adds some special cases to allow libunwind to compile for QNX. * QNX's copy of <elf.h> and <link.h> reside in sys/ instead. To deal with this, an AC_CHECK_HEADERS() was added to check for the files in both locations. * Similarly, QNX does not have <endian.h>. In cases where the file is not found, logic was added to refer to QNX-specific macros to determine endianness. * The QCC compiler, which is a wrapper around GCC, cannot handle some standard GCC options. Therefore, logic was added to check for QCC, and when it is found, to suppress the use of -lgcc, and to express the option -nostartfiles as -Wc,-nostartfiles instead, which is correctly passed on to the underlying GCC. * Finally, the support file os-qnx.c was added, patterned after the existing os-*.c files. Only local image lookup is currently supported (see the comments for more information), but this is sufficient for QNX, since ptrace is not supported there anyway, and that is the only case where the function is required to do remote image lookup. Change-Id: Ie7934f94a7317bdde59335f2acd4c3a97c0384c1
/external/libunwind/src/elfxx.h
|
d276b7a9614987495a7dfb056e6558f452ebe802 |
|
13-Mar-2012 |
Arun Sharma <asharma@fb.com> |
Introduce get_proc_name_in_image() This is similar to get_proc_name() but takes an already mapped image. Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
/external/libunwind/src/elfxx.h
|
3d08506936d16401aade168de0c95646b3f54a94 |
|
13-Feb-2012 |
Arun Sharma <asharma@fb.com> |
Fix undefined symbol: _Uelf64_valid_object Without this change, we end up building libunwind-${arch}.a with missing symbols. Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
/external/libunwind/src/elfxx.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/src/elfxx.h
|
a83e96cc1cc48c6c229d9462ab13ef6479a84143 |
|
24-Jan-2011 |
Arun Sharma <asharma@fb.com> |
Some entries in /proc/<pid>/maps are not ELF files, so add check in elf_map_image() to ensure mapped files have a valid ELF header. Signed-off-by: Zachary T Welch <zwelch@codesourcery.com> Signed-off-by: Arun Sharma <asharma@fb.com>
/external/libunwind/src/elfxx.h
|
e6b9f350f78ecd9ef3b8a3e721f9435c94fc2562 |
|
22-Aug-2007 |
David Mosberger-Tang <davidm@panda.mostang.com> |
Introduce a tdep_get_func_addr_hook() in the ELF lookup_symbol() routine and add address-space argument. This is needed because on PPC64, a the function-name symbol refers to a function descriptor (unlike, for example, on ia64, where the @fptr() operator is needed to refer to a function descriptor). Thus, in order to look up the name of a function, we need to dereference the function descriptor. To make matters more "interesting", the function descriptors are normally resolved by the dynamic linker, so we can't get their values from the ELF file. Instead, we have to read them from the running image, hence the need for the address-space argument.
/external/libunwind/src/elfxx.h
|
5724bee8c27219ac277ea76d75dc70fa830eaac0 |
|
20-May-2005 |
hp.com!davidm <hp.com!davidm> |
Include "libunwind_i.h" instead of "internal.h". (Logical change 1.294)
/external/libunwind/src/elfxx.h
|
b9d2cc7919cf343596fd007506492621311b1c43 |
|
21-Dec-2003 |
mostang.com!davidm <mostang.com!davidm> |
Drop HIDDEN from declarations, only the definitions need it. (Logical change 1.150)
/external/libunwind/src/elfxx.h
|
4fafd8cbf7464f50b30e2983e332ddebef8b5acc |
|
20-Dec-2003 |
hp.com!davidm <hp.com!davidm> |
Use Elf_W() instead of ElfW() etc. to avoid clash with <linker.h>. (Logical change 1.141)
/external/libunwind/src/elfxx.h
|
9c23f9c408a10b9cbe44002d87755ad020aac91a |
|
03-Apr-2003 |
mostang.com!davidm <mostang.com!davidm> |
(elf_map_image): Declare "path" argument as "const". (Logical change 1.75)
/external/libunwind/src/elfxx.h
|
63d7003ef7c8f791d52cd88add0cee0d72cb6a5f |
|
19-Mar-2003 |
mostang.com!davidm <mostang.com!davidm> |
Include <sys/stat.h>. (Logical change 1.63)
/external/libunwind/src/elfxx.h
|
a3806e7c16dd8e988507a7dab037cd99e74277a7 |
|
27-Feb-2003 |
mostang.com!davidm <mostang.com!davidm> |
(get_proc_name): Add "pid" argument. (Logical change 1.56)
/external/libunwind/src/elfxx.h
|
824d6619b500a86ff2fc680268357f0215d59b0c |
|
08-Feb-2003 |
mostang.com!davidm <mostang.com!davidm> |
(Logical change 1.45)
/external/libunwind/src/elfxx.h
|
5f94e2d488701fccd474245df3ad6f51aff2a05e |
|
08-Feb-2003 |
mostang.com!davidm <mostang.com!davidm> |
Initial revision
/external/libunwind/src/elfxx.h
|