title: valgrind asan runtime does not come first in initial library list
body: <p>I build with GCC 10 flag <code>-fsanitize=address</code> and can run the program just fine, however if I run it under Valgrind it shows Asan error:</p>
  <pre><code>==477229== Memcheck, a memory error detector
  ==477229== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
  ==477229== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
  ==477229== Command: ./a.out
  ==477229== 
  ==477229==ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELOAD.
  ==477229== 
  ==477229== HEAP SUMMARY:
  ==477229==     in use at exit: 0 bytes in 0 blocks
  ==477229==   total heap usage: 0 allocs, 0 frees, 0 bytes allocated
  ==477229== 
  ==477229== All heap blocks were freed -- no leaks are possible
  ==477229== 
  ==477229== For lists of detected and suppressed errors, rerun with: -s
  ==477229== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
  </code></pre>
  <pre><code>ldd myprogram
      linux-vdso.so.1 (0x00007ffd0bd90000)
      libasan.so.6 =&gt; /lib/x86_64-linux-gnu/libasan.so.6 (0x00007f7256ba6000)
      libc.so.6 =&gt; /lib/x86_64-linux-gnu/libc.so.6 (0x00007f72569b4000)
      libdl.so.2 =&gt; /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f72569ae000)
      libpthread.so.0 =&gt; /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f725698b000)
      libm.so.6 =&gt; /lib/x86_64-linux-gnu/libm.so.6 (0x00007f725683c000)
      libgcc_s.so.1 =&gt; /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7256821000)
      /lib64/ld-linux-x86-64.so.2 (0x00007f7257599000)
  </code></pre>
  <p>Remove <code>-fsanitize=address</code>, Valgrind can run it well. So why does the sanitizer make Valgrind miss Asan libraries?</p>