.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings.  \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
.    ds C`
.    ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{
.    if \nF \{
.        de IX
.        tm Index:\\$1\t\\n%\t"\\$2"
..
.        if !\nF==2 \{
.            nr % 0
.            nr F 2
.        \}
.    \}
.\}
.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
.    \" fudge factors for nroff and troff
.if n \{\
.    ds #H 0
.    ds #V .8m
.    ds #F .3m
.    ds #[ \f1
.    ds #] \fP
.\}
.if t \{\
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.    ds #V .6m
.    ds #F 0
.    ds #[ \&
.    ds #] \&
.\}
.    \" simple accents for nroff and troff
.if n \{\
.    ds ' \&
.    ds ` \&
.    ds ^ \&
.    ds , \&
.    ds ~ ~
.    ds /
.\}
.if t \{\
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
.    \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.    \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.    \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.    ds : e
.    ds 8 ss
.    ds o a
.    ds d- d\h'-1'\(ga
.    ds D- D\h'-1'\(hy
.    ds th \o'bp'
.    ds Th \o'LP'
.    ds ae ae
.    ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "GCCGO 1"
.TH GCCGO 1 "2015-12-04" "gcc-5.3.0" "GNU"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
gccgo \- A GCC\-based compiler for the Go language
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
gccgo [\fB\-c\fR|\fB\-S\fR]
      [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR]
      [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...]
      [\fB\-o\fR \fIoutfile\fR] \fIinfile\fR...
.PP
Only the most useful options are listed here; see below for the
remainder.
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
The \fBgccgo\fR command is a frontend to \fBgcc\fR and
supports many of the same options.    This manual
only documents the options specific to \fBgccgo\fR.
.PP
The \fBgccgo\fR command may be used to compile Go source code into
an object file, link a collection of object files together, or do both
in sequence.
.PP
Go source code is compiled as packages.  A package consists of one or
more Go source files.  All the files in a single package must be
compiled together, by passing all the files as arguments to
\&\fBgccgo\fR.  A single invocation of \fBgccgo\fR may only
compile a single package.
.PP
One Go package may \f(CW\*(C`import\*(C'\fR a different Go package.  The imported
package must have already been compiled; \fBgccgo\fR will read
the import data directly from the compiled package.  When this package
is later linked, the compiled form of the package must be included in
the link command.
.PP
Go programs must generally be compiled with debugging information, and
\&\fB\-g1\fR is the default as described below.  Stripping a Go
program will generally cause it to misbehave or fail.
.SH "OPTIONS"
.IX Header "OPTIONS"
.IP "\fB\-I\fR\fIdir\fR" 4
.IX Item "-Idir"
Specify a directory to use when searching for an import package at
compile time.
.IP "\fB\-L\fR\fIdir\fR" 4
.IX Item "-Ldir"
When linking, specify a library search directory, as with
\&\fBgcc\fR.
.IP "\fB\-fgo\-pkgpath=\fR\fIstring\fR" 4
.IX Item "-fgo-pkgpath=string"
Set the package path to use.  This sets the value returned by the
PkgPath method of reflect.Type objects.  It is also used for the names
of globally visible symbols.  The argument to this option should
normally be the string that will be used to import this package after
it has been installed; in other words, a pathname within the
directories specified by the \fB\-I\fR option.
.IP "\fB\-fgo\-prefix=\fR\fIstring\fR" 4
.IX Item "-fgo-prefix=string"
An alternative to \fB\-fgo\-pkgpath\fR.  The argument will be
combined with the package name from the source file to produce the
package path.  If \fB\-fgo\-pkgpath\fR is used, \fB\-fgo\-prefix\fR
will be ignored.
.Sp
Go permits a single program to include more than one package with the
same name in the \f(CW\*(C`package\*(C'\fR clause in the source file, though
obviously the two packages must be imported using different pathnames.
In order for this to work with \fBgccgo\fR, either
\&\fB\-fgo\-pkgpath\fR or \fB\-fgo\-prefix\fR must be specified when
compiling a package.
.Sp
Using either \fB\-fgo\-pkgpath\fR or \fB\-fgo\-prefix\fR disables
the special treatment of the \f(CW\*(C`main\*(C'\fR package and permits that
package to be imported like any other.
.IP "\fB\-fgo\-relative\-import\-path=\fR\fIdir\fR" 4
.IX Item "-fgo-relative-import-path=dir"
A relative import is an import that starts with \fI./\fR or
\&\fI../\fR.  If this option is used, \fBgccgo\fR will use
\&\fIdir\fR as a prefix for the relative import when searching for it.
.IP "\fB\-frequire\-return\-statement\fR" 4
.IX Item "-frequire-return-statement"
.PD 0
.IP "\fB\-fno\-require\-return\-statement\fR" 4
.IX Item "-fno-require-return-statement"
.PD
By default \fBgccgo\fR will warn about functions which have one or
more return parameters but lack an explicit \f(CW\*(C`return\*(C'\fR statement.
This warning may be disabled using
\&\fB\-fno\-require\-return\-statement\fR.
.IP "\fB\-fgo\-check\-divide\-zero\fR" 4
.IX Item "-fgo-check-divide-zero"
Add explicit checks for division by zero.  In Go a division (or
modulos) by zero causes a panic.  On Unix systems this is detected in
the runtime by catching the \f(CW\*(C`SIGFPE\*(C'\fR signal.  Some processors,
such as PowerPC, do not generate a \s-1SIGFPE\s0 on division by zero.  Some
runtimes do not generate a signal that can be caught.  On those
systems, this option may be used.  Or the checks may be removed via
\&\fB\-fno\-go\-check\-divide\-zero\fR.  This option is currently on by
default, but in the future may be off by default on systems that do
not require it.
.IP "\fB\-fgo\-check\-divide\-overflow\fR" 4
.IX Item "-fgo-check-divide-overflow"
Add explicit checks for division overflow.  For example, division
overflow occurs when computing \f(CW\*(C`INT_MIN / \-1\*(C'\fR.  In Go this should
be wrapped, to produce \f(CW\*(C`INT_MIN\*(C'\fR.  Some processors, such as x86,
generate a trap on division overflow.  On those systems, this option
may be used.  Or the checks may be removed via
\&\fB\-fno\-go\-check\-divide\-overflow\fR.  This option is currently on
by default, but in the future may be off by default on systems that do
not require it.
.IP "\fB\-g\fR" 4
.IX Item "-g"
This is the standard \fBgcc\fR option.  It
is mentioned here because by default \fBgccgo\fR turns on
debugging information generation with the equivalent of the standard
option \fB\-g1\fR.  This is because Go programs require debugging
information to be available in order to get backtrace information.  An
explicit \fB\-g0\fR may be used to disable the generation of
debugging information, in which case certain standard library
functions, such as \f(CW\*(C`runtime.Callers\*(C'\fR, will not operate correctly.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
\&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7), \fIgcc\fR\|(1)
and the Info entries for \fIgccgo\fR and \fIgcc\fR.
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright (c) 2010\-2015 Free Software Foundation, Inc.
.PP
Permission is granted to copy, distribute and/or modify this document
under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, the Front-Cover Texts being (a) (see below), and
with the Back-Cover Texts being (b) (see below).
A copy of the license is included in the
man page \fIgfdl\fR\|(7).
.PP
(a) The \s-1FSF\s0's Front-Cover Text is:
.PP
.Vb 1
\&     A GNU Manual
.Ve
.PP
(b) The \s-1FSF\s0's Back-Cover Text is:
.PP
.Vb 3
\&     You have freedom to copy and modify this GNU Manual, like GNU
\&     software.  Copies published by the Free Software Foundation raise
\&     funds for GNU development.
.Ve
