Index

– non_shared option
Position-Independent Coding in Assembly Language

–ansi option
General Options for Compiler Drivers

–Bsymbolic, compiling
Compiling with –Bsymbolic

–cckr option
General Options for Compiler Drivers

–g option
General Options for Compiler Drivers

–KPIC
See also drivers
Position-Independent Coding in Assembly Language

–KPIC option
Position-Independent Code
General Options for Compiler Drivers

–O0 compiler option
Compiler Optimization Options

–O1 compiler option
Compiler Optimization Options

–O2 compiler option
Compiler Optimization Options

–O3 compiler option
Compiler Optimization Options
example
Examples of Full Optimization

–xansi option
General Options for Compiler Drivers

a.out files
Linking

accom_mp preprocessor
About the Compiler System

acpp preprocessor
About the Compiler System

Ada
optimization
Adaź Programs

address space
Dynamic Loading Under Program Control

addresses, optimization
Example of Pointer Placement and Aliasing

aliasing, optimization
C Programs Only

analyzer, parallel
About the Compiler System

ar command
command syntax
ar Syntax
options
Archiver Options

ar command
Using the Archiver to Create Libraries

archive libraries
Dynamic Shared Objects

archiver. See ar command
Using the Archiver to Create Libraries

as1 assembler
Linking Assembly Language Programs
About the Compiler System

assembler
About the Compiler System
Position-Independent Coding in Assembly Language

assembly language programs
linking
Linking Assembly Language Programs
position-independent coding
Position-Independent Coding in Assembly Language

bal operation
Position-Independent Coding in Assembly Language

basic block counting. See profiling
Basic Block Counting

BLOCK DATA
Compiling with –Bsymbolic

branch-and-link instruction
Examples

building ucode object library
Building Ucode Object Libraries

C++
building DSOs
Using DSOs With C++
compiler
About the Compiler System
language definitions
Creating a Header File for Multiple Languages
ld options
Using DSOs With C++

cache mapping, improve
Rearranging Procedures With cord

cc compiler. See drivers
About the Compiler System

ccom_mp preprocessor
About the Compiler System

cfe preprocessor
About the Compiler System
About the Compiler System

code generator
About the Compiler System

COFF
Executable and Linking Format

Common Object File Format
Executable and Linking Format

COMMON symbols
Compiling with –Bsymbolic

compiler drivers. See drivers
About the Compiler System

compiler front end
About the Compiler System

compiler options. See drivers
General Options for Compiler Drivers

compiler system
components
About the Compiler System
overview
About the Compiler System

compiling with –Bsymbolic
Compiling with –Bsymbolic

conventions, syntax
Conventions Used in This Guide

copt optimizer
About the Compiler System

cord
Rearranging Procedures With cord
–feedback option
Example Using cord
–o out_file option
cord Options
–v option
cord Options
command options
cord Options
command syntax
cord Syntax
example
Example Using cord
feedback files
cord Syntax

.Counts file
Obtaining Basic Block Counts

.cpadd reg directive
Position-Independent Coding in Assembly Language

.cpload reg directive
Position-Independent Coding in Assembly Language

cpp preprocessor
About the Compiler System

.cprestore offset directive
Position-Independent Coding in Assembly Language

.cpword local-sym directive
Position-Independent Coding in Assembly Language

data type
signed
C Programs Only
unsigned
C Programs Only

dbx. See debugging
Header Files

debugging
and include files
Header Files
and optimization
Loop Optimization
driver options
Debugging

dis command
Getting Information About Object Files
Disassembling Object Files with dis
command syntax
Disassembling Object Files with dis
options
dis Options

disassemble object file
Getting Information About Object Files

dlclose()
Dynamic Loading Under Program Control

dlerror()
Dynamic Loading Under Program Control

dlopen()
Dynamic Loading Under Program Control

dlsym()
Dynamic Loading Under Program Control

do while, optimization
C Programs Only

