我正在尝试将gcc移植到新目标。目标是一个新的处理器,我们用完整的指令集设计我们自己。我们希望能够在gcc中为我们的新处理器编译c代码。为了能够实现这一目标,我们需要为这个特定目标移植gcc。我已经阅读了一些gcc文档如何做到这一点。到目前为止,我已经编辑/攻击了gcc的现有目标并将其用于我们的目标,这意味着gcc将为我们的特定处理器生成汇编代码。所以我使用gcc为这个新目标编译gcc。然后gcc将生成一个编译器myprocessor-gcc。该编译器将能够为我们的目标生成汇编代码。通过使用我的编译器,使用以下内容将其提供:
myprocessor-gcc test.c
test.c看起来像:
void __main(void);
void main(void)
{
return;
}
void __main(void)
{
int i = 0;
int i2 = 1;
int i3 = 2;
i = i2+i3;
return;
}
gcc能够编译此代码并生成我期望的正确汇编语言。
所以我详细说明了我的测试功能:
void __main(void)
{
int i = 0;
int i2 = 1;
int i3 = 2;
int i4 = 3;
i = i2+i3+i4;
return;
}
之后gcc给我一个分段错误。我想调试这个分段错误,我需要gcc可以给我的所有调试打印。所以当我输入:
myprocessor-gcc test.c -g
我想看一些调试打印,以便我可以在内部调试gcc。对不起,如果我不清楚,我会详细说明是否仍然不清楚。
答案 0 :(得分:1)
您需要确保您的交叉编译器本身是使用-g
选项编译的,因此它中包含调试符号。然后运行gdb myprocessor-gcc test.c
以查看编译器中发生分段错误的位置。您将需要学习一些gdb命令,如run
和where
。