欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

熱補丁方法和裝置的制造方法

文檔序號:9865282閱讀:669來源:國知局
熱補丁方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及嵌入式操作系統(tǒng)領(lǐng)域,尤其涉及一種熱補丁方法和裝置。
【背景技術(shù)】
[0002]對于采用嵌入式Linux操作系統(tǒng)的設(shè)備來說,需要高可靠性和穩(wěn)定性,但是在其上運行的軟件程序不可避免存在各種錯誤,為了解決軟件程序中的錯誤,一種方式是進行系統(tǒng)軟件升級,但是會導(dǎo)致設(shè)備重啟影響當(dāng)前業(yè)務(wù),另一種方式是采用熱補丁,其優(yōu)點是不必重啟設(shè)備不會影響當(dāng)前業(yè)務(wù)。但是傳統(tǒng)的熱補丁方法存在以下問題:
[0003]傳統(tǒng)的熱補丁方法,熱補丁文件為沒有經(jīng)過編譯鏈接的靜態(tài)目標(biāo)文件,在使用時還需要對其中的外部符號進行重定位,而整個重定位過程非常復(fù)雜。
[0004]傳統(tǒng)的熱補丁方法,需要預(yù)留一定內(nèi)存空間用作補丁內(nèi)存區(qū),如果補丁加載后占用內(nèi)存空間大于補丁內(nèi)存區(qū)則會由于內(nèi)存不夠而不能加載,因此分配內(nèi)存空間缺少靈活性。
[0005]對于多核多CPU(英文名稱:central processing unit,中文名稱:中央處理器)的應(yīng)用,特別是分布式系統(tǒng)中,運行著多個應(yīng)用程序,這些應(yīng)用程序相同但運行在不同CPU上或者不同但有相同的缺陷函數(shù),由于重定位后不同的應(yīng)用程序里的符號地址不同,所以傳輸?shù)臒嵫a丁方法需要對每個應(yīng)用程序都做一個補丁文件,因此無法實現(xiàn)一個補丁文件對應(yīng)多個應(yīng)用程序。

【發(fā)明內(nèi)容】

