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