精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux內(nèi)核完全剖析---頭文件

系統(tǒng) Linux
程序在使用一個(gè)函數(shù)之前,應(yīng)該首先聲明該函數(shù)。為了便于使用,通常的做法是把同一類(lèi)函數(shù)或數(shù)據(jù)結(jié)構(gòu)以及常數(shù)的聲明放在一個(gè)頭文件(header file)中。

程序在使用一個(gè)函數(shù)之前,應(yīng)該首先聲明該函數(shù)。為了便于使用,通常的做法是把同一類(lèi)函數(shù)或數(shù)據(jù)結(jié)構(gòu)以及常數(shù)的聲明放在一個(gè)頭文件(header file)中。頭文件中也可以包括任何相關(guān)的類(lèi)型定義和宏(macros)。在程序源代碼文件中則使用預(yù)處理指令“#include”來(lái)引用相關(guān)的頭文件。
程序中如下形式的一條控制行語(yǔ)句將會(huì)使得該行被文件filename的內(nèi)容替換掉:

# include

當(dāng)然,文件名filename中不能包含 > 和換行字符以及 "、'、\、或 /* 字符。編譯系統(tǒng)會(huì)在定義的一系列地方搜索這個(gè)文件。類(lèi)似地,下面形式的控制行會(huì)讓編譯器首先在源程序所在目錄中搜索filename文件:

# include "filename"

如果沒(méi)有找到,編譯器再執(zhí)行同上面一樣的搜索過(guò)程。在這種形式中,文件名filename中不能包含換行字符和 "、'、\、或 /* 字符,但允許使用 > 字符。

在一般應(yīng)用程序源代碼中,頭文件與開(kāi)發(fā)環(huán)境中的庫(kù)文件有著不可分割的緊密聯(lián)系,庫(kù)中的每個(gè)函數(shù)都需要在頭文件中加以聲明。應(yīng)用程序開(kāi)發(fā)環(huán)境中的頭文件(通常放置在系統(tǒng)/usr/include/目錄中)可以看作是其所提供函數(shù)庫(kù)(例如libc.a)中函數(shù)的一個(gè)組成部分,是庫(kù)函數(shù)的使用說(shuō)明或接口聲明。在編譯器把源代碼程序轉(zhuǎn)換成目標(biāo)模塊后,鏈接程序(linker)會(huì)把程序所有的目標(biāo)模塊組合在一起,包括用到的任何庫(kù)文件中的模塊。從而構(gòu)成一個(gè)可執(zhí)行的程序。

對(duì)于標(biāo)準(zhǔn)C函數(shù)庫(kù)來(lái)講,其最基本的頭文件有15個(gè)。每個(gè)頭文件都表示出一類(lèi)特定函數(shù)的功能說(shuō)明或結(jié)構(gòu)定義,例如I/O操作函數(shù)、字符處理函數(shù)等。有關(guān)標(biāo)準(zhǔn)函數(shù)庫(kù)的詳細(xì)說(shuō)明及其實(shí)現(xiàn)可參照Plauger編著的《The Standard C Library》一書(shū)。

而對(duì)于本書(shū)所描述的內(nèi)核源代碼,其中涉及的頭文件則可以看作是對(duì)內(nèi)核及其函數(shù)庫(kù)所提供服務(wù)的一個(gè)概要說(shuō)明,是內(nèi)核及其相關(guān)程序?qū)S玫念^文件。在這些頭文件中主要描述了內(nèi)核所用到的所有數(shù)據(jù)結(jié)構(gòu)、初始化數(shù)據(jù)、常數(shù)和宏定義,也包括少量的程序代碼。除了幾個(gè)專(zhuān)用的頭文件以外(例如塊設(shè)備頭文件blk.h),Linux 0.12內(nèi)核中所用到的頭文件都放在內(nèi)核代碼樹(shù)的include/目錄中。因此編譯Linux 0.12內(nèi)核無(wú)需使用開(kāi)發(fā)環(huán)境提供的位于/usr/include/目錄下的任何頭文件。當(dāng)然,tools/build.c程序除外。因?yàn)檫@個(gè)程序雖然被包含在內(nèi)核源代碼樹(shù)中,但它只是一個(gè)用于組合創(chuàng)建內(nèi)核映像文件的工具程序或應(yīng)用程序,不會(huì)被鏈接到內(nèi)核代碼中。

從0.95版開(kāi)始,內(nèi)核代碼樹(shù)中的頭文件需要復(fù)制到/usr/include/linux目錄下才能順利地編譯內(nèi)核。即從該版內(nèi)核開(kāi)始頭文件已經(jīng)與開(kāi)發(fā)環(huán)境使用的頭文件合二為一。

14.1 include/目錄下的文件

