Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:plunky:20120327072631

Diff

Diff from 1.29 to:

Annotations

Annotate by Age | Author | Mixed | None
/fisheye/browse/pcc/pcc/cc/ccom/ccom.1

Annotated File View

plunky
1.29
1 .\"     $Id: ccom.1,v 1.29 2012/03/27 07:26:31 plunky Exp $
reed
1.9
2 .\"
ragge
1.1
3 .\" Copyright (c) 2007 Jeremy C. Reed <reed@reedmedia.net>
plunky
1.24
4 .\"
reed
1.7
5 .\" Permission to use, copy, modify, and/or distribute this software for any
6 .\" purpose with or without fee is hereby granted, provided that the above
ragge
1.1
7 .\" copyright notice and this permission notice appear in all copies.
reed
1.7
8 .\"
9 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR AND CONTRIBUTORS DISCLAIM
10 .\" ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11 .\" WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL AUTHOR AND
12 .\" CONTRIBUTORS BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13 .\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14 .\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
15 .\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
ragge
1.1
16 .\" THIS SOFTWARE.
plunky
1.12
17 .\"
plunky
1.25
18 .Dd March 22, 2012
reed
1.7
19 .Dt CCOM 1
ragge
1.1
20 .Os
21 .Sh NAME
22 .Nm ccom
23 .Nd C compiler
24 .Sh SYNOPSIS
25 .Nm
plunky
1.22
26 .Op Fl gkpsv
plunky
1.16
27 .Op Fl f Ar features
plunky
1.20
28 .Op Fl m Ar options
plunky
1.12
29 .Op Fl W Ar warnings
ragge
1.1
30 .Op Fl X Ar flags
plunky
1.13
31 .Op Fl x Ar settings
reed
1.5
32 .Op Fl Z Ar flags
ragge
1.1
33 .Op infile
34 .Op outfile
35 .Sh DESCRIPTION
36 The
37 .Nm
38 utility provides a C compiler.
39 The frontend is usually
40 .Xr pcc 1 .
reed
1.7
41 It is
42 .Em not
43 intended to be run directly.
ragge
1.1
44 .Nm
45 reads the C source from
46 .Ar infile
47 or standard input and writes the assembler source
48 to
49 .Ar outfile
50 or to standard output.
51 .Pp
52 The options are as follows:
53 .Bl -tag -width Ds
plunky
1.16
54 .It Fl f Ar feature
55 Enable language features.
56 Multiple
57 .Fl f
58 options can be given, the following features are supported:
59 .Bl -tag -width Ds
60 .It Sy stack-protector
61 Enable stack smashing protection.
62 Currently the same as
63 .Sy stack-protector-all .
64 .It Sy stack-protector-all
65 Enable stack smashing protection for all functions.
66 .It Sy pack-struct Ns Oo = Ns Ar n Oc
67 Specify maximum alignment for structure members, similar to a #pragma pack
68 statement at the start of the file.
69 If no value is given, the default is 1.
70 .It Sy freestanding
71 Emit code for a freestanding environment.
72 Currently not implemented.
73 .El
ragge
1.1
74 .It Fl g
plunky
1.22
75 Include debugging information in the output code for use by
76 symbolic and source-level debuggers.
77 Currently this uses the
78 .Sy stabs
79 format, encoding information in
80 .Em s Ns ymbol Em tab Ns le entrie Ns Em s.
gmcgarry
1.6
81 .It Fl k
82 Generate PIC code.
plunky
1.20
83 .It Fl m Ar option
84 Target-specific options, used in machine-dependent code.
85 Multiple
86 .Fl m
87 options can be given, the following options are supported:
88 .Bl -tag -width PowerPC
89 .It AMD64
90 .It ARM
plunky
1.28
91 .Sy little-endian ,
92 .Sy big-endian ,
93 .Sy fpe=fpa ,
94 .Sy fpe=vpf ,
95 .Sy soft-float ,
96 .Sy arch=armv1 ,
97 .Sy arch=armv2 ,
98 .Sy arch=armv2a ,
99 .Sy arch=armv3 ,
100 .Sy arch=armv4 ,
101 .Sy arch=armv4t ,
102 .Sy arch=armv4tej ,
103 .Sy arch=armv5 ,
104 .Sy arch=armv5te ,
105 .Sy arch=armv5tej ,
106 .Sy arch=armv6 ,
107 .Sy arch=armv6t2 ,
108 .Sy arch=armv6kz ,
plunky
1.20
109 .Sy arch=armv6k No \*(Am
plunky
1.28
110 .Sy arch=armv7 .
plunky
1.20
111 .It HPPA
112 .It i386
113 .It M16C
114 .It MIPS
115 .Sy little-endian No \*(Am
plunky
1.28
116 .Sy big-endian .
plunky
1.20
117 .It NOVA
118 .It PDP-10
119 .It PDP-11
120 .It PowerPC
plunky
1.28
121 .Sy little-endian ,
122 .Sy big-endian ,
plunky
1.20
123 .Sy soft-float No \*(Am
plunky
1.28
124 .Sy hard-float .
plunky
1.20
125 .It Sparc64
126 .It VAX
127 .El
plunky
1.14
128 .It Fl p
129 Generate profiling code.
ragge
1.1
130 .It Fl s
131 Print statistics to standard error when complete.
132 This includes:
133 name table entries, name string size, permanent allocated memory,
134 temporary allocated memory, lost memory, argument list unions,
135 dimension/function unions, struct/union/enum blocks, inline node count,
136 inline control blocks, and permanent symtab entries.
137 .\" TODO: explain units for above?
reed
1.3
138 .It Fl v
139 Display version.
plunky
1.12
140 .It Fl W Ar warning
141 Do some basic checks and emit warnings about possible coding problems.
142 Multiple
143 .Fl W
plunky
1.15
144 options can be given, the following warnings are supported:
ragge
1.1
145 .Bl -tag -width Ds
plunky
1.24
146 .It Sy error Ns Oo = Ns Ar warning Oc
147 Enable
148 .Ar warning ,
149 and treat it as an error condition.
150 If a specific warning is not given, producing any warning will cause an error.
reed
1.5
151 .It Sy implicit-function-declaration
plunky
1.12
152 (TODO) Require explicit prototypes for all called functions.
ragge
1.1
153 .It Sy implicit-int
plunky
1.12
154 (TODO) Warn when a function declaration lacks a type.
ragge
1.1
155 .It Sy missing-prototypes
plunky
1.12
156 Require explicit prototypes for all global function definitions.
157 .It Sy pointer-sign
158 Warn when pointer operations are done with mismatched signed and unsigned values.
159 .It Sy sign-compare
160 (TODO) Warn about comparisons between signed and unsigned values.
ragge
1.1
161 .It Sy strict-prototypes
plunky
1.12
162 (TODO) Require that function prototypes are strictly C99.
163 .It Sy shadow
164 Report when a local variable shadows something from a higher scope.
165 .It Sy truncate
166 Report when integer values may be implicitly truncated to fit a smaller type.
167 .It Sy unknown-pragmas
168 Report unhandled pragma statements.
169 .It Sy unreachable-code
170 Report statements that cannot be executed.
ragge
1.1
171 .El
plunky
1.24
172 .Pp
173 Any of the above may be prefixed with
174 .Dq no-
175 in order to disable the effect.
ragge
1.1
176 .\"
reed
1.3
177 .It Fl X Ar flags
178 C specific debugging where
179 .Ar flags
ragge
1.1
180 is one or more of the following:
plunky
1.17
181 .Pp
182 .Bl -tag -compact -width Ds
ragge
1.1
183 .It Sy b
184 Building of parse trees
185 .It Sy d
reed
1.7
186 Declarations (using multiple
reed
1.3
187 .Sy d
188 flags gives more output)
reed
1.5
189 .It Sy e
190 Pass1 trees at exit
191 .It Sy i
192 Initializations
gmcgarry
1.6
193 .It Sy n
194 Memory allocations
195 .It Sy o
196 Turn off optimisations
197 .It Sy p
198 Prototypes
199 .It Sy s
200 Inlining
ragge
1.1
201 .It Sy t
202 Type conversions
203 .It Sy x
204 Target-specific flag, used in machine-dependent code
205 .El
206 .\"
plunky
1.13
207 .It Fl x Ar setting
208 Enable
209 .Ar setting
210 in the compiler.
211 Multiple
212 .Fl x
213 options can be given, the following settings are supported:
214 .Bl -tag -width Ds
215 .It Sy ccp
216 Apply sparse conditional constant propagation techniques for optimization.
217 Currently not implemented.
218 .It Sy dce
219 Do dead code elimination.
reed
1.5
220 .It Sy deljumps
221 Delete redundant jumps and dead code.
ragge
1.19
222 .It Sy gnu89
223 .It Sy gnu99
plunky
1.26
224 Use GNU C semantics rather than C99 for some things.
plunky
1.13
225 Currently only inline.
plunky
1.11
226 .It Sy inline
227 Replace calls to functions marked with an inline specifier with a copy
228 of the actual function.
reed
1.5
229 .It Sy ssa
plunky
1.13
230 Convert statements into static single assignment form for optimization.
reed
1.7
231 Not yet finished.
reed
1.5
232 .It Sy tailcall
plunky
1.13
233 Enable optimization of tail-recursion functions.
reed
1.5
234 Currently not implemented.
235 .It Sy temps
plunky
1.13
236 Locate automatic variables into registers where possible, for further
reed
1.5
237 optimization by the register allocator.
plunky
1.23
238 .It Sy uchar
239 Treat character constants as unsigned values.
reed
1.5
240 .El
241 .\"
reed
1.3
242 .It Fl Z Ar flags
243 Code generator (pass2) specific debugging where
reed
1.7
244 .Ar flags
ragge
1.1
245 is one or more of the following:
plunky
1.17
246 .Pp
247 .Bl -tag -compact -width Ds
gmcgarry
1.6
248 .It Sy b
249 Basic block and SSA building
250 .It Sy c
251 Code printout
ragge
1.1
252 .It Sy e
253 Trees when entering pass2
reed
1.5
254 .It Sy f
255 Instruction matcher, may provide much output
plunky
1.25
256 .It Sy g
257 Print flow graphs
gmcgarry
1.6
258 .It Sy n
259 Memory allocation
ragge
1.1
260 .It Sy o
261 Instruction generator
262 .It Sy r
263 Register allocator
reed
1.5
264 .It Sy s
265 Shape matching in instruction generator
ragge
1.1
266 .It Sy t
267 Type matching in instruction generator
268 .It Sy u
269 Sethi-Ullman computations
270 .It Sy x
reed
1.7
271 Target-specific flag, used in machine-dependent code
ragge
1.1
272 .El
reed
1.4
273 .El
plunky
1.27
274 .Sh PRAGMAS
275 Input lines starting with a
276 .Dq #pragma
277 directive can be used to modify behaviour of
278 .Nm
279 during compilation.
280 All tokens up to the first unescaped newline are considered part
281 of the pragma command, with the following operations being recognized:
plunky
1.29
282 .Bl -tag -width Ds
plunky
1.27
283 .It Sy STDC
284 Standard C99 operator follows.
285 Currently no C99 operations are implemented, and any directives starting
286 with this token will be silently ignored.
287 .It Sy GCC diagnostic Ar effect Qq Ar option
288 GNU C compatibility.
289 Alter the effects of compiler diagnostics.
290 The required
291 .Ar effect
292 should be stated as
293 .Sy warning ,
294 .Sy error
295 or
296 .Sy ignored ,
297 followed by the compiler diagnostic
298 .Ar option
299 in double quotes.
300 For example, to force unknown pragmas to always generate an error,
301 a standard header might include
302 .Bd -literal -offset 2n
303 #pragma GCC diagnostic error "-Wunknown-pragmas"
304 .Ed
305 .It Sy GCC poison Ar identifier ...
306 GNU C compatibility.
307 Cause an error if any of the following
308 .Ar identifier Ns s
309 subsequently appear in the code
310 .Pq but not in any macro expansions .
311 Currently not implemented.
312 .It Sy GCC visibility
313 GNU C compatibility.
314 Currently not implemented.
315 .It Sy pack Ns Pq Op Ar n
316 Set the default maximum alignment for structures and unions, such that
317 members will have their natural alignment requirements clamped at this
318 value and may be stored misaligned.
319 If
320 .Ar n
321 is not given, the alignment is reset to the target default.
322 .It Sy pack Ns Pq Sy push Ns Op , Ar n
323 Push the current pack setting onto an internal stack then, if
324 .Ar n
325 is given, change the default alignment for structures and unions.
326 Currently not implemented.
327 .It Sy pack Ns Pq Sy pop
328 Change the pack setting to the most recently pushed value, and remove
329 that setting from the stack.
330 Currently not implemented.
331 .It Sy packed Op Ar n
332 Set the maximum alignment for the structure or union defined
333 in the current statement.
334 If
335 .Ar n
336 is not given, the default value of 1 is used.
337 .Pq Currently this works except Ar n is not used
338 .It Sy aligned Op Ar n
339 Set the minimum alignment for the structure or union defined
340 in the current statement.
341 .It Sy rename Ar name
342 Provide an alternative
343 .Ar name
344 which will be used to reference the object declared in the current statement.
345 .It Sy weak Ar name Ns Op = Ns Ar alias
346 Mark
347 .Ar name
348 as a weak rather than a global symbol, to allow its definition to be
349 overridden at link time.
350 If an
351 .Ar alias
352 is given, this will be used as the default value of
plunky
1.28
353 .Ar name .
plunky
1.27
354 .It Sy ident
355 Currently not implemented.
356 .El
357 .Lp
358 and the following target-specific operations are handled by
359 machine-dependent code:
plunky
1.29
360 .Bl -tag -width Ds
plunky
1.27
361 .It Sy tls
362 For AMD64 and i386 targets, the variable declared in the current statement
363 will be referenced via the
364 .Dq thread-local storage
365 mechanism.
366 .It Sy init
367 For AMD64, ARM, HPPA, i386, MIPS and PowerPC targets, when the current statement is a
368 function declaration, generate a reference in the
369 .Sy .ctors
370 section, enabling library code to call the function prior to entering
371 .Fn main .
372 .It Sy fini
373 For AMD64, ARM, HPPA, i386, MIPS and PowerPC targets, when the current statement is a
374 function declaration, generate a reference in the
375 .Sy .dtors
376 section, enabling library code to call the function when
377 .Fn main
378 returns or the
379 .Fn exit
380 function is called.
381 .It Sy section Ar name
382 For AMD64, ARM, HPPA and i386 targets, place the subsequent code in the named
383 section.
384 .Pq This is currently broken .
385 .It Sy alias Ar name
386 For AMD64, HPPA and i386 targets, emit assembler instructions providing an
387 alias for the symbol defined by the current statement.
388 .It Sy stdcall
389 For i386 targets, enable
390 .Dq stdcall
391 semantics during code generation, where function arguments are passed on
392 the stack in right-to-left order, and the callee is responsible for adjusting
393 the stack pointer before returning.
394 Any function result is passed in the EAX register.
395 On win32, the function name is postfixed with an
396 .Dq @
397 and the size of the stack adjustment.
398 .It Sy cdecl
399 For i386 targets, enable
400 .Dq cdecl
401 semantics during code generation, where function arguments are passed on
402 the stack in right-to-left order, and the caller is responsible for cleaning
403 up the stack after the function returns.
404 Any function result is passed in the EAX register.
405 This is the default.
406 .It Sy fastcall
407 For i386-win32 targets, enable
408 .Dq fastcall
409 semantics during code generation.
410 .Po
411 Currently this is equivalent to
412 .Sy stdcall ,
413 which is likely wrong
414 .Pc .
415 .It Sy dllimport
416 For i386-win32 targets, references to the external symbol defined by
417 the current statement will be made via indirect access through a
418 location identified by the symbol name prefixed with
419 .Dq __imp_ .
420 .It Sy dllexport
421 For i386-win32 targets, the external symbol declared by the current
422 statement will be exported as an indirect reference to be
423 accessed with
424 .Sy dllimport .
425 The global locator will be the symbol name prefixed with
426 .Dq __imp_ .
427 Currently this is not completely implemented.
428 .El
429 .Pp
430 Any unknown
431 .Dq #pragma
432 directives will be ignored unless the
433 .Fl Wunknown-pragmas
434 diagnostic is in effect.
ragge
1.1
435 .Sh SEE ALSO
436 .Xr as 1 ,
437 .Xr cpp 1 ,
438 .Xr pcc 1
439 .Sh HISTORY
440 The
441 .Nm
plunky
1.21
442 compiler is based on the original Portable C Compiler by
443 .An "S. C. Johnson" ,
reed
1.7
444 written in the late 70's.
plunky
1.21
445 Even though much of the compiler has been rewritten
446 .Pq about 50% of the frontend code and 80% of the backend ,
447 some of the basics still remain.
448 Most is written by
449 .An "Anders Magnusson" ,
450 with the exception of the data-flow analysis part and
451 the SSA conversion code which is written by
452 .An "Peter A Jonsson" ,
453 and the Mips port that were written as part of a project
454 by undergraduate students at Lulea University of Technology.
reed
1.3
455 .Pp
456 This product includes software developed or owned by Caldera
457 International, Inc.
FishEye: Open Source License registered to PCC.
Your maintenance has expired. You can renew your license at http://www.atlassian.com/fisheye/renew
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-09-01 23:01 +0200