文档介绍:一种补丁的生成方法、打补丁的方法及装置的制作方法
专利名称::一种补丁的生成方法、打补丁的方法及装置的制作方法
技术领域:
:本发明涉及计算机领域,尤其涉及一种补丁的生成方法、打补丁的方法及装置。
背景技术:
:随着编译器优化性能述内联函数对所述被内联函数进行函数调用的调用关系,以及根据所述调用关系,生成所述等价代码段。结合前述的第三方面或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述等价代码段保存于ELF文件中。第四方面,本发明实施例提供一种用户端设备,应用于对被内联函数打补丁的场景,包括:第二接收单元,用于接收来自服务端设备的地址及补丁文件,其中,所述地址为所述服务端设备获取的用于存放内联函数及所述被内联函数的地址,所述补丁文件为所述服务端设备将所述内联函数与所述被内联函数进行函数内联,以生成第三函数,并根据所述第三函数,生成等价于所述第三函数的等价代码段,且获取用于存放所述内联函数及所述被内联函数的地址,以及获取用于修复所述被内联函数的第一修复函数后,所述服务端设备根据所述地址,将所述等价代码段中的所述被内联函数替换为所述第一修复函数生成的;第二处理单元,用于根据所述地址及所述补丁文件修复所述被内联函数。在第四方面的第一种可能的实现方式中,所述第二处理单元,具体用于根据所述地址,将所述被内联函数的代码修改为跳转指令,所述跳转指令用于指示所述补丁文件的起始地址,以及根据所述跳转指令,执行所述补丁文件,以修复所述被内联函数。结合前述的第四方面或第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述等价代码段保存于ELF文件中。本发明实施例提供一种补丁的生成方法、打补丁的方法及装置,通过将内联函数与被内联函数进行函数内联,以生成第三函数,并根据第三函数,生成等价于第三函数的等价代码段,且获取用于存放内联函数及被内联函数的地址,以及获取用于修复被内联函数的第一修复函数,从而根据上述地址,将等价代码段中的被内联函数替换为第一修复函数,以生成补丁文件,进而输出该地址及补丁文件至用户端设备,以使用户端设备根据该地址及补丁文件修复被内联函数。通过该方案,若需对应用程序中经过函数内联的被内联函数进行修复或更新,软件开发人员则可以只重新编写需要修复或更新的被内联函数即可,同时通过在编译过程中生成相应的等价代码段,从而实现对被内联函数的修复或更新,能够在函数内联优化与热补丁共存的同时,快速地修复经过函数内联的应用程序。第五方面,本发明实施例还提供一种补丁的生成方法,应用于对内联函数打补丁的场景,包括:保存用于与所述内联函数进行函数内联的被内联函数的函数体;获取用于存放所述内联函数及所述被内联函数的地址;获取用于修复所述内联函数的第二修复函数;根据所述地址,将所述被内联函数的函数体与所述第二修复函数结合,以生成补丁文件;输出所述地址及所述补丁文件至用户端设备,以使所述用户端设备根据所述地址及所述补丁文件修复所述内联函数。在第五方面的第一种可能的实现方式中,所述根据所述地址,将所述被内联函数的函数体与所述第二修复函数结合,以生成补丁文件之前,所述方法还包括:获取函数内联关系图,所述函数内联关系图用于指示所述被内联函数的函数内联关系;根据所述函数内联关系图查找是否存在所述被内联函数的函数体;若未查找到所述被内联函数的函数体,则加载所述被内