aboutsummaryrefslogtreecommitdiff
path: root/sources/android/crazy_linker
AgeCommit message (Collapse)Author
2014-06-10Fix vma_start vma_end for 64-bit.Andrew Hsieh
Also fix warnings, and make mips64 in unsupported arch Change-Id: I69241bca109b5f835b61235a160c4f02a838d7bc
2014-06-10Merge "crazy_linker: Add support for arm64."Andrew Hsieh
2014-05-27crazy_linker: Add support for arm64.Simon Baldwin
- Add support for aarch64 relocation types, including DT_RELA. - Refactor relocation application to make handling rel and rela easier. - Fix a handful types incorrectly sized for 64bit. - Define ELF_R_TYPE and ELF_R_SYM if not in system headers. - Strdup() strings passed to putenv() in one unit test. Change-Id: I295847e6ed8da046a3f785b4a564fc0a1dcd21bf
2014-05-27crazy_linker: Fix isnanf symbol lookup in clang builds.Simon Baldwin
Clang builds for arm32 generate calls to isnanf. Android's libm.so isnanf is weak. Android's dlsym() returns NULL for weak symbols. In libm.so, isnanf is a synonym for a (strong) __isnanf. If resolving isnanf from Android libm.so fails, retry __isnanf. http://code.google.com/p/chromium/issues/detail?id=376828 Change-Id: Ib04f933e6a317e5a65cd2762b02027b0388b0e4a Signed-off-by: Simon Baldwin <simonb@google.com>
2014-05-16crazy linker: cleanup, fix logs not terminated with \n.Simon Baldwin
Change-Id: I7cf19c479b4f9bec3e36d5db8bd958f1d49d2b58
2014-05-08crazy_linker: Add support for 64-bit Android systems.David 'Digit' Turner
Change-Id: Idac06d43fe0af3b157b5c702c86282b51fab7d40
2014-04-30crazy_linker: Add a callback feature.Simon Baldwin
Add support for callbacks and callback posters. Callbacks can execute code later and/or on different threads. Use callbacks, where enabled, to update r_map pages used by gdb. Change-Id: If7e7f565248d8f83095c7bd78f1dd294216ba631
2014-04-17crazy_linker: Fix IsSystemLibrary() implementation.David 'Digit' Turner
Use strrchr() instead of strchr() to really find the basename of the library path. + Augment unit test to catch regressions. Thanks to Wei James for finding this (https://codereview.appspot.com/87480043/) Change-Id: Iafae4606241324eb2d47007157ced84b780a3ca8
2014-01-15crazy_linker: Removed obsolete <sys/exec_elf.h> include.David 'Digit' Turner
It's no longer necessary since <elf.h> included from elf_traits.h will include it for us. BUG=NONE Change-Id: Ie36630379b2aa9e580a382d7cacbccd91f07013f
2013-09-19crazy_linker: trivial reformatting.David 'Digit' Turner
Change-Id: I798d1993fe1a214ef16bb11a49278f6021451e19
2013-09-18crazy_linker: refactor shared RELRO API.David 'Digit' Turner
This patch changes the way shared RELRO section are implemented to make them less confusing with regards of ashmem region ownership, and support "relocated RELROs". Now: - The client explicitely creates the shared RELRO region with crazy_library_create_shared_relro(), this allocates an Ashmem region, but does not map it in the address space. The client becomes the owner of the Ashmem file descriptor and is now responsible for closing it. - The client maps a shared RELRO region with crazy_library_use_shared_relro(), as before, this doesn't transfer ownership of the Ashmem region file descriptor to the library. Note that this function does _not_ close the file descriptor, unlike the previous crazy_library_use_relro_sharing(). - crazy_library_create_shared_relro() also supports "relocated RELRO", i.e. when one wants to create a RELRO section that will be populated with data corresponding to a _different_ load address than what the library is currently using in the current process. A new unit test (test_relocated_shared_relro) has been added to test this feature. + Some internal refactoring, to prepare for future work (e.g. the ability to lookup symbols directly into system libraries). Change-Id: I597b99889115d1d504ec2d172a9d259edbeee823
2013-09-13Add crazy_linker sources.David 'Digit' Turner
This patch adds a new NDK support static library, named crazy_linker, that implements a custom dynamic linker, to work-around limitations of the system one. See sources/android/crazy_linker/README.TXT for all details. + Add a new device test (crazy_linker) to run all unit and functional tests for the linker. + Fix a bug in minitest's formatting function and reformat the code a bit. This code has been written for Chrome, but could also benefit other applications that use multiple-processes and large shared libraries at the same time. For more details, see: https://code.google.com/p/chromium/issues/detail?id=287739 Change-Id: Ibefbbabedeb68d023b3b4c3b8392bd76b7baa1c2