Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
bcc(1)			     General Commands Manual			  bcc(1)

NAME
     bcc - Bruce's C compiler

SYNOPSIS
     bcc   [-03EGNOPSVcegvwxW]	[-Aas_option]  [-Bexecutable_prefix]  [-Ddefine]
     [-Uundef] [-Mc_mode]  [-o outfile]  [-ansi]  [-Ccc1_option]  [-Pcpp_option]
     [-Iinclude_dir]  [-Lld_option]  [-Ttmpdir]  [-Qc386_option]  [-ttext_segno]
     [ld_options] [infiles]

DESCRIPTION
     Bcc is a simple C compiler that produces 8086 assembler, in  addition  com-
     piler  compile  time options allow 80386 or 6809 versions. The compiler un-
     derstands 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 a.out from
     the source file.

OPTIONS
     -ansi  Pass the C source through unprotoize after preprocessing and  before
	    code  generation.  This will allow some ansi C to be compiled but it
	    is definitly NOT a true ansi-C compiler.

     -0     8086 target (works on 80386 host, but not 6809)

     -3     80386 target (may work on 8086 host, but not 6809)

     -A     pass remainder of option to assembler (e.g. -A-l  -Alistfile  for  a
	    listing)

     -B     prefix for executable search path (as usual; the search order is all
	    paths specified using -B, in order, then the path given in the envi-
	    ronment  variable BCC_EXEC_PREFIX if that is set, then the compiled-
	    in defaults (something like /usr/lib/bcc/ followed by /usr/bin/)

     -C     pass remainder of option to bcc-cc1, see code generation options.

     -D     preprocessor define

     -E     produce preprocessor output to standard out.

     -G     produce GCC objects (Same as -Mg)

     -Ixyz  include search 'xyz' path

     -I     don't add default include to search list

     -Lxyz  add directory name 'xyz' to the head of the list of library directo-
	    ries searched

     -L     don't add default library to search list

     -Md    alters the arguments for all passes to produce MSDOS executable  COM
	    files.  These are small model executables, use -i to get tiny model.

     -Mf    sets  bcc  to pass the -c and -f arguments to the code generator for
	    smaller faster code. Note this code is not compatible with the stan-
	    dard calling conventions so a different version of the C library  is
	    linked too.

     -Mc    sets  bcc  to pass the -c argument to the code generator for smaller
	    faster code. Note the standard libc is normally transparent to this,
	    but there are exceptions.

     -Ms    alters the arguments for all passes and selects C-library to produce
	    standalone Linux-86 executables

     -Ml    switches to i386-Linux code generator and library.	This  configura-
	    tion  accepts  the -z flag to generate QMAGIC a.out files instead of
	    the normal OMAGIC.

     -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.

     -N     makes  the linker produce a native a.out file (Linux OMAGIC) if com-
	    bined with -3 the executable will run under Linux-i386.

     -O     optimize, call copt(1) to optimize 8086 code. Specifiers  to  choose
	    which rules copt should use can be appended to the -O and the option
	    can be repeated.

     -P     produce preprocessor output with no line numbers to standard output.

     -Q     pass full option to c386 (Only for c386 version)

     -S     produce assembler file

     -T     temporary  directory  (overrides previous value and default; default
	    is from the environment variable TMPDIR if that  is  set,  otherwise
	    /tmp)

     -U     preprocessor undefine

     -V     print names of files being compiled

     -X     pass  remainder  of option to linker (e.g. -X-Ofile is passed to the
	    linker as -Ofile)

     -c     produce object file

     -f     turn on floating point support, no effect with  i386,  changes  libc
	    library with 8086 code.

     -g     produce debugging info (ignored.)

     -o     output  file  name	follows  (assembler,  object  or executable) (as
	    usual)

     -p     produce profiling info (ignored.)

     -t1    pass to the assembler to renumber the text segment for multi-segment
	    programs.

     -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.

     -w     Supress any warning diagnostics.

     -W     Turn on assembler warning messages.

     -x     don't include crt0.o in the link.

     -i     don't  pass  -i  to the linker so that it will create an impure exe-
	    cutable.

     -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.  =- 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 executa-
	    bles for a V7 variant you should tell linker to generate  old  a.out
	    header with -X-7 option.

     Other options are passed to the linker, in particular -lx, -M, -m, -s, -H.

CODE GENERATOR OPTIONS
     These  are  all  options  that the code generator pass bcc-cc1 understands,
     only some will be useful for the -C option of bcc.

     -0     8086 target (works even on 80386 host, not on 6809)

     -3     80386 target (may work even on 8086 host, not on 6809)

     -D     define (as usual)

     -E     produce preprocessor output (as usual)

     -I     include search path (as usual)

     -P     produce preprocessor output with no line numbers (as usual)

     -c     produce code with caller saving regs before function calls

     -d     print debugging information in assembly output

     -f     produce code with 1st argument passed in a register (AX, EAX or X)

     -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.

     -o     assembler output file name follows

     -p     produce (almost) position-independent code (only for the 6809)

     -t     print source code in assembly output

     -w     print what cc1 thinks is the location counter in assembly output

     -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 com-
	    pile all of Seventh Edition userspace and kernel.

     All the options except -D, -I and -o may be turned off by following the op-
     tion letter by a '-'.  Options are processed left to right so the last set-
     ting has precedence.

PREPROCESSOR DEFINES
     The preprocessor has a number of manifest constants.

     __BCC__ 1
	    The compiler identifier, normally used  to	avoid  compiler  limita-
	    tions.

     __FILE__
	    stringized name of current input file

     __LINE__
	    current line number

     __MSDOS__ 1
	    compiler is configured for generating MSDOS executable COM files.

     __STANDALONE__ 1
	    compiler is configured for generating standalone executables.

     __AS386_16__ 1
	    compiler is generating 16 bit 8086 assembler and the #asm keyword is
	    available for including 8086 code.

     __AS386_32__ 1
	    compiler  is  generating 32 bit 80386 assembler and the #asm keyword
	    is available for including 80386 code.

     __CALLER_SAVES__ 1
	    compiler calling conventions are altered  so  the  calling	function
	    must save the SI and DI registers if they are in use (ESI and EDI on
	    the 80386)

     __FIRST_ARG_IN_AX__ 1
	    compiler  calling conventions are altered so the calling function is
	    passing the first argument to the function in the AX (or EAX )  reg-
	    ister.

     __LONG_BIG_ENDIAN__ 1
	    alters the word order of code generated by the 8086 compiler.

     These defines only occur in the 6809 version of the compiler.

     __AS09__ 1
	    compiler is generating 6809 code

     __FIRST_ARG_IN_X__ 1
	    the first argument to functions is passed in the X register.

     __POS_INDEPENDENT__ 1
	    the code generated is (almost) position independent.

ENVIRONMENT
     BCC_EXEC_PREFIX
	    default directory to seach for compiler passes

     TMPDIR
	    directory to place temporary files (default /tmp)

DIRECTORIES
     All  the  include,  library  and  compiler  components are stored under the
     /usr/bcc directory under Linux-i386, this is laid out the same  as  a  /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  bcc.c  source  file
     only, all other executables are independent of location.

     The  library installation also creates the file /usr/lib/liberror.txt, this
     path is hardcoded into the C library.

     The bcc executable itself, as86 and ld86 are in /usr/bin.

SEE ALSO
     as86(1), ld86(1), elksemu(1)

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 -r option this is so it is compatible with pre-dev86 versions.

				    Nov, 1997				  bcc(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=bcc&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help