drivers
– non_shared
Position-Independent Code
–KPIC
Position-Independent Code
Position-Independent Coding in Assembly Language
–nocpp
About the Compiler System
–v option
About the Compiler System
as1 assembler
Linking Assembly Language Programs
bypassing
About the Compiler System
C++ compiler
About the Compiler System
cc compiler
About the Compiler System
cfe preprocessor
About the Compiler System
defaults
Default Behavior for Compiler Drivers
f77 compiler
About the Compiler System
file name suffixes
Source File Naming Conventions
input file suffixes
Source File Naming Conventions
options
Position-Independent Coding in Assembly Language
General Options for Compiler Drivers
–KPIC
Position-Independent Coding in Assembly Language
Position-Independent Coding in Assembly Language
–non_shared
Position-Independent Coding in Assembly Language
passing options to ld
Invoking the Linker Manually
pc compiler
About the Compiler System

DSOs
About the Compiler System
Object File Format and Dynamic Linking
Dynamic Shared Objects
Dynamic Shared Objects
archive libraries
DSOs vs. Archive Libraries
building new DSOs
Building DSOs
C++
Using DSOs With C++
converting libraries
Converting Libraries to DSOs
creating DSOs
Building DSOs
dlclose()
Dynamic Loading Under Program Control
dlerror()
Dynamic Loading Under Program Control
dlopen()
Dynamic Loading Under Program Control
dlsym()
Dynamic Loading Under Program Control
dynamic loading diagnostics
Dynamic Loading Under Program Control
exporting symbols
Controlling Symbols to be Exported or Loaded
guidelines
Guidelines for Using Shared Libraries
hiding symbols
Controlling Symbols to be Exported or Loaded
libraries, shared
Guidelines for Using Shared Libraries
linking
Linking to Dynamic Shared Objects
loading dynamically
Dynamic Loading Under Program Control
mmap() system call
Dynamic Loading Under Program Control
munmap() system call
Dynamic Loading Under Program Control
naming conventions
Creating DSOs
QuickStart
Taking Advantage of QuickStart
QuickStart registry file
Using Registry Files
registry files
Using Registry Files
search path
Searching for DSOs at Runtime
shared libraries
Guidelines for Using Shared Libraries
starting quickly
Taking Advantage of QuickStart
unloading dynamically
Dynamic Loading Under Program Control
versioning
The Versioning Mechanism of Silicon Graphics

dynamic linking
About the Compiler System
Object File Format and Dynamic Linking
Dynamic Loading Under Program Control

Dynamic Shared Objects. See DSOs
Linking to Dynamic Shared Objects

ELF. See executable and linking format
Executable and Linking Format

elfdump command
Listing Selected Parts of Object Files and Libraries With elfdump
Getting Information About Object Files
command syntax
elfdump Syntax
options
elfump Options

executable and linking format
Executable and Linking Format
About the Compiler System
Object File Format and Dynamic Linking

exporting symbols
Controlling Symbols to be Exported or Loaded

f77 compiler. See drivers
About the Compiler System

fcom preprocessor
About the Compiler System

file command
Getting Information About Object Files
Determining File Type With file
command syntax
file Syntax

file type, determining
Determining File Type With file

files
header
Header Files
include
Header Files
listing properties
Getting Information About Object Files
naming conventions
Source File Naming Conventions

floating point data
pixstats Options

format
object file
Object File Format and Dynamic Linking
About the Compiler System

Fortran
optimization
C and Fortran Programs

global offset table
Position-Independent Code

global optimizer
Global Optimizer

GOT
Position-Independent Code

.gpword
Position-Independent Coding in Assembly Language

.gpword directive
Position-Independent Coding in Assembly Language

header files
Header Files
multiple languages
Creating a Header File for Multiple Languages

if-then-else statements
optimization
C and Fortran Programs

include files
Header Files
debugging
Header Files
multiple languages
Creating a Header File for Multiple Languages

indirect
calls, using
Optimizing C and Fortran Programs
function call
Examples
jump instruction
Examples

internationalization
C++
Creating a Header File for Multiple Languages
multilanguage programs
Specifying Libraries and DSOs

jal operation
Position-Independent Coding in Assembly Language

ld
–shared option
Creating DSOs
and assembly language programs
Linking Assembly Language Programs
C++
Using DSOs With C++
command syntax
Linker Syntax
DSOs
Using DSOs With C++
dynamic linking
About the Compiler System
Object File Format and Dynamic Linking
example
Linker Example
libraries, default search path
Specifying Libraries and DSOs
libraries, specifying
Linking Libraries
link editor
About the Compiler System
multilanguage programs
Linking Multilanguage Programs
options
Using DSOs With C++
registry files
Using Registry Files

