This is an additional UNIT
which gives extra information
about linking.
The name id shall be used (but not exported, i.e. static)
to identify the definition for subsequent linking.
This construction is likely to be needed for profiling, so that
useful names appear for statically defined objects. It may also be
needed when C++ is translated into C, in order to identify global
initialisers.
This
Part of the TenDRA Web.6.1.1. make_linkinfos
Encoding number: 0
no_labels: TDFINT
tds: SLIST(LINKINFO)
-> LINKINFO_PROPS
Makes the UNIT
.
6.2. LINKINFO
Number of encoding bits: 2
Is coding extendable: yes6.2.1. static_name_def
Encoding number: 1
assexp: EXP POINTER x
id: TDFSTRING(k, n)
-> LINKINFO
assexp will be an obtain_tag construction which refers
to a TAG
which is defined with make_id_tagdef,
make_var_tagdef or common_tagdef. This TAG
will not be linked to an EXTERNAL
.
6.2.2. make_comment
Encoding number: 2
n: TDFSTRING(k, n)
-> LINKINFO
n shall be incorporated into the object file as a comment,
if this facility exists. Otherwise the construct is ignored.
6.2.3. make_weak_defn
Encoding number: 3
namer: EXP POINTER x
val: EXP POINTER y
-> LINKINFO
namer and val will be obtain_tag constructions
which refer to TAG
s which are defined with
make_id_tagdef, make_var_tagdef or common_tagdef.
They shall be made synonymous.
6.2.4. make_weak_symbol
Encoding number: 4
id: TDFSTRING(k, n)
val: EXP POINTER x
-> LINKINFO
val will be an obtain_tag construction which refers
to a TAG
which is defined with make_id_tagdef,
make_var_tagdef or common_tagdef.
TAG
shall be made weak (in the same sense
as in the SVID ABI Symbol Table), and id shall be synonymous
with it.
Crown
Copyright © 1998.