[0006]本發(fā)明的實施例提供一種熱補丁方法和裝置,用于解決傳統(tǒng)熱補丁方法需要重定位、分配內(nèi)存不靈活和無法實現(xiàn)一個補丁文件對應(yīng)多個應(yīng)用程序的問題。
[0007]為達(dá)到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0008]—方面,提供了一種熱補丁方法,包括:
[0009]在對被補丁程序進行編譯時增加動態(tài)鏈接編譯選項,使被補丁函數(shù)的外部符號添加到動態(tài)符號表,以使編譯后的所述外部符號能夠被動態(tài)鏈接庫重定位,其中所述被補丁程序包含所述被補丁函數(shù)和所述外部符號;
[0010]通過動態(tài)鏈接庫方式編譯補丁函數(shù),以使編譯后的補丁函數(shù)能夠重定位所述外部符號,其中,所述補丁函數(shù)為對所述被補丁函數(shù)進行修補的函數(shù);
[0011 ]加載所述補丁函數(shù)并且重定位所述外部符號;
[0012]激活所述補丁函數(shù)并且去激活所述被補丁函數(shù)。
[0013]結(jié)合第一方面,在第一種可能的實施方式中,所述通過動態(tài)鏈接庫方式編譯補丁函數(shù),包括:
[0014]配置補丁函數(shù)替換表,結(jié)合所述補丁函數(shù)生成補丁目標(biāo)源文件,其中,所述補丁函數(shù)替換表包含所述補丁函數(shù)與所述被補丁函數(shù)的對應(yīng)關(guān)系;
[0015]對所述補丁目標(biāo)源文件進行編譯以生成動態(tài)鏈接庫格式的補丁文件。
[0016]結(jié)合第一方面的第一種可能的實施方式,在第二種可能的實施方式中,所述激活所述補丁函數(shù)并且去激活所述被補丁函數(shù),包括:
[0017]根據(jù)所述補丁函數(shù)替換表獲取所述被補丁函數(shù)和所述補丁函數(shù)的地址;
[0018]根據(jù)所述被補丁函數(shù)的地址將所述被補丁函數(shù)入口處的指令替換為跳轉(zhuǎn)指令,其中,所述跳轉(zhuǎn)指令指示跳轉(zhuǎn)至所述補丁函數(shù)的地址;
[0019]根據(jù)所述跳轉(zhuǎn)指令跳轉(zhuǎn)至所述補丁函數(shù),不執(zhí)行所述被補丁函數(shù)而執(zhí)行所述補丁函數(shù)。
[0020]結(jié)合第一方面,在第三種可能的實施方式中,所述激活所述補丁函數(shù),包括:
[0021]臨時激活所述補丁函數(shù),使所述補丁函數(shù)臨時生效,以使系統(tǒng)重啟后所述補丁函數(shù)不生效。
[0022]結(jié)合第一方面,在第四種可能的實施方式中,所述激活所述補丁函數(shù),包括:
[0023]永久激活所述補丁函數(shù),使所述補丁函數(shù)正式生效,以使系統(tǒng)重啟后所述補丁函數(shù)仍然生效。
[0024]第二方面,提供了一種熱補丁裝置,包括:
[0025]編譯單元,用于在對被補丁程序進行編譯時增加動態(tài)鏈接編譯選項,使被補丁函數(shù)的外部符號添加到動態(tài)符號表,以使編譯后的所述外部符號能夠被動態(tài)鏈接庫重定位,其中所述被補丁程序包含所述被補丁函數(shù)和所述外部符號;
[0026]制作單元,用于通過動態(tài)鏈接庫方式編譯補丁函數(shù),以使編譯后的補丁函數(shù)能夠重定位所述外部符號,其中,所述補丁函數(shù)為對所述被補丁函數(shù)進行修補的函數(shù);
[0027]加載單元,用于加載所述補丁函數(shù)并且重定位所述外部符號;
[0028]所述加載單元,還用于激活所述補丁函數(shù)并且去激活所述被補丁函數(shù)。
[0029]結(jié)合第二方面,在第一種可能的實施方式中,
[0030]所述制作單元,具體用于配置補丁函數(shù)替換表,結(jié)合所述補丁函數(shù)生成補丁目標(biāo)源文件,其中,所述補丁函數(shù)替換表包含所述補丁函數(shù)與所述被補丁函數(shù)的對應(yīng)關(guān)系;對所述補丁目標(biāo)源文件進行編譯以生成動態(tài)鏈接庫格式的補丁文件。
[0031 ]結(jié)合第二方面的第一種可能的實施方式,在第二種可能的實施方式中,
[0032]所述加載單元,具體用于根據(jù)所述補丁函數(shù)替換表獲取所述被補丁函數(shù)和所述補丁函數(shù)的地址;根據(jù)所述被補丁函數(shù)的地址將所述被補丁函數(shù)入口處的指令替換為跳轉(zhuǎn)指令,其中,所述跳轉(zhuǎn)指令指示跳轉(zhuǎn)至所述補丁函數(shù)的地址;根據(jù)所述跳轉(zhuǎn)指令跳轉(zhuǎn)至所述補丁函數(shù),不執(zhí)行所述被補丁函數(shù)而執(zhí)行所述補丁函數(shù)。
[0033]結(jié)合第二方面,在第三種可能的實施方式中,
[0034]所述加載單元,具體用于臨時激活所述補丁函數(shù),使所述補丁函數(shù)臨時生效,以使系統(tǒng)重啟后所述補丁函數(shù)不生效。
[0035]結(jié)合第二方面,在第四種可能的實施方式中,
[0036]所述加載單元,具體用于永久激活所述補丁函數(shù),使所述補丁函數(shù)正式生效,以使系統(tǒng)重啟后所述補丁函數(shù)仍然生效。
[0037]本發(fā)明的實施例提供的熱補丁方法和裝置,在對被補丁程序進行編譯時增加動態(tài)鏈接編譯選項,使被補丁函數(shù)的外部符號添加到動態(tài)符號表,以使編譯后的外部符號能夠被動態(tài)鏈接庫重定位,其中被補丁程序包含被補丁函數(shù)和外部符號;通過動態(tài)鏈接庫方式編譯補丁函數(shù),以使編譯后的補丁函數(shù)能夠重定位外部符號,其中,補丁函數(shù)為對被補丁函數(shù)進行修補的函數(shù);加載補丁函數(shù)并且重定位外部符號;激活補丁函數(shù)并且去激活被補丁函數(shù)。本發(fā)明的實施例通過將被補丁程序中的被補丁函數(shù)的外部符號添加到動態(tài)符號表并且將補丁函數(shù)編譯為動態(tài)鏈接庫,利用操作系統(tǒng)中的動態(tài)鏈接庫加載函數(shù)自動對補丁函數(shù)所涉及的外部符號進行重定位,利用操作系統(tǒng)對動態(tài)鏈接庫的加載、刪除自動分配內(nèi)存的特性來靈活分配內(nèi)存,同時利用動態(tài)鏈接庫中一份動態(tài)鏈接庫代碼可以被多處使用的優(yōu)勢來使一個補丁文件對應(yīng)多個應(yīng)用程序,解決了傳統(tǒng)熱補丁方法需要重定位、分配內(nèi)存不靈活和無法實現(xiàn)一個補丁文件對應(yīng)多個應(yīng)用程序的問題。
【附圖說明】
[0038]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0039]圖1為本發(fā)明的實施例提供的一種熱補丁方法的流程示意圖;
[0040]圖2為本發(fā)明的實施例提供的另一種熱補丁方法的流程示意圖;
[0041]圖3為本發(fā)明的實施例提供的熱補丁激活過程的流程示意圖;
[0042]圖4為本發(fā)明的實施例提供的激活補丁函數(shù)去激活被補丁函數(shù)過程的示意圖;
[0043]圖5為本發(fā)明的實施例提供的一種熱補丁裝置的結(jié)構(gòu)示意圖;
[0044]圖6為本發(fā)明的實施例提供的制作單元的結(jié)構(gòu)示意圖;
[0045]圖7為本發(fā)明的實施例提供的加載單元的結(jié)構(gòu)示意圖。
【具體實施方式】
[0046]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0047]本發(fā)明的實施例提供的熱補丁方法,可以由熱補丁裝置執(zhí)行,熱補丁裝置包括制作單元以及加載單元兩部分,其中加載單元可以集成在嵌入式Linux系統(tǒng)的通信設(shè)備中,通信設(shè)備包括例如交換機、路由器等。本發(fā)明的實施例所應(yīng)用的通信設(shè)備包括一個或多個CPU、內(nèi)存以及運行的操作系統(tǒng),內(nèi)存中運行至少一個待打補丁的應(yīng)用程序。
[0048]本發(fā)明的實施例以LinuxX86(由Intel推出的一種復(fù)雜指令集)系統(tǒng)為例,但不限于
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
綦江县| 柘城县| 丹江口市| 洪泽县| 石城县| 兰州市| 监利县| 天全县| 拉萨市| 芒康县| 辽宁省| 塔河县| 手游| 长沙县| 唐山市| 宣化县| 都匀市| 鹿邑县| 工布江达县| 永靖县| 连云港市| 安丘市| 云霄县| 江城| 双城市| 兴海县| 高碑店市| 珲春市| 宿迁市| 崇州市| 常州市| 新闻| 临清市| 淮北市| 翁源县| 杭锦后旗| 永平县| 成都市| 榆树市| 乌兰浩特市| 临邑县|