考虑下面的情况,最终会因开卷机抱怨而崩溃 _URC_END_OF_STACK 并且在 _UA_SEARCH_PHASE 中未找到处理程序
class array{
public:
int foo() {
throw 5;
}
};
int main() {
array a0;
try {
a0.foo();
}
catch(const int )
{}
}
对于上述情况,我的链接器将 foo 放入 .text._ZN5array3fooEv 部分,并将其他所有内容放入 .text 部分? llvm ld.lld 则不是这种情况(全部在 .text 中)。
主 -> .text foo -> .text._ZN5array3fooEv (链接器不合并它们)
答案取决于您的展开库,在这种情况下,mylibUnwind.a 检查 .text 的边界,并且 foo 不在 .text 中,结果是 _URC_END_OF_STACK。