Modify android_dlwarning function to use a callback
The previous implementation of android_dlwarning was not thread-safe
and could return a pointer soon to become invalid in some situations.
This change fixed the problem. I have also removed android_dlwarning
from the dlext.h header file in case we decide to keep
android_dlwarning in the final release.
Bug: http://b/27453994
Change-Id: If6c896a80a17c4be0e18795e617712ad36a106fe
diff --git a/linker/linker_dlwarning.h b/linker/linker_dlwarning.h
index b67032c..0263c72 100644
--- a/linker/linker_dlwarning.h
+++ b/linker/linker_dlwarning.h
@@ -20,7 +20,9 @@
void add_dlwarning(const char* sopath, const char* message, const char* value = nullptr);
// Resets the current one (like dlerror but instead of
-// being thread-local it is process-local).
-const char* get_dlwarning();
+// being thread-local it is process-local). The user_data
+// is used to avoid forcing user into saving the message
+// to a global variable.
+void get_dlwarning(void* user_data, void (*f)(void*, const char*));
#endif /* __LINKER_DLWARNING_H */