Getting Past the 4 Gigabyte Barrier
Changes in Derived Types
Interoperability Issues
Large Files
Changes to stdio
Alignment Issues
Converting Applications to 64-bit
Frequently Asked Questions (FAQs)
Frequently Asked Questions (FAQs)
When to Use 64-bit for Applications
64-bit Arithmetic
Comparing 32-bit Interfaces and 64-bit Interfaces
Changes in Derived Types
64-bit Computing
Guidelines for Converting to LP64 Data Type Model
64-bit Arithmetic
Typical Performance and Problem Size Curve
Debugging 64-bit Applications
ELF and System Generation Tools
Interoperability Issues
Large Files
64-bit Libraries
When to Use 64-bit for Applications
Changes to stdio
Alignment Issues
Performance Issues
When to Use 64-bit for Applications
Frequently Asked Questions (FAQs)
System Call Issues
Compatibility Between 32-bit Applications and 64-bit Applications
64-bit Application Disadvantages
Converting Applications to 64-bit
amd64, i386, SPARC V9 ABI
Beyond Large Address Spaces
Address Space Layout of the SPARC V9 ABI
Algorithmic Changes
Alignment Issues
Address Space Layout for amd64 Applications
Alignment Issues
AMD64 ABI Features
Application Binaries
Compatibility Between 32-bit Applications and 64-bit Applications
Converting Applications to 64-bit
Implementing Single Source Code
Converting Applications to 64-bit
Application Source Code
Calling Convention Changes
Do Not Assume int and Pointers Are the Same Size
Use Casts to Show Your Intentions
Building FOSS on Oracle Solaris Systems
Changes in Derived Types
Check for Side Effects of Changes
Checklist for Converting to 64-bit
Code Models of the SPARC V9 ABI
Finding Errors With lint
Changes in Derived Types
Application Binaries
Application Source Code
Device Drivers
Changes in Derived Types
ioctl Does Not Type Check at Compile Time
Macros for Constants
Specify Constant Types
Converting Applications to 64-bit
Guidelines for Converting to LP64 Data Type Model
Calling Convention Changes
Algorithmic Changes
sizeof unsigned long in LP64
Beware of Implicit Declaration
Internal Data Structure Checking
Check Unions
Checklist for Converting to 64-bit
Check Format String Conversion Operations
Check Whether Literal Uses of long Still Make Sense
Compiling LP64 Programs
Use Pointer Arithmetic Instead of Integers
Sample 64-bit From 32-bit Program
Check for Side Effects of Changes
Sign Extension
Specify Constant Types
Use Casts to Show Your Intentions
Check for Derived Types That Have Grown in Size
libkvm and /dev/ksyms
libkvm and /dev/ksyms
sizeof unsigned long in LP64
Overview of the Data Model Differences
Placement of Text and Data of the SPARC V9 ABI
Typical Performance and Problem Size Curve
Debugging 64-bit Applications
Finding Errors With lint
Derived Types
AMD64 ABI Features
Finding Errors With lint
Device Drivers
Linking Object Files
ELF and System Generation Tools
EOVERFLOW Indicates System Call Issue
ELF
size_t Definition in _LP64
Fixed-Width Integer Types
libkstat Kernel Statistics
Check Format String Conversion Operations
Format String Macros
Building FOSS on Oracle Solaris Systems
sizeof unsigned long in LP64
ELF and System Generation Tools
Check for Derived Types That Have Grown in Size
Header Files
Implementing Single Source Code
Alignment Issues
32-bit
Beware of Implicit Declaration
Do Not Assume int and long Are the Same Size
Fixed-Width Integer Types
Limits of Integer Types
Internal Data Structure Checking
Interoperability Issues
Interprocess Communication
ioctl Does Not Type Check at Compile Time
Kernel Memory Readers
Building FOSS on Oracle Solaris Systems
large files
Large Files
Differences Between Derived Types Specific to Large Files
EOVERFLOW Indicates System Call Issue
Large Virtual Address Space
LD_LIBRARY_PATH Environment Variable
Building FOSS on Oracle Solaris Systems
Changes to stdio
libkstat Kernel Statistics
32-bit and 64-bit Libraries
64-bit Libraries
SPARC V9 ABI Features
Building FOSS on Oracle Solaris Systems
Changes to stdio
libkstat Kernel Statistics
Frequently Asked Questions (FAQs)
Getting Past the 4 Gigabyte Barrier
Limits of Integer Types
Changes to stdio
Changes to stdio
Frequently Asked Questions (FAQs)
Linking Object Files
Finding Errors With lint
64-bit
When to Use 64-bit for Applications
Guidelines for Converting to LP64 Data Type Model
Macros for Constants
Format String Macros
$ORIGIN Keyword
Finding Errors With lint
/proc Interface
/proc Restrictions
Application Naming Conventions
Building FOSS on Oracle Solaris Systems
Packaging Guidelines
Placement of Libraries and Programs
Performance Issues
Compiling LP64 Programs
Use Pointer Arithmetic Instead of Integers
Helpful Types Such as unintptr_t
When to Use 64-bit for Applications
Helpful Types Such as unintptr_t
Finding Errors With lint
Sign Extension
Sign Extension
Sign Extension
Fixed-Width Integer Types
Implementing Single Source Code
Converting Applications to 64-bit
sizeof unsigned long in LP64
Alignment Issues
Address Space Layout of the SPARC V9 ABI
Alignment Issues
Code Models of the SPARC V9 ABI
Placement of Text and Data of the SPARC V9 ABI
SPARC V9 ABI Features
Stack Bias
Application Binary Interfaces
Overview of the Data Model Differences
Changes to stdio
Changes to stdio
Header Files
Feature Test Macros
Extensions to sysinfo System Call
System Call Issues
EOVERFLOW Indicates System Call Issue
ioctl Does Not Type Check at Compile Time
Placement of Text and Data of the SPARC V9 ABI
Changes in Derived Types
Derived Types
libkstat Kernel Statistics
Building FOSS on Oracle Solaris Systems
Helpful Types Such as unintptr_t
Check Unions
Fixed-Width Integer Types
Check for Derived Types That Have Grown in Size
Check for Derived Types That Have Grown in Size
Large Virtual Address Space
Getting Past the 4 Gigabyte Barrier