The development environment in
Digital UNIX Version 4.0
is
fully
ANSI C/ISO C
compliant;
offers the
programming features of both
BSD and System V UNIX
and is compliant
with most current standards,
including POSIX, XPG4, and XPG4-UNIX;
features debuggers
that support
C,
Assembler,
FORTRAN
(F77 and F90),
C++, Ada,
and
connecting to
/proc;
supports
shared libraries,
threads,
versioning;
and has a fully optimized
C compiler that produces
extremely efficient code
to
exploit
fully
the 64-bit address
space of the Alpha architecture.
In addition,
Digital UNIX Version 4.0
supports
internationalization,
standard UNIX development tools
such as
awk,
lint,
make,
and
prof,
and provides
various run-time libraries
such as C++ and FORTRAN.
The following sections highlight the major functionality in the development environment. For more detailed information on the development environment, see the Programmer's Guide, the guide Programming Support Tools, Assembly Language Programmer's Guide, and Writing Software for the International Market.
The Digital UNIX Version 4.0 C compiler was designed to support 64-bit data types and is NIST-validated for compliance with the ANSI Standard for C. The C front end supports both 64-bit addressing and the interfaces to the System V shared libraries.
The GEM-based DEC C compiler,
accessed optionally in previous releases
through the
-migrate
switch,
is now the default compiler;
access to the older MIPS-based
compiler is still available through
the
-oldc
switch on the cc and c89 command lines.
DEC C uses Digital's backend compiler technology (GEM), which has been specifically developed and optimized for use with Alpha systems. Both compilers have full binary compatibility with each other.
In addition, the compiler:
-std0 mode)
-std1 mode)
-std mode)
c89
command
-D_XOPEN_SOURCE_EXTENDED
option
to
cc.
For more information on the various standards supported by
Digital UNIX,
see the
standards(5)
manpage.
try...except
and termination handling using
try...finally
asm
sequences
For more information on
the
Digital UNIX
C compiler,
see
the
cc(1)
reference page.
Digital UNIX Version 4.0 supports the following two source code debuggers:
The
dbx
debugger
supports debugging programs written in C, FORTRAN, Assembler,
Cobol, and Pascal.
It supports debugging active kernels, either locally or remotely;
analyzing kernel crash dumps; debugging program core dumps; shared
libraries; and, through
/proc,
attachment to running processes
and programs using multiple threads.
It can also patch the
on-disk copy of either user programs or the kernel.
The
dbx
debugger
also supports multiprocess debugging and allows debugging
through
fork
and
exec
calls.
The
ladebug
debugger is a source level,
object-oriented symbolic debugger that
has both a
graphical user interface
(GUI)
and a
command-line interface
similar to the
dbx
command-line interface,
Note that the GUI is also integrated
with FUSE and can be accessed from the Common Desktop Environment
(CDE).
The
ladebug
debugger
supports the following
functionality:
fork
and
exec.
Note that
ladebug
is a full C++ debugger which demangles
C++ names, understands C++ expressions,
provides support for inline functions,
templates,
and C++ exceptions.
Also note that the support for F77/F90 includes case insensitivity, common blocks, alternate entry points, language-dependent type printing, and assume shape arrays.
Note that the
ladebug
remote debugging protocol is
also available along with the C source
code for a sample remote debugging
server that adheres to the protocol.
Note that
internationalization support is available in
a separate kit.
The
internationalized
ladebug
debugger
accepts multibyte characters
as input, and outputs local language characters
according to the current global locale set
in the debugger.
It also supports
the
wchar_t
datatype
in C/C++.
Digital UNIX Version 4.0 supports the following profiling toolkit:
Provides a flexible code instrumentation interface that is capable of building a wide variety of user-defined program analysis tools and comprises an instrumentation control tool and a library whose procedural interface enables programmers to easily develop special-purpose instrumentation/analysis tools.
ATOM provides the following built-in instrumentation/analysis tools:
hiprof
A
call-graph
profiling
tool
with output that
can be post-processed by
gprof.
third
(Third degree)
Finds memory leaks and checks for incorrect memory accesses.
pixie
A superset of the existing
pixie
basic block profiler
which can
profile a program's executables and its shared libraries.
The output of
pixie
can be analyzed
by
prof.
Digital Unix V4.0 supports the following profiling tools:
gprof
For programs compiled with the
-pg
option,
displays how many calls named procedures made to each other
and how much
CPU time each procedure consumed, using PC-sampling statistics.
Also analyzes the output of programs
instrumented with
hiprof.
prof
For programs compiled with the
-p
option,
displays how much CPU time was consumed by each procedure in a program
and its shared libraries,
using PC-sampling statistics.
Also analyzes the output of programs
instrumented with
pixie
or
monitored with
uprofile/kprofile.
uprofile/kprofile
Sample a variety of events in the CPU using the Alpha chip's
built-in performance counters during the execution of an application
program or the kernel itself.
Can report on CPU cycles, memory/cache effects,
and so forth,
which
prof
can then analyze.
For more information on profiling tools, see the Programmer's Guide and the appropriate reference pages.
Digital UNIX Version 4.0
provides a full complement of dynamic shared libraries, compatible
with
System V semantics
for shared library loading and symbol resolution
as well as the
System V API for dynamic loading
(dlopen,
dlclose,
dlsym,
and
dlerror).
Because they allow programs to include only information
about how to load and access routines rather than
the routines
themselves,
shared libraries
increase system performance, reduce
disk and memory requirements, and simplify system management.
Digital UNIX Version 4.0 supports the shared libraries described in the following two tables.
| Library /usr/shlib | Description |
libDXm.so
|
Digital Motif Extensions library |
libDXterm.so
|
DECterm widget library, used by
dxterm
|
libDtHelp.so
|
CDE online help routines |
libDtMail.so
|
Shared library support for
the
dtmail
CDE mail utility
|
libDtSvc.so
|
CDE service routines for desktop management |
libDtTerm.so
|
Shared library support for the CDE
ddterm
terminal emulator utility
|
libDtWidget.so
|
shared library of CDE widgets to supplement Motif widget |
libICE.so
|
Inter-Client Exchange library, which enables the building of protocols |
libMrm.so
|
Motif Resource Manager library |
libSM.so
|
The X Session Management Protocol (XSMP) provides a uniform mechanism for users to save and restore their sessions using the services of a network- based session manager. It is built on ICE and is the C interface to the protocol. |
libUil.so
|
The callable Motif UIL (User Interface Language) compiler used by applications that want to compile UIL at run time. |
libX11.so
|
Xlib library |
libXETrap.so
|
X Extension Library |
libXaw.so
|
X Athena Widgets run-time library |
libXext.so
|
X Client-side Extension library |
libXi.so
|
X Input Extension client-side library |
libXIE.so
|
X Imaging Extension client-side run-time library (V5) |
libXie.so
|
X Imaging Extension client-side run-time library (V3) |
libXm.so
|
Motif Widgets library |
libXmu.so
|
X Miscellaneous utilities run-time library |
libXt.so
|
X Intrinsics library |
libXtst.so
|
A library of routines for X clients to make use of the XTEST Extension. |
libXv.so
|
X video Extension client-side run-time library |
libaio.so
|
POSIX realtime asynchronous I/O functions |
libaio_raw.so
|
POSIX realtime asynchronous I/O functions (raw disk and tape only) |
libaud.so
|
C2 security auditing library |
libbkr.so
|
Motif Help System library |
libc.so
|
C library |
libc_r.so
|
Threadsafe libc (link to libc.so) |
libcda.so
|
CDA run-time library |
libcdrom.so
|
Rock Ridge Extensions to CDFS library |
libchf.so
|
CDA/Imaging signal handling routines |
libcmalib.so
|
CMA threads library |
libcsa.so
|
Shared library portion of the CDE
dtcm
calendar manager utility
|
libcurses.so
|
Curses screen control library |
libcxx.so
|
NEW |
libdb.so
|
NEW |
libdnet_stub.so
|
DECnet library |
libdps.so
|
Adobe Display PostScript client-side run-time libraries |
libdpstk.so
|
Adobe Display PostScript toolkit |
libdvr.so
|
CDA run-time viewer library |
libdvs.so
|
CDA run-time layout library |
libesnmp.so
|
NEW |
libexc.so
|
Library that provides support for exception handling. |
libiconv.so
|
Internationalization codeset conversion routines |
libids.so
|
Image display services library |
libids_nox.so
|
Image display services not dependent on X |
libimg.so
|
Image processing routines |
libips.so
|
Image processing routines |
libm.so
|
Digital Portable Mathmatics Library (DPML) |
libmach.so
|
Mach library |
libmxr.so
|
Library used by
mxr,
the ULTRIX binary interpreter for OSF/1
|
libndb.so
|
NEW |
libots.so
|
Compiler run-time support |
libpacl.so
|
NEW |
libproplist.so
|
VFS Extended File Attributes library |
libpset.so
|
NEW |
libpsres.so
|
Adobe Display PostScript resource utilities |
libpthread.so
|
Application Programming Interface for Digital UNIX's threads |
libpthreads.so
|
DECthreads library |
libsecurity.so
|
C2 security library |
libsm_x.so
|
Systems Management Graphical support library; no user-level interfaces available. |
libtcl.so
|
Base Tool Command Language (TCL) support library |
libtclx.so
|
Extended TCL support library |
libtk.so
|
Graphical TCL (TK) Extensions library |
libtkx.so
|
Graphical Extended TCL support library |
libtli.so
|
XTI library |
libtt.so
|
SunSoft Tooltalk routines |
libvxvm.so
|
LSM utility library |
libmsfs.so
|
AdvFS system call interface library |
libfilsys.so
|
File system utility library |
libxnet.so
|
NEW |
libxti.so
|
XTI library |
| Library /usr/shlib/X11 | Description |
libXau.so
|
X Authorization library |
libXdmDecGreet.so
|
Motif loadable greeter library |
libXdmGreet.so
|
Athena-style loadable greeter library |
libXdmcp.so
|
X Display Manager control program library |
lib_adobe_dps.so
|
Adobe Display PostScript Extension library |
lib_dec_cirrus.so
|
Device support for the Cirrus VGA graphics card |
lib_dec_ffb.so
|
Supports the sfb+ graphics accelerator for 2D and 3D drawing operations |
lib_dec_sfb.so
|
Device support for the smart frame buffer (HX) |
lib_dec_smt.so
|
Shared memory transport library |
lib_dec_tx.so
|
Device support for the TX graphic adapter |
lib_dec_ws.so
|
Low-layer operating system interface for the X server |
lib_dec_xi_pcm.so
|
Dynamically-loadable X Input Extension library that supports the dial and box |
lib_dec_xi_serial_mouse.so
|
Support library for the serial mouse |
lib_dec_xv_tx.so
|
X Video Extension support for the TX graphic option |
libcfb.so
|
Color frame buffer library |
libcfb16.so
|
16-bit visual support for the color frame buffer |
libcfb32.so
|
32-bit visual support for the color frame buffer |
libdbe.so
|
DOUBLE-BUFFER Extension library |
libdix.so
|
Device-independent portion of the X Server |
libdixie.so
|
With
libmixie.so,
supports the X Image Extensions (XIE) Extension library
|
libextMITMisc.so
|
MIT-SUNDRY-NONSTANDARD Extension library |
libextMultibuf.so
|
Multi-Buffering Extension library |
libextScrnSvr.so
|
MIT-SCREEN-SAVER Extension library |
libextSync.so
|
SYNC Extension library |
libextXCMisc.so
|
XC-MISC Extension library |
libextbigreq.so
|
BIG-REQUESTS Extension library |
libextkme.so
|
Keyboard-Management-Extension |
libextshape.so
|
SHAPE Extension library |
libextshm.so
|
MIT-SHM Extension library |
libextxtest.so
|
XTEST Extension library |
libextxtrap.so
|
DEC-XTRAP Extension library |
libfont.so
|
Font access library |
libfr_Speedo.so
|
Loadable font renderer library |
libfr_Type1.so
|
Loadable font renderer library |
libfr_fs.so
|
Loadable X Server font renderer for using a font server |
libmfb.so
|
Monochrome frame buffer support |
libmi.so
|
Machine-independent portion of the X Server |
libmixie.so
|
With
libdixie.so,
supports the X Image Extensions (XIE)
|
libos.so
|
Operating-system dependent portion of the X Server |
libxinput.so
|
X Input Extension server-side library |
libxkb.so
|
XKEYBOARD Extension library |
Note
Digital UNIX Version 4.0 also provides static versions of these libraries.
Digital UNIX Version 4.0
supports
quickstart
which allows shared libraries with unique addresses
to start faster than if their addresses were in conflict.
Essentially,
each shared library must have a unique address
placed in the
/usr/shlib/so_locations
file
which allows applications that link against these
shared libraries to start execution faster
since the shared objects do not have to be relocated at run time.
The
ld
utility can read and write an
so_locations
file
when it creates a shared library.
Digital UNIX Version 4.0 uses a System V Release 4.0 compatible loader to load shared libraries dynamically. This loader provides the following enhanced features:
Digital UNIX Version 4.0 supports full and partial duplication of shared libraries. The loader looks for backward compatible versions of shared libraries using a path constructed by appending the version string as a subdirectory of the normal search path. As a result, any changes to kernel interfaces or to global data definitions that would ordinarily break binary compatibility will not affect your applications, since you can maintain multiple versions of any shared library and link your application against the appropriate version of that shared library.
In
Motif Version 1.2,
for example,
the OSF
changed several of the interfaces,
thereby breaking binary compatibility with
applications built against
Motif 1.1.3
libraries.
To preserve binary
compatibility,
Digital UNIX Version 4.0
supports both
Motif 1.1.3 and Motif 1.2.3
shared libraries
in
Digital UNIX Version 4.0
with our
versioning functionality,
so that
applications that need to can access the Motif 1.1.3 shared libraries.
For more information on versioning,
see the
Programmer's Guide.
Digital UNIX Version 4.0 supports the following run-time libraries
The
DEC Ada run-time library
libada
enables users to run previously compiled DEC Ada programs
without having to install DEC Ada
on their system.
These libraries support such DEC Ada
run-time functionality as
tasking,
exceptions,
timer services,
and
miscellaneous computations.
The DEC C++ run-time libraries
(libcxx,
libcomplex,
and
libtask)
enable users to run previously compiled DEC C++ programs
without having to install DEC C++
on their system.
These libraries support such DEC C++
run-time functionality as
I/O, complex arithmetic, and multitasking.
The DEC COBOL run-time libraries
(libcob,
libots2,
and
libisamstub)
enable users to run previously compiled
DEC COBOL
programs
without having to install DEC COBOL on their system.
These
libraries support
such
COBOL
run-time functionality as
I/O,
decimal arithmetic,
COBOL ACCEPT/DISPLAY statements,
STRING/UNSTRING operations,
and
CALL and CANCEL.
The DEC FORTRAN run-time libraries
(libfor,
libfutil,
and
libUfor)
enable users to run previously compiled DEC FORTRAN programs
without having to install DEC FORTRAN on their system.
These libraries
support
such
FORTRAN
run-time functionality as
I/O,
intrinsic functions,
data formatting,
data conversion,
miscellaneous math functions,
and
FORTRAN bindings to common operating system services.
The DEC Pascal run-time library
libpas
enables users to run previously
compiled DEC Pascal programs
without having to install DEC Pascal on their system.
These libraries
support
such
Pascal
run-time functionality as
I/O,
miscellaneous math functions,
time and date services,
and
miscellaneous file services.
Digital UNIX Version 4.0
supports the full array of development tools,
including
ar,
as,
btou,
cb,
cc,
cflow,
cpp,
ctags,
cxref,
dbx,
dis error,
file,
indent,
ld,
lex,
lint,
loader,
m4,
make,
mig,
mkstr,
nm,
odump,
pixie,
ppu,
prof,
ranlib,
size,
stdump,
strings,
strip,
tsort,
uopt,
uld,
utob,
xstr,
and
yacc,
as well as the
source code control systems
rcs
and
sccs.
Note that many of the development commands are specified by the
System V, POSIX, XPG4 and XPG4-UNIX standards
to which
Digital UNIX
is fully complaint.
Also note that
Digital UNIX
supports both the
OSF
make
command
and the
ULTRIX version of
make,
since
the ULTRIX
make
command
is
POSIX
1003.2 compliant and more robust.
DECthreads is a library of routines built on the basic Mach threads capabilities in the OSF code that support the development of multithreaded applications on Digital UNIX. DECthreads is an implementation the POSIX 1003.1c-1995 standard API and also provides a proprietary API to aid in porting applications from other Digital platforms such as OpenVMS. Note that DECthreads also provides an implementation of draft 4 of the POSIX 1003.1c (formerly known as 1003.4a) specification which will be retired in the next release. This implementation is being provided only to allow applications extra time to convert their draft standard implementation to the finalized POSIX standard interface.
DECthreads is compatible with DCE requirements for threads and is the threads library used by Digital's DCE product. In addition, DECthreads is integrated with the Digital UNIX kernel, providing SMP capabilities for multithreaded applications and realtime scheduling policies and priorities for multithreaded realtime applications.
Digital UNIX supports Thread Independent Services (TIS) routines, which are provided to enable application writers to write thread-safe code for non-threaded libraries and applications. In the presence of threads, these routines provide the indicated thread-safe functionality. In the absence of threads, these routines impose the minimum possible overhead on their caller. Note that the TIS routines are used by the C runtime library to provide support for both single and multithreaded applications.
Digital UNIX Version 4.0
supports the Berkeley
mmap
function and therefore allows an
application to access data files with memory operations rather than
file I/O operations.
Digital UNIX Version 4.0
supports
a realtime user and programming environment,
developed by Digital and shipped as an
optional realtime subset.
The
Digital UNIX Version 4.0
realtime programming environment
conforms to the
POSIX 1003.1b-1993
standard for realtime
which
allows
you
to
develop and run
portable realtime
applications in a POSIX environment.
The realtime interfaces
are
collected in
the
static and shared libraries
/usr/ccs/lib/librt.a
and
/usr/shlib/librt.so,
respectively.
If you enable kernel preemption, a higher-priority process can preempt a lower-priority process regardless of whether it is running in kernel mode or user mode. With this fully preemptive kernel, the Process Preemption Latency (the amount of time it takes to preempt a lower-priority process) is minimized.
In addition to a preemptive kernel, the Digital UNIX Version 4.0 realtime programming environment supports the following POSIX 1003.1b features:
For more information on the realtime programming environment, see the Guide to Realtime Programming. For information on configuring the realtime kernel, see the System Administration guide.