已合并
fix: resolve ASan preload library path #4174
yelongjian创建于 7月28日
fix: resolve ASan preload library path #4174
已合并
共 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-cmake | 20 | 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 | fi | 295 | fi |
| 291 | if [[ \"${ENABLE_ASAN_NORMALIZED}\" == \"true\" ]]; then | 296 | 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 | fi | 302 | 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}\" |