我所能找到的关于 %gs 寄存器的信息是,它似乎是一个在 >32 位 x86 架构上免费使用的寄存器。似乎 gs_change 在任何系统调用之前执行。 有人可以向我指出如何使用该寄存器的文档吗?— 我假设它是用于内核/用户模式切换的寄存器。
我的问题的背景是,我试图了解内核堆栈跟踪以及到底发生了什么。
堆栈跟踪是从到达 的刷新过程生成的/proc/sys/kernel/hung_task_timeout_secs
。
它似乎%gs
是为 x86 Linux 内核上的 GCC 堆栈保护功能保留的CONFIG_CC_STACKPROTECTOR
,以便设置堆栈金丝雀。您可以在arch/x86/include/asm/stackportector.h中看到一些解释。
归档时间: |
|
查看次数: |
3847 次 |
最近记录: |