內(nèi)核所用到的頭文件都保存在include/目錄下。該目錄下的文件如表11-1所示。這里需要說(shuō)明一點(diǎn):為了方便使用和兼容性,Linus在編制內(nèi)核程序頭文件時(shí)所使用的命名方式與標(biāo)準(zhǔn)C庫(kù)頭文件的命名方式相似,許多頭文件的名稱(chēng)甚至其中的一些內(nèi)容都與標(biāo)準(zhǔn)C庫(kù)的頭文件基本相同,但這些內(nèi)核頭文件仍然是內(nèi)核源代碼或與內(nèi)核有緊密聯(lián)系的程序?qū)S玫摹T谝粋€(gè)Linux系統(tǒng)中,它們與標(biāo)準(zhǔn)庫(kù)的頭文件并存。通常的做法是將這些頭文件放置在標(biāo)準(zhǔn)庫(kù)頭文件目錄中的子目錄下,以讓需要用到內(nèi)核數(shù)據(jù)結(jié)構(gòu)或常數(shù)的程序使用。

另外,也由于版權(quán)問(wèn)題,Linus試圖重新編制一些頭文件以取代具有版權(quán)限制的標(biāo)準(zhǔn)C庫(kù)的頭文件。因此這些內(nèi)核源代碼中的頭文件與開(kāi)發(fā)環(huán)境中的頭文件有一些重疊的地方。在Linux系統(tǒng)中,列表14-1中的asm/、linux/和sys/三個(gè)子目錄下的內(nèi)核頭文件通常需要復(fù)制到標(biāo)準(zhǔn)C庫(kù)頭文件所在的目錄(/usr/include)中,而其他一些文件若與標(biāo)準(zhǔn)庫(kù)的頭文件沒(méi)有沖突則可以直接放到標(biāo)準(zhǔn)庫(kù)頭文件目錄下,或者改放到這里的三個(gè)子目錄中。

asm/目錄下主要用于存放與計(jì)算機(jī)體系結(jié)構(gòu)密切相關(guān)的函數(shù)聲明或數(shù)據(jù)結(jié)構(gòu)的頭文件。例如Intel CPU 端口IO匯編宏文件io.h、中斷描述符設(shè)置匯編宏頭文件system.h等。linux/目錄下是Linux內(nèi)核程序使用的一些頭文件。其中包括調(diào)度程序使用的頭文件sched.h、內(nèi)存管理頭文件mm.h和終端管理數(shù)據(jù)結(jié)構(gòu)文件tty.h等。而sys/目錄下存放著幾個(gè)與內(nèi)核資源相關(guān)頭文件。不過(guò)從0.98版開(kāi)始,內(nèi)核目錄樹(shù)下sys/目錄中的頭文件被全部移到了linux/目錄下。

Linux 0.12版內(nèi)核中共有32個(gè)頭文件(*.h),其中asm/子目錄中含有4個(gè),linux/子目錄中含有10個(gè),sys/子目錄中含有5個(gè)。從下一節(jié)開(kāi)始我們首先描述include/目錄下的13個(gè)頭文件,然后依次說(shuō)明每個(gè)子目錄中的文件。說(shuō)明順序按照文件名稱(chēng)排序進(jìn)行。

  

Linux內(nèi)核完全剖析---頭文件


#p#14.2 a.out.h文件

14.2.1 功能描述

在Linux 內(nèi)核中,a.out.h文件用于定義被加載的可執(zhí)行文件結(jié)構(gòu)。主要用于加載程序fs/exec.c中。該文件不屬于標(biāo)準(zhǔn)C庫(kù),它是內(nèi)核專(zhuān)用的頭文件。但由于與標(biāo)準(zhǔn)庫(kù)的頭文件名沒(méi)有沖突,因此在Linux系統(tǒng)中一般可以放/usr/include/目錄下,以供涉及相關(guān)內(nèi)容的程序使用。該頭文件中定義了目標(biāo)文件的一種a.out(Assembly out)格式。Linux 0.12系統(tǒng)中使用的.o文件和可執(zhí)行文件就采用了這種目標(biāo)文件格式。

a.out.h文件包括三個(gè)數(shù)據(jù)結(jié)構(gòu)定義和一些相關(guān)的宏定義,因此文件可被相應(yīng)地分成三個(gè)部分:

◆第1~108行給出并描述了目標(biāo)文件執(zhí)行頭結(jié)構(gòu)和相關(guān)的宏定義。

◆第109~185行對(duì)符號(hào)表項(xiàng)結(jié)構(gòu)的定義和說(shuō)明。

◆第186~217行對(duì)重定位表項(xiàng)結(jié)構(gòu)進(jìn)行定義和說(shuō)明。

由于該文件內(nèi)容比較多,因此對(duì)其中三個(gè)數(shù)據(jù)結(jié)構(gòu)以及相關(guān)宏定義的詳細(xì)說(shuō)明放在程序列表后。

從0.96版內(nèi)核開(kāi)始,Linux系統(tǒng)直接采用了GNU的同名頭文件a.out.h。因此造成在Linux 0.9x下編譯的程序不能在Linux 0.1x系統(tǒng)上運(yùn)行。下面對(duì)兩個(gè)a.out頭文件的不同之處進(jìn)行分析,并說(shuō)明如何讓0.9x下編譯的一些不是用動(dòng)態(tài)鏈接庫(kù)的執(zhí)行文件也能在0.1x下運(yùn)行。

Linux 0.12使用的a.out.h文件與GNU同名文件的主要區(qū)別在于exec結(jié)構(gòu)的第一個(gè)字段a_magic。GNU的該文件字段名稱(chēng)是a_info,并且把該字段又分成3個(gè)子域:標(biāo)志域(Flags)、機(jī)器類(lèi)型域(Machine Type)和魔數(shù)域(Magic Number)。同時(shí)為機(jī)器類(lèi)型域定義了相應(yīng)的宏N_MACHTYPE和N_FLAGS,如圖14-1所示。

