[發明專利]跨平臺目標文件復用方法有效
| 申請號: | 201410133527.1 | 申請日: | 2014-04-03 |
| 公開(公告)號: | CN103886095B | 公開(公告)日: | 2017-10-24 |
| 發明(設計)人: | 孫吉平;韓勇 | 申請(專利權)人: | 北京深思數盾科技股份有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30;G06F9/44 |
| 代理公司: | 北京金信知識產權代理有限公司11225 | 代理人: | 黃威,喻嶸 |
| 地址: | 100193 北京市海淀區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 平臺 目標 文件 方法 | ||
1.一種跨平臺目標文件復用方法,其特征在于,包括以下步驟:
S1:讀取第一目標文件,并解析其文件結構;
S2:根據解析結果,將所述第一目標文件以符號為單位,分解為各符號及其數據、重定位信息;
S3:對第一目標文件的符號名進行更新處理;
S4:按照第二目標文件的文件格式將分解第一目標文件得到的各符號及其數據、重定位信息構造為第三目標文件;
其中,所述第一目標文件和第二目標文件分別為通過第一編譯器和第二編譯器編譯生成的格式不同的目標文件。
2.根據權利要求1所述的跨平臺目標文件復用方法,其特征在于,第二編譯器及其鏈接器配置為能夠復用所述第三目標文件。
3.根據權利要求1所述的跨平臺目標文件復用方法,其特征在于,所述符號包括函數、變量、常量。
4.根據權利要求3所述的跨平臺目標文件復用方法,其特征在于,所述步驟S3具體包括:
S31:根據所述第一目標文件所屬文件類型的符號名命名格式解析第一目標文件的符號名信息,符號名信息包括名字、類型,其中:
對于面向對象語言包括命名空間和類名中的至少一種;
對于函數包括調用約定和參數列表中的至少一種;
對于模板包括模板參數類型;
S32:根據所述符號名信息和所述第二目標文件的符號名命名規則構造新的符號名。
5.根據權利要求4所述的跨平臺目標文件復用方法,其特征在于,在對微軟的COFF文件符號名信息進行解析的情況下,步驟S31具體包括:
S311:讀取第一目標文件符號名的第一個字段,如果該字段不為‘?’,判定第一目標文件符號名為根據C語言命名的符號名;
S312:根據第一目標文件符號名的第二個字段解析函數或者變量名;
S313:根據第一目標文件符號名的第三個字段解析類名/命名空間;
S314:解析第一目標文件符號名的第四個字段表示的是函數還是變量,如果是函數則根據后續字段解析函數調用約定和作用域,然后解析返回值及各參數的類型;如果是變量則根據后續字段解析變量的作用域,然后解析變量類型,再解析變量所在內存空間的訪問屬性。
6.根據權利要求5所述的跨平臺目標文件復用方法,其特征在于,在構造微軟的COFF文件符號名的情況下,步驟S32具體包括:
S321:添加C++符號標識‘?’;
S322:添加函數或者變量名;
S323:依次添加類名/命名空間的標識;
S324:如果是函數則添加調用約定標識和作用域標識,然后依次添加返回值和各參數的類型字符串及結束標識,再添加默認的異常規范標識;如果是變量則添加變量作用域字符串,然后添加變量類型字符串,再添加變量所在內存空間的訪問屬性標識。
7.根據權利要求4所述的跨平臺目標文件復用方法,其特征在于,所述步驟S4具體包括:
S41:構造所述第三目標文件的段;
S42:添加數據,構造所述第三目標文件的符號表;
S43:添加所述第三目標文件的重定位;
S44:繼續添加與所述第三目標文件格式及運行時的庫有關的必要要素信息。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京深思數盾科技股份有限公司,未經北京深思數盾科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410133527.1/1.html,轉載請聲明來源鉆瓜專利網。





