Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:plunky:20140606145946

Diff

Diff from 1.31 to:

Annotations

Annotate by Age | Author | Mixed | None
plunky (322) ragge (75) reed (52) gmcgarry (16)
/fisheye/browse/pcc/pcc/cc/ccom/ccom.1

Annotated File View

plunky
1.31
1 .\"     $Id: ccom.1,v 1.31 2014/06/06 14:59:46 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.
plunky
1.31
151 .It Sy deprecated-declarations
152 Report whenever a symbol marked with the
153 .Sq deprecated
154 attribute is used.
155 This warning is enabled by default.
reed
1.5
156 .It Sy implicit-function-declaration
plunky
1.12
157 (TODO) Require explicit prototypes for all called functions.
ragge
1.1
158 .It Sy implicit-int
plunky
1.12
159 (TODO) Warn when a function declaration lacks a type.
ragge
1.1
160 .It Sy missing-prototypes
plunky
1.12
161 Require explicit prototypes for all global function definitions.
162 .It Sy pointer-sign
163 Warn when pointer operations are done with mismatched signed and unsigned values.
164 .It Sy sign-compare
165 (TODO) Warn about comparisons between signed and unsigned values.
ragge
1.1
166 .It Sy strict-prototypes
plunky
1.12
167 (TODO) Require that function prototypes are strictly C99.
168 .It Sy shadow
169 Report when a local variable shadows something from a higher scope.
170 .It Sy truncate
171 Report when integer values may be implicitly truncated to fit a smaller type.
172 .It Sy unknown-pragmas
173 Report unhandled pragma statements.
174 .It Sy unreachable-code
175 Report statements that cannot be executed.
ragge
1.1
176 .El
plunky
1.24
177 .Pp
178 Any of the above may be prefixed with
179 .Dq no-
180 in order to disable the effect.
ragge
1.1
181 .\"
reed
1.3
182 .It Fl X Ar flags
183 C specific debugging where
184 .Ar flags
ragge
1.1
185 is one or more of the following:
plunky
1.17
186 .Pp
187 .Bl -tag -compact -width Ds
ragge
1.1
188 .It Sy b
189 Building of parse trees
190 .It Sy d
reed
1.7
191 Declarations (using multiple
reed
1.3
192 .Sy d
193 flags gives more output)
reed
1.5
194 .It Sy e
195 Pass1 trees at exit
196 .It Sy i
197 Initializations
gmcgarry
1.6
198 .It Sy n
199 Memory allocations
200 .It Sy o
201 Turn off optimisations
202 .It Sy p
203 Prototypes
204 .It Sy s
205 Inlining
ragge
1.1
206 .It Sy t
207 Type conversions
208 .It Sy x
209 Target-specific flag, used in machine-dependent code
210 .El
211 .\"
plunky
1.13
212 .It Fl x Ar setting
213 Enable
214 .Ar setting
215 in the compiler.
216 Multiple
217 .Fl x
218 options can be given, the following settings are supported:
219 .Bl -tag -width Ds
220 .It Sy ccp
221 Apply sparse conditional constant propagation techniques for optimization.
222 Currently not implemented.
223 .It Sy dce
224 Do dead code elimination.
reed
1.5
225 .It Sy deljumps
226 Delete redundant jumps and dead code.
ragge
1.19
227 .It Sy gnu89
228 .It Sy gnu99
plunky
1.26
229 Use GNU C semantics rather than C99 for some things.
plunky
1.13
230 Currently only inline.
plunky
1.11
231 .It Sy inline
232 Replace calls to functions marked with an inline specifier with a copy
233 of the actual function.
reed
1.5
234 .It Sy ssa
plunky
1.13
235 Convert statements into static single assignment form for optimization.
reed
1.7
236 Not yet finished.
reed
1.5
237 .It Sy tailcall
plunky
1.13
238 Enable optimization of tail-recursion functions.
reed
1.5
239 Currently not implemented.
240 .It Sy temps
plunky
1.13
241 Locate automatic variables into registers where possible, for further
reed
1.5
242 optimization by the register allocator.
plunky
1.23
243 .It Sy uchar
244 Treat character constants as unsigned values.
reed
1.5
245 .El
246 .\"
reed
1.3
247 .It Fl Z Ar flags
248 Code generator (pass2) specific debugging where
reed
1.7
249 .Ar flags
ragge
1.1
250 is one or more of the following:
plunky
1.17
251 .Pp
252 .Bl -tag -compact -width Ds
gmcgarry
1.6
253 .It Sy b
254 Basic block and SSA building
255 .It Sy c
256 Code printout
ragge
1.1
257 .It Sy e
258 Trees when entering pass2
reed
1.5
259 .It Sy f
260 Instruction matcher, may provide much output
plunky
1.25
261 .It Sy g
262 Print flow graphs
gmcgarry
1.6
263 .It Sy n
264 Memory allocation
ragge
1.1
265 .It Sy o
266 Instruction generator
267 .It Sy r
268 Register allocator
reed
1.5
269 .It Sy s
270 Shape matching in instruction generator
ragge
1.1
271 .It Sy t
272 Type matching in instruction generator
273 .It Sy u
274 Sethi-Ullman computations
275 .It Sy x
reed
1.7
276 Target-specific flag, used in machine-dependent code
ragge
1.1
277 .El
reed
1.4
278 .El
plunky
1.27
279 .Sh PRAGMAS
280 Input lines starting with a
281 .Dq #pragma
282 directive can be used to modify behaviour of
283 .Nm
284 during compilation.
285 All tokens up to the first unescaped newline are considered part
286 of the pragma command, with the following operations being recognized:
plunky
1.29
287 .Bl -tag -width Ds
plunky
1.27
288 .It Sy STDC
289 Standard C99 operator follows.
290 Currently no C99 operations are implemented, and any directives starting
291 with this token will be silently ignored.
292 .It Sy GCC diagnostic Ar effect Qq Ar option
293 GNU C compatibility.
294 Alter the effects of compiler diagnostics.
295 The required
296 .Ar effect
297 should be stated as
298 .Sy warning ,
299 .Sy error
300 or
301 .Sy ignored ,
302 followed by the compiler diagnostic
303 .Ar option
304 in double quotes.
305 For example, to force unknown pragmas to always generate an error,
306 a standard header might include
307 .Bd -literal -offset 2n
308 #pragma GCC diagnostic error "-Wunknown-pragmas"
309 .Ed
310 .It Sy GCC poison Ar identifier ...
311 GNU C compatibility.
312 Cause an error if any of the following
313 .Ar identifier Ns s
314 subsequently appear in the code
315 .Pq but not in any macro expansions .
316 Currently not implemented.
plunky
1.30
317 .It Sy GCC system_header
318 GNU C compatibility.
319 Currently not implemented.
plunky
1.27
320 .It Sy GCC visibility
321 GNU C compatibility.
322 Currently not implemented.
323 .It Sy pack Ns Pq Op Ar n
324 Set the default maximum alignment for structures and unions, such that
325 members will have their natural alignment requirements clamped at this
326 value and may be stored misaligned.
327 If
328 .Ar n
329 is not given, the alignment is reset to the target default.
330 .It Sy pack Ns Pq Sy push Ns Op , Ar n
331 Push the current pack setting onto an internal stack then, if
332 .Ar n
333 is given, change the default alignment for structures and unions.
334 Currently not implemented.
335 .It Sy pack Ns Pq Sy pop
336 Change the pack setting to the most recently pushed value, and remove
337 that setting from the stack.
338 Currently not implemented.
339 .It Sy packed Op Ar n
340 Set the maximum alignment for the structure or union defined
341 in the current statement.
342 If
343 .Ar n
344 is not given, the default value of 1 is used.
345 .Pq Currently this works except Ar n is not used
346 .It Sy aligned Op Ar n
347 Set the minimum alignment for the structure or union defined
348 in the current statement.
349 .It Sy rename Ar name
350 Provide an alternative
351 .Ar name
352 which will be used to reference the object declared in the current statement.
353 .It Sy weak Ar name Ns Op = Ns Ar alias
354 Mark
355 .Ar name
356 as a weak rather than a global symbol, to allow its definition to be
357 overridden at link time.
358 If an
359 .Ar alias
360 is given, this will be used as the default value of
plunky
1.28
361 .Ar name .
plunky
1.27
362 .It Sy ident
363 Currently not implemented.
364 .El
365 .Lp
366 and the following target-specific operations are handled by
367 machine-dependent code:
plunky
1.29
368 .Bl -tag -width Ds
plunky
1.27
369 .It Sy tls
370 For AMD64 and i386 targets, the variable declared in the current statement
371 will be referenced via the
372 .Dq thread-local storage
373 mechanism.
374 .It Sy init
375 For AMD64, ARM, HPPA, i386, MIPS and PowerPC targets, when the current statement is a
376 function declaration, generate a reference in the
377 .Sy .ctors
378 section, enabling library code to call the function prior to entering
379 .Fn main .
380 .It Sy fini
381 For AMD64, ARM, HPPA, i386, MIPS and PowerPC targets, when the current statement is a
382 function declaration, generate a reference in the
383 .Sy .dtors
384 section, enabling library code to call the function when
385 .Fn main
386 returns or the
387 .Fn exit
388 function is called.
389 .It Sy section Ar name
390 For AMD64, ARM, HPPA and i386 targets, place the subsequent code in the named
391 section.
392 .Pq This is currently broken .
393 .It Sy alias Ar name
394 For AMD64, HPPA and i386 targets, emit assembler instructions providing an
395 alias for the symbol defined by the current statement.
396 .It Sy stdcall
397 For i386 targets, enable
398 .Dq stdcall
399 semantics during code generation, where function arguments are passed on
400 the stack in right-to-left order, and the callee is responsible for adjusting
401 the stack pointer before returning.
402 Any function result is passed in the EAX register.
403 On win32, the function name is postfixed with an
404 .Dq @
405 and the size of the stack adjustment.
406 .It Sy cdecl
407 For i386 targets, enable
408 .Dq cdecl
409 semantics during code generation, where function arguments are passed on
410 the stack in right-to-left order, and the caller is responsible for cleaning
411 up the stack after the function returns.
412 Any function result is passed in the EAX register.
413 This is the default.
414 .It Sy fastcall
415 For i386-win32 targets, enable
416 .Dq fastcall
417 semantics during code generation.
418 .Po
419 Currently this is equivalent to
420 .Sy stdcall ,
421 which is likely wrong
422 .Pc .
423 .It Sy dllimport
424 For i386-win32 targets, references to the external symbol defined by
425 the current statement will be made via indirect access through a
426 location identified by the symbol name prefixed with
427 .Dq __imp_ .
428 .It Sy dllexport
429 For i386-win32 targets, the external symbol declared by the current
430 statement will be exported as an indirect reference to be
431 accessed with
432 .Sy dllimport .
433 The global locator will be the symbol name prefixed with
434 .Dq __imp_ .
435 Currently this is not completely implemented.
436 .El
437 .Pp
438 Any unknown
439 .Dq #pragma
440 directives will be ignored unless the
441 .Fl Wunknown-pragmas
442 diagnostic is in effect.
ragge
1.1
443 .Sh SEE ALSO
444 .Xr as 1 ,
445 .Xr cpp 1 ,
446 .Xr pcc 1
447 .Sh HISTORY
448 The
449 .Nm
plunky
1.21
450 compiler is based on the original Portable C Compiler by
451 .An "S. C. Johnson" ,
reed
1.7
452 written in the late 70's.
plunky
1.21
453 Even though much of the compiler has been rewritten
454 .Pq about 50% of the frontend code and 80% of the backend ,
455 some of the basics still remain.
456 Most is written by
457 .An "Anders Magnusson" ,
458 with the exception of the data-flow analysis part and
459 the SSA conversion code which is written by
460 .An "Peter A Jonsson" ,
461 and the Mips port that were written as part of a project
462 by undergraduate students at Lulea University of Technology.
reed
1.3
463 .Pp
464 This product includes software developed or owned by Caldera
465 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-08-29 07:15 +0200