CN105868094A - 一种用于mips架构cpu的热补丁的方法和设备 - Google Patents
一种用于mips架构cpu的热补丁的方法和设备 Download PDFInfo
- Publication number
- CN105868094A CN105868094A CN201510030443.XA CN201510030443A CN105868094A CN 105868094 A CN105868094 A CN 105868094A CN 201510030443 A CN201510030443 A CN 201510030443A CN 105868094 A CN105868094 A CN 105868094A
- Authority
- CN
- China
- Prior art keywords
- instruction
- patch
- article
- installing function
- patch installing
- 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.)
- Pending
Links
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种用于无内部互锁流水级的微处理器MIPS架构CPU的热补丁的方法,所述方法包括:扫描系统各任务栈,检测被打补丁函数是否被打断;当所述被打补丁函数未被打断时,将所述被打补丁函数的第一条指令修改为断点指令并捕捉异常信号;当捕捉到异常信号时,将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令。上述技术方案对两条运行指令进行了原子修改,使CPU可以保证跳转到热补丁区,从而解决了MIPS架构CPU的热补丁时由于延时槽而导致的系统运行错误的问题。
Description
技术领域
本发明涉及通信领域,具体涉及用于MIPS架构CPU热补丁的方法和设备。
背景技术
热补丁技术的出现解决了在硬件设备不复位的情况下也能够完成产品软件缺陷修正的难题。已公开的热补丁技术有多种方案,较常见的热补丁技术是借助指令替换将位于函数开头的指令替换成跳转指令,跳转到补丁区。常见的典型补丁技术方案如下:
1.将补丁函数funcB重新编译,生成可定位的目标文件fileB。
2.在目标机中解析目标文件fileB,提取出代码段、data段和bss段到内存中。
3.分析目标机中的内存符号表地址,解析出被打补丁函数funcA的地址。
4.修改被打补丁函数funcA的首指令为跳转指令,跳转到补丁函数funcB。
这种传统的热补丁技术可以应用于目前市场上的大多数CPU硬件架构,但如果应用于MIPS(Microprocessor Without Interlocked Piped Stages,无内部互锁流水级微处理器)架构CPU可能会导致系统运行错误。原因是由于MIPS架构CPU的跳转指令有一个延时槽问题,如果按照传统的热补丁修改方法将第一条指令修改为跳转指令,会导致CPU先执行后面的第二条指令而无法跳转到热补丁区,造成系统运行错误。
发明内容:
本发明提供一种用于MIPS架构CPU的热补丁的方法和设备,以解决MIPS架构CPU的热补丁的问题。
为解决上述技术问题,本发明提供一种用于无内部互锁流水级微处理器MIPS架构CPU的热补丁的方法,所述方法包括:
扫描系统各任务栈,检测被打补丁函数是否被打断;
当所述被打补丁函数未被打断时,将所述被打补丁函数的第一条指令修改为断点指令并捕捉异常信号;
当捕捉到异常信号时,将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令。
优选地,
所述将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令后还包括:
当进行热补丁处理时,所述被打补丁函数通过所述跳转指令调转到补丁区进行处理。
优选地,
所述将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令包括:
在异常处理函数中将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令。
优选地,
所述扫描系统各任务栈,检测被打补丁函数是否被打断后还包括:
当所述被打补丁函数被打断时,继续扫描系统各任务栈。
优选地,
断点指令为breakpoint指令,跳转指令为跳转到补丁区的jump指令,空指令为nop指令。
本发明还提供一种用于无内部互锁流水级微处理器MIPS架构CPU的热补丁的设备,其特征在于,所述设备包括:
检测模块,用于扫描系统各任务栈,检测被打补丁函数是否被打断;
修改模块,用于当所述被打补丁函数未被打断时,将所述被打补丁函数的第一条指令修改为断点指令并捕捉异常信号;
处理模块,用于当捕捉到异常信号时,将被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令。
优选地,
所述处理模块还用于当进行热补丁处理时,所述被打补丁函数通过所述跳转指令调转到补丁区进行处理。
优选地,
所述处理模块用于当捕捉到异常信号时,将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令是指:
在异常处理函数中将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令。
优选地,
所述检测模块还用于当所述被打补丁函数被打断时,继续扫描系统各任务栈。
优选地,
断点指令为breakpoint指令,跳转指令为跳转到补丁区的jump指令,空指令为nop指令。
上述技术方案对两条运行指令进行了原子修改,使CPU可以保证跳转到热补丁区,从而解决了MIPS架构CPU的热补丁时由于延时槽而导致的系统运行错误的问题。
附图说明
图1为本发明实施例一中的热补丁原理示意图。
图2为本发明实施例一中用于MIPS架构CPU的热补丁的方法的流程图;
图3为本发明实施例一中用于MIPS架构CPU的热补丁的设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
实施例一
为解决MIPS架构CPU的热补丁的问题,本发明的技术方案将第一条指令修改为跳转指令,将第二条指令修改为空指令,通过将两条运行指令进行原子修改可以保证CPU跳转到热补丁区,有效的避免系统运行错误。
如图1和图2所示,本发明提供一种用于MIPS架构CPU的热补丁的方法,所述方法包括:
步骤S100:扫描系统各任务栈,检测被打补丁函数是否被打断;
当被打补丁函数未被打断时,将所述被打补丁函数的第一条指令修改为断点指令。如果检测到被打补丁函数被打断了,则不进行修改操作,而是继续进行系统各任务栈的扫描,直到检测到没有被打补丁函数被打断。
步骤S101:当所述被打补丁函数未被打断时,将所述被打补丁函数的第一条指令修改为断点指令并捕捉异常信号;
步骤S102:当捕捉到异常信号时,将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令。
具体的,在异常处理函数中将被打补丁函数的第一条指令修改为跳转指令,将被打补丁函数的第二条指令修改为空指令。
需要说明的是,如果有任务曾经调用过被打补丁函数,并且被打断在第二条指令上,在把被打补丁函数的第二条指令修改为空指令后,如果该任务恢复继续执行被打补丁函数的话,则会从空指令开始执行,这样就会导致系统运行错误。因此需要先确认被打补丁函数是否被打断过。
在所有系统任务经扫描后确认被打补丁函数是否被打断过,如被打补丁函数没有被打断后激活补丁,修改被打补丁函数的第一条指令为断点指令,即breakpoint指令。当被打补丁函数被调用的时候进入捕捉异常产生断点。用户态捕获到异常信号后进入异常处理函数,异常处理函数将被打补丁函数funcA的第一条指令修改为跳转到补丁区的跳转指令即jump指令,将第二条指令修改为空指令即nop指令。由于是被打补丁函数自身触发的,因此可以保证两条指令被原子修改。
优选地,还可包括:
步骤S103:当进行热补丁处理时,所述被打补丁函数通过所述跳转指令调转到补丁区进行处理。
如图3所示,本发明还提供一种用于MIPS架构CPU的热补丁的设备,所述设备包括:
检测模块11,用于捕捉异常信号;
修改模块12,用于扫描系统各任务栈,检测被打补丁函数是否被打断;还用于当被打补丁函数未被打断时,将所述被打补丁函数的第一条指令修改为断点指令;
处理模块13,用于当捕捉到异常信号时,将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令。
具体的,断点指令为breakpoint指令,跳转指令为跳转到补丁区的jump指令,空指令为nop指令。
其中,在具体实现时,在异常处理函数中将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令。
优选地,处理模块13还用于当进行热补丁处理时,通过所述跳转指令调转到补丁区进行处理。
检测模块还用于当所述被打补丁函数被打断时,继续扫描系统各任务栈。
上述技术方案对被打补丁函数的两条运行指令进行了原子修改,从而解决了MIPS架构CPU热补丁时由于延时槽而导致的无法跳转到热补丁区的问题,保证了系统的正常运行。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/模块可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
Claims (10)
1.一种用于无内部互锁流水级微处理器MIPS架构CPU的热补丁的方法,其特征在于,所述方法包括:
扫描系统各任务栈,检测被打补丁函数是否被打断;
当所述被打补丁函数未被打断时,将所述被打补丁函数的第一条指令修改为断点指令并捕捉异常信号;
当捕捉到异常信号时,将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令。
2.如权利要求1所述的方法,其特征在于:
所述将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令后还包括:
当进行热补丁处理时,所述被打补丁函数通过所述跳转指令调转到补丁区进行处理。
3.如权利要求2所述的方法,其特征在于:
所述将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令包括:
在异常处理函数中将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令。
4.如权利要求3所述的方法,其特征在于:
所述扫描系统各任务栈,检测被打补丁函数是否被打断后还包括:
当所述被打补丁函数被打断时,继续扫描系统各任务栈。
5.如权利要求4所述的方法,其特征在于:
断点指令为breakpoint指令,跳转指令为跳转到补丁区的jump指令,空指令为nop指令。
6.一种用于无内部互锁流水级微处理器MIPS架构CPU的热补丁的设备,其特征在于,所述设备包括:
检测模块,用于扫描系统各任务栈,检测被打补丁函数是否被打断;
修改模块,用于当所述被打补丁函数未被打断时,将所述被打补丁函数的第一条指令修改为断点指令并捕捉异常信号;
处理模块,用于当捕捉到异常信号时,将被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令。
7.如权利要求6所述的设备,其特征在于:
所述处理模块还用于当进行热补丁处理时,所述被打补丁函数通过所述跳转指令调转到补丁区进行处理。
8.如权利要求7所述的设备,其特征在于:
所述处理模块用于当捕捉到异常信号时,将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令是指:
在异常处理函数中将所述被打补丁函数的第一条指令修改为跳转指令,将所述被打补丁函数的第二条指令修改为空指令。
9.如权利要求8所述的设备,其特征在于:
所述检测模块还用于当所述被打补丁函数被打断时,继续扫描系统各任务栈。
10.如权利要求9所述的设备,其特征在于:
断点指令为breakpoint指令,跳转指令为跳转到补丁区的jump指令,空指令为nop指令。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510030443.XA CN105868094A (zh) | 2015-01-20 | 2015-01-20 | 一种用于mips架构cpu的热补丁的方法和设备 |
PCT/CN2016/070044 WO2016115975A1 (zh) | 2015-01-20 | 2016-01-04 | 一种用于mips架构cpu的热补丁的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510030443.XA CN105868094A (zh) | 2015-01-20 | 2015-01-20 | 一种用于mips架构cpu的热补丁的方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105868094A true CN105868094A (zh) | 2016-08-17 |
Family
ID=56416406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510030443.XA Pending CN105868094A (zh) | 2015-01-20 | 2015-01-20 | 一种用于mips架构cpu的热补丁的方法和设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105868094A (zh) |
WO (1) | WO2016115975A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108121633B (zh) * | 2016-11-30 | 2021-08-17 | 北京国双科技有限公司 | 异常捕获方法及装置 |
CN106598819B (zh) * | 2016-12-12 | 2019-07-26 | 世纪龙信息网络有限责任公司 | 客户端补丁加载使用的监控处理方法和系统 |
CN115225194A (zh) * | 2022-07-14 | 2022-10-21 | 广州文远知行科技有限公司 | 时间跳变检测方法、装置、存储介质及计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050183072A1 (en) * | 1999-07-29 | 2005-08-18 | Intertrust Technologies Corporation | Software self-defense systems and methods |
CN101122881A (zh) * | 2007-09-20 | 2008-02-13 | 福建星网锐捷网络有限公司 | 一种基于mips架构cpu的异常点定位诊断方法 |
CN101561764A (zh) * | 2009-05-18 | 2009-10-21 | 华为技术有限公司 | 一种多核环境下的补丁方法与补丁装置 |
CN103399775A (zh) * | 2013-08-05 | 2013-11-20 | 北京华为数字技术有限公司 | 一种热补丁方法及设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508681B (zh) * | 2011-11-09 | 2015-03-11 | 北京华为数字技术有限公司 | 多核系统不中断业务的补丁方法及系统 |
CN104239082B (zh) * | 2013-06-20 | 2019-01-15 | 上海博达数据通信有限公司 | 嵌入式系统的热补丁实现方法 |
-
2015
- 2015-01-20 CN CN201510030443.XA patent/CN105868094A/zh active Pending
-
2016
- 2016-01-04 WO PCT/CN2016/070044 patent/WO2016115975A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050183072A1 (en) * | 1999-07-29 | 2005-08-18 | Intertrust Technologies Corporation | Software self-defense systems and methods |
CN101122881A (zh) * | 2007-09-20 | 2008-02-13 | 福建星网锐捷网络有限公司 | 一种基于mips架构cpu的异常点定位诊断方法 |
CN101561764A (zh) * | 2009-05-18 | 2009-10-21 | 华为技术有限公司 | 一种多核环境下的补丁方法与补丁装置 |
CN103399775A (zh) * | 2013-08-05 | 2013-11-20 | 北京华为数字技术有限公司 | 一种热补丁方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2016115975A1 (zh) | 2016-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009543170A5 (zh) | ||
CN108345542B (zh) | 一种应用程序中异常处理方法及装置 | |
US8423970B2 (en) | Method, computer program product, and hardware product for handling breakpoints in an asynchronous debug model | |
US9483336B2 (en) | Method for correcting memory error of application program | |
US10545818B2 (en) | Exception wrapping system | |
WO2016127566A1 (zh) | 补丁处理方法及装置 | |
CN101923508A (zh) | 一种嵌入式系统中的异常处理方法及装置 | |
CN105868094A (zh) | 一种用于mips架构cpu的热补丁的方法和设备 | |
CN105528284A (zh) | 一种内核故障注入方法及电子设备 | |
WO2017096917A1 (zh) | 一种热补丁注入方法及装置 | |
CN104216776A (zh) | 一种基于blcr技术的安卓操作系统快速启动方法 | |
CN101794243A (zh) | 一种利用操作系统结构化异常处理加固java应用程序的方法 | |
US20180341242A1 (en) | Control device and editing device | |
CN104035776A (zh) | 一种操作系统的启动方法 | |
JP2016128941A (ja) | 出力判定装置、出力判定方法、出力判定プログラム、及び、静的解析装置 | |
US20140282461A1 (en) | Concurrent patching of shared libraries | |
US7822492B2 (en) | Methods and systems for operating an automated system using a process definition model | |
JP5663630B2 (ja) | コンピュータの自動操作装置、自動操作方法、及び自動操作プログラム | |
JP2007257397A (ja) | 競合状態検出処理追加プログラム、競合状態検出処理追加装置、競合状態検出処理追加方法 | |
CN104035795A (zh) | 一种控制ring0级程序执行的方法及装置 | |
CN111026668B (zh) | 测试用例的重试方法、测试用例的重试装置及存储介质 | |
CN112000584B (zh) | 基于ide调试框架的用于cpu程序的调试方法及调试系统 | |
US20230081290A1 (en) | Duplex operation system, duplex operation method, and program | |
US9928045B2 (en) | Information processing apparatus, compile method and non-transitory recording medium storing compile program | |
JP2009289119A (ja) | ウォッチドッグ・タイマ及びマイクロコンピュータ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160817 |