diff options
author | Dimitry Ivanov <dimitry@google.com> | 2017-03-20 22:34:36 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-03-20 22:34:37 +0000 |
commit | e98d1e68ce37bb9238e3c50ea6b01d1057adb2eb (patch) | |
tree | 6d9f3402abd55a64156e68a7b0cf6aaf22d93a62 /linker/linker.cpp | |
parent | e36fb9ed9e3a5ad6152f66f9b473221b166f3b5b (diff) | |
parent | 5c4a58072fad88a2ab89cfe063dd217041491357 (diff) |
Merge changes Ib2bad794,I82436292
* changes:
Add systrace output for dlopen calls
Add end() method to bionic's ScopedTrace class
Diffstat (limited to 'linker/linker.cpp')
-rw-r--r-- | linker/linker.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp index 7b16cc38a..a05cd3b8a 100644 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -1861,6 +1861,9 @@ static std::string android_dlextinfo_to_string(const android_dlextinfo* info) { void* do_dlopen(const char* name, int flags, const android_dlextinfo* extinfo, const void* caller_addr) { + std::string trace_prefix = std::string("dlopen: ") + (name == nullptr ? "(nullptr)" : name); + ScopedTrace trace(trace_prefix.c_str()); + ScopedTrace loading_trace((trace_prefix + " - loading and linking").c_str()); soinfo* const caller = find_containing_library(caller_addr); android_namespace_t* ns = get_caller_namespace(caller); @@ -1937,6 +1940,8 @@ void* do_dlopen(const char* name, int flags, ProtectedDataGuard guard; soinfo* si = find_library(ns, translated_name, flags, extinfo, caller); + loading_trace.End(); + if (si != nullptr) { void* handle = si->to_handle(); LD_LOG(kLogDlopen, |