ABICC(1)ABICC(1)


NAME
     abicc - ABI C compiler

SYNOPSIS
     abicc [-Aname [tokens]] [-B option] [-C] [-c] [-D name [=value]] [-d
     link] [-E] [-G] [-g] [-H] [-I dir] [-K codegen] [-L dir] [-l name]
     [-O] [-o pathname] [-P] [-Q id] [-q c] [-S] [-v] [-W1 arg] [-X arg]
     file

IMPLEMENTATION
     IRIX systems

DESCRIPTION
     The abicc command is a wrapper shell script for cc for compiling MIPS
     ABI applications.  It translates a common subset of the SVR4 SGS
     (Software Generation System) flags and arguments to those of the
     native IDO (IRIS Development Option).  By the use of this wrapper,
     applications which link on-site on a target platform are isolated from
     having to know the details of invoking that platform's compilation
     system.

     This command also hides the details of constructing an ABI application
     on IRIX systems.  The details of exactly how the native c constructs
     an ABI application could change; therefore, abicc should be used to
     compile all ABI-compliant programs to insure portability.

     The following options are recognized by abicc.

     -A name[tokens]     Controls #assert mechanisms.

     -B option           Specifies archives and symbols.  option can be one
                         of the following values:

                         static         Look only for static archives
                                        during link phase.

                         dynamic        Look for DSOs first, then static
                                        archives, during link phase.

                                        The -B static and -B dynamic
                                        options serve as toggles and can be
                                        specified multiple times on a
                                        command line.

                          export [=name], [filename]
                                        When creating a DSO, indicates that
                                        symbols from the next object,
                                        archive, or DSO are exported from
                                        the DSO being created.  This is the
                                        default for an object but not for
                                        an archive or DSO.

                                        When used with optional name, marks
                                        the symbols given by the list of
                                        names as exported.  If any symbols
                                        are exported by this mechanism then
                                        all unspecified symbols are
                                        automatically hidden.  filename
                                        contains a list of symbols that
                                        should be exported.  Any symbols
                                        not specifically exported are
                                        automatically hidden.

                         exports_file=filename
                                        When creating a DSO, the file given
                                        by filename contains a list of
                                        symbols that should be exported.
                                        Any symbols not specifically
                                        exported are automatically hidden.

                         hide [=name]   When creating a DSO, indicates that
                                        symbols from the next object,
                                        archive, or DSO are hidden in the
                                        DSO being created.  This is the
                                        default for an archive or DSO but
                                        not for an object.

                                        When used with the optional name
                                        argument, marks the symbols given
                                        by the list of names as hidden.
                                        Ignored if any symbols are exported
                                        by the -B export=name option or -B
                                        exports_file=filename option.

                         hides_file=filename
                                        When creating a DSO, the file given
                                        by filename contains a list of
                                        symbols that should be hidden.
                                        Ignored if any symbols are exported
                                        by the -B export=name option or -B
                                        exports_file=filename option.

                         nolibraryreplacement
                                        Turns on a flag in the dynamic
                                        section so that rld does not allow
                                        execution time or runtime changing
                                        of the path (except for super user)
                                        to find the shared objects.
                                        Typically used for security
                                        purposes on system utilities.

                         rpath=path     Specifies the rpath pathname when
                                        linking -shared (an IRIX cc option)
                                        or when using the -G option. path
                                        is a directory.  The dynamic linker
                                        searches the named directory first.

     -C                  Suppresses comment removal when combined with -P
                         or -E options. Not meaningful otherwise.

     -c                  Suppresses the linking phase.

     -D name[=value]     Defines name to the preprocessor, as if by a C-
                         language #define directive.  If a value is not
                         given, a value of 1 is used.

     -d link             Specifies the type of linking.  y specifies
                         dynamic linking (default).  n specifies static
                         linking.  Statically linked applications are not
                         MIPS ABI conformant.

     -E                  Preprocess only (no compilation or linking).

     -G                  Directs the linker to produce a shared object.
                         When using the -G option, also specify the outfile
                         file name using -o file.so and the .so name using
                         -Wl,-soname,file.so.

     -g                  Generates symbolic debug information.

     -H                  Prints include file names as they are processed.
                         Suppresses compilation (the output is similar to
                         the -E option).

     -I dir              Changes the algorithm for searching for headers
                         whose names are not absolute pathnames.  The
                         algorithm is changed to look in the directory
                         named by dir before looking in the usual places.
                         Directories named in -I options are searched in
                         the order specified.

     -K codegen          Specifies code generation options.  codegen can
                         have the following values:

                         PIC       Generate Position Independent Code.
                                   This is implied on the Reference
                                   Platform.

                         uchar     Treat the char data type as unsigned.
                                   This is the default.

                         schar     Treat the char data type as signed.

                         32        Generate a 32-bit object. This is the
                                   default.  Defaults to -K 32.

                         64        Generate a 64-bit object.  Defaults to
                                   -K mips3.

                         mips1     Generate code using the MIPS I
                                   instruction set of the R2000/R3000 RISC
                                   architecture.  Defaults to -K 32.

                         mips2     Generate code using the MIPS II
                                   instruction set (MIPS 1 + R4000 specific
                                   extensions).  Defaults to -K 32.

                         mips3     Generate code using the MIPS III (R4000)
                                   instruction set.  Defaults to -K 64.

                         mips4     Generate code using the MIPS IV
                                   (R10000,R5000,R8000) instruction set.
                                   Defaults to -K 64.

                         xgot      Generate code for the extended GOT
                                   model.  This model is not recommended.
                                   Many archives are not available in xgot
                                   form.

     -L dir              Controls library search path at linking phase.
                         Passed through to ld.

     -l name             Searches library specified by name.

     -O                  Does compilation phase optimization.

     -o pathname         Names the output file.

     -P                  Performs only preprocessing on the named files,
                         leaving the result on corresponding files suffixed
                         .i.

     -S                  Suppresses assembly and linking (leaves assembler
                         file).

     -U name             Causes specified name to be undefined, as if by a
                         C-language #undef directive. -U takes precedence
                         over -D, so if both are present for a name on the
                         command line, name is not defined.

     -v                  Verbose mode.

     -Wl,arg[,arg2...]   Pass options directly to the linker.  No unquoted
                         spaces are allowed in this option.

     -X arg              Specifies data.  arg can have the following value:

                         readwrite_const
                                   const data is placed in writable memory.

                         readonly_const
                                   const data may be placed in readonly
                                   memory (this is the default).  ANSI C
                                   says that if an application attempts to
                                   write into const data the behavior is
                                   undefined.

                         xpg       Directs the compiler to set the global
                                   variable __xpg4 to 1; this indicates
                                   that libraries should provide behavior
                                   compatible with the X/Open Single
                                   UNIX(TM) Specification rather than the
                                   default traditional behavior (when there
                                   is a conflict).

                         a         ANSI compilation mode (default).
                                   Defines __STDC__ to be 1.

                         c         ANSI conformance mode.  Defines __STDC__
                                   to be 1.

                         t         Transition mode.  Does not define
                                   __STDC__.

                         If no -X option is specified, the default is
                         -xansi mode with ABI additions. See the NOTE below
                         for more information.  An ABI application can not
                         be produced with the t mode, as the ABI requires
                         ANSI C.

