Open System Services Programmer's Guide
with 64-bit public DLLs and neutral DLLs. 32-bit applications can link with 32-bit public DLLs and
neutral DLLs.
ENOFT has been enhanced to display the data model.
enoft> filehdr
******** ELF File Header
Ident: ELF64-bit Big_Endian NSK
Type: Linkfile
Target Machine: IA64
...
Flags: (0x830000)
NO_SHARED_GLOBALIZED
Neutral DATA MODEL
Data Models for Object Files
Beginning with the H06.24 and J06.13 RVUs, the -set option for the eld linker has a new
attribute named data_model. The values allowed for this option are:
• ilp32 (Creates an object file that uses the ILP32 data model. All existing object files have
this data model.)
• lp64 (Creates an object file that uses the LP64 data model.)
• neutral (Creates an object file with an unspecified data model.)
By default, when eld links together a set of linkfiles:
• An error occurs if the set of input linkfiles contains both ILP32 and LP64 linkfiles.
• The data model of the output file is ILP32 if the input linkfiles are ILP32 linkfiles.
• The data model of the output file is LP64 if the input linkfiles are LP64 linkfiles.
If the -set data_model ilp32 (or lp64) option is given, then an error occurs if any of the
input linkfiles were compiled in the opposite data model. For example, if the -set data_model
ilp32 is specified, you cannot input LP64 linkfiles.
If the -set data_model neutral option is specified, then the output file is always marked
neutral, and the input linkfiles can contain both ILP32 and LP64 linkfiles. This is allowed when eld
is building a linkfile or a DLL; however, a program can never be neutral.
The -set data_model neutral option is always imposed if eld is building an implicit DLL.
See the eld Manual in the NTL for additional details of the -set data_model option
The eld linker attempts to find the public DLL registry file whenever it is creating a loadfile. The
public DLL registry file (zreg file) is built by the Public DLL Installation Tool (PLINSTL). PLINSTL is
run on NonStop systems by DSM/SCM whenever a new version of a public DLL is installed or
when an implicit DLL is rebuilt. All of the 32-bit, 64-bit, and neutral public DLL’s are listed in the
same zreg file. See the DLL Programmer’s Guide for TNS/E Systems in the NTL for additional
details about finding DLLs on TNS/E systems.
DLLs can be 32-bit, 64-bit or Neutral. The rules for loading 32-bit, 64-bit, and neutral DLLs are:
• A 64-bit DLL may only be loaded into a 64-bit process.
• A 32-bit DLL may only be loaded into a 32-bit process.
• A Neutral DLL may be loaded into either a 32-bit or a 64-bit process.
Neutral DLLs may depend only on other neutral DLLs.◦
◦ The Implicit DLLs are neutral.
◦ The Networking DLLs loaded by QIO are neutral.
See “Neutral Public DLLs” (page 293) for the list of neutral DLLs.
298 64-Bit Support in OSS and Guardian