[發明專利]熱補丁實現方法及通信設備有效
| 申請號: | 201710582244.9 | 申請日: | 2017-07-17 |
| 公開(公告)號: | CN107357622B | 公開(公告)日: | 2020-09-22 |
| 發明(設計)人: | 李斌 | 申請(專利權)人: | 邁普通信技術股份有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445;G06F9/30 |
| 代理公司: | 北京超凡志成知識產權代理事務所(普通合伙) 11371 | 代理人: | 蘇勝 |
| 地址: | 610000 四*** | 國省代碼: | 四川;51 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 補丁 實現 方法 通信 設備 | ||
本發明實施例提供一種熱補丁實現方法及通信設備。通信設備安裝有補丁文件以及被補丁程序,被補丁程序中包括有補丁跳轉中間函數以及被補丁函數,補丁文件中包括有補丁函數。其中,補丁跳轉中間函數中配置有長跳轉指令,被補丁函數的入口處配置有短跳轉指令。該方法包括:被補丁函數在接收到執行指令時,根據短跳轉指令跳轉至補丁跳轉中間函數的長跳轉指令處,并通過長跳轉指令跳轉至補丁函數,以執行補丁函數。本發明提供的技術方案簡單可靠,既不影響程序的執行效率,也不會大大增加編譯后程序的大小,為通信設備不中斷業務的升級提供一種更好的補丁在線升級選擇。
技術領域
本發明涉及嵌入式操作系統領域,具體而言,涉及一種熱補丁實現方法及通信設備。
背景技術
目前,為了提高熱補丁的可靠性,現有的技術一般在程序編譯時會在每個函數的函數頭或者函數尾都插入自定義長跳轉指令序列,在補丁激活時補丁函數跳轉到函數頭或函數尾的長跳轉指令處,再通過長跳轉指令再跳轉補丁函數。然而上述方式大大增加了編譯后程序的大小,同時還會影響程序的執行效率,而且預留的自定義指令序列要求的指令不同,預留空間的長短也不同,因而局限性較大。
此外就是利用指令異常處理機制,在補丁激活時將被補丁函數的函數入口第一條指令替換修改為原子操作長度的非法指令,而利用非法指令的異常處理機制來執行補丁函數,實現難度大,通用性差。
發明內容
為了克服現有技術中的上述不足,本發明的目的在于提供一種簡單可靠的熱補丁實現方法及通信設備,既不影響程序的執行效率,也不會大大增加編譯后程序的大小,為通信設備不中斷業務的升級提供一種更好的補丁在線升級選擇。
為了實現上述目的,本發明較佳實施例采用的技術方案如下:
本發明較佳實施例提供一種熱補丁實現方法,應用于通信設備。所述通信設備安裝有補丁文件以及被補丁程序,所述被補丁程序中包括有補丁跳轉中間函數以及被補丁函數,所述補丁文件中包括有補丁函數。其中,所述補丁跳轉中間函數中配置有長跳轉指令,所述被補丁函數的入口處配置有短跳轉指令。所述方法包括:
所述被補丁函數在接收到執行指令時,根據所述短跳轉指令跳轉至所述補丁跳轉中間函數的長跳轉指令處,并通過所述長跳轉指令跳轉至所述補丁函數,以執行所述補丁函數。其中,所述補丁函數為對所述被補丁函數進行修補的函數。
在本發明較佳實施例中,所述方法還包括:
在對所述被補丁程序進行編譯時將被補丁函數的外部符號添加到動態符號表中,以使編譯后的所述外部符號能夠被動態鏈接庫重定位;
對所述補丁函數進行編譯,以使編譯后的補丁函數能夠重定位所述外部符號;
在接收到補丁函數的激活指令時,加載所述補丁函數并重定位所述外部符號。
在本發明較佳實施例中,所述對所述補丁函數進行編譯的步驟,包括:
配置補丁函數替換表;
根據所述補丁函數替換表和所述補丁函數生成補丁目標源文件,其中,所述補丁函數替換表包含所述補丁函數與所述被補丁函數的對應關系;
對所述補丁目標源文件進行編譯以生成動態鏈接庫格式的補丁文件。
在本發明較佳實施例中,所述方法還包括:
在所述被補丁程序中配置至少一個補丁跳轉中間函數,所述補丁跳轉中間函數用于存放長跳轉指令。
在本發明較佳實施例中,所述方法還包括:
構建所述長跳轉指令和所述短跳轉指令;
所述構建所述長跳轉指令和所述短跳轉指令的步驟,包括:
獲取被補丁函數、補丁跳轉中間函數和補丁函數的地址;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于邁普通信技術股份有限公司,未經邁普通信技術股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710582244.9/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:用于汽車制動氣室的組合式聯結管
- 下一篇:經濟型有軌電瓶牽引機車





