diff options
Diffstat (limited to 'elf/rtld.c')
-rw-r--r-- | elf/rtld.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/elf/rtld.c b/elf/rtld.c index 5d97f41b7b..9e0f752482 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -1453,10 +1453,12 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", unsigned int (*laversion) (unsigned int); unsigned int lav; - if (err_str == NULL - && (laversion = largs.result) != NULL - && (lav = laversion (LAV_CURRENT)) > 0 - && lav <= LAV_CURRENT) + if (err_str != NULL) + goto not_loaded; + + if ((laversion = largs.result) != NULL + && (lav = laversion (LAV_CURRENT)) > 0 + && lav <= LAV_CURRENT) { /* Allocate structure for the callback function pointers. This call can never fail. */ @@ -1538,7 +1540,25 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", assert (GL(dl_ns)[ns]._ns_nloaded == 0); GL(dl_tls_max_dtv_idx) = tls_idx; - goto not_loaded; + if (GLRO(dl_debug_mask) & DL_DEBUG_FILES) + { + _dl_debug_printf ("\ +\nfile=%s cannot be loaded as audit interface; ignored.\n", name); + if (laversion == NULL) + _dl_debug_printf ( +" la_version function not found.\n"); + else + { + if (lav == 0) + _dl_debug_printf ( +" auditor requested to be ignored (returned version of 0).\n"); + else + _dl_debug_printf ( +" auditor disabled since expected version %d is greater than " +"supported version %d.\n", + lav, LAV_CURRENT); + } + } } } } |