DLL Programmer's Guide for TNS/E Systems
Finding Symbol Definitions
DLL Programmer’s Guide for TNS/E Systems—527252-006
4-12
C++ Considerations: Globalized (Gblzd) Symbols
the loadfile itself. That range comprises the loadfile’s LibList, the loadfiles that those
loadfiles re-export, and so on.
C++ Considerations:
Globalized (Gblzd) Symbols
Constructs in the C++ language can generate symbols that might have multiple
definitions (for example, one in every compilation unit that includes a particular header
file). The compiler marks these symbols so that the linker can recognize them and pick
one definition for use throughout the resulting loadfile. The linker also marks them so
that the loader can recognize them and pick one definition for use throughout the
process.
Here are a few of the situations that give rise to such symbols:
Functions declared inline for which the compiler defines an out-of-line procedure
Elaborations of template functions or classes
Compiler-generated variable names used to identify types for run-time type
checking, including throw and catch of exceptions
The compiler generates these symbols as needed; programmer's cannot explicitly
define them in source.
For correct function of the C++ program and libraries, it is important that a single
definition be used throughout the process. For example, an exception can be thrown
and caught in different loadfiles only if they agree on the exception class type.
These special symbols are called globalized symbols, often abbreviated gblzd. The
overloading of the term globalized arises because these symbols unconditionally have
globalized semantics: the loader picks one definition for this symbol and binds all
references to it. It does so regardless of the import control for the referencing loadfile.
One must carefully distinguish the term globalized symbols (these symbols that
automatically get special treatment) from globalized import (selected by the user at link
time).
These gblzd symbols reside in a separate symbol table in PIC loadfiles.
Table 4-1. Import Control Summary
Option Range Sequence
-b globalized loadList of the program load sequence
-b semi_globalized loadList of the program current loadfile followed by
load sequence
-b localized within the loadfile’s loadList load sequence










