Re: compiling libpq++ on Solaris with Sun SPRO6U2 (fixed - Mailing list pgsql-hackers

From Lee Kindness
Subject Re: compiling libpq++ on Solaris with Sun SPRO6U2 (fixed
Date
Msg-id 15310.37539.182896.954000@elsick.csl.co.uk
Whole thread Raw
In response to Re: compiling libpq++ on Solaris with Sun SPRO6U2 (fixed  (Lee Kindness <lkindness@csl.co.uk>)
Responses Re: compiling libpq++ on Solaris with Sun SPRO6U2 (fixed
List pgsql-hackers
For your information I've attached the man page for the Sun C
compiler, which explicitly lists the -h and -R flags.

Regards, Lee Kindness.

Lee Kindness writes:
 > It's really quite simple, the Sun C compiler (acc) does not understand
 > the -Wl flag, rather it passes the -R and -h options onto the linker
 > verbatim.
 > Peter Eisentraut writes:
 >  > I'm having a difficult time understanding this.  Both -R and -h are linker
 >  > options, not compiler options.  So while the compiler driver might be nice
 >  > enough to recognize them as the former and pass them through, this change
 >  > just pushes these chances, and it doesn't add any theoretical change of
 >  > functionality.

User Commands                                              acc(1)

NAME
     acc - C compiler

SYNOPSIS
     acc [ -Aname [(tokens) ] ] [ -a ] [ -B [static|dynamic] ]
     [ -C ] [ -c ] [ -cg89 ] [ -cg92 ] [ -Dname [=token ] ]
     [ -dalign ] [ -d [y|n] ] [ -dryrun ] [ -E ] [ -fast ]
     [ -fd ] [ -flags ] [ -fnonstd ] [ -fns ] [ -fround=r ]
     [ -fsimple[=n] ] [ -fsingle ] [ -ftrap=t ] [ -G ]
     [ -g ] [ -H ] [ -help ] [ -hname ] [ -Idir ]
     [ -inline=[f1,...,fn] ] [ -KPIC ] [ -Kpic ] [ -keeptmp ]
     [ -Ldir ] [ -lname ] [ -libmieee ] [ -libmil ] [ -M ]
     [ -misalign ] [ -misalign2 ] [ -mt ] [ -native ] [ -nolib  ]
     [ -nolibmil ] [ -noqueue ] [ -O[1|2|3|4|5] ]
     [ -o outputfile ] [ -P ] [ -p ] [ -pg ] [ -PIC ] [ -pic ]
     [ -Qdir dir ] [ -Qoption c arg ] [ -Qpath dir ]
     [ -Qproduce srctype ] [ -qdir dir ] [ -qoption c arg ]
     [ -qpath dir ] [ -qproduce srctype ]
     [ -R dir[:dir] ] [ -S ] [ -s ] [ -sb ] [ -sbfast ]
     [ -strconst ] [ -temp=dir ] [ -time ] [ -Uname ]
     [ -unroll =n ] [ -V ] [ -v ] [ -vc ] [ -w ]
     [ -X [a |c |s |t ]] [ -xa ] [ -xarch=a ] [ -xautopar ]
     [ -xcache=c ] [ -xCC ] [ -xcg89 ] [ -xcg92 ] [ -xchip=c ]
     [ -xdepend ] [ -xe ] [ -xexplicitpar ]
     [ -xF ] [ -xhelp=f ] [ -xildoff ]
     [ -xildon ] [ -xinline=[f1,...,fn] ] [ -xlibmieee ]
     [ -xlibmil ] [ -xlicinfo ] [ -xloopinfo ] [ -xM ] [ -xM1 ]
     [ -xMerge ] [ -xnolib ] [ -xnolibmil ] [ -xO[1|2|3|4|5] ]
     [ -xP ] [ -xparallel ] [ -xpg ] [ -xprofile=p ]
     [ -xreduction ] [ -xregs=r ]
     [ -xrestrict=f ] [ -xs ] [ -xsafe=mem ] [ -xsb ]
     [ -xsbfast ] [ -xsfpconst ] [ -xspace ]
     [ -xstrconst ] [ -xtarget=t ] [ -xtemp=dir ] [ -xtime ]
     [ -xtransition ] [ -xunroll=n ] [ -xvpara ] [ -Y,dir ]
     [ -Zll ] [ -Zlp ] [ -Ztha ]

DESCRIPTION
     acc (SPARC only) is not intended  to  be  used  directly  on
     Solaris  2.x.  The  sole  purpose for making it available on
     Solaris 2.x is to enable /usr/ucb/cc.  The package  SUNWscpu
     must  be installed to use this.  The options for /usr/ucb/cc
     are the same as for acc and are described here.

     acc is the C compiler. It translates programs written in the
     C programming language into executable load modules, or into
     relocatable binary programs for subsequent loading with  the
     ld(1) link editor.

     In addition to the many options, acc accepts  several  types
     of  filename arguments.  For instance, files with names end-
     ing in .c are taken to be C source programs. They  are  com-
     piled,  and  each  resulting object program is placed in the
     current directory.  The  object  file  is  named  after  its
     source  file - the suffix .o replacing .c in the name of the
     object.  In the same way, files whose names end with .s  are
     taken  to  be assembly source programs.  They are assembled,
     and produce .o files. Filenames ending in .il are  taken  to
     be  inline  expansion code template files; these are used to
     expand calls to selected routines in-line when code  optimi-
     zation  is enabled.  See FILES, below for a complete list of
     compiler-related filename suffixes.

     Other arguments refer to assembler or loader options, object
     programs,  or  object  libraries.   Unless  -c, -S, -E -P or
     -Qproduce  is  specified,  these  programs  and   libraries,
     together  with  the results of any specified compilations or
     assemblies, are linked (in the order given)  to  produce  an
     output  file  named  a.out.   You can specify a name for the
     executable by using the -o option.

     If a single file is compiled and linked  all  at  once,  the
     intermediate files are deleted.

OPTIONS
     When debugging or profiling objects are compiled  using  the
     -g  or -pg options, respectively, the ld command for linking
     them should also contain the appropriate option.

     See ld(1) for link-time options.

     -a   Insert code to count how many times each basic block is
          executed.  This is the old style of basic block profil-
          ing for tcov. See -xprofile=tcov for information on the
          new  style  of  profiling  and the tcov(1) man page for
          more details.

          Invokes a runtime recording mechanism that creates a .d
          file for every .c file (at normal termination).  The .d
          file accumulates execution data for  the  corresponding
          source  file.   The  tcov(1) utility can then be run on
          the source file to generate statistics about  the  pro-
          gram. This option is incompatible with -g .

     -Aname[(tokens)]
          Associate name as a predicate with the specified tokens
          as if by a #assert preprocessing directive.
          Preassertions:
                   system(unix)
                   cpu(sparc)
                   machine(sparc)

          The above are not predefined in -Xc mode.

          If -A is followed by a dash (-)  only,  it  causes  all
          predefined macros (other than those that begin with __)
          and predefined assertions to be forgotten.

     -B [static|dynamic]
          -B dynamic causes the link editor  to  look  for  files
          named  libx.so  and  then  for  files named libx.a when
          given the -lx option.  -B static causes the link editor
          to  look  only for files named libx.a.  This option may
          be specified multiple times on the command  line  as  a
          toggle.  This option and its argument are passed to ld.

     -C   Cause the preprocessor to pass along all comments other
          than those on preprocessing directive lines.

     -c   Suppress linking with ld(1) and produce a .o  file  for
          each  source  file.   A single object file can be named
          explicitly using the -o option.

     -cg89
          This option is a macro for:
          =xarch=v7 -xchip=old -xcache=64/32/1.

     -cg92
          This option is a macro for:
          =xarch=v8 -xchip=super -xcache=16/64/4:1024/64/1.

     -Dname[=token]
          Associates name with the specified token  as  if  by  a
          #define  preprocessing  directive.   If  no  =token  is
          specified, the token 1 is supplied.
          Predefinitions:
                   sparc
                   sun
                   unix

          The above are not predefined in -Xc mode.
          These predefinitions are valid in all modes:
                   __sparc,
                   __unix,
                   __sun,
                   __BUILTIN_VA_ARG_INCR
                   __SUNPRO_C=0x400
                   __SVR4
                   __`uname -s` `uname -r`

     -dalign
          Generate double-word load/store  instructions  whenever
          possible  for  improved  performance.  Assumes that all
          double and long long type data are double-word aligned,
          and  should  not  be used when correct alignment is not
          assured.

     -d [y|n]
          -dy specifies dynamic linking, which is the default, in
          the  link  editor.  -dn specifies static linking in the
          link editor.  This option and its argument  are  passed
          to ld.

     -dryrun
          Show but do not execute the commands constructed by the
          compilation driver.

     -E   Preprocess only the named C files and send  the  result
          to  the  standard  output.   The  output  will  contain
          preprocessing directives for use by the  next  pass  of
          the compilation system.

     -fast
          Select the optimum combination of  compilation  options
          for  speed.   This  should provide close to the maximum
          performance for most  realistic  applications.  Modules
          compiled with -fast , must also be linked with -fast .

          It is a convenience option, and it chooses the  fastest
          code  generation  option  available on the compile-time
          hardware, the optimization level -O2, a set  of  inline
          expansion  templates, the -fns option, the -ftrap=%none
          option, and the -dalign option.

          If you combine  -fast  with  other  options,  the  last
          specification applies.  The code generation option, the
          optimization level and using inline template files  can
          be  overridden  by  subsequent  switches.  For example,
          although the optimization part of -fast is  -O2  ,  the
          optimization part of -fast -O1 is -O1 .

          Do not use this option for programs that depend on IEEE
          standard  exception  handling;  you  can  get different
          numerical results, premature  program  termination,  or
          unexpected SIGFPE signals.

     -fd  Report old-style function definitions and declarations.

     -flags
          Print a summary of each compiler option.

     -fnonstd
          This option is a macro for -fns and -ftrap=common.

     -fns Turn on the SPARC nonstandard floating-point mode.

          The default is the SPARC standard floating-point mode.

          If you compile one routine with -fns, then compile  all
          the  program  routines with the -fns option; otherwise,
          you can get unexpected results.

     -fround=r
          Set the IEEE 754 rounding mode that is  established  at
          runtime during the program initialization.

          r must be one of: nearest, tozero, negative, positive.

          The default is -fround=nearest.

          The meanings are the same as those for  the  ieee_flags
          subroutine.

          If you compile one routine with -fround=r, compile  all
          the  program  routines  with the same -fround=r option;
          otherwise, you can get unexpected results.

     -fsimple[=n]
          Allow the optimizer  to  make  simplifying  assumptions
          concerning  floating-point arithmetic. If n is present,
          it must be 0, 1, or 2.

          The defaults are:
          o  With no -fsimple[=n], the compiler uses -fsimple=0.
          o  With only -fsimple, no =n, the compiler uses  -fsim-
          ple=1.

          -fsimple=0
          Permit no simplifying assumptions. Preserve strict IEEE
          754 conformance.

          -fsimple=1
          Allow conservative simplifications. The resulting  code
          does  not  strictly  conform  to  IEEE 754, but numeric
          results of most programs are unchanged.

          With -fsimple=1, the optimizer can assume  the  follow-
          ing:
          o  The IEEE 754 default rounding/trapping modes do  not
          change after process initialization.
          o Computations producing no visible result  other  than
          potential floating- point exceptions may be deleted.
          o Computations with Infinity or NaNs as  operands  need
          not  propagate  NaNs to their results. For example, x*0
          may be replaced by 0.
          o Computations do not depend on sign of zero.

          With -fsimple=1, the optimizer is not allowed to optim-
          ize  completely  without  regard  to roundoff or excep-
          tions. In particular, a floating-point computation can-
          not  be replaced by one that produces different results
          with rounding modes held constant at  run  time.  -fast
          implies -fsimple=1.

          -fsimple=2
          Permit aggressive floating point optimizations that may
          cause   many  programs  to  produce  different  numeric
          results due to changes in rounding. For example, permit
          the  optimizer  to replace all computations of x/y in a
          given loop with x*z, where  x/y  is  guaranteed  to  be
          evaluated  at  least  once  in the loop, z=1/y, and the
          values of y and z are known  to  have  constant  values
          during execution of the loop.

          Even with -fsimple=2, the optimizer still is  not  per-
          mitted  to  introduce  a  floating point exception in a
          program that otherwise produces none.

     -fsingle
          ( -Xt and -Xs  modes  only).  Causes  the  compiler  to
          evaluate  float  expressions as single precision rather
          than double precision.  (This option has no  effect  if
          the  compiler  is  used  in either -Xa or -Xc modes, as
          float expressions are already evaluated as single  pre-
          cision.)

     -ftrap=t
          Set the IEEE 754 trapping mode in effect at startup.

          t is a comma-separated list that  consists  of  one  or
          more   of   the   following:   %all,   %none,   common,
          [no%]invalid,      [no%]overflow,       [no%]underflow,
          [no%]division, [no%]inexact.

          The default is -ftrap=%none.

          This option sets the IEEE 754 trapping modes  that  are
          established  at  program initialization.  Processing is
          left-to-right.  The common exceptions,  by  definition,
          are invalid, division by zero, and overflow.

          Example: -ftrap=%all,no%inexact means  set  all  traps,
          except inexact.

          The meanings are the same as for the ieee_flags subrou-
          tine, except that:
          o %all turns on all the trapping modes.
          o %none, the default, turns off all trapping modes.
          o A no% prefix turns off that specific trapping mode.

          If you compile one routine with -ftrap=t,  compile  all
          routines  of the program with the same -ftrap=t option;
          otherwise, you can get unexpected results.
     -G   Direct the link  editor  to  produce  a  shared  object
          rather  than  a  dynamically  linked  executable.  This
          option is passed to ld.  It cannot be used with the -dn
          option.

     -g   Produce additional symbol table information for dbx(1).

          The -g option makes  -xildon  the  default  incremental
          linker  option. See -xildon.  Invoke ild in place of ld
          unless any of the following are true:  The -G option is
          present,  the  -xildoff  option  is present, any source
          files are named on the command line.

          When used with the  -O  option,  a  limited  amount  of
          debugging is available. The combination, -xO4 -g, turns
          off the inlining that you usually get with -xO4.

     -H   Print, one  per  line,  the  path  name  of  each  file
          included during the current compilation on the standard
          error output.

     -help
          Display a one-line summary of compiler options.

     -hname
          Names a shared  dynamic  library.  The   -hname  option
          assigns  a name to a shared dynamic library.  This pro-
          vides versions of a shared dynamic library. In general,
          the  name  after   -h  should  be exactly what you have
          after the  -o. You may insert a space between   -h  and
          name. This option is passed to  ld.

     -Idir
          Add dir to the list of directories in which  to  search
          for  #include files with relative filenames (not begin-
          ning with slash /).  The  preprocessor  first  searches
          for  #include files in the directory containing source-
          file, then in directories named  with  -I  options  (if
          any), and finally, in /usr/include.

     -inline=[f1,...,fn]
          For user-written routines, try  to  inline  only  those
          named  in the list f1 to fn.  It tries routines only in
          the file being compiled.  The list is a comma-separated
          list of functions and subroutines.

          If compiling with -O3, this can  increase  optimization
          by inlining some routines.  The -O3 option inlines none
          by itself.

          If compiling with -O4, this can  decrease  optimization
          by  restricting  inlining to only those routines in the
          list. With -O4, the compiler normally tries  to  inline
          all  user-written subroutines and functions.  When xin-
          line= is specified with an empty  rlist,  it  indicates
          that  none of the routines in the source file are to be
          inlined.

          A routine is not inlined if any of the following  apply
          (no warning):
          o  Optimization is less than -O3
          o  The routine cannot be found
          o  Inlining the routine does  not  look  profitable  or
          safe to iropt
          o  The source for the routine is not in the file  being
          compiled

     -KPIC
          Like -Kpic, but allows the global offset table to  span
          the range of 32-bit addresses in those rare cases where
          there are too many global data objects for -Kpic.

     -Kpic
          Produce position-independent code.  Each reference to a
          global datum is generated as a dereference of a pointer
          in the global offset table.  Each function call is gen-
          erated  in  pc-relative  addressing mode through a pro-
          cedure linkage table.  The size of  the  global  offset
          table is 8K on SPARC processors.

     -keeptmp
          Retains files created during compilation,  rather  than
          automatically deleting them.

     -Ldir
          Add dir to the list of directories  containing  object-
          library routines (for linking using ld(1).

     -lname
          Link with object library name (for ld(1)).  This option
          must follow the sourcefile arguments.

     -libmieee
          Force IEEE 754 style return values for math routines in
          exceptional  cases.   In such cases, no exeception mes-
          sage will be printed, and errno should  not  be  relied
          on.

     -libmil
          Inlines some library routines for faster execution.

     -M   Run only the macro preprocessor (cpp) on  the  named  C
          programs,  requesting  that it generate makefile depen-
          dencies and send the result to the standard output (see
          make(1) for details about makefiles and dependencies).

     -misalign
          -misalign assumes that data is not properly aligned and
          thus  very  conservative  loads and stores must be used
          for data, that is, one  byte  at  a  time.  Using  this
          option  can  cause  significant performance degradation
          when running the program.

     -misalign2
          -misalign2, like -misalign, assumes that  data  is  not
          properly  aligned,  but that data is at least half-word
          aligned. Though conservative uses of loads  and  stores
          must be used for data, the performance degradation when
          running a program should be less than for -misalign.

     -mt  Passes D_REENTRANT to preprocessor. Appends -l  thread.
          If  you are doing your own multithread coding, you must
          use this option in the  compile  and  link  steps.   To
          obtain  faster  execution,  this option requires a mul-
          tiprocessor system. On a single-processor  system,  the
          resulting executable usually runs more slowly with this
          option.

     -native
          Ascertain which code-generation options  are  available
          on  the  machine  running  the compiler, and direct the
          compiler to generate code targeted for that machine.

          This option is a synonym for -xtarget=native .

          The -fast macro includes -native in its expansion.

     -nolib
          Does not link any libraries by default; that is, no  -l
          options  are  passed  to  ld . Normally, the acc driver
          passes -lm -lansi -lc to ld .

          When you use -nolib , you have to pass all  -l  options
          yourself. For example:
               acc test.c -nolib -lansi  -Bstatic  -lm  -Bdynamic
               -lc
          links libm statically and the other  libraries  dynami-
          cally.

     -nolibmil
          Reset -fast so that it does  not  include  inline  tem-
          plates.   Use  this  after  the  -fast option:  cc fast
          nolibmil ...

     -noqueue
          Tells the compiler not to queue this compile request if
          a license is not available.

     -O[1|2|3|4|5]
          Optimize the object code.  May be used with -g, but not
          with  -xa.  Specifying  -O  is equivalent to specifying
          -O2.  Level is one of:

               1    Do basic local optimization (peephole).

               2    Do basic local and global optimization.  This
                    is  induction variable elimination, local and
                    global  common   subexpression   elimination,
                    algebraic  simplification,  copy propagation,
                    constant propagation, loop-invariant  optimi-
                    zation,   register  allocation,  basic  block
                    merging,  tail  recursion  elimination,  dead
                    code  elimination,  tail call elimination and
                    complex expression expansion.

                    The -O2 level does not assign global,  exter-
                    nal,  or indirect references to registers. It
                    treats these references and definitions as if
                    they  were  declared "volatile."  In general,
                    the -O2 level results in minimum code size.

               3    Beside what -O2  does,  this  also  optimizes
                    references and definitions for external vari-
                    ables.  Loop unrolling and software  pipelin-
                    ing  are  also  performed. The -O3 level does
                    not trace the effects of pointer assignments.
                    When compiling either device drivers, or pro-
                    grams that  modify  external  variables  from
                    within  signal  handlers, you may need to use
                    the volatile type qualifier  to  protect  the
                    object from optimization. In general, the -O3
                    level results in increased code size.

               4    Besides  what  -O3  does,  this   also   does
                    automatic  inlining of functions contained in
                    the same file; this usually  improves  execu-
                    tion  speed.  The  -O4  level  does trace the
                    effects of pointer assignments.  In  general,
                    the -O4 level results in increased code size.

               5    Generate the highest level  of  optimization.
                    Use  optimization  algorithms  that take more
                    compilation time or that do not have as  high
                    a  certainty  of  improving  execution  time.
                    Optimization at this level is more likely  to
                    improve  performance  if it is done with pro-
                    file feedback.

               If the optimizer runs out of memory, it  tries  to
               recover  by  retrying  the  current procedure at a
               lower level of optimization and resumes subsequent
               procedures  at the original level specified in the
               command-line option.

               If you optimize at -O3 or -O4 with very large pro-
               cedures  (thousands  of  lines of code in the same
               procedure), the  optimizer  may  require  a  large
               amount  of virtual memory.  In such cases, machine
               performance may degrade.

     -o outputfile
          Name the output file outputfile.  outputfile must  have
          the  appropriate suffix for the type of file to be pro-
          duced by the compilation (see FILES, below). outputfile
          cannot be the same as sourcefile (the compiler will not
          overwrite the source file).

     -P   Preprocess only.  Puts the output in a file with  a  .i
          suffix.   The  output will not contain any preprocessor
          line directives, unlike the -E option.

     -p   Prepare the object code to collect data  for  profiling
          with  prof(1).   Invokes a run-time recording mechanism
          that produces a mon.out file (at normal termination).

     -pg  Prepare the object code to collect data  for  profiling
          with  gprof(1).  Invokes a run-time recording mechanism
          that produces a gmon.out file (at normal termination).

     -PIC Same as -KPIC.

     -pic Same as -Kpic.

     -Qdir dir
          Look for compiler components in directory dir.

     -Qoption c arg
          Pass the option arg to the  component  c.   The  option
          must  be  appropriate  to  that component and may begin
          with a minus sign.   c  can  be  one  of:   acomp,  fbe
          (Solaris  2.x only) or as (Solaris 1.x only) cg, iropt,
          or ld.

     -Qpath dir
          Insert  directory dir into the compilation search path.
          The path will be searched for alternate versions of the
          compilation programs,  such  as  acomp(1),  and  ld(1).
          This path will also be searched first for certain relo-
          catable object files that are implicitly referenced  by
          the compiler driver, for example *crt*.o and bb_link.o.
     -Qproduce srctype
          Produce source code of the type sourcetype.  sourcetype
          can be one of:
               .i   Preprocessed C source.
               .o   Object file.
               .s   Assembler source.

     -qdir dir
          Same as -Qdir dir.

     -qoption c arg
          Same as -Qoption c arg.

     -qpath dir
          Same as -Qpath dir.

     -qproduce srctype
          Same as -Qproduce srctype.

     -R dir[:dir]
          A colon-separated list of directories used  to  specify
          library  search  directories to the runtime linker.  If
          present and not null, it  is  recorded  in  the  output
          object file and passed to the runtime linker.

          If both LD_RUN_PATH and the -R  option  are  specified,
          the -R option takes precedence.

     -S   Do not assemble the program  but  produce  an  assembly
          source file.

     -s   Remove all symbolic debugging information from the out-
          put object file.  Passed to ld(1).

     -sb  Generate extra symbol table  information  for  the  Sun
          Source Code Browser.

     -sbfast
          Create the database for the Sun  Source  Code  Browser,
          but do not actually compile.

     -strconst
          Insert string literals into the read-only data  section
          of the text segment instead of the data segment.

     -temp=dir
          Set directory for temporary files to be dir.

     -time
          Report execution  times  for  the  various  compilation
          passes.

     -Uname
          Cause any definition of name to be undefined, as if  by
          a  #undef preprocessing directive.  If the same name is
          specified for both -D and  -U,  name  is  not  defined,
          regardless of the order of the options.

     -unroll=n
          Specifies  whether  or  not  the   compiler   optimizes
          (unrolls)  loops.   n is a positive integer.  When n is
          1, it is a command and the compiler unrolls  no  loops.
          When n is greater than 1, the -unroll=n merely suggests
          to the compiler  that  unrolled  loops  be  unrolled  n
          times.

     -V   Print the name and version ID of each pass as the  com-
          piler executes.

     -v   Verbose.  Print the version number of the compiler  and
          the name of each program it executes.

     -vc  Directs  the  compiler  to  perform  stricter  semantic
          checks and enable other lint-like checks.

     -w   Do not print warnings.

     -X[a|c|s|t]
          Specify the degree of conformance to the ANSI  C  stan-
          dard.  The degree of conformance can be one of the fol-
          lowing:

          a (ANSI)
               ANSI C plus Sun C compatibility  extensions,  with
               semantic  changes required by ANSI C.  Where Sun C
               and ANSI C specify  different  semantics  for  the
               same  construct,  the compiler will issue warnings
               about the conflict and use the ANSI C  interpreta-
               tion. This is the default mode.

          c (conformance)
               Maximally conformant ANSI C, without Sun C  compa-
               tibility  extensions.   The  compiler  will  issue
               errors and warnings for programs that use non-ANSI
               C constructs.

          s (Sun C)
               The compiled language includes all features compa-
               tible  with  (pre-ANSI) Sun C.  The compiler tries
               to warn about all language  constructs  that  have
               differing  behavior between Sun ANSI C and the old
               Sun C. Invokes cpp for processing. __STDC__ is not
               defined in this mode.

          t (transition)
               ANSI  C  plus  Sun  C  compatibility   extensions,
               without  semantic  changes  required  by  ANSI  C.
               Where Sun C and ANSI C specify different semantics
               for  the  same  construct, the compiler will issue
               warnings about the conflict  and  use  the  Sun  C
               interpretation.

          The predefined macro __STDC__ has the value 0  for  -Xt
          and  -Xa,  and 1 for -Xc.  (It is not defined for -Xs.)
          All warning messages about differing  behavior  can  be
          eliminated through appropriate coding; for example, use
          of casts can eliminate the  integral  promotion  change
          warnings.

     -xa  Same as -a.

     -xarch=a
          Limit the set of instructions the compiler may use.

          a must  be  one  of:  generic,  v7,  v8a,  v8,  v8plus,
          v8plusa.

          Although this option can be used alone, it is  part  of
          the  expansion  of the -xtarget option; its primary use
          is to override a value supplied by the -xtarget option.

          This option limits the instructions generated to  those
          of the specified architecture, and allows the specified
          set of instructions.  The option does not guarantee the
          specified set is used; however, under optimization, the
          set is usually used.

          If this option is used with optimization, the appropri-
          ate  choice can provide good performance of the execut-
          able on the specified  architecture.  An  inappropriate
          choice  can  result  in  serious degradation of perfor-
          mance.

          v7, v8, and v8a are all binary compatible.  v8plus  and
          v8plusa  are binary compatible with each other and for-
          ward, but not backward. For any particular choice,  the
          generated  executable  can run much more slowly on ear-
          lier architectures (to the left  in  the  above  list).
          See the C 4.0 User's Guide for details.

          The -xarch values are:

          generic
                Get good performance on most  SPARCs,  and  major
                degradation on none. This is the default.

          v7    Limit the instruction set to V7 architecture.

          v8a   Limit the instruction set to the V8a  version  of
                the V8 architecture.

          v8    Limit the instruction set to V8 architecture.

          v8plus
                Limit the instruction set to the  V8plus  version
                of the V9 architecture.

          v8plusa
                Limit the instruction set to the V8plusa  version
                of the V9 architecture.

     -xautopar
          Turn on automatic parallelization for multiple  proces-
          sors.  Does  dependence  analysis  (analyze  loops  for
          inter- iteration data dependence) and loop  restructur-
          ing.  If optimization is not at -xO3 or higher, optimi-
          zation is raised to -xO3 and a warning is emitted.

     -xcache=c
          Define the cache properties for use by the optimizer.

          c must be one of the following:

          o generic

          o s1/l1/a1

          o s1/l1/a1:s2/l2/a2

          o s1/l1/a1:s2/l2/a2:s3/l3/a3

          The si/li/ai are defined as follows:

          si
            The size of the data cache at level i, in kilobytes

          li
            The line size of the data cache at level i, in bytes

          ai
            The associativity of the data cache at level i

          Although this option can be used alone, it is  part  of
          the  expansion  of the -xtarget option; its primary use
          is to override a value supplied by the -xtarget option.

          This option specifies the  cache  properties  that  the
          optimizer  can  use.  It  does  not  guarantee that any
          particular cache property is used.

          The -xcache values are:

          generic
                Define the cache properties for good  performance
                on most SPARCs.  This is the default.

          s1/l1/a1
                Define level 1 cache properties.

          s1/l1/a1:s2/l2/a2
                Define levels 1 and 2 cache properties.

          s1/l1/a1:s2/l2/a2:s3/l3/a3
                Define levels 1, 2, and 3 cache properties.

     -xCC Accept C++-style comments.

     -xcg89
          Same as -cg89.

     -xcg92
          Same as -cg92.

     -xchip=c
          Specify the target processor for use by the optimizer.

          c must be one of: generic, old, super, super2, micro,
          micro2, hyper, hyper2, powerup, ultra.

          Although this option can be used alone, it is part of
          the expansion of the -xtarget option; its primary use
          is to override a value supplied by the -xtarget option.

          This option specifies timing properties by specifying
          the target processor.

          Some effects are:

          o The ordering of instructions, that is, scheduling

          o The way the compiler uses branches

          o The instructions to use in cases where semantically
            equivalent alternatives are available

          The -xchip values are:

          generic
                 Use timing properties for good performance on
                 most SPARCs.
          old    Use timing properties of pre-SuperSPARC proces-
                 sors.

          super  Use timing properties of the SuperSPARC chip.

          super2 Use timing properties of the SuperSPARC II chip.

          micro  Use timing properties of the microSPARC chip.

          micro2 Use timing properties of the microSPARC II chip.

          hyper  Use timing properties of the hyperSPARC chip.

          hyper2 Use timing properties of the hyperSPARC II chip.

          powerup
                 Use timing properties of the Weitek PowerUp
                 chip.

          ultra  Use timing properties of the UltraSPARC chip.

     -xdepend
          Analyze loops for inter-iteration data dependencies and
          do loop restructuring.  Dependence analysis is included
          in -xautopar.  The dependency analysis is done at com-
          pile time.  The -xdepend option is ignored unless
          either -xO3 or -xO4 is on, explicitly, or by another
          option.

     -xe  Performs only syntax and semantic checking on the
          source files, but does not produce any object or exe-
          cutable code.

     -xexplicitpar
          Parallelize the loops that are specified.  You do the
          dependency analysis: analyze and specify loops for
          inter-iteration and data dependencies. The software
          parallelizes the specified loops. If optimization is
          not at -xO3 or higher, then it is raised to -xO3.

          Avoid -xexplicitpar if you do your own thread manage-
          ment.

          The -xexplicitpar option requires the iMPact C mul-
          tiprocessor enhancement package.  To get faster code,
          use this option on a multiprocessor system. On a
          single-processor system, the generated code usually
          runs slower.

          If you identify a loop for parallelization, and the
          loop has dependencies, you can get incorrect results,
          possibly different ones with each run, and with no
          warnings.  Do not apply an explicit parallel pragma to
          a reduction loop.  The explicit parallelization is
          done, but the reduction aspect of the loop is not done,
          and the results can be incorrect.

          If you use -xexplicitpar and compile and link in one
          step, then linking automatically includes the micro-
          tasking library and the threads-safe C runtime library.
          If you use -xexplicitpar and compile and link in
          separate steps, then you must also link with -xexpli-
          citpar.

     -xF  Enables performance analysis of the executable using
          the Analyzer and Debugger.  (See analyzer(1) and
          debugger(1) man pages.)  Produces code that can be
          reordered at the function level.  Each function in the
          file is placed in a separate section; for example,
          functions foo() and bar() will be placed in the sec-
          tions .text%foo and .text%bar , respectively.  Function
          ordering in the executable can be controlled by using
          -xF in conjunction with the -M option to ld (see
          ld(1)).

     -xhelp=f
          Display on-line help information.

          -xhelp=flags displays a summary of the compiler
          options; -xhelp=readme displays the readme file;
          -xhelp=errors displays the Error and Warning Messages
          file.

     -xildoff
          Turn off the incremental linker and force the use of
          ld.  This option is the default if you do not use the
          -g option, or you do use the -G option, or any source
          files are present on the command line.  Override this
          default by using the -xildon option.

     -xildon
          Turn on the incremental linker and force the use of ild
          in incremental mode. This option is the default if you
          use the -g option, and you do not use the -G option,
          and there are no source files present on the command
          line. Override this default by using the -xildoff
          option.

     -xinline=[f1,...,fn]
          Same as -inline.

     -xlibmieee
          Same as -libmieee.

     -xlibmil
          Same as -libmil.

     -xlicinfo
          Returns information about the licensing system.  In
          particular, it returns the name of the license server
          and the userids of users who have licenses checked out.
          When you use this option, the compiler is not invoked
          and a license is not checked out.

     -xloopinfo
          Show which loops are parallelized and which are not.
          This option is normally for use with the -xautopar and
          -xexplicitpar options.  It requires the iMPact C mul-
          tiprocessor enhancement package.

     -xM  Generate makefile dependencies.

     -xM1 Generate makefile dependencies.

     -xMerge
          Directs acc to merge the data segment with the text
          segment for assembler.  Data initialized in the object
          file produced by this compilation is read-only and
          (unless linked with ld-N) is shared between processes.

     -xnolib
          Same as -nolib.

     -xnolibmil
          Same as -nolibmil.

     -xO[1|2|3|4|5]
          Same as -O[1|2|3|4|5].

     -xP  Print prototypes for K&R C function definitions.

     -xparallel
          Parallelize both automatic and explicit loops. This
          option invokes -xautopar, -xdepend, and -xexplicitpar.
          There is a risk of producing incorrect results.

          Avoid -xparallel if you do your own thread management.

          This option requires the iMPact C multiprocessor
          enhancement package.  To get faster code, use this
          option on a multiprocessor SPARC system. On a single-
          processor system, the generated code usually runs more
          slowly.

          The -xautopar option (and therefore the -xparallel
          option) includes dependency analysis; that is, if you
          try a -xautopar both with and without -xdepend, there
          is no noticeable difference.

          If you compile and link in one step, -xparallel links
          with the microtasking library and the threads-safe C
          runtime library.  If you compile and link in separate
          steps, and you compile with -xparallel, then link with
          -xparallel.

     -xpg Same as -pg.

     -xprofile=p
          Collect data for a profile or use a profile to optim-
          ize.

          p must be collect, use[:name], or tcov.

          This option causes execution frequency data to be col-
          lected and saved during execution, then the data can be
          used in subsequent runs to improve performance. This
          option is only valid when a level of optimization is
          specified.

          collect
               Collect and save execution frequency for later use
               by the optimizer.

          use[:name]
               Use execution frequency data saved by the com-
               piler. The name is the name of the executable that
               is being analyzed. This name is optional. If name
               is not specified, a.out is assumed to be the name
               of the executable.

          tcov Correctly collects data for programs that have
               source code in header files or that make use of
               C++ templates.  See also -xa.

     -xreduction
          Analyze loops for reduction in automatic paralleliza-
          tion. To enable parallelization of reduction loops,
          specify both -xreduction and -xautopar.

          If you specify -xreduction without -xautopar, the com-
          piler issues a warning.

          This option requires the iMPact C multiprocessor
          enhancement package.  To get faster code, this option
          also requires a multiprocessor system.  On a single-
          processor system, the generated code usually runs more
          slowly.

          There is always potential for roundoff error with
          reduction.

          If you have a reduction loop to be parallelized, then
          use -xreduction with -xautopar.  Do not use an explicit
          pragma, because the explicit pragma prevents reduction
          for that loop, resulting in wrong answers.

     -xregs=r
          Specify the usage of registers for the generated code.

          r is a comma-separated list that consists of one or
          more of the following: [no%]appl, [no%]float.

          Example: -xregs=appl,no%float

          The -xregs= values are:

          appl   Allow using the registers g2, g3, and g4.

          no%appl
                 Do not use the appl registers.

          float  Allow using the floating-point registers as
                 specified in the SPARC ABI.

          no%float
                 Do not use the floating-point registers.

          The default is:  -regs=appl,float.

     -xrestrict=f
          Treat pointer-valued function parameters as restricted
          pointers. f is a comma-separated list that consists of
          one or more function parameters, %all, %none.  This
          command-line option can be used on its own, but is best
          used with optimization of -xO3 or greater.

          The default is %none. Specifying -xrestrict is
          equivalent to specifying -xrestrict=%all.

     -xs  Disable Auto-Read for dbx. Use this option in case you
          cannot keep the .o files around. It passes the -s
          option to the assembler.

          No Auto-Read is the older way of loading symbol tables.
          It places all symbol tables for dbx in the executable
          file. The linker links more slowly and dbx initializes
          more slowly.

          Auto-Read is the newer and default way of loading sym-
          bol tables. With Auto-Read, the information is
          distributed in the .o files, so that dbx loads the sym-
          bol table information only if and when it is needed.
          Hence, the linker links faster, and dbx initializes
          faster.

          With -xs, if you move the executables to another direc-
          tory, then to use dbx, you can ignore the object (.o)
          files.

          Without -xs, if you move the executables, you must move
          both the sources files and the object (.o) files, or
          set the path with the dbx pathmap or use command.

     -xsafe=mem
          Allow the compiler to assume no memory-based traps
          occur.

          This option grants permission to use the speculative
          load instruction on V9 machines.

     -xsb Same as -sb.

     -xsbfast
          Same as -sbfast.

     -xsfpconst
          Represent unsuffixed floating-point constants as single
          precision, instead of the default mode of double preci-
          sion. Not valid with -Xc.

     -xspace
          Do no optimizations that increase code size.  Example:
          Do not unroll loops.

     -xstrconst
          Same as -strconst.

     -xtarget=t
          Specify the target system for the instruction set and
          optimization.

          t must be one of: native, generic, system-name.

          The -xtarget option permits a quick and easy specifica-
          tion of the -xarch, -xchip, and -xcache combinations
          that occur on real systems.  The only meaning of -xtar-
          get is in its expansion.

          The -xtarget values are:

          native   Get the best performance on the host system.

          generic  Get the best performance for generic architec-
                   ture, chip, and cache.  This is the default.

          system-name
                   Get the best performance for the specified
                   system.
                   Valid system names are: sun4/15, sun4/20,
                   sun4/25, sun4/30, sun4/40, sun4/50, sun4/60,
                   sun4/65, sun4/75, sun4/110, sun4/150,
                   sun4/260, sun4/280, sun4/330, sun4/370,
                   sun4/390, sun4/470, sun4/490, sun4/630,
                   sun4/670, sun4/690, sselc, ssipc, ssipx, sslc,
                   sslt, sslx, sslx2, ssslc, ss1, ss1plus, ss2,
                   ss2p, ss4, ss5, ssvyger, ss10, ss10/hs11,
                   ss10/hs12, ss10/hs14, ss10/20, ss10/hs21,
                   ss10/hs22, ss10/30, ss10/40, ss10/41, ss10/50,
                   ss10/51, ss10/61, ss10/71, ss10/402, ss10/412,
                   ss10/512, ss10/514, ss10/612, ss10/712,
                   ss20/hs11, ss20/hs12, ss20/hs14, ss20/hs21,
                   ss20/hs22, ss20/51, ss20/61, ss20/71,
                   ss20/502, ss20/512, ss20/514, ss20/612,
                   ss20/712, ss600/41, ss600/51, ss600/61,
                   ss600/120, ss600/140, ss600/412, ss600/512,
                   ss600/514, ss600/612, ss1000, sc2000, cs6400,
                   solb5, solb6, ultra, ultra1/140, ultra1/170,
                   ultra1/1170, ultra1/2170, ultra1/2200.
                   See the section on -xtarget=t in the C 4.0
                   User's Guide for the -xtarget expansions that
                   show the mneumonic encodings of the actual
                   system names and numbers.

          This option is a macro.  Each specific value for
          -xtarget expands into a specific set of values for the
          -xarch, -xchip, and -xcache options.  For example:
          -xtarget=sun4/15 is equivalent to:
          -xarch=v8a -xchip=micro -xcache=2/16/1

     -xtemp=dir
          Set directory for temporary files to dir.

     -xtime
          Same as -time.

     -xtransition
          Issue warnings for differences between K&R C and ANSI
          C.

     -xunroll=n
          Same as -unroll.

     -xvpara
          Issue warnings for loops that may not be safe to
          parallelize.  As the compiler detects each explicitly
          parallelized loop that has dependencies, it issues a
          warning message but the loop is parallelized.  Use with
          the -xexplicitpar option and the #pragma MP directive.

          This option requires the iMPact C multiprocessor
          enhancement package.

     -Y,dir
          Change default directories for finding libraries files.

     -Zll Create the lock_lint database files (.ll files), one
          per each .c file compiled for the lock_lint(1) program,
          which is included in the iMPact product. Do not actu-
          ally compile.

     -Zlp Prepare object files for the loop profiler, looptool.
          The looptool(1) utility can then be run to generate
          loop statistics about the program. Use this option with
          -xdepend; if -xdepend is not explicitly or implicitly
          specified, turns on -xdepend and issues a warning. If
          optimization is not at -O3 or higher, optimization is
          raised to -O3 and a warning is issued.

          The -Zlp option requires the iMPact C multiprocessor
          enhancement package.

     -Ztha
          Prepare code for analysis by the thread analyzer, the
          performance analysis tool for multithreaded code.

     acc recognizes -r, -u, -YP,dir, and -z, and passes these
     options and their arguments to ld.  acc also passes any
     unrecognized options to ld with a warning.

  PRAGMAS
     The following #pragmas are recognized by the compilation
     system:
     #prama align, #pragma fini, #prama init, #prama ident,
     #pragma int_to_unsigned, #prama MP serial_loop, #prama MP
     serial_loop_nested, #prama MP taskloop, #prama
     nomemorydepend, #prama no_side_effect, #pragma pack, #prama
     pipeloop, #pragma unknown_control_flow, #prama unroll,
     #prama weak.
     Refer to the C 4.0 User's Guide for more information on
     these pragmas.

FILES
     a.out                         executable output file
     file.a                        library of object files
     file.c                        C source file
     file.d                        tcov(1) test coverage input
                                   file
     file.i                        C source file after prepro-
                                   cessing
     file.il                       inline expansion file
     file.o                        object file
     file.s                        assembler source file
     file.tcov                     output from tcov(1)
     acc                           compiler command line driver
     acomp                         compiler front end
     cg                            code generator
     crt1.o                        runtime startup code
     crti.o                        runtime startup code
     crtn.o                        runtime startup code
     fbe                           assembler
     gcrt1.o                       startup for profiling with
                                   gprof(1)
     gmon.out                      default profile file for -pg
     iropt                         global optimzer
     mcrt1.o                       start-up for profiling with
                                   prof(1) and intro(3)
     mon.out                       default profile file for -p
     .sb                           The directory used to store
                                   sbrowser(1) data when the -xsb
                                   or -xsbfast flag is used.
     .sbinit                       A file containing commands
                                   which can be used to specify
                                   the location of the .sb direc-
                                   tory and to control the execu-
                                   tion of sbcleanup
     sbcleanup                     deletes obsolete files in the
                                   .sb directory and creates an
                                   up-to-date .sb/Index file

SEE ALSO
     ar(1), as(1), cflow(1), ctags(1), cxref(1), dbx(1),
     gprof(1), ld(1), lint(1), m4(1), make(1S), prof(1), tcov(1)

     C 4.0 User's Guide

     B. W. Kernighan and D. M. Ritchie, The C Programming
     Language, Prentice-Hall, 1978

DIAGNOSTICS
     The diagnostics produced by the C compiler are intended to
     be self-explanatory.  Occasional obscure messages may be
     produced by the preprocessor, assembler, or loader.

                  Last change: 5 September 1995                25

pgsql-hackers by date:

Previous
From: "Andy Hallam"
Date:
Subject: ODBC SQLBindParameter and UNICODE strings
Next
From: "Korshunov Ilya"
Date:
Subject: may be bug in pg_dumpall in 7.0.3