Go to main content
oracle home
Oracle
®
Solaris 64-bit Developer's Guide
Exit Print View
Search Term
Search Scope:
This Document
Entire Library
» ...
Documentation Home
»
Oracle Solaris 11.3 Information Library
»
Oracle
®
Solaris 64-bit ...
»
Index Numbers and Symbols
Updated: March 2019
Oracle
®
Solaris 64-bit Developer's Guide
Document Information
Using This Documentation
Product Documentation Library
Feedback
Chapter 1 64-Bit Computing
1.1 Getting Past the 4 Gigabyte Barrier
1.2 Beyond Large Address Spaces
Chapter 2 When to Use 64-Bit for Applications
2.1 Major Features of 64-Bit Development Environment
2.1.1 Large Virtual Address Space
2.1.2 Large Files
2.1.3 64-Bit Arithmetic
2.1.4 System Limitations Removed
2.2 Interoperability Issues
2.2.1 Kernel Memory Readers
2.2.2 /proc Restrictions
2.2.3 64-Bit Libraries
2.3 Estimating the Effort of 64-Bit Conversion
Chapter 3 Comparing 32-Bit Interfaces and 64-Bit Interfaces
3.1 Application Programming Interfaces
3.2 Application Binary Interfaces
3.3 Compatibility Between 32-Bit Applications and 64-Bit Applications
3.3.1 Application Binaries
3.3.2 Application Source Code
3.3.3 Device Drivers
3.4 Show That 64-Bit and 32-Bit Applications Run on Your Oracle Solaris 11 System
Chapter 4 Converting Applications
4.1 Overview of the Data Model Differences
4.2 Implementing Single Source Code
4.2.1 Feature Test Macros
4.2.2 Derived Types
4.2.3 sys/types.h Header File
4.2.4 inttypes.h Header File
4.2.4.1 Fixed-Width Integer Types
4.2.4.2 Helpful Types Such as unintptr_t
4.2.4.3 Constant Macros
4.2.4.4 Limits in inttypes.h
4.2.4.5 Format String Macros
4.3 Finding Errors With lint
4.4 Guidelines for Converting to LP64 Data Type Model
4.4.1 Do Not Assume int and Pointers Are the Same Size
4.4.2 Do Not Assume int and long Are the Same Size
4.4.3 Sign Extension
4.4.4 Use Pointer Arithmetic Instead of Integers
4.4.5 Internal Data Structures
4.4.6 Check Unions
4.4.7 Specify Constant Types
4.4.8 Beware of Implicit Declaration
4.4.9 sizeof unsigned long in LP64
4.4.10 Use Casts to Show Your Intentions
4.4.11 Check Format String Conversion Operation
4.4.12 Compiling LP64 Programs
4.5 Other Considerations When Converting to 64-bit
4.5.1 Check for Derived Types That Have Grown in Size
4.5.2 Check for Side Effects of Changes
4.5.3 Check Whether Literal Uses of long Still Make Sense
4.5.4 Check Use #ifdef for Explicit 32-Bit Versus 64-Bit Prototypes
4.5.5 Calling Convention Changes
4.5.6 Algorithmic Changes
4.6 Checklist for Converting to 64-bit
4.7 Sample 64-Bit From 32-Bit Program
Chapter 5 64-Bit Development Environment
5.1 64-Bit Build Environment
5.1.1 64-Bit Header Files
5.1.2 32-Bit and 64-Bit Libraries
5.2 Linking Object Files
5.2.1 LD_LIBRARY_PATH Environment Variable
5.2.2 $ORIGIN Keyword
5.3 Packaging 32-Bit and 64-Bit Applications
5.3.1 Placement of Libraries and Programs
5.3.2 Packaging Guidelines
5.3.3 Application Naming Conventions
5.4 Debugging 64-Bit Applications
Chapter 6 Advanced Topics
6.1 SPARC V9 ABI Features
6.1.1 Stack Bias
6.1.2 Address Space Layout of the SPARC V9 ABI
6.1.3 Placement of Text and Data of the SPARC V9 ABI
6.1.4 Code Models of the SPARC V9 ABI
6.2 AMD64 ABI Features
6.2.1 Address Space Layout for amd64 Applications
6.3 Alignment Issues
6.4 Interprocess Communication
6.5 ELF and System Generation Tools
6.6 /proc Interface
6.7 Extensions to sysinfo() System Call
6.8 libkvm and /dev/ksyms
6.9 libkstat Kernel Statistics
6.10 Changes to stdio
6.11 Building FOSS on Oracle Solaris Systems
6.12 Performance Issues
6.12.1 64-Bit Application Advantages
6.12.2 64-Bit Application Disadvantages
6.13 System Call Issues
6.13.1 EOVERFLOW Indicates System Call Issue
6.13.2 ioctl() Does Not Type Check at Compile Time
Appendix A Changes in Derived Types
Appendix B Frequently Asked Questions (FAQ)
Index
Index Numbers and Symbols
Index A
Index C
Index D
Index E
Index F
Index G
Index H
Index I
Index K
Index L
Index M
Index O
Index P
Index S
Index T
Index U
Index V
Language:
English
Index
Numbers and Symbols
32-bit
4GB barrier
Getting Past the 4 Gigabyte Barrier
APIs
Application Programming Interfaces
compilation environment
Changes in Derived Types
interoperability with 64-bit
Interoperability Issues
large files and
Large Files
limited to 256 open streams
Changes to stdio
number alignment on different platforms
Alignment Issues
32-bit applications
converting to 64-bit
Converting Applications
on 64-bit hardware
Frequently Asked Questions (FAQ)
packaging
Packaging 32-Bit and 64-Bit Applications
year 2038 limit
Frequently Asked Questions (FAQ)
64-bit
application developers and
When to Use 64-Bit for Applications
arithmetic
64-Bit Arithmetic
comparing with 32-bit
Comparing 32-Bit Interfaces and 64-Bit Interfaces
compilation environment
Changes in Derived Types
computing
64-Bit Computing
conversion guidelines
Guidelines for Converting to LP64 Data Type Model
CPU hardware and
64-Bit Arithmetic
database advantages
Typical Performance and Problem Size Curve
debugging applications
Debugging 64-Bit Applications
development environment
64-Bit Development Environment
Major Features of 64-Bit Development Environment
ELF64 format
ELF and System Generation Tools
interfaces
Comparing 32-Bit Interfaces and 64-Bit Interfaces
interoperability with 32-bit
Interoperability Issues
large files and
Large Files
libraries
64-Bit Libraries
long type and
When to Use 64-Bit for Applications
more than 256 open streams
Changes to stdio
number alignment on different platforms
Alignment Issues
performance issues
Performance Issues
pointers and
When to Use 64-Bit for Applications
requires 64-bit hardware
Frequently Asked Questions (FAQ)
system call issues
System Call Issues
64-bit applications
advantages
64-Bit Application Advantages
Beyond Large Address Spaces
compatibility with 32-bit
Compatibility Between 32-Bit Applications and 64-Bit Applications
disadvantages
64-Bit Application Disadvantages
from 32-bit
Converting Applications
packaging
Packaging 32-Bit and 64-Bit Applications
A
ABIs
See
amd64, i386, SPARC V9 ABI
address space layout
amd64 ABI
Address Space Layout for amd64 Applications
protection through randomization
Beyond Large Address Spaces
SPARC V9 ABI
Address Space Layout of the SPARC V9 ABI
algorithm changes when converting code to 64-bit
Algorithmic Changes
alignment
numbers on different platforms
Alignment Issues
amd64 ABI
address space layout
Address Space Layout for amd64 Applications
alignment of 32-bit and 64-bit numbers
Alignment Issues
features
AMD64 ABI Features
applications
binary compatibility
Application Binaries
compatibility of 64-bit and 32-bit
Compatibility Between 32-Bit Applications and 64-Bit Applications
converting to 64-bit
Converting Applications
implementing single source for 32-bit and 64-bit
Implementing Single Source Code
maintaining single source for 32-bit and 64-bit
Converting Applications
source code compatibility
Application Source Code
C
calling convention changes in 64-bit code
Calling Convention Changes
casts
64-bit guidelines
Do Not Assume int and Pointers Are the Same Size
conversion guidelines
Use Casts to Show Your Intentions
CFLAGS
flag
Building FOSS on Oracle Solaris Systems
changes in derived types
_ILP32
and
_LP64
Changes in Derived Types
checking for side effects during conversion
Check for Side Effects of Changes
checklist for converting code to 64-bit
Checklist for Converting to 64-bit
code models
SPARC V9 ABI
Code Models of the SPARC V9 ABI
coding
detecting errors with
lint
Finding Errors With lint
comparing
compilation environments
Changes in Derived Types
compatibility
application binaries
Application Binaries
application source code
Application Source Code
device drivers
Device Drivers
compilation environments
comparing
Changes in Derived Types
ioctl()
and
ioctl Does Not Type Check at Compile Time
constant macros
Constant Macros
constant types
conversion guidelines
Specify Constant Types
converting
32-bit to 64-bit
Converting Applications
64-bit guidelines
Guidelines for Converting to LP64 Data Type Model
calling convention changes
Calling Convention Changes
checking for algorithm changes
Algorithmic Changes
checking for data loss
sizeof unsigned long in LP64
checking for implicit declarations
Beware of Implicit Declaration
checking internal data structures
Internal Data Structures
checking unions
Check Unions
checklist
Checklist for Converting to 64-bit
format strings
Check Format String Conversion Operation
long type and
Check Whether Literal Uses of long Still Make Sense
performance issues
Compiling LP64 Programs
pointer arithmetic and
Use Pointer Arithmetic Instead of Integers
sample 32-bit and 64-bit program
Sample 64-Bit From 32-Bit Program
side effects
Check for Side Effects of Changes
sign extension and
Sign Extension
specifying constant types
Specify Constant Types
using casts
Use Casts to Show Your Intentions
utmp
and
utmpx
access issues
Check for Derived Types That Have Grown in Size
D
/dev/ksyms
device
libkvm and /dev/ksyms
/dev/mem
device
libkvm and /dev/ksyms
data loss
conversion guidelines
sizeof unsigned long in LP64
data models
differences between 64-bit and 32-bit
Overview of the Data Model Differences
ILP32
Overview of the Data Model Differences
LP64
Overview of the Data Model Differences
data placement in SPARC V9 ABI
Placement of Text and Data of the SPARC V9 ABI
database
advantage of 64-bit system
Typical Performance and Problem Size Curve
debugging
64-bit applications
Debugging 64-Bit Applications
lint
command
Finding Errors With lint
derived types
Derived Types
describing
amd64 ABI
AMD64 ABI Features
detecting errors
lint
command
Finding Errors With lint
device drivers
64-bit and 32-bit
Device Drivers
E
ELF
result from
ld
Linking Object Files
system generation tools and
ELF and System Generation Tools
EOVERFLOW return value
EOVERFLOW Indicates System Call Issue
Executable and Linking Format
See
ELF
F
FAQ
Frequently Asked Questions (FAQ)
feature test macros
distinguishing data models
Changes in Derived Types
Check Use #ifdef for Explicit 32-Bit Versus 64-Bit Prototypes
examples
size_t Definition in _LP64
fixed-width integer types
Fixed-Width Integer Types
fixed-width statistic types
libkstat Kernel Statistics
format strings
conversion guidelines
Check Format String Conversion Operation
macros
Format String Macros
Free and Open Source Software (FOSS)
building components in Oracle Solaris
Building FOSS on Oracle Solaris Systems
functions
getutxent()
Check for Derived Types That Have Grown in Size
sizeof()
sizeof unsigned long in LP64
G
GELF
64-bit and 32-bit ELF interfaces
ELF and System Generation Tools
getutxent()
function
Check for Derived Types That Have Grown in Size
H
header files
changes for 64-bit
64-Bit Header Files
inttypes.h
Implementing Single Source Code
stdio.h
Overview of the Data Model Differences
sys/feature_tests.h
Differences Between Derived Types Specific to Large Files
Changes in Derived Types
sys/isa_defs.h
64-Bit Header Files
Feature Test Macros
sys/types.h
Changes in Derived Types
Implementing Single Source Code
I
i386 ABI
alignment of 32-bit and 64-bit numbers
Alignment Issues
ILP32
See Also
32-bit
data model
Changes in Derived Types
Overview of the Data Model Differences
implicit declarations
conversion guidelines
Beware of Implicit Declaration
int type
conversion guidelines
Do Not Assume int and long Are the Same Size
integer types
Fixed-Width Integer Types
limits
Limits in inttypes.h
internal data structures
conversion guidelines
Internal Data Structures
interoperability
64-bit and 32-bit
Interoperability Issues
interprocess communication
primitives
Interprocess Communication
inttypes.h
header file
inttypes.h Header File
Implementing Single Source Code
ioctl()
system call
64-bit and 32-bit differences
ioctl Does Not Type Check at Compile Time
isainfo(1)
Show That 64-Bit and 32-Bit Applications Run on Your Oracle Solaris 11 System
isainfo
command
Show That 64-Bit and 32-Bit Applications Run on Your Oracle Solaris 11 System
K
kernel memory readers
Kernel Memory Readers
L
/lib/64
library path
Building FOSS on Oracle Solaris Systems
Large Files
See
large files
large files
applications and
Large Files
differences between derived types
Differences Between Derived Types Specific to Large Files
EOVERFLOW error
EOVERFLOW Indicates System Call Issue
large virtual address space
definition
Large Virtual Address Space
LD_LIBRARY_PATH
environment variable
LD_LIBRARY_PATH Environment Variable
LDFLAGS
flag
Building FOSS on Oracle Solaris Systems
libc
library
Changes to stdio
libkstat
library
libkstat Kernel Statistics
libkvm
library
libkvm and /dev/ksyms
Kernel Memory Readers
libraries
32-bit and 64-bit
32-Bit and 64-Bit Libraries
64-bit
64-Bit Libraries
different for 32-bit and 64-bit
SPARC V9 ABI Features
FOSS components, for
Building FOSS on Oracle Solaris Systems
libc
Changes to stdio
libkstat
libkstat Kernel Statistics
libkvm
libkvm and /dev/ksyms
Kernel Memory Readers
not combining 32-bit and 64-bit
Frequently Asked Questions (FAQ)
shared
32-Bit and 64-Bit Libraries
limits
4GB barrier on 32-bit
Getting Past the 4 Gigabyte Barrier
integer types
Limits in inttypes.h
open streams
Changes to stdio
stdio
streams
Changes to stdio
year 2038 for 32-bit applications
Frequently Asked Questions (FAQ)
linking
using
ld
link-editor
Linking Object Files
lint
command
detecting porting errors
Finding Errors With lint
long type
conversion guidelines
Check Whether Literal Uses of long Still Make Sense
Do Not Assume int and long Are the Same Size
LP64
See Also
64-bit
application developers and
When to Use 64-Bit for Applications
data model
Changes in Derived Types
Overview of the Data Model Differences
guidelines for converting to
Guidelines for Converting to LP64 Data Type Model
M
macros
constants, for
Constant Macros
feature test
size_t Definition in _LP64
Changes in Derived Types
Check Use #ifdef for Explicit 32-Bit Versus 64-Bit Prototypes
format string
Format String Macros
O
$ORIGIN
keyword
$ORIGIN Keyword
Oracle Developer Studio
lint
command
Finding Errors With lint
P
/proc interface
64-bit and 32-bit
/proc Interface
restrictions
/proc Restrictions
/proc
interface
compilation requirement
Frequently Asked Questions (FAQ)
Application Binaries
debugging tools
Debugging 64-Bit Applications
When to Use 64-Bit for Applications
packaging
application naming conventions
Application Naming Conventions
FOSS components
Building FOSS on Oracle Solaris Systems
guidelines
Packaging Guidelines
library and program placement
Placement of Libraries and Programs
performance
64-bit issues
Performance Issues
conversion guidelines
Compiling LP64 Programs
pointer arithmetic
Use Pointer Arithmetic Instead of Integers
pointer types
Helpful Types Such as unintptr_t
pointers
32-bit and 64-bit difference
When to Use 64-Bit for Applications
guidelines for 64-bit
Do Not Assume int and long Are the Same Size
Do Not Assume int and Pointers Are the Same Size
helpful types
Helpful Types Such as unintptr_t
porting code
detecting errors with
lint
Finding Errors With lint
S
sign extension
conversion
Sign Extension
conversion rules and
Sign Extension
integral promotion
Sign Extension
signed integer types
Fixed-Width Integer Types
single source code
example
Sample 64-Bit From 32-Bit Program
implementing for 32-bit and 64-bit
Implementing Single Source Code
maintaining for 32-bit and 64-bit
Converting Applications
sizeof()
function
sizeof unsigned long in LP64
SPARC V8 ABI
alignment of 32-bit and 64-bit numbers
Alignment Issues
SPARC V9 ABI
address space layout
Address Space Layout of the SPARC V9 ABI
alignment of 32-bit and 64-bit numbers
Alignment Issues
code model
Code Models of the SPARC V9 ABI
data and text placement
Placement of Text and Data of the SPARC V9 ABI
features
SPARC V9 ABI Features
stack bias
Stack Bias
versions
Application Binary Interfaces
stdio.h
header file
Overview of the Data Model Differences
stdio
changes to
Changes to stdio
streams
limits to
Changes to stdio
sys/feature_tests.h
header file
Changes in Derived Types
sys/feature_tests.h
header file
Differences Between Derived Types Specific to Large Files
sys/isa_defs.h
header file
64-Bit Header Files
sys/isa_defs.h
header file
Feature Test Macros
sys/types.h
header file
Changes in Derived Types
sys/types.h
header file
sys/types.h Header File
Implementing Single Source Code
sysinfo()
extensions to
Extensions to sysinfo System Call
system calls
64-bit and 32-bit differences
System Call Issues
EOVERFLOW meaning
EOVERFLOW Indicates System Call Issue
ioctl()
difference between 64-bit and 32-bit
ioctl Does Not Type Check at Compile Time
T
text placement in SPARC V9 ABI
Placement of Text and Data of the SPARC V9 ABI
types
changes in derived between
_ILP32
and
_LP64
Changes in Derived Types
derived
Derived Types
U
/usr/lib/64
library path
Building FOSS on Oracle Solaris Systems
uintptr_t pointer type
Helpful Types Such as unintptr_t
unions
conversion guidelines
Check Unions
unsigned integer types
Fixed-Width Integer Types
utmp
file
conversion guidelines
Check for Derived Types That Have Grown in Size
utmpx
file
conversion guidelines
Check for Derived Types That Have Grown in Size
V
virtual address space
18 exabytes
Large Virtual Address Space
32-bit applications
Getting Past the 4 Gigabyte Barrier
large
Large Virtual Address Space
Previous