Sun Microsystems, Inc.
spacerspacer
spacer www.sun.com docs.sun.com |
spacer
black dot
 
 
  Previous   Contents   Next 
   
 
Appendix B

Frequently Asked Questions (FAQs)

How can I tell if my system is running the 32-bit or the 64-bit version of the operating system?

You can determine what applications the operating system can run using the isainfo -v command. It displays the set of applications supported by the operating system. See the isainfo(1) man page for more information.

Can I run the 64-bit version of the operating system on 32-bit hardware?

No. It is not possible to run the 64-bit operating system on 32-bit hardware. The 64-bit operating system requires 64-bit MMU and CPU hardware.

Do I need to change my 32-bit application if I plan to run that application on a system with a 32-bit operating system?

No. Your application does not require changes or recompilation if it is being executed only on a system running the 32-bit operating system.

Do I need to change my 32-bit application if I plan to run that application on a system with the 64-bit operating system?

Most applications can remain 32-bit and still execute on a system running the 64-bit operating system without requiring code changes or recompilation. Those 32-bit applications not requiring 64-bit capabilities can remain 32-bit to maximize portability.

If your application useslibkvm(3LIB) , it must be recompiled as 64-bit, to execute on a system running the 64-bit operating system. If your application uses /proc, it might need to be recompiled as 64-bit; otherwise it cannot understand a 64-bit process. This is because the existing interfaces and data structures that describe the process are not large enough to contain the 64-bit quantities involved.

What program do I need to invoke in order to get the 64-bit capabilities?

No program is available that specifically invokes 64-bit capabilities. In order to take advantage of the 64-bit capabilities of your system running the 64-bit version of the operating system, you need to rebuild your applications using the -xarch=v9 option of the C compiler or assembler.

Can I build a 32-bit application on a system running the 64-bit operating system?

Yes. Both native and cross-compilation modes are supported. The default compilation mode is 32-bit, whether on a system running the 32-bit or 64-bit version of the operating system.

Can I build a 64-bit application on a system running the 32-bit operating system?

Yes, provided you have the 64-bit library packages installed. However, it is not possible to run the 64-bit application on a system running the 32-bit operating system.

Can I combine 32-bit libraries and 64-bit libraries when building and linking applications?

No. 32-bit applications must link with 32-bit libraries and 64-bit applications with 64-bit libraries. Attempts to build or link with the wrong version of a library will result in an error.

What are the sizes of floating point data types in the 64-bit implementation?

The only types that have changed are long and pointer. See Table 4-1.

What about time_t?

The time_t type remains a long quantity. In the 64-bit environment, this grows to a 64-bit quantity. Thus, 64-bit applications will be year 2000 safe and year 2038 safe.

What happened to sys_errlist[] and sys_nerr in the 64-bit libc(3LIB)?

These symbols are not visible to 64-bit applications, though they have been retained in the 32-bit libc(3LIB) for 32-bit binary compatibility.

In the past, applications have used the sys_errlist[] array to convert the errno values returned by system calls into printable strings. The use of this undocumented interface causes portability problems, and constrains the future evolution of the Solaris operating environment.

The solution is to use the documented, standard API strerror(3C) for both 32-bit and 64-bit applications. Additionally, strerror() has the advantage of automatically returning appropriately localized strings.

Why won't malloc(3C) return more than 2 gigabytes?

The default soft limit for the resource that controls the size of an application data segment is 2 gigabytes. If the application needs to allocate more space, then the shell can be used to raise or remove the limit entirely. For csh use:

% limit datasize unlimited

or for sh, ksh:

$ ulimit -d unlimited

Where is the 64-bit libc.a?

There are no archive versions of 64-bit libraries.

What is the value of uname(1) on a machine running the 64-bit Solaris operating environment?

The output of the uname -p command on an UltraSPARC is unchanged: sparc.

Can I create 64-bit XView or OLIT Applications?

No. These libraries are already obsolete for the 32-bit environment and will not be carried forward to the 64-bit environment.

Why is there a 64-bit version of ls in /usr/bin/sparcv9/ls?

In normal operation, there is no need for a 64-bit version of ls. However, since you can create file system objects in /tmp and /proc that are "too large" for 32-bit ls to understand, the 64-bit version of ls adds information to assist users.

 
 
 
  Previous   Contents   Next