假设目前需要在i386平台上增加一个自定选项-mytest,该选项的值可以是0或者1,可以按照如下步骤进行添加。
1. 修改gcc/config/i386/i386.opt文件,在文件末尾添加选项-mytest的声明。
mytest
Target Var(MY_TEST_OPTION) Save
该定义表示声明一个选项-mytest,其中Target表示该选项是一个目标机器相关的选项,Var(MY_TEST_OPTION)表示该选项的值在代码中会使用变量MY_TEST_OPTION保存,Save表示gcc在解析该选项时会使用cl_target_option结构体来保存该选项的值。
关于选项的声明请参考《GNU Compiler Collection (GCC) Internals》Chapter 7: Option specification file。
2. -mytest选项的使用
我们可以在gcc/toplev.c的process_options()函数中添加一句测试语句。
printf("TEST OPTION = %d\n", MY_TEST_OPTION);
该语句中使用的变量名称MY_TEST_OPTION就是上述第一步声明的选项变量
3. 测试
为了测试该选项是否已经添加成功,需要重新编译gcc源代码。
[root@localhost gcc]# ./xgcc -S -o test.s test.c
TEST OPTION = 0
[root@localhost gcc]# ./xgcc -S -o test.s test.c -mytest
TEST OPTION = 1
可以看到,我们定义的语句可以正常的使用该选项了。