将gcc移植到新目标

时间:2014-06-19 11:13:22

标签: c gcc compiler-construction backend

我正在尝试将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。对不起,如果我不清楚,我会详细说明是否仍然不清楚。

1 个答案:

答案 0 :(得分:1)

您需要确保您的交叉编译器本身是使用-g选项编译的,因此它中包含调试符号。然后运行gdb myprocessor-gcc test.c以查看编译器中发生分段错误的位置。您将需要学习一些gdb命令,如runwhere