Next: , Previous: GGC Roots, Up: Type Information


22.3 包含类型信息的源文件

只要向之前没有GTY标记的源文件里添加GTY标记,或者创建一个新的包含GTY标记的源文件,那么就有三件事情需要做:

  1. 需要将文件添加到类型机构需要扫描的源文件列表中。有四种情况:
    1. 对于一个后端文件,通常会自动完成。如果没有,则需要将其添加到config.gcc里的适当port条目target_gtfiles中。
    2. 对于所用前端共享的文件,将文件名添加到Makefile.in里的GTFILES变量中。
    3. 对于一个前端的文件,将文件名添加到在适当config-lang.in里定义的gtfiles变量中。对于C,文件为c-config-lang.in
    4. 对于一些而不是所有的前端的文件,将文件名添加到所有使用它的前端的gtfiles变量中。
  2. 如果是头文件,则需要检查是否被包含在正确的位置,使得对于生成文件为可见的。对于一个后端文件,这应该是自动完成的。对于前端的头文件,应该被包含gtype-lang.h的同一文件所包含。对于其它头文件,需要被包含在gtype-desc.c中。gtype-desc.c为生成文件,所以需要将头文件名添加到gengtype.c 里的open_base_file里的ifiles中。

    对于不是头文件的源文件,类型机构将会生成一个头文件,并且该头文件应该被包含在所修改的源文件中。文件名为 gt-path.h,其中path是相对于gcc目录的路径名,并且由-来替换斜线。例如,要被包含在cp/parser.c中的头文件命名为gt-cp-parser.c。生成的头文件应该被包含在源文件所有其它内容之后。不要忘记将该文件在Makefile中作为一个依赖条件!

对于语言前端,还有另一个文件需要在某处被包含。其为gtype-lang.h,其中lang是语言子目录的名字。

Plugins can add additional root tables. Run the gengtype utility in plugin mode as gengtype -P pluginout.h source-dir file-list plugin*.c with your plugin files plugin*.c using GTY to generate the pluginout.h file. The GCC build tree is needed to be present in that mode.