summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linker/linker.cpp3
-rw-r--r--linker/linker_soinfo.h1
2 files changed, 4 insertions, 0 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 54e0703c7..106923437 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -3346,6 +3346,7 @@ bool soinfo::relocate(const VersionTracker& version_tracker, ElfRelIteratorT&& r
static soinfo_list_t g_empty_list;
bool soinfo::prelink_image() {
+ if (flags_ & FLAG_PRELINKED) return true;
/* Extract dynamic section */
ElfW(Word) dynamic_flags = 0;
phdr_table_get_dynamic_section(phdr, phnum, load_bias, &dynamic, &dynamic_flags);
@@ -3840,6 +3841,8 @@ bool soinfo::prelink_image() {
// Don't call add_dlwarning because a missing DT_SONAME isn't important enough to show in the UI
}
+
+ flags_ |= FLAG_PRELINKED;
return true;
}
diff --git a/linker/linker_soinfo.h b/linker/linker_soinfo.h
index dd3817cf7..1cb727cec 100644
--- a/linker/linker_soinfo.h
+++ b/linker/linker_soinfo.h
@@ -63,6 +63,7 @@
// destructor associated with this
// soinfo is executed and this flag is
// unset.
+#define FLAG_PRELINKED 0x00000400 // prelink_image has successfully processed this soinfo
#define FLAG_NEW_SOINFO 0x40000000 // new soinfo format
#define SOINFO_VERSION 5