Perl:linux源代码中的checkstack.pl做了什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Perl:linux源代码中的checkstack.pl做了什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1019字,纯文字阅读大概需要2分钟。
内容图文
![Perl:linux源代码中的checkstack.pl做了什么?](/upload/InfoBanner/zyjiaocheng/950/2ed6d07675fa4bdf8eb6c085808edb68.jpg)
我正在linux内核中做一个项目,我想知道这个checkstack.pl做了什么?我从未学习过perl,因此无法理解该程序.如果我能从概念上理解程序,如果不是逐行理解,那将是很棒的.
任何努力赞赏.
资源:
link text
假设我想编写自己的调整代码,可以在C程序中编写.我的主要问题是:为什么编写这段代码或者应该用perl编写?
解决方法:
它创建了内核中每个函数使用的堆栈帧大小的列表(即每个函数用于局部变量和诸如此类的局部临时空间的总量).
它的方式是通过内核的反汇编并寻找两件事:函数名称和调整堆栈的指令.它通过查找与$funcre(qr / ^ $x *<(.*)>:$/)匹配的行来查找函数名称,并查找与$re或$dre匹配的堆栈调整指令;后两者高度依赖于内核编译的体系结构,这是if / else语句检查时的第一个大块. $re搜索以固定量(绝大多数函数)调整堆栈的函数,并且$dre搜索以可变量调整堆栈的函数(罕见).
objdump是binutils的一部分; objdump -d是反汇编目标文件的命令.此脚本的用法是反汇编内核(objdump -d vmlinux)并将输出通过管道传输到脚本中.脚本的输出是内核中所有函数的列表,按最大堆栈帧大小排序.我假设脚本的目的是让内核维护者能够通过痛苦地确保所有内容的堆栈帧尽可能小来避免堆栈溢出,并且此脚本允许他们验证这一点.
内容总结
以上是互联网集市为您收集整理的Perl:linux源代码中的checkstack.pl做了什么?全部内容,希望文章能够帮你解决Perl:linux源代码中的checkstack.pl做了什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。