Linux內(nèi)核完全剖析---頭文件

在Linux 0.9x系統(tǒng)中,對(duì)于采用靜態(tài)庫(kù)連接的執(zhí)行文件,圖中各域注釋中括號(hào)內(nèi)的值是該字段的默認(rèn)值。這種二進(jìn)制執(zhí)行文件開(kāi)始處的4個(gè)字節(jié)是:

0x0b, 0x01, 0x64, 0x00

而這里的頭文件僅定義了魔數(shù)域。因此,在Linux 0.1x系統(tǒng)中一個(gè)a.out格式的二進(jìn)制執(zhí)行文件開(kāi)始的4個(gè)字節(jié)是:

0x0b, 0x01, 0x00, 0x00

可以看出,采用GNU的a.out格式的執(zhí)行文件與Linux 0.1x系統(tǒng)上編譯出的執(zhí)行文件的區(qū)別僅在機(jī)器類(lèi)型域。因此我們可以把Linux 0.9x上的a.out格式執(zhí)行文件的機(jī)器類(lèi)型域(第3個(gè)字節(jié))清零,讓其運(yùn)行在0.1x系統(tǒng)中。只要被移植的執(zhí)行文件所調(diào)用的系統(tǒng)調(diào)用都已經(jīng)在0.1x系統(tǒng)中實(shí)現(xiàn)即可。在開(kāi)始重新組建Linux 0.1x根文件系統(tǒng)中的很多命令時(shí),作者就采用了這種方法。

在其他方面,GNU的a.out.h頭文件與這里的a.out.h沒(méi)有什么區(qū)別。

#p#14.2.2 代碼注釋?zhuān)ǜ郊螺d,pdf格式)程序14.pdf

14.2.3 a.out執(zhí)行文件格式

Linux內(nèi)核0.12版僅支持a.out(Assembly out)執(zhí)行文件和目標(biāo)文件的格式,雖然這種格式目前已經(jīng)漸漸不用,而使用功能更為齊全的ELF(Executable and Link Format)格式,但是由于其簡(jiǎn)單性,作為入門(mén)的學(xué)習(xí)材料比較適用。下面全面介紹一下a.out格式。

在頭文件a.out.h中聲明了三個(gè)數(shù)據(jù)結(jié)構(gòu)以及一些宏。這些數(shù)據(jù)結(jié)構(gòu)描述了系統(tǒng)上目標(biāo)文件的結(jié)構(gòu)。在Linux 0.12系統(tǒng)中,編譯產(chǎn)生的目標(biāo)模塊文件(簡(jiǎn)稱(chēng)模塊文件)和鏈接生成的二進(jìn)制可執(zhí)行文件均采用a.out格式。這里統(tǒng)稱(chēng)為目標(biāo)文件。一個(gè)目標(biāo)文件由7部分(7節(jié))組成。它們依次為:

(1)執(zhí)行頭部分(exec header)。該部分中含有一些參數(shù)(exec結(jié)構(gòu)),內(nèi)核使用這些參數(shù)把執(zhí)行文件加載到內(nèi)存中并執(zhí)行,而鏈接程序(ld)使用這些參數(shù)將一些模塊文件組合成一個(gè)可執(zhí)行文件。這是目標(biāo)文件唯一必要的組成部分。

(2)代碼段部分(text segment)。含有程序執(zhí)行時(shí)被加載到內(nèi)存中的指令代碼和相關(guān)數(shù)據(jù)。可以以只讀形式被加載。

(3)數(shù)據(jù)段部分(data segment)。這部分含有已經(jīng)初始化過(guò)的數(shù)據(jù),總是被加載到可讀寫(xiě)的內(nèi)存中。

(4)代碼重定位部分(text relocations)。這部分含有供鏈接程序使用的記錄數(shù)據(jù)。在組合目標(biāo)模塊文件時(shí)用于定位代碼段中的指針或地址。

(5)數(shù)據(jù)重定位部分(data relocations)。類(lèi)似于代碼重定位部分的作用,但是用于數(shù)據(jù)段中指針的重定位。

(6)符號(hào)表部分(symbol table)。這部分同樣含有供鏈接程序使用的記錄數(shù)據(jù),用于在二進(jìn)制目標(biāo)模塊文件之間對(duì)命名的變量和函數(shù)(符號(hào))進(jìn)行交叉引用。

(7)字符串表部分(string table)。該部分含有與符號(hào)名對(duì)應(yīng)的字符串。

每個(gè)目標(biāo)文件均以一個(gè)執(zhí)行數(shù)據(jù)結(jié)構(gòu)(exec structure)開(kāi)始。該數(shù)據(jù)結(jié)構(gòu)的形式如下:

Linux內(nèi)核完全剖析---頭文件

各個(gè)字段的功能如下:

