gpt4 book ai didi

linux - Perl:Linux 源代码中的 checkstack.pl 是做什么的?

转载 作者:IT王子 更新时间:2023-10-29 00:11:54 24 4
gpt4 key购买 nike

我正在 linux 内核中做一个项目,我想知道这个 checkstack.pl 有什么作用?我从未学过 perl,所以无法理解该程序。如果我能在概念上理解程序,即使不是逐行理解,那就太好了。任何努力表示赞赏。

来源: link text

假设我想写一些我自己调整的代码,我可以用 C 程序写吗?我的主要问题是:为什么要用 perl 或应该用 perl 编写这段代码?

最佳答案

它创建了内核中每个函数使用的堆栈帧大小的列表(即每个函数用于局部变量等的局部暂存空间总量)。

它的方法是通过反汇编内核并寻找两件事:函数名称和调整堆栈的指令。它通过查找匹配 $funcre 的行来查找函数名称( qr/^$x* <(.*)>:$/ ),并查找与 $re 匹配的堆栈调整指令。或 $dre ;后两者高度依赖于编译内核的体系结构,这是第一个大块 if/else 语句正在检查的内容。 $re搜索以固定数量调整堆栈的函数(绝大多数函数),以及 $dre搜索以可变数量调整堆栈的函数(很少见)。

objdumpbinutils 的一部分; objdump -d是反汇编目标文件的命令。此脚本的用途是反汇编内核 ( objdump -d vmlinux ) 并将输出通过管道传输到脚本中。脚本的输出是内核中所有函数的列表,按最大堆栈帧大小排序。我假设该脚本的目的是让内核维护者能够通过痛苦地确保所有内容的堆栈帧尽可能小来避免堆栈溢出,并且该脚本允许他们验证这一点。

关于linux - Perl:Linux 源代码中的 checkstack.pl 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4169109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com