123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374 |
- .TH bcc 1 "Nov, 1997"
- .BY Bruce Evans
- .nh
- .SH NAME
- bcc \- Bruce's C compiler
- .SH SYNOPSIS
- .B bcc
- .RB [ -03EGNOPSVcegvwxW ]
- .RB [ -Aas_option ]
- .RB [ -Bexecutable_prefix ]
- .RB [ -Ddefine ]
- .RB [ -Uundef ]
- .RB [ -Mc_mode ]
- .RB [ -o\ outfile ]
- .RB [ -ansi ]
- .RB [ -Ccc1_option ]
- .RB [ -Pcpp_option ]
- .RB [ -Iinclude_dir ]
- .RB [ -Lld_option ]
- .RB [ -Ttmpdir ]
- .RB [ -Qc386_option ]
- .RB [ -ttext_segno ]
- .RB [ ld_options ]
- .RB [ infiles ]
- .SH DESCRIPTION
- .B Bcc
- is a simple C compiler that produces 8086 assembler, in addition compiler
- compile time options allow 80386 or 6809 versions. The compiler understands
- traditional K&R C with just the restriction that bit fields are mapped to
- one of the other integer types.
- The default operation is to produce an 8086 executable called
- .B a.out
- from the source file.
- .SH OPTIONS
- .TP
- .B -ansi
- Pass the C source through
- .B unprotoize
- after preprocessing and before code generation. This will allow
- .I some
- ansi C to be compiled but it is definitly
- .B NOT
- a true ansi-C compiler.
- .TP
- .B -0
- 8086 target (works on 80386 host, but not 6809)
- .TP
- .B -3
- 80386 target (may work on 8086 host, but not 6809)
- .TP
- .B -A
- pass remainder of option to assembler (e.g. -A-l -Alistfile for a listing)
- .TP
- .B -B
- prefix for executable search path (as usual; the search order is all paths
- specified using
- .BR -B ,
- in order, then the path given in the environment variable
- .B BCC_EXEC_PREFIX
- if that is set, then the compiled-in defaults
- (something like /usr/lib/bcc/ followed by /usr/bin/)
- .TP
- .B -C
- pass remainder of option to bcc-cc1, see code generation options.
- .TP
- .B -D
- preprocessor define
- .TP
- .B -E
- produce preprocessor output to standard out.
- .TP
- .B -G
- produce GCC objects (Same as -Mg)
- .TP
- .B -Ixyz
- include search 'xyz' path
- .TP
- .B -I
- don't add default include to search list
- .TP
- .B -Lxyz
- add directory name 'xyz' to the head of the list of library directories searched
- .TP
- .B -L
- don't add default library to search list
- .TP
- .B -Md
- alters the arguments for all passes to produce MSDOS executable COM files.
- These are small model executables, use
- .B -i
- to get tiny model.
- .TP
- .B -Mf
- sets bcc to pass the
- .B -c
- and
- .B -f
- arguments to the code generator for smaller faster code. Note this code is
- not compatible with the standard calling conventions so a different version
- of the C library is linked too.
- .TP
- .B -Mc
- sets bcc to pass the
- .B -c
- argument to the code generator for smaller faster code. Note the standard
- libc is normally transparent to this, but there are exceptions.
- .TP
- .B -Ms
- alters the arguments for all passes and selects C-library
- to produce standalone Linux-86 executables
- .TP
- .B -Ml
- switches to i386-Linux code generator and library.
- This configuration accepts the
- .B -z
- flag to generate QMAGIC a.out files instead of the normal OMAGIC.
- .TP
- .B -Mg
- switches to i386-Linux code generator and generates OMAGIC object files
- that can be linked with some versions of gcc; unfortunatly the most recent
- versions use 'collect2' to link and this crashes.
- .TP
- .B -N
- makes the linker produce a native a.out file (Linux OMAGIC) if combined
- with -3 the executable will run under Linux-i386.
- .TP
- .B -O
- optimize, call
- .BR copt ( 1 )
- to optimize 8086 code. Specifiers to choose which rules
- .B copt
- should use can be appended to the
- .B -O
- and the option can be repeated.
- .TP
- .B -P
- produce preprocessor output with no line numbers to standard output.
- .TP
- .B -Q
- pass full option to c386 (Only for c386 version)
- .TP
- .B -S
- produce assembler file
- .TP
- .B -T
- temporary directory (overrides previous value and default; default is
- from the environment variable TMPDIR if that is set, otherwise /tmp)
- .TP
- .B -U
- preprocessor undefine
- .TP
- .B -V
- print names of files being compiled
- .TP
- .B -X
- pass remainder of option to linker (e.g. -X-Ofile is passed to the linker
- as -Ofile)
- .TP
- .B -c
- produce object file
- .TP
- .B -f
- turn on floating point support, no effect with i386, changes libc library
- with 8086 code.
- .TP
- .B -g
- produce debugging info (ignored.)
- .TP
- .B -o
- output file name follows (assembler, object or executable) (as usual)
- .TP
- .B -p
- produce profiling info (ignored.)
- .TP
- .B -t1
- pass to the assembler to renumber the text segment for multi-segment programs.
- .TP
- .B -v
- print names and args of subprocesses being run. Two or more -v's print
- names of files being unlinked. Three or more -v's print names of paths
- being searched.
- .TP
- .B -w
- Supress any warning diagnostics.
- .TP
- .B -W
- Turn
- .B on
- assembler warning messages.
- .TP
- .B -x
- don't include crt0.o in the link.
- .TP
- .B -i
- don't pass
- .B -i
- to the linker so that it will create an impure executable.
- .TP
- .B -7
- Turn on ancient C mode (see CODE GENERATOR OPTIONS below).
- Among other things, this disables valuable
- error checks and even parses certain constructs incompatibly (e.g.
- .I =-
- is postdecrement instead of an assignment of a negative number)
- to later C standards, so this option should only be used with ancient
- code. To generate executables for a V7 variant you should tell
- linker to generate old a.out header with
- .B -X-7
- option.
- .P
- Other options are passed to the linker, in particular -lx, -M, -m, -s, -H.
- .SH CODE GENERATOR OPTIONS
- These are all options that the code generator pass
- .B bcc-cc1
- understands, only some will be useful for the
- .B -C
- option of bcc.
- .TP
- .B -0
- 8086 target (works even on 80386 host, not on 6809)
- .TP
- .B -3
- 80386 target (may work even on 8086 host, not on 6809)
- .TP
- .B -D
- define (as usual)
- .TP
- .B -E
- produce preprocessor output (as usual)
- .TP
- .B -I
- include search path (as usual)
- .TP
- .B -P
- produce preprocessor output with no line numbers (as usual)
- .TP
- .B -c
- produce code with caller saving regs before function calls
- .TP
- .B -d
- print debugging information in assembly output
- .TP
- .B -f
- produce code with 1st argument passed in a register (AX, EAX or X)
- .TP
- .B -l
- produce code for 2 3 1 0 long byte order (only works in 16-bit code),
- a special library of compiler helper functions is needed for this mode.
- .TP
- .B -o
- assembler output file name follows
- .TP
- .B -p
- produce (almost) position-independent code (only for the 6809)
- .TP
- .B -t
- print source code in assembly output
- .TP
- .B -w
- print what cc1 thinks is the location counter in assembly output
- .TP
- .B -7
- Accept various obsolete construct for ancient C compilers, including
- Ritchie's Sixth Edition UNIX C compiler and Seventh Edition UNIX
- Portable C compiler. Enough of these compilers is emulated to compile
- all of Seventh Edition userspace and kernel.
- .P
- All the options except -D, -I and -o may be turned off by following the
- option letter by a '-'. Options are processed left to right so the last
- setting has precedence.
- .SH PREPROCESSOR DEFINES
- The preprocessor has a number of manifest constants.
- .TP
- .B __BCC__ 1
- The compiler identifier, normally used to avoid compiler limitations.
- .TP
- .B __FILE__
- stringized name of current input file
- .TP
- .B __LINE__
- current line number
- .TP
- .B __MSDOS__ 1
- compiler is configured for generating MSDOS executable COM files.
- .TP
- .B __STANDALONE__ 1
- compiler is configured for generating standalone executables.
- .TP
- .B __AS386_16__ 1
- compiler is generating 16 bit 8086 assembler and the
- .B #asm
- keyword is available for including 8086 code.
- .TP
- .B __AS386_32__ 1
- compiler is generating 32 bit 80386 assembler and the
- .B #asm
- keyword is available for including 80386 code.
- .TP
- .B __CALLER_SAVES__ 1
- compiler calling conventions are altered so the calling function must save the
- .I SI
- and
- .I DI
- registers if they are in use (ESI and EDI on the 80386)
- .TP
- .B __FIRST_ARG_IN_AX__ 1
- compiler calling conventions are altered so the calling function is passing
- the first argument to the function in the
- .I AX
- (or
- .I EAX
- )
- register.
- .TP
- .B __LONG_BIG_ENDIAN__ 1
- alters the word order of code generated by the 8086 compiler.
- .P
- These defines only occur in the 6809 version of the compiler.
- .TP
- .B __AS09__ 1
- compiler is generating 6809 code
- .TP
- .B __FIRST_ARG_IN_X__ 1
- the first argument to functions is passed in the
- .I X
- register.
- .TP
- .B __POS_INDEPENDENT__ 1
- the code generated is (almost) position independent.
- .P
- .SH ENVIRONMENT
- .TP
- .B BCC_EXEC_PREFIX
- default directory to seach for compiler passes
- .TP
- .B TMPDIR
- directory to place temporary files (default /tmp)
- .P
- .SH DIRECTORIES
- All the include, library and compiler components are stored under the
- .I /usr/bcc
- directory under Linux-i386, this is laid out the same as a
- .I /usr
- filesystem and if bcc is to be the primary compiler on a system it should
- be moved there. The configuration for this is in the
- .B bcc.c
- source file only, all other executables are independent of location.
- The library installation also creates the file
- .BR /usr/lib/liberror.txt ,
- this path is hardcoded into the C library.
- The
- .B bcc
- executable itself,
- .B as86
- and
- .B ld86
- are in /usr/bin.
- .SH SEE ALSO
- as86(1), ld86(1), elksemu(1)
- .SH BUGS
- The bcc.c compiler driver source is very untidy.
- The linker, ld86, produces a broken a.out object file if given one input and
- the
- .B -r
- option this is so it is compatible with pre-dev86 versions.
|