已合并
fix: resolve ASan preload library path #4174
yelongjian创建于 7月28日
fix: resolve ASan preload library path #4174
已合并
yelongjian创建于 7月28日
2 个文件变更+11-3
@@ -13,8 +13,8 @@ if(NOT PROJECT_SOURCE_DIR)
13 else()13 else()
14 include(FetchContent)14 include(FetchContent)
15 15 
16- set(CANN_CMAKE_TAG "master-044") # CANN_CMAKE_TAG变量会在scripts/download_third_party_source.sh中用到,确保这个变量存在16+ set(CANN_CMAKE_TAG "master-045") # CANN_CMAKE_TAG变量会在scripts/download_third_party_source.sh中用到,确保这个变量存在
17- set(CANN_CMAKE_SHA256 "2d8827b33327978c7b49d09e3b1cfbd891b41b7b5123c290d41534d29a625056")17+ set(CANN_CMAKE_SHA256 "00a9d8719c5aff1b9b8e69202697f4d80ee3135a8f797146d8a38a4338d5df6d")
18 if(CANN_3RD_LIB_PATH AND EXISTS "${CANN_3RD_LIB_PATH}/cmake-${CANN_CMAKE_TAG}.tar.gz")18 if(CANN_3RD_LIB_PATH AND EXISTS "${CANN_3RD_LIB_PATH}/cmake-${CANN_CMAKE_TAG}.tar.gz")
19 FetchContent_Declare(19 FetchContent_Declare(
20 cann-cmake20 cann-cmake
@@ -179,8 +179,13 @@ function(_add_es_library_impl)
179 # CMake if() 自动识别 TRUE/True/ON/On/on/YES/yes/1 等真值,无需逐一枚举179 # CMake if() 自动识别 TRUE/True/ON/On/on/YES/yes/1 等真值,无需逐一枚举
180 if(ENABLE_ASAN)180 if(ENABLE_ASAN)
181 set(ENABLE_ASAN_NORMALIZED "true")181 set(ENABLE_ASAN_NORMALIZED "true")
182+ set(ASAN_LIBRARY_PATH "")
183+ if (COMMAND cann_get_asan_real_path)
184+ cann_get_asan_real_path(ASAN_LIBRARY_PATH)
185+ endif ()
182 else()186 else()
183 set(ENABLE_ASAN_NORMALIZED "")187 set(ENABLE_ASAN_NORMALIZED "")
188+ set(ASAN_LIBRARY_PATH "")
184 endif()189 endif()
185 # 每次 cmake 配置都重新生成脚本,确保 ENABLE_ASAN 等配置变化能即时反映到脚本中190 # 每次 cmake 配置都重新生成脚本,确保 ENABLE_ASAN 等配置变化能即时反映到脚本中
186 # (修复脚本缓存陈旧导致 --asan=false 不生效的问题,见 issue #466)。191 # (修复脚本缓存陈旧导致 --asan=false 不生效的问题,见 issue #466)。
@@ -289,7 +294,10 @@ execute_gen_esb() {
289 ENV_PREFIX=\"ASCEND_OPP_PATH=\${OPP_PATH}\"294 ENV_PREFIX=\"ASCEND_OPP_PATH=\${OPP_PATH}\"
290 fi295 fi
291 if [[ \"${ENABLE_ASAN_NORMALIZED}\" == \"true\" ]]; then296 if [[ \"${ENABLE_ASAN_NORMALIZED}\" == \"true\" ]]; then
292- USE_ASAN=\$(gcc -print-file-name=libasan.so)297+ USE_ASAN=\"${ASAN_LIBRARY_PATH}\"
298+ if [ -z \"\${USE_ASAN}\" ]; then
299+ USE_ASAN=\$(gcc -print-file-name=libasan.so)
300+ fi
293 ENV_PREFIX=\"\${ENV_PREFIX} LD_PRELOAD=\${USE_ASAN}\"301 ENV_PREFIX=\"\${ENV_PREFIX} LD_PRELOAD=\${USE_ASAN}\"
294 fi302 fi
295 log_debug \"Command: \$ENV_PREFIX \\\"\${GEN_ESB_EXE}\\\" --output_dir=\\\"\${OUTPUT_DIR}\\\" --module_name=\\\"\${MODULE_NAME}\\\" --exclude_ops=\\\"\${EXCLUDE_OPS}\\\" \${EXTRACT_HISTORY_FLAG} \${RELEASE_VERSION_FLAG} \${HISTORY_REGISTRY_ARG} \${RELEASE_DATE_ARG} \${BRANCH_NAME_ARG}\"303 log_debug \"Command: \$ENV_PREFIX \\\"\${GEN_ESB_EXE}\\\" --output_dir=\\\"\${OUTPUT_DIR}\\\" --module_name=\\\"\${MODULE_NAME}\\\" --exclude_ops=\\\"\${EXCLUDE_OPS}\\\" \${EXTRACT_HISTORY_FLAG} \${RELEASE_VERSION_FLAG} \${HISTORY_REGISTRY_ARG} \${RELEASE_DATE_ARG} \${BRANCH_NAME_ARG}\"