LD_BIND_NOW
Runtime Symbol Resolution

LD_LIBRARY_PATH
Obtaining Basic Block Counts

lib.so functions
optimization
C Programs Only

libdl
Dynamic Loading Under Program Control

libraries
and multilanguage programs
Specifying Libraries and DSOs
archive
Dynamic Shared Objects
global data
Tuning Shared Library Code
libdl
Dynamic Loading Under Program Control
locality
Tuning Shared Library Code
non-shared, converting to DSOs
Converting Libraries to DSOs
paging
Tuning Shared Library Code
routines to exclude
Choosing Library Members
routines to include
Choosing Library Members
self-contained
Choosing Library Members
shared
Object File Format and Dynamic Linking
About the Compiler System
shared, static
Linking to Dynamic Shared Objects
Dynamic Shared Objects
Dynamic Shared Objects
specifying
Linking Libraries
static data
Choosing Library Members
tuning
Tuning Shared Library Code

linking
dynamic. See ld
About the Compiler System
Object File Format and Dynamic Linking

linking. See ld
Linking Multilanguage Programs

loader
runtime. See rld
Benefits of Using DSOs

loading
symbols
Controlling Symbols to be Exported or Loaded

local variables
optimization
C Programs Only

loop unrolling
Loop Unrolling

machine instructions
Getting Information About Object Files

macro preprocessors
About the Compiler System

mmap() system call
Dynamic Loading Under Program Control

mon.out file. See profiling, pc sampling
Obtaining pc Sampling

multilanguage programs
and ld
Linking Multilanguage Programs
and libraries
Specifying Libraries and DSOs
header files
Creating a Header File for Multiple Languages

multiprocessed executables, profiling
Profiling Multiprocessed Executables

munmap() system call
Dynamic Loading Under Program Control

naming source files
Source File Naming Conventions

nm command
Getting Information About Object Files
command syntax
nm Syntax
example
nm Example
example of undefined symbol
Finding an Unresolved Symbol With ld
undefined symbol
Finding an Unresolved Symbol With ld

nm command
Listing Symbol Table Information: nm

object code library
building
Building Ucode Object Libraries

object file information
disassemble
Getting Information About Object Files
format
About the Compiler System
Object File Format and Dynamic Linking
listing section sizes
Getting Information About Object Files
Determining Section Sizes With size
symbol table information
Listing Symbol Table Information: nm
Getting Information About Object Files
tools
Getting Information About Object Files
using elfdump
Listing Selected Parts of Object Files and Libraries With elfdump
Getting Information About Object Files
using odump
Listing Selected Parts of COFF Files With odump
Getting Information About Object Files

odump command
Getting Information About Object Files
Listing Selected Parts of COFF Files With odump
command syntax
odump Syntax

optimization
–O0 compiler option
Compiler Optimization Options
–O1 compiler option
Compiler Optimization Options
–O2 compiler option
Compiler Optimization Options
–O3 compiler option
Compiler Optimization Options
Examples of Full Optimization
Ada
Adaź Programs
addresses
Example of Pointer Placement and Aliasing
aliasing
C Programs Only
and debugging
Loop Optimization
and loop unrolling
Loop Unrolling
and register allocation
Register Allocation
C
Optimizing C and Fortran Programs
do while
C Programs Only
example
Example of Pointer Placement and Aliasing
Fortran
Optimizing C and Fortran Programs
C and Fortran Programs
frequently used modules
Optimizing Frequently Used Modules
full
Examples of Full Optimization
function return values
C Programs Only
global
Global Optimizer
if-then-else statements
C and Fortran Programs
libc.so functions
C Programs Only
loop
Loop Optimization
machine-dependent
Global Optimizer
machine-independent
Global Optimizer
options
Compiler Optimization Options
pointers
C Programs Only
pragma inline
Adaź Programs
separate compilation units
Optimizing Separate Compilation Units
signed data types
C Programs Only
STDARG
Example of Pointer Placement and Aliasing
subscripts
Example of Pointer Placement and Aliasing
switch statements
C and Fortran Programs
tables
C and Fortran Programs
tips for improving
Improving Global Optimization
unions
C Programs Only
unsigned data type
C Programs Only
value parameters
C Programs Only
VARARG
Example of Pointer Placement and Aliasing
variables, global vs. local
C Programs Only

