[compiler-rt] r217673 - [ASan/Win] Rename asan_win_uar_thunk.lib to asan_win_dynamic_runtime_thunk.lib

Timur Iskhodzhanov timurrrr at google.com
Fri Sep 12 08:50:32 PDT 2014


In fact, the names of the LIBs are
asan_uar_thunk.lib and asan_dynamic_runtime_thunk.lib
respectively...

2014-09-12 17:21 GMT+04:00 Timur Iskhodzhanov <timurrrr at google.com>:
> Author: timurrrr
> Date: Fri Sep 12 08:21:02 2014
> New Revision: 217673
>
> URL: http://llvm.org/viewvc/llvm-project?rev=217673&view=rev
> Log:
> [ASan/Win] Rename asan_win_uar_thunk.lib to asan_win_dynamic_runtime_thunk.lib
>
> It turned out that we have to bridge more stuff between the executable
> and the ASan RTL DLL than just __asan_option_detect_stack_use_after_return.
> See PR20918 for more details.
>
>
> Added:
>     compiler-rt/trunk/lib/asan/asan_win_dynamic_runtime_thunk.cc
>       - copied, changed from r217666, compiler-rt/trunk/lib/asan/asan_win_uar_thunk.cc
> Removed:
>     compiler-rt/trunk/lib/asan/asan_win_uar_thunk.cc
> Modified:
>     compiler-rt/trunk/lib/asan/CMakeLists.txt
>
> Modified: compiler-rt/trunk/lib/asan/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/CMakeLists.txt?rev=217673&r1=217672&r2=217673&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/CMakeLists.txt (original)
> +++ compiler-rt/trunk/lib/asan/CMakeLists.txt Fri Sep 12 08:21:02 2014
> @@ -193,11 +193,12 @@ else()
>          CFLAGS ${ASAN_CFLAGS} -DASAN_DLL_THUNK
>          DEFS ${ASAN_COMMON_DEFINITIONS})
>        add_dependencies(asan clang_rt.asan_dll_thunk-${arch})
> -      add_compiler_rt_runtime(clang_rt.asan_uar_thunk-${arch} ${arch} STATIC
> -        SOURCES asan_win_uar_thunk.cc
> -        CFLAGS ${ASAN_CFLAGS} -DASAN_UAR_THUNK -Zl
> +      add_compiler_rt_runtime(clang_rt.asan_dynamic_runtime_thunk-${arch} ${arch}
> +        STATIC
> +        SOURCES asan_win_dynamic_runtime_thunk.cc
> +        CFLAGS ${ASAN_CFLAGS} -DASAN_DYNAMIC_RUNTIME_THUNK -Zl
>          DEFS ${ASAN_COMMON_DEFINITIONS})
> -      add_dependencies(asan clang_rt.asan_uar_thunk-${arch})
> +      add_dependencies(asan clang_rt.asan_dynamic_runtime_thunk-${arch})
>      endif()
>    endforeach()
>  endif()
>
> Copied: compiler-rt/trunk/lib/asan/asan_win_dynamic_runtime_thunk.cc (from r217666, compiler-rt/trunk/lib/asan/asan_win_uar_thunk.cc)
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_win_dynamic_runtime_thunk.cc?p2=compiler-rt/trunk/lib/asan/asan_win_dynamic_runtime_thunk.cc&p1=compiler-rt/trunk/lib/asan/asan_win_uar_thunk.cc&r1=217666&r2=217673&rev=217673&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_win_uar_thunk.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_win_dynamic_runtime_thunk.cc Fri Sep 12 08:21:02 2014
> @@ -9,23 +9,34 @@
>  //
>  // This file is a part of AddressSanitizer, an address sanity checker.
>  //
> -// This file defines a copy of __asan_option_detect_stack_use_after_return that
> -// should be used when linking an MD runtime with a set of object files on
> -// Windows.
> +// This file defines things that need to be present in the application modules
> +// to interact with the ASan DLL runtime correctly and can't be implemented
> +// using the default "import library" generated when linking the DLL RTL.
> +//
> +// This includes:
> +//  - forwarding the detect_stack_use_after_return runtime option
> +//  - FIXME: installing a custom SEH handler (PR20918)
>  //
> -// The ASan MD runtime dllexports this variable, so normally we would dllimport
> -// it in each TU.  Unfortunately, in general we don't know
> -// if a given TU is going to be used with a MT or MD runtime.
>  //===----------------------------------------------------------------------===//
>
> -// Only compile this code when buidling asan_uar_thunk.lib
> +// Only compile this code when buidling asan_dynamic_runtime_thunk.lib
>  // Using #ifdef rather than relying on Makefiles etc.
>  // simplifies the build procedure.
> -#ifdef ASAN_UAR_THUNK
> +#ifdef ASAN_DYNAMIC_RUNTIME_THUNK
>  extern "C" {
>  __declspec(dllimport) int __asan_should_detect_stack_use_after_return();
>
> +// Define a copy of __asan_option_detect_stack_use_after_return that should be
> +// used when linking an MD runtime with a set of object files on Windows.
> +//
> +// The ASan MD runtime dllexports '__asan_option_detect_stack_use_after_return',
> +// so normally we would just dllimport it.  Unfortunately, the dllimport
> +// attribute adds __imp_ prefix to the symbol name of a variable.
> +// Since in general we don't know if a given TU is going to be used
> +// with a MT or MD runtime and we don't want to use ugly __imp_ names on Windows
> +// just to work around this issue, let's clone the a variable that is
> +// constant after initialization anyways.
>  int __asan_option_detect_stack_use_after_return =
>      __asan_should_detect_stack_use_after_return();
>  }
> -#endif // ASAN_UAR_THUNK
> +#endif // ASAN_DYNAMIC_RUNTIME_THUNK
>
> Removed: compiler-rt/trunk/lib/asan/asan_win_uar_thunk.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_win_uar_thunk.cc?rev=217672&view=auto
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_win_uar_thunk.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_win_uar_thunk.cc (removed)
> @@ -1,31 +0,0 @@
> -//===-- asan_win_uar_thunk.cc ---------------------------------------------===//
> -//
> -//                     The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open Source
> -// License. See LICENSE.TXT for details.
> -//
> -//===----------------------------------------------------------------------===//
> -//
> -// This file is a part of AddressSanitizer, an address sanity checker.
> -//
> -// This file defines a copy of __asan_option_detect_stack_use_after_return that
> -// should be used when linking an MD runtime with a set of object files on
> -// Windows.
> -//
> -// The ASan MD runtime dllexports this variable, so normally we would dllimport
> -// it in each TU.  Unfortunately, in general we don't know
> -// if a given TU is going to be used with a MT or MD runtime.
> -//===----------------------------------------------------------------------===//
> -
> -// Only compile this code when buidling asan_uar_thunk.lib
> -// Using #ifdef rather than relying on Makefiles etc.
> -// simplifies the build procedure.
> -#ifdef ASAN_UAR_THUNK
> -extern "C" {
> -__declspec(dllimport) int __asan_should_detect_stack_use_after_return();
> -
> -int __asan_option_detect_stack_use_after_return =
> -    __asan_should_detect_stack_use_after_return();
> -}
> -#endif // ASAN_UAR_THUNK
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list