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:

Miscellaneous
* As: (as).                     The GNU assembler.
* Bfd: (bfd).                   The Binary File Descriptor library.
* Binutils: (binutils).         The GNU binary utilities.
* Gas: (as).                    The GNU assembler.
* Ld: (ld).                     The GNU linker.
* addr2line: (binutils)addr2line.
                                Convert addresses to file and line
* ar: (binutils)ar.             Create, modify, and extract from archives
* 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
* gprof: (gprof).               Profiling your program's execution
* 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
* windres: (binutils)windres.   Manipulate Windows resources

Software development
* Annotate: (annotate).         The obsolete annotation interface.
* Gdb: (gdb).                   The GNU debugger.
* Gdb-Internals: (gdbint).      The GNU debugger's internals.
* Stabs: (stabs).               The "stabs" debugging information format.
