Inline two single-use templates.
Change-Id: Ie1b22479128f9a4b8ece08a433ee5943a1d04c11
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 0b829b3..e538a48 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -1102,15 +1102,6 @@
return dt_needed;
}
-template<typename F>
-static void for_each_dt_needed(const ElfReader& elf_reader, F action) {
- for (const ElfW(Dyn)* d = elf_reader.dynamic(); d->d_tag != DT_NULL; ++d) {
- if (d->d_tag == DT_NEEDED) {
- action(fix_dt_needed(elf_reader.get_string(d->d_un.d_val), elf_reader.name()));
- }
- }
-}
-
static bool find_loaded_library_by_inode(android_namespace_t* ns,
const struct stat& file_stat,
off64_t file_offset,
@@ -1307,11 +1298,14 @@
}
#endif
- for_each_dt_needed(task->get_elf_reader(), [&](const char* name) {
- LD_LOG(kLogDlopen, "load_library(ns=%s, task=%s): Adding DT_NEEDED task: %s",
- ns->get_name(), task->get_name(), name);
- load_tasks->push_back(LoadTask::create(name, si, ns, task->get_readers_map()));
- });
+ for (const ElfW(Dyn)* d = elf_reader.dynamic(); d->d_tag != DT_NULL; ++d) {
+ if (d->d_tag == DT_NEEDED) {
+ const char* name = fix_dt_needed(elf_reader.get_string(d->d_un.d_val), elf_reader.name());
+ LD_LOG(kLogDlopen, "load_library(ns=%s, task=%s): Adding DT_NEEDED task: %s",
+ ns->get_name(), task->get_name(), name);
+ load_tasks->push_back(LoadTask::create(name, si, ns, task->get_readers_map()));
+ }
+ }
return true;
}
diff --git a/linker/linker_main.cpp b/linker/linker_main.cpp
index f65f82d..40f6b9a 100644
--- a/linker/linker_main.cpp
+++ b/linker/linker_main.cpp
@@ -435,9 +435,12 @@
++ld_preloads_count;
}
- for_each_dt_needed(si, [&](const char* name) {
- needed_library_name_list.push_back(name);
- });
+ for (const ElfW(Dyn)* d = si->dynamic; d->d_tag != DT_NULL; ++d) {
+ if (d->d_tag == DT_NEEDED) {
+ const char* name = fix_dt_needed(si->get_string(d->d_un.d_val), si->get_realpath());
+ needed_library_name_list.push_back(name);
+ }
+ }
const char** needed_library_names = &needed_library_name_list[0];
size_t needed_libraries_count = needed_library_name_list.size();
diff --git a/linker/linker_soinfo.h b/linker/linker_soinfo.h
index 4d02676..37cee50 100644
--- a/linker/linker_soinfo.h
+++ b/linker/linker_soinfo.h
@@ -524,14 +524,5 @@
const char* fix_dt_needed(const char* dt_needed, const char* sopath);
-template<typename F>
-void for_each_dt_needed(const soinfo* si, F action) {
- for (const ElfW(Dyn)* d = si->dynamic; d->d_tag != DT_NULL; ++d) {
- if (d->d_tag == DT_NEEDED) {
- action(fix_dt_needed(si->get_string(d->d_un.d_val), si->get_realpath()));
- }
- }
-}
-
const ElfW(Sym)* soinfo_do_lookup(const char* name, const version_info* vi,
soinfo** si_found_in, const SymbolLookupList& lookup_list);