The rules for mangled names for variables and typed constants are as follows:
- All variable names are converted to upper case.
- Variables in the main program or private to a unit have an underscore (_) prepended
to their names.
- Typed constants in the main program have a TC__ prepended to their names.
- Public variables in a unit have their unit name prepended to them : U_UNITNAME_
- Public and private typed constants in a unit have their unit name prepended to them
:TC__UNITNAME$$
- Do not use public names that start with FPC_, because FPC uses these for internal
system routines and constants.
Examples:
unit testvars;
interface
const
publictypedconst : integer = 0;
var
publicvar : integer;
implementation
const
privatetypedconst : integer = 1;
var
privatevar : integer;
end.
Will result in the following assembler code for the gnu assembler :
.file "testvars.pas"
.text
.data
# [6] publictypedconst : integer = 0;
.globl TC__TESTVARS$$_PUBLICTYPEDCONST
TC__TESTVARS$$_PUBLICTYPEDCONST:
.short 0
# [12] privatetypedconst : integer = 1;
TC__TESTVARS$$_PRIVATETYPEDCONST:
.short 1
.bss
# [8] publicvar : integer;
.comm U_TESTVARS_PUBLICVAR,2
# [14] privatevar : integer;
.lcomm _PRIVATEVAR,2