2.3.3 /Gt

/Gt specifies the maximum size of data objects that can be included in the shared global section. Such objects can be addressed using faster code sequences because they are addressed relative to a fixed global pointer (which is always available in the Alpha AXP register R29).

A global section can only be used in a main program. Object modules that are included in a DLL (dynamic-link library) can neither use nor modify the global pointer register established for the main program. Such modules must be compiled using /Gt0 (which is the default). Object modules that define initialized storage for global variables and are linked into an executable image rather than a DLL must generally be compiled with a /Gt value at least as large as the /Gt value used when compiling modules that refer to the global data. For this reason, compiling even with very small non-zero /Gt can sometimes cause link errors when linking with object module libraries rather than DLL's (e.g. if the library was compiled with /Gt0).

At most 64K bytes of object storage can be allocated in the global section. If more that this amount of storage is detected during linking, then some of the modules involved must be re-compiled using a smaller threshold, typically /Gt0. It follows that no single object module can require more than 64K bytes by itself; this error is detected during compilation.