On Fri, May 23, 2014 at 11:40 AM, Jakub Jelinek <ja...@redhat.com> wrote: > No other shared library does anything close to that, for each such library > you can interpose any of its public symbols, either you know what you are > doing when interposing it, or it breaks.
I think I have finally recalled why we added this check. They main usecase was sanitized dynamic library linked into unsanitized executable. This of course requires that libasan comes earlier in loaded DSO list than libc libraries so that malloc, etc. can be successfully intercepted with dlsym(..., RTLD_NEXT) in libasan (for more details grep for LD_PRELOAD in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56393). Jakub is probably right that forcing libasan to be the first library in DSO list (that's what AsanCheckDynamicRTPrereqs currently does) is an overkill but it felt a lot easier to do back in the day. As already said, removing abort and hiding warning under verbosity>0 runtime option is probably enough to support usecases mentioned by Jakub (preloading some other DSO before libasan). As Konstantin mentioned, this should be discussed in address-sanitizer ML which I'll probably do on Monday if noone takes the lead. -Y