NAME
pc —
Pascal compiler
SYNOPSIS
pc |
[option] [-i name ...]
name ... |
DESCRIPTION
Pc is a Pascal compiler. If given an argument file
ending with .p, it will compile the file and load it
into an executable file called, by default, a.out.
A program may be separated into more than one
.p file. Pc will compile a
number of argument .p files into object files (with
the extension .o in place of
.p). Object files may then be loaded into an
executable a.out file. Exactly one object file must
supply a program statement to successfully create an
executable a.out file. The rest of the files must consist only of
declarations which logically nest within the program. References to objects
shared between separately compiled files are allowed if the objects are
declared in included header files, whose names must
end with .h. Header files may only be included at
the outermost level, and thus declare only globally available objects. To
allow functions and
procedures to be declared, an
external directive has been added, whose use is
similar to the forward directive but restricted to
appear only in .h files.
Function and procedure
bodies may not appear in .h files. A binding phase
of the compiler checks that declarations are used consistently, to enforce
the type checking rules of Pascal.
Object files created by other language processors may be loaded
together with object files created by pc. The
functions and procedures
they define must have been declared in .h files
included by all the .p files which call those
routines. Calling conventions are as in C, with var
parameters passed by address.
See the Berkeley Pascal User's Manual for details.
The following options have the same meaning as in cc(1) and f77(1). See ld(1) for load-time options.
-c- Suppress loading and produce `.o' file(s) from source file(s).
-g- Have the compiler produce additional symbol table information for dbx(1).
-w- Suppress warning messages.
-p- Prepare object files for profiling, see prof(1).
-O- Invoke an object-code improver.
-S- Compile the named program, and leave the assembler-language output on the corresponding file suffixed `.s'. (No `.o' is created.).
-ooutput- Name the final output file output instead of a.out.
The following options are peculiar to
pc.
-C- Compile code to perform runtime checks, verify
assertcalls, and initialize all variables to zero as inpi. -b- Block buffer the file output.
-i- Produce a listing for the specified procedures, functions and include files.
-l- Make a program listing during translation.
-s- Accept standard Pascal only; non-standard constructs cause warning diagnostics.
-tdirectory- Use the given directory for compiler temporary files.
-z- Allow execution profiling with
pxpby generating statement counters, and arranging for the creation of the profile data file pmon.out when the resulting object is executed.
Other arguments are taken to be loader option arguments, perhaps
libraries of pc compatible routines. Certain flags
can also be controlled in comments within the program as described in the
Berkeley Pascal User's Manual.
FILES
- file.p
- Pascal source files.
- /usr/lib/pc0
- Compiler.
- /lib/f1
- Code generator.
- /usr/lib/pc2
- Runtime integrator (inline expander).
- /lib/c2
- Peephole optimizer.
- /usr/lib/pc3
- Separate compilation consistency checker.
- /usr/lib/pc2.*strings
- Text of the error messages.
- /usr/lib/how_pc
- Basic usage explanation.
- /usr/lib/libpc.a
- Intrinsic functions and I/O library.
- /usr/lib/libm.a
- Math library.
- /lib/libc.a
- Standard library, see intro(3).
SEE ALSO
Berkeley Pascal User's Manual.
HISTORY
The pc appeared in
4.0BSD.
DIAGNOSTICS
For a basic explanation do
pc
See pi(1). for an explanation of the error message format. Internal errors cause messages containing the word SNARK.
BUGS
The keyword packed is recognized but has
no effect.
The binder is not as strict as described here, with regard to the rules about external declarations only in `.h' files and including `.h' files only at the outermost level. It will be made to perform these checks in its next incarnation, so users are warned not to be sloppy.
The -z flag doesn't work for separately
compiled files.
Because the -s option is usurped by the
compiler, it is not possible to pass the strip option to the loader. Thus
programs which are to be stripped, must be run through
strip(1) after they are compiled.