diff options
-rw-r--r-- | linker/linker.cpp | 3 | ||||
-rw-r--r-- | linker/linker_soinfo.h | 1 |
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 |