History log of /external/libunwind/src/mips/Ginit.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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/src/mips/Ginit.c
a7db682f20dedc53c6ded05d870eb2490d257fe1 17-Jun-2015 Douglas Leung <douglas.leung@imgtec.com> Fix Mips bug.

The source and destination addresses were swapped, causing access errors.

Change-Id: I77d1163aa9d35570664ce9a51482d079ff2088c0
/external/libunwind/src/mips/Ginit.c
849a547fb4de698b95c14806ddb3fcad8aa26331 06-Jun-2015 Christopher Ferris <cferris@google.com> Attempt to read load_base from memory when needed.

When creating the map list, always try and read the load base
using the memory functions for local unwinds. For remote unwinds,
if we can't map in the elf image, then try and use the memory
functions instead.

Bug: 21381155
Change-Id: I28d0dbed585bbcd366a01d9313b463745059d737
/external/libunwind/src/mips/Ginit.c
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/mips/Ginit.c
d1c383c5bb03420decf5cf789cf14ab144b0720d 10-Apr-2014 Christopher Ferris <cferris@google.com> Fix all warnings, and make warnings errors.

Change-Id: Ia2039922b55891551b1de0f0c281c266db6ee219
/external/libunwind/src/mips/Ginit.c
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/mips/Ginit.c
b58eb4a882a6ff98f6c0890260da797b62dbcdee 30-Jan-2014 Elliott Hughes <enh@google.com> Switch libunwind over to <sys/ucontext.h>.

Change-Id: Iba3a471cbdc4171b55616082b76798b0715c269a
/external/libunwind/src/mips/Ginit.c
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/src/mips/Ginit.c
cdf9ee587b78148c5d48dae1b5ea72ec8df64c96 23-Nov-2013 Christopher Ferris <cferris@google.com> Only check the map for local unwinds.

Change-Id: I7b7eed29a1b7ddad8e0d852598260809d3eb98d1
/external/libunwind/src/mips/Ginit.c
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/src/mips/Ginit.c
efb75a0b84fed700173700a2e4fee153ba491b32 01-Oct-2013 Christopher Ferris <cferris@google.com> Update external/libunwind to build in android.

Bug: 8410085

Change-Id: Ideb46602d1e1cf2df5f858ef11d498055c02b969
/external/libunwind/src/mips/Ginit.c
890e23eb9d3ffd9be2a025189a21794b5ed0e0ff 21-Sep-2012 Tommi Rantala <tt.rantala@gmail.com> Prefer NULL over zero
/external/libunwind/src/mips/Ginit.c
79c2c254a74ca850aefe2c49b973dea1fa2934c2 06-Sep-2012 Tommi Rantala <tt.rantala@gmail.com> MIPS coredump support

Add MIPS support to the coredump library. Explicit support for the MIPS
program counter register is added so that we can start backtracing from
the program counter value we read from a core dump. The PC register
support was not strictly required for local backtracing, and we will in
fact just plug the return address to the PC register in getcontext().

I have only tested the 32bit "OABI" paths.
/external/libunwind/src/mips/Ginit.c
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/src/mips/Ginit.c