refactor(asan): TPC_ASAN 环境变量改 args 直传
--asan 不再写 TPC_ASAN 环境变量,改为 Config 解析后直接经 asan_mode=args.asan 传给 Phase2Translator(主进程 .ll→.obj 插桩与 链接 -fsanitize=address 均读 self.asan_mode),消除环境变量在 worker 子进程/外部调用链下的不可靠性。
This commit is contained in:
1 parent
e83c06041a
commit
0db1ccd1bb
2 files changed
+9
-8
No files matched your search
@@ -152,10 +152,10 @@ def main() -> None:
|
||||
|
||||
args: argparse.Namespace = parser.parse_args()
|
||||
|
||||
# ASan 模式(--asan):透传 TPC_ASAN=1 供 Phase2Translator 及 worker 子进程
|
||||
# 检测(compile_ll_to_obj 先 opt -passes=asan 插桩,链接追加 -fsanitize=address)。
|
||||
# ASan 模式(--asan):直接经 args 传给 Phase2Translator(compile_ll_to_obj
|
||||
# 先 opt -passes=asan 插桩,链接追加 -fsanitize=address)。不再用 TPC_ASAN
|
||||
# 环境变量透传——环境变量在 worker 子进程/外部调用链下不可靠。
|
||||
if args.asan:
|
||||
os.environ['TPC_ASAN'] = '1'
|
||||
_vlog().info('ASan 模式已启用(opt -passes=asan + -fsanitize=address)', 'asan')
|
||||
|
||||
project_file: str | None = args.project
|
||||
@@ -300,7 +300,7 @@ def main() -> None:
|
||||
except:
|
||||
pass
|
||||
_vlog().info(f"includes.binary: 已清空 {precompiled_dir} ({cleared} 个文件)")
|
||||
trans: Phase2Translator = Phase2Translator(src, temp_dir, output_dir, compile_cmd=cc_cmd, compile_flags=cc_flags, linker_cmd=linker_cmd, linker_flags=linker_flags, linker_output=linker_output, include_dirs=project_include_dirs, target_triple=target_triple, target_datalayout=target_datalayout, force_recompile_includes=force_recompile_includes)
|
||||
trans: Phase2Translator = Phase2Translator(src, temp_dir, output_dir, compile_cmd=cc_cmd, compile_flags=cc_flags, linker_cmd=linker_cmd, linker_flags=linker_flags, linker_output=linker_output, include_dirs=project_include_dirs, target_triple=target_triple, target_datalayout=target_datalayout, force_recompile_includes=force_recompile_includes, asan_mode=args.asan)
|
||||
trans.sha1_map = Load_sha1_map(temp_dir)
|
||||
trans.slice_level = slice_level
|
||||
trans.run()
|
||||
|
||||
Reference in new issue
Block a user