llvm/llvm-project

crash when section has `.cfi_startproc` but no `.cfi_endproc`

已关闭

#177,852 创建于 2026年1月25日

 (7 条评论) (0 个反应) (1 位负责人)C++ (10,782 个派生)batch import
crashgood first issuellvm:mc

仓库指标

星标
 (26,378 个星标)
PR 合并指标
 (平均合并 1天 2小时) (30 天内合并 1,000 个 PR)

描述

LLVM crashes on this program

https://godbolt.org/z/9W51vc3bW

module asm ".pushsection .text.foo,\22ax\22, @progbits"
module asm ".type foo, @function"
module asm "foo:"
module asm ".cfi_startproc"
module asm ".popsection"

module asm ".type bar, @function"
module asm "bar:"
module asm ".cfi_startproc"
module asm ".cfi_endproc"
llc: /root/llvm-project/llvm/lib/MC/MCExpr.cpp:223: llvm::MCSymbolRefExpr::MCSymbolRefExpr(const llvm::MCSymbol*, llvm::MCExpr::Spec, const llvm::MCAsmInfo*, llvm::SMLoc): Assertion `Symbol' failed.

This assembly is malformed (but in a way that might come up during development). When the .popsection is removed, we actually get a nice error:

<inline asm>:8:1: error: starting new .cfi frame before finishing the previous one
.cfi_endproc
^
Compiler returned: 1

I think that .popsection should emit an error when the section opened a CFI scope that wasn't yet closed.

贡献者指南