核符号表(Kernel Symbol Table)是什么东西?
2004-10-27 13:00
344 查看
内核并不使用符号名。它是通过变量或函数的地址(指针)来使用变量或函数的,而 不是使用size_t BytesRead,内核更喜欢使用(例如)c0343f20来引用 这个变量。
而另一方面,人们并不喜欢象c0343f20这样的名字。我们跟喜欢使用象 size_t BytesRead这样的表示。通常,这并不会带来什么问题。内核主要 是用C语言写成的,所以在我们编程时编译器/连接程序允许我们使用符号名,并且使 内核在运行时使用地址表示。这样大家都满意了。
然而,存在一种情况,此时我们需要知道一个符号的地址(或者一个地址对应的 符号)。这是通过符号表来做到的,与gdb能够从一个地址给出函数名(或者给出一个 函数名的地址)的情况很相似。符号表是所有符号及其对应地址的一个列表。这里是 一个符号表例子:
c03441a0 B dmi_broken
c03441a4 B is_sony_vaio_laptop
c03441c0 b dmi_ident
c0344200 b pci_bios_present
c0344204 b pirq_table
c0344208 b pirq_router
c034420c b pirq_router_dev
c0344220 b ascii_buffer
c0344224 b ascii_buf_bytes
你可以看出名称为dmi_broken的变量位于内核地址c03441a0处。
而另一方面,人们并不喜欢象c0343f20这样的名字。我们跟喜欢使用象 size_t BytesRead这样的表示。通常,这并不会带来什么问题。内核主要 是用C语言写成的,所以在我们编程时编译器/连接程序允许我们使用符号名,并且使 内核在运行时使用地址表示。这样大家都满意了。
然而,存在一种情况,此时我们需要知道一个符号的地址(或者一个地址对应的 符号)。这是通过符号表来做到的,与gdb能够从一个地址给出函数名(或者给出一个 函数名的地址)的情况很相似。符号表是所有符号及其对应地址的一个列表。这里是 一个符号表例子:
c03441a0 B dmi_broken
c03441a4 B is_sony_vaio_laptop
c03441c0 b dmi_ident
c0344200 b pci_bios_present
c0344204 b pirq_table
c0344208 b pirq_router
c034420c b pirq_router_dev
c0344220 b ascii_buffer
c0344224 b ascii_buf_bytes
你可以看出名称为dmi_broken的变量位于内核地址c03441a0处。
相关文章推荐
- 关于内核符号表(Kernel-Symbol-Table)
- LDD3_NO.4:The Kernel Symbol Table
- 工具接口标准(TIS)可执行链接格式(ELF)规范-卷I-符号表(Symbol Table)
- 符号表(Symbol Table)
- 说说编译链接系统中的符号(symbol)、重定位(relocation)、字串表(string-table)和节(sec
- 符号表实现(Symbol Table Implementations)
- 说说编译链接系统中的符号(symbol)、重定位(relocation)、字串表(string-table)和节(section)
- 说说编译链接系统中的符号(symbol)、重定位(relocation)、字串表(string-table)和节(section)
- 说说编译链接系统中的符号(symbol)、重定位(relocation)、字串表(string-table)和节(section)
- 大家好,我刚来,也不知道该在这留下些什么东西,大家都在写什么?
- linux内核学习笔记【二】最终内核页表 Final kernel Page Table
- 数据结构里的串是什么东西?(其实串就是指字符串)
- 网络,是什么东西?
- 没有架构,就能实现?——这是什么东西(1)
- 关于Android Studio 查看源码报红:cannot resolve symbol 所需要了解的东西
- fork拷贝父进程的什么东西
- 2011-07-05|课改是个什么东西?
- 实验吧CTF题库 what a fuck!这是什么鬼东西? 题解
- ARM是什么东西?
- 关于符号Symbol第二篇