optimizer
About the Compiler System
copt optimizer
About the Compiler System

optimizing programs
benefits
Optimization and Debugging
debugging
Optimization and Debugging

.option pic0 directive
Position-Independent Coding in Assembly Language

.option pic2 directive
Position-Independent Coding in Assembly Language

page size
Tuning Shared Library Code

paging
alignment
Tuning Shared Library Code

paging, reduce
Rearranging Procedures With cord

parallel analyzer
About the Compiler System

parameters
optimization
C Programs Only

pc compiler. See drivers
About the Compiler System

pc sampling. See profiling
Obtaining pc Sampling

pca analyzer
About the Compiler System

pfa analyzer
About the Compiler System

PIC. See position-independent code
Object File Format and Dynamic Linking
Position-Independent Coding in Assembly Language
Building DSOs
About the Compiler System

pixie
Using pixie
–autopixie option
pixie Options
–counts option
pixie Options
–liblist option
pixie Options
–pids option
pixie Options
–verbose option
pixie Options
and prof –clock example
Example Using prof –pixie –procedures –clock
and prof –heavy example
Example Using prof –pixie –heavy
and prof –i example
Example Using prof –pixie –invocations
and prof –lines example
Example Using prof –pixie –lines
and prof –pids
Summing Basic Block Count Results
and prof –procedures example
Example Using prof –pixie –procedures
command options
Using pixie
command syntax
Using pixie
.Counts file
Obtaining Basic Block Counts
Summing Basic Block Count Results
examples
Obtaining Basic Block Counts
output size
Obtaining Basic Block Counts
restricting output
Obtaining Basic Block Counts
setting search path
Obtaining Basic Block Counts

pixstats
Using pixstats
–disassemble option, example
Examples Using pixstats
–op option, example
Examples Using pixstats
command syntax
Using pixstats
example
Examples Using pixstats
profiling
pixstats Options

pointers
optimization
C Programs Only

position-independent code
Building DSOs
Object File Format and Dynamic Linking
Position-Independent Code
About the Compiler System
assembly language
Position-Independent Coding in Assembly Language
branch-and-link instruction
Examples
.cpadd reg directive
Position-Independent Coding in Assembly Language
.cpload reg directive
Position-Independent Coding in Assembly Language
.cprestore offset directive
Position-Independent Coding in Assembly Language
.cpword local-sym directive
Position-Independent Coding in Assembly Language
examples
Examples
indirect function call
Examples
indirect jump instruction
Examples
.option pic0 directive
Position-Independent Coding in Assembly Language
.option pic2 directive
Position-Independent Coding in Assembly Language
register t9
Examples
switch tables
Position-Independent Coding in Assembly Language

pragma inline
optimization
Adaź Programs

preprocessing
About the Compiler System

preprocessors
macro
About the Compiler System

procedures, rearrange
Rearranging Procedures With cord

prof
–clock example
Example Using prof –pixie –procedures –clock
–heavy example
Example Using prof –pixie –heavy
–invocations example
Example Using prof –pixie –invocations
–lines example
Example Using prof –pixie –lines
–procedures example
Example Using prof –pixie –procedures
Also see profiling
prof Syntax

PROFDIR environment variable
Creating Multiple Profile Data Files