1)a_magic——該字段含有三個(gè)子字段,分別是標(biāo)志字段、機(jī)器類(lèi)型標(biāo)識(shí)字段和魔數(shù)字段,參見(jiàn)圖11-1。不過(guò)對(duì)于Linux 0.12系統(tǒng)其目標(biāo)文件只使用了其中的魔數(shù)子字段,并使用宏N_MAGIC()來(lái)訪(fǎng)問(wèn),它唯一地確定了二進(jìn)制執(zhí)行文件與其他加載的文件之間的區(qū)別。該子字段中必須包含以下值之一:

◆OMAGIC。表示代碼和數(shù)據(jù)段緊隨在執(zhí)行頭后面并且是連續(xù)存放的。內(nèi)核將代碼和數(shù)據(jù)段都加載到可讀寫(xiě)內(nèi)存中。編譯器編譯出的目標(biāo)文件的魔數(shù)是OMAGIC(八進(jìn)制0407)。

◆NMAGIC。同OMAGIC一樣,代碼和數(shù)據(jù)段緊隨在執(zhí)行頭后面并且是連續(xù)存放的。然而內(nèi)核將代碼加載到了只讀內(nèi)存中,并把數(shù)據(jù)段加載到代碼段后下一頁(yè)可讀寫(xiě)內(nèi)存邊界開(kāi)始。

◆ZMAGIC。內(nèi)核在必要時(shí)從二進(jìn)制執(zhí)行文件中加載獨(dú)立的頁(yè)面。執(zhí)行頭部、代碼段和數(shù)據(jù)段都被鏈接程序處理成多個(gè)頁(yè)面大小的塊。內(nèi)核加載的代碼頁(yè)面是只讀的,而數(shù)據(jù)段的頁(yè)面是可寫(xiě)的。鏈接生成的可執(zhí)行文件的魔數(shù)即是ZMAGIC(0413,即0x10b)。

2)a_text——該字段含有代碼段的長(zhǎng)度值,字節(jié)數(shù)。

3)a_data——該字段含有數(shù)據(jù)段的長(zhǎng)度值,字節(jié)數(shù)。

4)a_bss——含有bss段的長(zhǎng)度,內(nèi)核用其設(shè)置在數(shù)據(jù)段后初始的break(brk)。內(nèi)核在加載程序時(shí),這段可寫(xiě)內(nèi)存顯現(xiàn)出處于數(shù)據(jù)段后面,并且初始時(shí)為全零。

5)a_syms——含有符號(hào)表部分的字節(jié)長(zhǎng)度值。

6)a_entry——含有內(nèi)核將執(zhí)行文件加載到內(nèi)存中以后,程序執(zhí)行起始點(diǎn)的內(nèi)存地址。

7)a_trsize——該字段含有代碼重定位表的大小,是字節(jié)數(shù)。

8)a_drsize——該字段含有數(shù)據(jù)重定位表的大小,是字節(jié)數(shù)。

#p#在a.out.h頭文件中定義了幾個(gè)宏,這些宏使用exec結(jié)構(gòu)來(lái)測(cè)試一致性或者定位執(zhí)行文件中各個(gè)部分(節(jié))的位置偏移值。這些宏有:

  ◆N_BADMAG(exec)。如果a_magic字段不能被識(shí)別,則返回非零值。

  ◆N_TXTOFF(exec)。代碼段的起始位置字節(jié)偏移值。

  ◆N_DATOFF(exec)。數(shù)據(jù)段的起始位置字節(jié)偏移值。

  ◆N_DRELOFF(exec)。數(shù)據(jù)重定位表的起始位置字節(jié)偏移值。

  ◆N_TRELOFF(exec)。代碼重定位表的起始位置字節(jié)偏移值。

  ◆N_SYMOFF(exec)。符號(hào)表的起始位置字節(jié)偏移值。

  ◆N_STROFF(exec)。字符串表的起始位置字節(jié)偏移值。

重定位記錄具有標(biāo)準(zhǔn)的格式,它使用重定位信息(relocation_info)結(jié)構(gòu)來(lái)描述,如下所示:

  

Linux內(nèi)核完全剖析---頭文件

該結(jié)構(gòu)中各字段的含義如下:

1)r_address——該字段含有需要鏈接程序處理(編輯)的指針的字節(jié)偏移值。代碼重定位的偏移值是從代碼段開(kāi)始處計(jì)數(shù)的,數(shù)據(jù)重定位的偏移值是從數(shù)據(jù)段開(kāi)始處計(jì)算的。鏈接程序會(huì)將已經(jīng)存儲(chǔ)在該偏移處的值與使用重定位記錄計(jì)算出的新值相加。

2)r_symbolnum——該字段含有符號(hào)表中一個(gè)符號(hào)結(jié)構(gòu)的序號(hào)值(不是字節(jié)偏移值)。鏈接程序在算出符號(hào)的絕對(duì)地址以后,就將該地址加到正在進(jìn)行重定位的指針上。(如果r_extern比特位是0,那么情況就不同,見(jiàn)下面。)

3)r_pcrel——如果設(shè)置了該位,鏈接程序就認(rèn)為正在更新一個(gè)指針,該指針使用pc相關(guān)尋址方式,是屬于機(jī)器碼指令部分。當(dāng)運(yùn)行程序使用這個(gè)被重定位的指針時(shí),該指針的地址被隱式地加到該指針上。

