日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux内核符号表

發布時間:2024/3/24 linux 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux内核符号表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,什么是符號(Symbols)?
? ? 什么是Symbol? ?其實就是kernel中的變量(Variable Name)或函數名稱(Function Name)
? ? 這樣可以方便程序員在寫程序時可以直接參照這一份Symbol的索引文件,找到所需要的kernel信息,這一份Symbol的索引文件又稱為kernel symbol table。
? ??
二,內核符號表(Kernel Symbol Table)?

2.1)定義
內核符號表,就是在內核的內部函數或變量中,可供外部引用的函數和變量的符號表。
其實說白了就是一個索引文件,它存在的目的就是讓外部軟件可以知道kernel文件內部實際分配的位置。

2.2)所在文件
編譯內核時,System.map文件用于存放內核符號表信息。
(System.map文件位于/或者/boot、/usr/src/linux/下)

2.3)文件的生成
符號表是所有內核符號及其對應地址的一個列表,隨著每次內核的編譯,就會產生一個新的對應System.map文件,當內核運行出錯時,通過System.map中的符號表解析,就可以查到一個地址值對應的變量名。System.map文件記錄了所有代碼的運行地址(所有函數和變量)。
【內核并不使用符號名。它是通過變量或函數的地址(指針)來使用變量或函數的。其實內核連System.map文件都不使用,只是生成用于調試用的。】

2.4)system.map文件的格式

? ?線性地址 ? ? ? ? ? 類型 ? ? ? ?符號
ffffffff81002590 ? ? ? t ? ? ? ?create_dev
ffffffff81009c00 ? ? ? T ? ? ? show_regs

其中,類型 若是小寫字母則表示局部引用, 若是大寫字母則表示全局引用(外部).?

2.5)內核符號表的存在意義
1)把內核的符號地址,轉化為程序猿可以看懂的符號名稱
內核符號表就是為程序員通過符號來訪問程序體的對應地址(指針),建立了一個動態的,可變更的映射表格。
例如:
內核不會使用符號名create_dev,而會使用ffffffff81002590來引用這個變量。但程序猿們更喜歡符號名create_dev這樣直觀的名字。
所以就需要這么一個對應關系表。這個類似于網絡里的DNS,沒有誰愿意去記那沒規律的IP地址,而記個網址就好記多了。

2)轉換之后,就可以更方便的調試內核代碼
對于系統的oop消息、或者通過gdb的調試消息,都需要根據該對照表,將內核熟悉的函數地址轉化為用戶熟悉的函數名稱,便于用戶進行故障定位、運行監控。
而內核本身并不真正使用System.map,而只是用于做調試用。


2.6)內核符號表存儲位置

2.6.1) System.map

磁盤中真實存在的文件,存儲內核中靜態編譯的函數和變量地址,每個新編譯內核對應一個System.map文件,當klogd輸出內核消息時,會通過/boot/System.map來將函數、變量地址轉換為名稱,方便用戶理解。該文件對應不同的編譯內核有對應的實現文件。

2.6.2 )/proc/kallsyms
內核啟動時候創建,供oops時定位錯誤,文件大小總為0,包含當前內核導出的、可供使用的變量或者函數;它只是內核數據的簡單表示形式。

2.7)System.map 和 /proc/kallsyms 區別

二者相似點:

都是內核函數、變量的符號表,結構一致;對于可導出的內核變量、函數,其運行時在物理內存中的位置是一樣的。


二者區別
兩者側重點不同,
(1)System.map文件面向內核,對于內核中的沒有導出的變量或者函數名,比如kthread_create_list鏈表頭指針,也有其相應的內核地址,該文件一般是只讀的、固定大小的,沒有動態添加模塊中的變量、函數名
(2)而kallsyms在內核啟動過程中創建,并實時更新,反映的是系統的當前最新情況,其內部也包含內核或者是已加載模塊導出的函數、變量名稱。
所以和System.map文件有差別,kallsyms文件動態變化,大小不固定。

總結就是:
System.map文件較單純,是在用戶一開始編譯就產生的固定文件,不會因為任何原因更改,除非被換掉。
/proc/kallsyms是一個在啟動時由Linux kernel實時產生的文件當系統有任何變更時,它就會馬上做出修正
因為這是動態的信息,當用戶新增或刪除一個module,都會自動做實時的修正(/proc下的都是這一類型的文件)
? ? ? ?
2.8)分類
Linux內核的符號表位于兩個部分。
2.8.1)首先是內核的靜態部分,也就是內核文件映像vmlinuz部分的符號表,對應于/proc/kallsyms和System.map這兩個文件。
2.8.2)還有一部分則是Linux可配置模塊部分的符號表。

2.9)形成過程

? Linux內核符號表/proc/kallsyms的形成過程

