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
* libitm: (libitm).             GNU Transactional Memory Library

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

Individual utilities
* addr2line: (binutils)addr2line.               Convert addresses to file and 
                                                  line.
* ar: (binutils)ar.                             Create, modify, and extract 
                                                  from archives.
* awk: (gawk)Invoking gawk.                     Text scanning and processing.
* c++filt: (binutils)c++filt.                   Filter to demangle encoded C++ 
                                                  symbols.
* cxxfilt: (binutils)c++filt.                   MS-DOS name for c++filt.
* dlltool: (binutils)dlltool.                   Create files needed to build 
                                                  and use DLLs.
* elfedit: (binutils)elfedit.                   Update the ELF header of ELF 
                                                  files.
* nlmconv: (binutils)nlmconv.                   Converts object code into an 
                                                  NLM.
* nm: (binutils)nm.                             List symbols from object files.
* objcopy: (binutils)objcopy.                   Copy and translate object 
                                                  files.
* objdump: (binutils)objdump.                   Display information from 
                                                  object files.
* ranlib: (binutils)ranlib.                     Generate index to archive 
                                                  contents.
* readelf: (binutils)readelf.                   Display the contents of ELF 
                                                  format files.
* size: (binutils)size.                         List section sizes and total 
                                                  size.
* strings: (binutils)strings.                   List printable strings from 
                                                  files.
* strip: (binutils)strip.                       Discard symbols.
* windmc: (binutils)windmc.                     Generator for Windows message 
                                                  resources.
* windres: (binutils)windres.                   Manipulate Windows resources.

Network applications
* Gawkinet: (gawkinet).         TCP/IP Internetworking With `gawk'.

Software development
* As: (as).                     The GNU assembler.
* Binutils: (binutils).         The GNU binary utilities.
* Gas: (as).                    The GNU assembler.
* Ld: (ld).                     The GNU linker.
* gprof: (gprof).               Profiling your program's execution

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

Text creation and manipulation
* Gawk: (gawk).                 A text scanning and processing language.
* M4: (m4).                     A powerful macro processor.