profiling
Profiling With prof
–clock option
prof Options
prof Defaults
example
Example Using prof –pixie –procedures –clock
–dis option
prof Options
–dso option
prof Defaults
prof Options
–exclude option
Obtaining Basic Block Counts
Obtaining pc Sampling
prof Defaults
prof Options
–g option
Obtaining Basic Block Counts
–heavy option
prof Defaults
prof Options
example
Example Using prof –pixie –heavy
–invocations option
prof Options
prof Defaults
example
Example Using prof –pixie –invocations
–lines option
prof Defaults
prof Options
example
Example Using prof –pixie –lines
–merge option
prof Options
prof Defaults
–only option
Obtaining Basic Block Counts
Obtaining pc Sampling
prof Options
–p option
Obtaining pc Sampling
–pcsample option
prof Options
–pids option
Summing Basic Block Count Results
–pixie option
prof Options
–procedures option
prof Options
example
Example Using prof –pixie –procedures
–quit option
prof Options
Example Using prof –pixie –quit
Obtaining Basic Block Counts
–testcoverage option
prof Options
–zero option
prof Options
Also see prof
Running the Profiler
basic block counting
Basic Block Counting
command options
prof Defaults
command syntax
prof Syntax
floating point
pixstats Options
instruction distribution
Examples Using pixstats
multiple data files
Creating Multiple Profile Data Files
multiprocessed executables
Profiling Multiprocessed Executables
overview
Overview of Profiling
pc sampling
pc Sampling
example
Example Using prof –pcsample
pixstats
pixstats Options
procedure invocation example
Examples of Basic Block Counting
register usage
Examples Using pixstats
stall distribution
Examples Using pixstats
summing results
Summing Basic Block Count Results

QuickStart DSOs. See DSOs, QuickStart
Taking Advantage of QuickStart
Taking Advantage of QuickStart

rearrange procedures
Rearranging Procedures With cord

reduce paging
Rearranging Procedures With cord

register
allocation
Register Allocation
usage
Examples Using pixstats

register t9
Examples

registry file. See DSOs
Using Registry Files

relocation bits, removing
Getting Information About Object Files

remove
relocation bits
Getting Information About Object Files
symbol table
Getting Information About Object Files

reorder procedures
Rearranging Procedures With cord

resolve text symbols
Runtime Symbol Resolution

return values, optimization
C Programs Only

rld
Benefits of Using DSOs
dynamic linking
Dynamic Loading Under Program Control
libdl
Dynamic Loading Under Program Control
search path
Searching for DSOs at Runtime
Obtaining Basic Block Counts

runtime linker. See rld
Benefits of Using DSOs

scalar optimizer, copt
About the Compiler System

scalar variables
word size
C and Fortran Programs

search path
rld
Searching for DSOs at Runtime
Obtaining Basic Block Counts

shared libraries, static
Linking to Dynamic Shared Objects
Dynamic Shared Objects

shared library
About the Compiler System
Object File Format and Dynamic Linking

shared objects, dynamic
Dynamic Shared Objects

signed data type
optimization
C Programs Only

size command
Determining Section Sizes With size
Getting Information About Object Files
Determining Section Sizes With size
command syntax
size Syntax
example
size Example

source file names
Source File Naming Conventions

STDARG. See optimization
Example of Pointer Placement and Aliasing

strip command
Removing Symbol Table and Relocation Bits with strip
Getting Information About Object Files
command syntax
Removing Symbol Table and Relocation Bits with strip

subscripts
optimization
Example of Pointer Placement and Aliasing

switch statements
optimization
C and Fortran Programs

switch tables
Position-Independent Coding in Assembly Language

symbol resolution
Runtime Symbol Resolution

symbol table
removing
Getting Information About Object Files

symbol table information, listing
Getting Information About Object Files

symbols
exporting
Controlling Symbols to be Exported or Loaded
loading
Controlling Symbols to be Exported or Loaded

syntax, conventions
Conventions Used in This Guide

tables, switch
Position-Independent Coding in Assembly Language

tools
basic block counting
Basic Block Counting
optimization
Compiler Optimization Options
performance
Using the Performance Tools
procedure rearranger
Rearranging Procedures With cord
profiling
Overview of Profiling
ucode
About the Compiler System

type, determining for files
Determining File Type With file

typographical conventions
Conventions Used in This Guide

ucode
object library, building
Building Ucode Object Libraries
object library, using
Using Ucode Object Libraries
tools
About the Compiler System

ugen code generator
About the Compiler System

ujoin
About the Compiler System

uld
About the Compiler System

umerge
About the Compiler System

unassigned data type
optimization
C Programs Only

unions
optimization
C Programs Only

uopt optimizer
About the Compiler System

upas preprocessor
About the Compiler System

VARARG. See optimization
Example of Pointer Placement and Aliasing

variables
scalar
C and Fortran Programs

virtual address space
Dynamic Loading Under Program Control

.word directive
Position-Independent Coding in Assembly Language

word-size scalar variables
C and Fortran Programs