summaryrefslogtreecommitdiff
path: root/linker/linker_logger.cpp
AgeCommit message (Collapse)Author
2020-07-30Remove debug.ld.greylist_disabled propertyRyan Prichard
This property provided a way to disable the greylist, for testing whether an app targeting < 24 still works. Instead of turning off the greylist, though, an app developer should simply target a newer API. (If app developers really need this property for testing, they can still use it on versions of Android between N and R, inclusive.) Update language to comply with Android's inclusive language guidance See https://source.android.com/setup/contribute/respectful-code for reference #inclusivefixit Bug: http://b/162536543 Test: bionic-unit-tests Change-Id: Id1eb2807fbb7436dc9ed7fe47e15b7d165a26789
2019-01-17linker: only generate log messages when logging is enabledTim Murray
Avoids some unnecessary work during dlopen/dlclose/dlsym for most cases. Bug: 122471935 Test: fewer page faults during app startup Change-Id: Ie886e1e671066af3c6f3a895f9a8126f209d6660
2018-10-10Allow invoking the linker on an executable.Ryan Prichard
The executable can be inside a zip file using the same syntax used for shared objects: path.zip!/libentry.so. The linker currently requires an absolute path. This restriction could be loosened, but it didn't seem important? If it allowed non-absolute paths, we'd need to decide how to handle: - foo/bar (relative to CWD?) - foo (search PATH / LD_LIBRARY_PATH, or also relative to CWD?) - foo.zip!/bar (normalize_path() requires an absolute path) The linker adjusts the argc/argv passed to main() and to constructor functions to hide the initial linker argument, but doesn't adjust the auxv vector or files like /proc/self/{exe,cmdline,auxv,stat}. Those files will report that the kernel loaded the linker as an executable. I think the linker_logger.cpp change guarding against (g_argv == NULL) isn't actually necessary, but it seemed like a good idea given that I'm delaying initialization of g_argv until after C++ constructors have run. Bug: http://b/112050209 Test: bionic unit tests Change-Id: I846faf98b16fd34218946f6167e8b451897debe5
2017-05-03Move libc_log code into libasync_safe.Christopher Ferris
This library is used by a number of different libraries in the system. Make it easy for platform libraries to use this library and create an actual exported include file. Change the names of the functions to reflect the new name of the library. Run clang_format on the async_safe_log.cpp file since the formatting is all over the place. Bug: 31919199 Test: Compiled for angler/bullhead, and booted. Test: Ran bionic unit tests. Test: Ran the malloc debug tests. Change-Id: I8071bf690c17b0ea3bc8dc5749cdd5b6ad58478a
2017-04-06Add support for disabling the greylist.Elliott Hughes
Useful for testing whether apps have actually stopped using greylisted libraries even if they still have references to them in their apk to support old Android releases but also haven't bumped their targetSdkVersion yet. Since we already have two expensive __system_property_get calls and this would add a third, optimize two (but leave the third since it's not obviously amenable to optimization). None of this matters for user builds, but I don't want userdebug/eng to have distractingly different performance. (cherrypick of 7933bec2872aa1c3430149c7649726333c0ac9d8.) Bug: http://b/36106661 Test: ran "can you escape 5" with and without this property Change-Id: Id9a804695c1dca9b4be2ebd0e72f01817bb13cba
2017-02-22Cope with argv[0] being null in the dynamic linker.Elliott Hughes
Somewhat unsurprisingly, very few commands are happy to be run like this, in particular multiplexed commands like toybox. But that's no reason for the linker to get in the way too. Bug: http://b/33276926 Test: new test Change-Id: I6dd71ea0183f4da83571039c2198ebb6ed38520e
2017-02-17Fix debug.ld for apps with long names and servicesDimitry Ivanov
1. There is no longer limit on property names - remove the trimming the name of the property. 2. Make debug.ld work for processes with names ending with ":something" This is naming convention for services: https://developer.android.com/guide/components/services.html Bug: http://b/35338922 Bug: http://b/33926793 Test: manual - set ld.debug.app property for the app Test: from http://b/35338922 and see that it works Test: for the service as well. Change-Id: Ic7c6d4edce4a5a22f144496d5c0a3e458217c6e4
2016-12-14Add a way to track all dlsym calls (contd.)Dimitry Ivanov
The followup for 4742abdcb52f16120016a5005c466230d4c46341 Changes in this file got lost in the process of cherry-picking the change across repositories. Bug: http://b/29458203 Test: flash, set debug.ld.all to dlsym and check if there are messages in logcat Change-Id: I4613908e46e75c5d9ec66396767f10fc6d3e9777
2016-07-20Pass argc/argv/envp to dso constructorsDimitry Ivanov
The glibc implementation of the loader passes argc/argv/envp to all elf constructors. This change makes bionic linker behave in the same way. Bug: http://b/30145768 Change-Id: I1c65c42aa5305a5b133c64b5748205bbde869e0e Test: run bionic-unit-tests --gtest_filter=dl*:Dl*
2016-07-13Use trivial types to avoid calls to new for globalsDimitry Ivanov
To avoid initialization ordering problem avoid constructing non-trivial global objects for linker_logger. This patch also adds explicit check for bloc_size_ on alloc Change-Id: I2cb3b13a10b7fac1f52a20038af77266d3e1da96
2016-07-12linker: Enable debug logging via propertiesDimitry Ivanov
This patch lets developers tune logging of dlopen/dlerror with setting system property. Note that for security purposes this option is disabled on user build for non-debuggable apps. For starters there are 3 debug options: dlerror - enables logging of all dlerrors dlopen - traces dlopen calls To enable system-wide logging (works only for userdebug/eng builds) use debug.ld.all property. To enable logging for particular app use debug.ld.app.<appname> property. Example: Running "adb shell setprop debug.ld.all dlerror,dlopen" will log all dlerror message as well as trace all calls to dlopen. Bug: http://b/29458203 Change-Id: I2392c80a795509e16fe5689d0500d18b99772a64