工具/软件:TI C/C++编译器
您好!
link.cmd文件中的palign (8)与.init_array部分不兼容。 如何再现:
使用 _attribute_((***)创建具有一个(或任意奇数)函数的程序。 这将导致创建.init_array部分。
在link.cmd文件中,为.init_array部分指定palign (8)。 对于示例- .init_array > flash,palign (8),fill = 0xffffffff
使用MAP文件编译。 检查映射文件。 您可以看到.init_array 分配的8个字节。 检查映射文件中的SHT$$init_array$Base和SHT$init_array$$limit符号。 符号之间的差异必须为4个字节(functions_count*4),但实际差异=8。 sh$init_array$limit不指向init_array数据的末尾,而指向段的末尾(包括填充0xFFFFFFFF)。 当应用程序启动并调用Pinit run_Pinit函数时,代码尝试迭代构造函数。 在第一个称为的真实构造函数中,后来在0xFFFFFFFF中称为函数-挂起!
我使用paling属性计算代码CRC32。