1GCCGO(1)                              GNU                             GCCGO(1)
2
3
4

NAME

6       gccgo - A GCC-based compiler for the Go language
7

SYNOPSIS

9       gccgo [-c|-S]
10             [-g] [-pg] [-Olevel]
11             [-Idir...] [-Ldir...]
12             [-o outfile] infile...
13
14       Only the most useful options are listed here; see below for the
15       remainder.
16

DESCRIPTION

18       The gccgo command is a frontend to gcc and supports many of the same
19       options.    This manual only documents the options specific to gccgo.
20
21       The gccgo command may be used to compile Go source code into an object
22       file, link a collection of object files together, or do both in
23       sequence.
24
25       Go source code is compiled as packages.  A package consists of one or
26       more Go source files.  All the files in a single package must be
27       compiled together, by passing all the files as arguments to gccgo.  A
28       single invocation of gccgo may only compile a single package.
29
30       One Go package may "import" a different Go package.  The imported
31       package must have already been compiled; gccgo will read the import
32       data directly from the compiled package.  When this package is later
33       linked, the compiled form of the package must be included in the link
34       command.
35
36       Go programs must generally be compiled with debugging information, and
37       -g1 is the default as described below.  Stripping a Go program will
38       generally cause it to misbehave or fail.
39

OPTIONS

41       -Idir
42           Specify a directory to use when searching for an import package at
43           compile time.
44
45       -Ldir
46           When linking, specify a library search directory, as with gcc.
47
48       -fgo-pkgpath=string
49           Set the package path to use.  This sets the value returned by the
50           PkgPath method of reflect.Type objects.  It is also used for the
51           names of globally visible symbols.  The argument to this option
52           should normally be the string that will be used to import this
53           package after it has been installed; in other words, a pathname
54           within the directories specified by the -I option.
55
56       -fgo-prefix=string
57           An alternative to -fgo-pkgpath.  The argument will be combined with
58           the package name from the source file to produce the package path.
59           If -fgo-pkgpath is used, -fgo-prefix will be ignored.
60
61           Go permits a single program to include more than one package with
62           the same name in the "package" clause in the source file, though
63           obviously the two packages must be imported using different
64           pathnames.  In order for this to work with gccgo, either
65           -fgo-pkgpath or -fgo-prefix must be specified when compiling a
66           package.
67
68           Using either -fgo-pkgpath or -fgo-prefix disables the special
69           treatment of the "main" package and permits that package to be
70           imported like any other.
71
72       -fgo-relative-import-path=dir
73           A relative import is an import that starts with ./ or ../.  If this
74           option is used, gccgo will use dir as a prefix for the relative
75           import when searching for it.
76
77       -frequire-return-statement
78       -fno-require-return-statement
79           By default gccgo will warn about functions which have one or more
80           return parameters but lack an explicit "return" statement.  This
81           warning may be disabled using -fno-require-return-statement.
82
83       -fgo-check-divide-zero
84           Add explicit checks for division by zero.  In Go a division (or
85           modulos) by zero causes a panic.  On Unix systems this is detected
86           in the runtime by catching the "SIGFPE" signal.  Some processors,
87           such as PowerPC, do not generate a SIGFPE on division by zero.
88           Some runtimes do not generate a signal that can be caught.  On
89           those systems, this option may be used.  Or the checks may be
90           removed via -fno-go-check-divide-zero.  This option is currently on
91           by default, but in the future may be off by default on systems that
92           do not require it.
93
94       -fgo-check-divide-overflow
95           Add explicit checks for division overflow.  For example, division
96           overflow occurs when computing "INT_MIN / -1".  In Go this should
97           be wrapped, to produce "INT_MIN".  Some processors, such as x86,
98           generate a trap on division overflow.  On those systems, this
99           option may be used.  Or the checks may be removed via
100           -fno-go-check-divide-overflow.  This option is currently on by
101           default, but in the future may be off by default on systems that do
102           not require it.
103
104       -fno-go-optimize-allocs
105           Disable escape analysis, which tries to allocate objects on the
106           stack rather than the heap.
107
108       -fgo-debug-escapen
109           Output escape analysis debugging information.  Larger values of n
110           generate more information.
111
112       -fgo-debug-escape-hash=n
113           A hash value to debug escape analysis.  n is a binary string.  This
114           runs escape analysis only on functions whose names hash to values
115           that match the given suffix n.  This can be used to binary search
116           across functions to uncover escape analysis bugs.
117
118       -fgo-debug-optimization
119           Output optimization diagnostics.
120
121       -fgo-c-header=file
122           Write top-level named Go struct definitions to file as C code.
123           This is used when compiling the runtime package.
124
125       -fgo-compiling-runtime
126           Apply special rules for compiling the runtime package.  Implicit
127           memory allocation is forbidden.  Some additional compiler
128           directives are supported.
129
130       -fgo-embedcfg=file
131           Identify a JSON file used to map patterns used with special
132           "//go:embed" comments to the files named by the patterns.  The JSON
133           file should have two components: "Patterns" maps each pattern to a
134           list of file names, and "Files" maps each file name to a full path
135           to the file.  This option is intended for use by the go command to
136           implement "//go:embed".
137
138       -g  This is the standard gcc option.  It is mentioned here because by
139           default gccgo turns on debugging information generation with the
140           equivalent of the standard option -g1.  This is because Go programs
141           require debugging information to be available in order to get
142           backtrace information.  An explicit -g0 may be used to disable the
143           generation of debugging information, in which case certain standard
144           library functions, such as "runtime.Callers", will not operate
145           correctly.
146

SEE ALSO

148       gpl(7), gfdl(7), fsf-funding(7), gcc(1) and the Info entries for gccgo
149       and gcc.
150
152       Copyright (c) 2010-2023 Free Software Foundation, Inc.
153
154       Permission is granted to copy, distribute and/or modify this document
155       under the terms of the GNU Free Documentation License, Version 1.3 or
156       any later version published by the Free Software Foundation; with no
157       Invariant Sections, the Front-Cover Texts being (a) (see below), and
158       with the Back-Cover Texts being (b) (see below).  A copy of the license
159       is included in the man page gfdl(7).
160
161       (a) The FSF's Front-Cover Text is:
162
163            A GNU Manual
164
165       (b) The FSF's Back-Cover Text is:
166
167            You have freedom to copy and modify this GNU Manual, like GNU
168            software.  Copies published by the Free Software Foundation raise
169            funds for GNU development.
170
171
172
173gcc-13                            2023-12-05                          GCCGO(1)
Impressum