约束限制

版本约束

内核版本:当前SysCare支持openEuler 22.03 LTS SP1及以上版本。

硬件架构:x86_64 / aarch64。

应用约束

  1. 当前对LINE宏的处理需要对每个软件进行适配,当前仅考虑适配redis、nginx,其他未适配的软件可能会造成patch的size过大。后续会考虑引入参数支持用户自行适配。
  2. 用户态热补丁对于一个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