JP7212793B2 - 関数ジャンプを実現するための方法、装置及びコンピュータ記憶媒体 - Google Patents
関数ジャンプを実現するための方法、装置及びコンピュータ記憶媒体 Download PDFInfo
- Publication number
- JP7212793B2 JP7212793B2 JP2021547637A JP2021547637A JP7212793B2 JP 7212793 B2 JP7212793 B2 JP 7212793B2 JP 2021547637 A JP2021547637 A JP 2021547637A JP 2021547637 A JP2021547637 A JP 2021547637A JP 7212793 B2 JP7212793 B2 JP 7212793B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- address
- patch
- functions
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/328—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Description
この出願は、2019年5月30日に中国国家知識産権局に出願された「METHOD FOR IMPLEMENTING FUNCTION JUMP, APPARATUS, AND COMPUTER STORAGE MEDIUM」という名称の中国特許出願第201910465987.7号に対する優先権を主張し、その全内容を参照により援用する。
この出願は、コンピュータ分野に関し、より具体的には、ホットフィックスを実現するための方法に関する。
第1の関数についての呼び出し命令を受信するステップであり、呼び出し命令は、第1の関数のアドレスを含んでもよい、ステップと、第1の関数のアドレスが第1のデータ構造に記憶されていることを確認するステップであり、複数の関数のアドレスが第1のデータ構造に記憶され、複数の関数のうちいずれか1つは、関数のパッチ関数を置換するように構成され、置換は、旧関数が旧関数への呼び出しに応答するためにパッチ関数に置換されることを意味する、ステップと、第1の関数のアドレスに基づいて、第1の関数のパッチ関数のアドレスを求めて第2のデータ構造を検索するステップであり、第1の関数のパッチ関数は、第1の関数を置換するために登録され、複数の関数のアドレスと複数の関数のパッチ関数との間の対応関係が第2のデータ構造に記憶され、複数の関数のうちいずれか1つのパッチ関数は、関数を置換するために登録される、ステップと、第1の関数のパッチ関数のアドレスに基づいて、実行のために第1の関数から第1の関数のパッチ関数にジャンプし、呼び出し命令に応答し、第1の関数のパッチ関数を実行するステップとを含む。第1の関数のアドレスが第1のデータ構造に記憶されていることを確認することは、複数の関数のアドレスが第1の関数のアドレスを含むことを確認することを意味する。第1の関数のアドレスが第1のデータ構造に記憶されていることは、第1の関数がパッチ関数により置換される必要のある旧関数であることを示し、したがって、パッチ関数のアドレスが関数ジャンプを実行するために見つけられる必要がある。データ構造(data structure)は、コンピュータにデータを記憶して系統化する方式である。
受信ユニットは、第1の関数についての呼び出し命令を受信し、呼び出し命令は、第1の関数のアドレスを含む、ように構成され、
処理ユニットは、第1の関数のアドレスが第1のデータ構造に記憶されていることを確認し、複数の関数のアドレスが第1のデータ構造に記憶され、第1の関数のアドレスに基づいて、第1の関数のパッチ関数のアドレスを求めて第2のデータ構造を検索し、第1の関数のパッチ関数は、第1の関数を置換するために登録され、複数の関数のアドレスと複数の関数のパッチ関数との間の対応関係が第2のデータ構造に記憶され、第1の関数のパッチ関数のアドレスに基づいて、実行のために第1の関数から第1の関数のパッチ関数にジャンプし、呼び出し命令に応答する、ように構成される。
Claims (15)
- 受信ユニット及び処理ユニットを含む装置により実行される、関数ジャンプを実現するための方法であって、
前記受信ユニットにより、第1の関数についての呼び出し命令を受信するステップと、
前記処理ユニットにより、前記第1の関数のアドレスが第1のデータ構造に記憶されていることを確認するステップであり、複数の関数のアドレスが前記第1のデータ構造に記憶される、ステップと、
前記処理ユニットにより、前記第1の関数の前記アドレスに基づいて、前記第1の関数のパッチ関数のアドレスを求めて第2のデータ構造を検索するステップであり、前記第1の関数の前記パッチ関数は、前記第1の関数を置換するために登録され、複数の関数のアドレスと前記複数の関数の関数スタックとの間の対応関係が前記第2のデータ構造に記憶され、前記関数スタックのそれぞれは、パッチ関数のアドレスを含む、ステップと、
前記処理ユニットにより、前記第1の関数の前記パッチ関数の前記アドレスに基づいて、実行のために前記第1の関数から前記第1の関数の前記パッチ関数にジャンプし、前記呼び出し命令に応答するステップと
を含む方法。 - 前記第1のデータ構造は第1のハッシュテーブルである、請求項1に記載の方法。
- 当該方法は、
前記処理ユニットにより、前記第1のハッシュテーブルのアドレスが記憶された構造体を使用することにより前記第1のハッシュテーブルを決定するステップであり、前記第1のハッシュテーブルの前記アドレスが記憶された前記構造体を指すポインタは、第1の構造体に含まれる、ステップを更に含む、請求項2に記載の方法。 - 前記複数の関数のそれぞれが第2の構造体に対応し、各関数のパッチ関数のアドレスが前記関数の前記第2の構造体に記憶され、第2のハッシュテーブルは、前記複数の関数のアドレスと前記複数の関数の第2の構造体との間の対応関係を記憶するために使用され、
前記処理ユニットにより、前記第1の関数の前記アドレスに基づいて、前記第1の関数のパッチ関数のアドレスを求めて第2のデータ構造を検索するステップは、
前記処理ユニットにより、前記第1の関数の前記アドレスに基づいて、前記第1の関数の前記アドレスに対応する第2の構造体を求めて前記第2のハッシュテーブルを検索するステップと、
前記処理ユニットにより、前記第1の関数の前記アドレスに対応する見つかった前記第2の構造体から前記第1の関数の前記パッチ関数の前記アドレスを取得するステップと
を含む、請求項1乃至3のうちいずれか1項に記載の方法。 - 当該方法は、
前記処理ユニットにより、前記第1の関数の前記アドレスを前記第1のデータ構造に追加するステップを更に含む、請求項1乃至4のうちいずれか1項に記載の方法。 - 当該方法は、
前記第1の関数についてのロールバック命令に応じて、前記処理ユニットにより、前記第2のハッシュテーブル及び前記第1の関数の前記アドレスに基づいて、前記第1の関数の前記パッチ関数の前記アドレスを求めて前記第1の関数の前記第2の構造体を検索し、前記第1の関数の前記パッチ関数の前記アドレスを削除するステップであり、前記ロールバック命令は、前記第1の関数の前記パッチ関数との前記第1の関数の置換を元に戻すために使用される、ステップを更に含む、請求項4に記載の方法。 - 関数ジャンプを実現するための装置であって、
当該装置は、受信ユニット及び処理ユニットを含み、
前記受信ユニットは、第1の関数についての呼び出し命令を受信するように構成され、
前記処理ユニットは、前記第1の関数のアドレスが第1のデータ構造に記憶されていることを確認し、複数の関数のアドレスが前記第1のデータ構造に記憶され、
前記第1の関数の前記アドレスに基づいて、前記第1の関数のパッチ関数のアドレスを求めて第2のデータ構造を検索し、前記第1の関数の前記パッチ関数は、前記第1の関数を置換するために登録され、複数の関数のアドレスと前記複数の関数の関数スタックとの間の対応関係が前記第2のデータ構造に記憶され、前記関数スタックのそれぞれは、パッチ関数のアドレスを含み、
前記第1の関数の前記パッチ関数の前記アドレスに基づいて、実行のために前記第1の関数から前記第1の関数の前記パッチ関数にジャンプし、前記呼び出し命令に応答する、
ように構成される、装置。 - 前記第1のデータ構造は第1のハッシュテーブルである、請求項7に記載の装置。
- 前記処理ユニットは、前記第1のハッシュテーブルのアドレスが記憶された構造体を使用することにより前記第1のハッシュテーブルを決定するように更に構成され、前記第1のハッシュテーブルの前記アドレスが記憶された前記構造体を指すポインタは、第1の構造体に含まれる、請求項8に記載の装置。
- 前記複数の関数のそれぞれが第2の構造体に対応し、各関数のパッチ関数のアドレスが前記関数の前記第2の構造体に記憶され、第2のハッシュテーブルは、前記複数の関数のアドレスと前記複数の関数の第2の構造体との間の対応関係を記憶するために使用され、
前記処理ユニットは、
前記第1の関数の前記アドレスに基づいて、前記第1の関数の前記アドレスに対応する第2の構造体を求めて前記第2のハッシュテーブルを検索し、
前記第1の関数の前記アドレスに対応する見つかった前記第2の構造体から前記第1の関数の前記パッチ関数の前記アドレスを取得する、
ように具体的に構成される、請求項7乃至9のうちいずれか1項に記載の装置。 - 前記処理ユニットは、
前記第1の関数の前記アドレスを前記第1のデータ構造に追加するように更に構成される、請求項7乃至10のうちいずれか1項に記載の装置。 - 前記処理ユニットは、
前記第1の関数についてのロールバック命令に応じて、前記第2のハッシュテーブル及び前記第1の関数の前記アドレスに基づいて、前記第1の関数の前記パッチ関数の前記アドレスを求めて前記第1の関数の前記第2の構造体を検索し、前記第1の関数の前記パッチ関数の前記アドレスを削除するように更に構成され、前記ロールバック命令は、前記第1の関数の前記パッチ関数との前記第1の関数の置換を元に戻すために使用される、請求項10に記載の装置。 - コンピュータシステムをであって、
当該コンピュータシステムは、プロセッサ及びメモリを含み、前記メモリは、コンピュータプログラムを記憶するように構成され、前記プロセッサは、前記コンピュータプログラムを実行し、請求項1乃至6のうちいずれか1項に記載の方法を実現するように構成される、コンピュータシステム。 - コンピュータ読み取り可能記憶媒体であって、
コンピュータプログラムが前記コンピュータ読み取り可能記憶媒体に記憶され、前記コンピュータプログラムがプロセッサにより呼び出されたとき、請求項1乃至6のうちいずれか1項に記載の方法が実現される、コンピュータ読み取り可能記憶媒体。 - コンピュータに請求項1乃至6のうちいずれか1項に記載の方法を実行させるように構成された、媒体に記憶されたコンピュータプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910465987.7A CN112015491B (zh) | 2019-05-30 | 2019-05-30 | 实现函数跳转的方法、装置及计算机存储介质 |
CN201910465987.7 | 2019-05-30 | ||
PCT/CN2020/071347 WO2020238245A1 (zh) | 2019-05-30 | 2020-01-10 | 实现函数跳转的方法、装置及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022513382A JP2022513382A (ja) | 2022-02-07 |
JP7212793B2 true JP7212793B2 (ja) | 2023-01-25 |
Family
ID=73501882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021547637A Active JP7212793B2 (ja) | 2019-05-30 | 2020-01-10 | 関数ジャンプを実現するための方法、装置及びコンピュータ記憶媒体 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11645068B2 (ja) |
EP (1) | EP3842938A4 (ja) |
JP (1) | JP7212793B2 (ja) |
KR (1) | KR20210057176A (ja) |
CN (1) | CN112015491B (ja) |
WO (1) | WO2020238245A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114840204A (zh) * | 2021-02-02 | 2022-08-02 | 华为技术有限公司 | 非同名符号的函数跳转方法、装置及计算机可读存储介质 |
CN115167862A (zh) * | 2021-03-19 | 2022-10-11 | 华为技术有限公司 | 补丁方法及相关设备 |
CN113239380A (zh) * | 2021-05-21 | 2021-08-10 | 杭州弗兰科信息安全科技有限公司 | 一种保护文件读写方法、装置、电子设备和存储介质 |
CN113342389B (zh) * | 2021-05-31 | 2022-09-30 | 深圳市腾讯网络信息技术有限公司 | 一种服务的更新方法、装置及计算机可读存储介质 |
US20230026837A1 (en) * | 2021-07-23 | 2023-01-26 | Vmware, Inc. | Optimizing Virtual Machine Scheduling on Non-Uniform Cache Access (NUCA) Systems |
CN114691181A (zh) * | 2022-03-28 | 2022-07-01 | 阿里巴巴(中国)有限公司 | 热升级方法、装置、设备、分布式系统及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060242627A1 (en) | 2000-12-26 | 2006-10-26 | Shlomo Wygodny | System and method for conditional tracing of computer programs |
US20100306746A1 (en) | 2009-05-29 | 2010-12-02 | University Of Maryland | Binary rewriting without relocation information |
US20110107070A1 (en) | 2008-06-23 | 2011-05-05 | Grig Barbulescu | Patching of a read-only memory |
US20160019054A1 (en) | 2014-07-21 | 2016-01-21 | Sandisk Technologies Inc. | Method and System for Generating a ROM Patch |
CN105630557A (zh) | 2015-12-24 | 2016-06-01 | 迈普通信技术股份有限公司 | 热补丁方法和装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3019915B2 (ja) * | 1995-11-20 | 2000-03-15 | 日本電気株式会社 | 手続き呼出し方法 |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
US6658657B1 (en) * | 2000-03-31 | 2003-12-02 | Intel Corporation | Method and apparatus for reducing the overhead of virtual method invocations |
US7472384B1 (en) * | 2003-12-02 | 2008-12-30 | Swsoft Holdings, Ltd. | System, method and computer program product for on-the-fly patching of executable code |
US8468516B1 (en) * | 2008-12-19 | 2013-06-18 | Juniper Networks, Inc. | Creating hot patches for embedded systems |
CN101561764B (zh) * | 2009-05-18 | 2012-05-23 | 华为技术有限公司 | 一种多核环境下的补丁方法与补丁装置 |
US9134977B2 (en) * | 2010-02-26 | 2015-09-15 | Red Hat, Inc. | Compiler operation for handling conditional statements |
CN101882094A (zh) * | 2010-06-10 | 2010-11-10 | 中兴通讯股份有限公司 | 嵌入式系统制作补丁的方法和系统 |
CN102467394A (zh) * | 2010-11-12 | 2012-05-23 | 中兴通讯股份有限公司 | 多核热补丁的实现方法及系统 |
CN104239082B (zh) * | 2013-06-20 | 2019-01-15 | 上海博达数据通信有限公司 | 嵌入式系统的热补丁实现方法 |
CN105607937B (zh) * | 2015-12-25 | 2019-01-18 | 京信通信系统(中国)有限公司 | 一种热补丁方法及设备 |
CN106610857B (zh) * | 2016-12-23 | 2019-01-22 | 优刻得科技股份有限公司 | 一种热补丁信息查询方法以及装置 |
US10795659B1 (en) * | 2017-11-02 | 2020-10-06 | Virtuozzo International Gmbh | System and method for live patching processes in user space |
CN107797820B (zh) * | 2017-11-13 | 2021-03-23 | 北京百度网讯科技有限公司 | 用于生成补丁的方法和装置 |
-
2019
- 2019-05-30 CN CN201910465987.7A patent/CN112015491B/zh active Active
-
2020
- 2020-01-10 KR KR1020217011497A patent/KR20210057176A/ko not_active Application Discontinuation
- 2020-01-10 JP JP2021547637A patent/JP7212793B2/ja active Active
- 2020-01-10 WO PCT/CN2020/071347 patent/WO2020238245A1/zh unknown
- 2020-01-10 EP EP20815671.1A patent/EP3842938A4/en active Pending
-
2021
- 2021-04-20 US US17/235,061 patent/US11645068B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060242627A1 (en) | 2000-12-26 | 2006-10-26 | Shlomo Wygodny | System and method for conditional tracing of computer programs |
US20110107070A1 (en) | 2008-06-23 | 2011-05-05 | Grig Barbulescu | Patching of a read-only memory |
US20100306746A1 (en) | 2009-05-29 | 2010-12-02 | University Of Maryland | Binary rewriting without relocation information |
US20160019054A1 (en) | 2014-07-21 | 2016-01-21 | Sandisk Technologies Inc. | Method and System for Generating a ROM Patch |
CN105630557A (zh) | 2015-12-24 | 2016-06-01 | 迈普通信技术股份有限公司 | 热补丁方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020238245A1 (zh) | 2020-12-03 |
EP3842938A1 (en) | 2021-06-30 |
US20210240467A1 (en) | 2021-08-05 |
US11645068B2 (en) | 2023-05-09 |
JP2022513382A (ja) | 2022-02-07 |
KR20210057176A (ko) | 2021-05-20 |
CN112015491A (zh) | 2020-12-01 |
CN112015491B (zh) | 2022-08-09 |
EP3842938A4 (en) | 2021-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7212793B2 (ja) | 関数ジャンプを実現するための方法、装置及びコンピュータ記憶媒体 | |
US9904527B1 (en) | Optimizing API implementer programs using fine-grained code analysis | |
JP7090657B2 (ja) | アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体 | |
EP2726977B1 (en) | Virtual machine image analysis | |
US5359730A (en) | Method of operating a data processing system having a dynamic software update facility | |
US8949106B2 (en) | Just in time compiler in spatially aware emulation of a guest computer instruction set | |
US11249758B2 (en) | Conditional branch frame barrier | |
US8924930B2 (en) | Virtual machine image lineage | |
US11474797B2 (en) | Generating closures from abstract representation of source code | |
US9558023B2 (en) | Live application mobility from one operating system level to an updated operating system level and applying overlay files to the updated operating system | |
US11061695B2 (en) | Unikernel provisioning | |
US9146847B2 (en) | Optimizing for page sharing in virtualized java virtual machines | |
US11693722B2 (en) | Fast memory mapped IO support by register switch | |
US8548966B2 (en) | Asynchronous assertions | |
CN105683985A (zh) | 虚拟机内省 | |
EP4036716A1 (en) | Method and device for acquiring mirror image file | |
Rigo et al. | Atomic Instruction Translation Towards A Multi-Threaded QEMU. | |
Ma et al. | Efficient Scheduler Live Update for Linux Kernel with Modularization | |
US11531531B1 (en) | Non-disruptive introduction of live update functionality into long-running applications | |
US11989569B2 (en) | Unikernel provisioning | |
Matěna | VMA merging in Linux | |
Su et al. | LPAH: Illustrating Efficient Live Patching with Alignment Holes in Kernel Data | |
Curless | Tools for Memory Optimization in Duplicate Containers | |
Zhang et al. | Research on WebAssembly Runtimes: A Survey | |
Schmitt et al. | Rainbow os: A distributed stm for in-memory data clusters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210428 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210428 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220621 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220920 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20221220 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230113 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7212793 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |