Previous: GGC Roots, Up: Type Information
20.3 Source Files Containing Type Information
Whenever you add GTY
markers to a source file that previously
had none, or create a new source file containing GTY
markers,
there are three things you need to do:
- You need to add the file to the list of source files the type
machinery scans. There are four cases:
- For a back-end file, this is usually done
automatically; if not, you should add it to
target_gtfiles
in the appropriate port's entries in config.gcc. - For files shared by all front ends, add the filename to the
GTFILES
variable in Makefile.in. - For files that are part of one front end, add the filename to the
gtfiles
variable defined in the appropriate config-lang.in. For C, the file is c-config-lang.in. - For files that are part of some but not all front ends, add the
filename to the
gtfiles
variable of all the front ends that use it.
- For a back-end file, this is usually done
automatically; if not, you should add it to
- If the file was a header file, you'll need to check that it's included
in the right place to be visible to the generated files. For a back-end
header file, this should be done automatically. For a front-end header
file, it needs to be included by the same file that includes
gtype-lang.h. For other header files, it needs to be
included in gtype-desc.c, which is a generated file, so add it to
ifiles
inopen_base_file
in gengtype.c.For source files that aren't header files, the machinery will generate a header file that should be included in the source file you just changed. The file will be called gt-path.h where path is the pathname relative to the gcc directory with slashes replaced by -, so for example the header file to be included in cp/parser.c is called gt-cp-parser.c. The generated header file should be included after everything else in the source file. Don't forget to mention this file as a dependency in the Makefile!
For language frontends, there is another file that needs to be included somewhere. It will be called gtype-lang.h, where lang is the name of the subdirectory the language is contained in.