我最近发布了一个关于堆栈分段和提升协同程序的问题, 但似乎-fsplit-stack方法只适用于使用该标志编译的源文件,当你分支到另一个尚未编译的函数时,运行时会崩溃 -的fsplit堆栈.对于例如
这意味着运行时使用函数本地技术来检测何时超过当前堆栈.而不是"保护页面信号"技巧,其中堆栈的末尾总是有一个保护页面,它会在写入或读取时产生一个信号,告诉运行时分配一个新的堆栈帧并分支到那个.
那么这个国旗的用途是什么?如果我链接到任何其他未使用它构建的库,代码将会中断(甚至libstdc ++和libc),那么人们如何使用大型项目?
从阅读关于拆分堆栈的gcc wiki看来,从拆分堆栈函数调用非拆分堆栈函数会导致分配64KB堆栈帧.好.
但似乎尚未实现从函数指针调用非拆分堆栈函数以遵循上述方案.
这个标志有什么用呢?如果我继续调用任何虚函数我的程序会中断吗?
从下面的答案进一步看来,clang似乎没有实现拆分堆栈?
我正在研究serverless-plugin-split-stacks无服务器框架的插件,因为我已经达到了 200 个资源的 CloudFormation 限制。在其 Github 页面的“迁移策略”部分中,它说我有三个选择:
前两个,我有点明白他们的意思(但我不是百分百确定)。我的问题是关于最后一个选项。什么是 lambda 群?如何对 lambda 函数进行分组?是手动完成的还是自动分组的?