约束限制
版本约束
操作系统版本:当前SysCare仅支持openEuler 22.03 LTS SP1版本。
硬件架构:x86_64 / aarch64。
应用约束
- 当前对LINE宏的处理需要对每个软件进行适配,当前仅考虑适配redis、nginx,其他未适配的软件可能会造成patch的size过大。后续会考虑引入参数支持用户自行适配。
- 用户态热补丁对于一个ELF文件,只支持一个补丁,如需修复多个bug,可将多个bugfix的patch文件同时传入补丁制作参数中,可制作出修复多个bug的热补丁。
语言约束
原理上补丁制作在object file一级进行比较,与编程语言无关。 当前仅测试了C / C++语言。
其他约束
-前仅支持64位系统; -当前仅支持ELF格式的热修复,暂不支持解释型语言; -当前仅支持gcc / g++编译器; -编译器需要支持-gdwarf
、-ffunction-sections
、-fdata-sections
参数; -仅支持DWARF格式的调试信息; -暂不支持交叉编译; -暂无法识别文件名相同,并且局部变量和函数名称完全一致的不同路径源码文件; -暂不支持汇编修改(包括.S
文件及内联汇编); -不支持新增外部符号(动态库依赖); -暂不支持对同一个二进制打多个补丁; -暂不支持C & C++ 混合编译; -暂不支持C++ exception修改; -暂不支持group section: -g3
编译选项,特定编译优化选项,特定gcc plugin等; -暂不支持新增ifunc: __attribute__((ifunc("foo")))
; -暂不支持新增TLS变量: __thread int foo
。
文档捉虫