关注this问题,llvm是否可以生成可能跳转到同一地址空间中函数内任意地址的代码? 即。
void func1() {
...
<code that jumps to addr2>
...
}
void func2() {
...
addr2:
<some code in func2()>
...
}
答案 0 :(得分:3)
是,否,是,否,(是) - 这取决于您查看的级别以及possible
的含义:
goto
)longjmp
宏跳回到您已访问过的控制流中的某个位置(您调用setjmp
的位置),但也恢复(大部分)系统状态。 编辑:但是,如果func2不在你跳转的当前callstack的某个地方,那么这就是UB。