一种C语言声明定义安全准则的编译检查方法

    公开(公告)号:CN115964047A

    公开(公告)日:2023-04-14

    申请号:CN202211547599.1

    申请日:2022-12-05

    Abstract: 本发明公开了一种C语言声明定义安全准则的编译检查方法,包括:读取待检查的源文件;对源文件进行宏安全检查、数据与函数安全检查以及变量布局安全检查,当检查出违背声明定义准则的代码输出报警信息;通过宏定义捕获、宏信息存储、宏信息处理等过程实现针对宏定义相关准则的安全检查;通过单文件或跨文件的处理进行数据与函数安全检查,实现针对变量、结构、联合、枚举、位定义、函数等声明定义相关准则的安全检查;通过以函数体为单位构建完整的函数体结构图进行变量布局安全检查,实现针对声明定义位置相关准则的安全检查;本发明对含有漏洞的代码做出检查,避免因错误的声明定义造成后续代码的语义逻辑混乱和安全问题。

    一种针对申威架构TLSGD重定位的编译链接方法、装置及存储介质

    公开(公告)号:CN116991478A

    公开(公告)日:2023-11-03

    申请号:CN202311028465.3

    申请日:2023-08-16

    Abstract: 本发明公开了一种针对申威架构TLSGD重定位的编译链接方法、装置及存储介质,编译链接方法包括:判断重定位变量的数量是否超出预设阈值;将线程局部变量的代码转换成TLSGD指令或复合指令;将转换得到的TLSGD指令或复合指令汇编至重定位表;对重定位表中的指令条目进行位置调整;根据完成判断后的重定位表中的TLSGD指令条目,计算TLSGD指令对应的线程局部变量地址在GOT中相对GP的偏移量disp;根据偏移量disp是否在16位二进制表示范围内,确定TLSGD指令或复合指令的偏移量,并回填,得到重定位后的指令。本发明提升了线程私有变量的寻址范围,满足多线程应用程序在申威平台的适配需求,确保应用程序可以正确链接生成可执行文件或库文件。

    一种申威Go编译器基于跳转指令的寻址方法

    公开(公告)号:CN118193059A

    公开(公告)日:2024-06-14

    申请号:CN202410383861.6

    申请日:2024-04-01

    Abstract: 本发明公开了编译器技术领域的一种申威Go编译器基于跳转指令的寻址方法,旨在解决现有技术在性能和效率上有待提升的问题。包括:获取源码,将源码翻译为二进制机器代码,得到待链接的二进制文件;根据待链接的二进制文件计算符号相对于指令所在地址的偏移量;根据偏移量进行带重定位指令的地址回填,完成链接;计算符号相对于指令所在地址的偏移量包括:判断符号类型,若符号是全局符号,则计算其对应的全局符号在全局偏移表GOT中相对的偏移量;否则,则计算其对应的局部符号地址相对的偏移量。本发明无需在函数入口和调用后发射额外指令,同时可以解放一个通用寄存器,通过跳转指令获取当前指令地址,能够有效提高应用程序的执行性能。

    一种面向C语言指针安全的编译检查方法及系统

    公开(公告)号:CN116661796A

    公开(公告)日:2023-08-29

    申请号:CN202310535032.0

    申请日:2023-05-12

    Abstract: 本发明公开了一种面向C语言指针安全的编译检查方法及系统,包括:对获取的NULL宏定义进行识别,并将其位置信息存入一个临时开辟的全局队列;基于全局映射表根据全局队列中的位置信息将AST上相应的立即数节点打上“NULL标记”,封装NULL标记查询接口;使用编译器提供的语句或表达式位置信息获取接口获取C语句或表达式的文件位置;根据语句或表达式的位置信息判断分析对象是否位于系统头文件或C标准头文件中,针对单语句场景根据编译器提供的指针信息进行相应编译检查,针对涉及NULL的准则调用NULL标记查询接口获知相应节点是否为NULL;针对跨语句场景根据指针状态表中指针的当前状态进行相应的编译检查,期间根据NULL标记查询接口获知相应节点是否为NULL。

Patent Agency Ranking