1

我编写了一个简单的 c 语言程序,它没有额外的功能代码和库依赖:

void main()
{
}

将它保存为“Test.c”,我用“arm-linux-gcc”为arm架构师编译它并输出一个elf格式文件“Test”,命令是“ arm-linux-gcc Test.c -o Test -static ”。然后我使用功率模拟器工具“Sim-Panalyzer”估算文件“Test”的功率,回显信息显示“ fatal:non-speculative fault (2) detected @ 0x00013c58 ”。所以我使用命令“ readelf -S Test ”并找到地址在段“.text”中,然后使用命令“ arm-linux-objdump Test -Sl -j .text > a.txt ”将信息输出到文件“a.txt”。我在这里找到地址并了解信息:

   13c48:   1affffd4    bne 13ba0 <_dl_aux_init+0x8c>
   13c4c:   e352000f    cmp r2, #15
   13c50:   e59d201c    ldr r2, [sp, #28]
   13c54:   e59d3018    ldr r3, [sp, #24]
   13c58:   e5892000    str r2, [r9]

很明显,错误发生在 gcc 库“glibc-2.9/elf/dl-support.c”中的函数“ dl_aux_init ”中,但我不知道如何处理这个错误。我不敢相信glibc中的错误,所以我希望有人能帮我找到导致这个错误的原因。使用“Sim-Panalyzer”有什么问题吗?

4

1 回答 1

0

这个错误很奇怪,但原因是我使用了最新的“arm-linux-gcc”版本(4.3.2)并导致了这个问题。我将工具版本更改为从站点http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/下载的 2.95.3 ,然后一切正常!很明显,工具“sim-panalyzer2.0”没有任何东西。

于 2012-10-07T08:38:51.983 回答