更新时间:2022-01-10 GMT+08:00
分享

实现原理

鲲鹏代码迁移工具的架构如图1所示。

图1 鲲鹏代码迁移工具架构

表1 鲲鹏代码迁移工具模块介绍

模块名

功能

Nginx

开源第三方组件,在Web方式下需要安装部署。

处理用户前端的HTTPS请求,向前端提供静态页面,或者向后台传递用户输入数据,并将扫描结果返回给用户。

Django

开源第三方组件,在Web方式下需要安装部署。

Django是RESTful框架,将HTTP请求转换成RESTful API并驱动后端功能模块。同时Django提供用户认证、管理功能。

Main Entry

命令行方式入口。

负责解析用户输入参数,并驱动各功能模块完成用户指定的作业。

依赖字典检查

根据“用户软件包扫描”输入的SO文件列表,对比SO依赖字典,得到所有SO库的详细信息。

C/C++/ASM/Fortran/Go/解释型语言源码检查

扫描分析用户软件目标二进制文件依赖的源文件集合,根据编译器版本信息,检查源码中使用的架构相关的编译选项、编译宏、builtin函数、attribute、用户自定义宏等,确定需要迁移的源码及源文件。包括:

  • 软件构建配置文件检查
  • C/C++/ASM/Fortran/Go/解释型语言源码检查,其中Fortran语言支持Fortran03,Fortran77,Fortran90,Fortran95等版本
  • x86汇编代码检查和转换代码建议

编译器检查

根据编译器版本确定x86与鲲鹏平台相异的编译宏、编译选项、builtin函数、attribute等列表。

用户软件迁移指导

  1. 根据编译依赖库检查和C/C++/ASM/Fortran/Go/解释型语言源码扫描结果合成用户软件迁移建议报告(csv或html格式)。
  2. 输出软件迁移概要信息到终端。

软件迁移评估

自动扫描并分析软件包(非源码包)、已安装的软件,提供可迁移性评估报告。

源码迁移

自动分析源码包,提供迁移至鲲鹏916/920平台迁移修改建议。

专项软件迁移

根据华为积累的基于解决方案分类的软件迁移方法汇总。

软件包重构

对用户x86软件包进行重构分析,产生适用鲲鹏平台的软件包。

64位运行模式检查

将原32位应用向鲲鹏平台迁移并转换为64位应用的迁移检查并给出修改建议。

结构体字节对齐检查

对用户软件中的结构体变量的内存分配进行检查。

缓存行对齐检查

对齐检查是对C/C++源码中结构体变量进行128字节对齐检查,提升访存性能。

内存一致性检查

根据用户需要检查或修复内存一致性问题:

  • 通过提供的静态检查工具检查用户源码,对潜在内存一致性问题进行告警并修复
  • 通过提供的编译器工具在用户编译软件阶段自动完成修复
  • 指导用户如何生成BC文件进行扫描
分享:

    相关文档

    相关产品

close