[clang][MinGW] Add asan DLL lib before other libs and objects
authorAlvin Wong <alvin@alvinhc.com>
Sun, 26 Mar 2023 11:07:06 +0000 (19:07 +0800)
committerAlvin Wong <alvin@alvinhc.com>
Wed, 29 Mar 2023 11:04:35 +0000 (19:04 +0800)
commit81358e9193a9282372c145b63042b2852d3afa18
treebb1bc747c7a50ce38f7cea8c0241011567746542
parent2abdc0f7dfd807dc7841506f949fc6cbdd8b3313
[clang][MinGW] Add asan DLL lib before other libs and objects

As stated in https://github.com/llvm/llvm-project/issues/61685, by
passing LLD the import lib of the asan DLL first, the asan DLL will be
listed as the first entry in the Import Directory Table, making it be
loaded first before other user DLLs. This allows asan to be initialized
as early as possible to increase its instrumentation coverage to include
other DLLs not built with asan.

This also avoids some false asan reports on `realloc` for memory
allocated during initialization of user DLLs being loaded earlier than
asan, because after this change they will be loaded later than asan.

Differential Revision: https://reviews.llvm.org/D146908
clang/lib/Driver/ToolChains/MinGW.cpp
clang/test/Driver/mingw-sanitizers.c