Before migrating applications, consider the following:
The sizes of the long, pointer and wchar_t types
are different under LP64 than they are under ILP32. You must check
application behavior, especially if the logic depends on data size.
Data model differences can result in unexpected behavior at execution
time. Under LP64, the size of pointers and long data type are 8 bytes
long. This can lead to conversion or truncation problems.
A migration issue can exist if the program assumes that int, long and pointer type
are all the same size. The number of cases where program logic relies
on this assumption varies from application to application, depending
on the coding style and functionality of the application.
Note: Most unexpected behaviors occur at the
limits of a type's value range.
32-bit applications that rely implicitly on internal
data representations (for example, those that cast a float pointer
to an integer pointer, then manipulate the bit patterns directly and
encode such knowledge directly into the program logic) can be difficult
to migrate. In this case, certain assumptions are made about the internal
structure of a float representation and the size of int.
Code must be checked to ensure that any shifting and masking operations
that manipulate long integers still work properly with a 64-bit long.
Input and output file dependencies are relevant when you migrate
an application that is in the middle of a pipeline of applications,
where each application reads the previous application's output as
input, and then passes its output to the next application in the pipe.
Before migrating one of these applications to a 64-bit environment,
you must verify that the output will not produce values outside of
the 32-bit range. Typically, once an application is ported to a 64-bit
environment, all downstream applications (that is, any application
that depends on output from the ported application) must be ported
to a 64-bit environment.
Extending functions is sometimes included as part of a migration
project to exploit the benefit and to justify the cost of migrating
to a 64-bit environment. You might have to change code for using expanded
limits after extending functions.
You cannot mix 32-bit and 64-bit object files during binding.
The only object file format supported under LP64 bit is GOFF, and
the only linkage convention is XPLINK.