Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:plunky:20120329124750

Diff

Diff from 1.30 to:

Annotations

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

Annotated File View

plunky
1.30
1 .\"     $Id: ccom.1,v 1.30 2012/03/29 12:47:50 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.
plunky
1.30
312 .It Sy GCC system_header
313 GNU C compatibility.
314 Currently not implemented.
plunky
1.27
315 .It Sy GCC visibility
316 GNU C compatibility.
317 Currently not implemented.
318 .It Sy pack Ns Pq Op Ar n
319 Set the default maximum alignment for structures and unions, such that
320 members will have their natural alignment requirements clamped at this
321 value and may be stored misaligned.
322 If
323 .Ar n
324 is not given, the alignment is reset to the target default.
325 .It Sy pack Ns Pq Sy push Ns Op , Ar n
326 Push the current pack setting onto an internal stack then, if
327 .Ar n
328 is given, change the default alignment for structures and unions.
329 Currently not implemented.
330 .It Sy pack Ns Pq Sy pop
331 Change the pack setting to the most recently pushed value, and remove
332 that setting from the stack.
333 Currently not implemented.
334 .It Sy packed Op Ar n
335 Set the maximum alignment for the structure or union defined
336 in the current statement.
337 If
338 .Ar n
339 is not given, the default value of 1 is used.
340 .Pq Currently this works except Ar n is not used
341 .It Sy aligned Op Ar n
342 Set the minimum alignment for the structure or union defined
343 in the current statement.
344 .It Sy rename Ar name
345 Provide an alternative
346 .Ar name
347 which will be used to reference the object declared in the current statement.
348 .It Sy weak Ar name Ns Op = Ns Ar alias
349 Mark
350 .Ar name
351 as a weak rather than a global symbol, to allow its definition to be
352 overridden at link time.
353 If an
354 .Ar alias
355 is given, this will be used as the default value of
plunky
1.28
356 .Ar name .
plunky
1.27
357 .It Sy ident
358 Currently not implemented.
359 .El
360 .Lp
361 and the following target-specific operations are handled by
362 machine-dependent code:
plunky
1.29
363 .Bl -tag -width Ds
plunky
1.27
364 .It Sy tls
365 For AMD64 and i386 targets, the variable declared in the current statement
366 will be referenced via the
367 .Dq thread-local storage
368 mechanism.
369 .It Sy init
370 For AMD64, ARM, HPPA, i386, MIPS and PowerPC targets, when the current statement is a
371 function declaration, generate a reference in the
372 .Sy .ctors
373 section, enabling library code to call the function prior to entering
374 .Fn main .
375 .It Sy fini
376 For AMD64, ARM, HPPA, i386, MIPS and PowerPC targets, when the current statement is a
377 function declaration, generate a reference in the
378 .Sy .dtors
379 section, enabling library code to call the function when
380 .Fn main
381 returns or the
382 .Fn exit
383 function is called.
384 .It Sy section Ar name
385 For AMD64, ARM, HPPA and i386 targets, place the subsequent code in the named
386 section.
387 .Pq This is currently broken .
388 .It Sy alias Ar name
389 For AMD64, HPPA and i386 targets, emit assembler instructions providing an
390 alias for the symbol defined by the current statement.
391 .It Sy stdcall
392 For i386 targets, enable
393 .Dq stdcall
394 semantics during code generation, where function arguments are passed on
395 the stack in right-to-left order, and the callee is responsible for adjusting
396 the stack pointer before returning.
397 Any function result is passed in the EAX register.
398 On win32, the function name is postfixed with an
399 .Dq @
400 and the size of the stack adjustment.
401 .It Sy cdecl
402 For i386 targets, enable
403 .Dq cdecl
404 semantics during code generation, where function arguments are passed on
405 the stack in right-to-left order, and the caller is responsible for cleaning
406 up the stack after the function returns.
407 Any function result is passed in the EAX register.
408 This is the default.
409 .It Sy fastcall
410 For i386-win32 targets, enable
411 .Dq fastcall
412 semantics during code generation.
413 .Po
414 Currently this is equivalent to
415 .Sy stdcall ,
416 which is likely wrong
417 .Pc .
418 .It Sy dllimport
419 For i386-win32 targets, references to the external symbol defined by
420 the current statement will be made via indirect access through a
421 location identified by the symbol name prefixed with
422 .Dq __imp_ .
423 .It Sy dllexport
424 For i386-win32 targets, the external symbol declared by the current
425 statement will be exported as an indirect reference to be
426 accessed with
427 .Sy dllimport .
428 The global locator will be the symbol name prefixed with
429 .Dq __imp_ .
430 Currently this is not completely implemented.
431 .El
432 .Pp
433 Any unknown
434 .Dq #pragma
435 directives will be ignored unless the
436 .Fl Wunknown-pragmas
437 diagnostic is in effect.
ragge
1.1
438 .Sh SEE ALSO
439 .Xr as 1 ,
440 .Xr cpp 1 ,
441 .Xr pcc 1
442 .Sh HISTORY
443 The
444 .Nm
plunky
1.21
445 compiler is based on the original Portable C Compiler by
446 .An "S. C. Johnson" ,
reed
1.7
447 written in the late 70's.
plunky
1.21
448 Even though much of the compiler has been rewritten
449 .Pq about 50% of the frontend code and 80% of the backend ,
450 some of the basics still remain.
451 Most is written by
452 .An "Anders Magnusson" ,
453 with the exception of the data-flow analysis part and
454 the SSA conversion code which is written by
455 .An "Peter A Jonsson" ,
456 and the Mips port that were written as part of a project
457 by undergraduate students at Lulea University of Technology.
reed
1.3
458 .Pp
459 This product includes software developed or owned by Caldera
460 International, Inc.
FishEye: Open Source License registered to PCC.
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-12-25 03:14 +0100