? (1)./scripts/kallsyms.c負責生成System.map
? (2)./kernel/kallsyms.c負責生成/proc/kallsyms
? (3)./scripts/kallsyms.c解析vmlinux(.tmp_vmlinux)生成kallsyms.S(.tmp_kallsyms.S),然后內核編譯過程中將kallsyms.S(內核符號表)編入內核鏡像uImage
內核啟動后./kernel/kallsyms.c解析uImage形成/proc/kallsyms

要在一個內核中啟用 kallsyms 功能,必須用進行內核配置,make menuconfig設置 CONFIG_KALLSYMS 選項為y;如果你要在 kallsyms 中包含全部符號信息,必須設置 CONFIG_KALLSYMS_ALL 為y。


三,導出符號表
驅動程序中,如果該驅動程序中有被其他內核代碼調用的部分,可以用EXPORT_SYMBOL導出到內核符號表中。

附:
內核符號表類型

符號類型

名稱

說明

A

Absolute

符號的值是絕對值,并且在進一步鏈接過程中不會被改變

B

BSS

符號在未初始化數據區或區(section)中,即在BSS段中

C

Common

符號是公共的。公共符號是未初始化的數據。在鏈接時,多個公共符號可能具有同一名稱。如果該符號定義在其他地方,則公共符號被看作是未定義的引用

D

Data

符號在已初始化數據區中

G

Global

符號是在小對象已初始化數據區中的符號。某些目標文件的格式允許對小數據對象(例如一個全局整型變量)可進行更有效的訪問

I

Inderect

符號是對另一個符號的間接引用

N

Debugging

符號是一個調試符號

R

Read only

符號在一個只讀數據區中

S

Small

符號是小對象未初始化數據區中的符號

T

Text

符號是代碼區中的符號

U

Undefined

符號是外部的,并且其值為0(未定義)

-

Stabs

符號是a.out目標文件中的一個stab符號,用于保存調試信息

?

Unknown

符號的類型未知,或者與具體文件格式有關



總結

以上是生活随笔為你收集整理的Linux内核符号表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲福利视频一区二区三区 | 国产精品高潮呻吟久久av黑人 | 50一60岁老妇女毛片 | 调教女m荡骚贱淫故事 | 亚洲天堂8| av激情久久 | eeuss鲁丝片一区二区三区 | 懂色av一区二区在线播放 | 91看片在线看 | 成人婷婷 | 精品一区二区三区日韩 | www欧美在线 | 老熟妇一区二区三区啪啪 | 五月婷婷综合网 | 国产精品久久久久高潮 | 久久桃花网 | 操的网站 | 亚洲天堂资源在线 | 国产欧美精品aaaaaa片 | 男人天堂视频在线 | 国产最新视频在线 | 国产一区二区不卡在线 | 欧美日韩一区二区视频在线观看 | 国产伦精品一区二区三区千人斩 | 最新网址av | 高潮毛片无遮挡 | 深夜激情影院 | 国语对白做受按摩的注意事项 | 成人小片| 蜜桃臀aⅴ精品一区二区三区 | 亚洲精品免费在线 | 91精品国产乱码久久 | 日韩精品少妇 | 综合爱爱网 | 亚洲成人a∨ | 91精品一区二区三 | 成人一级影视 | 国产欧美激情 | 中国二级毛片 | 伊人资源网 | 亚洲AV成人精品 | 欧美成一区二区三区 | 男人靠女人免费视频网站 | 国产综合视频一区二区 | 国产成人精品白浆久久69 | 伊人222成人综合网 亚洲日本中文 | 精品一二三 | 久久精彩 | 女人下部全棵看视频 | 精品深夜av无码一区二区老年 | 国产在线喷水 | 超碰女人 | 污视频网站免费观看 | 日韩免费淫片 | 日韩三级一区 | 欧美一区二区三区视频在线观看 | a在线| 国产精品久久婷婷 | 国产精品videossex久久发布 | 好吊色一区二区 | 91色交视频 | 天堂中文字幕在线 | 亚洲午码 | 欧美草b| 女人免费视频 | 国产在成人精品线拍偷自揄拍 | 污污网站在线观看视频 | 91精品国产综合久久福利 | 男人与雌性宠物交啪啪 | 国产页 | 欧美一级色图 | 风间由美一区二区三区 | 免费瑟瑟网站 | 欧美三级网站在线观看 | 日韩欧美黄色 | 亚洲av无码国产综合专区 | 国产一二三视频 | 婷婷丁香久久 | 丰满av| 182tv午夜福利在线观看 | 亚洲欧美日本另类 | 扒开美女内裤狂揉下部 | 欧美天堂在线视频 | 麻豆成人久久精品一区二区三区 | 国产chinasex对白videos麻豆 | 91无套直看片红桃 | 最新视频 - 88av | 精品乱码久久久久久中文字幕 | 四虎永久免费 | 九九九色| 天天射寡妇射 | 怡红院av亚洲一区二区三区h | 日韩毛片在线视频 | 视频一区日韩 | av一级黄色片 | 欧美10p | c逼| 国产精品成人Av | 林天顾悦瑶笔趣阁 |