4)r_length——該字段含有指針長(zhǎng)度的2的次方值:0表示1字節(jié)長(zhǎng),1表示2字節(jié)長(zhǎng),2表示4字節(jié)長(zhǎng)。

5)r_extern——如果被置位,表示該重定位需要一個(gè)外部引用;此時(shí)鏈接程序必須使用一個(gè)符號(hào)地址來(lái)更新相應(yīng)指針。當(dāng)該位是0時(shí),則重定位是“局部”的。鏈接程序更新指針以反映各個(gè)段加載地址中的變化,而不是反映一個(gè)符號(hào)值的變化。在這種情況下,r_symbolnum字段的內(nèi)容是一個(gè)n_type值;這類(lèi)字段告訴鏈接程序被重定位的指針指向那個(gè)段。

6)r_pad——Linux系統(tǒng)中沒(méi)有使用的4個(gè)比特位。在寫(xiě)一個(gè)目標(biāo)文件時(shí)最好全置0。

符號(hào)將名稱(chēng)映射為地址(或者更通俗地講是字符串映射到值)。由于鏈接程序?qū)Φ刂返恼{(diào)整,一個(gè)符號(hào)的名稱(chēng)必須用來(lái)表示其地址,直到已被賦予一個(gè)絕對(duì)地址值。符號(hào)是由符號(hào)表中固定長(zhǎng)度的記錄以及字符串表中的可變長(zhǎng)度名稱(chēng)組成。符號(hào)表是nlist結(jié)構(gòu)的一個(gè)數(shù)組,如下所示:

  

Linux內(nèi)核完全剖析---頭文件


其中各字段的含義為:

1)n_un.n_strx——含有本符號(hào)的名稱(chēng)在字符串表中的字節(jié)偏移值。當(dāng)程序使用nlist()函數(shù)訪(fǎng)問(wèn)一個(gè)符號(hào)表時(shí),該字段被替換為n_un.n_name字段,這是內(nèi)存中字符串的指針。

2)n_type——用于鏈接程序確定如何更新符號(hào)的值。使用第146~154行開(kāi)始的位屏蔽(bitmasks)碼可以將8比特寬度的n_type字段分割成三個(gè)子字段,如圖14-2所示。對(duì)于N_EXT類(lèi)型位置位的符號(hào),鏈接程序?qū)⑺鼈兛醋魇恰巴獠康摹狈?hào),并且允許其他二進(jìn)制目標(biāo)文件對(duì)它們的引用。N_TYPE屏蔽碼用于鏈接程序感興趣的比特位:

 

◆N_UNDF。一個(gè)未定義的符號(hào)。鏈接程序必須在其他二進(jìn)制目標(biāo)文件中定位一個(gè)具有相同名稱(chēng)的外部符號(hào),以確定該符號(hào)的絕對(duì)數(shù)據(jù)值。特殊情況下,如果n_type字段是非零值,并且沒(méi)有二進(jìn)制文件定義了這個(gè)符號(hào),則鏈接程序在BSS段中將該符號(hào)解析為一個(gè)地址,保留長(zhǎng)度等于n_value的字節(jié)。如果符號(hào)在多于一個(gè)二進(jìn)制目標(biāo)文件中都沒(méi)有定義并且這些二進(jìn)制目標(biāo)文件對(duì)其長(zhǎng)度值不一致,則鏈接程序?qū)⑦x擇所有二進(jìn)制目標(biāo)文件中最大的長(zhǎng)度。

◆N_ABS。一個(gè)絕對(duì)符號(hào)。鏈接程序不會(huì)更新一個(gè)絕對(duì)符號(hào)。

◆N_TEXT。一個(gè)代碼符號(hào)。該符號(hào)的值是代碼地址,鏈接程序在合并二進(jìn)制目標(biāo)文件時(shí)會(huì)更新其值。

◆N_DATA。一個(gè)數(shù)據(jù)符號(hào)。與N_TEXT類(lèi)似,但是用于數(shù)據(jù)地址。對(duì)應(yīng)代碼和數(shù)據(jù)符號(hào)的值不是文件的偏移值而是地址;為了找出文件的偏移,就有必要確定相關(guān)部分開(kāi)始加載的地址并減去它,然后加上該部分的偏移。

◆N_BSS。一個(gè)BSS符號(hào)。與代碼或數(shù)據(jù)符號(hào)類(lèi)似,但在二進(jìn)制目標(biāo)文件中沒(méi)有對(duì)應(yīng)的偏移。

◆N_FN。一個(gè)文件名符號(hào)。在合并二進(jìn)制目標(biāo)文件時(shí),鏈接程序會(huì)將該符號(hào)插入在二進(jìn)制文件中的符號(hào)之前。符號(hào)的名稱(chēng)就是給予鏈接程序的文件名,而其值是二進(jìn)制文件中首個(gè)代碼段地址。鏈接和加載時(shí)不需要文件名符號(hào),但對(duì)于調(diào)式程序非常有用。

◆N_STAB。屏蔽碼用于選擇符號(hào)調(diào)式程序(例如gdb)感興趣的位。其值在stab()中說(shuō)明。

