Installation guide
Figure 7–1 is an example of a memory diagram of programs that use the
−taso and −call_shared options (and do not use threads). (If you invoke
the linker (ld) through the cc command, the default is −call_shared.If
you invoke ld directly, the default is −non_shared.)
Figure 7–1: Layout of Memory Under the -taso Option
Not accessible
Mappable by program
Heap (grows up)
Stack(grows towards zero)
Mappable by program
Not accessible
(by convention)
0xffff ffff ffff ffff
0xffff fc00 0000 0000
0xffff fbff ffff ffff
$sp
0x0000 0000 0001 0000
0x0000 0000 0000 ffff
0x0000 0000 0000 0000
Reserved for kernel
Reserved for dynamic loader
Reserved for shared libraries
0x0000 0000 11ff ffff
0x0000 0000 1200 0000
0x0000 0000 8000 0000
0x0000 0000 7fff ffff
0x0000 03ff 8000 0000
0x0000 03ff 7fff ffff
ZK−0876U−R
Data
Text
0x0000 0000 1400 0000
Not mappable using 31−bit addresses
Note that stack and heap addresses will also fit into 31 bits. The stack
grows downward from the bottom of the text segment, and the heap grows
upward from the top of the data segment.
The −T and −D options (linker options that are used to set text and data
segment addresses, respectively) can also be used to ensure that the text
and data segments of an application are loaded into low memory. The
−taso option, however, in addition to setting default addresses for text and
Migrating Your ULTRIX Application to a DIGITAL UNIX System 7–9