A toolchain is a series of pieces of computer software which build on one another in order to complete a function or series of functions. The primary application of this term is a series of compiler tools such as those involved with GNU's gcc C compiler. In this case, the toolchain consists of gcc, binutils, and bison, all of which are necessary to complete the compiler. GCC compiles C (or C++, or Objective C, or a number of other languages) into assembly or assembler code, which is then made into a binary by gas, the GNU assembler. Some kinds of preprocessing are done by bison.