3)n_other——該字段按照n_type確定的段,提供有關(guān)符號(hào)重定位操作的符號(hào)獨(dú)立性信息。目前,n_other字段的最低4位含有兩個(gè)值之一:AUX_FUNC和AUX_OBJECT(有關(guān)定義參見(jiàn))。AUX_FUNC將符號(hào)與可調(diào)用的函數(shù)相關(guān),AUX_OBJECT將符號(hào)與數(shù)據(jù)相關(guān),無(wú)論它們是位于代碼段還是數(shù)據(jù)段。該字段主要用于鏈接程序ld,用于動(dòng)態(tài)可執(zhí)行程序的創(chuàng)建。

4)n_desc——保留給調(diào)式程序使用;鏈接程序不對(duì)其進(jìn)行處理。不同的調(diào)試程序?qū)⒃撟侄斡米鞑煌挠猛尽?/P>

5)n_value——含有符號(hào)的值。對(duì)于代碼、數(shù)據(jù)和BSS符號(hào),這是一個(gè)地址;對(duì)于其他符號(hào)(例如調(diào)式程序符號(hào)),值可以是任意的。

字符串表由長(zhǎng)度為unsigned long后跟一null結(jié)尾的符號(hào)字符串組成。長(zhǎng)度代表整個(gè)表的字節(jié)大小,所以在32位的機(jī)器上其最小值(即第1個(gè)字符串的偏移)總是4。

14.3 const.h文件

14.3.1 功能描述

該文件定義了i節(jié)點(diǎn)中文件屬性和類(lèi)型i_mode字段所用到的一些標(biāo)志位常量符號(hào)。

14.3.2 代碼注釋

Linux內(nèi)核完全剖析---頭文件




【編輯推薦】

  1. Linux下查看用戶(hù)登陸后的操作記錄
  2. 專(zhuān)家指導(dǎo):Linux操作系統(tǒng)密碼恢復(fù)方法
  3. Linux系統(tǒng)下手動(dòng)分析病毒樣本技巧
責(zé)任編輯:趙寧寧 來(lái)源: IT專(zhuān)家網(wǎng)
相關(guān)推薦

2009-06-17 13:03:42

Linux內(nèi)核

2009-06-17 11:58:19

Linux

2010-01-07 13:44:54

Linux內(nèi)核代碼

2020-11-20 07:55:55

Linux內(nèi)核映射

2011-06-15 11:03:54

Linux內(nèi)核Xen

2025-10-09 11:10:00

開(kāi)發(fā)操作系統(tǒng)Linux

2025-04-02 00:33:00

2025-04-01 02:00:22

2011-09-09 10:31:40

Xen虛擬化linux內(nèi)核

2025-04-18 04:05:00

2022-08-03 11:00:20

Linux內(nèi)核

2020-04-01 10:28:12

Apache HBas數(shù)據(jù)結(jié)構(gòu)算法

2010-01-07 10:22:49

Linux內(nèi)核

2009-10-22 16:31:48

2009-10-28 13:44:40

linux庫(kù)文件路徑

2010-03-05 15:02:09

Linux文件編碼

2010-03-05 16:54:47

2021-02-20 06:08:07

LinuxWindows內(nèi)核

2009-12-31 14:34:02

ISDN終端

2017-08-01 17:34:47

