This is the file .../info/dir, which contains the
topmost node of the Info hierarchy, called (dir)Top.
The first time you invoke Info you start off looking at this node.

File: dir,	Node: Top	This is the top of the INFO tree

  This (the Directory node) gives a menu of major topics.
  Typing "q" exits, "?" lists all Info commands, "d" returns here,
  "h" gives a primer for first-timers,
  "mEmacs<Return>" visits the Emacs manual, etc.

  In Emacs, you can click mouse button 2 on a menu item or cross reference
  to select it.

* Menu:

GNU libraries
* gmp: (gmp).                   GNU Multiple Precision Arithmetic Library.

GNU Libraries
* libquadmath: (libquadmath).   GCC Quad-Precision Math Library

GNU Packages
* mpc: (mpc)Multiple Precision Complex Library.

Software development
* Cpp: (cpp).                   The GNU C preprocessor.
* g++: (gcc).                   The GNU C++ compiler.
* gcc: (gcc).                   The GNU Compiler Collection.
* gccinstall: (gccinstall).     Installing the GNU Compiler Collection.
* gccint: (gccint).             Internals of the GNU Compiler Collection.
* gcov: (gcc) Gcov.             'gcov'--a test coverage program.

Software libraries
* mpfr: (mpfr).                 Multiple Precision Floating-Point Reliable 
                                  Library.
