OSDN Git Service

linker: log only real dlerrors
authorDimitry Ivanov <dimitry@google.com>
Tue, 28 Mar 2017 18:08:58 +0000 (11:08 -0700)
committerDimitry Ivanov <dimitry@google.com>
Tue, 28 Mar 2017 22:03:12 +0000 (15:03 -0700)
Currently linker reports all potential dlerrors
for example if library was not found in 'this'
namespace - it initializes linker error buffer
with not found message but when consequent
search in linked namespace succeeds this message
is droped because dlopen was successful.

This commit avoids logging false positive error
messages when debug.ld.* set to dlerror.

Test: manual
Change-Id: I480694a1b1bbacd6bd1d8505cd2ee491710964cc
(cherry picked from commit 11968b80af5be601b820f261e2e102e5b8ed48c4)

linker/dlfcn.cpp
linker/linker_globals.h

index 5ccd656..96dd477 100644 (file)
@@ -48,6 +48,7 @@ static char* __bionic_set_dlerror(char* new_value) {
 
   char* old_value = *dlerror_slot;
   *dlerror_slot = new_value;
+  LD_LOG(kLogErrors, "%s\n", new_value);
   return old_value;
 }
 
index b6f8a04..e4e3d97 100644 (file)
@@ -38,7 +38,6 @@
     do { \
       __libc_format_buffer(linker_get_error_buffer(), linker_get_error_buffer_size(), fmt, ##x); \
       /* If LD_DEBUG is set high enough, log every dlerror(3) message. */ \
-      LD_LOG(kLogErrors, "%s\n", linker_get_error_buffer()); \
     } while (false)
 
 #define DL_WARN(fmt, x...) \