Linux內(nèi)核驅(qū)動(dòng)文件讀寫(xiě)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲人成电影网站| 亚洲成av人片一区二区三区 | av中文字幕在线看| 99re在线视频这里只有精品| 日本欧美爱爱爱| 国产精品免费人成网站酒店| 大香伊人久久精品一区二区 | 欧美国产日韩一区二区三区| 一本色道综合久久欧美日韩精品| 日本欧美在线| 天天综合色天天| 艳母动漫在线免费观看| 午夜成人免费影院| 国内久久婷婷综合| 日本精品va在线观看| 午夜激情福利网| 九九热爱视频精品视频| 日韩一级免费一区| 五月天婷婷激情视频| 不卡av免费观看| 成人欧美一区二区三区| 欧美日韩综合久久| 蜜臀久久精品久久久久| 激情综合五月天| 国产成人激情视频| 九九热国产视频| 亚洲成人精选| 在线精品国产成人综合| 爱爱的免费视频| 一区视频网站| 7777精品伊人久久久大香线蕉 | 91偷拍与自偷拍精品| 91性高湖久久久久久久久_久久99| 日本熟女毛茸茸| 亚洲国产欧美国产综合一区| 久久成人精品一区二区三区| 波多野结衣家庭教师在线观看| 亚洲免费福利一区| 亚洲精品福利在线| 熟妇高潮一区二区| 粉嫩av一区二区| 日韩欧美亚洲另类制服综合在线 | 自拍偷拍亚洲| 欧美色图天堂网| 国产一级不卡毛片| 婷婷六月国产精品久久不卡| 欧美性猛xxx| 欧美 国产 综合| caoporn视频在线观看| 一区二区在线观看免费| www.-级毛片线天内射视视| √天堂资源地址在线官网| 日本一区二区综合亚洲| 日韩欧美亚洲精品| av黄色在线观看| 亚洲国产精品激情在线观看| 视频一区三区| 91福利在线视频| 国产精品成人免费| 国产欧美综合一区| 不卡的av影片| 懂色av中文一区二区三区天美| 美女日批免费视频| 欧美极度另类| 欧美三级在线看| 欧美午夜精品理论片| 蜜桃精品一区二区三区| 日韩欧美在线1卡| 中文字幕第3页| 日韩美脚连裤袜丝袜在线| 亚洲欧美日韩中文在线制服| 天天舔天天操天天干| 午夜影院欧美| 久久久久中文字幕| 91久久国产综合久久91| 理论片日本一区| 91九色露脸| 亚洲欧洲综合在线| 亚洲国产精品传媒在线观看| 三级网在线观看| 2020国产在线| 欧美在线综合视频| 国产精品偷伦视频免费观看了| 成人性生交大片免费看中文视频 | 91人人爽人人爽人人精88v| 国产三级伦理片| aa级大片欧美| 一区二区三区av在线| 丝袜美女在线观看| 色哟哟亚洲精品| 欧美又黄又嫩大片a级| 精品素人av| 中文字幕日韩免费视频| 欧美黄片一区二区三区| 久久久蜜桃一区二区人| 91久久精品美女高潮| 日韩一级在线播放| 综合欧美一区二区三区| 日韩激情免费视频| 欧美久久亚洲| 一区二区欧美激情| 久久一区二区三| 日本最新不卡在线| 国产伦精品一区二区三区视频免费| 免费播放片a高清在线观看| 亚洲欧美日韩电影| 美女网站免费观看视频| а√中文在线天堂精品| 中文字幕欧美日韩精品| www.av麻豆| 国产麻豆视频精品| 日韩成人在线资源| 蜜桃麻豆影像在线观看| 91精品国产入口| 蜜桃久久精品成人无码av| 国内精品福利| 91在线观看免费网站| 国产黄在线播放| 欧美午夜美女看片| 日韩少妇一区二区| 亚洲国产日韩欧美在线| 国产精品亚洲аv天堂网| 婷婷在线免费观看| 亚洲精品成人少妇| 91视频这里只有精品| 国产欧美久久一区二区三区| 亚州国产精品久久久| 国产人妖一区二区三区| 中文字幕精品三区| 激情网站五月天| 国产一区二区三区亚洲| 久久777国产线看观看精品| 在线免费a视频| 国产片一区二区三区| 免费国产a级片| www.久久东京| 久久久最新网址| 精品国产无码一区二区三区| 亚洲欧美另类小说视频| 一起草最新网址| 欧美在线国产| 亚洲综合社区网| 色呦呦在线观看视频| 欧美一区二区精品| www.av成人| 国产麻豆成人精品| 强开小嫩苞一区二区三区网站| 欧美特黄色片| 久久久精品999| 国产丝袜视频在线观看| 亚洲视频在线观看一区| 免费黄频在线观看| 欧美日韩18| 国产欧美日韩伦理| 亚洲天堂手机| 亚洲天堂av在线播放| 亚洲精品91天天久久人人| 久久久国产午夜精品| 欧美两根一起进3p做受视频| 精品一区av| 国产这里只有精品| 91cn在线观看| 亚洲精品一区二区三区在线观看| 日韩网红少妇无码视频香港| 91在线观看一区二区| 毛片av免费在线观看| 久久一级电影| 成人午夜电影免费在线观看| 国产粉嫩在线观看| 亚洲新声在线观看| aaa级黄色片| 黄色一区二区在线| 91麻豆精品国产91久久综合| 激情欧美一区二区| 给我免费播放片在线观看| 色先锋久久影院av| 国产日本欧美在线观看| 日本动漫理论片在线观看网站 | 成人资源av| 亚洲国产欧美日本视频| 色婷婷综合久久久久中文字幕1| 国产欧美久久久| 日韩人在线观看| 国产一二三四区| 91一区一区三区| 在线黄色免费看| 中文亚洲字幕| 亚洲精品视频一区二区三区| 欧美专区一区| 国产精品激情自拍| 国产啊啊啊视频在线观看| 亚洲人午夜精品| www.蜜臀av.com| 在线视频亚洲一区| 国产第100页| 国产精品青草久久| 免费的av网站| 狠狠色丁香久久婷婷综| 国产99久久九九精品无码| 国产精品久久久乱弄| 久久综合婷婷综合| 日本免费一区二区三区视频| 日韩美女免费观看| 日本h片在线观看| 日韩在线精品视频| 外国精品视频在线观看 | 国产成a人亚洲精v品无码| 色综合久久久久久久| 免费一级肉体全黄毛片| 国产日韩欧美a| 性囗交免费视频观看| 国产精品一二三四| 日本中文字幕精品—区二区| 亚洲专区在线| www.国产在线视频| 先锋资源久久| 亚洲精品在线免费| 久草成人资源| 久久艳妇乳肉豪妇荡乳av| 视频二区欧美| 成人精品视频在线| 欧美成人福利| 国产精品第100页| 深夜福利视频一区二区| 久久久人成影片一区二区三区| 日本在线看片免费人成视1000| 日韩精品极品视频| 手机看片1024日韩| 亚洲激情国产精品| 蜜桃av噜噜一区二区三区麻豆| 欧美一区二区观看视频| 亚洲专区在线播放| 欧美性大战久久久| 中文字幕乱码人妻无码久久| 色综合久久综合网97色综合| 全部毛片永久免费看| 亚洲国产成人高清精品| 久久久久久久久久久久久久久久久| 亚洲色欲色欲www| 精品无码久久久久成人漫画| 亚洲视频狠狠干| 免费网站观看www在线观| 亚洲日本va午夜在线影院| 亚洲二区在线播放| 亚洲视频每日更新| 欧美国产在线看| 亚洲国产另类精品专区| 久草国产在线视频| 亚洲国产aⅴ成人精品无吗| 国产精品99re| 色综合天天综合| 亚洲天堂视频在线播放| 欧美性欧美巨大黑白大战| 中文字幕在线观看1| 欧美日韩一二三| 99国产成人精品| 日韩欧美美女一区二区三区| 黄色美女一级片| 亚洲精品ady| 黄色小视频在线免费观看| 91丨porny丨在线中文 | 精品久久久网站| 黄色aaa大片| 亚洲欧美日韩一区在线| www.国产精品.com| 久久艹在线视频| av老司机在线观看| 欧美在线观看日本一区| 国产一区精品福利| 亚洲自拍中文字幕| 欧美一区二区三区红桃小说| 日本视频一区二区在线观看| 国产精品久久久久久久久久10秀| 国产日韩视频在线播放| 亚洲一级高清| 少妇性l交大片| 精品一区二区三区日韩| 国产一线在线观看| 国产日本亚洲高清| 国产精品白丝喷水在线观看| 午夜精品福利在线| 在线免费观看视频网站| 精品国产伦理网| 国产精品一区二区婷婷| 欧美黑人极品猛少妇色xxxxx| 涩涩涩在线视频| 成人黄色午夜影院| 日韩大胆成人| 国产奶头好大揉着好爽视频| 在线亚洲激情| 91网址在线观看精品| 91蜜桃传媒精品久久久一区二区| 成人信息集中地| 福利微拍一区二区| 国产精品视频a| 亚洲精品资源美女情侣酒店| 快射av在线播放一区| 日本国产一区二区三区| 91成人入口| 亚洲啪啪av| 亚洲在线免费| 制服.丝袜.亚洲.中文.综合懂| 国产欧美一区二区精品忘忧草| 国产亚洲第一页| 欧美放荡的少妇| 国产高清视频在线播放| 久久久免费在线观看| 色综合一区二区日本韩国亚洲| 久久久99国产精品免费| 欧美成人国产| 色婷婷.com| 亚洲国产成人一区二区三区| 日韩三级av在线| 欧美成人video| 超碰在线网址| 国产在线日韩在线| 精品国精品国产自在久国产应用| 老太脱裤子让老头玩xxxxx| 国产精品系列在线观看| 羞羞在线观看视频| 欧美亚洲动漫制服丝袜| 青青色在线视频| 91国自产精品中文字幕亚洲| 亚洲国产精品免费视频| 亚洲一区高清| 日韩在线卡一卡二| 国产交换配乱淫视频免费| 五月婷婷激情综合网| 亚洲黄色小说网| 不卡av日日日| 欧美a级大片在线| 亚洲天堂av免费在线观看| 免费精品视频在线| 久操视频在线观看免费 | 国产精品国产一区二区三区四区| 亚洲欧美一区二区三区久久| 九九精品调教| 国产精品免费一区二区三区在线观看 | 中文在线不卡视频| 影视一区二区三区| 日本免费高清一区二区| 日本 国产 欧美色综合| 青娱乐国产视频| 欧美无砖专区一中文字| 91sp网站在线观看入口| 国产欧美日韩丝袜精品一区| 欧美少妇性xxxx| 五月天婷婷影视| 亚洲品质自拍视频| 国产ts变态重口人妖hd| 欧美成年人在线观看| 91九色鹿精品国产综合久久香蕉| 成年人深夜视频| 成人a免费在线看| 亚洲熟女综合色一区二区三区| 亚洲欧洲第一视频| 狠狠久久综合| 国产免费一区二区三区四在线播放| 国产一区二区三区日韩| 精品视频久久久久| 日韩成人在线播放| 色猫猫成人app| 久久视频免费在线| 高清不卡在线观看av| 在线观看中文字幕视频| 亚洲欧美在线免费观看| 欧美成人免费全部网站| 国产 国语对白 露脸| www.日韩av| 精品一区二三区| 久久精品这里热有精品| 国产精品99久久免费观看| 人妻熟女一二三区夜夜爱| 日本一区二区三区高清不卡| 国产绳艺sm调教室论坛| 97视频在线观看免费| 国产精品中文字幕亚洲欧美| 91免费视频污| 富二代精品短视频| 精品孕妇一区二区三区| 国产日韩亚洲精品| 日本免费新一区视频| 久久久精品视频在线| 亚洲精选一区二区| 国产精一区二区| 精品国产免费av| 亚洲欧洲精品一区二区三区 | 凹凸国产熟女精品视频| 国产精品每日更新在线播放网址 | 伊人亚洲精品| 欧美巨大另类极品videosbest| 日本少妇高清视频| 日韩毛片在线看| 精品国产不卡一区二区| 男人亚洲天堂网| 亚洲乱码国产乱码精品精可以看| 日本不卡视频一区二区| 69174成人网| 奇米精品一区二区三区在线观看一 | 天堂社区在线视频|