feat(ctrlc-stack): 新增 --ctrlc-stack 编译期开关(按键打印 .vp 调用栈)
Config/Phase2Translator: --ctrlc-stack 自动开 DWARF;缓存失效;链接后 llvm-dwarfdump 导出 <exe>.stackmap(逐条归一化为 RVA——旧的整体判据会被 lld 去重产生的 0 地址行带偏,导致全表差一个 ImageBase);链接参数追加 -ldbghelp;include 也生成 DWARF 并隔离到 includes.binary_ctrlcstack(_asan);llc 追加 -frame-pointer=all。 BaseGen._RegisterDbgStackInstallViaCtor + StructGen.finalize 钩子: 注入 llvm.global_ctors(priority 65535) 在启动期调用 dbgstack.Install(),写盘前核对 global_ctors 否则 fail-fast。 FuncGen._adjust_args: 指针到整数的 fail-fast 补逐项类型诊断。
This commit is contained in:
1 parent
f7ace9876d
commit
53a345a59a
6 files changed
+1351
-123
No files matched your search
@@ -140,6 +140,12 @@ class StructGenMixin:
|
||||
_DbgInfo = self._GetDebugInfo()
|
||||
if _DbgInfo is not None:
|
||||
_DbgInfo.Finalize()
|
||||
# Ctrl+C 调用栈(--ctrlc-stack):同样是"落成 .ll 文本之前"的模块级收尾——
|
||||
# 当本模块就是 includes/dbgstack.vp 时,注入 @llvm.global_ctors 构造器调用
|
||||
# 其 Install()(见 BaseGen._RegisterDbgStackInstallViaCtor)。未启用/非该模块
|
||||
# 时 ctrlc_stack_ctor=False,不做任何事(零影响)。
|
||||
if self.ctrlc_stack_ctor:
|
||||
self._RegisterDbgStackInstallViaCtor()
|
||||
ir_text: str
|
||||
try:
|
||||
ir_text = str(self.module)
|
||||
|
||||
Reference in new issue
Block a user