GCC-4.7.0导致的引导加载程序问题

GCC-4.7.0导致的引导加载程序问题,gcc,assembly,bootloader,Gcc,Assembly,Bootloader,这是一个奇怪的问题。我有一个用于MIPS 34Kc处理器的自定义引导加载程序,它一直在引导我的目标。这是用GCC-4.2.4编译的。最近我们转到了GCC-4.7.0,引导加载程序一直无法引导目标 优化如下所示: W_OPTS = -Wimplicit -Wformat -Werror CC_OPTS = -c -O -mips32r2 $(W_OPTS) -fomit-frame-pointer -fno-pic -nostdinc -mno-abicalls CC_OPTS_16

这是一个奇怪的问题。我有一个用于MIPS 34Kc处理器的自定义引导加载程序,它一直在引导我的目标。这是用GCC-4.2.4编译的。最近我们转到了GCC-4.7.0,引导加载程序一直无法引导目标

优化如下所示:

W_OPTS     = -Wimplicit -Wformat -Werror
CC_OPTS    = -c -O -mips32r2 $(W_OPTS) -fomit-frame-pointer -fno-pic -nostdinc -mno-abicalls
CC_OPTS_16 = -c -O -mips16   $(W_OPTS) -fomit-frame-pointer -fno-pic -nostdinc -mno-abicalls
CC_OPTS_A  = $(CC_OPTS) -D_ASSEMBLER_

任何调试此问题的指针都会很有帮助。

检查gcc-4.2.4和gcc-4.7.0生成的二进制文件中的部分。可能是引入了导致问题的某些部分。还要查看是否有任何内联asm,并再次检查它们是否正确。稍微错误的约束可能会产生好的或坏的代码,具体取决于环境。我正在目标上运行硬重启测试,可以看到,当我的代码使用-mno分支编译时,很可能会通过75次重启测试,而如果没有该选项,重启测试将在10次运行后失败;看来这和布纳钦有关。