NOTES
     The options described previously indicate a space character between
     options and arguments.  This is in accordance with X/Open
     recommendations for portable applications.  abicc also supports
     placing the argument in the same string with no space.  If the
     argument is optional, no space is allowed and this is reflected in the
     described syntax.

     The default mode for abicc closely matches the -xansi mode documented
     in the cc(1) man page.  In addition to the defined symbols listed
     there, _ABI_SOURCE is defined, the cc -G 0 option is selected, and
     /usr/include/abi is inserted at the front of the standard include
     path.  Only /usr/lib/abi is searched for libraries if -K 32.  Only
     /usr/lib64/abi is searched for libraries if -K 64.

     The i-K 32 option may only be combined with -K mips1 or -K mips2; -K
     64 may only be combined with -K mips3 or -K mips4.

FILES
     /usr/lib64/abi/sgicc.cfg

     /usr/lib/abi                  ABI libraries and configuration files

     /usr/lib/mips2/abi            ABI libraries

     /usr/lib64/abi                ABI libraries

     /usr/lib64/mips3/abi          ABI libraries

     /usr/lib64/mips4/abi          ABI libraries

     /usr/include/abi              special ABI include files

     /usr/lib/abi/setup            abicc setup file

     /usr/lib/abi/sgicc.cfg        IRIX abicc config file

SEE ALSO
     abild(1), check_abi_compliance(1), check_abi_interface(1),
     check_for_syscalls(1)
     abi(5)
     MIPS Processor ABI Conformance Guide
     UNIX System V Release 4 Programmer's Reference Manual