OSDN Git Service

A new 4.4.0 toolchain with a few FDO bugs fixed.
authorJing Yu <jingyu@google.com>
Mon, 17 Aug 2009 22:24:55 +0000 (15:24 -0700)
committerJing Yu <jingyu@google.com>
Mon, 17 Aug 2009 22:24:55 +0000 (15:24 -0700)
233 files changed:
darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ar
darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/as
darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/c++
darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/g++
darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/gcc
darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ld
darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/nm
darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objcopy
darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objdump
darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ranlib
darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/strip
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-addr2line
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ar
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-as
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++filt
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-cpp
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-g++
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc-4.4.0
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gccbug
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcov
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdbtui
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gprof
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ld
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-nm
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objcopy
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objdump
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ranlib
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-readelf
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-run
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-size
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strings
darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strip
darwin-x86/toolchain/arm-eabi-4.4.0/info/bfd.info
darwin-x86/toolchain/arm-eabi-4.4.0/info/cpp.info
darwin-x86/toolchain/arm-eabi-4.4.0/info/cppinternals.info
darwin-x86/toolchain/arm-eabi-4.4.0/info/dir
darwin-x86/toolchain/arm-eabi-4.4.0/info/gcc.info
darwin-x86/toolchain/arm-eabi-4.4.0/info/gccinstall.info
darwin-x86/toolchain/arm-eabi-4.4.0/info/gccint.info
darwin-x86/toolchain/arm-eabi-4.4.0/info/ld.info
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtbegin.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crti.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtn.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcc.a
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcov.a
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtbegin.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtend.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crti.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtn.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/install-tools/mkheaders.conf
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtbegin.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtend.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crti.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtn.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcov.a
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcc.a
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcov.a
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtbegin.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crti.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtn.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcc.a
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcov.a
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtbegin.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtend.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crti.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtn.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtbegin.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtend.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crti.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtn.o
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcc.a
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcov.a
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcc.a
darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcov.a
darwin-x86/toolchain/arm-eabi-4.4.0/lib/libarm-elf-linux-sim.a
darwin-x86/toolchain/arm-eabi-4.4.0/lib/libiberty.a
darwin-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1
darwin-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1plus
darwin-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/collect2
darwin-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/install-tools/fixincl
darwin-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/install-tools/mkheaders
darwin-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-g++.1
darwin-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-gcc.1
darwin-x86/toolchain/arm-eabi-4.4.0/share/info/annotate.info [moved from darwin-x86/toolchain/arm-eabi-4.4.0/info/annotate.info with 100% similarity]
darwin-x86/toolchain/arm-eabi-4.4.0/share/info/bfd.info [new file with mode: 0644]
darwin-x86/toolchain/arm-eabi-4.4.0/share/info/configure.info [new file with mode: 0644]
darwin-x86/toolchain/arm-eabi-4.4.0/share/info/dir [new file with mode: 0644]
darwin-x86/toolchain/arm-eabi-4.4.0/share/info/gdb.info [moved from linux-x86/toolchain/arm-eabi-4.4.0/info/gdb.info with 99% similarity]
darwin-x86/toolchain/arm-eabi-4.4.0/share/info/gdbint.info [moved from darwin-x86/toolchain/arm-eabi-4.4.0/info/gdbint.info with 99% similarity]
darwin-x86/toolchain/arm-eabi-4.4.0/share/info/stabs.info [moved from darwin-x86/toolchain/arm-eabi-4.4.0/info/stabs.info with 100% similarity]
darwin-x86/toolchain/arm-eabi-4.4.0/share/info/standards.info [new file with mode: 0644]
darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/es/LC_MESSAGES/bfd.mo
darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/es/LC_MESSAGES/opcodes.mo
darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/fi/LC_MESSAGES/opcodes.mo
darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/fr/LC_MESSAGES/opcodes.mo
darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/ga/LC_MESSAGES/opcodes.mo
darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/nl/LC_MESSAGES/opcodes.mo
darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/vi/LC_MESSAGES/bfd.mo
darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/vi/LC_MESSAGES/opcodes.mo
darwin-x86/toolchain/arm-eabi-4.4.0/share/man/man1/arm-eabi-gdb.1 [moved from darwin-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-gdb.1 with 100% similarity]
darwin-x86/toolchain/arm-eabi-4.4.0/share/man/man1/arm-eabi-gdbtui.1 [moved from darwin-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-gdbtui.1 with 100% similarity]
darwin-x86/toolchain/arm-eabi-4.4.0/share/man/man1/arm-eabi-run.1 [moved from darwin-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-run.1 with 100% similarity]
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ar
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/as
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/c++
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/g++
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/gcc
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ld
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/nm
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objcopy
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objdump
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ranlib
linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/strip
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-addr2line
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ar
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-as
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++filt
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-cpp
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-g++
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc-4.4.0
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gccbug
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcov
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdbtui
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gprof
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ld
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-nm
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objcopy
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objdump
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ranlib
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-readelf
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-run
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-size
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strings
linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strip
linux-x86/toolchain/arm-eabi-4.4.0/info/as.info
linux-x86/toolchain/arm-eabi-4.4.0/info/bfd.info
linux-x86/toolchain/arm-eabi-4.4.0/info/binutils.info
linux-x86/toolchain/arm-eabi-4.4.0/info/configure.info
linux-x86/toolchain/arm-eabi-4.4.0/info/cpp.info
linux-x86/toolchain/arm-eabi-4.4.0/info/cppinternals.info
linux-x86/toolchain/arm-eabi-4.4.0/info/gcc.info
linux-x86/toolchain/arm-eabi-4.4.0/info/gccinstall.info
linux-x86/toolchain/arm-eabi-4.4.0/info/gccint.info
linux-x86/toolchain/arm-eabi-4.4.0/info/gprof.info
linux-x86/toolchain/arm-eabi-4.4.0/info/ld.info
linux-x86/toolchain/arm-eabi-4.4.0/info/standards.info
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtbegin.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcc.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcov.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtbegin.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtend.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crti.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtn.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/install-tools/mkheaders.conf
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtbegin.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtend.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcov.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcc.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcov.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/auto-host.h
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/c-common.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/c-pretty-print.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cgraph.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/arm-protos.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/configargs.h
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cp/cp-tree.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cp/cxx-pretty-print.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cp/name-lookup.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cpplib.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/defaults.h
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/diagnostic.def [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/diagnostic.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/ipa-reference.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/l-ipo.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/langhooks.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/options.h
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/plugin.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/pretty-print.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/splay-tree.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tm-preds.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-dump.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-flow-inline.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-flow.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-iterator.h [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtbegin.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcc.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcov.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtbegin.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtend.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crti.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtn.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtbegin.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtend.o
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcc.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcov.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcc.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcov.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/libarm-elf-linux-sim.a
linux-x86/toolchain/arm-eabi-4.4.0/lib/libiberty.a
linux-x86/toolchain/arm-eabi-4.4.0/lib32/libiberty.a
linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1
linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1plus
linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/collect2
linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/install-tools/fixincl
linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/install-tools/mkheaders
linux-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-g++.1
linux-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-gcc.1
linux-x86/toolchain/arm-eabi-4.4.0/share/info/annotate.info [moved from linux-x86/toolchain/arm-eabi-4.4.0/info/annotate.info with 98% similarity]
linux-x86/toolchain/arm-eabi-4.4.0/share/info/bfd.info [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/share/info/configure.info [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/share/info/gdb.info [moved from darwin-x86/toolchain/arm-eabi-4.4.0/info/gdb.info with 99% similarity]
linux-x86/toolchain/arm-eabi-4.4.0/share/info/gdbint.info [moved from linux-x86/toolchain/arm-eabi-4.4.0/info/gdbint.info with 99% similarity]
linux-x86/toolchain/arm-eabi-4.4.0/share/info/stabs.info [moved from linux-x86/toolchain/arm-eabi-4.4.0/info/stabs.info with 98% similarity]
linux-x86/toolchain/arm-eabi-4.4.0/share/info/standards.info [new file with mode: 0644]
linux-x86/toolchain/arm-eabi-4.4.0/share/locale/es/LC_MESSAGES/bfd.mo
linux-x86/toolchain/arm-eabi-4.4.0/share/locale/es/LC_MESSAGES/opcodes.mo
linux-x86/toolchain/arm-eabi-4.4.0/share/locale/fi/LC_MESSAGES/opcodes.mo
linux-x86/toolchain/arm-eabi-4.4.0/share/locale/fr/LC_MESSAGES/opcodes.mo
linux-x86/toolchain/arm-eabi-4.4.0/share/locale/ga/LC_MESSAGES/opcodes.mo
linux-x86/toolchain/arm-eabi-4.4.0/share/locale/nl/LC_MESSAGES/opcodes.mo
linux-x86/toolchain/arm-eabi-4.4.0/share/locale/vi/LC_MESSAGES/bfd.mo
linux-x86/toolchain/arm-eabi-4.4.0/share/locale/vi/LC_MESSAGES/opcodes.mo
linux-x86/toolchain/arm-eabi-4.4.0/share/man/man1/arm-eabi-gdb.1 [moved from linux-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-gdb.1 with 100% similarity]
linux-x86/toolchain/arm-eabi-4.4.0/share/man/man1/arm-eabi-gdbtui.1 [moved from linux-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-gdbtui.1 with 100% similarity]
linux-x86/toolchain/arm-eabi-4.4.0/share/man/man1/arm-eabi-run.1 [moved from linux-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-run.1 with 100% similarity]

index f09df7f..6155f2f 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ar and b/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ar differ
index 54473b0..adf4e9b 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/as and b/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/as differ
index efe3f40..08dea2e 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/c++ and b/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/c++ differ
index efe3f40..08dea2e 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/g++ and b/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/g++ differ
index 810a54d..b87488b 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/gcc and b/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/gcc differ
index 80c9c39..5474bd3 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ld and b/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ld differ
index d515334..2b4f0f7 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/nm and b/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/nm differ
index 8f52f1a..b104c4c 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objcopy and b/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objcopy differ
index b619970..a83a78e 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objdump and b/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objdump differ
index ee05231..bedd9f2 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ranlib and b/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ranlib differ
index dfb6cc4..4a14c8c 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/strip and b/darwin-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/strip differ
index 604b9bd..8c5b416 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-addr2line and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-addr2line differ
index f09df7f..6155f2f 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ar and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ar differ
index 54473b0..adf4e9b 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-as and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-as differ
index efe3f40..08dea2e 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++ and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++ differ
index 8a65806..19b5cab 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++filt and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++filt differ
index e96c663..f92e468 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-cpp and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-cpp differ
index efe3f40..08dea2e 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-g++ and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-g++ differ
index 810a54d..b87488b 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc differ
index 810a54d..b87488b 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc-4.4.0 and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc-4.4.0 differ
index 3654df8..d54ca9d 100755 (executable)
@@ -344,12 +344,12 @@ SEND-PR: support             I need help with gcc.
 `[ -n "$ARCH" ] && echo Architecture: $ARCH`
 `[ -n "$MACHINE" ] && echo Machine: $MACHINE`
        $ENVIRONMENT_C
-host: i386-apple-darwin9.7.0
-build: i386-apple-darwin9.7.0
+host: i686-apple-darwin
+build: i686-apple-darwin
 target: arm-unknown-eabi
 __EOF__
       cat >> $file << \__EOF__
-configured with: /home/dougkwan/android-tool-src/toolchain/android-toolchain/gcc-4.4.0/configure --prefix=/Volumes/android/toolbuild/arm-eabi-4.4.0 --target=arm-eabi --host=i386-apple-darwin9.7.0 --build=i386-apple-darwin9.7.0 --enable-languages=c,c++ --with-gmp=/Volumes/android/toolbuild/obj/temp-install --with-mpfr=/Volumes/android/toolbuild/obj/temp-install --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs --with-gcc-version=4.4.0 --with-binutils-version=2.19 --with-arch=armv5te --prefix=/Volumes/android/toolbuild/arm-eabi-4.4.0 --with-sysroot=/Volumes/android/toolbuild/arm-eabi-4.4.0/sysroot --with-gdb-version=6.6 --with-gmp-version=4.2.4 --with-mpfr-version=2.4.1 --program-transform-name='s,^,arm-eabi-,'
+configured with: ../../../toolchain/android-toolchain/gcc-4.4.0/configure --prefix=/usr/local --target=arm-eabi --host=i686-apple-darwin --build=i686-apple-darwin --enable-languages=c,c++ --with-gmp=/Volumes/project-jingyu/toolchain-build/obj/temp-install --with-mpfr=/Volumes/project-jingyu/toolchain-build/obj/temp-install --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs --with-gcc-version=4.4.0 --with-binutils-version=2.19 --with-arch=armv5te --with-gmp-version=4.2.4 --with-mpfr-version=2.4.1 --with-gdb-version=6.6 --with-multilib-list=mthumb-interwork,mandroid --with-sysroot=/Volumes/project-jingyu/cupcake_rel_root --program-transform-name='s,^,arm-eabi-,'
 __EOF__
       cat >> $file << __EOF__
 >Description:
index b87f895..1c73ecc 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcov and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcov differ
index c756f25..27b8ad3 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb differ
index e7021ad..deeb3f5 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdbtui and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdbtui differ
index cac334e..10f63f5 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gprof and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gprof differ
index 80c9c39..5474bd3 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ld and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ld differ
index d515334..2b4f0f7 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-nm and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-nm differ
index 8f52f1a..b104c4c 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objcopy and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objcopy differ
index b619970..a83a78e 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objdump and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objdump differ
index ee05231..bedd9f2 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ranlib and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ranlib differ
index d226129..e7c8a9a 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-readelf and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-readelf differ
index 3c00dc0..6eace31 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-run and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-run differ
index 785164e..a1e889c 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-size and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-size differ
index 7ffb6b1..edc25d5 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strings and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strings differ
index dfb6cc4..4a14c8c 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strip and b/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strip differ
index 1a4e5c5..13e0630 100644 (file)
@@ -1,5 +1,5 @@
 This is bfd.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/binutils-2.19/bfd/doc/bfd.texinfo.
+../../../../../toolchain/android-toolchain/binutils-2.19/bfd/doc/bfd.texinfo.
 
 START-INFO-DIR-ENTRY
 * Bfd: (bfd).                   The Binary File Descriptor library.
@@ -10758,67 +10758,67 @@ BFD Index
 
 \1f
 Tag Table:
-Node: Top\7f1127
-Node: Overview\7f1466
-Node: History\7f2517
-Node: How It Works\7f3463
-Node: What BFD Version 2 Can Do\7f5006
-Node: BFD information loss\7f6321
-Node: Canonical format\7f8853
-Node: BFD front end\7f13225
-Node: Memory Usage\7f43732
-Node: Initialization\7f44960
-Node: Sections\7f45419
-Node: Section Input\7f45902
-Node: Section Output\7f47267
-Node: typedef asection\7f49753
-Node: section prototypes\7f74334
-Node: Symbols\7f84014
-Node: Reading Symbols\7f85609
-Node: Writing Symbols\7f86716
-Node: Mini Symbols\7f88425
-Node: typedef asymbol\7f89399
-Node: symbol handling functions\7f94764
-Node: Archives\7f100106
-Node: Formats\7f103832
-Node: Relocations\7f106780
-Node: typedef arelent\7f107507
-Node: howto manager\7f123318
-Node: Core Files\7f191114
-Node: Targets\7f192931
-Node: bfd_target\7f194901
-Node: Architectures\7f215206
-Node: Opening and Closing\7f237689
-Node: Internal\7f248953
-Node: File Caching\7f255286
-Node: Linker Functions\7f257200
-Node: Creating a Linker Hash Table\7f258873
-Node: Adding Symbols to the Hash Table\7f260611
-Node: Differing file formats\7f261511
-Node: Adding symbols from an object file\7f263236
-Node: Adding symbols from an archive\7f265387
-Node: Performing the Final Link\7f267801
-Node: Information provided by the linker\7f269043
-Node: Relocating the section contents\7f270197
-Node: Writing the symbol table\7f271948
-Node: Hash Tables\7f274990
-Node: Creating and Freeing a Hash Table\7f276188
-Node: Looking Up or Entering a String\7f277438
-Node: Traversing a Hash Table\7f278691
-Node: Deriving a New Hash Table Type\7f279480
-Node: Define the Derived Structures\7f280546
-Node: Write the Derived Creation Routine\7f281627
-Node: Write Other Derived Routines\7f284251
-Node: BFD back ends\7f285566
-Node: What to Put Where\7f285836
-Node: aout\7f286016
-Node: coff\7f292334
-Node: elf\7f317085
-Node: mmo\7f317948
-Node: File layout\7f318876
-Node: Symbol-table\7f324523
-Node: mmo section mapping\7f328292
-Node: GNU Free Documentation License\7f331944
-Node: BFD Index\7f351673
+Node: Top\7f1110
+Node: Overview\7f1449
+Node: History\7f2500
+Node: How It Works\7f3446
+Node: What BFD Version 2 Can Do\7f4989
+Node: BFD information loss\7f6304
+Node: Canonical format\7f8836
+Node: BFD front end\7f13208
+Node: Memory Usage\7f43715
+Node: Initialization\7f44943
+Node: Sections\7f45402
+Node: Section Input\7f45885
+Node: Section Output\7f47250
+Node: typedef asection\7f49736
+Node: section prototypes\7f74317
+Node: Symbols\7f83997
+Node: Reading Symbols\7f85592
+Node: Writing Symbols\7f86699
+Node: Mini Symbols\7f88408
+Node: typedef asymbol\7f89382
+Node: symbol handling functions\7f94747
+Node: Archives\7f100089
+Node: Formats\7f103815
+Node: Relocations\7f106763
+Node: typedef arelent\7f107490
+Node: howto manager\7f123301
+Node: Core Files\7f191097
+Node: Targets\7f192914
+Node: bfd_target\7f194884
+Node: Architectures\7f215189
+Node: Opening and Closing\7f237672
+Node: Internal\7f248936
+Node: File Caching\7f255269
+Node: Linker Functions\7f257183
+Node: Creating a Linker Hash Table\7f258856
+Node: Adding Symbols to the Hash Table\7f260594
+Node: Differing file formats\7f261494
+Node: Adding symbols from an object file\7f263219
+Node: Adding symbols from an archive\7f265370
+Node: Performing the Final Link\7f267784
+Node: Information provided by the linker\7f269026
+Node: Relocating the section contents\7f270180
+Node: Writing the symbol table\7f271931
+Node: Hash Tables\7f274973
+Node: Creating and Freeing a Hash Table\7f276171
+Node: Looking Up or Entering a String\7f277421
+Node: Traversing a Hash Table\7f278674
+Node: Deriving a New Hash Table Type\7f279463
+Node: Define the Derived Structures\7f280529
+Node: Write the Derived Creation Routine\7f281610
+Node: Write Other Derived Routines\7f284234
+Node: BFD back ends\7f285549
+Node: What to Put Where\7f285819
+Node: aout\7f285999
+Node: coff\7f292317
+Node: elf\7f317068
+Node: mmo\7f317931
+Node: File layout\7f318859
+Node: Symbol-table\7f324506
+Node: mmo section mapping\7f328275
+Node: GNU Free Documentation License\7f331927
+Node: BFD Index\7f351656
 \1f
 End Tag Table
index 58343a8..bf3fc0a 100644 (file)
@@ -1,5 +1,5 @@
 This is doc/cpp.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gcc-4.4.0/gcc/doc/cpp.texi.
+../../../../toolchain/android-toolchain/gcc-4.4.0/gcc/doc/cpp.texi.
 
    Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
@@ -5273,79 +5273,79 @@ Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f1140
-Node: Overview\7f3854
-Node: Character sets\7f6675
-Ref: Character sets-Footnote-1\7f8858
-Node: Initial processing\7f9039
-Ref: trigraphs\7f10598
-Node: Tokenization\7f14800
-Ref: Tokenization-Footnote-1\7f21936
-Node: The preprocessing language\7f22047
-Node: Header Files\7f24925
-Node: Include Syntax\7f26841
-Node: Include Operation\7f28478
-Node: Search Path\7f30326
-Node: Once-Only Headers\7f33516
-Node: Alternatives to Wrapper #ifndef\7f35175
-Node: Computed Includes\7f36918
-Node: Wrapper Headers\7f40076
-Node: System Headers\7f42502
-Node: Macros\7f44552
-Node: Object-like Macros\7f45693
-Node: Function-like Macros\7f49283
-Node: Macro Arguments\7f50899
-Node: Stringification\7f55044
-Node: Concatenation\7f58250
-Node: Variadic Macros\7f61358
-Node: Predefined Macros\7f66145
-Node: Standard Predefined Macros\7f66733
-Node: Common Predefined Macros\7f72669
-Node: System-specific Predefined Macros\7f85579
-Node: C++ Named Operators\7f87600
-Node: Undefining and Redefining Macros\7f88564
-Node: Directives Within Macro Arguments\7f90668
-Node: Macro Pitfalls\7f92216
-Node: Misnesting\7f92749
-Node: Operator Precedence Problems\7f93861
-Node: Swallowing the Semicolon\7f95727
-Node: Duplication of Side Effects\7f97750
-Node: Self-Referential Macros\7f99933
-Node: Argument Prescan\7f102342
-Node: Newlines in Arguments\7f106096
-Node: Conditionals\7f107047
-Node: Conditional Uses\7f108877
-Node: Conditional Syntax\7f110235
-Node: Ifdef\7f110555
-Node: If\7f113716
-Node: Defined\7f116020
-Node: Else\7f117303
-Node: Elif\7f117873
-Node: Deleted Code\7f119162
-Node: Diagnostics\7f120409
-Node: Line Control\7f122026
-Node: Pragmas\7f125830
-Node: Other Directives\7f130100
-Node: Preprocessor Output\7f131207
-Node: Traditional Mode\7f134408
-Node: Traditional lexical analysis\7f135466
-Node: Traditional macros\7f137969
-Node: Traditional miscellany\7f141771
-Node: Traditional warnings\7f142768
-Node: Implementation Details\7f144965
-Node: Implementation-defined behavior\7f145586
-Ref: Identifier characters\7f146338
-Node: Implementation limits\7f149413
-Node: Obsolete Features\7f152087
-Node: Differences from previous versions\7f154924
-Node: Invocation\7f159132
-Ref: Wtrigraphs\7f163584
-Ref: dashMF\7f168359
-Ref: fdollars-in-identifiers\7f177742
-Node: Environment Variables\7f185905
-Node: GNU Free Documentation License\7f188871
-Node: Index of Directives\7f211304
-Node: Option Index\7f213238
-Node: Concept Index\7f219422
+Node: Top\7f1120
+Node: Overview\7f3834
+Node: Character sets\7f6655
+Ref: Character sets-Footnote-1\7f8838
+Node: Initial processing\7f9019
+Ref: trigraphs\7f10578
+Node: Tokenization\7f14780
+Ref: Tokenization-Footnote-1\7f21916
+Node: The preprocessing language\7f22027
+Node: Header Files\7f24905
+Node: Include Syntax\7f26821
+Node: Include Operation\7f28458
+Node: Search Path\7f30306
+Node: Once-Only Headers\7f33496
+Node: Alternatives to Wrapper #ifndef\7f35155
+Node: Computed Includes\7f36898
+Node: Wrapper Headers\7f40056
+Node: System Headers\7f42482
+Node: Macros\7f44532
+Node: Object-like Macros\7f45673
+Node: Function-like Macros\7f49263
+Node: Macro Arguments\7f50879
+Node: Stringification\7f55024
+Node: Concatenation\7f58230
+Node: Variadic Macros\7f61338
+Node: Predefined Macros\7f66125
+Node: Standard Predefined Macros\7f66713
+Node: Common Predefined Macros\7f72649
+Node: System-specific Predefined Macros\7f85559
+Node: C++ Named Operators\7f87580
+Node: Undefining and Redefining Macros\7f88544
+Node: Directives Within Macro Arguments\7f90648
+Node: Macro Pitfalls\7f92196
+Node: Misnesting\7f92729
+Node: Operator Precedence Problems\7f93841
+Node: Swallowing the Semicolon\7f95707
+Node: Duplication of Side Effects\7f97730
+Node: Self-Referential Macros\7f99913
+Node: Argument Prescan\7f102322
+Node: Newlines in Arguments\7f106076
+Node: Conditionals\7f107027
+Node: Conditional Uses\7f108857
+Node: Conditional Syntax\7f110215
+Node: Ifdef\7f110535
+Node: If\7f113696
+Node: Defined\7f116000
+Node: Else\7f117283
+Node: Elif\7f117853
+Node: Deleted Code\7f119142
+Node: Diagnostics\7f120389
+Node: Line Control\7f122006
+Node: Pragmas\7f125810
+Node: Other Directives\7f130080
+Node: Preprocessor Output\7f131187
+Node: Traditional Mode\7f134388
+Node: Traditional lexical analysis\7f135446
+Node: Traditional macros\7f137949
+Node: Traditional miscellany\7f141751
+Node: Traditional warnings\7f142748
+Node: Implementation Details\7f144945
+Node: Implementation-defined behavior\7f145566
+Ref: Identifier characters\7f146318
+Node: Implementation limits\7f149393
+Node: Obsolete Features\7f152067
+Node: Differences from previous versions\7f154904
+Node: Invocation\7f159112
+Ref: Wtrigraphs\7f163564
+Ref: dashMF\7f168339
+Ref: fdollars-in-identifiers\7f177722
+Node: Environment Variables\7f185885
+Node: GNU Free Documentation License\7f188851
+Node: Index of Directives\7f211284
+Node: Option Index\7f213218
+Node: Concept Index\7f219402
 \1f
 End Tag Table
index 6f5423c..45f4dc8 100644 (file)
@@ -1,5 +1,5 @@
 This is doc/cppinternals.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gcc-4.4.0/gcc/doc/cppinternals.texi.
+../../../../toolchain/android-toolchain/gcc-4.4.0/gcc/doc/cppinternals.texi.
 
 INFO-DIR-SECTION Software development
 START-INFO-DIR-ENTRY
@@ -1020,17 +1020,17 @@ Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f1017
-Node: Conventions\7f2702
-Node: Lexer\7f3644
-Ref: Invalid identifiers\7f11557
-Ref: Lexing a line\7f13506
-Node: Hash Nodes\7f18279
-Node: Macro Expansion\7f21158
-Node: Token Spacing\7f30105
-Node: Line Numbering\7f35965
-Node: Guard Macros\7f40050
-Node: Files\7f44841
-Node: Concept Index\7f48307
+Node: Top\7f997
+Node: Conventions\7f2682
+Node: Lexer\7f3624
+Ref: Invalid identifiers\7f11537
+Ref: Lexing a line\7f13486
+Node: Hash Nodes\7f18259
+Node: Macro Expansion\7f21138
+Node: Token Spacing\7f30085
+Node: Line Numbering\7f35945
+Node: Guard Macros\7f40030
+Node: Files\7f44821
+Node: Concept Index\7f48287
 \1f
 End Tag Table
index 0633049..853919b 100644 (file)
@@ -40,13 +40,9 @@ Individual utilities
 * windres: (binutils)windres.    Manipulate Windows resources.
 
 Software development
-* Annotate: (annotate).                 The obsolete annotation interface.
 * Binutils: (binutils).         The GNU binary utilities.
 * Cpp: (cpp).                  The GNU C preprocessor.
 * Cpplib: (cppinternals).      Cpplib internals.
-* Gdb: (gdb).                     The GNU debugger.
-* Gdb-Internals: (gdbint).     The GNU debugger's internals.
-* Stabs: (stabs).                 The "stabs" debugging information format.
 * g++: (gcc).                  The GNU C++ compiler.
 * gcc: (gcc).                  The GNU Compiler Collection.
 * gccinstall: (gccinstall).    Installing the GNU Compiler Collection.
index 7290916..27fc342 100644 (file)
@@ -1,5 +1,5 @@
 This is doc/gcc.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gcc-4.4.0/gcc/doc/gcc.texi.
+../../../../toolchain/android-toolchain/gcc-4.4.0/gcc/doc/gcc.texi.
 
  Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
@@ -398,7 +398,8 @@ in the following sections.
 
 _Overall Options_
      *Note Options Controlling the Kind of Output: Overall Options.
-          -c  -S  -E  -o FILE  -combine  -pipe  -pass-exit-codes
+          -c  -S  -E  -o FILE  -combine  -no-canonical-prefixes
+          -pipe  -pass-exit-codes
           -x LANGUAGE  -v  -###  --help[=CLASS[,...]]  --target-help
           --version -wrapper@FILE -fplugin=FILE -fplugin-arg-NAME=ARG
 
@@ -592,7 +593,7 @@ _Optimization Options_
           -freciprocal-math -fregmove -frename-registers -freorder-blocks
           -freorder-blocks-and-partition -freorder-functions
           -frerun-cse-after-loop -freschedule-modulo-scheduled-loops
-          -frounding-math -frtl-abstract-sequences -fsched2-use-superblocks
+          -frounding-math -fsched2-use-superblocks
           -fsched2-use-traces -fsched-spec-load -fsched-spec-load-dangerous
           -fsched-stalled-insns-dep[=N] -fsched-stalled-insns[=N]
           -fschedule-insns -fschedule-insns2 -fsection-anchors -fsee
@@ -1467,6 +1468,10 @@ do nothing at all.
           gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
           diff /tmp/O2-opts /tmp/O3-opts | grep enabled
 
+`-no-canonical-prefixes'
+     Do not expand any symbolic links, resolve references to `/../' or
+     `/./', or make the path absolute when generating a relative prefix.
+
 `--version'
      Display the version number and copyrights of the invoked GCC.
 
@@ -6412,13 +6417,6 @@ correctness.  All must be specifically enabled.
      using C99's `FENV_ACCESS' pragma.  This command line option will
      be used to specify the default state for `FENV_ACCESS'.
 
-`-frtl-abstract-sequences'
-     It is a size optimization method. This option is to find identical
-     sequences of code, which can be turned into pseudo-procedures  and
-     then  replace  all  occurrences with  calls to  the  newly created
-     subroutine. It is kind of an opposite of `-finline-functions'.
-     This optimization runs at RTL level.
-
 `-fsignaling-nans'
      Compile code assuming that IEEE signaling NaNs may generate
      user-visible traps during floating-point operations.  Setting this
@@ -40214,26 +40212,26 @@ look up both forms.
                                                              (line  538)
 * all_load:                              Darwin Options.     (line  112)
 * allowable_client:                      Darwin Options.     (line  199)
-* ansi <1>:                              C Dialect Options.  (line   11)
-* ansi <2>:                              Standards.          (line   16)
-* ansi <3>:                              Non-bugs.           (line  107)
-* ansi <4>:                              Preprocessor Options.
+* ansi <1>:                              Preprocessor Options.
                                                              (line  325)
+* ansi <2>:                              Standards.          (line   16)
+* ansi <3>:                              C Dialect Options.  (line   11)
+* ansi <4>:                              Non-bugs.           (line  107)
 * ansi:                                  Other Builtins.     (line   22)
 * arch_errors_fatal:                     Darwin Options.     (line  116)
 * aux-info:                              C Dialect Options.  (line  140)
-* b:                                     Target Options.     (line   13)
 * B:                                     Directory Options.  (line   41)
+* b:                                     Target Options.     (line   13)
 * bcopy-builtin:                         PDP-11 Options.     (line   32)
 * Bdynamic:                              VxWorks Options.    (line   22)
 * bind_at_load:                          Darwin Options.     (line  120)
 * Bstatic:                               VxWorks Options.    (line   22)
 * bundle:                                Darwin Options.     (line  125)
 * bundle_loader:                         Darwin Options.     (line  129)
-* c <1>:                                 Overall Options.    (line  159)
-* c:                                     Link Options.       (line   20)
+* c:                                     Overall Options.    (line  159)
 * C:                                     Preprocessor Options.
                                                              (line  596)
+* c:                                     Link Options.       (line   20)
 * client_name:                           Darwin Options.     (line  199)
 * combine:                               Overall Options.    (line  215)
 * compatibility_version:                 Darwin Options.     (line  199)
@@ -40251,13 +40249,13 @@ look up both forms.
 * dH:                                    Debugging Options.  (line  547)
 * dI:                                    Preprocessor Options.
                                                              (line  579)
+* dm:                                    Debugging Options.  (line  550)
 * dM:                                    Preprocessor Options.
                                                              (line  554)
-* dm:                                    Debugging Options.  (line  550)
 * dN:                                    Preprocessor Options.
                                                              (line  576)
-* dP:                                    Debugging Options.  (line  559)
 * dp:                                    Debugging Options.  (line  554)
+* dP:                                    Debugging Options.  (line  559)
 * dU:                                    Preprocessor Options.
                                                              (line  583)
 * dumpmachine:                           Debugging Options.  (line  952)
@@ -40274,8 +40272,8 @@ look up both forms.
 * E:                                     Overall Options.    (line  180)
 * EB <1>:                                MIPS Options.       (line    7)
 * EB:                                    ARC Options.        (line   12)
-* EL <1>:                                ARC Options.        (line    9)
-* EL:                                    MIPS Options.       (line   10)
+* EL <1>:                                MIPS Options.       (line   10)
+* EL:                                    ARC Options.        (line    9)
 * exported_symbols_list:                 Darwin Options.     (line  199)
 * F:                                     Darwin Options.     (line   32)
 * fabi-version:                          C++ Dialect Options.
@@ -40292,10 +40290,10 @@ look up both forms.
 * fasynchronous-unwind-tables:           Code Gen Options.   (line   64)
 * fauto-inc-dec:                         Optimize Options.   (line  455)
 * fbounds-check:                         Code Gen Options.   (line   15)
-* fbranch-probabilities:                 Optimize Options.   (line 1552)
-* fbranch-target-load-optimize:          Optimize Options.   (line 1660)
-* fbranch-target-load-optimize2:         Optimize Options.   (line 1666)
-* fbtr-bb-exclusive:                     Optimize Options.   (line 1670)
+* fbranch-probabilities:                 Optimize Options.   (line 1545)
+* fbranch-target-load-optimize:          Optimize Options.   (line 1653)
+* fbranch-target-load-optimize2:         Optimize Options.   (line 1659)
+* fbtr-bb-exclusive:                     Optimize Options.   (line 1663)
 * fcall-saved:                           Code Gen Options.   (line  262)
 * fcall-used:                            Code Gen Options.   (line  248)
 * fcaller-saves:                         Optimize Options.   (line  676)
@@ -40314,9 +40312,9 @@ look up both forms.
 * fcrossjumping:                         Optimize Options.   (line  448)
 * fcse-follow-jumps:                     Optimize Options.   (line  376)
 * fcse-skip-blocks:                      Optimize Options.   (line  385)
-* fcx-fortran-rules:                     Optimize Options.   (line 1538)
-* fcx-limited-range:                     Optimize Options.   (line 1526)
-* fdata-sections:                        Optimize Options.   (line 1641)
+* fcx-fortran-rules:                     Optimize Options.   (line 1531)
+* fcx-limited-range:                     Optimize Options.   (line 1519)
+* fdata-sections:                        Optimize Options.   (line 1634)
 * fdbg-cnt:                              Debugging Options.  (line  325)
 * fdbg-cnt-list:                         Debugging Options.  (line  322)
 * fdce:                                  Optimize Options.   (line  461)
@@ -40447,19 +40445,19 @@ look up both forms.
 * ffinite-math-only:                     Optimize Options.   (line 1443)
 * ffix-and-continue:                     Darwin Options.     (line  106)
 * ffixed:                                Code Gen Options.   (line  236)
-* ffloat-store <1>:                      Optimize Options.   (line 1356)
-* ffloat-store:                          Disappointments.    (line   77)
+* ffloat-store <1>:                      Disappointments.    (line   77)
+* ffloat-store:                          Optimize Options.   (line 1356)
 * ffor-scope:                            C++ Dialect Options.
                                                              (line   86)
 * fforward-propagate:                    Optimize Options.   (line  149)
-* ffreestanding <1>:                     Function Attributes.
+* ffreestanding <1>:                     Standards.          (line   84)
+* ffreestanding <2>:                     Warning Options.    (line  194)
+* ffreestanding <3>:                     Function Attributes.
                                                              (line  412)
-* ffreestanding <2>:                     C Dialect Options.  (line  211)
-* ffreestanding <3>:                     Standards.          (line   84)
-* ffreestanding:                         Warning Options.    (line  194)
+* ffreestanding:                         C Dialect Options.  (line  211)
 * ffriend-injection:                     C++ Dialect Options.
                                                              (line   56)
-* ffunction-sections:                    Optimize Options.   (line 1641)
+* ffunction-sections:                    Optimize Options.   (line 1634)
 * fgcse:                                 Optimize Options.   (line  399)
 * fgcse-after-reload:                    Optimize Options.   (line  435)
 * fgcse-las:                             Optimize Options.   (line  428)
@@ -40511,11 +40509,11 @@ look up both forms.
                                                              (line   15)
 * fmodulo-sched:                         Optimize Options.   (line  293)
 * fmodulo-sched-allow-regmoves:          Optimize Options.   (line  298)
-* fmove-loop-invariants:                 Optimize Options.   (line 1631)
-* fms-extensions <1>:                    Unnamed Fields.     (line   37)
-* fms-extensions <2>:                    C++ Dialect Options.
+* fmove-loop-invariants:                 Optimize Options.   (line 1624)
+* fms-extensions <1>:                    C Dialect Options.  (line  229)
+* fms-extensions <2>:                    Unnamed Fields.     (line   37)
+* fms-extensions:                        C++ Dialect Options.
                                                              (line  121)
-* fms-extensions:                        C Dialect Options.  (line  229)
 * fmudflap:                              Optimize Options.   (line  338)
 * fmudflapir:                            Optimize Options.   (line  338)
 * fmudflapth:                            Optimize Options.   (line  338)
@@ -40525,18 +40523,18 @@ look up both forms.
                                                              (line   30)
 * fno-asm:                               C Dialect Options.  (line  156)
 * fno-branch-count-reg:                  Optimize Options.   (line  305)
-* fno-builtin <1>:                       C Dialect Options.  (line  170)
-* fno-builtin <2>:                       Function Attributes.
+* fno-builtin <1>:                       Other Builtins.     (line   14)
+* fno-builtin <2>:                       C Dialect Options.  (line  170)
+* fno-builtin <3>:                       Function Attributes.
                                                              (line  412)
-* fno-builtin <3>:                       Warning Options.    (line  194)
-* fno-builtin:                           Other Builtins.     (line   14)
+* fno-builtin:                           Warning Options.    (line  194)
 * fno-common <1>:                        Code Gen Options.   (line  135)
 * fno-common:                            Variable Attributes.
                                                              (line  105)
-* fno-default-inline <1>:                Inline.             (line   71)
+* fno-default-inline <1>:                Optimize Options.   (line  134)
 * fno-default-inline <2>:                C++ Dialect Options.
                                                              (line  262)
-* fno-default-inline:                    Optimize Options.   (line  134)
+* fno-default-inline:                    Inline.             (line   71)
 * fno-defer-pop:                         Optimize Options.   (line  141)
 * fno-dwarf2-cfi-asm:                    Debugging Options.  (line  223)
 * fno-elide-constructors:                C++ Dialect Options.
@@ -40550,9 +40548,9 @@ look up both forms.
                                                              (line   98)
 * fno-guess-branch-probability:          Optimize Options.   (line 1056)
 * fno-ident:                             Code Gen Options.   (line  155)
-* fno-implement-inlines <1>:             C++ Dialect Options.
+* fno-implement-inlines <1>:             C++ Interface.      (line   75)
+* fno-implement-inlines:                 C++ Dialect Options.
                                                              (line  115)
-* fno-implement-inlines:                 C++ Interface.      (line   75)
 * fno-implicit-inline-templates:         C++ Dialect Options.
                                                              (line  109)
 * fno-implicit-templates <1>:            C++ Dialect Options.
@@ -40612,13 +40610,13 @@ look up both forms.
 * force_cpusubtype_ALL:                  Darwin Options.     (line  138)
 * force_flat_namespace:                  Darwin Options.     (line  199)
 * fpack-struct:                          Code Gen Options.   (line  279)
-* fpcc-struct-return <1>:                Code Gen Options.   (line   70)
-* fpcc-struct-return:                    Incompatibilities.  (line  170)
+* fpcc-struct-return <1>:                Incompatibilities.  (line  170)
+* fpcc-struct-return:                    Code Gen Options.   (line   70)
 * fpch-deps:                             Preprocessor Options.
                                                              (line  281)
 * fpch-preprocess:                       Preprocessor Options.
                                                              (line  289)
-* fpeel-loops:                           Optimize Options.   (line 1623)
+* fpeel-loops:                           Optimize Options.   (line 1616)
 * fpermissive:                           C++ Dialect Options.
                                                              (line  140)
 * fpic:                                  Code Gen Options.   (line  184)
@@ -40631,32 +40629,31 @@ look up both forms.
 * fprefetch-loop-arrays:                 Optimize Options.   (line 1036)
 * fpreprocessed:                         Preprocessor Options.
                                                              (line  476)
-* fprofile-arcs <1>:                     Debugging Options.  (line  257)
-* fprofile-arcs:                         Other Builtins.     (line  242)
+* fprofile-arcs <1>:                     Other Builtins.     (line  242)
+* fprofile-arcs:                         Debugging Options.  (line  257)
 * fprofile-correction:                   Optimize Options.   (line 1299)
 * fprofile-dir:                          Optimize Options.   (line 1306)
 * fprofile-generate:                     Optimize Options.   (line 1316)
 * fprofile-use:                          Optimize Options.   (line 1329)
-* fprofile-values:                       Optimize Options.   (line 1571)
+* fprofile-values:                       Optimize Options.   (line 1564)
 * frandom-string:                        Debugging Options.  (line  833)
 * freciprocal-math:                      Optimize Options.   (line 1434)
 * frecord-gcc-switches:                  Code Gen Options.   (line  174)
 * freg-struct-return:                    Code Gen Options.   (line   88)
 * fregmove:                              Optimize Options.   (line  504)
-* frename-registers:                     Optimize Options.   (line 1590)
+* frename-registers:                     Optimize Options.   (line 1583)
 * freorder-blocks:                       Optimize Options.   (line 1073)
 * freorder-blocks-and-partition:         Optimize Options.   (line 1079)
 * freorder-functions:                    Optimize Options.   (line 1090)
 * freplace-objc-classes:                 Objective-C and Objective-C++ Dialect Options.
                                                              (line  174)
-* frepo <1>:                             Template Instantiation.
-                                                             (line   62)
-* frepo:                                 C++ Dialect Options.
+* frepo <1>:                             C++ Dialect Options.
                                                              (line  145)
+* frepo:                                 Template Instantiation.
+                                                             (line   62)
 * frerun-cse-after-loop:                 Optimize Options.   (line  393)
 * freschedule-modulo-scheduled-loops:    Optimize Options.   (line  652)
 * frounding-math:                        Optimize Options.   (line 1480)
-* frtl-abstract-sequences:               Optimize Options.   (line 1500)
 * fsched-spec-load:                      Optimize Options.   (line  593)
 * fsched-spec-load-dangerous:            Optimize Options.   (line  598)
 * fsched-stalled-insns:                  Optimize Options.   (line  604)
@@ -40666,7 +40663,7 @@ look up both forms.
 * fsched2-use-traces:                    Optimize Options.   (line  635)
 * fschedule-insns:                       Optimize Options.   (line  564)
 * fschedule-insns2:                      Optimize Options.   (line  574)
-* fsection-anchors:                      Optimize Options.   (line 1686)
+* fsection-anchors:                      Optimize Options.   (line 1679)
 * fsee:                                  Optimize Options.   (line  647)
 * fsel-sched-pipelining:                 Optimize Options.   (line  666)
 * fsel-sched-pipelining-outer-loops:     Optimize Options.   (line  671)
@@ -40679,20 +40676,20 @@ look up both forms.
 * fshort-enums:                          Structures unions enumerations and bit-fields implementation.
                                                              (line   43)
 * fshort-wchar:                          Code Gen Options.   (line  125)
-* fsignaling-nans:                       Optimize Options.   (line 1507)
+* fsignaling-nans:                       Optimize Options.   (line 1500)
 * fsigned-bitfields <1>:                 C Dialect Options.  (line  296)
 * fsigned-bitfields:                     Non-bugs.           (line   57)
-* fsigned-char <1>:                      C Dialect Options.  (line  286)
-* fsigned-char:                          Characters implementation.
+* fsigned-char <1>:                      Characters implementation.
                                                              (line   31)
-* fsingle-precision-constant:            Optimize Options.   (line 1522)
+* fsigned-char:                          C Dialect Options.  (line  286)
+* fsingle-precision-constant:            Optimize Options.   (line 1515)
 * fsplit-ivs-in-unroller:                Optimize Options.   (line 1010)
 * fsplit-wide-types:                     Optimize Options.   (line  368)
 * fstack-check:                          Code Gen Options.   (line  357)
 * fstack-limit-register:                 Code Gen Options.   (line  396)
 * fstack-limit-symbol:                   Code Gen Options.   (line  396)
-* fstack-protector:                      Optimize Options.   (line 1674)
-* fstack-protector-all:                  Optimize Options.   (line 1683)
+* fstack-protector:                      Optimize Options.   (line 1667)
+* fstack-protector-all:                  Optimize Options.   (line 1676)
 * fstats:                                C++ Dialect Options.
                                                              (line  160)
 * fstrict-aliasing:                      Optimize Options.   (line 1103)
@@ -40706,7 +40703,7 @@ look up both forms.
 * fthread-jumps:                         Optimize Options.   (line  359)
 * ftime-report:                          Debugging Options.  (line  243)
 * ftls-model:                            Code Gen Options.   (line  441)
-* ftracer:                               Optimize Options.   (line 1600)
+* ftracer:                               Optimize Options.   (line  993)
 * ftrapv:                                Code Gen Options.   (line   22)
 * ftree-builtin-call-dce:                Optimize Options.   (line  788)
 * ftree-ccp:                             Optimize Options.   (line  774)
@@ -40732,18 +40729,18 @@ look up both forms.
 * ftree-vectorizer-verbose:              Debugging Options.  (line  808)
 * ftree-vrp:                             Optimize Options.   (line  984)
 * funit-at-a-time:                       Optimize Options.   (line 1247)
-* funroll-all-loops:                     Optimize Options.   (line 1617)
-* funroll-loops:                         Optimize Options.   (line 1607)
+* funroll-all-loops:                     Optimize Options.   (line 1610)
+* funroll-loops:                         Optimize Options.   (line  998)
 * funsafe-loop-optimizations:            Optimize Options.   (line  440)
 * funsafe-math-optimizations:            Optimize Options.   (line 1402)
-* funsigned-bitfields <1>:               C Dialect Options.  (line  296)
-* funsigned-bitfields <2>:               Non-bugs.           (line   57)
-* funsigned-bitfields:                   Structures unions enumerations and bit-fields implementation.
+* funsigned-bitfields <1>:               Non-bugs.           (line   57)
+* funsigned-bitfields <2>:               Structures unions enumerations and bit-fields implementation.
                                                              (line   17)
+* funsigned-bitfields:                   C Dialect Options.  (line  296)
 * funsigned-char <1>:                    C Dialect Options.  (line  268)
 * funsigned-char:                        Characters implementation.
                                                              (line   31)
-* funswitch-loops:                       Optimize Options.   (line 1635)
+* funswitch-loops:                       Optimize Options.   (line 1628)
 * funwind-tables:                        Code Gen Options.   (line   57)
 * fuse-cxa-atexit:                       C++ Dialect Options.
                                                              (line  178)
@@ -40756,7 +40753,7 @@ look up both forms.
                                                              (line  190)
 * fvisibility-ms-compat:                 C++ Dialect Options.
                                                              (line  218)
-* fvpt:                                  Optimize Options.   (line 1581)
+* fvpt:                                  Optimize Options.   (line 1574)
 * fweb:                                  Optimize Options.   (line 1266)
 * fwhole-program:                        Optimize Options.   (line 1277)
 * fwide-exec-charset:                    Preprocessor Options.
@@ -40766,12 +40763,12 @@ look up both forms.
 * fwrapv:                                Code Gen Options.   (line   26)
 * fzero-link:                            Objective-C and Objective-C++ Dialect Options.
                                                              (line  184)
-* G:                                     MIPS Options.       (line  314)
 * g:                                     Debugging Options.  (line   10)
-* G <1>:                                 System V Options.   (line   10)
-* G <2>:                                 M32R/D Options.     (line   57)
-* G:                                     RS/6000 and PowerPC Options.
+* G <1>:                                 RS/6000 and PowerPC Options.
                                                              (line  663)
+* G <2>:                                 MIPS Options.       (line  314)
+* G <3>:                                 M32R/D Options.     (line   57)
+* G:                                     System V Options.   (line   10)
 * gcoff:                                 Debugging Options.  (line   70)
 * gdwarf-2:                              Debugging Options.  (line   88)
 * gdwarf-4:                              Debugging Options.  (line   95)
@@ -40796,9 +40793,9 @@ look up both forms.
 * I <1>:                                 Preprocessor Options.
                                                              (line   64)
 * I:                                     Directory Options.  (line   10)
-* I- <1>:                                Directory Options.  (line  107)
-* I-:                                    Preprocessor Options.
+* I- <1>:                                Preprocessor Options.
                                                              (line  362)
+* I-:                                    Directory Options.  (line  107)
 * idirafter:                             Preprocessor Options.
                                                              (line  404)
 * iframework:                            Darwin Options.     (line   59)
@@ -40813,9 +40810,9 @@ look up both forms.
 * install_name:                          Darwin Options.     (line  199)
 * iprefix:                               Preprocessor Options.
                                                              (line  411)
-* iquote <1>:                            Preprocessor Options.
+* iquote <1>:                            Directory Options.  (line   31)
+* iquote:                                Preprocessor Options.
                                                              (line  439)
-* iquote:                                Directory Options.  (line   31)
 * isysroot:                              Preprocessor Options.
                                                              (line  423)
 * isystem:                               Preprocessor Options.
@@ -40825,8 +40822,8 @@ look up both forms.
 * iwithprefixbefore:                     Preprocessor Options.
                                                              (line  417)
 * keep_private_externs:                  Darwin Options.     (line  199)
-* l:                                     Link Options.       (line   26)
 * L:                                     Directory Options.  (line   37)
+* l:                                     Link Options.       (line   26)
 * lobjc:                                 Link Options.       (line   53)
 * M:                                     Preprocessor Options.
                                                              (line  172)
@@ -40870,11 +40867,11 @@ look up both forms.
 * m528x:                                 M680x0 Options.     (line  156)
 * m5307:                                 M680x0 Options.     (line  160)
 * m5407:                                 M680x0 Options.     (line  164)
-* m64 <1>:                               S/390 and zSeries Options.
-                                                             (line   87)
-* m64 <2>:                               SPARC Options.      (line  191)
-* m64 <3>:                               i386 and x86-64 Options.
+* m64 <1>:                               i386 and x86-64 Options.
                                                              (line  612)
+* m64 <2>:                               S/390 and zSeries Options.
+                                                             (line   87)
+* m64 <3>:                               SPARC Options.      (line  191)
 * m64:                                   RS/6000 and PowerPC Options.
                                                              (line  252)
 * m68000:                                M680x0 Options.     (line   91)
@@ -40950,18 +40947,16 @@ look up both forms.
 * mapcs-frame:                           ARM Options.        (line   14)
 * mapp-regs <1>:                         V850 Options.       (line   57)
 * mapp-regs:                             SPARC Options.      (line   10)
-* march <1>:                             MIPS Options.       (line   14)
+* march <1>:                             CRIS Options.       (line   10)
 * march <2>:                             i386 and x86-64 Options.
                                                              (line  148)
-* march <3>:                             S/390 and zSeries Options.
+* march <3>:                             HPPA Options.       (line  162)
+* march <4>:                             S/390 and zSeries Options.
                                                              (line  116)
-* march <4>:                             HPPA Options.       (line    9)
-* march <5>:                             ARM Options.        (line  112)
-* march <6>:                             M680x0 Options.     (line   12)
-* march <7>:                             HPPA Options.       (line  162)
-* march <8>:                             i386 and x86-64 Options.
-                                                             (line  156)
-* march:                                 CRIS Options.       (line   10)
+* march <5>:                             M680x0 Options.     (line   12)
+* march <6>:                             ARM Options.        (line  112)
+* march <7>:                             HPPA Options.       (line    9)
+* march:                                 MIPS Options.       (line   14)
 * masm=DIALECT:                          i386 and x86-64 Options.
                                                              (line  205)
 * mauto-incdec:                          M68hc1x Options.    (line   26)
@@ -40975,13 +40970,13 @@ look up both forms.
 * mbcopy:                                PDP-11 Options.     (line   36)
 * mbig:                                  RS/6000 and PowerPC Options.
                                                              (line  474)
-* mbig-endian <1>:                       RS/6000 and PowerPC Options.
+* mbig-endian <1>:                       MCore Options.      (line   39)
+* mbig-endian <2>:                       RS/6000 and PowerPC Options.
                                                              (line  474)
-* mbig-endian <2>:                       IA-64 Options.      (line    9)
-* mbig-endian <3>:                       MCore Options.      (line   39)
-* mbig-endian:                           ARM Options.        (line   72)
-* mbig-switch <1>:                       V850 Options.       (line   52)
-* mbig-switch:                           HPPA Options.       (line   23)
+* mbig-endian <3>:                       ARM Options.        (line   72)
+* mbig-endian:                           IA-64 Options.      (line    9)
+* mbig-switch <1>:                       HPPA Options.       (line   23)
+* mbig-switch:                           V850 Options.       (line   52)
 * mbigtable:                             SH Options.         (line   74)
 * mbit-align:                            RS/6000 and PowerPC Options.
                                                              (line  428)
@@ -41049,21 +41044,21 @@ look up both forms.
 * mconstant-gp:                          IA-64 Options.      (line   46)
 * mcorea:                                Blackfin Options.   (line  149)
 * mcoreb:                                Blackfin Options.   (line  155)
-* mcpu <1>:                              DEC Alpha Options.  (line  223)
-* mcpu <2>:                              picoChip Options.   (line    9)
-* mcpu <3>:                              SPARC Options.      (line   96)
-* mcpu <4>:                              M680x0 Options.     (line   28)
-* mcpu <5>:                              ARC Options.        (line   23)
-* mcpu <6>:                              ARM Options.        (line   84)
-* mcpu <7>:                              CRIS Options.       (line   10)
-* mcpu <8>:                              i386 and x86-64 Options.
+* mcpu <1>:                              FRV Options.        (line  212)
+* mcpu <2>:                              ARC Options.        (line   23)
+* mcpu <3>:                              CRIS Options.       (line   10)
+* mcpu <4>:                              SPARC Options.      (line   96)
+* mcpu <5>:                              i386 and x86-64 Options.
                                                              (line  153)
-* mcpu <9>:                              FRV Options.        (line  212)
-* mcpu:                                  RS/6000 and PowerPC Options.
+* mcpu <6>:                              RS/6000 and PowerPC Options.
                                                              (line  114)
+* mcpu <7>:                              picoChip Options.   (line    9)
+* mcpu <8>:                              DEC Alpha Options.  (line  223)
+* mcpu <9>:                              ARM Options.        (line   84)
+* mcpu:                                  M680x0 Options.     (line   28)
 * mcpu32:                                M680x0 Options.     (line  134)
-* mcpu= <1>:                             Blackfin Options.   (line    7)
-* mcpu=:                                 M32C Options.       (line    7)
+* mcpu= <1>:                             M32C Options.       (line    7)
+* mcpu=:                                 Blackfin Options.   (line    7)
 * mcsync-anomaly:                        Blackfin Options.   (line   55)
 * mcx16:                                 i386 and x86-64 Options.
                                                              (line  472)
@@ -41081,8 +41076,8 @@ look up both forms.
 * mdisable-callt:                        V850 Options.       (line   80)
 * mdisable-fpregs:                       HPPA Options.       (line   33)
 * mdisable-indexing:                     HPPA Options.       (line   40)
-* mdiv <1>:                              M680x0 Options.     (line  205)
-* mdiv:                                  MCore Options.      (line   15)
+* mdiv <1>:                              MCore Options.      (line   15)
+* mdiv:                                  M680x0 Options.     (line  205)
 * mdiv=STRATEGY:                         SH Options.         (line  141)
 * mdivide-breaks:                        MIPS Options.       (line  431)
 * mdivide-traps:                         MIPS Options.       (line  431)
@@ -41121,8 +41116,8 @@ look up both forms.
                                                              (line   95)
 * metrax100:                             CRIS Options.       (line   26)
 * metrax4:                               CRIS Options.       (line   26)
-* mexplicit-relocs <1>:                  MIPS Options.       (line  416)
-* mexplicit-relocs:                      DEC Alpha Options.  (line  184)
+* mexplicit-relocs <1>:                  DEC Alpha Options.  (line  184)
+* mexplicit-relocs:                      MIPS Options.       (line  416)
 * mextern-sdata:                         MIPS Options.       (line  334)
 * MF:                                    Preprocessor Options.
                                                              (line  207)
@@ -41140,10 +41135,10 @@ look up both forms.
 * mfix-vr4120:                           MIPS Options.       (line  513)
 * mfix-vr4130:                           MIPS Options.       (line  527)
 * mfixed-cc:                             FRV Options.        (line   28)
-* mfixed-range <1>:                      IA-64 Options.      (line   90)
-* mfixed-range <2>:                      HPPA Options.       (line   59)
-* mfixed-range <3>:                      SH Options.         (line  189)
-* mfixed-range:                          SPU Options.        (line   47)
+* mfixed-range <1>:                      HPPA Options.       (line   59)
+* mfixed-range <2>:                      IA-64 Options.      (line   90)
+* mfixed-range <3>:                      SPU Options.        (line   47)
+* mfixed-range:                          SH Options.         (line  189)
 * mflip-mips16:                          MIPS Options.       (line  109)
 * mfloat-abi:                            ARM Options.        (line   41)
 * mfloat-gprs:                           RS/6000 and PowerPC Options.
@@ -41168,21 +41163,21 @@ look up both forms.
 * mfpr-64:                               FRV Options.        (line   16)
 * mfprnd:                                RS/6000 and PowerPC Options.
                                                              (line   31)
-* mfpu <1>:                              ARM Options.        (line  124)
-* mfpu <2>:                              RS/6000 and PowerPC Options.
+* mfpu <1>:                              SPARC Options.      (line   20)
+* mfpu <2>:                              PDP-11 Options.     (line    9)
+* mfpu <3>:                              ARM Options.        (line  124)
+* mfpu:                                  RS/6000 and PowerPC Options.
                                                              (line  355)
-* mfpu <3>:                              SPARC Options.      (line   20)
-* mfpu:                                  PDP-11 Options.     (line    9)
 * mfull-toc:                             RS/6000 and PowerPC Options.
                                                              (line  263)
-* mfused-madd <1>:                       i386 and x86-64 Options.
-                                                             (line  596)
+* mfused-madd <1>:                       Xtensa Options.     (line   19)
 * mfused-madd <2>:                       RS/6000 and PowerPC Options.
                                                              (line  408)
-* mfused-madd <3>:                       Xtensa Options.     (line   19)
-* mfused-madd <4>:                       MIPS Options.       (line  466)
-* mfused-madd:                           S/390 and zSeries Options.
+* mfused-madd <3>:                       MIPS Options.       (line  466)
+* mfused-madd <4>:                       S/390 and zSeries Options.
                                                              (line  137)
+* mfused-madd:                           i386 and x86-64 Options.
+                                                             (line  596)
 * MG:                                    Preprocessor Options.
                                                              (line  216)
 * mg:                                    VAX Options.        (line   17)
@@ -41207,20 +41202,20 @@ look up both forms.
                                                              (line   31)
 * mhard-dfp:                             S/390 and zSeries Options.
                                                              (line   20)
-* mhard-float <1>:                       MIPS Options.       (line  225)
-* mhard-float <2>:                       S/390 and zSeries Options.
+* mhard-float <1>:                       M680x0 Options.     (line  193)
+* mhard-float <2>:                       SPARC Options.      (line   20)
+* mhard-float <3>:                       S/390 and zSeries Options.
                                                              (line   11)
-* mhard-float <3>:                       M680x0 Options.     (line  193)
-* mhard-float <4>:                       SPARC Options.      (line   20)
-* mhard-float <5>:                       ARM Options.        (line   62)
-* mhard-float <6>:                       FRV Options.        (line   19)
-* mhard-float:                           RS/6000 and PowerPC Options.
+* mhard-float <4>:                       RS/6000 and PowerPC Options.
                                                              (line  341)
+* mhard-float <5>:                       FRV Options.        (line   19)
+* mhard-float <6>:                       MIPS Options.       (line  225)
+* mhard-float:                           ARM Options.        (line   62)
 * mhard-quad-float:                      SPARC Options.      (line   41)
 * mhardlit:                              MCore Options.      (line   10)
 * mhint-max-distance:                    SPU Options.        (line   67)
 * mhint-max-nops:                        SPU Options.        (line   61)
-* mhitachi:                              SH Options.         (line   90)
+* mhitachi:                              SH Options.         (line   87)
 * micplb:                                Blackfin Options.   (line  168)
 * mid-shared-library:                    Blackfin Options.   (line   76)
 * mieee <1>:                             DEC Alpha Options.  (line   39)
@@ -41254,8 +41249,8 @@ look up both forms.
 * minsert-sched-nops:                    RS/6000 and PowerPC Options.
                                                              (line  501)
 * mint16:                                PDP-11 Options.     (line   40)
-* mint32 <1>:                            H8/300 Options.     (line   28)
-* mint32:                                PDP-11 Options.     (line   44)
+* mint32 <1>:                            PDP-11 Options.     (line   44)
+* mint32:                                H8/300 Options.     (line   28)
 * mint8:                                 AVR Options.        (line   55)
 * minterlink-mips16:                     MIPS Options.       (line  116)
 * minvalid-symbols:                      SH Options.         (line  234)
@@ -41290,19 +41285,19 @@ look up both forms.
 * mlinux:                                CRIS Options.       (line   91)
 * mlittle:                               RS/6000 and PowerPC Options.
                                                              (line  468)
-* mlittle-endian <1>:                    RS/6000 and PowerPC Options.
+* mlittle-endian <1>:                    IA-64 Options.      (line   13)
+* mlittle-endian <2>:                    RS/6000 and PowerPC Options.
                                                              (line  468)
-* mlittle-endian <2>:                    ARM Options.        (line   68)
-* mlittle-endian <3>:                    SPARC Options.      (line  185)
+* mlittle-endian <3>:                    ARM Options.        (line   68)
 * mlittle-endian <4>:                    MCore Options.      (line   39)
-* mlittle-endian:                        IA-64 Options.      (line   13)
+* mlittle-endian:                        SPARC Options.      (line  185)
 * mllsc:                                 MIPS Options.       (line  241)
 * mlocal-sdata:                          MIPS Options.       (line  322)
-* mlong-calls <1>:                       V850 Options.       (line   10)
-* mlong-calls <2>:                       M68hc1x Options.    (line   35)
+* mlong-calls <1>:                       M68hc1x Options.    (line   35)
+* mlong-calls <2>:                       Blackfin Options.   (line  116)
 * mlong-calls <3>:                       ARM Options.        (line  154)
-* mlong-calls <4>:                       Blackfin Options.   (line  116)
-* mlong-calls <5>:                       MIPS Options.       (line  452)
+* mlong-calls <4>:                       MIPS Options.       (line  452)
+* mlong-calls <5>:                       V850 Options.       (line   10)
 * mlong-calls:                           FRV Options.        (line   99)
 * mlong-double-128:                      S/390 and zSeries Options.
                                                              (line   29)
@@ -41375,8 +41370,8 @@ look up both forms.
 * mno-altivec:                           RS/6000 and PowerPC Options.
                                                              (line  183)
 * mno-am33:                              MN10300 Options.    (line   20)
-* mno-app-regs <1>:                      V850 Options.       (line   61)
-* mno-app-regs:                          SPARC Options.      (line   10)
+* mno-app-regs <1>:                      SPARC Options.      (line   10)
+* mno-app-regs:                          V850 Options.       (line   61)
 * mno-avoid-indexed-addresses:           RS/6000 and PowerPC Options.
                                                              (line  399)
 * mno-backchain:                         S/390 and zSeries Options.
@@ -41443,20 +41438,20 @@ look up both forms.
 * mno-fprnd:                             RS/6000 and PowerPC Options.
                                                              (line   31)
 * mno-fpu:                               SPARC Options.      (line   25)
-* mno-fused-madd <1>:                    Xtensa Options.     (line   19)
-* mno-fused-madd <2>:                    RS/6000 and PowerPC Options.
-                                                             (line  408)
-* mno-fused-madd <3>:                    MIPS Options.       (line  466)
-* mno-fused-madd:                        S/390 and zSeries Options.
+* mno-fused-madd <1>:                    S/390 and zSeries Options.
                                                              (line  137)
+* mno-fused-madd <2>:                    MIPS Options.       (line  466)
+* mno-fused-madd <3>:                    Xtensa Options.     (line   19)
+* mno-fused-madd:                        RS/6000 and PowerPC Options.
+                                                             (line  408)
 * mno-gnu-as:                            IA-64 Options.      (line   18)
 * mno-gnu-ld:                            IA-64 Options.      (line   23)
 * mno-gotplt:                            CRIS Options.       (line   81)
 * mno-gpopt:                             MIPS Options.       (line  357)
-* mno-hard-dfp <1>:                      RS/6000 and PowerPC Options.
-                                                             (line   31)
-* mno-hard-dfp:                          S/390 and zSeries Options.
+* mno-hard-dfp <1>:                      S/390 and zSeries Options.
                                                              (line   20)
+* mno-hard-dfp:                          RS/6000 and PowerPC Options.
+                                                             (line   31)
 * mno-hardlit:                           MCore Options.      (line   10)
 * mno-id-shared-library:                 Blackfin Options.   (line   83)
 * mno-ieee-fp:                           i386 and x86-64 Options.
@@ -41472,12 +41467,12 @@ look up both forms.
 * mno-libfuncs:                          MMIX Options.       (line   10)
 * mno-llsc:                              MIPS Options.       (line  241)
 * mno-local-sdata:                       MIPS Options.       (line  322)
-* mno-long-calls <1>:                    HPPA Options.       (line  136)
-* mno-long-calls <2>:                    ARM Options.        (line  154)
-* mno-long-calls <3>:                    V850 Options.       (line   10)
-* mno-long-calls <4>:                    M68hc1x Options.    (line   35)
-* mno-long-calls <5>:                    Blackfin Options.   (line  116)
-* mno-long-calls:                        MIPS Options.       (line  452)
+* mno-long-calls <1>:                    V850 Options.       (line   10)
+* mno-long-calls <2>:                    M68hc1x Options.    (line   35)
+* mno-long-calls <3>:                    MIPS Options.       (line  452)
+* mno-long-calls <4>:                    ARM Options.        (line  154)
+* mno-long-calls <5>:                    HPPA Options.       (line  136)
+* mno-long-calls:                        Blackfin Options.   (line  116)
 * mno-longcall:                          RS/6000 and PowerPC Options.
                                                              (line  677)
 * mno-longcalls:                         Xtensa Options.     (line   67)
@@ -41560,9 +41555,9 @@ look up both forms.
 * mno-sched-prefer-non-data-spec-insns:  IA-64 Options.      (line  180)
 * mno-sched-prolog:                      ARM Options.        (line   32)
 * mno-sched-spec-verbose:                IA-64 Options.      (line  176)
-* mno-sdata <1>:                         RS/6000 and PowerPC Options.
+* mno-sdata <1>:                         IA-64 Options.      (line   42)
+* mno-sdata:                             RS/6000 and PowerPC Options.
                                                              (line  658)
-* mno-sdata:                             IA-64 Options.      (line   42)
 * mno-sep-data:                          Blackfin Options.   (line  111)
 * mno-serialize-volatile:                Xtensa Options.     (line   35)
 * mno-short:                             M680x0 Options.     (line  222)
@@ -41583,9 +41578,9 @@ look up both forms.
                                                              (line  435)
 * mno-stack-align:                       CRIS Options.       (line   55)
 * mno-stack-bias:                        SPARC Options.      (line  222)
-* mno-strict-align <1>:                  M680x0 Options.     (line  283)
-* mno-strict-align:                      RS/6000 and PowerPC Options.
+* mno-strict-align <1>:                  RS/6000 and PowerPC Options.
                                                              (line  440)
+* mno-strict-align:                      M680x0 Options.     (line  283)
 * mno-string:                            RS/6000 and PowerPC Options.
                                                              (line  377)
 * mno-sum-in-toc:                        RS/6000 and PowerPC Options.
@@ -41624,9 +41619,9 @@ look up both forms.
                                                              (line   36)
 * mold-mnemonics:                        RS/6000 and PowerPC Options.
                                                              (line   99)
-* momit-leaf-frame-pointer <1>:          Blackfin Options.   (line   39)
-* momit-leaf-frame-pointer:              i386 and x86-64 Options.
+* momit-leaf-frame-pointer <1>:          i386 and x86-64 Options.
                                                              (line  578)
+* momit-leaf-frame-pointer:              Blackfin Options.   (line   39)
 * mone-byte-bool:                        Darwin Options.     (line   92)
 * moptimize-membar:                      FRV Options.        (line  201)
 * MP:                                    Preprocessor Options.
@@ -41692,8 +41687,8 @@ look up both forms.
                                                              (line  671)
 * mregparm:                              i386 and x86-64 Options.
                                                              (line  321)
-* mrelax <1>:                            MN10300 Options.    (line   34)
-* mrelax <2>:                            SH Options.         (line   70)
+* mrelax <1>:                            SH Options.         (line   70)
+* mrelax <2>:                            MN10300 Options.    (line   34)
 * mrelax:                                H8/300 Options.     (line    9)
 * mrelax-immediate:                      MCore Options.      (line   19)
 * mrelocatable:                          RS/6000 and PowerPC Options.
@@ -41702,11 +41697,11 @@ look up both forms.
                                                              (line  453)
 * mreturn-pointer-on-d0:                 MN10300 Options.    (line   24)
 * mrodata:                               ARC Options.        (line   30)
-* mrtd <1>:                              Function Attributes.
+* mrtd <1>:                              M680x0 Options.     (line  236)
+* mrtd <2>:                              Function Attributes.
                                                              (line  170)
-* mrtd <2>:                              i386 and x86-64 Options.
+* mrtd:                                  i386 and x86-64 Options.
                                                              (line  297)
-* mrtd:                                  M680x0 Options.     (line  236)
 * mrtp:                                  VxWorks Options.    (line   11)
 * ms:                                    H8/300 Options.     (line   17)
 * ms2600:                                H8/300 Options.     (line   24)
@@ -41735,18 +41730,18 @@ look up both forms.
 * mscore7:                               Score Options.      (line   31)
 * mscore7d:                              Score Options.      (line   34)
 * msda:                                  V850 Options.       (line   40)
-* msdata <1>:                            RS/6000 and PowerPC Options.
+* msdata <1>:                            IA-64 Options.      (line   42)
+* msdata:                                RS/6000 and PowerPC Options.
                                                              (line  645)
-* msdata:                                IA-64 Options.      (line   42)
 * msdata=data:                           RS/6000 and PowerPC Options.
                                                              (line  650)
 * msdata=default:                        RS/6000 and PowerPC Options.
                                                              (line  645)
 * msdata=eabi:                           RS/6000 and PowerPC Options.
                                                              (line  625)
-* msdata=none <1>:                       RS/6000 and PowerPC Options.
+* msdata=none <1>:                       M32R/D Options.     (line   40)
+* msdata=none:                           RS/6000 and PowerPC Options.
                                                              (line  658)
-* msdata=none:                           M32R/D Options.     (line   40)
 * msdata=sdata:                          M32R/D Options.     (line   49)
 * msdata=sysv:                           RS/6000 and PowerPC Options.
                                                              (line  636)
@@ -41760,16 +41755,16 @@ look up both forms.
 * mshort <1>:                            M680x0 Options.     (line  216)
 * mshort:                                M68hc1x Options.    (line   40)
 * msim <1>:                              Xstormy16 Options.  (line    9)
-* msim <2>:                              Blackfin Options.   (line   32)
-* msim <3>:                              M32C Options.       (line   13)
-* msim:                                  RS/6000 and PowerPC Options.
+* msim <2>:                              RS/6000 and PowerPC Options.
                                                              (line  581)
+* msim <3>:                              Blackfin Options.   (line   32)
+* msim:                                  M32C Options.       (line   13)
 * msimple-fpu:                           RS/6000 and PowerPC Options.
                                                              (line  351)
 * msingle-exit:                          MMIX Options.       (line   66)
-* msingle-float <1>:                     RS/6000 and PowerPC Options.
+* msingle-float <1>:                     MIPS Options.       (line  232)
+* msingle-float:                         RS/6000 and PowerPC Options.
                                                              (line  347)
-* msingle-float:                         MIPS Options.       (line  232)
 * msingle-pic-base:                      ARM Options.        (line  179)
 * msio:                                  HPPA Options.       (line  105)
 * msize:                                 AVR Options.        (line   32)
@@ -41782,23 +41777,23 @@ look up both forms.
 * msmall-text:                           DEC Alpha Options.  (line  213)
 * msmartmips:                            MIPS Options.       (line  268)
 * msoft-float <1>:                       DEC Alpha Options.  (line   10)
-* msoft-float <2>:                       FRV Options.        (line   22)
-* msoft-float <3>:                       MIPS Options.       (line  228)
-* msoft-float <4>:                       SPARC Options.      (line   25)
-* msoft-float <5>:                       M680x0 Options.     (line  199)
-* msoft-float <6>:                       S/390 and zSeries Options.
-                                                             (line   11)
-* msoft-float <7>:                       RS/6000 and PowerPC Options.
+* msoft-float <2>:                       M680x0 Options.     (line  199)
+* msoft-float <3>:                       RS/6000 and PowerPC Options.
                                                              (line  341)
-* msoft-float <8>:                       ARM Options.        (line   65)
-* msoft-float <9>:                       PDP-11 Options.     (line   13)
-* msoft-float <10>:                      i386 and x86-64 Options.
+* msoft-float <4>:                       FRV Options.        (line   22)
+* msoft-float <5>:                       ARM Options.        (line   65)
+* msoft-float <6>:                       PDP-11 Options.     (line   13)
+* msoft-float <7>:                       HPPA Options.       (line   91)
+* msoft-float <8>:                       i386 and x86-64 Options.
                                                              (line  216)
-* msoft-float:                           HPPA Options.       (line   91)
+* msoft-float <9>:                       S/390 and zSeries Options.
+                                                             (line   11)
+* msoft-float <10>:                      SPARC Options.      (line   25)
+* msoft-float:                           MIPS Options.       (line  228)
 * msoft-quad-float:                      SPARC Options.      (line   45)
 * msoft-reg-count:                       M68hc1x Options.    (line   43)
-* mspace <1>:                            V850 Options.       (line   30)
-* mspace:                                SH Options.         (line  125)
+* mspace <1>:                            SH Options.         (line  125)
+* mspace:                                V850 Options.       (line   30)
 * mspe:                                  RS/6000 and PowerPC Options.
                                                              (line  221)
 * mspecld-anomaly:                       Blackfin Options.   (line   46)
@@ -41821,9 +41816,9 @@ look up both forms.
 * mstackrealign:                         i386 and x86-64 Options.
                                                              (line  365)
 * mstdmain:                              SPU Options.        (line   40)
-* mstrict-align <1>:                     M680x0 Options.     (line  283)
-* mstrict-align:                         RS/6000 and PowerPC Options.
+* mstrict-align <1>:                     RS/6000 and PowerPC Options.
                                                              (line  440)
+* mstrict-align:                         M680x0 Options.     (line  283)
 * mstring:                               RS/6000 and PowerPC Options.
                                                              (line  377)
 * mstringop-strategy=ALG:                i386 and x86-64 Options.
@@ -41861,18 +41856,18 @@ look up both forms.
 * mtpf-trace:                            S/390 and zSeries Options.
                                                              (line  131)
 * mtrap-precision:                       DEC Alpha Options.  (line  109)
-* mtune <1>:                             IA-64 Options.      (line  101)
-* mtune <2>:                             M680x0 Options.     (line   66)
-* mtune <3>:                             S/390 and zSeries Options.
-                                                             (line  124)
-* mtune <4>:                             SPARC Options.      (line  158)
+* mtune <1>:                             MIPS Options.       (line   61)
+* mtune <2>:                             SPARC Options.      (line  158)
+* mtune <3>:                             CRIS Options.       (line   16)
+* mtune <4>:                             DEC Alpha Options.  (line  267)
 * mtune <5>:                             RS/6000 and PowerPC Options.
                                                              (line  163)
-* mtune <6>:                             DEC Alpha Options.  (line  267)
-* mtune <7>:                             MIPS Options.       (line   61)
-* mtune <8>:                             CRIS Options.       (line   16)
-* mtune <9>:                             i386 and x86-64 Options.
+* mtune <6>:                             i386 and x86-64 Options.
                                                              (line   10)
+* mtune <7>:                             M680x0 Options.     (line   66)
+* mtune <8>:                             IA-64 Options.      (line  101)
+* mtune <9>:                             S/390 and zSeries Options.
+                                                             (line  124)
 * mtune:                                 ARM Options.        (line  102)
 * muclibc:                               GNU/Linux Options.  (line   13)
 * muls:                                  Score Options.      (line   18)
@@ -41919,8 +41914,8 @@ look up both forms.
                                                              (line   50)
 * mword-relocations:                     ARM Options.        (line  258)
 * mwords-little-endian:                  ARM Options.        (line   76)
-* mxgot <1>:                             MIPS Options.       (line  190)
-* mxgot:                                 M680x0 Options.     (line  315)
+* mxgot <1>:                             M680x0 Options.     (line  315)
+* mxgot:                                 MIPS Options.       (line  190)
 * mxilinx-fpu:                           RS/6000 and PowerPC Options.
                                                              (line  361)
 * mxl-compat:                            RS/6000 and PowerPC Options.
@@ -41931,6 +41926,7 @@ look up both forms.
                                                              (line   95)
 * mzda:                                  V850 Options.       (line   45)
 * mzero-extend:                          MMIX Options.       (line   27)
+* no-canonical-prefixes:                 Overall Options.    (line  348)
 * no-integrated-cpp:                     C Dialect Options.  (line  240)
 * no-lsim:                               MCore Options.      (line   46)
 * no-red-zone:                           i386 and x86-64 Options.
@@ -41948,15 +41944,15 @@ look up both forms.
 * nostartfiles:                          Link Options.       (line   57)
 * nostdinc:                              Preprocessor Options.
                                                              (line  374)
-* nostdinc++ <1>:                        C++ Dialect Options.
-                                                             (line  254)
-* nostdinc++:                            Preprocessor Options.
+* nostdinc++ <1>:                        Preprocessor Options.
                                                              (line  379)
+* nostdinc++:                            C++ Dialect Options.
+                                                             (line  254)
 * nostdlib:                              Link Options.       (line   71)
-* o:                                     Overall Options.    (line  187)
 * O:                                     Optimize Options.   (line   29)
-* o:                                     Preprocessor Options.
+* o <1>:                                 Preprocessor Options.
                                                              (line   74)
+* o:                                     Overall Options.    (line  187)
 * O0:                                    Optimize Options.   (line  106)
 * O1:                                    Optimize Options.   (line   29)
 * O2:                                    Optimize Options.   (line   67)
@@ -41966,23 +41962,23 @@ look up both forms.
 * P:                                     Preprocessor Options.
                                                              (line  590)
 * pagezero_size:                         Darwin Options.     (line  199)
-* param:                                 Optimize Options.   (line 1710)
+* param:                                 Optimize Options.   (line 1703)
 * pass-exit-codes:                       Overall Options.    (line  145)
-* pedantic <1>:                          Warning Options.    (line   53)
-* pedantic <2>:                          Alternate Keywords. (line   29)
-* pedantic <3>:                          Preprocessor Options.
-                                                             (line  162)
-* pedantic <4>:                          Warnings and Errors.
+* pedantic <1>:                          Warnings and Errors.
                                                              (line   25)
-* pedantic <5>:                          Standards.          (line   16)
+* pedantic <2>:                          Standards.          (line   16)
+* pedantic <3>:                          Alternate Keywords. (line   29)
+* pedantic <4>:                          Warning Options.    (line   53)
+* pedantic <5>:                          Preprocessor Options.
+                                                             (line  162)
 * pedantic:                              C Extensions.       (line    6)
-* pedantic-errors <1>:                   Preprocessor Options.
+* pedantic-errors <1>:                   Warning Options.    (line   95)
+* pedantic-errors <2>:                   Preprocessor Options.
                                                              (line  167)
-* pedantic-errors <2>:                   Non-bugs.           (line  216)
-* pedantic-errors <3>:                   Warnings and Errors.
-                                                             (line   25)
+* pedantic-errors <3>:                   Non-bugs.           (line  216)
 * pedantic-errors <4>:                   Standards.          (line   16)
-* pedantic-errors:                       Warning Options.    (line   95)
+* pedantic-errors:                       Warnings and Errors.
+                                                             (line   25)
 * pg:                                    Debugging Options.  (line  233)
 * pie:                                   Link Options.       (line   92)
 * pipe:                                  Overall Options.    (line  209)
@@ -42001,9 +41997,9 @@ look up both forms.
 * print-sysroot:                         Debugging Options.  (line  940)
 * print-sysroot-headers-suffix:          Debugging Options.  (line  947)
 * private_bundle:                        Darwin Options.     (line  199)
-* pthread <1>:                           RS/6000 and PowerPC Options.
+* pthread <1>:                           SPARC Options.      (line  242)
+* pthread <2>:                           RS/6000 and PowerPC Options.
                                                              (line  709)
-* pthread <2>:                           SPARC Options.      (line  242)
 * pthread:                               IA-64 Options.      (line  106)
 * pthreads:                              SPARC Options.      (line  236)
 * Q:                                     Debugging Options.  (line  239)
@@ -42013,9 +42009,9 @@ look up both forms.
 * read_only_relocs:                      Darwin Options.     (line  199)
 * remap:                                 Preprocessor Options.
                                                              (line  638)
-* S <1>:                                 Overall Options.    (line  170)
-* S:                                     Link Options.       (line   20)
+* S:                                     Overall Options.    (line  170)
 * s:                                     Link Options.       (line  105)
+* S:                                     Link Options.       (line   20)
 * save-temps:                            Debugging Options.  (line  860)
 * sectalign:                             Darwin Options.     (line  199)
 * sectcreate:                            Darwin Options.     (line  199)
@@ -42035,14 +42031,14 @@ look up both forms.
 * sim2:                                  CRIS Options.       (line  101)
 * single_module:                         Darwin Options.     (line  199)
 * specs:                                 Directory Options.  (line   84)
-* static <1>:                            Link Options.       (line  109)
+* static <1>:                            Darwin Options.     (line  199)
 * static <2>:                            HPPA Options.       (line  192)
-* static:                                Darwin Options.     (line  199)
+* static:                                Link Options.       (line  109)
 * static-libgcc:                         Link Options.       (line  122)
-* std <1>:                               Non-bugs.           (line  107)
-* std <2>:                               Other Builtins.     (line   22)
-* std <3>:                               C Dialect Options.  (line   47)
-* std:                                   Standards.          (line   16)
+* std <1>:                               C Dialect Options.  (line   47)
+* std <2>:                               Non-bugs.           (line  107)
+* std <3>:                               Standards.          (line   16)
+* std:                                   Other Builtins.     (line   22)
 * std=:                                  Preprocessor Options.
                                                              (line  325)
 * sub_library:                           Darwin Options.     (line  199)
@@ -42050,52 +42046,51 @@ look up both forms.
 * symbolic:                              Link Options.       (line  157)
 * sysroot:                               Directory Options.  (line   92)
 * T:                                     Link Options.       (line  163)
-* target-help <1>:                       Preprocessor Options.
+* target-help <1>:                       Overall Options.    (line  240)
+* target-help:                           Preprocessor Options.
                                                              (line  643)
-* target-help:                           Overall Options.    (line  240)
-* threads <1>:                           HPPA Options.       (line  205)
-* threads:                               SPARC Options.      (line  230)
+* threads <1>:                           SPARC Options.      (line  230)
+* threads:                               HPPA Options.       (line  205)
 * time:                                  Debugging Options.  (line  874)
 * tls:                                   FRV Options.        (line   75)
 * TLS:                                   FRV Options.        (line   72)
 * traditional <1>:                       C Dialect Options.  (line  252)
 * traditional:                           Incompatibilities.  (line    6)
-* traditional-cpp <1>:                   Preprocessor Options.
+* traditional-cpp <1>:                   C Dialect Options.  (line  252)
+* traditional-cpp:                       Preprocessor Options.
                                                              (line  621)
-* traditional-cpp:                       C Dialect Options.  (line  252)
 * trigraphs <1>:                         Preprocessor Options.
                                                              (line  625)
 * trigraphs:                             C Dialect Options.  (line  236)
 * twolevel_namespace:                    Darwin Options.     (line  199)
-* u:                                     Link Options.       (line  196)
 * U:                                     Preprocessor Options.
                                                              (line   56)
+* u:                                     Link Options.       (line  196)
 * umbrella:                              Darwin Options.     (line  199)
 * undef:                                 Preprocessor Options.
                                                              (line   60)
 * undefined:                             Darwin Options.     (line  199)
 * unexported_symbols_list:               Darwin Options.     (line  199)
+* V:                                     Target Options.     (line   25)
 * v <1>:                                 Overall Options.    (line  198)
 * v:                                     Preprocessor Options.
                                                              (line  647)
-* V:                                     Target Options.     (line   25)
-* version <1>:                           Preprocessor Options.
+* version <1>:                           Overall Options.    (line  352)
+* version:                               Preprocessor Options.
                                                              (line  660)
-* version:                               Overall Options.    (line  348)
-* w:                                     Preprocessor Options.
+* W <1>:                                 Warning Options.    (line 1132)
+* W:                                     Incompatibilities.  (line   64)
+* w <1>:                                 Preprocessor Options.
                                                              (line  158)
-* W:                                     Warning Options.    (line 1025)
 * w:                                     Warning Options.    (line   18)
-* W <1>:                                 Warning Options.    (line  146)
-* W <2>:                                 Incompatibilities.  (line   64)
-* W:                                     Warning Options.    (line 1132)
+* W:                                     Warning Options.    (line 1025)
 * Wa:                                    Assembler Options.  (line    9)
 * Wabi:                                  C++ Dialect Options.
                                                              (line  268)
 * Waddress:                              Warning Options.    (line  953)
 * Waggregate-return:                     Warning Options.    (line  971)
-* Wall <1>:                              Warning Options.    (line   99)
-* Wall <2>:                              Standard Libraries. (line    6)
+* Wall <1>:                              Standard Libraries. (line    6)
+* Wall <2>:                              Warning Options.    (line   99)
 * Wall:                                  Preprocessor Options.
                                                              (line   80)
 * Warray-bounds:                         Warning Options.    (line  691)
@@ -42108,9 +42103,9 @@ look up both forms.
 * Wcast-qual:                            Warning Options.    (line  884)
 * Wchar-subscripts:                      Warning Options.    (line  184)
 * Wclobbered:                            Warning Options.    (line  909)
-* Wcomment <1>:                          Warning Options.    (line  189)
-* Wcomment:                              Preprocessor Options.
+* Wcomment <1>:                          Preprocessor Options.
                                                              (line   88)
+* Wcomment:                              Warning Options.    (line  189)
 * Wcomments:                             Preprocessor Options.
                                                              (line   88)
 * Wconversion:                           Warning Options.    (line  913)
@@ -42127,25 +42122,25 @@ look up both forms.
 * Weffc++:                               C++ Dialect Options.
                                                              (line  387)
 * Wempty-body:                           Warning Options.    (line  932)
-* Wendif-labels <1>:                     Preprocessor Options.
+* Wendif-labels <1>:                     Warning Options.    (line  822)
+* Wendif-labels:                         Preprocessor Options.
                                                              (line  135)
-* Wendif-labels:                         Warning Options.    (line  822)
 * Wenum-compare:                         Warning Options.    (line  936)
-* Werror <1>:                            Warning Options.    (line   21)
-* Werror:                                Preprocessor Options.
+* Werror <1>:                            Preprocessor Options.
                                                              (line  148)
+* Werror:                                Warning Options.    (line   21)
 * Werror=:                               Warning Options.    (line   24)
-* Wextra:                                Warning Options.    (line 1132)
+* Wextra:                                Warning Options.    (line 1025)
 * Wfatal-errors:                         Warning Options.    (line   38)
 * Wfloat-equal:                          Warning Options.    (line  712)
-* Wformat <1>:                           Function Attributes.
+* Wformat <1>:                           Warning Options.    (line  194)
+* Wformat:                               Function Attributes.
                                                              (line  373)
-* Wformat:                               Warning Options.    (line  194)
 * Wformat-contains-nul:                  Warning Options.    (line  233)
 * Wformat-extra-args:                    Warning Options.    (line  237)
-* Wformat-nonliteral <1>:                Warning Options.    (line  255)
-* Wformat-nonliteral:                    Function Attributes.
+* Wformat-nonliteral <1>:                Function Attributes.
                                                              (line  432)
+* Wformat-nonliteral:                    Warning Options.    (line  255)
 * Wformat-security:                      Warning Options.    (line  260)
 * Wformat-y2k:                           Warning Options.    (line  229)
 * Wformat-zero-length:                   Warning Options.    (line  251)
@@ -42158,8 +42153,8 @@ look up both forms.
 * Wimplicit-function-declaration:        Warning Options.    (line  300)
 * Wimplicit-int:                         Warning Options.    (line  296)
 * Winit-self:                            Warning Options.    (line  283)
-* Winline <1>:                           Warning Options.    (line 1211)
-* Winline:                               Inline.             (line   63)
+* Winline <1>:                           Inline.             (line   63)
+* Winline:                               Warning Options.    (line 1211)
 * Wint-to-pointer-cast:                  Warning Options.    (line 1238)
 * Winvalid-offsetof:                     Warning Options.    (line 1224)
 * Winvalid-pch:                          Warning Options.    (line 1246)
@@ -42210,7 +42205,7 @@ look up both forms.
 * Wno-enum-compare:                      Warning Options.    (line  936)
 * Wno-error:                             Warning Options.    (line   21)
 * Wno-error=:                            Warning Options.    (line   24)
-* Wno-extra:                             Warning Options.    (line 1132)
+* Wno-extra:                             Warning Options.    (line 1025)
 * Wno-fatal-errors:                      Warning Options.    (line   38)
 * Wno-float-equal:                       Warning Options.    (line  712)
 * Wno-format:                            Warning Options.    (line  194)
@@ -42263,10 +42258,10 @@ look up both forms.
 * Wno-padded:                            Warning Options.    (line 1174)
 * Wno-parentheses:                       Warning Options.    (line  341)
 * Wno-pedantic-ms-format:                Warning Options.    (line  849)
-* Wno-pmf-conversions <1>:               C++ Dialect Options.
-                                                             (line  465)
-* Wno-pmf-conversions:                   Bound member functions.
+* Wno-pmf-conversions <1>:               Bound member functions.
                                                              (line   35)
+* Wno-pmf-conversions:                   C++ Dialect Options.
+                                                             (line  465)
 * Wno-pointer-arith:                     Warning Options.    (line  855)
 * Wno-pointer-sign:                      Warning Options.    (line 1281)
 * Wno-pointer-to-int-cast:               Warning Options.    (line 1242)
@@ -42344,14 +42339,14 @@ look up both forms.
 * Wpedantic-ms-format:                   Warning Options.    (line  849)
 * Wpmf-conversions:                      C++ Dialect Options.
                                                              (line  465)
-* Wpointer-arith <1>:                    Pointer Arith.      (line   13)
-* Wpointer-arith:                        Warning Options.    (line  855)
+* Wpointer-arith <1>:                    Warning Options.    (line  855)
+* Wpointer-arith:                        Pointer Arith.      (line   13)
 * Wpointer-sign:                         Warning Options.    (line 1281)
 * Wpointer-to-int-cast:                  Warning Options.    (line 1242)
 * Wpragmas:                              Warning Options.    (line  594)
 * Wprotocol:                             Objective-C and Objective-C++ Dialect Options.
                                                              (line  202)
-* wrapper:                               Overall Options.    (line  351)
+* wrapper:                               Overall Options.    (line  355)
 * Wredundant-decls:                      Warning Options.    (line 1181)
 * Wreorder:                              C++ Dialect Options.
                                                              (line  371)
@@ -42380,20 +42375,20 @@ look up both forms.
 * Wsystem-headers <1>:                   Preprocessor Options.
                                                              (line  152)
 * Wsystem-headers:                       Warning Options.    (line  701)
-* Wtraditional <1>:                      Preprocessor Options.
+* Wtraditional <1>:                      Warning Options.    (line  727)
+* Wtraditional:                          Preprocessor Options.
                                                              (line  105)
-* Wtraditional:                          Warning Options.    (line  727)
 * Wtraditional-conversion <1>:           Protoize Caveats.   (line   31)
 * Wtraditional-conversion:               Warning Options.    (line  804)
-* Wtrigraphs <1>:                        Preprocessor Options.
+* Wtrigraphs <1>:                        Warning Options.    (line  468)
+* Wtrigraphs:                            Preprocessor Options.
                                                              (line   93)
-* Wtrigraphs:                            Warning Options.    (line  468)
 * Wtype-limits:                          Warning Options.    (line  862)
 * Wundeclared-selector:                  Objective-C and Objective-C++ Dialect Options.
                                                              (line  232)
-* Wundef <1>:                            Preprocessor Options.
+* Wundef <1>:                            Warning Options.    (line  819)
+* Wundef:                                Preprocessor Options.
                                                              (line  111)
-* Wundef:                                Warning Options.    (line  819)
 * Wuninitialized:                        Warning Options.    (line  517)
 * Wunknown-pragmas:                      Warning Options.    (line  587)
 * Wunreachable-code:                     Warning Options.    (line 1189)
@@ -42410,9 +42405,9 @@ look up both forms.
 * Wvla:                                  Warning Options.    (line 1262)
 * Wvolatile-register-var:                Warning Options.    (line 1266)
 * Wwrite-strings:                        Warning Options.    (line  895)
-* x <1>:                                 Overall Options.    (line  122)
-* x:                                     Preprocessor Options.
+* x <1>:                                 Preprocessor Options.
                                                              (line  309)
+* x:                                     Overall Options.    (line  122)
 * Xassembler:                            Assembler Options.  (line   13)
 * Xbind-lazy:                            VxWorks Options.    (line   26)
 * Xbind-now:                             VxWorks Options.    (line   30)
@@ -43895,257 +43890,257 @@ Keyword Index
 
 \1f
 Tag Table:
-Node: Top\7f2109
-Node: G++ and GCC\7f3806
-Node: Standards\7f5871
-Node: Invoking GCC\7f14846
-Node: Option Summary\7f18675
-Node: Overall Options\7f51415
-Node: Invoking G++\7f65752
-Node: C Dialect Options\7f67275
-Node: C++ Dialect Options\7f81166
-Node: Objective-C and Objective-C++ Dialect Options\7f102156
-Node: Language Independent Options\7f113937
-Node: Warning Options\7f116707
-Node: Debugging Options\7f175054
-Node: Optimize Options\7f214676
-Ref: Type-punning\7f261478
-Node: Preprocessor Options\7f320702
-Ref: Wtrigraphs\7f324787
-Ref: dashMF\7f329535
-Ref: fdollars-in-identifiers\7f340054
-Node: Assembler Options\7f348615
-Node: Link Options\7f349320
-Ref: Link Options-Footnote-1\7f358790
-Node: Directory Options\7f359124
-Node: Spec Files\7f365186
-Node: Target Options\7f385525
-Node: Submodel Options\7f387043
-Node: ARC Options\7f388742
-Node: ARM Options\7f390229
-Node: AVR Options\7f403805
-Node: Blackfin Options\7f406023
-Node: CRIS Options\7f413915
-Node: CRX Options\7f417656
-Node: Darwin Options\7f418081
-Node: DEC Alpha Options\7f425574
-Node: DEC Alpha/VMS Options\7f437490
-Node: FR30 Options\7f437876
-Node: FRV Options\7f438451
-Node: GNU/Linux Options\7f445168
-Node: H8/300 Options\7f445626
-Node: HPPA Options\7f446693
-Node: i386 and x86-64 Options\7f456193
-Node: IA-64 Options\7f484367
-Node: M32C Options\7f491692
-Node: M32R/D Options\7f492983
-Node: M680x0 Options\7f496570
-Node: M68hc1x Options\7f510390
-Node: MCore Options\7f511958
-Node: MIPS Options\7f513466
-Node: MMIX Options\7f539501
-Node: MN10300 Options\7f541983
-Node: PDP-11 Options\7f543405
-Node: picoChip Options\7f545245
-Node: PowerPC Options\7f547444
-Node: RS/6000 and PowerPC Options\7f547680
-Node: S/390 and zSeries Options\7f578427
-Node: Score Options\7f586375
-Node: SH Options\7f587203
-Node: SPARC Options\7f597481
-Node: SPU Options\7f608454
-Node: System V Options\7f611742
-Node: V850 Options\7f612565
-Node: VAX Options\7f615705
-Node: VxWorks Options\7f616253
-Node: x86-64 Options\7f617408
-Node: i386 and x86-64 Windows Options\7f617626
-Node: Xstormy16 Options\7f619945
-Node: Xtensa Options\7f620234
-Node: zSeries Options\7f624381
-Node: Code Gen Options\7f624577
-Node: Environment Variables\7f649156
-Node: Precompiled Headers\7f657052
-Node: Running Protoize\7f663278
-Node: C Implementation\7f669615
-Node: Translation implementation\7f671278
-Node: Environment implementation\7f671852
-Node: Identifiers implementation\7f672402
-Node: Characters implementation\7f673456
-Node: Integers implementation\7f676262
-Node: Floating point implementation\7f678087
-Node: Arrays and pointers implementation\7f681016
-Ref: Arrays and pointers implementation-Footnote-1\7f682451
-Node: Hints implementation\7f682575
-Node: Structures unions enumerations and bit-fields implementation\7f684041
-Node: Qualifiers implementation\7f686027
-Node: Declarators implementation\7f687799
-Node: Statements implementation\7f688141
-Node: Preprocessing directives implementation\7f688468
-Node: Library functions implementation\7f690573
-Node: Architecture implementation\7f691213
-Node: Locale-specific behavior implementation\7f691916
-Node: C Extensions\7f692221
-Node: Statement Exprs\7f696832
-Node: Local Labels\7f701345
-Node: Labels as Values\7f704324
-Ref: Labels as Values-Footnote-1\7f706697
-Node: Nested Functions\7f706880
-Node: Constructing Calls\7f710774
-Node: Typeof\7f715497
-Node: Conditionals\7f718663
-Node: Long Long\7f719554
-Node: Complex\7f721055
-Node: Floating Types\7f723625
-Node: Decimal Float\7f724744
-Node: Hex Floats\7f726733
-Node: Fixed-Point\7f727774
-Node: Zero Length\7f731059
-Node: Empty Structures\7f734337
-Node: Variable Length\7f734753
-Node: Variadic Macros\7f737520
-Node: Escaped Newlines\7f739902
-Node: Subscripting\7f740741
-Node: Pointer Arith\7f741464
-Node: Initializers\7f742032
-Node: Compound Literals\7f742528
-Node: Designated Inits\7f744703
-Node: Case Ranges\7f748358
-Node: Cast to Union\7f749041
-Node: Mixed Declarations\7f750137
-Node: Function Attributes\7f750643
-Node: Attribute Syntax\7f813258
-Node: Function Prototypes\7f823528
-Node: C++ Comments\7f825309
-Node: Dollar Signs\7f825828
-Node: Character Escapes\7f826293
-Node: Alignment\7f826587
-Node: Variable Attributes\7f827961
-Ref: i386 Variable Attributes\7f842551
-Node: Type Attributes\7f848536
-Ref: i386 Type Attributes\7f862157
-Ref: PowerPC Type Attributes\7f862997
-Ref: SPU Type Attributes\7f863859
-Node: Inline\7f864150
-Node: Extended Asm\7f869097
-Ref: Example of asm with clobbered asm reg\7f875183
-Node: Constraints\7f889402
-Node: Simple Constraints\7f890252
-Node: Multi-Alternative\7f896923
-Node: Modifiers\7f898640
-Node: Machine Constraints\7f901534
-Node: Asm Labels\7f933747
-Node: Explicit Reg Vars\7f935423
-Node: Global Reg Vars\7f937031
-Node: Local Reg Vars\7f941581
-Node: Alternate Keywords\7f944022
-Node: Incomplete Enums\7f945450
-Node: Function Names\7f946207
-Node: Return Address\7f948369
-Node: Vector Extensions\7f951166
-Node: Offsetof\7f954668
-Node: Atomic Builtins\7f955482
-Node: Object Size Checking\7f960860
-Node: Other Builtins\7f966288
-Node: Target Builtins\7f991096
-Node: Alpha Built-in Functions\7f991990
-Node: ARM iWMMXt Built-in Functions\7f994989
-Node: ARM NEON Intrinsics\7f1001708
-Node: Blackfin Built-in Functions\7f1209546
-Node: FR-V Built-in Functions\7f1210160
-Node: Argument Types\7f1211019
-Node: Directly-mapped Integer Functions\7f1212775
-Node: Directly-mapped Media Functions\7f1213857
-Node: Raw read/write Functions\7f1220889
-Node: Other Built-in Functions\7f1221801
-Node: X86 Built-in Functions\7f1222990
-Node: MIPS DSP Built-in Functions\7f1267381
-Node: MIPS Paired-Single Support\7f1279828
-Node: MIPS Loongson Built-in Functions\7f1281329
-Node: Paired-Single Arithmetic\7f1287847
-Node: Paired-Single Built-in Functions\7f1288793
-Node: MIPS-3D Built-in Functions\7f1291463
-Node: picoChip Built-in Functions\7f1296838
-Node: Other MIPS Built-in Functions\7f1298200
-Node: PowerPC AltiVec Built-in Functions\7f1298724
-Node: SPARC VIS Built-in Functions\7f1400148
-Node: SPU Built-in Functions\7f1401840
-Node: Target Format Checks\7f1403622
-Node: Solaris Format Checks\7f1404029
-Node: Pragmas\7f1404426
-Node: ARM Pragmas\7f1405120
-Node: M32C Pragmas\7f1405723
-Node: RS/6000 and PowerPC Pragmas\7f1406299
-Node: Darwin Pragmas\7f1407041
-Node: Solaris Pragmas\7f1408108
-Node: Symbol-Renaming Pragmas\7f1409269
-Node: Structure-Packing Pragmas\7f1411891
-Node: Weak Pragmas\7f1413543
-Node: Diagnostic Pragmas\7f1414345
-Node: Visibility Pragmas\7f1416979
-Node: Push/Pop Macro Pragmas\7f1417731
-Node: Function Specific Option Pragmas\7f1418704
-Node: Unnamed Fields\7f1420919
-Node: Thread-Local\7f1422429
-Node: C99 Thread-Local Edits\7f1424538
-Node: C++98 Thread-Local Edits\7f1426550
-Node: Binary constants\7f1429995
-Node: C++ Extensions\7f1430666
-Node: Volatiles\7f1432308
-Node: Restricted Pointers\7f1434984
-Node: Vague Linkage\7f1436578
-Node: C++ Interface\7f1440234
-Ref: C++ Interface-Footnote-1\7f1444531
-Node: Template Instantiation\7f1444668
-Node: Bound member functions\7f1451680
-Node: C++ Attributes\7f1453223
-Node: Namespace Association\7f1454881
-Node: Type Traits\7f1456295
-Node: Java Exceptions\7f1461842
-Node: Deprecated Features\7f1463239
-Node: Backwards Compatibility\7f1466204
-Node: Objective-C\7f1467562
-Node: Executing code before main\7f1468143
-Node: What you can and what you cannot do in +load\7f1470749
-Node: Type encoding\7f1472916
-Node: Garbage Collection\7f1476303
-Node: Constant string objects\7f1478927
-Node: compatibility_alias\7f1481435
-Node: Compatibility\7f1482313
-Node: Gcov\7f1488880
-Node: Gcov Intro\7f1489411
-Node: Invoking Gcov\7f1492127
-Node: Gcov and Optimization\7f1504208
-Node: Gcov Data Files\7f1506861
-Node: Cross-profiling\7f1507999
-Node: Trouble\7f1509825
-Node: Actual Bugs\7f1511381
-Node: Cross-Compiler Problems\7f1512121
-Node: Interoperation\7f1512535
-Node: Incompatibilities\7f1519672
-Node: Fixed Headers\7f1527822
-Node: Standard Libraries\7f1529485
-Node: Disappointments\7f1530857
-Node: C++ Misunderstandings\7f1535215
-Node: Static Definitions\7f1536034
-Node: Name lookup\7f1537087
-Ref: Name lookup-Footnote-1\7f1541865
-Node: Temporaries\7f1542052
-Node: Copy Assignment\7f1544028
-Node: Protoize Caveats\7f1545835
-Node: Non-bugs\7f1549808
-Node: Warnings and Errors\7f1560312
-Node: Bugs\7f1562076
-Node: Bug Criteria\7f1562640
-Node: Bug Reporting\7f1564850
-Node: Service\7f1565071
-Node: Contributing\7f1565890
-Node: Funding\7f1566630
-Node: GNU Project\7f1569119
-Node: Copying\7f1569765
-Node: GNU Free Documentation License\7f1607293
-Node: Contributors\7f1629699
-Node: Option Index\7f1666026
-Node: Keyword Index\7f1825848
+Node: Top\7f2089
+Node: G++ and GCC\7f3786
+Node: Standards\7f5851
+Node: Invoking GCC\7f14826
+Node: Option Summary\7f18655
+Node: Overall Options\7f51403
+Node: Invoking G++\7f65910
+Node: C Dialect Options\7f67433
+Node: C++ Dialect Options\7f81324
+Node: Objective-C and Objective-C++ Dialect Options\7f102314
+Node: Language Independent Options\7f114095
+Node: Warning Options\7f116865
+Node: Debugging Options\7f175212
+Node: Optimize Options\7f214834
+Ref: Type-punning\7f261636
+Node: Preprocessor Options\7f320506
+Ref: Wtrigraphs\7f324591
+Ref: dashMF\7f329339
+Ref: fdollars-in-identifiers\7f339858
+Node: Assembler Options\7f348419
+Node: Link Options\7f349124
+Ref: Link Options-Footnote-1\7f358594
+Node: Directory Options\7f358928
+Node: Spec Files\7f364990
+Node: Target Options\7f385329
+Node: Submodel Options\7f386847
+Node: ARC Options\7f388546
+Node: ARM Options\7f390033
+Node: AVR Options\7f403609
+Node: Blackfin Options\7f405827
+Node: CRIS Options\7f413719
+Node: CRX Options\7f417460
+Node: Darwin Options\7f417885
+Node: DEC Alpha Options\7f425378
+Node: DEC Alpha/VMS Options\7f437294
+Node: FR30 Options\7f437680
+Node: FRV Options\7f438255
+Node: GNU/Linux Options\7f444972
+Node: H8/300 Options\7f445430
+Node: HPPA Options\7f446497
+Node: i386 and x86-64 Options\7f455997
+Node: IA-64 Options\7f484171
+Node: M32C Options\7f491496
+Node: M32R/D Options\7f492787
+Node: M680x0 Options\7f496374
+Node: M68hc1x Options\7f510194
+Node: MCore Options\7f511762
+Node: MIPS Options\7f513270
+Node: MMIX Options\7f539305
+Node: MN10300 Options\7f541787
+Node: PDP-11 Options\7f543209
+Node: picoChip Options\7f545049
+Node: PowerPC Options\7f547248
+Node: RS/6000 and PowerPC Options\7f547484
+Node: S/390 and zSeries Options\7f578231
+Node: Score Options\7f586179
+Node: SH Options\7f587007
+Node: SPARC Options\7f597285
+Node: SPU Options\7f608258
+Node: System V Options\7f611546
+Node: V850 Options\7f612369
+Node: VAX Options\7f615509
+Node: VxWorks Options\7f616057
+Node: x86-64 Options\7f617212
+Node: i386 and x86-64 Windows Options\7f617430
+Node: Xstormy16 Options\7f619749
+Node: Xtensa Options\7f620038
+Node: zSeries Options\7f624185
+Node: Code Gen Options\7f624381
+Node: Environment Variables\7f648960
+Node: Precompiled Headers\7f656856
+Node: Running Protoize\7f663082
+Node: C Implementation\7f669419
+Node: Translation implementation\7f671082
+Node: Environment implementation\7f671656
+Node: Identifiers implementation\7f672206
+Node: Characters implementation\7f673260
+Node: Integers implementation\7f676066
+Node: Floating point implementation\7f677891
+Node: Arrays and pointers implementation\7f680820
+Ref: Arrays and pointers implementation-Footnote-1\7f682255
+Node: Hints implementation\7f682379
+Node: Structures unions enumerations and bit-fields implementation\7f683845
+Node: Qualifiers implementation\7f685831
+Node: Declarators implementation\7f687603
+Node: Statements implementation\7f687945
+Node: Preprocessing directives implementation\7f688272
+Node: Library functions implementation\7f690377
+Node: Architecture implementation\7f691017
+Node: Locale-specific behavior implementation\7f691720
+Node: C Extensions\7f692025
+Node: Statement Exprs\7f696636
+Node: Local Labels\7f701149
+Node: Labels as Values\7f704128
+Ref: Labels as Values-Footnote-1\7f706501
+Node: Nested Functions\7f706684
+Node: Constructing Calls\7f710578
+Node: Typeof\7f715301
+Node: Conditionals\7f718467
+Node: Long Long\7f719358
+Node: Complex\7f720859
+Node: Floating Types\7f723429
+Node: Decimal Float\7f724548
+Node: Hex Floats\7f726537
+Node: Fixed-Point\7f727578
+Node: Zero Length\7f730863
+Node: Empty Structures\7f734141
+Node: Variable Length\7f734557
+Node: Variadic Macros\7f737324
+Node: Escaped Newlines\7f739706
+Node: Subscripting\7f740545
+Node: Pointer Arith\7f741268
+Node: Initializers\7f741836
+Node: Compound Literals\7f742332
+Node: Designated Inits\7f744507
+Node: Case Ranges\7f748162
+Node: Cast to Union\7f748845
+Node: Mixed Declarations\7f749941
+Node: Function Attributes\7f750447
+Node: Attribute Syntax\7f813062
+Node: Function Prototypes\7f823332
+Node: C++ Comments\7f825113
+Node: Dollar Signs\7f825632
+Node: Character Escapes\7f826097
+Node: Alignment\7f826391
+Node: Variable Attributes\7f827765
+Ref: i386 Variable Attributes\7f842355
+Node: Type Attributes\7f848340
+Ref: i386 Type Attributes\7f861961
+Ref: PowerPC Type Attributes\7f862801
+Ref: SPU Type Attributes\7f863663
+Node: Inline\7f863954
+Node: Extended Asm\7f868901
+Ref: Example of asm with clobbered asm reg\7f874987
+Node: Constraints\7f889206
+Node: Simple Constraints\7f890056
+Node: Multi-Alternative\7f896727
+Node: Modifiers\7f898444
+Node: Machine Constraints\7f901338
+Node: Asm Labels\7f933551
+Node: Explicit Reg Vars\7f935227
+Node: Global Reg Vars\7f936835
+Node: Local Reg Vars\7f941385
+Node: Alternate Keywords\7f943826
+Node: Incomplete Enums\7f945254
+Node: Function Names\7f946011
+Node: Return Address\7f948173
+Node: Vector Extensions\7f950970
+Node: Offsetof\7f954472
+Node: Atomic Builtins\7f955286
+Node: Object Size Checking\7f960664
+Node: Other Builtins\7f966092
+Node: Target Builtins\7f990900
+Node: Alpha Built-in Functions\7f991794
+Node: ARM iWMMXt Built-in Functions\7f994793
+Node: ARM NEON Intrinsics\7f1001512
+Node: Blackfin Built-in Functions\7f1209350
+Node: FR-V Built-in Functions\7f1209964
+Node: Argument Types\7f1210823
+Node: Directly-mapped Integer Functions\7f1212579
+Node: Directly-mapped Media Functions\7f1213661
+Node: Raw read/write Functions\7f1220693
+Node: Other Built-in Functions\7f1221605
+Node: X86 Built-in Functions\7f1222794
+Node: MIPS DSP Built-in Functions\7f1267185
+Node: MIPS Paired-Single Support\7f1279632
+Node: MIPS Loongson Built-in Functions\7f1281133
+Node: Paired-Single Arithmetic\7f1287651
+Node: Paired-Single Built-in Functions\7f1288597
+Node: MIPS-3D Built-in Functions\7f1291267
+Node: picoChip Built-in Functions\7f1296642
+Node: Other MIPS Built-in Functions\7f1298004
+Node: PowerPC AltiVec Built-in Functions\7f1298528
+Node: SPARC VIS Built-in Functions\7f1399952
+Node: SPU Built-in Functions\7f1401644
+Node: Target Format Checks\7f1403426
+Node: Solaris Format Checks\7f1403833
+Node: Pragmas\7f1404230
+Node: ARM Pragmas\7f1404924
+Node: M32C Pragmas\7f1405527
+Node: RS/6000 and PowerPC Pragmas\7f1406103
+Node: Darwin Pragmas\7f1406845
+Node: Solaris Pragmas\7f1407912
+Node: Symbol-Renaming Pragmas\7f1409073
+Node: Structure-Packing Pragmas\7f1411695
+Node: Weak Pragmas\7f1413347
+Node: Diagnostic Pragmas\7f1414149
+Node: Visibility Pragmas\7f1416783
+Node: Push/Pop Macro Pragmas\7f1417535
+Node: Function Specific Option Pragmas\7f1418508
+Node: Unnamed Fields\7f1420723
+Node: Thread-Local\7f1422233
+Node: C99 Thread-Local Edits\7f1424342
+Node: C++98 Thread-Local Edits\7f1426354
+Node: Binary constants\7f1429799
+Node: C++ Extensions\7f1430470
+Node: Volatiles\7f1432112
+Node: Restricted Pointers\7f1434788
+Node: Vague Linkage\7f1436382
+Node: C++ Interface\7f1440038
+Ref: C++ Interface-Footnote-1\7f1444335
+Node: Template Instantiation\7f1444472
+Node: Bound member functions\7f1451484
+Node: C++ Attributes\7f1453027
+Node: Namespace Association\7f1454685
+Node: Type Traits\7f1456099
+Node: Java Exceptions\7f1461646
+Node: Deprecated Features\7f1463043
+Node: Backwards Compatibility\7f1466008
+Node: Objective-C\7f1467366
+Node: Executing code before main\7f1467947
+Node: What you can and what you cannot do in +load\7f1470553
+Node: Type encoding\7f1472720
+Node: Garbage Collection\7f1476107
+Node: Constant string objects\7f1478731
+Node: compatibility_alias\7f1481239
+Node: Compatibility\7f1482117
+Node: Gcov\7f1488684
+Node: Gcov Intro\7f1489215
+Node: Invoking Gcov\7f1491931
+Node: Gcov and Optimization\7f1504012
+Node: Gcov Data Files\7f1506665
+Node: Cross-profiling\7f1507803
+Node: Trouble\7f1509629
+Node: Actual Bugs\7f1511185
+Node: Cross-Compiler Problems\7f1511925
+Node: Interoperation\7f1512339
+Node: Incompatibilities\7f1519476
+Node: Fixed Headers\7f1527626
+Node: Standard Libraries\7f1529289
+Node: Disappointments\7f1530661
+Node: C++ Misunderstandings\7f1535019
+Node: Static Definitions\7f1535838
+Node: Name lookup\7f1536891
+Ref: Name lookup-Footnote-1\7f1541669
+Node: Temporaries\7f1541856
+Node: Copy Assignment\7f1543832
+Node: Protoize Caveats\7f1545639
+Node: Non-bugs\7f1549612
+Node: Warnings and Errors\7f1560116
+Node: Bugs\7f1561880
+Node: Bug Criteria\7f1562444
+Node: Bug Reporting\7f1564654
+Node: Service\7f1564875
+Node: Contributing\7f1565694
+Node: Funding\7f1566434
+Node: GNU Project\7f1568923
+Node: Copying\7f1569569
+Node: GNU Free Documentation License\7f1607097
+Node: Contributors\7f1629503
+Node: Option Index\7f1665830
+Node: Keyword Index\7f1825440
 \1f
 End Tag Table
index 46c3558..8eb9fd3 100644 (file)
@@ -1,5 +1,5 @@
 This is doc/gccinstall.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gcc-4.4.0/gcc/doc/install.texi.
+../../../../toolchain/android-toolchain/gcc-4.4.0/gcc/doc/install.texi.
 
    Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
@@ -4183,84 +4183,84 @@ Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f1988
-Node: Installing GCC\7f2546
-Node: Prerequisites\7f4061
-Node: Downloading the source\7f13066
-Node: Configuration\7f14987
-Ref: with-gnu-as\7f29563
-Ref: with-as\7f30461
-Ref: with-gnu-ld\7f31874
-Node: Building\7f69427
-Node: Testing\7f81370
-Node: Final install\7f89150
-Node: Binaries\7f94380
-Node: Specific\7f96353
-Ref: alpha-x-x\7f96859
-Ref: alpha-dec-osf\7f97348
-Ref: arc-x-elf\7f100471
-Ref: arm-x-elf\7f100571
-Ref: arm-x-coff\7f100791
-Ref: arm-x-aout\7f100993
-Ref: avr\7f101115
-Ref: bfin\7f101799
-Ref: cris\7f102041
-Ref: crx\7f102857
-Ref: dos\7f103520
-Ref: x-x-freebsd\7f103843
-Ref: h8300-hms\7f106226
-Ref: hppa-hp-hpux\7f106578
-Ref: hppa-hp-hpux10\7f108949
-Ref: hppa-hp-hpux11\7f109582
-Ref: x-x-linux-gnu\7f115241
-Ref: ix86-x-linux\7f115434
-Ref: ix86-x-solaris210\7f115747
-Ref: ia64-x-linux\7f116133
-Ref: ia64-x-hpux\7f116903
-Ref: x-ibm-aix\7f117458
-Ref: iq2000-x-elf\7f123441
-Ref: m32c-x-elf\7f123581
-Ref: m32r-x-elf\7f123683
-Ref: m6811-elf\7f123785
-Ref: m6812-elf\7f123935
-Ref: m68k-x-x\7f124085
-Ref: m68k-x-uclinux\7f125090
-Ref: mips-x-x\7f125453
-Ref: mips-sgi-irix5\7f128130
-Ref: mips-sgi-irix6\7f129078
-Ref: powerpc-x-x\7f131885
-Ref: powerpc-x-darwin\7f132090
-Ref: powerpc-x-elf\7f132637
-Ref: powerpc-x-linux-gnu\7f132722
-Ref: powerpc-x-netbsd\7f132817
-Ref: powerpc-x-eabisim\7f132905
-Ref: powerpc-x-eabi\7f133031
-Ref: powerpcle-x-elf\7f133107
-Ref: powerpcle-x-eabisim\7f133199
-Ref: powerpcle-x-eabi\7f133332
-Ref: s390-x-linux\7f133415
-Ref: s390x-x-linux\7f133487
-Ref: s390x-ibm-tpf\7f133574
-Ref: x-x-solaris2\7f133705
-Ref: sparc-sun-solaris2\7f137582
-Ref: sparc-sun-solaris27\7f140303
-Ref: sparc-x-linux\7f142767
-Ref: sparc64-x-solaris2\7f142992
-Ref: sparcv9-x-solaris2\7f143637
-Ref: x-x-vxworks\7f143722
-Ref: x86-64-x-x\7f145244
-Ref: xtensa-x-elf\7f145572
-Ref: xtensa-x-linux\7f146243
-Ref: windows\7f146584
-Ref: x-x-cygwin\7f148539
-Ref: x-x-interix\7f148809
-Ref: x-x-mingw32\7f149175
-Ref: os2\7f149401
-Ref: older\7f149592
-Ref: elf\7f151709
-Node: Old\7f151967
-Node: Configurations\7f155104
-Node: GNU Free Documentation License\7f159086
-Node: Concept Index\7f181502
+Node: Top\7f1968
+Node: Installing GCC\7f2526
+Node: Prerequisites\7f4041
+Node: Downloading the source\7f13046
+Node: Configuration\7f14967
+Ref: with-gnu-as\7f29543
+Ref: with-as\7f30441
+Ref: with-gnu-ld\7f31854
+Node: Building\7f69407
+Node: Testing\7f81350
+Node: Final install\7f89130
+Node: Binaries\7f94360
+Node: Specific\7f96333
+Ref: alpha-x-x\7f96839
+Ref: alpha-dec-osf\7f97328
+Ref: arc-x-elf\7f100451
+Ref: arm-x-elf\7f100551
+Ref: arm-x-coff\7f100771
+Ref: arm-x-aout\7f100973
+Ref: avr\7f101095
+Ref: bfin\7f101779
+Ref: cris\7f102021
+Ref: crx\7f102837
+Ref: dos\7f103500
+Ref: x-x-freebsd\7f103823
+Ref: h8300-hms\7f106206
+Ref: hppa-hp-hpux\7f106558
+Ref: hppa-hp-hpux10\7f108929
+Ref: hppa-hp-hpux11\7f109562
+Ref: x-x-linux-gnu\7f115221
+Ref: ix86-x-linux\7f115414
+Ref: ix86-x-solaris210\7f115727
+Ref: ia64-x-linux\7f116113
+Ref: ia64-x-hpux\7f116883
+Ref: x-ibm-aix\7f117438
+Ref: iq2000-x-elf\7f123421
+Ref: m32c-x-elf\7f123561
+Ref: m32r-x-elf\7f123663
+Ref: m6811-elf\7f123765
+Ref: m6812-elf\7f123915
+Ref: m68k-x-x\7f124065
+Ref: m68k-x-uclinux\7f125070
+Ref: mips-x-x\7f125433
+Ref: mips-sgi-irix5\7f128110
+Ref: mips-sgi-irix6\7f129058
+Ref: powerpc-x-x\7f131865
+Ref: powerpc-x-darwin\7f132070
+Ref: powerpc-x-elf\7f132617
+Ref: powerpc-x-linux-gnu\7f132702
+Ref: powerpc-x-netbsd\7f132797
+Ref: powerpc-x-eabisim\7f132885
+Ref: powerpc-x-eabi\7f133011
+Ref: powerpcle-x-elf\7f133087
+Ref: powerpcle-x-eabisim\7f133179
+Ref: powerpcle-x-eabi\7f133312
+Ref: s390-x-linux\7f133395
+Ref: s390x-x-linux\7f133467
+Ref: s390x-ibm-tpf\7f133554
+Ref: x-x-solaris2\7f133685
+Ref: sparc-sun-solaris2\7f137562
+Ref: sparc-sun-solaris27\7f140283
+Ref: sparc-x-linux\7f142747
+Ref: sparc64-x-solaris2\7f142972
+Ref: sparcv9-x-solaris2\7f143617
+Ref: x-x-vxworks\7f143702
+Ref: x86-64-x-x\7f145224
+Ref: xtensa-x-elf\7f145552
+Ref: xtensa-x-linux\7f146223
+Ref: windows\7f146564
+Ref: x-x-cygwin\7f148519
+Ref: x-x-interix\7f148789
+Ref: x-x-mingw32\7f149155
+Ref: os2\7f149381
+Ref: older\7f149572
+Ref: elf\7f151689
+Node: Old\7f151947
+Node: Configurations\7f155084
+Node: GNU Free Documentation License\7f159066
+Node: Concept Index\7f181482
 \1f
 End Tag Table
index 14f5804..fa33750 100644 (file)
@@ -1,5 +1,5 @@
 This is doc/gccint.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gcc-4.4.0/gcc/doc/gccint.texi.
+../../../../toolchain/android-toolchain/gcc-4.4.0/gcc/doc/gccint.texi.
 
  Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
@@ -24843,6 +24843,13 @@ expressions that refer to static variables, such as the `target_flags'.
      One use of this macro is to increase alignment of medium-size data
      to make it all fit in fewer cache lines.
 
+ -- Macro: MINIMUM_ALIGNMENT (EXP, MODE, ALIGN)
+     If defined, a C expression to compute the minimum required
+     alignment for dynamic stack realignment purposes for EXP (a type
+     or decl), MODE, assuming normal alignment ALIGN.
+
+     If this macro is not defined, then ALIGN will be used.
+
  -- Macro: EMPTY_FIELD_BOUNDARY
      Alignment in bits to be given to a structure bit-field that
      follows an empty field such as `int : 0;'.
@@ -37238,21 +37245,21 @@ Concept Index
 * ! in constraint:                       Multi-Alternative.  (line   47)
 * # in constraint:                       Modifiers.          (line   67)
 * # in template:                         Output Template.    (line   66)
-* #pragma:                               Misc.               (line  487)
+* #pragma:                               Misc.               (line  381)
 * % in constraint:                       Modifiers.          (line   45)
 * % in GTY option:                       GTY Options.        (line   18)
 * % in template:                         Output Template.    (line    6)
 * & in constraint:                       Modifiers.          (line   25)
-* ( <1>:                                 Logical Operators.  (line  111)
-* ( <2>:                                 GIMPLE_CALL.        (line   63)
-* ( <3>:                                 Logical Operators.  (line  124)
-* ( <4>:                                 GIMPLE_ASM.         (line   21)
-* ( <5>:                                 Logical Operators.  (line  147)
+* ( <1>:                                 Logical Operators.  (line  107)
+* ( <2>:                                 GIMPLE_ASM.         (line   21)
+* ( <3>:                                 GIMPLE_CALL.        (line   63)
+* ( <4>:                                 Logical Operators.  (line  111)
+* ( <5>:                                 GIMPLE_ASM.         (line   27)
 * (:                                     Sections.           (line  160)
 * (nil):                                 RTL Objects.        (line   73)
-* * <1>:                                 Scheduling.         (line  268)
+* * <1>:                                 Scheduling.         (line  246)
 * * <2>:                                 Host Common.        (line   17)
-* *:                                     Scheduling.         (line  246)
+* *:                                     Scheduling.         (line  268)
 * * in constraint:                       Modifiers.          (line   72)
 * * in template:                         Output Statement.   (line   29)
 * *gimple_assign_lhs_ptr:                GIMPLE_ASSIGN.      (line   54)
@@ -37293,8 +37300,8 @@ Concept Index
 * *gsi_stmt_ptr:                         Sequence iterators. (line   80)
 * *TARGET_GET_PCH_VALIDITY:              PCH Target.         (line    7)
 * + in constraint:                       Modifiers.          (line   12)
-* -fsection-anchors <1>:                 Anchored Addresses. (line    6)
-* -fsection-anchors:                     Special Accessors.  (line  106)
+* -fsection-anchors <1>:                 Special Accessors.  (line  106)
+* -fsection-anchors:                     Anchored Addresses. (line    6)
 * /c in RTL dump:                        Flags.              (line  234)
 * /f in RTL dump:                        Flags.              (line  242)
 * /i in RTL dump:                        Flags.              (line  294)
@@ -40603,9 +40610,9 @@ Concept Index
 * addr_vec:                              Side Effects.       (line  297)
 * addr_vec, length of:                   Insn Lengths.       (line   26)
 * address constraints:                   Simple Constraints. (line  154)
-* address_operand <1>:                   Simple Constraints. (line  158)
-* address_operand:                       Machine-Independent Predicates.
+* address_operand <1>:                   Machine-Independent Predicates.
                                                              (line   63)
+* address_operand:                       Simple Constraints. (line  158)
 * addressing modes:                      Addressing Modes.   (line    6)
 * ADJUST_FIELD_ALIGN:                    Storage Layout.     (line  201)
 * ADJUST_INSN_LENGTH:                    Insn Lengths.       (line   35)
@@ -40733,8 +40740,8 @@ Concept Index
 * assignment operator:                   Function Basics.    (line    6)
 * asterisk in template:                  Output Statement.   (line   29)
 * atan2M3 instruction pattern:           Standard Names.     (line  522)
-* attr <1>:                              Expressions.        (line  154)
-* attr:                                  Tagging Insns.      (line   54)
+* attr <1>:                              Tagging Insns.      (line   54)
+* attr:                                  Expressions.        (line  154)
 * attr_flag:                             Expressions.        (line  119)
 * attribute expressions:                 Expressions.        (line    6)
 * attribute specifications:              Attr Example.       (line    6)
@@ -40777,7 +40784,7 @@ Concept Index
 * BIT_IOR_EXPR:                          Expression trees.   (line    6)
 * BIT_NOT_EXPR:                          Expression trees.   (line    6)
 * BIT_XOR_EXPR:                          Expression trees.   (line    6)
-* BITFIELD_NBYTES_LIMITED:               Storage Layout.     (line  375)
+* BITFIELD_NBYTES_LIMITED:               Storage Layout.     (line  382)
 * BITS_BIG_ENDIAN:                       Storage Layout.     (line   12)
 * BITS_BIG_ENDIAN, effect on sign_extract: Bit-Fields.       (line    8)
 * BITS_PER_UNIT:                         Storage Layout.     (line   52)
@@ -40796,12 +40803,10 @@ Concept Index
 * BLOCK_REG_PADDING:                     Register Arguments. (line  229)
 * blockage instruction pattern:          Standard Names.     (line 1408)
 * Blocks:                                Blocks.             (line    6)
-* bool <1>:                              Sections.           (line  280)
+* bool <1>:                              Sections.           (line  293)
 * bool <2>:                              Exception Region Output.
                                                              (line   60)
-* bool <3>:                              Sections.           (line  293)
-* bool:                                  Exception Region Output.
-                                                             (line   84)
+* bool:                                  Sections.           (line  280)
 * BOOL_TYPE_SIZE:                        Type Layout.        (line   44)
 * BOOLEAN_TYPE:                          Types.              (line    6)
 * branch prediction:                     Profile information.
@@ -40852,7 +40857,7 @@ Concept Index
 * call, in call_insn:                    Flags.              (line   33)
 * call, in mem:                          Flags.              (line   99)
 * call-clobbered register:               Register Basics.    (line   35)
-* call-saved register:                   Register Basics.    (line   35)
+* call-saved register:                   Register Basics.    (line   53)
 * call-used register:                    Register Basics.    (line   53)
 * CALL_EXPR:                             Expression trees.   (line    6)
 * call_insn:                             Insns.              (line   95)
@@ -40861,7 +40866,7 @@ Concept Index
 * call_insn and /i:                      Flags.              (line   24)
 * call_insn and /j:                      Flags.              (line  179)
 * call_insn and /s:                      Flags.              (line   49)
-* call_insn and /u:                      Flags.              (line   19)
+* call_insn and /u:                      Flags.              (line   39)
 * call_insn and /u or /i:                Flags.              (line   29)
 * call_insn and /v:                      Flags.              (line   44)
 * CALL_INSN_FUNCTION_USAGE:              Insns.              (line  101)
@@ -40918,11 +40923,11 @@ Concept Index
 * chain_prev:                            GTY Options.        (line  196)
 * change_address:                        Standard Names.     (line   47)
 * CHANGE_DYNAMIC_TYPE_EXPR:              Expression trees.   (line    6)
-* char <1>:                              Misc.               (line  902)
+* char <1>:                              GIMPLE_ASM.         (line   53)
 * char <2>:                              Sections.           (line  272)
-* char <3>:                              GIMPLE_ASM.         (line   53)
-* char <4>:                              Misc.               (line  693)
-* char:                                  PCH Target.         (line   12)
+* char <3>:                              Misc.               (line  693)
+* char <4>:                              PCH Target.         (line   12)
+* char:                                  Misc.               (line  902)
 * CHAR_TYPE_SIZE:                        Type Layout.        (line   39)
 * check_stack instruction pattern:       Standard Names.     (line 1245)
 * CHImode:                               Machine Modes.      (line  202)
@@ -41011,8 +41016,8 @@ Concept Index
 * configure terms:                       Configure Terms.    (line    6)
 * CONJ_EXPR:                             Expression trees.   (line    6)
 * const:                                 Constants.          (line   99)
-* const0_rtx:                            Constants.          (line   16)
 * CONST0_RTX:                            Constants.          (line  119)
+* const0_rtx:                            Constants.          (line   16)
 * CONST1_RTX:                            Constants.          (line  119)
 * const1_rtx:                            Constants.          (line   16)
 * const2_rtx:                            Constants.          (line   16)
@@ -41064,8 +41069,8 @@ Concept Index
                                                              (line    6)
 * constraints, testing:                  C Constraint Interface.
                                                              (line    6)
-* CONSTRUCTOR:                           Expression trees.   (line    6)
 * constructor:                           Function Basics.    (line    6)
+* CONSTRUCTOR:                           Expression trees.   (line    6)
 * constructors, automatic calls:         Collect2.           (line   15)
 * constructors, output of:               Initialization.     (line    6)
 * container:                             Containers.         (line    6)
@@ -41086,7 +41091,7 @@ Concept Index
 * cp_namespace_decls:                    Namespaces.         (line   44)
 * CP_TYPE_CONST_NON_VOLATILE_P:          Types.              (line   45)
 * CP_TYPE_CONST_P:                       Types.              (line   36)
-* CP_TYPE_QUALS:                         Types.              (line    6)
+* CP_TYPE_QUALS:                         Types.              (line   28)
 * CP_TYPE_RESTRICT_P:                    Types.              (line   42)
 * CP_TYPE_VOLATILE_P:                    Types.              (line   39)
 * CPLUSPLUS_CPP_SPEC:                    Driver.             (line  113)
@@ -41158,10 +41163,10 @@ Concept Index
 * DECL_ANTICIPATED:                      Function Basics.    (line   48)
 * DECL_ARGUMENTS:                        Function Basics.    (line  163)
 * DECL_ARRAY_DELETE_OPERATOR_P:          Function Basics.    (line  184)
-* DECL_ARTIFICIAL <1>:                   Working with declarations.
+* DECL_ARTIFICIAL <1>:                   Function Basics.    (line  155)
+* DECL_ARTIFICIAL:                       Working with declarations.
                                                              (line   24)
-* DECL_ARTIFICIAL:                       Function Basics.    (line    6)
-* DECL_ASSEMBLER_NAME:                   Function Basics.    (line    6)
+* DECL_ASSEMBLER_NAME:                   Function Basics.    (line   21)
 * DECL_ATTRIBUTES:                       Attributes.         (line   22)
 * DECL_BASE_CONSTRUCTOR_P:               Function Basics.    (line   94)
 * DECL_CLASS_SCOPE_P:                    Working with declarations.
@@ -41169,30 +41174,29 @@ Concept Index
 * DECL_COMPLETE_CONSTRUCTOR_P:           Function Basics.    (line   90)
 * DECL_COMPLETE_DESTRUCTOR_P:            Function Basics.    (line  104)
 * DECL_CONST_MEMFUNC_P:                  Function Basics.    (line   77)
-* DECL_CONSTRUCTOR_P:                    Function Basics.    (line    6)
+* DECL_CONSTRUCTOR_P:                    Function Basics.    (line   83)
 * DECL_CONTEXT:                          Namespaces.         (line   26)
 * DECL_CONV_FN_P:                        Function Basics.    (line  111)
 * DECL_COPY_CONSTRUCTOR_P:               Function Basics.    (line   98)
-* DECL_DESTRUCTOR_P:                     Function Basics.    (line    6)
+* DECL_DESTRUCTOR_P:                     Function Basics.    (line  101)
 * DECL_EXTERN_C_FUNCTION_P:              Function Basics.    (line   52)
-* DECL_EXTERNAL <1>:                     Function Basics.    (line   38)
-* DECL_EXTERNAL:                         Declarations.       (line    6)
+* DECL_EXTERNAL <1>:                     Declarations.       (line    6)
+* DECL_EXTERNAL:                         Function Basics.    (line   38)
 * DECL_FUNCTION_MEMBER_P:                Function Basics.    (line   67)
 * DECL_FUNCTION_SCOPE_P:                 Working with declarations.
                                                              (line   44)
-* DECL_FUNCTION_SPECIFIC_OPTIMIZATION:   Function Basics.    (line    6)
+* DECL_FUNCTION_SPECIFIC_OPTIMIZATION:   Function Basics.    (line  194)
 * DECL_FUNCTION_SPECIFIC_TARGET:         Function Basics.    (line    6)
 * DECL_GLOBAL_CTOR_P:                    Function Basics.    (line    6)
-* DECL_GLOBAL_DTOR_P:                    Function Basics.    (line  118)
+* DECL_GLOBAL_DTOR_P:                    Function Basics.    (line    6)
 * DECL_INITIAL:                          Declarations.       (line    6)
-* DECL_LINKONCE_P:                       Function Basics.    (line    6)
+* DECL_LINKONCE_P:                       Function Basics.    (line   56)
 * DECL_LOCAL_FUNCTION_P:                 Function Basics.    (line   44)
 * DECL_MAIN_P:                           Function Basics.    (line    7)
-* DECL_NAME <1>:                         Function Basics.    (line    6)
-* DECL_NAME <2>:                         Namespaces.         (line   15)
-* DECL_NAME <3>:                         Working with declarations.
+* DECL_NAME <1>:                         Working with declarations.
                                                              (line    7)
-* DECL_NAME:                             Function Basics.    (line   11)
+* DECL_NAME <2>:                         Function Basics.    (line    6)
+* DECL_NAME:                             Namespaces.         (line   15)
 * DECL_NAMESPACE_ALIAS:                  Namespaces.         (line   30)
 * DECL_NAMESPACE_SCOPE_P:                Working with declarations.
                                                              (line   37)
@@ -41200,7 +41204,7 @@ Concept Index
 * DECL_NON_THUNK_FUNCTION_P:             Function Basics.    (line  144)
 * DECL_NONCONVERTING_P:                  Function Basics.    (line   86)
 * DECL_NONSTATIC_MEMBER_FUNCTION_P:      Function Basics.    (line   74)
-* DECL_OVERLOADED_OPERATOR_P:            Function Basics.    (line  108)
+* DECL_OVERLOADED_OPERATOR_P:            Function Basics.    (line    6)
 * DECL_RESULT:                           Function Basics.    (line  168)
 * DECL_SIZE:                             Declarations.       (line    6)
 * DECL_STATIC_FUNCTION_P:                Function Basics.    (line   71)
@@ -41282,7 +41286,7 @@ Concept Index
 * destructor:                            Function Basics.    (line    6)
 * destructors, output of:                Initialization.     (line    6)
 * deterministic finite state automaton:  Processor pipeline description.
-                                                             (line    6)
+                                                             (line  296)
 * DF_SIZE:                               Type Layout.        (line  130)
 * DFmode:                                Machine Modes.      (line   73)
 * digits in constraint:                  Simple Constraints. (line  120)
@@ -41294,7 +41298,7 @@ Concept Index
 * dispatch table:                        Dispatch Tables.    (line    8)
 * div:                                   Arithmetic.         (line  111)
 * div and attributes:                    Expressions.        (line   64)
-* division:                              Arithmetic.         (line  125)
+* division:                              Arithmetic.         (line  131)
 * divM3 instruction pattern:             Standard Names.     (line  222)
 * divmodM4 instruction pattern:          Standard Names.     (line  411)
 * DO_BODY:                               Function Bodies.    (line    6)
@@ -41366,7 +41370,7 @@ Concept Index
 * EMIT_MODE_SET:                         Mode Switching.     (line   74)
 * Empty Statements:                      Empty Statements.   (line    6)
 * EMPTY_CLASS_EXPR:                      Function Bodies.    (line    6)
-* EMPTY_FIELD_BOUNDARY:                  Storage Layout.     (line  288)
+* EMPTY_FIELD_BOUNDARY:                  Storage Layout.     (line  295)
 * Emulated TLS:                          Emulated TLS.       (line    6)
 * ENABLE_EXECUTE_STACK:                  Trampolines.        (line  110)
 * enabled:                               Disable Insn Alternatives.
@@ -41388,8 +41392,8 @@ Concept Index
 * errno, implicit usage:                 Library Calls.      (line   70)
 * EXACT_DIV_EXPR:                        Expression trees.   (line    6)
 * examining SSA_NAMEs:                   SSA.                (line  218)
-* exception handling <1>:                Edges.              (line   96)
-* exception handling:                    Exception Handling. (line    6)
+* exception handling <1>:                Exception Handling. (line    6)
+* exception handling:                    Edges.              (line   96)
 * exception_receiver instruction pattern: Standard Names.    (line 1283)
 * exclamation point:                     Multi-Alternative.  (line   47)
 * exclusion_set:                         Processor pipeline description.
@@ -41561,10 +41565,10 @@ Concept Index
 * generated files:                       Files.              (line    6)
 * generating assembler output:           Output Statement.   (line    6)
 * generating insns:                      RTL Template.       (line    6)
-* GENERIC <1>:                           GENERIC.            (line    6)
-* GENERIC <2>:                           Gimplification pass.
+* GENERIC <1>:                           Gimplification pass.
                                                              (line   12)
-* GENERIC:                               Parsing pass.       (line    6)
+* GENERIC <2>:                           Parsing pass.       (line    6)
+* GENERIC:                               GENERIC.            (line    6)
 * generic predicates:                    Machine-Independent Predicates.
                                                              (line    6)
 * genflags:                              RTL passes.         (line   18)
@@ -41595,10 +41599,10 @@ Concept Index
 * GGC:                                   Type Information.   (line    6)
 * ggc_collect:                           Invoking the garbage collector.
                                                              (line    6)
-* GIMPLE <1>:                            Gimplification pass.
-                                                             (line    6)
+* GIMPLE <1>:                            Parsing pass.       (line   14)
 * GIMPLE <2>:                            GIMPLE.             (line    6)
-* GIMPLE:                                Parsing pass.       (line   14)
+* GIMPLE:                                Gimplification pass.
+                                                             (line    6)
 * GIMPLE Exception Handling:             GIMPLE Exception Handling.
                                                              (line    6)
 * GIMPLE instruction set:                GIMPLE instruction set.
@@ -41763,9 +41767,9 @@ Concept Index
                                                              (line   51)
 * GIMPLE_NOP:                            GIMPLE_NOP.         (line    6)
 * gimple_nop_p:                          GIMPLE_NOP.         (line   10)
-* gimple_num_ops <1>:                    Manipulating GIMPLE statements.
+* gimple_num_ops <1>:                    Logical Operators.  (line   76)
+* gimple_num_ops:                        Manipulating GIMPLE statements.
                                                              (line   75)
-* gimple_num_ops:                        Logical Operators.  (line   76)
 * GIMPLE_OMP_ATOMIC_LOAD:                GIMPLE_OMP_ATOMIC_LOAD.
                                                              (line    6)
 * gimple_omp_atomic_load_lhs:            GIMPLE_OMP_ATOMIC_LOAD.
@@ -41859,9 +41863,9 @@ Concept Index
 * GIMPLE_OMP_SINGLE:                     GIMPLE_OMP_SINGLE.  (line    6)
 * gimple_omp_single_clauses:             GIMPLE_OMP_SINGLE.  (line   14)
 * gimple_omp_single_set_clauses:         GIMPLE_OMP_SINGLE.  (line   21)
-* gimple_op <1>:                         Logical Operators.  (line   79)
-* gimple_op:                             Manipulating GIMPLE statements.
+* gimple_op <1>:                         Manipulating GIMPLE statements.
                                                              (line   81)
+* gimple_op:                             Logical Operators.  (line   79)
 * GIMPLE_PHI:                            GIMPLE_PHI.         (line    6)
 * gimple_phi_capacity:                   GIMPLE_PHI.         (line   10)
 * gimple_phi_num_args:                   GIMPLE_PHI.         (line   14)
@@ -41952,13 +41956,13 @@ Concept Index
                                                              (line   18)
 * gimplify_function_tree:                Gimplification pass.
                                                              (line   18)
-* GLOBAL_INIT_PRIORITY:                  Function Basics.    (line  147)
+* GLOBAL_INIT_PRIORITY:                  Function Basics.    (line    6)
 * global_regs:                           Register Basics.    (line   59)
 * GO_IF_LEGITIMATE_ADDRESS:              Addressing Modes.   (line   48)
 * GO_IF_MODE_DEPENDENT_ADDRESS:          Addressing Modes.   (line  190)
 * GOFAST, floating point emulation library: Library Calls.   (line   44)
 * gofast_maybe_init_libfuncs:            Library Calls.      (line   44)
-* greater than:                          Comparisons.        (line   60)
+* greater than:                          Comparisons.        (line   72)
 * gsi_after_labels:                      Sequence iterators. (line   76)
 * gsi_bb:                                Sequence iterators. (line   83)
 * gsi_commit_edge_inserts:               Sequence iterators. (line  194)
@@ -42109,9 +42113,9 @@ Concept Index
 * INIT_EXPR:                             Expression trees.   (line    6)
 * init_machine_status:                   Per-Function Data.  (line   45)
 * init_one_libfunc:                      Library Calls.      (line   15)
-* INIT_SECTION_ASM_OP <1>:               Macros for Initialization.
+* INIT_SECTION_ASM_OP <1>:               Sections.           (line   82)
+* INIT_SECTION_ASM_OP:                   Macros for Initialization.
                                                              (line   10)
-* INIT_SECTION_ASM_OP:                   Sections.           (line   82)
 * INITIAL_ELIMINATION_OFFSET:            Elimination.        (line   79)
 * INITIAL_FRAME_ADDRESS_RTX:             Frame Layout.       (line   83)
 * INITIAL_FRAME_POINTER_OFFSET:          Elimination.        (line   32)
@@ -42147,7 +42151,7 @@ Concept Index
 * insns, recognizing:                    RTL Template.       (line    6)
 * instruction attributes:                Insn Attributes.    (line    6)
 * instruction latency time:              Processor pipeline description.
-                                                             (line  197)
+                                                             (line    6)
 * instruction patterns:                  Patterns.           (line    6)
 * instruction splitting:                 Insn Splitting.     (line    6)
 * insv instruction pattern:              Standard Names.     (line  880)
@@ -42215,7 +42219,7 @@ Concept Index
 * language-independent intermediate representation: Parsing pass.
                                                              (line   14)
 * large return values:                   Aggregate Return.   (line    6)
-* LARGEST_EXPONENT_IS_NORMAL:            Storage Layout.     (line  462)
+* LARGEST_EXPONENT_IS_NORMAL:            Storage Layout.     (line  469)
 * LAST_STACK_REG:                        Stack Registers.    (line   27)
 * LAST_VIRTUAL_REGISTER:                 Regs and Memory.    (line   51)
 * lceilMN2:                              Standard Names.     (line  597)
@@ -42343,8 +42347,8 @@ Concept Index
 * marking roots:                         GGC Roots.          (line    6)
 * MASK_RETURN_ADDR:                      Exception Region Output.
                                                              (line   35)
-* match_dup <1>:                         RTL Template.       (line   73)
-* match_dup:                             define_peephole2.   (line   28)
+* match_dup <1>:                         define_peephole2.   (line   28)
+* match_dup:                             RTL Template.       (line   73)
 * match_dup and attributes:              Insn Lengths.       (line   16)
 * match_op_dup:                          RTL Template.       (line  163)
 * match_operand:                         RTL Template.       (line   16)
@@ -42352,8 +42356,8 @@ Concept Index
 * match_operator:                        RTL Template.       (line   95)
 * match_par_dup:                         RTL Template.       (line  219)
 * match_parallel:                        RTL Template.       (line  172)
-* match_scratch <1>:                     define_peephole2.   (line   28)
-* match_scratch:                         RTL Template.       (line   58)
+* match_scratch <1>:                     RTL Template.       (line   58)
+* match_scratch:                         define_peephole2.   (line   28)
 * matching constraint:                   Simple Constraints. (line  132)
 * matching operands:                     Output Template.    (line   49)
 * math library:                          Soft float library routines.
@@ -42363,7 +42367,7 @@ Concept Index
 * matherr:                               Library Calls.      (line   58)
 * MAX_BITS_PER_WORD:                     Storage Layout.     (line   61)
 * MAX_CONDITIONAL_EXECUTE:               Misc.               (line  580)
-* MAX_FIXED_MODE_SIZE:                   Storage Layout.     (line  413)
+* MAX_FIXED_MODE_SIZE:                   Storage Layout.     (line  420)
 * MAX_MOVE_MAX:                          Misc.               (line  120)
 * MAX_OFILE_ALIGNMENT:                   Storage Layout.     (line  216)
 * MAX_REGS_PER_ADDRESS:                  Addressing Modes.   (line   42)
@@ -42400,7 +42404,7 @@ Concept Index
 * MEM_SCALAR_P:                          Flags.              (line   85)
 * MEM_SIZE:                              Special Accessors.  (line   31)
 * MEM_VOLATILE_P:                        Flags.              (line   94)
-* MEMBER_TYPE_FORCES_BLK:                Storage Layout.     (line  393)
+* MEMBER_TYPE_FORCES_BLK:                Storage Layout.     (line  400)
 * memory reference, nonoffsettable:      Simple Constraints. (line  246)
 * memory references in constraints:      Simple Constraints. (line   17)
 * memory_barrier instruction pattern:    Standard Names.     (line 1413)
@@ -42409,6 +42413,7 @@ Concept Index
                                                              (line   58)
 * METHOD_TYPE:                           Types.              (line    6)
 * MIN_UNITS_PER_WORD:                    Storage Layout.     (line   71)
+* MINIMUM_ALIGNMENT:                     Storage Layout.     (line  288)
 * MINIMUM_ATOMIC_ALIGNMENT:              Storage Layout.     (line  187)
 * minM3 instruction pattern:             Standard Names.     (line  234)
 * minus:                                 Arithmetic.         (line   36)
@@ -42594,9 +42599,9 @@ Concept Index
 * Operand Iterators:                     SSA Operands.       (line  119)
 * operand predicates:                    Predicates.         (line    6)
 * operand substitution:                  Output Template.    (line    6)
+* operands <1>:                          SSA Operands.       (line    6)
+* operands:                              Patterns.           (line   53)
 * Operands:                              Operands.           (line    6)
-* operands <1>:                          Patterns.           (line   53)
-* operands:                              SSA Operands.       (line    6)
 * operator predicates:                   Predicates.         (line    6)
 * optc-gen.awk:                          Options.            (line    6)
 * Optimization infrastructure for GIMPLE: Tree SSA.          (line    6)
@@ -42652,7 +42657,7 @@ Concept Index
 * pc, RTL sharing:                       Sharing.            (line   25)
 * PC_REGNUM:                             Register Basics.    (line  112)
 * pc_rtx:                                Regs and Memory.    (line  366)
-* PCC_BITFIELD_TYPE_MATTERS:             Storage Layout.     (line  307)
+* PCC_BITFIELD_TYPE_MATTERS:             Storage Layout.     (line  314)
 * PCC_STATIC_STRUCT_RETURN:              Aggregate Return.   (line   64)
 * PDImode:                               Machine Modes.      (line   40)
 * peephole optimization, RTL representation: Side Effects.   (line  238)
@@ -42671,7 +42676,7 @@ Concept Index
 * PIC_OFFSET_TABLE_REG_CALL_CLOBBERED:   PIC.                (line   26)
 * PIC_OFFSET_TABLE_REGNUM:               PIC.                (line   16)
 * pipeline hazard recognizer:            Processor pipeline description.
-                                                             (line   53)
+                                                             (line    6)
 * Plugins:                               Plugins.            (line    6)
 * plus:                                  Arithmetic.         (line   14)
 * plus and attributes:                   Expressions.        (line   64)
@@ -42730,7 +42735,7 @@ Concept Index
 * PRINT_OPERAND_ADDRESS:                 Instruction Output. (line   96)
 * PRINT_OPERAND_PUNCT_VALID_P:           Instruction Output. (line   89)
 * processor functional units:            Processor pipeline description.
-                                                             (line    6)
+                                                             (line   68)
 * processor pipeline description:        Processor pipeline description.
                                                              (line    6)
 * product:                               Arithmetic.         (line   92)
@@ -42752,9 +42757,9 @@ Concept Index
 * PTRMEM_CST:                            Expression trees.   (line    6)
 * PTRMEM_CST_CLASS:                      Expression trees.   (line    6)
 * PTRMEM_CST_MEMBER:                     Expression trees.   (line    6)
-* purge_dead_edges <1>:                  Edges.              (line  104)
-* purge_dead_edges:                      Maintaining the CFG.
+* purge_dead_edges <1>:                  Maintaining the CFG.
                                                              (line   93)
+* purge_dead_edges:                      Edges.              (line  104)
 * push address instruction:              Simple Constraints. (line  154)
 * PUSH_ARGS:                             Stack Arguments.    (line   18)
 * PUSH_ARGS_REVERSED:                    Stack Arguments.    (line   26)
@@ -42861,8 +42866,8 @@ Concept Index
 * reg_label and /v:                      Flags.              (line   65)
 * REG_LABEL_OPERAND:                     Insns.              (line  350)
 * REG_LABEL_TARGET:                      Insns.              (line  359)
-* reg_names <1>:                         Register Basics.    (line   59)
-* reg_names:                             Instruction Output. (line   80)
+* reg_names <1>:                         Instruction Output. (line   80)
+* reg_names:                             Register Basics.    (line   59)
 * REG_NONNEG:                            Insns.              (line  342)
 * REG_NOTE_KIND:                         Insns.              (line  309)
 * REG_NOTES:                             Insns.              (line  283)
@@ -42902,7 +42907,7 @@ Concept Index
 * REGNO_REG_CLASS:                       Register Classes.   (line  101)
 * regs_ever_live:                        Function Entry.     (line   21)
 * regular expressions:                   Processor pipeline description.
-                                                             (line    6)
+                                                             (line  106)
 * relative costs:                        Costs.              (line    6)
 * RELATIVE_PREFIX_NOT_LINKDIR:           Driver.             (line  325)
 * reload_completed:                      Standard Names.     (line 1040)
@@ -42950,7 +42955,7 @@ Concept Index
 * right shift:                           Arithmetic.         (line  185)
 * rintM2 instruction pattern:            Standard Names.     (line  572)
 * RISC:                                  Processor pipeline description.
-                                                             (line    6)
+                                                             (line  215)
 * roots, marking:                        GGC Roots.          (line    6)
 * rotate:                                Arithmetic.         (line  190)
 * rotatert:                              Arithmetic.         (line  190)
@@ -42958,8 +42963,8 @@ Concept Index
 * rotrM3 instruction pattern:            Standard Names.     (line  441)
 * ROUND_DIV_EXPR:                        Expression trees.   (line    6)
 * ROUND_MOD_EXPR:                        Expression trees.   (line    6)
-* ROUND_TOWARDS_ZERO:                    Storage Layout.     (line  453)
-* ROUND_TYPE_ALIGN:                      Storage Layout.     (line  404)
+* ROUND_TOWARDS_ZERO:                    Storage Layout.     (line  460)
+* ROUND_TYPE_ALIGN:                      Storage Layout.     (line  411)
 * roundM2 instruction pattern:           Standard Names.     (line  548)
 * RSHIFT_EXPR:                           Expression trees.   (line    6)
 * RTL addition:                          Arithmetic.         (line   14)
@@ -43159,8 +43164,8 @@ Concept Index
 * stack_protect_test instruction pattern: Standard Names.    (line 1546)
 * STACK_PUSH_CODE:                       Frame Layout.       (line   17)
 * STACK_REGS:                            Stack Registers.    (line   20)
-* STACK_SAVEAREA_MODE:                   Storage Layout.     (line  420)
-* STACK_SIZE_MODE:                       Storage Layout.     (line  432)
+* STACK_SAVEAREA_MODE:                   Storage Layout.     (line  427)
+* STACK_SIZE_MODE:                       Storage Layout.     (line  439)
 * STACK_SLOT_ALIGNMENT:                  Storage Layout.     (line  265)
 * standard pattern names:                Standard Names.     (line    6)
 * STANDARD_INCLUDE_COMPONENT:            Driver.             (line  425)
@@ -43176,8 +43181,8 @@ Concept Index
                                                              (line    6)
 * Statement Sequences:                   Statement Sequences.
                                                              (line    6)
-* Statements:                            Statements.         (line    6)
 * statements:                            Function Bodies.    (line    6)
+* Statements:                            Statements.         (line    6)
 * Static profile estimation:             Profile information.
                                                              (line   24)
 * static single assignment:              SSA.                (line    6)
@@ -43194,14 +43199,14 @@ Concept Index
 * STORE_FLAG_VALUE:                      Misc.               (line  216)
 * store_multiple instruction pattern:    Standard Names.     (line  160)
 * strcpy:                                Storage Layout.     (line  235)
-* STRICT_ALIGNMENT:                      Storage Layout.     (line  302)
+* STRICT_ALIGNMENT:                      Storage Layout.     (line  309)
 * strict_low_part:                       RTL Declarations.   (line    9)
 * strict_memory_address_p:               Addressing Modes.   (line  179)
 * STRING_CST:                            Expression trees.   (line    6)
 * STRING_POOL_ADDRESS_P:                 Flags.              (line  183)
 * strlenM instruction pattern:           Standard Names.     (line  778)
 * structure value address:               Aggregate Return.   (line    6)
-* STRUCTURE_SIZE_BOUNDARY:               Storage Layout.     (line  294)
+* STRUCTURE_SIZE_BOUNDARY:               Storage Layout.     (line  301)
 * structures, returning:                 Interface.          (line   10)
 * subM3 instruction pattern:             Standard Names.     (line  222)
 * SUBOBJECT:                             Function Bodies.    (line    6)
@@ -43300,7 +43305,7 @@ Concept Index
 * target makefile fragment:              Target Fragment.    (line    6)
 * target specifications:                 Run-time Target.    (line    6)
 * TARGET_ADDRESS_COST:                   Costs.              (line  236)
-* TARGET_ALIGN_ANON_BITFIELD:            Storage Layout.     (line  379)
+* TARGET_ALIGN_ANON_BITFIELD:            Storage Layout.     (line  386)
 * TARGET_ALLOCATE_INITIAL_VALUE:         Misc.               (line  720)
 * TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS:  Misc.               (line  953)
 * TARGET_ARG_PARTIAL_BYTES:              Register Arguments. (line   83)
@@ -43383,7 +43388,7 @@ Concept Index
 * TARGET_CXX_LIBRARY_RTTI_COMDAT:        C++ ABI.            (line   69)
 * TARGET_CXX_USE_AEABI_ATEXIT:           C++ ABI.            (line   74)
 * TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT:  C++ ABI.            (line   80)
-* TARGET_DECIMAL_FLOAT_SUPPORTED_P:      Storage Layout.     (line  506)
+* TARGET_DECIMAL_FLOAT_SUPPORTED_P:      Storage Layout.     (line  513)
 * TARGET_DECLSPEC:                       Target Attributes.  (line   64)
 * TARGET_DEFAULT_PACK_STRUCT:            Misc.               (line  482)
 * TARGET_DEFAULT_SHORT_ENUMS:            Type Layout.        (line  160)
@@ -43413,13 +43418,13 @@ Concept Index
 * TARGET_EXECUTABLE_SUFFIX:              Misc.               (line  769)
 * TARGET_EXPAND_BUILTIN:                 Misc.               (line  665)
 * TARGET_EXPAND_BUILTIN_SAVEREGS:        Varargs.            (line   92)
-* TARGET_EXPAND_TO_RTL_HOOK:             Storage Layout.     (line  512)
+* TARGET_EXPAND_TO_RTL_HOOK:             Storage Layout.     (line  519)
 * TARGET_EXPR:                           Expression trees.   (line    6)
 * TARGET_EXTRA_INCLUDES:                 Misc.               (line  841)
 * TARGET_EXTRA_LIVE_ON_ENTRY:            Tail Calls.         (line   21)
 * TARGET_EXTRA_PRE_INCLUDES:             Misc.               (line  848)
 * TARGET_FIXED_CONDITION_CODE_REGS:      Condition Code.     (line  142)
-* TARGET_FIXED_POINT_SUPPORTED_P:        Storage Layout.     (line  509)
+* TARGET_FIXED_POINT_SUPPORTED_P:        Storage Layout.     (line  516)
 * target_flags:                          Run-time Target.    (line   52)
 * TARGET_FLT_EVAL_METHOD:                Type Layout.        (line  141)
 * TARGET_FN_ABI_VA_LIST:                 Register Arguments. (line  268)
@@ -43446,18 +43451,18 @@ Concept Index
                                                              (line   99)
 * TARGET_INIT_LIBFUNCS:                  Library Calls.      (line   16)
 * TARGET_INSERT_ATTRIBUTES:              Target Attributes.  (line   73)
-* TARGET_INSTANTIATE_DECLS:              Storage Layout.     (line  520)
+* TARGET_INSTANTIATE_DECLS:              Storage Layout.     (line  527)
 * TARGET_INVALID_BINARY_OP:              Misc.               (line  921)
 * TARGET_INVALID_CONVERSION:             Misc.               (line  908)
 * TARGET_INVALID_UNARY_OP:               Misc.               (line  914)
 * TARGET_IRA_COVER_CLASSES:              Register Classes.   (line  496)
 * TARGET_LIB_INT_CMP_BIASED:             Library Calls.      (line   35)
-* TARGET_LIBGCC_CMP_RETURN_MODE:         Storage Layout.     (line  441)
+* TARGET_LIBGCC_CMP_RETURN_MODE:         Storage Layout.     (line  448)
 * TARGET_LIBGCC_SDATA_SECTION:           Sections.           (line  123)
-* TARGET_LIBGCC_SHIFT_COUNT_MODE:        Storage Layout.     (line  447)
+* TARGET_LIBGCC_SHIFT_COUNT_MODE:        Storage Layout.     (line  454)
 * TARGET_MACHINE_DEPENDENT_REORG:        Misc.               (line  632)
 * TARGET_MANGLE_DECL_ASSEMBLER_NAME:     Sections.           (line  225)
-* TARGET_MANGLE_TYPE:                    Storage Layout.     (line  524)
+* TARGET_MANGLE_TYPE:                    Storage Layout.     (line  531)
 * TARGET_MD_ASM_CLOBBERS:                Misc.               (line  548)
 * TARGET_MEM_CONSTRAINT:                 Addressing Modes.   (line  100)
 * TARGET_MEM_REF:                        Expression trees.   (line    6)
@@ -43465,12 +43470,12 @@ Concept Index
 * TARGET_MERGE_TYPE_ATTRIBUTES:          Target Attributes.  (line   31)
 * TARGET_MIN_DIVISIONS_FOR_RECIP_MUL:    Misc.               (line  106)
 * TARGET_MODE_REP_EXTENDED:              Misc.               (line  191)
-* TARGET_MS_BITFIELD_LAYOUT_P:           Storage Layout.     (line  479)
+* TARGET_MS_BITFIELD_LAYOUT_P:           Storage Layout.     (line  486)
 * TARGET_MUST_PASS_IN_STACK:             Register Arguments. (line   62)
 * TARGET_MUST_PASS_IN_STACK, and FUNCTION_ARG: Register Arguments.
                                                              (line   52)
 * TARGET_N_FORMAT_TYPES:                 Misc.               (line  873)
-* TARGET_NARROW_VOLATILE_BITFIELD:       Storage Layout.     (line  385)
+* TARGET_NARROW_VOLATILE_BITFIELD:       Storage Layout.     (line  392)
 * TARGET_OBJECT_SUFFIX:                  Misc.               (line  764)
 * TARGET_OBJFMT_CPP_BUILTINS:            Run-time Target.    (line   46)
 * TARGET_OPTF:                           Misc.               (line  855)
@@ -43498,7 +43503,7 @@ Concept Index
 * TARGET_SCALAR_MODE_SUPPORTED_P:        Register Arguments. (line  291)
 * TARGET_SCHED_ADJUST_COST:              Scheduling.         (line   37)
 * TARGET_SCHED_ADJUST_PRIORITY:          Scheduling.         (line   52)
-* TARGET_SCHED_CLEAR_SCHED_CONTEXT:      Scheduling.         (line  261)
+* TARGET_SCHED_CLEAR_SCHED_CONTEXT:      Scheduling.         (line  283)
 * TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK: Scheduling.     (line   89)
 * TARGET_SCHED_DFA_NEW_CYCLE:            Scheduling.         (line  205)
 * TARGET_SCHED_DFA_POST_CYCLE_ADVANCE:   Scheduling.         (line  160)
@@ -43513,14 +43518,14 @@ Concept Index
                                                              (line  196)
 * TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC: Scheduling.
                                                              (line  321)
-* TARGET_SCHED_FREE_SCHED_CONTEXT:       Scheduling.         (line  265)
+* TARGET_SCHED_FREE_SCHED_CONTEXT:       Scheduling.         (line  287)
 * TARGET_SCHED_GEN_CHECK:                Scheduling.         (line  309)
 * TARGET_SCHED_H_I_D_EXTENDED:           Scheduling.         (line  241)
 * TARGET_SCHED_INIT:                     Scheduling.         (line   99)
 * TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN: Scheduling.         (line  149)
 * TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN:  Scheduling.         (line  141)
 * TARGET_SCHED_INIT_GLOBAL:              Scheduling.         (line  118)
-* TARGET_SCHED_INIT_SCHED_CONTEXT:       Scheduling.         (line  251)
+* TARGET_SCHED_INIT_SCHED_CONTEXT:       Scheduling.         (line  273)
 * TARGET_SCHED_IS_COSTLY_DEPENDENCE:     Scheduling.         (line  219)
 * TARGET_SCHED_ISSUE_RATE:               Scheduling.         (line   12)
 * TARGET_SCHED_NEEDS_BLOCK_P:            Scheduling.         (line  302)
@@ -43558,7 +43563,7 @@ Concept Index
 * TARGET_VALID_OPTION_ATTRIBUTE_P:       Target Attributes.  (line   93)
 * TARGET_VALID_POINTER_MODE:             Register Arguments. (line  285)
 * TARGET_VECTOR_MODE_SUPPORTED_P:        Register Arguments. (line  303)
-* TARGET_VECTOR_OPAQUE_P:                Storage Layout.     (line  472)
+* TARGET_VECTOR_OPAQUE_P:                Storage Layout.     (line  479)
 * TARGET_VECTORIZE_BUILTIN_CONVERSION:   Addressing Modes.   (line  300)
 * TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD: Addressing Modes.  (line  249)
 * TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN: Addressing Modes. (line  275)
@@ -43604,12 +43609,12 @@ Concept Index
 * tree:                                  Macros and Functions.
                                                              (line    6)
 * Tree SSA:                              Tree SSA.           (line    6)
-* tree_code:                             GIMPLE_OMP_FOR.     (line   83)
+* tree_code:                             GIMPLE_ASSIGN.      (line   41)
 * TREE_CODE:                             Tree overview.      (line    6)
-* tree_code <1>:                         GIMPLE_COND.        (line   21)
+* tree_code <1>:                         GIMPLE_OMP_FOR.     (line   83)
 * tree_code <2>:                         Manipulating GIMPLE statements.
                                                              (line   31)
-* tree_code:                             GIMPLE_ASSIGN.      (line   41)
+* tree_code:                             GIMPLE_COND.        (line   21)
 * TREE_FILENAME:                         Working with declarations.
                                                              (line   14)
 * tree_int_cst_equal:                    Expression trees.   (line    6)
@@ -43624,11 +43629,11 @@ Concept Index
 * TREE_PURPOSE:                          Containers.         (line    6)
 * TREE_STRING_LENGTH:                    Expression trees.   (line    6)
 * TREE_STRING_POINTER:                   Expression trees.   (line    6)
-* TREE_TYPE <1>:                         Working with declarations.
+* TREE_TYPE <1>:                         Function Basics.    (line  171)
+* TREE_TYPE <2>:                         Working with declarations.
                                                              (line   11)
-* TREE_TYPE <2>:                         Expression trees.   (line    6)
-* TREE_TYPE <3>:                         Types.              (line    6)
-* TREE_TYPE <4>:                         Function Basics.    (line  171)
+* TREE_TYPE <3>:                         Expression trees.   (line    6)
+* TREE_TYPE <4>:                         Types.              (line    6)
 * TREE_TYPE:                             Expression trees.   (line   17)
 * TREE_VALUE:                            Containers.         (line    6)
 * TREE_VEC:                              Containers.         (line    6)
@@ -43656,22 +43661,22 @@ Concept Index
                                                              (line    6)
 * type:                                  Types.              (line    6)
 * type declaration:                      Declarations.       (line    6)
-* TYPE_ALIGN:                            Types.              (line    6)
+* TYPE_ALIGN:                            Types.              (line   61)
 * TYPE_ARG_TYPES:                        Types.              (line    6)
 * TYPE_ASM_OP:                           Label Output.       (line   55)
 * TYPE_ATTRIBUTES:                       Attributes.         (line   25)
 * TYPE_BINFO:                            Classes.            (line    6)
 * TYPE_BUILT_IN:                         Types.              (line   83)
-* TYPE_CANONICAL:                        Types.              (line  102)
+* TYPE_CANONICAL:                        Types.              (line    6)
 * TYPE_CONTEXT:                          Types.              (line    6)
 * TYPE_DECL:                             Declarations.       (line    6)
-* TYPE_FIELDS <1>:                       Classes.            (line    6)
-* TYPE_FIELDS:                           Types.              (line    6)
+* TYPE_FIELDS <1>:                       Types.              (line    6)
+* TYPE_FIELDS:                           Classes.            (line    6)
 * TYPE_HAS_ARRAY_NEW_OPERATOR:           Classes.            (line   91)
 * TYPE_HAS_DEFAULT_CONSTRUCTOR:          Classes.            (line   76)
 * TYPE_HAS_MUTABLE_P:                    Classes.            (line   81)
 * TYPE_HAS_NEW_OPERATOR:                 Classes.            (line   88)
-* TYPE_MAIN_VARIANT:                     Types.              (line   50)
+* TYPE_MAIN_VARIANT:                     Types.              (line    6)
 * TYPE_MAX_VALUE:                        Types.              (line    6)
 * TYPE_METHOD_BASETYPE:                  Types.              (line    6)
 * TYPE_METHODS:                          Classes.            (line    6)
@@ -43687,7 +43692,7 @@ Concept Index
 * TYPE_PRECISION:                        Types.              (line    6)
 * TYPE_PTR_P:                            Types.              (line   89)
 * TYPE_PTRFN_P:                          Types.              (line   93)
-* TYPE_PTRMEM_P:                         Types.              (line   86)
+* TYPE_PTRMEM_P:                         Types.              (line    6)
 * TYPE_PTROB_P:                          Types.              (line   96)
 * TYPE_PTROBV_P:                         Types.              (line    6)
 * TYPE_QUAL_CONST:                       Types.              (line    6)
@@ -43695,7 +43700,7 @@ Concept Index
 * TYPE_QUAL_VOLATILE:                    Types.              (line    6)
 * TYPE_RAISES_EXCEPTIONS:                Function Basics.    (line  175)
 * TYPE_SIZE:                             Types.              (line    6)
-* TYPE_STRUCTURAL_EQUALITY_P:            Types.              (line  139)
+* TYPE_STRUCTURAL_EQUALITY_P:            Types.              (line    6)
 * TYPE_UNQUALIFIED:                      Types.              (line    6)
 * TYPE_VFIELD:                           Classes.            (line    6)
 * TYPENAME_TYPE:                         Types.              (line    6)
@@ -43726,13 +43731,13 @@ Concept Index
 * unchanging, in call_insn:              Flags.              (line   19)
 * unchanging, in jump_insn, call_insn and insn: Flags.       (line   39)
 * unchanging, in mem:                    Flags.              (line  152)
-* unchanging, in subreg:                 Flags.              (line  188)
+* unchanging, in subreg:                 Flags.              (line  198)
 * unchanging, in symbol_ref:             Flags.              (line   10)
 * UNEQ_EXPR:                             Expression trees.   (line    6)
 * UNGE_EXPR:                             Expression trees.   (line    6)
 * UNGT_EXPR:                             Expression trees.   (line    6)
-* UNION_TYPE <1>:                        Classes.            (line    6)
-* UNION_TYPE:                            Types.              (line    6)
+* UNION_TYPE <1>:                        Types.              (line    6)
+* UNION_TYPE:                            Classes.            (line    6)
 * unions, returning:                     Interface.          (line   10)
 * UNITS_PER_SIMD_WORD:                   Storage Layout.     (line   77)
 * UNITS_PER_WORD:                        Storage Layout.     (line   67)
@@ -43745,7 +43750,7 @@ Concept Index
 * unsigned division:                     Arithmetic.         (line  125)
 * unsigned division with unsigned saturation: Arithmetic.    (line  125)
 * unsigned greater than:                 Comparisons.        (line   64)
-* unsigned less than:                    Comparisons.        (line   68)
+* unsigned less than:                    Comparisons.        (line   76)
 * unsigned minimum and maximum:          Arithmetic.         (line  144)
 * unsigned_fix:                          Conversions.        (line   77)
 * unsigned_float:                        Conversions.        (line   62)
@@ -43878,7 +43883,7 @@ Concept Index
 * VIRTUAL_STACK_DYNAMIC_REGNUM:          Regs and Memory.    (line   78)
 * VIRTUAL_STACK_VARS_REGNUM:             Regs and Memory.    (line   69)
 * VLIW:                                  Processor pipeline description.
-                                                             (line  215)
+                                                             (line    6)
 * vlshrM3 instruction pattern:           Standard Names.     (line  445)
 * VMS:                                   Filesystem.         (line   37)
 * VMS_DEBUGGING_INFO:                    VMS Debug.          (line    9)
@@ -43890,7 +43895,7 @@ Concept Index
 * volatil, in label_ref and reg_label:   Flags.              (line   65)
 * volatil, in mem, asm_operands, and asm_input: Flags.       (line   94)
 * volatil, in reg:                       Flags.              (line  116)
-* volatil, in subreg:                    Flags.              (line  198)
+* volatil, in subreg:                    Flags.              (line  188)
 * volatil, in symbol_ref:                Flags.              (line  224)
 * volatile memory references:            Flags.              (line  352)
 * voptype_d:                             Manipulating GIMPLE statements.
@@ -43947,317 +43952,317 @@ Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f2081
-Node: Contributing\7f5164
-Node: Portability\7f5905
-Node: Interface\7f7693
-Node: Libgcc\7f10733
-Node: Integer library routines\7f12574
-Node: Soft float library routines\7f19413
-Node: Decimal float library routines\7f31350
-Node: Fixed-point fractional library routines\7f47107
-Node: Exception handling routines\7f147505
-Node: Miscellaneous routines\7f148612
-Node: Languages\7f148995
-Node: Source Tree\7f150542
-Node: Configure Terms\7f151161
-Node: Top Level\7f154119
-Node: gcc Directory\7f156889
-Node: Subdirectories\7f157858
-Node: Configuration\7f159708
-Node: Config Fragments\7f160428
-Node: System Config\7f161657
-Node: Configuration Files\7f162593
-Node: Build\7f165168
-Node: Makefile\7f165580
-Ref: Makefile-Footnote-1\7f172298
-Ref: Makefile-Footnote-2\7f172443
-Node: Library Files\7f172515
-Node: Headers\7f173077
-Node: Documentation\7f175160
-Node: Texinfo Manuals\7f176019
-Node: Man Page Generation\7f178357
-Node: Miscellaneous Docs\7f180272
-Node: Front End\7f181571
-Node: Front End Directory\7f185272
-Node: Front End Config\7f190462
-Node: Back End\7f193376
-Node: Testsuites\7f197053
-Node: Test Idioms\7f197917
-Node: Test Directives\7f201318
-Node: Ada Tests\7f213382
-Node: C Tests\7f214674
-Node: libgcj Tests\7f219029
-Node: gcov Testing\7f220161
-Node: profopt Testing\7f223145
-Node: compat Testing\7f224588
-Node: Torture Tests\7f228832
-Node: Options\7f230464
-Node: Option file format\7f230905
-Node: Option properties\7f233654
-Node: Passes\7f239710
-Node: Parsing pass\7f240452
-Node: Gimplification pass\7f243980
-Node: Pass manager\7f245807
-Node: Tree-SSA passes\7f247290
-Node: RTL passes\7f269121
-Node: Trees\7f281706
-Node: Deficiencies\7f284432
-Node: Tree overview\7f284669
-Node: Macros and Functions\7f288792
-Node: Identifiers\7f288938
-Node: Containers\7f290463
-Node: Types\7f291618
-Node: Scopes\7f307321
-Node: Namespaces\7f308083
-Node: Classes\7f310895
-Node: Declarations\7f315652
-Node: Working with declarations\7f316147
-Node: Internal structure\7f322604
-Node: Current structure hierarchy\7f322986
-Node: Adding new DECL node types\7f325078
-Node: Functions\7f329149
-Node: Function Basics\7f331552
-Node: Function Bodies\7f339282
-Node: Attributes\7f350524
-Node: Expression trees\7f351765
-Node: RTL\7f394374
-Node: RTL Objects\7f396473
-Node: RTL Classes\7f400347
-Node: Accessors\7f405299
-Node: Special Accessors\7f407693
-Node: Flags\7f412911
-Node: Machine Modes\7f428779
-Node: Constants\7f441095
-Node: Regs and Memory\7f447124
-Node: Arithmetic\7f465025
-Node: Comparisons\7f474545
-Node: Bit-Fields\7f478837
-Node: Vector Operations\7f480389
-Node: Conversions\7f482015
-Node: RTL Declarations\7f486513
-Node: Side Effects\7f487334
-Node: Incdec\7f503657
-Node: Assembler\7f506992
-Node: Insns\7f508524
-Node: Calls\7f532413
-Node: Sharing\7f535006
-Node: Reading RTL\7f538116
-Node: GENERIC\7f539106
-Node: Statements\7f540743
-Node: Blocks\7f541188
-Node: Statement Sequences\7f542441
-Node: Empty Statements\7f542774
-Node: Jumps\7f543348
-Node: Cleanups\7f544001
-Node: GIMPLE\7f545754
-Node: Tuple representation\7f549375
-Node: GIMPLE instruction set\7f558030
-Node: GIMPLE Exception Handling\7f559698
-Node: Temporaries\7f561613
-Ref: Temporaries-Footnote-1\7f562932
-Node: Operands\7f562995
-Node: Compound Expressions\7f563769
-Node: Compound Lvalues\7f564003
-Node: Conditional Expressions\7f564769
-Node: Logical Operators\7f565439
-Node: Manipulating GIMPLE statements\7f571530
-Node: Tuple specific accessors\7f577458
-Node: `GIMPLE_ASM'\7f578291
-Node: `GIMPLE_ASSIGN'\7f580896
-Node: `GIMPLE_BIND'\7f584842
-Node: `GIMPLE_CALL'\7f586649
-Node: `GIMPLE_CATCH'\7f590908
-Node: `GIMPLE_CHANGE_DYNAMIC_TYPE'\7f592066
-Node: `GIMPLE_COND'\7f593399
-Node: `GIMPLE_EH_FILTER'\7f596205
-Node: `GIMPLE_LABEL'\7f597691
-Node: `GIMPLE_NOP'\7f598666
-Node: `GIMPLE_OMP_ATOMIC_LOAD'\7f599035
-Node: `GIMPLE_OMP_ATOMIC_STORE'\7f599945
-Node: `GIMPLE_OMP_CONTINUE'\7f600584
-Node: `GIMPLE_OMP_CRITICAL'\7f601934
-Node: `GIMPLE_OMP_FOR'\7f602870
-Node: `GIMPLE_OMP_MASTER'\7f606380
-Node: `GIMPLE_OMP_ORDERED'\7f606763
-Node: `GIMPLE_OMP_PARALLEL'\7f607163
-Node: `GIMPLE_OMP_RETURN'\7f609932
-Node: `GIMPLE_OMP_SECTION'\7f610582
-Node: `GIMPLE_OMP_SECTIONS'\7f611248
-Node: `GIMPLE_OMP_SINGLE'\7f612852
-Node: `GIMPLE_PHI'\7f613788
-Node: `GIMPLE_RESX'\7f615201
-Node: `GIMPLE_RETURN'\7f615920
-Node: `GIMPLE_SWITCH'\7f616488
-Node: `GIMPLE_TRY'\7f618618
-Node: `GIMPLE_WITH_CLEANUP_EXPR'\7f620408
-Node: GIMPLE sequences\7f621291
-Node: Sequence iterators\7f624497
-Node: Adding a new GIMPLE statement code\7f632952
-Node: Statement and operand traversals\7f634232
-Node: Tree SSA\7f636842
-Node: Annotations\7f638571
-Node: SSA Operands\7f639097
-Node: SSA\7f653628
-Node: Alias analysis\7f665919
-Node: Loop Analysis and Representation\7f673375
-Node: Loop representation\7f674556
-Node: Loop querying\7f681476
-Node: Loop manipulation\7f684309
-Node: LCSSA\7f686677
-Node: Scalar evolutions\7f688749
-Node: loop-iv\7f691993
-Node: Number of iterations\7f693919
-Node: Dependency analysis\7f696728
-Node: Lambda\7f703096
-Node: Omega\7f704766
-Node: Control Flow\7f706331
-Node: Basic Blocks\7f707331
-Node: Edges\7f711899
-Node: Profile information\7f720461
-Node: Maintaining the CFG\7f725147
-Node: Liveness information\7f732029
-Node: Machine Desc\7f734156
-Node: Overview\7f736624
-Node: Patterns\7f738665
-Node: Example\7f742103
-Node: RTL Template\7f743538
-Node: Output Template\7f754193
-Node: Output Statement\7f758159
-Node: Predicates\7f762121
-Node: Machine-Independent Predicates\7f765039
-Node: Defining Predicates\7f769671
-Node: Constraints\7f775636
-Node: Simple Constraints\7f776884
-Node: Multi-Alternative\7f789090
-Node: Class Preferences\7f791931
-Node: Modifiers\7f792823
-Node: Machine Constraints\7f796955
-Node: Disable Insn Alternatives\7f829678
-Node: Define Constraints\7f832571
-Node: C Constraint Interface\7f839351
-Node: Standard Names\7f842992
-Ref: shift patterns\7f861920
-Ref: prologue instruction pattern\7f902938
-Ref: epilogue instruction pattern\7f903431
-Node: Pattern Ordering\7f912974
-Node: Dependent Patterns\7f914210
-Node: Jump Patterns\7f917024
-Node: Looping Patterns\7f922720
-Node: Insn Canonicalizations\7f927448
-Node: Expander Definitions\7f931832
-Node: Insn Splitting\7f939950
-Node: Including Patterns\7f949553
-Node: Peephole Definitions\7f951333
-Node: define_peephole\7f952586
-Node: define_peephole2\7f958917
-Node: Insn Attributes\7f961984
-Node: Defining Attributes\7f963090
-Node: Expressions\7f965610
-Node: Tagging Insns\7f972212
-Node: Attr Example\7f976565
-Node: Insn Lengths\7f978939
-Node: Constant Attributes\7f981998
-Node: Delay Slots\7f983167
-Node: Processor pipeline description\7f986391
-Ref: Processor pipeline description-Footnote-1\7f1003757
-Node: Conditional Execution\7f1004079
-Node: Constant Definitions\7f1006932
-Node: Iterators\7f1008527
-Node: Mode Iterators\7f1008974
-Node: Defining Mode Iterators\7f1009952
-Node: Substitutions\7f1011446
-Node: Examples\7f1013687
-Node: Code Iterators\7f1015135
-Node: Target Macros\7f1017392
-Node: Target Structure\7f1020415
-Node: Driver\7f1021684
-Node: Run-time Target\7f1045365
-Node: Per-Function Data\7f1052489
-Node: Storage Layout\7f1055252
-Node: Type Layout\7f1080368
-Node: Registers\7f1093325
-Node: Register Basics\7f1094299
-Node: Allocation Order\7f1099866
-Node: Values in Registers\7f1101887
-Node: Leaf Functions\7f1109376
-Node: Stack Registers\7f1112234
-Node: Register Classes\7f1113350
-Node: Old Constraints\7f1140062
-Node: Stack and Calling\7f1147213
-Node: Frame Layout\7f1147747
-Node: Exception Handling\7f1158593
-Node: Stack Checking\7f1164971
-Node: Frame Registers\7f1169358
-Node: Elimination\7f1175964
-Node: Stack Arguments\7f1179995
-Node: Register Arguments\7f1186798
-Node: Scalar Return\7f1202251
-Node: Aggregate Return\7f1207797
-Node: Caller Saves\7f1211456
-Node: Function Entry\7f1212634
-Node: Profiling\7f1225249
-Node: Tail Calls\7f1226948
-Node: Stack Smashing Protection\7f1228315
-Node: Varargs\7f1229427
-Node: Trampolines\7f1237387
-Node: Library Calls\7f1244053
-Node: Addressing Modes\7f1248903
-Node: Anchored Addresses\7f1264821
-Node: Condition Code\7f1267482
-Node: Costs\7f1275771
-Node: Scheduling\7f1288870
-Node: Sections\7f1307431
-Node: PIC\7f1322081
-Node: Assembler Format\7f1324071
-Node: File Framework\7f1325209
-Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS\7f1330115
-Node: Data Output\7f1333381
-Node: Uninitialized Data\7f1341140
-Node: Label Output\7f1346211
-Node: Initialization\7f1367878
-Node: Macros for Initialization\7f1373840
-Node: Instruction Output\7f1380292
-Node: Dispatch Tables\7f1389286
-Node: Exception Region Output\7f1393081
-Node: Alignment Output\7f1398841
-Node: Debugging Info\7f1403004
-Node: All Debuggers\7f1403674
-Node: DBX Options\7f1406529
-Node: DBX Hooks\7f1411978
-Node: File Names and DBX\7f1413904
-Node: SDB and DWARF\7f1416015
-Node: VMS Debug\7f1420007
-Node: Floating Point\7f1420577
-Node: Mode Switching\7f1425400
-Node: Target Attributes\7f1429326
-Node: Emulated TLS\7f1436090
-Node: MIPS Coprocessors\7f1439480
-Node: PCH Target\7f1441049
-Node: C++ ABI\7f1442570
-Node: Misc\7f1447189
-Ref: TARGET_SHIFT_TRUNCATION_MASK\7f1454560
-Node: Host Config\7f1495505
-Node: Host Common\7f1496573
-Node: Filesystem\7f1498952
-Node: Host Misc\7f1503067
-Node: Fragments\7f1505206
-Node: Target Fragment\7f1506401
-Node: Host Fragment\7f1512291
-Node: Collect2\7f1512531
-Node: Header Dirs\7f1515074
-Node: Type Information\7f1516497
-Node: GTY Options\7f1518788
-Node: GGC Roots\7f1529468
-Node: Files\7f1530188
-Node: Invoking the garbage collector\7f1532938
-Node: Plugins\7f1533991
-Node: Funding\7f1544356
-Node: GNU Project\7f1546843
-Node: Copying\7f1547492
-Node: GNU Free Documentation License\7f1585023
-Node: Contributors\7f1607432
-Node: Option Index\7f1643762
-Node: Concept Index\7f1644347
+Node: Top\7f2061
+Node: Contributing\7f5144
+Node: Portability\7f5885
+Node: Interface\7f7673
+Node: Libgcc\7f10713
+Node: Integer library routines\7f12554
+Node: Soft float library routines\7f19393
+Node: Decimal float library routines\7f31330
+Node: Fixed-point fractional library routines\7f47087
+Node: Exception handling routines\7f147485
+Node: Miscellaneous routines\7f148592
+Node: Languages\7f148975
+Node: Source Tree\7f150522
+Node: Configure Terms\7f151141
+Node: Top Level\7f154099
+Node: gcc Directory\7f156869
+Node: Subdirectories\7f157838
+Node: Configuration\7f159688
+Node: Config Fragments\7f160408
+Node: System Config\7f161637
+Node: Configuration Files\7f162573
+Node: Build\7f165148
+Node: Makefile\7f165560
+Ref: Makefile-Footnote-1\7f172278
+Ref: Makefile-Footnote-2\7f172423
+Node: Library Files\7f172495
+Node: Headers\7f173057
+Node: Documentation\7f175140
+Node: Texinfo Manuals\7f175999
+Node: Man Page Generation\7f178337
+Node: Miscellaneous Docs\7f180252
+Node: Front End\7f181551
+Node: Front End Directory\7f185252
+Node: Front End Config\7f190442
+Node: Back End\7f193356
+Node: Testsuites\7f197033
+Node: Test Idioms\7f197897
+Node: Test Directives\7f201298
+Node: Ada Tests\7f213362
+Node: C Tests\7f214654
+Node: libgcj Tests\7f219009
+Node: gcov Testing\7f220141
+Node: profopt Testing\7f223125
+Node: compat Testing\7f224568
+Node: Torture Tests\7f228812
+Node: Options\7f230444
+Node: Option file format\7f230885
+Node: Option properties\7f233634
+Node: Passes\7f239690
+Node: Parsing pass\7f240432
+Node: Gimplification pass\7f243960
+Node: Pass manager\7f245787
+Node: Tree-SSA passes\7f247270
+Node: RTL passes\7f269101
+Node: Trees\7f281686
+Node: Deficiencies\7f284412
+Node: Tree overview\7f284649
+Node: Macros and Functions\7f288772
+Node: Identifiers\7f288918
+Node: Containers\7f290443
+Node: Types\7f291598
+Node: Scopes\7f307301
+Node: Namespaces\7f308063
+Node: Classes\7f310875
+Node: Declarations\7f315632
+Node: Working with declarations\7f316127
+Node: Internal structure\7f322584
+Node: Current structure hierarchy\7f322966
+Node: Adding new DECL node types\7f325058
+Node: Functions\7f329129
+Node: Function Basics\7f331532
+Node: Function Bodies\7f339262
+Node: Attributes\7f350504
+Node: Expression trees\7f351745
+Node: RTL\7f394354
+Node: RTL Objects\7f396453
+Node: RTL Classes\7f400327
+Node: Accessors\7f405279
+Node: Special Accessors\7f407673
+Node: Flags\7f412891
+Node: Machine Modes\7f428759
+Node: Constants\7f441075
+Node: Regs and Memory\7f447104
+Node: Arithmetic\7f465005
+Node: Comparisons\7f474525
+Node: Bit-Fields\7f478817
+Node: Vector Operations\7f480369
+Node: Conversions\7f481995
+Node: RTL Declarations\7f486493
+Node: Side Effects\7f487314
+Node: Incdec\7f503637
+Node: Assembler\7f506972
+Node: Insns\7f508504
+Node: Calls\7f532393
+Node: Sharing\7f534986
+Node: Reading RTL\7f538096
+Node: GENERIC\7f539086
+Node: Statements\7f540723
+Node: Blocks\7f541168
+Node: Statement Sequences\7f542421
+Node: Empty Statements\7f542754
+Node: Jumps\7f543328
+Node: Cleanups\7f543981
+Node: GIMPLE\7f545734
+Node: Tuple representation\7f549355
+Node: GIMPLE instruction set\7f558010
+Node: GIMPLE Exception Handling\7f559678
+Node: Temporaries\7f561593
+Ref: Temporaries-Footnote-1\7f562912
+Node: Operands\7f562975
+Node: Compound Expressions\7f563749
+Node: Compound Lvalues\7f563983
+Node: Conditional Expressions\7f564749
+Node: Logical Operators\7f565419
+Node: Manipulating GIMPLE statements\7f571510
+Node: Tuple specific accessors\7f577438
+Node: `GIMPLE_ASM'\7f578271
+Node: `GIMPLE_ASSIGN'\7f580876
+Node: `GIMPLE_BIND'\7f584822
+Node: `GIMPLE_CALL'\7f586629
+Node: `GIMPLE_CATCH'\7f590888
+Node: `GIMPLE_CHANGE_DYNAMIC_TYPE'\7f592046
+Node: `GIMPLE_COND'\7f593379
+Node: `GIMPLE_EH_FILTER'\7f596185
+Node: `GIMPLE_LABEL'\7f597671
+Node: `GIMPLE_NOP'\7f598646
+Node: `GIMPLE_OMP_ATOMIC_LOAD'\7f599015
+Node: `GIMPLE_OMP_ATOMIC_STORE'\7f599925
+Node: `GIMPLE_OMP_CONTINUE'\7f600564
+Node: `GIMPLE_OMP_CRITICAL'\7f601914
+Node: `GIMPLE_OMP_FOR'\7f602850
+Node: `GIMPLE_OMP_MASTER'\7f606360
+Node: `GIMPLE_OMP_ORDERED'\7f606743
+Node: `GIMPLE_OMP_PARALLEL'\7f607143
+Node: `GIMPLE_OMP_RETURN'\7f609912
+Node: `GIMPLE_OMP_SECTION'\7f610562
+Node: `GIMPLE_OMP_SECTIONS'\7f611228
+Node: `GIMPLE_OMP_SINGLE'\7f612832
+Node: `GIMPLE_PHI'\7f613768
+Node: `GIMPLE_RESX'\7f615181
+Node: `GIMPLE_RETURN'\7f615900
+Node: `GIMPLE_SWITCH'\7f616468
+Node: `GIMPLE_TRY'\7f618598
+Node: `GIMPLE_WITH_CLEANUP_EXPR'\7f620388
+Node: GIMPLE sequences\7f621271
+Node: Sequence iterators\7f624477
+Node: Adding a new GIMPLE statement code\7f632932
+Node: Statement and operand traversals\7f634212
+Node: Tree SSA\7f636822
+Node: Annotations\7f638551
+Node: SSA Operands\7f639077
+Node: SSA\7f653608
+Node: Alias analysis\7f665899
+Node: Loop Analysis and Representation\7f673355
+Node: Loop representation\7f674536
+Node: Loop querying\7f681456
+Node: Loop manipulation\7f684289
+Node: LCSSA\7f686657
+Node: Scalar evolutions\7f688729
+Node: loop-iv\7f691973
+Node: Number of iterations\7f693899
+Node: Dependency analysis\7f696708
+Node: Lambda\7f703076
+Node: Omega\7f704746
+Node: Control Flow\7f706311
+Node: Basic Blocks\7f707311
+Node: Edges\7f711879
+Node: Profile information\7f720441
+Node: Maintaining the CFG\7f725127
+Node: Liveness information\7f732009
+Node: Machine Desc\7f734136
+Node: Overview\7f736604
+Node: Patterns\7f738645
+Node: Example\7f742083
+Node: RTL Template\7f743518
+Node: Output Template\7f754173
+Node: Output Statement\7f758139
+Node: Predicates\7f762101
+Node: Machine-Independent Predicates\7f765019
+Node: Defining Predicates\7f769651
+Node: Constraints\7f775616
+Node: Simple Constraints\7f776864
+Node: Multi-Alternative\7f789070
+Node: Class Preferences\7f791911
+Node: Modifiers\7f792803
+Node: Machine Constraints\7f796935
+Node: Disable Insn Alternatives\7f829658
+Node: Define Constraints\7f832551
+Node: C Constraint Interface\7f839331
+Node: Standard Names\7f842972
+Ref: shift patterns\7f861900
+Ref: prologue instruction pattern\7f902918
+Ref: epilogue instruction pattern\7f903411
+Node: Pattern Ordering\7f912954
+Node: Dependent Patterns\7f914190
+Node: Jump Patterns\7f917004
+Node: Looping Patterns\7f922700
+Node: Insn Canonicalizations\7f927428
+Node: Expander Definitions\7f931812
+Node: Insn Splitting\7f939930
+Node: Including Patterns\7f949533
+Node: Peephole Definitions\7f951313
+Node: define_peephole\7f952566
+Node: define_peephole2\7f958897
+Node: Insn Attributes\7f961964
+Node: Defining Attributes\7f963070
+Node: Expressions\7f965590
+Node: Tagging Insns\7f972192
+Node: Attr Example\7f976545
+Node: Insn Lengths\7f978919
+Node: Constant Attributes\7f981978
+Node: Delay Slots\7f983147
+Node: Processor pipeline description\7f986371
+Ref: Processor pipeline description-Footnote-1\7f1003737
+Node: Conditional Execution\7f1004059
+Node: Constant Definitions\7f1006912
+Node: Iterators\7f1008507
+Node: Mode Iterators\7f1008954
+Node: Defining Mode Iterators\7f1009932
+Node: Substitutions\7f1011426
+Node: Examples\7f1013667
+Node: Code Iterators\7f1015115
+Node: Target Macros\7f1017372
+Node: Target Structure\7f1020395
+Node: Driver\7f1021664
+Node: Run-time Target\7f1045345
+Node: Per-Function Data\7f1052469
+Node: Storage Layout\7f1055232
+Node: Type Layout\7f1080646
+Node: Registers\7f1093603
+Node: Register Basics\7f1094577
+Node: Allocation Order\7f1100144
+Node: Values in Registers\7f1102165
+Node: Leaf Functions\7f1109654
+Node: Stack Registers\7f1112512
+Node: Register Classes\7f1113628
+Node: Old Constraints\7f1140340
+Node: Stack and Calling\7f1147491
+Node: Frame Layout\7f1148025
+Node: Exception Handling\7f1158871
+Node: Stack Checking\7f1165249
+Node: Frame Registers\7f1169636
+Node: Elimination\7f1176242
+Node: Stack Arguments\7f1180273
+Node: Register Arguments\7f1187076
+Node: Scalar Return\7f1202529
+Node: Aggregate Return\7f1208075
+Node: Caller Saves\7f1211734
+Node: Function Entry\7f1212912
+Node: Profiling\7f1225527
+Node: Tail Calls\7f1227226
+Node: Stack Smashing Protection\7f1228593
+Node: Varargs\7f1229705
+Node: Trampolines\7f1237665
+Node: Library Calls\7f1244331
+Node: Addressing Modes\7f1249181
+Node: Anchored Addresses\7f1265099
+Node: Condition Code\7f1267760
+Node: Costs\7f1276049
+Node: Scheduling\7f1289148
+Node: Sections\7f1307709
+Node: PIC\7f1322359
+Node: Assembler Format\7f1324349
+Node: File Framework\7f1325487
+Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS\7f1330393
+Node: Data Output\7f1333659
+Node: Uninitialized Data\7f1341418
+Node: Label Output\7f1346489
+Node: Initialization\7f1368156
+Node: Macros for Initialization\7f1374118
+Node: Instruction Output\7f1380570
+Node: Dispatch Tables\7f1389564
+Node: Exception Region Output\7f1393359
+Node: Alignment Output\7f1399119
+Node: Debugging Info\7f1403282
+Node: All Debuggers\7f1403952
+Node: DBX Options\7f1406807
+Node: DBX Hooks\7f1412256
+Node: File Names and DBX\7f1414182
+Node: SDB and DWARF\7f1416293
+Node: VMS Debug\7f1420285
+Node: Floating Point\7f1420855
+Node: Mode Switching\7f1425678
+Node: Target Attributes\7f1429604
+Node: Emulated TLS\7f1436368
+Node: MIPS Coprocessors\7f1439758
+Node: PCH Target\7f1441327
+Node: C++ ABI\7f1442848
+Node: Misc\7f1447467
+Ref: TARGET_SHIFT_TRUNCATION_MASK\7f1454838
+Node: Host Config\7f1495783
+Node: Host Common\7f1496851
+Node: Filesystem\7f1499230
+Node: Host Misc\7f1503345
+Node: Fragments\7f1505484
+Node: Target Fragment\7f1506679
+Node: Host Fragment\7f1512569
+Node: Collect2\7f1512809
+Node: Header Dirs\7f1515352
+Node: Type Information\7f1516775
+Node: GTY Options\7f1519066
+Node: GGC Roots\7f1529746
+Node: Files\7f1530466
+Node: Invoking the garbage collector\7f1533216
+Node: Plugins\7f1534269
+Node: Funding\7f1544634
+Node: GNU Project\7f1547121
+Node: Copying\7f1547770
+Node: GNU Free Documentation License\7f1585301
+Node: Contributors\7f1607710
+Node: Option Index\7f1644040
+Node: Concept Index\7f1644625
 \1f
 End Tag Table
index c3ba1ad..25abc3e 100644 (file)
@@ -1,5 +1,5 @@
 This is ld.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/binutils-2.19/ld/ld.texinfo.
+../../../../toolchain/android-toolchain/binutils-2.19/ld/ld.texinfo.
 
 START-INFO-DIR-ENTRY
 * Ld: (ld).                       The GNU linker.
@@ -7147,84 +7147,84 @@ LD Index
 
 \1f
 Tag Table:
-Node: Top\7f824
-Node: Overview\7f1595
-Node: Invocation\7f2709
-Node: Options\7f3117
-Node: Environment\7f85582
-Node: Scripts\7f87342
-Node: Basic Script Concepts\7f89076
-Node: Script Format\7f91783
-Node: Simple Example\7f92646
-Node: Simple Commands\7f95742
-Node: Entry Point\7f96193
-Node: File Commands\7f96952
-Node: Format Commands\7f100953
-Node: Miscellaneous Commands\7f102919
-Node: Assignments\7f106298
-Node: Simple Assignments\7f106789
-Node: PROVIDE\7f108525
-Node: PROVIDE_HIDDEN\7f109730
-Node: Source Code Reference\7f109974
-Node: SECTIONS\7f113554
-Node: Output Section Description\7f115445
-Node: Output Section Name\7f116498
-Node: Output Section Address\7f117374
-Node: Input Section\7f119023
-Node: Input Section Basics\7f119824
-Node: Input Section Wildcards\7f123042
-Node: Input Section Common\7f127775
-Node: Input Section Keep\7f129257
-Node: Input Section Example\7f129747
-Node: Output Section Data\7f130715
-Node: Output Section Keywords\7f133492
-Node: Output Section Discarding\7f137061
-Node: Output Section Attributes\7f138242
-Node: Output Section Type\7f139246
-Node: Output Section LMA\7f140400
-Node: Forced Output Alignment\7f142913
-Node: Forced Input Alignment\7f143181
-Node: Output Section Region\7f143566
-Node: Output Section Phdr\7f143996
-Node: Output Section Fill\7f144660
-Node: Overlay Description\7f145802
-Node: MEMORY\7f150105
-Node: PHDRS\7f154305
-Node: VERSION\7f159344
-Node: Expressions\7f167136
-Node: Constants\7f168014
-Node: Symbols\7f168575
-Node: Orphan Sections\7f169313
-Node: Location Counter\7f170477
-Node: Operators\7f174913
-Node: Evaluation\7f175835
-Node: Expression Section\7f177199
-Node: Builtin Functions\7f178688
-Node: Implicit Linker Scripts\7f186655
-Node: Machine Dependent\7f187430
-Node: H8/300\7f188446
-Node: i960\7f190071
-Node: M68HC11/68HC12\7f192172
-Node: ARM\7f193626
-Node: HPPA ELF32\7f200875
-Node: M68K\7f202498
-Node: MMIX\7f203407
-Node: MSP430\7f204572
-Node: PowerPC ELF32\7f205621
-Node: PowerPC64 ELF64\7f208235
-Node: SPU ELF\7f212651
-Node: TI COFF\7f215283
-Node: WIN32\7f215809
-Node: Xtensa\7f234166
-Node: BFD\7f237288
-Node: BFD outline\7f238743
-Node: BFD information loss\7f240029
-Node: Canonical format\7f242546
-Node: Reporting Bugs\7f246903
-Node: Bug Criteria\7f247597
-Node: Bug Reporting\7f248296
-Node: MRI\7f255335
-Node: GNU Free Documentation License\7f259978
-Node: LD Index\7f279695
+Node: Top\7f804
+Node: Overview\7f1575
+Node: Invocation\7f2689
+Node: Options\7f3097
+Node: Environment\7f85562
+Node: Scripts\7f87322
+Node: Basic Script Concepts\7f89056
+Node: Script Format\7f91763
+Node: Simple Example\7f92626
+Node: Simple Commands\7f95722
+Node: Entry Point\7f96173
+Node: File Commands\7f96932
+Node: Format Commands\7f100933
+Node: Miscellaneous Commands\7f102899
+Node: Assignments\7f106278
+Node: Simple Assignments\7f106769
+Node: PROVIDE\7f108505
+Node: PROVIDE_HIDDEN\7f109710
+Node: Source Code Reference\7f109954
+Node: SECTIONS\7f113534
+Node: Output Section Description\7f115425
+Node: Output Section Name\7f116478
+Node: Output Section Address\7f117354
+Node: Input Section\7f119003
+Node: Input Section Basics\7f119804
+Node: Input Section Wildcards\7f123022
+Node: Input Section Common\7f127755
+Node: Input Section Keep\7f129237
+Node: Input Section Example\7f129727
+Node: Output Section Data\7f130695
+Node: Output Section Keywords\7f133472
+Node: Output Section Discarding\7f137041
+Node: Output Section Attributes\7f138222
+Node: Output Section Type\7f139226
+Node: Output Section LMA\7f140380
+Node: Forced Output Alignment\7f142893
+Node: Forced Input Alignment\7f143161
+Node: Output Section Region\7f143546
+Node: Output Section Phdr\7f143976
+Node: Output Section Fill\7f144640
+Node: Overlay Description\7f145782
+Node: MEMORY\7f150085
+Node: PHDRS\7f154285
+Node: VERSION\7f159324
+Node: Expressions\7f167116
+Node: Constants\7f167994
+Node: Symbols\7f168555
+Node: Orphan Sections\7f169293
+Node: Location Counter\7f170457
+Node: Operators\7f174893
+Node: Evaluation\7f175815
+Node: Expression Section\7f177179
+Node: Builtin Functions\7f178668
+Node: Implicit Linker Scripts\7f186635
+Node: Machine Dependent\7f187410
+Node: H8/300\7f188426
+Node: i960\7f190051
+Node: M68HC11/68HC12\7f192152
+Node: ARM\7f193606
+Node: HPPA ELF32\7f200855
+Node: M68K\7f202478
+Node: MMIX\7f203387
+Node: MSP430\7f204552
+Node: PowerPC ELF32\7f205601
+Node: PowerPC64 ELF64\7f208215
+Node: SPU ELF\7f212631
+Node: TI COFF\7f215263
+Node: WIN32\7f215789
+Node: Xtensa\7f234146
+Node: BFD\7f237268
+Node: BFD outline\7f238723
+Node: BFD information loss\7f240009
+Node: Canonical format\7f242526
+Node: Reporting Bugs\7f246883
+Node: Bug Criteria\7f247577
+Node: Bug Reporting\7f248276
+Node: MRI\7f255315
+Node: GNU Free Documentation License\7f259958
+Node: LD Index\7f279675
 \1f
 End Tag Table
index b5eb857..061890e 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtbegin.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtbegin.o differ
index 0f0c789..165c77c 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crti.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crti.o differ
index 00efdcd..730d393 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtn.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtn.o differ
index b52155c..f7754cc 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcc.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcc.a differ
index ba106ea..8aee374 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcov.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcov.a differ
index 5d40406..e017aa2 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtbegin.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtbegin.o differ
index 678b4b7..59eb972 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtend.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtend.o differ
index 4899195..165c77c 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crti.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crti.o differ
index 554d0f6..730d393 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtn.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtn.o differ
index 684ce6b..8593c7f 100644 (file)
@@ -1,4 +1,4 @@
-SYSTEM_HEADER_DIR="/Volumes/android/toolbuild/arm-eabi-4.4.0/sysroot${sysroot_headers_suffix}/usr/include"
+SYSTEM_HEADER_DIR="/Volumes/project-jingyu/cupcake_rel_root${sysroot_headers_suffix}/usr/include"
 OTHER_FIXINCLUDES_DIRS=""
 FIXPROTO_DEFINES=""
 STMP_FIXPROTO=""
index 883e2dc..e017aa2 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtbegin.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtbegin.o differ
index 678b4b7..59eb972 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtend.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtend.o differ
index 0f0c789..165c77c 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crti.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crti.o differ
index 00efdcd..730d393 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtn.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtn.o differ
index 756afc6..bee78c4 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a differ
index 9464096..1f418e7 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcov.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcov.a differ
index 4f62277..2300787 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcc.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcc.a differ
index 2f6da3f..98551c2 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcov.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcov.a differ
index 5de1810..1a3ab0b 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtbegin.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtbegin.o differ
index 9347bdb..6e8da45 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crti.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crti.o differ
index e2323a2..6fdcc32 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtn.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtn.o differ
index 47a2399..9a3f0ea 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcc.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcc.a differ
index db66822..8bf305f 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcov.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcov.a differ
index b8dbcd2..68686c8 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtbegin.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtbegin.o differ
index 8bce296..178e510 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtend.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtend.o differ
index 877e028..6e8da45 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crti.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crti.o differ
index 25866d4..6fdcc32 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtn.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtn.o differ
index 1765456..68686c8 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtbegin.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtbegin.o differ
index 8bce296..178e510 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtend.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtend.o differ
index 9347bdb..6e8da45 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crti.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crti.o differ
index e2323a2..6fdcc32 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtn.o and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtn.o differ
index ed4fab4..9db9250 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcc.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcc.a differ
index 27f1ac6..63d41c1 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcov.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcov.a differ
index dc4c416..0be9411 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcc.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcc.a differ
index eff3491..234b4fe 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcov.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcov.a differ
index bb17218..d938329 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/libarm-elf-linux-sim.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/libarm-elf-linux-sim.a differ
index b1f2546..56c22a1 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/lib/libiberty.a and b/darwin-x86/toolchain/arm-eabi-4.4.0/lib/libiberty.a differ
index 66ababd..51778bc 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1 and b/darwin-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1 differ
index 1e77707..b74b9ff 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1plus and b/darwin-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1plus differ
index 72a92ce..ac13673 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/collect2 and b/darwin-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/collect2 differ
index 2520412..f24fd38 100755 (executable)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/install-tools/fixincl and b/darwin-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/install-tools/fixincl differ
index 18205bc..4d17a2f 100755 (executable)
@@ -53,7 +53,7 @@ if [ x$1 != x ] ; then
   prefix=$1
   shift
 else
-  prefix=/Volumes/android/toolbuild/arm-eabi-4.4.0
+  prefix=/usr/local
 fi
 
 # Allow for alternate isysroot in which to find headers
index 5e71e39..ea6f6cb 100644 (file)
@@ -187,7 +187,8 @@ Here is a summary of all the options, grouped by type.  Explanations are
 in the following sections.
 .IP "\fIOverall Options\fR" 4
 .IX Item "Overall Options"
-\&\fB\-c  \-S  \-E  \-o\fR \fIfile\fR  \fB\-combine  \-pipe  \-pass\-exit\-codes  
+\&\fB\-c  \-S  \-E  \-o\fR \fIfile\fR  \fB\-combine  \-no\-canonical\-prefixes  
+\&\-pipe  \-pass\-exit\-codes  
 \&\-x\fR \fIlanguage\fR  \fB\-v  \-###  \-\-help\fR[\fB=\fR\fIclass\fR[\fB,...\fR]]  \fB\-\-target\-help  
 \&\-\-version \-wrapper@\fR\fIfile\fR \fB\-fplugin=\fR\fIfile\fR \fB\-fplugin\-arg\-\fR\fIname\fR\fB=\fR\fIarg\fR
 .IP "\fIC Language Options\fR" 4
@@ -372,7 +373,7 @@ in the following sections.
 \&\-freciprocal\-math \-fregmove \-frename\-registers \-freorder\-blocks 
 \&\-freorder\-blocks\-and\-partition \-freorder\-functions 
 \&\-frerun\-cse\-after\-loop \-freschedule\-modulo\-scheduled\-loops 
-\&\-frounding\-math \-frtl\-abstract\-sequences \-fsched2\-use\-superblocks 
+\&\-frounding\-math \-fsched2\-use\-superblocks 
 \&\-fsched2\-use\-traces \-fsched\-spec\-load \-fsched\-spec\-load\-dangerous 
 \&\-fsched\-stalled\-insns\-dep[=\fR\fIn\fR\fB] \-fsched\-stalled\-insns[=\fR\fIn\fR\fB] 
 \&\-fschedule\-insns \-fschedule\-insns2 \-fsection\-anchors \-fsee 
@@ -1275,6 +1276,11 @@ by \fB\-O3\fR by using:
 \&        diff /tmp/O2-opts /tmp/O3-opts | grep enabled
 .Ve
 .RE
+.IP "\fB\-no\-canonical\-prefixes\fR" 4
+.IX Item "-no-canonical-prefixes"
+Do not expand any symbolic links, resolve references to \fB/../\fR
+or \fB/./\fR, or make the path absolute when generating a relative
+prefix.
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 Display the version number and copyrights of the invoked \s-1GCC\s0.
@@ -6303,13 +6309,6 @@ disable all \s-1GCC\s0 optimizations that are affected by rounding mode.
 Future versions of \s-1GCC\s0 may provide finer control of this setting
 using C99's \f(CW\*(C`FENV_ACCESS\*(C'\fR pragma.  This command line option
 will be used to specify the default state for \f(CW\*(C`FENV_ACCESS\*(C'\fR.
-.IP "\fB\-frtl\-abstract\-sequences\fR" 4
-.IX Item "-frtl-abstract-sequences"
-It is a size optimization method. This option is to find identical
-sequences of code, which can be turned into pseudo-procedures  and
-then  replace  all  occurrences with  calls to  the  newly created
-subroutine. It is kind of an opposite of \fB\-finline\-functions\fR.
-This optimization runs at \s-1RTL\s0 level.
 .IP "\fB\-fsignaling\-nans\fR" 4
 .IX Item "-fsignaling-nans"
 Compile code assuming that \s-1IEEE\s0 signaling NaNs may generate user-visible
index 5e71e39..ea6f6cb 100644 (file)
@@ -187,7 +187,8 @@ Here is a summary of all the options, grouped by type.  Explanations are
 in the following sections.
 .IP "\fIOverall Options\fR" 4
 .IX Item "Overall Options"
-\&\fB\-c  \-S  \-E  \-o\fR \fIfile\fR  \fB\-combine  \-pipe  \-pass\-exit\-codes  
+\&\fB\-c  \-S  \-E  \-o\fR \fIfile\fR  \fB\-combine  \-no\-canonical\-prefixes  
+\&\-pipe  \-pass\-exit\-codes  
 \&\-x\fR \fIlanguage\fR  \fB\-v  \-###  \-\-help\fR[\fB=\fR\fIclass\fR[\fB,...\fR]]  \fB\-\-target\-help  
 \&\-\-version \-wrapper@\fR\fIfile\fR \fB\-fplugin=\fR\fIfile\fR \fB\-fplugin\-arg\-\fR\fIname\fR\fB=\fR\fIarg\fR
 .IP "\fIC Language Options\fR" 4
@@ -372,7 +373,7 @@ in the following sections.
 \&\-freciprocal\-math \-fregmove \-frename\-registers \-freorder\-blocks 
 \&\-freorder\-blocks\-and\-partition \-freorder\-functions 
 \&\-frerun\-cse\-after\-loop \-freschedule\-modulo\-scheduled\-loops 
-\&\-frounding\-math \-frtl\-abstract\-sequences \-fsched2\-use\-superblocks 
+\&\-frounding\-math \-fsched2\-use\-superblocks 
 \&\-fsched2\-use\-traces \-fsched\-spec\-load \-fsched\-spec\-load\-dangerous 
 \&\-fsched\-stalled\-insns\-dep[=\fR\fIn\fR\fB] \-fsched\-stalled\-insns[=\fR\fIn\fR\fB] 
 \&\-fschedule\-insns \-fschedule\-insns2 \-fsection\-anchors \-fsee 
@@ -1275,6 +1276,11 @@ by \fB\-O3\fR by using:
 \&        diff /tmp/O2-opts /tmp/O3-opts | grep enabled
 .Ve
 .RE
+.IP "\fB\-no\-canonical\-prefixes\fR" 4
+.IX Item "-no-canonical-prefixes"
+Do not expand any symbolic links, resolve references to \fB/../\fR
+or \fB/./\fR, or make the path absolute when generating a relative
+prefix.
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 Display the version number and copyrights of the invoked \s-1GCC\s0.
@@ -6303,13 +6309,6 @@ disable all \s-1GCC\s0 optimizations that are affected by rounding mode.
 Future versions of \s-1GCC\s0 may provide finer control of this setting
 using C99's \f(CW\*(C`FENV_ACCESS\*(C'\fR pragma.  This command line option
 will be used to specify the default state for \f(CW\*(C`FENV_ACCESS\*(C'\fR.
-.IP "\fB\-frtl\-abstract\-sequences\fR" 4
-.IX Item "-frtl-abstract-sequences"
-It is a size optimization method. This option is to find identical
-sequences of code, which can be turned into pseudo-procedures  and
-then  replace  all  occurrences with  calls to  the  newly created
-subroutine. It is kind of an opposite of \fB\-finline\-functions\fR.
-This optimization runs at \s-1RTL\s0 level.
 .IP "\fB\-fsignaling\-nans\fR" 4
 .IX Item "-fsignaling-nans"
 Compile code assuming that \s-1IEEE\s0 signaling NaNs may generate user-visible
diff --git a/darwin-x86/toolchain/arm-eabi-4.4.0/share/info/bfd.info b/darwin-x86/toolchain/arm-eabi-4.4.0/share/info/bfd.info
new file mode 100644 (file)
index 0000000..ee45d4b
--- /dev/null
@@ -0,0 +1,10511 @@
+This is bfd.info, produced by makeinfo version 4.8 from
+../../../../../toolchain/android-toolchain/gdb-6.6/bfd/doc/bfd.texinfo.
+
+START-INFO-DIR-ENTRY
+* Bfd: (bfd).                   The Binary File Descriptor library.
+END-INFO-DIR-ENTRY
+
+   This file documents the BFD library.
+
+   Copyright (C) 1991, 2000, 2001, 2003, 2006 Free Software Foundation,
+Inc.
+
+   Permission is granted to copy, distribute and/or modify this document
+     under the terms of the GNU Free Documentation License, Version 1.1
+     or any later version published by the Free Software Foundation;
+   with no Invariant Sections, with no Front-Cover Texts, and with no
+    Back-Cover Texts.  A copy of the license is included in the
+section entitled "GNU Free Documentation License".
+
+\1f
+File: bfd.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
+
+   This file documents the binary file descriptor library libbfd.
+
+* Menu:
+
+* Overview::                   Overview of BFD
+* BFD front end::              BFD front end
+* BFD back ends::              BFD back ends
+* GNU Free Documentation License::  GNU Free Documentation License
+* BFD Index::          BFD Index
+
+\1f
+File: bfd.info,  Node: Overview,  Next: BFD front end,  Prev: Top,  Up: Top
+
+1 Introduction
+**************
+
+BFD is a package which allows applications to use the same routines to
+operate on object files whatever the object file format.  A new object
+file format can be supported simply by creating a new BFD back end and
+adding it to the library.
+
+   BFD is split into two parts: the front end, and the back ends (one
+for each object file format).
+   * The front end of BFD provides the interface to the user. It manages
+     memory and various canonical data structures. The front end also
+     decides which back end to use and when to call back end routines.
+
+   * The back ends provide BFD its view of the real world. Each back
+     end provides a set of calls which the BFD front end can use to
+     maintain its canonical form. The back ends also may keep around
+     information for their own use, for greater efficiency.
+
+* Menu:
+
+* History::                    History
+* How It Works::               How It Works
+* What BFD Version 2 Can Do::  What BFD Version 2 Can Do
+
+\1f
+File: bfd.info,  Node: History,  Next: How It Works,  Prev: Overview,  Up: Overview
+
+1.1 History
+===========
+
+One spur behind BFD was the desire, on the part of the GNU 960 team at
+Intel Oregon, for interoperability of applications on their COFF and
+b.out file formats.  Cygnus was providing GNU support for the team, and
+was contracted to provide the required functionality.
+
+   The name came from a conversation David Wallace was having with
+Richard Stallman about the library: RMS said that it would be quite
+hard--David said "BFD".  Stallman was right, but the name stuck.
+
+   At the same time, Ready Systems wanted much the same thing, but for
+different object file formats: IEEE-695, Oasys, Srecords, a.out and 68k
+coff.
+
+   BFD was first implemented by members of Cygnus Support; Steve
+Chamberlain (`sac@cygnus.com'), John Gilmore (`gnu@cygnus.com'), K.
+Richard Pixley (`rich@cygnus.com') and David Henkel-Wallace
+(`gumby@cygnus.com').
+
+\1f
+File: bfd.info,  Node: How It Works,  Next: What BFD Version 2 Can Do,  Prev: History,  Up: Overview
+
+1.2 How To Use BFD
+==================
+
+To use the library, include `bfd.h' and link with `libbfd.a'.
+
+   BFD provides a common interface to the parts of an object file for a
+calling application.
+
+   When an application successfully opens a target file (object,
+archive, or whatever), a pointer to an internal structure is returned.
+This pointer points to a structure called `bfd', described in `bfd.h'.
+Our convention is to call this pointer a BFD, and instances of it
+within code `abfd'.  All operations on the target object file are
+applied as methods to the BFD.  The mapping is defined within `bfd.h'
+in a set of macros, all beginning with `bfd_' to reduce namespace
+pollution.
+
+   For example, this sequence does what you would probably expect:
+return the number of sections in an object file attached to a BFD
+`abfd'.
+
+     #include "bfd.h"
+
+     unsigned int number_of_sections (abfd)
+     bfd *abfd;
+     {
+       return bfd_count_sections (abfd);
+     }
+
+   The abstraction used within BFD is that an object file has:
+
+   * a header,
+
+   * a number of sections containing raw data (*note Sections::),
+
+   * a set of relocations (*note Relocations::), and
+
+   * some symbol information (*note Symbols::).
+   Also, BFDs opened for archives have the additional attribute of an
+index and contain subordinate BFDs. This approach is fine for a.out and
+coff, but loses efficiency when applied to formats such as S-records and
+IEEE-695.
+
+\1f
+File: bfd.info,  Node: What BFD Version 2 Can Do,  Prev: How It Works,  Up: Overview
+
+1.3 What BFD Version 2 Can Do
+=============================
+
+When an object file is opened, BFD subroutines automatically determine
+the format of the input object file.  They then build a descriptor in
+memory with pointers to routines that will be used to access elements of
+the object file's data structures.
+
+   As different information from the object files is required, BFD
+reads from different sections of the file and processes them.  For
+example, a very common operation for the linker is processing symbol
+tables.  Each BFD back end provides a routine for converting between
+the object file's representation of symbols and an internal canonical
+format. When the linker asks for the symbol table of an object file, it
+calls through a memory pointer to the routine from the relevant BFD
+back end which reads and converts the table into a canonical form.  The
+linker then operates upon the canonical form. When the link is finished
+and the linker writes the output file's symbol table, another BFD back
+end routine is called to take the newly created symbol table and
+convert it into the chosen output format.
+
+* Menu:
+
+* BFD information loss::       Information Loss
+* Canonical format::           The BFD canonical object-file format
+
+\1f
+File: bfd.info,  Node: BFD information loss,  Next: Canonical format,  Up: What BFD Version 2 Can Do
+
+1.3.1 Information Loss
+----------------------
+
+_Information can be lost during output._ The output formats supported
+by BFD do not provide identical facilities, and information which can
+be described in one form has nowhere to go in another format. One
+example of this is alignment information in `b.out'. There is nowhere
+in an `a.out' format file to store alignment information on the
+contained data, so when a file is linked from `b.out' and an `a.out'
+image is produced, alignment information will not propagate to the
+output file. (The linker will still use the alignment information
+internally, so the link is performed correctly).
+
+   Another example is COFF section names. COFF files may contain an
+unlimited number of sections, each one with a textual section name. If
+the target of the link is a format which does not have many sections
+(e.g., `a.out') or has sections without names (e.g., the Oasys format),
+the link cannot be done simply. You can circumvent this problem by
+describing the desired input-to-output section mapping with the linker
+command language.
+
+   _Information can be lost during canonicalization._ The BFD internal
+canonical form of the external formats is not exhaustive; there are
+structures in input formats for which there is no direct representation
+internally.  This means that the BFD back ends cannot maintain all
+possible data richness through the transformation between external to
+internal and back to external formats.
+
+   This limitation is only a problem when an application reads one
+format and writes another.  Each BFD back end is responsible for
+maintaining as much data as possible, and the internal BFD canonical
+form has structures which are opaque to the BFD core, and exported only
+to the back ends. When a file is read in one format, the canonical form
+is generated for BFD and the application. At the same time, the back
+end saves away any information which may otherwise be lost. If the data
+is then written back in the same format, the back end routine will be
+able to use the canonical form provided by the BFD core as well as the
+information it prepared earlier.  Since there is a great deal of
+commonality between back ends, there is no information lost when
+linking or copying big endian COFF to little endian COFF, or `a.out' to
+`b.out'.  When a mixture of formats is linked, the information is only
+lost from the files whose format differs from the destination.
+
+\1f
+File: bfd.info,  Node: Canonical format,  Prev: BFD information loss,  Up: What BFD Version 2 Can Do
+
+1.3.2 The BFD canonical object-file format
+------------------------------------------
+
+The greatest potential for loss of information occurs when there is the
+least overlap between the information provided by the source format,
+that stored by the canonical format, and that needed by the destination
+format. A brief description of the canonical form may help you
+understand which kinds of data you can count on preserving across
+conversions.  
+
+_files_
+     Information stored on a per-file basis includes target machine
+     architecture, particular implementation format type, a demand
+     pageable bit, and a write protected bit.  Information like Unix
+     magic numbers is not stored here--only the magic numbers' meaning,
+     so a `ZMAGIC' file would have both the demand pageable bit and the
+     write protected text bit set.  The byte order of the target is
+     stored on a per-file basis, so that big- and little-endian object
+     files may be used with one another.
+
+_sections_
+     Each section in the input file contains the name of the section,
+     the section's original address in the object file, size and
+     alignment information, various flags, and pointers into other BFD
+     data structures.
+
+_symbols_
+     Each symbol contains a pointer to the information for the object
+     file which originally defined it, its name, its value, and various
+     flag bits.  When a BFD back end reads in a symbol table, it
+     relocates all symbols to make them relative to the base of the
+     section where they were defined.  Doing this ensures that each
+     symbol points to its containing section.  Each symbol also has a
+     varying amount of hidden private data for the BFD back end.  Since
+     the symbol points to the original file, the private data format
+     for that symbol is accessible.  `ld' can operate on a collection
+     of symbols of wildly different formats without problems.
+
+     Normal global and simple local symbols are maintained on output,
+     so an output file (no matter its format) will retain symbols
+     pointing to functions and to global, static, and common variables.
+     Some symbol information is not worth retaining; in `a.out', type
+     information is stored in the symbol table as long symbol names.
+     This information would be useless to most COFF debuggers; the
+     linker has command line switches to allow users to throw it away.
+
+     There is one word of type information within the symbol, so if the
+     format supports symbol type information within symbols (for
+     example, COFF, IEEE, Oasys) and the type is simple enough to fit
+     within one word (nearly everything but aggregates), the
+     information will be preserved.
+
+_relocation level_
+     Each canonical BFD relocation record contains a pointer to the
+     symbol to relocate to, the offset of the data to relocate, the
+     section the data is in, and a pointer to a relocation type
+     descriptor. Relocation is performed by passing messages through
+     the relocation type descriptor and the symbol pointer. Therefore,
+     relocations can be performed on output data using a relocation
+     method that is only available in one of the input formats. For
+     instance, Oasys provides a byte relocation format.  A relocation
+     record requesting this relocation type would point indirectly to a
+     routine to perform this, so the relocation may be performed on a
+     byte being written to a 68k COFF file, even though 68k COFF has no
+     such relocation type.
+
+_line numbers_
+     Object formats can contain, for debugging purposes, some form of
+     mapping between symbols, source line numbers, and addresses in the
+     output file.  These addresses have to be relocated along with the
+     symbol information.  Each symbol with an associated list of line
+     number records points to the first record of the list.  The head
+     of a line number list consists of a pointer to the symbol, which
+     allows finding out the address of the function whose line number
+     is being described. The rest of the list is made up of pairs:
+     offsets into the section and line numbers. Any format which can
+     simply derive this information can pass it successfully between
+     formats (COFF, IEEE and Oasys).
+
+\1f
+File: bfd.info,  Node: BFD front end,  Next: BFD back ends,  Prev: Overview,  Up: Top
+
+2 BFD Front End
+***************
+
+2.1 `typedef bfd'
+=================
+
+A BFD has type `bfd'; objects of this type are the cornerstone of any
+application using BFD. Using BFD consists of making references though
+the BFD and to data in the BFD.
+
+   Here is the structure that defines the type `bfd'.  It contains the
+major data about the file and pointers to the rest of the data.
+
+
+     struct bfd
+     {
+       /* A unique identifier of the BFD  */
+       unsigned int id;
+
+       /* The filename the application opened the BFD with.  */
+       const char *filename;
+
+       /* A pointer to the target jump table.  */
+       const struct bfd_target *xvec;
+
+       /* The IOSTREAM, and corresponding IO vector that provide access
+          to the file backing the BFD.  */
+       void *iostream;
+       const struct bfd_iovec *iovec;
+
+       /* Is the file descriptor being cached?  That is, can it be closed as
+          needed, and re-opened when accessed later?  */
+       bfd_boolean cacheable;
+
+       /* Marks whether there was a default target specified when the
+          BFD was opened. This is used to select which matching algorithm
+          to use to choose the back end.  */
+       bfd_boolean target_defaulted;
+
+       /* The caching routines use these to maintain a
+          least-recently-used list of BFDs.  */
+       struct bfd *lru_prev, *lru_next;
+
+       /* When a file is closed by the caching routines, BFD retains
+          state information on the file here...  */
+       ufile_ptr where;
+
+       /* ... and here: (``once'' means at least once).  */
+       bfd_boolean opened_once;
+
+       /* Set if we have a locally maintained mtime value, rather than
+          getting it from the file each time.  */
+       bfd_boolean mtime_set;
+
+       /* File modified time, if mtime_set is TRUE.  */
+       long mtime;
+
+       /* Reserved for an unimplemented file locking extension.  */
+       int ifd;
+
+       /* The format which belongs to the BFD. (object, core, etc.)  */
+       bfd_format format;
+
+       /* The direction with which the BFD was opened.  */
+       enum bfd_direction
+         {
+           no_direction = 0,
+           read_direction = 1,
+           write_direction = 2,
+           both_direction = 3
+         }
+       direction;
+
+       /* Format_specific flags.  */
+       flagword flags;
+
+       /* Currently my_archive is tested before adding origin to
+          anything. I believe that this can become always an add of
+          origin, with origin set to 0 for non archive files.  */
+       ufile_ptr origin;
+
+       /* Remember when output has begun, to stop strange things
+          from happening.  */
+       bfd_boolean output_has_begun;
+
+       /* A hash table for section names.  */
+       struct bfd_hash_table section_htab;
+
+       /* Pointer to linked list of sections.  */
+       struct bfd_section *sections;
+
+       /* The last section on the section list.  */
+       struct bfd_section *section_last;
+
+       /* The number of sections.  */
+       unsigned int section_count;
+
+       /* Stuff only useful for object files:
+          The start address.  */
+       bfd_vma start_address;
+
+       /* Used for input and output.  */
+       unsigned int symcount;
+
+       /* Symbol table for output BFD (with symcount entries).  */
+       struct bfd_symbol  **outsymbols;
+
+       /* Used for slurped dynamic symbol tables.  */
+       unsigned int dynsymcount;
+
+       /* Pointer to structure which contains architecture information.  */
+       const struct bfd_arch_info *arch_info;
+
+       /* Flag set if symbols from this BFD should not be exported.  */
+       bfd_boolean no_export;
+
+       /* Stuff only useful for archives.  */
+       void *arelt_data;
+       struct bfd *my_archive;      /* The containing archive BFD.  */
+       struct bfd *next;            /* The next BFD in the archive.  */
+       struct bfd *archive_head;    /* The first BFD in the archive.  */
+       bfd_boolean has_armap;
+
+       /* A chain of BFD structures involved in a link.  */
+       struct bfd *link_next;
+
+       /* A field used by _bfd_generic_link_add_archive_symbols.  This will
+          be used only for archive elements.  */
+       int archive_pass;
+
+       /* Used by the back end to hold private data.  */
+       union
+         {
+           struct aout_data_struct *aout_data;
+           struct artdata *aout_ar_data;
+           struct _oasys_data *oasys_obj_data;
+           struct _oasys_ar_data *oasys_ar_data;
+           struct coff_tdata *coff_obj_data;
+           struct pe_tdata *pe_obj_data;
+           struct xcoff_tdata *xcoff_obj_data;
+           struct ecoff_tdata *ecoff_obj_data;
+           struct ieee_data_struct *ieee_data;
+           struct ieee_ar_data_struct *ieee_ar_data;
+           struct srec_data_struct *srec_data;
+           struct ihex_data_struct *ihex_data;
+           struct tekhex_data_struct *tekhex_data;
+           struct elf_obj_tdata *elf_obj_data;
+           struct nlm_obj_tdata *nlm_obj_data;
+           struct bout_data_struct *bout_data;
+           struct mmo_data_struct *mmo_data;
+           struct sun_core_struct *sun_core_data;
+           struct sco5_core_struct *sco5_core_data;
+           struct trad_core_struct *trad_core_data;
+           struct som_data_struct *som_data;
+           struct hpux_core_struct *hpux_core_data;
+           struct hppabsd_core_struct *hppabsd_core_data;
+           struct sgi_core_struct *sgi_core_data;
+           struct lynx_core_struct *lynx_core_data;
+           struct osf_core_struct *osf_core_data;
+           struct cisco_core_struct *cisco_core_data;
+           struct versados_data_struct *versados_data;
+           struct netbsd_core_struct *netbsd_core_data;
+           struct mach_o_data_struct *mach_o_data;
+           struct mach_o_fat_data_struct *mach_o_fat_data;
+           struct bfd_pef_data_struct *pef_data;
+           struct bfd_pef_xlib_data_struct *pef_xlib_data;
+           struct bfd_sym_data_struct *sym_data;
+           void *any;
+         }
+       tdata;
+
+       /* Used by the application to hold private data.  */
+       void *usrdata;
+
+       /* Where all the allocated stuff under this BFD goes.  This is a
+          struct objalloc *, but we use void * to avoid requiring the inclusion
+          of objalloc.h.  */
+       void *memory;
+     };
+
+2.2 Error reporting
+===================
+
+Most BFD functions return nonzero on success (check their individual
+documentation for precise semantics).  On an error, they call
+`bfd_set_error' to set an error condition that callers can check by
+calling `bfd_get_error'.  If that returns `bfd_error_system_call', then
+check `errno'.
+
+   The easiest way to report a BFD error to the user is to use
+`bfd_perror'.
+
+2.2.1 Type `bfd_error_type'
+---------------------------
+
+The values returned by `bfd_get_error' are defined by the enumerated
+type `bfd_error_type'.
+
+
+     typedef enum bfd_error
+     {
+       bfd_error_no_error = 0,
+       bfd_error_system_call,
+       bfd_error_invalid_target,
+       bfd_error_wrong_format,
+       bfd_error_wrong_object_format,
+       bfd_error_invalid_operation,
+       bfd_error_no_memory,
+       bfd_error_no_symbols,
+       bfd_error_no_armap,
+       bfd_error_no_more_archived_files,
+       bfd_error_malformed_archive,
+       bfd_error_file_not_recognized,
+       bfd_error_file_ambiguously_recognized,
+       bfd_error_no_contents,
+       bfd_error_nonrepresentable_section,
+       bfd_error_no_debug_section,
+       bfd_error_bad_value,
+       bfd_error_file_truncated,
+       bfd_error_file_too_big,
+       bfd_error_on_input,
+       bfd_error_invalid_error_code
+     }
+     bfd_error_type;
+   
+2.2.1.1 `bfd_get_error'
+.......................
+
+*Synopsis*
+     bfd_error_type bfd_get_error (void);
+   *Description*
+Return the current BFD error condition.
+
+2.2.1.2 `bfd_set_error'
+.......................
+
+*Synopsis*
+     void bfd_set_error (bfd_error_type error_tag, ...);
+   *Description*
+Set the BFD error condition to be ERROR_TAG.  If ERROR_TAG is
+bfd_error_on_input, then this function takes two more parameters, the
+input bfd where the error occurred, and the bfd_error_type error.
+
+2.2.1.3 `bfd_errmsg'
+....................
+
+*Synopsis*
+     const char *bfd_errmsg (bfd_error_type error_tag);
+   *Description*
+Return a string describing the error ERROR_TAG, or the system error if
+ERROR_TAG is `bfd_error_system_call'.
+
+2.2.1.4 `bfd_perror'
+....................
+
+*Synopsis*
+     void bfd_perror (const char *message);
+   *Description*
+Print to the standard error stream a string describing the last BFD
+error that occurred, or the last system error if the last BFD error was
+a system call failure.  If MESSAGE is non-NULL and non-empty, the error
+string printed is preceded by MESSAGE, a colon, and a space.  It is
+followed by a newline.
+
+2.2.2 BFD error handler
+-----------------------
+
+Some BFD functions want to print messages describing the problem.  They
+call a BFD error handler function.  This function may be overridden by
+the program.
+
+   The BFD error handler acts like printf.
+
+
+     typedef void (*bfd_error_handler_type) (const char *, ...);
+   
+2.2.2.1 `bfd_set_error_handler'
+...............................
+
+*Synopsis*
+     bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
+   *Description*
+Set the BFD error handler function.  Returns the previous function.
+
+2.2.2.2 `bfd_set_error_program_name'
+....................................
+
+*Synopsis*
+     void bfd_set_error_program_name (const char *);
+   *Description*
+Set the program name to use when printing a BFD error.  This is printed
+before the error message followed by a colon and space.  The string
+must not be changed after it is passed to this function.
+
+2.2.2.3 `bfd_get_error_handler'
+...............................
+
+*Synopsis*
+     bfd_error_handler_type bfd_get_error_handler (void);
+   *Description*
+Return the BFD error handler function.
+
+2.3 Miscellaneous
+=================
+
+2.3.1 Miscellaneous functions
+-----------------------------
+
+2.3.1.1 `bfd_get_reloc_upper_bound'
+...................................
+
+*Synopsis*
+     long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
+   *Description*
+Return the number of bytes required to store the relocation information
+associated with section SECT attached to bfd ABFD.  If an error occurs,
+return -1.
+
+2.3.1.2 `bfd_canonicalize_reloc'
+................................
+
+*Synopsis*
+     long bfd_canonicalize_reloc
+        (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
+   *Description*
+Call the back end associated with the open BFD ABFD and translate the
+external form of the relocation information attached to SEC into the
+internal canonical form.  Place the table into memory at LOC, which has
+been preallocated, usually by a call to `bfd_get_reloc_upper_bound'.
+Returns the number of relocs, or -1 on error.
+
+   The SYMS table is also needed for horrible internal magic reasons.
+
+2.3.1.3 `bfd_set_reloc'
+.......................
+
+*Synopsis*
+     void bfd_set_reloc
+        (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
+   *Description*
+Set the relocation pointer and count within section SEC to the values
+REL and COUNT.  The argument ABFD is ignored.
+
+2.3.1.4 `bfd_set_file_flags'
+............................
+
+*Synopsis*
+     bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
+   *Description*
+Set the flag word in the BFD ABFD to the value FLAGS.
+
+   Possible errors are:
+   * `bfd_error_wrong_format' - The target bfd was not of object format.
+
+   * `bfd_error_invalid_operation' - The target bfd was open for
+     reading.
+
+   * `bfd_error_invalid_operation' - The flag word contained a bit
+     which was not applicable to the type of file.  E.g., an attempt
+     was made to set the `D_PAGED' bit on a BFD format which does not
+     support demand paging.
+
+2.3.1.5 `bfd_get_arch_size'
+...........................
+
+*Synopsis*
+     int bfd_get_arch_size (bfd *abfd);
+   *Description*
+Returns the architecture address size, in bits, as determined by the
+object file's format.  For ELF, this information is included in the
+header.
+
+   *Returns*
+Returns the arch size in bits if known, `-1' otherwise.
+
+2.3.1.6 `bfd_get_sign_extend_vma'
+.................................
+
+*Synopsis*
+     int bfd_get_sign_extend_vma (bfd *abfd);
+   *Description*
+Indicates if the target architecture "naturally" sign extends an
+address.  Some architectures implicitly sign extend address values when
+they are converted to types larger than the size of an address.  For
+instance, bfd_get_start_address() will return an address sign extended
+to fill a bfd_vma when this is the case.
+
+   *Returns*
+Returns `1' if the target architecture is known to sign extend
+addresses, `0' if the target architecture is known to not sign extend
+addresses, and `-1' otherwise.
+
+2.3.1.7 `bfd_set_start_address'
+...............................
+
+*Synopsis*
+     bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
+   *Description*
+Make VMA the entry point of output BFD ABFD.
+
+   *Returns*
+Returns `TRUE' on success, `FALSE' otherwise.
+
+2.3.1.8 `bfd_get_gp_size'
+.........................
+
+*Synopsis*
+     unsigned int bfd_get_gp_size (bfd *abfd);
+   *Description*
+Return the maximum size of objects to be optimized using the GP
+register under MIPS ECOFF.  This is typically set by the `-G' argument
+to the compiler, assembler or linker.
+
+2.3.1.9 `bfd_set_gp_size'
+.........................
+
+*Synopsis*
+     void bfd_set_gp_size (bfd *abfd, unsigned int i);
+   *Description*
+Set the maximum size of objects to be optimized using the GP register
+under ECOFF or MIPS ELF.  This is typically set by the `-G' argument to
+the compiler, assembler or linker.
+
+2.3.1.10 `bfd_scan_vma'
+.......................
+
+*Synopsis*
+     bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
+   *Description*
+Convert, like `strtoul', a numerical expression STRING into a `bfd_vma'
+integer, and return that integer.  (Though without as many bells and
+whistles as `strtoul'.)  The expression is assumed to be unsigned
+(i.e., positive).  If given a BASE, it is used as the base for
+conversion.  A base of 0 causes the function to interpret the string in
+hex if a leading "0x" or "0X" is found, otherwise in octal if a leading
+zero is found, otherwise in decimal.
+
+   If the value would overflow, the maximum `bfd_vma' value is returned.
+
+2.3.1.11 `bfd_copy_private_header_data'
+.......................................
+
+*Synopsis*
+     bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
+   *Description*
+Copy private BFD header information from the BFD IBFD to the the BFD
+OBFD.  This copies information that may require sections to exist, but
+does not require symbol tables.  Return `true' on success, `false' on
+error.  Possible error returns are:
+
+   * `bfd_error_no_memory' - Not enough memory exists to create private
+     data for OBFD.
+
+     #define bfd_copy_private_header_data(ibfd, obfd) \
+          BFD_SEND (obfd, _bfd_copy_private_header_data, \
+                    (ibfd, obfd))
+
+2.3.1.12 `bfd_copy_private_bfd_data'
+....................................
+
+*Synopsis*
+     bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
+   *Description*
+Copy private BFD information from the BFD IBFD to the the BFD OBFD.
+Return `TRUE' on success, `FALSE' on error.  Possible error returns are:
+
+   * `bfd_error_no_memory' - Not enough memory exists to create private
+     data for OBFD.
+
+     #define bfd_copy_private_bfd_data(ibfd, obfd) \
+          BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
+                    (ibfd, obfd))
+
+2.3.1.13 `bfd_merge_private_bfd_data'
+.....................................
+
+*Synopsis*
+     bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
+   *Description*
+Merge private BFD information from the BFD IBFD to the the output file
+BFD OBFD when linking.  Return `TRUE' on success, `FALSE' on error.
+Possible error returns are:
+
+   * `bfd_error_no_memory' - Not enough memory exists to create private
+     data for OBFD.
+
+     #define bfd_merge_private_bfd_data(ibfd, obfd) \
+          BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
+                    (ibfd, obfd))
+
+2.3.1.14 `bfd_set_private_flags'
+................................
+
+*Synopsis*
+     bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
+   *Description*
+Set private BFD flag information in the BFD ABFD.  Return `TRUE' on
+success, `FALSE' on error.  Possible error returns are:
+
+   * `bfd_error_no_memory' - Not enough memory exists to create private
+     data for OBFD.
+
+     #define bfd_set_private_flags(abfd, flags) \
+          BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
+
+2.3.1.15 `Other functions'
+..........................
+
+*Description*
+The following functions exist but have not yet been documented.
+     #define bfd_sizeof_headers(abfd, info) \
+            BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
+
+     #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
+            BFD_SEND (abfd, _bfd_find_nearest_line, \
+                      (abfd, sec, syms, off, file, func, line))
+
+     #define bfd_find_line(abfd, syms, sym, file, line) \
+            BFD_SEND (abfd, _bfd_find_line, \
+                      (abfd, syms, sym, file, line))
+
+     #define bfd_find_inliner_info(abfd, file, func, line) \
+            BFD_SEND (abfd, _bfd_find_inliner_info, \
+                      (abfd, file, func, line))
+
+     #define bfd_debug_info_start(abfd) \
+            BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
+
+     #define bfd_debug_info_end(abfd) \
+            BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
+
+     #define bfd_debug_info_accumulate(abfd, section) \
+            BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
+
+     #define bfd_stat_arch_elt(abfd, stat) \
+            BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
+
+     #define bfd_update_armap_timestamp(abfd) \
+            BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
+
+     #define bfd_set_arch_mach(abfd, arch, mach)\
+            BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
+
+     #define bfd_relax_section(abfd, section, link_info, again) \
+            BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
+
+     #define bfd_gc_sections(abfd, link_info) \
+            BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
+
+     #define bfd_merge_sections(abfd, link_info) \
+            BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
+
+     #define bfd_is_group_section(abfd, sec) \
+            BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
+
+     #define bfd_discard_group(abfd, sec) \
+            BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
+
+     #define bfd_link_hash_table_create(abfd) \
+            BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
+
+     #define bfd_link_hash_table_free(abfd, hash) \
+            BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
+
+     #define bfd_link_add_symbols(abfd, info) \
+            BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
+
+     #define bfd_link_just_syms(abfd, sec, info) \
+            BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
+
+     #define bfd_final_link(abfd, info) \
+            BFD_SEND (abfd, _bfd_final_link, (abfd, info))
+
+     #define bfd_free_cached_info(abfd) \
+            BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
+
+     #define bfd_get_dynamic_symtab_upper_bound(abfd) \
+            BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
+
+     #define bfd_print_private_bfd_data(abfd, file)\
+            BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
+
+     #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
+            BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
+
+     #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
+            BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
+                                                        dyncount, dynsyms, ret))
+
+     #define bfd_get_dynamic_reloc_upper_bound(abfd) \
+            BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
+
+     #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
+            BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
+
+     extern bfd_byte *bfd_get_relocated_section_contents
+       (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
+        bfd_boolean, asymbol **);
+
+2.3.1.16 `bfd_alt_mach_code'
+............................
+
+*Synopsis*
+     bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
+   *Description*
+When more than one machine code number is available for the same
+machine type, this function can be used to switch between the preferred
+one (alternative == 0) and any others.  Currently, only ELF supports
+this feature, with up to two alternate machine codes.
+
+     struct bfd_preserve
+     {
+       void *marker;
+       void *tdata;
+       flagword flags;
+       const struct bfd_arch_info *arch_info;
+       struct bfd_section *sections;
+       struct bfd_section *section_last;
+       unsigned int section_count;
+       struct bfd_hash_table section_htab;
+     };
+   
+2.3.1.17 `bfd_preserve_save'
+............................
+
+*Synopsis*
+     bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
+   *Description*
+When testing an object for compatibility with a particular target
+back-end, the back-end object_p function needs to set up certain fields
+in the bfd on successfully recognizing the object.  This typically
+happens in a piecemeal fashion, with failures possible at many points.
+On failure, the bfd is supposed to be restored to its initial state,
+which is virtually impossible.  However, restoring a subset of the bfd
+state works in practice.  This function stores the subset and
+reinitializes the bfd.
+
+2.3.1.18 `bfd_preserve_restore'
+...............................
+
+*Synopsis*
+     void bfd_preserve_restore (bfd *, struct bfd_preserve *);
+   *Description*
+This function restores bfd state saved by bfd_preserve_save.  If MARKER
+is non-NULL in struct bfd_preserve then that block and all subsequently
+bfd_alloc'd memory is freed.
+
+2.3.1.19 `bfd_preserve_finish'
+..............................
+
+*Synopsis*
+     void bfd_preserve_finish (bfd *, struct bfd_preserve *);
+   *Description*
+This function should be called when the bfd state saved by
+bfd_preserve_save is no longer needed.  ie. when the back-end object_p
+function returns with success.
+
+2.3.1.20 `bfd_emul_get_maxpagesize'
+...................................
+
+*Synopsis*
+     bfd_vma bfd_emul_get_maxpagesize (const char *);
+   *Description*
+Returns the maximum page size, in bytes, as determined by emulation.
+
+   *Returns*
+Returns the maximum page size in bytes for ELF, abort otherwise.
+
+2.3.1.21 `bfd_emul_set_maxpagesize'
+...................................
+
+*Synopsis*
+     void bfd_emul_set_maxpagesize (const char *, bfd_vma);
+   *Description*
+For ELF, set the maximum page size for the emulation.  It is a no-op
+for other formats.
+
+2.3.1.22 `bfd_emul_get_commonpagesize'
+......................................
+
+*Synopsis*
+     bfd_vma bfd_emul_get_commonpagesize (const char *);
+   *Description*
+Returns the common page size, in bytes, as determined by emulation.
+
+   *Returns*
+Returns the common page size in bytes for ELF, abort otherwise.
+
+2.3.1.23 `bfd_emul_set_commonpagesize'
+......................................
+
+*Synopsis*
+     void bfd_emul_set_commonpagesize (const char *, bfd_vma);
+   *Description*
+For ELF, set the common page size for the emulation.  It is a no-op for
+other formats.
+
+2.3.1.24 `struct bfd_iovec'
+...........................
+
+*Description*
+The `struct bfd_iovec' contains the internal file I/O class.  Each
+`BFD' has an instance of this class and all file I/O is routed through
+it (it is assumed that the instance implements all methods listed
+below).
+     struct bfd_iovec
+     {
+       /* To avoid problems with macros, a "b" rather than "f"
+          prefix is prepended to each method name.  */
+       /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
+          bytes starting at PTR.  Return the number of bytes actually
+          transfered (a read past end-of-file returns less than NBYTES),
+          or -1 (setting `bfd_error') if an error occurs.  */
+       file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
+       file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
+                           file_ptr nbytes);
+       /* Return the current IOSTREAM file offset, or -1 (setting `bfd_error'
+          if an error occurs.  */
+       file_ptr (*btell) (struct bfd *abfd);
+       /* For the following, on successful completion a value of 0 is returned.
+          Otherwise, a value of -1 is returned (and  `bfd_error' is set).  */
+       int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
+       int (*bclose) (struct bfd *abfd);
+       int (*bflush) (struct bfd *abfd);
+       int (*bstat) (struct bfd *abfd, struct stat *sb);
+     };
+
+2.3.1.25 `bfd_get_mtime'
+........................
+
+*Synopsis*
+     long bfd_get_mtime (bfd *abfd);
+   *Description*
+Return the file modification time (as read from the file system, or
+from the archive header for archive members).
+
+2.3.1.26 `bfd_get_size'
+.......................
+
+*Synopsis*
+     long bfd_get_size (bfd *abfd);
+   *Description*
+Return the file size (as read from file system) for the file associated
+with BFD ABFD.
+
+   The initial motivation for, and use of, this routine is not so we
+can get the exact size of the object the BFD applies to, since that
+might not be generally possible (archive members for example).  It
+would be ideal if someone could eventually modify it so that such
+results were guaranteed.
+
+   Instead, we want to ask questions like "is this NNN byte sized
+object I'm about to try read from file offset YYY reasonable?"  As as
+example of where we might do this, some object formats use string
+tables for which the first `sizeof (long)' bytes of the table contain
+the size of the table itself, including the size bytes.  If an
+application tries to read what it thinks is one of these string tables,
+without some way to validate the size, and for some reason the size is
+wrong (byte swapping error, wrong location for the string table, etc.),
+the only clue is likely to be a read error when it tries to read the
+table, or a "virtual memory exhausted" error when it tries to allocate
+15 bazillon bytes of space for the 15 bazillon byte table it is about
+to read.  This function at least allows us to answer the question, "is
+the size reasonable?".
+
+* Menu:
+
+* Memory Usage::
+* Initialization::
+* Sections::
+* Symbols::
+* Archives::
+* Formats::
+* Relocations::
+* Core Files::
+* Targets::
+* Architectures::
+* Opening and Closing::
+* Internal::
+* File Caching::
+* Linker Functions::
+* Hash Tables::
+
+\1f
+File: bfd.info,  Node: Memory Usage,  Next: Initialization,  Prev: BFD front end,  Up: BFD front end
+
+2.4 Memory Usage
+================
+
+BFD keeps all of its internal structures in obstacks. There is one
+obstack per open BFD file, into which the current state is stored. When
+a BFD is closed, the obstack is deleted, and so everything which has
+been allocated by BFD for the closing file is thrown away.
+
+   BFD does not free anything created by an application, but pointers
+into `bfd' structures become invalid on a `bfd_close'; for example,
+after a `bfd_close' the vector passed to `bfd_canonicalize_symtab' is
+still around, since it has been allocated by the application, but the
+data that it pointed to are lost.
+
+   The general rule is to not close a BFD until all operations dependent
+upon data from the BFD have been completed, or all the data from within
+the file has been copied. To help with the management of memory, there
+is a function (`bfd_alloc_size') which returns the number of bytes in
+obstacks associated with the supplied BFD. This could be used to select
+the greediest open BFD, close it to reclaim the memory, perform some
+operation and reopen the BFD again, to get a fresh copy of the data
+structures.
+
+\1f
+File: bfd.info,  Node: Initialization,  Next: Sections,  Prev: Memory Usage,  Up: BFD front end
+
+2.5 Initialization
+==================
+
+2.5.1 Initialization functions
+------------------------------
+
+These are the functions that handle initializing a BFD.
+
+2.5.1.1 `bfd_init'
+..................
+
+*Synopsis*
+     void bfd_init (void);
+   *Description*
+This routine must be called before any other BFD function to initialize
+magical internal data structures.
+
+\1f
+File: bfd.info,  Node: Sections,  Next: Symbols,  Prev: Initialization,  Up: BFD front end
+
+2.6 Sections
+============
+
+The raw data contained within a BFD is maintained through the section
+abstraction.  A single BFD may have any number of sections.  It keeps
+hold of them by pointing to the first; each one points to the next in
+the list.
+
+   Sections are supported in BFD in `section.c'.
+
+* Menu:
+
+* Section Input::
+* Section Output::
+* typedef asection::
+* section prototypes::
+
+\1f
+File: bfd.info,  Node: Section Input,  Next: Section Output,  Prev: Sections,  Up: Sections
+
+2.6.1 Section input
+-------------------
+
+When a BFD is opened for reading, the section structures are created
+and attached to the BFD.
+
+   Each section has a name which describes the section in the outside
+world--for example, `a.out' would contain at least three sections,
+called `.text', `.data' and `.bss'.
+
+   Names need not be unique; for example a COFF file may have several
+sections named `.data'.
+
+   Sometimes a BFD will contain more than the "natural" number of
+sections. A back end may attach other sections containing constructor
+data, or an application may add a section (using `bfd_make_section') to
+the sections attached to an already open BFD. For example, the linker
+creates an extra section `COMMON' for each input file's BFD to hold
+information about common storage.
+
+   The raw data is not necessarily read in when the section descriptor
+is created. Some targets may leave the data in place until a
+`bfd_get_section_contents' call is made. Other back ends may read in
+all the data at once.  For example, an S-record file has to be read
+once to determine the size of the data. An IEEE-695 file doesn't
+contain raw data in sections, but data and relocation expressions
+intermixed, so the data area has to be parsed to get out the data and
+relocations.
+
+\1f
+File: bfd.info,  Node: Section Output,  Next: typedef asection,  Prev: Section Input,  Up: Sections
+
+2.6.2 Section output
+--------------------
+
+To write a new object style BFD, the various sections to be written
+have to be created. They are attached to the BFD in the same way as
+input sections; data is written to the sections using
+`bfd_set_section_contents'.
+
+   Any program that creates or combines sections (e.g., the assembler
+and linker) must use the `asection' fields `output_section' and
+`output_offset' to indicate the file sections to which each section
+must be written.  (If the section is being created from scratch,
+`output_section' should probably point to the section itself and
+`output_offset' should probably be zero.)
+
+   The data to be written comes from input sections attached (via
+`output_section' pointers) to the output sections.  The output section
+structure can be considered a filter for the input section: the output
+section determines the vma of the output data and the name, but the
+input section determines the offset into the output section of the data
+to be written.
+
+   E.g., to create a section "O", starting at 0x100, 0x123 long,
+containing two subsections, "A" at offset 0x0 (i.e., at vma 0x100) and
+"B" at offset 0x20 (i.e., at vma 0x120) the `asection' structures would
+look like:
+
+        section name          "A"
+          output_offset   0x00
+          size            0x20
+          output_section ----------->  section name    "O"
+                                  |    vma             0x100
+        section name          "B" |    size            0x123
+          output_offset   0x20    |
+          size            0x103   |
+          output_section  --------|
+
+2.6.3 Link orders
+-----------------
+
+The data within a section is stored in a "link_order".  These are much
+like the fixups in `gas'.  The link_order abstraction allows a section
+to grow and shrink within itself.
+
+   A link_order knows how big it is, and which is the next link_order
+and where the raw data for it is; it also points to a list of
+relocations which apply to it.
+
+   The link_order is used by the linker to perform relaxing on final
+code.  The compiler creates code which is as big as necessary to make
+it work without relaxing, and the user can select whether to relax.
+Sometimes relaxing takes a lot of time.  The linker runs around the
+relocations to see if any are attached to data which can be shrunk, if
+so it does it on a link_order by link_order basis.
+
+\1f
+File: bfd.info,  Node: typedef asection,  Next: section prototypes,  Prev: Section Output,  Up: Sections
+
+2.6.4 typedef asection
+----------------------
+
+Here is the section structure:
+
+
+     typedef struct bfd_section
+     {
+       /* The name of the section; the name isn't a copy, the pointer is
+          the same as that passed to bfd_make_section.  */
+       const char *name;
+
+       /* A unique sequence number.  */
+       int id;
+
+       /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
+       int index;
+
+       /* The next section in the list belonging to the BFD, or NULL.  */
+       struct bfd_section *next;
+
+       /* The previous section in the list belonging to the BFD, or NULL.  */
+       struct bfd_section *prev;
+
+       /* The field flags contains attributes of the section. Some
+          flags are read in from the object file, and some are
+          synthesized from other information.  */
+       flagword flags;
+
+     #define SEC_NO_FLAGS   0x000
+
+       /* Tells the OS to allocate space for this section when loading.
+          This is clear for a section containing debug information only.  */
+     #define SEC_ALLOC      0x001
+
+       /* Tells the OS to load the section from the file when loading.
+          This is clear for a .bss section.  */
+     #define SEC_LOAD       0x002
+
+       /* The section contains data still to be relocated, so there is
+          some relocation information too.  */
+     #define SEC_RELOC      0x004
+
+       /* A signal to the OS that the section contains read only data.  */
+     #define SEC_READONLY   0x008
+
+       /* The section contains code only.  */
+     #define SEC_CODE       0x010
+
+       /* The section contains data only.  */
+     #define SEC_DATA       0x020
+
+       /* The section will reside in ROM.  */
+     #define SEC_ROM        0x040
+
+       /* The section contains constructor information. This section
+          type is used by the linker to create lists of constructors and
+          destructors used by `g++'. When a back end sees a symbol
+          which should be used in a constructor list, it creates a new
+          section for the type of name (e.g., `__CTOR_LIST__'), attaches
+          the symbol to it, and builds a relocation. To build the lists
+          of constructors, all the linker has to do is catenate all the
+          sections called `__CTOR_LIST__' and relocate the data
+          contained within - exactly the operations it would peform on
+          standard data.  */
+     #define SEC_CONSTRUCTOR 0x080
+
+       /* The section has contents - a data section could be
+          `SEC_ALLOC' | `SEC_HAS_CONTENTS'; a debug section could be
+          `SEC_HAS_CONTENTS'  */
+     #define SEC_HAS_CONTENTS 0x100
+
+       /* An instruction to the linker to not output the section
+          even if it has information which would normally be written.  */
+     #define SEC_NEVER_LOAD 0x200
+
+       /* The section contains thread local data.  */
+     #define SEC_THREAD_LOCAL 0x400
+
+       /* The section has GOT references.  This flag is only for the
+          linker, and is currently only used by the elf32-hppa back end.
+          It will be set if global offset table references were detected
+          in this section, which indicate to the linker that the section
+          contains PIC code, and must be handled specially when doing a
+          static link.  */
+     #define SEC_HAS_GOT_REF 0x800
+
+       /* The section contains common symbols (symbols may be defined
+          multiple times, the value of a symbol is the amount of
+          space it requires, and the largest symbol value is the one
+          used).  Most targets have exactly one of these (which we
+          translate to bfd_com_section_ptr), but ECOFF has two.  */
+     #define SEC_IS_COMMON 0x1000
+
+       /* The section contains only debugging information.  For
+          example, this is set for ELF .debug and .stab sections.
+          strip tests this flag to see if a section can be
+          discarded.  */
+     #define SEC_DEBUGGING 0x2000
+
+       /* The contents of this section are held in memory pointed to
+          by the contents field.  This is checked by bfd_get_section_contents,
+          and the data is retrieved from memory if appropriate.  */
+     #define SEC_IN_MEMORY 0x4000
+
+       /* The contents of this section are to be excluded by the
+          linker for executable and shared objects unless those
+          objects are to be further relocated.  */
+     #define SEC_EXCLUDE 0x8000
+
+       /* The contents of this section are to be sorted based on the sum of
+          the symbol and addend values specified by the associated relocation
+          entries.  Entries without associated relocation entries will be
+          appended to the end of the section in an unspecified order.  */
+     #define SEC_SORT_ENTRIES 0x10000
+
+       /* When linking, duplicate sections of the same name should be
+          discarded, rather than being combined into a single section as
+          is usually done.  This is similar to how common symbols are
+          handled.  See SEC_LINK_DUPLICATES below.  */
+     #define SEC_LINK_ONCE 0x20000
+
+       /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
+          should handle duplicate sections.  */
+     #define SEC_LINK_DUPLICATES 0x40000
+
+       /* This value for SEC_LINK_DUPLICATES means that duplicate
+          sections with the same name should simply be discarded.  */
+     #define SEC_LINK_DUPLICATES_DISCARD 0x0
+
+       /* This value for SEC_LINK_DUPLICATES means that the linker
+          should warn if there are any duplicate sections, although
+          it should still only link one copy.  */
+     #define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
+
+       /* This value for SEC_LINK_DUPLICATES means that the linker
+          should warn if any duplicate sections are a different size.  */
+     #define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
+
+       /* This value for SEC_LINK_DUPLICATES means that the linker
+          should warn if any duplicate sections contain different
+          contents.  */
+     #define SEC_LINK_DUPLICATES_SAME_CONTENTS \
+       (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
+
+       /* This section was created by the linker as part of dynamic
+          relocation or other arcane processing.  It is skipped when
+          going through the first-pass output, trusting that someone
+          else up the line will take care of it later.  */
+     #define SEC_LINKER_CREATED 0x200000
+
+       /* This section should not be subject to garbage collection.
+          Also set to inform the linker that this section should not be
+          listed in the link map as discarded.  */
+     #define SEC_KEEP 0x400000
+
+       /* This section contains "short" data, and should be placed
+          "near" the GP.  */
+     #define SEC_SMALL_DATA 0x800000
+
+       /* Attempt to merge identical entities in the section.
+          Entity size is given in the entsize field.  */
+     #define SEC_MERGE 0x1000000
+
+       /* If given with SEC_MERGE, entities to merge are zero terminated
+          strings where entsize specifies character size instead of fixed
+          size entries.  */
+     #define SEC_STRINGS 0x2000000
+
+       /* This section contains data about section groups.  */
+     #define SEC_GROUP 0x4000000
+
+       /* The section is a COFF shared library section.  This flag is
+          only for the linker.  If this type of section appears in
+          the input file, the linker must copy it to the output file
+          without changing the vma or size.  FIXME: Although this
+          was originally intended to be general, it really is COFF
+          specific (and the flag was renamed to indicate this).  It
+          might be cleaner to have some more general mechanism to
+          allow the back end to control what the linker does with
+          sections.  */
+     #define SEC_COFF_SHARED_LIBRARY 0x10000000
+
+       /* This section contains data which may be shared with other
+          executables or shared objects. This is for COFF only.  */
+     #define SEC_COFF_SHARED 0x20000000
+
+       /* When a section with this flag is being linked, then if the size of
+          the input section is less than a page, it should not cross a page
+          boundary.  If the size of the input section is one page or more,
+          it should be aligned on a page boundary.  This is for TI
+          TMS320C54X only.  */
+     #define SEC_TIC54X_BLOCK 0x40000000
+
+       /* Conditionally link this section; do not link if there are no
+          references found to any symbol in the section.  This is for TI
+          TMS320C54X only.  */
+     #define SEC_TIC54X_CLINK 0x80000000
+
+       /*  End of section flags.  */
+
+       /* Some internal packed boolean fields.  */
+
+       /* See the vma field.  */
+       unsigned int user_set_vma : 1;
+
+       /* A mark flag used by some of the linker backends.  */
+       unsigned int linker_mark : 1;
+
+       /* Another mark flag used by some of the linker backends.  Set for
+          output sections that have an input section.  */
+       unsigned int linker_has_input : 1;
+
+       /* Mark flags used by some linker backends for garbage collection.  */
+       unsigned int gc_mark : 1;
+       unsigned int gc_mark_from_eh : 1;
+
+       /* The following flags are used by the ELF linker. */
+
+       /* Mark sections which have been allocated to segments.  */
+       unsigned int segment_mark : 1;
+
+       /* Type of sec_info information.  */
+       unsigned int sec_info_type:3;
+     #define ELF_INFO_TYPE_NONE      0
+     #define ELF_INFO_TYPE_STABS     1
+     #define ELF_INFO_TYPE_MERGE     2
+     #define ELF_INFO_TYPE_EH_FRAME  3
+     #define ELF_INFO_TYPE_JUST_SYMS 4
+
+       /* Nonzero if this section uses RELA relocations, rather than REL.  */
+       unsigned int use_rela_p:1;
+
+       /* Bits used by various backends.  The generic code doesn't touch
+          these fields.  */
+
+       /* Nonzero if this section has TLS related relocations.  */
+       unsigned int has_tls_reloc:1;
+
+       /* Nonzero if this section has a gp reloc.  */
+       unsigned int has_gp_reloc:1;
+
+       /* Nonzero if this section needs the relax finalize pass.  */
+       unsigned int need_finalize_relax:1;
+
+       /* Whether relocations have been processed.  */
+       unsigned int reloc_done : 1;
+
+       /* End of internal packed boolean fields.  */
+
+       /*  The virtual memory address of the section - where it will be
+           at run time.  The symbols are relocated against this.  The
+           user_set_vma flag is maintained by bfd; if it's not set, the
+           backend can assign addresses (for example, in `a.out', where
+           the default address for `.data' is dependent on the specific
+           target and various flags).  */
+       bfd_vma vma;
+
+       /*  The load address of the section - where it would be in a
+           rom image; really only used for writing section header
+           information.  */
+       bfd_vma lma;
+
+       /* The size of the section in octets, as it will be output.
+          Contains a value even if the section has no contents (e.g., the
+          size of `.bss').  */
+       bfd_size_type size;
+
+       /* For input sections, the original size on disk of the section, in
+          octets.  This field is used by the linker relaxation code.  It is
+          currently only set for sections where the linker relaxation scheme
+          doesn't cache altered section and reloc contents (stabs, eh_frame,
+          SEC_MERGE, some coff relaxing targets), and thus the original size
+          needs to be kept to read the section multiple times.
+          For output sections, rawsize holds the section size calculated on
+          a previous linker relaxation pass.  */
+       bfd_size_type rawsize;
+
+       /* If this section is going to be output, then this value is the
+          offset in *bytes* into the output section of the first byte in the
+          input section (byte ==> smallest addressable unit on the
+          target).  In most cases, if this was going to start at the
+          100th octet (8-bit quantity) in the output section, this value
+          would be 100.  However, if the target byte size is 16 bits
+          (bfd_octets_per_byte is "2"), this value would be 50.  */
+       bfd_vma output_offset;
+
+       /* The output section through which to map on output.  */
+       struct bfd_section *output_section;
+
+       /* The alignment requirement of the section, as an exponent of 2 -
+          e.g., 3 aligns to 2^3 (or 8).  */
+       unsigned int alignment_power;
+
+       /* If an input section, a pointer to a vector of relocation
+          records for the data in this section.  */
+       struct reloc_cache_entry *relocation;
+
+       /* If an output section, a pointer to a vector of pointers to
+          relocation records for the data in this section.  */
+       struct reloc_cache_entry **orelocation;
+
+       /* The number of relocation records in one of the above.  */
+       unsigned reloc_count;
+
+       /* Information below is back end specific - and not always used
+          or updated.  */
+
+       /* File position of section data.  */
+       file_ptr filepos;
+
+       /* File position of relocation info.  */
+       file_ptr rel_filepos;
+
+       /* File position of line data.  */
+       file_ptr line_filepos;
+
+       /* Pointer to data for applications.  */
+       void *userdata;
+
+       /* If the SEC_IN_MEMORY flag is set, this points to the actual
+          contents.  */
+       unsigned char *contents;
+
+       /* Attached line number information.  */
+       alent *lineno;
+
+       /* Number of line number records.  */
+       unsigned int lineno_count;
+
+       /* Entity size for merging purposes.  */
+       unsigned int entsize;
+
+       /* Points to the kept section if this section is a link-once section,
+          and is discarded.  */
+       struct bfd_section *kept_section;
+
+       /* When a section is being output, this value changes as more
+          linenumbers are written out.  */
+       file_ptr moving_line_filepos;
+
+       /* What the section number is in the target world.  */
+       int target_index;
+
+       void *used_by_bfd;
+
+       /* If this is a constructor section then here is a list of the
+          relocations created to relocate items within it.  */
+       struct relent_chain *constructor_chain;
+
+       /* The BFD which owns the section.  */
+       bfd *owner;
+
+       /* A symbol which points at this section only.  */
+       struct bfd_symbol *symbol;
+       struct bfd_symbol **symbol_ptr_ptr;
+
+       /* Early in the link process, map_head and map_tail are used to build
+          a list of input sections attached to an output section.  Later,
+          output sections use these fields for a list of bfd_link_order
+          structs.  */
+       union {
+         struct bfd_link_order *link_order;
+         struct bfd_section *s;
+       } map_head, map_tail;
+     } asection;
+
+     /* These sections are global, and are managed by BFD.  The application
+        and target back end are not permitted to change the values in
+        these sections.  New code should use the section_ptr macros rather
+        than referring directly to the const sections.  The const sections
+        may eventually vanish.  */
+     #define BFD_ABS_SECTION_NAME "*ABS*"
+     #define BFD_UND_SECTION_NAME "*UND*"
+     #define BFD_COM_SECTION_NAME "*COM*"
+     #define BFD_IND_SECTION_NAME "*IND*"
+
+     /* The absolute section.  */
+     extern asection bfd_abs_section;
+     #define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
+     #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
+     /* Pointer to the undefined section.  */
+     extern asection bfd_und_section;
+     #define bfd_und_section_ptr ((asection *) &bfd_und_section)
+     #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
+     /* Pointer to the common section.  */
+     extern asection bfd_com_section;
+     #define bfd_com_section_ptr ((asection *) &bfd_com_section)
+     /* Pointer to the indirect section.  */
+     extern asection bfd_ind_section;
+     #define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
+     #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
+
+     #define bfd_is_const_section(SEC)              \
+      (   ((SEC) == bfd_abs_section_ptr)            \
+       || ((SEC) == bfd_und_section_ptr)            \
+       || ((SEC) == bfd_com_section_ptr)            \
+       || ((SEC) == bfd_ind_section_ptr))
+
+     /* Macros to handle insertion and deletion of a bfd's sections.  These
+        only handle the list pointers, ie. do not adjust section_count,
+        target_index etc.  */
+     #define bfd_section_list_remove(ABFD, S) \
+       do                                                   \
+         {                                                  \
+           asection *_s = S;                                \
+           asection *_next = _s->next;                      \
+           asection *_prev = _s->prev;                      \
+           if (_prev)                                       \
+             _prev->next = _next;                           \
+           else                                             \
+             (ABFD)->sections = _next;                      \
+           if (_next)                                       \
+             _next->prev = _prev;                           \
+           else                                             \
+             (ABFD)->section_last = _prev;                  \
+         }                                                  \
+       while (0)
+     #define bfd_section_list_append(ABFD, S) \
+       do                                                   \
+         {                                                  \
+           asection *_s = S;                                \
+           bfd *_abfd = ABFD;                               \
+           _s->next = NULL;                                 \
+           if (_abfd->section_last)                         \
+             {                                              \
+               _s->prev = _abfd->section_last;              \
+               _abfd->section_last->next = _s;              \
+             }                                              \
+           else                                             \
+             {                                              \
+               _s->prev = NULL;                             \
+               _abfd->sections = _s;                        \
+             }                                              \
+           _abfd->section_last = _s;                        \
+         }                                                  \
+       while (0)
+     #define bfd_section_list_prepend(ABFD, S) \
+       do                                                   \
+         {                                                  \
+           asection *_s = S;                                \
+           bfd *_abfd = ABFD;                               \
+           _s->prev = NULL;                                 \
+           if (_abfd->sections)                             \
+             {                                              \
+               _s->next = _abfd->sections;                  \
+               _abfd->sections->prev = _s;                  \
+             }                                              \
+           else                                             \
+             {                                              \
+               _s->next = NULL;                             \
+               _abfd->section_last = _s;                    \
+             }                                              \
+           _abfd->sections = _s;                            \
+         }                                                  \
+       while (0)
+     #define bfd_section_list_insert_after(ABFD, A, S) \
+       do                                                   \
+         {                                                  \
+           asection *_a = A;                                \
+           asection *_s = S;                                \
+           asection *_next = _a->next;                      \
+           _s->next = _next;                                \
+           _s->prev = _a;                                   \
+           _a->next = _s;                                   \
+           if (_next)                                       \
+             _next->prev = _s;                              \
+           else                                             \
+             (ABFD)->section_last = _s;                     \
+         }                                                  \
+       while (0)
+     #define bfd_section_list_insert_before(ABFD, B, S) \
+       do                                                   \
+         {                                                  \
+           asection *_b = B;                                \
+           asection *_s = S;                                \
+           asection *_prev = _b->prev;                      \
+           _s->prev = _prev;                                \
+           _s->next = _b;                                   \
+           _b->prev = _s;                                   \
+           if (_prev)                                       \
+             _prev->next = _s;                              \
+           else                                             \
+             (ABFD)->sections = _s;                         \
+         }                                                  \
+       while (0)
+     #define bfd_section_removed_from_list(ABFD, S) \
+       ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
+
+     #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
+       /* name, id,  index, next, prev, flags, user_set_vma,            */  \
+       { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
+                                                                            \
+       /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh,      */  \
+          0,           0,                1,       0,                        \
+                                                                            \
+       /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc,       */  \
+          0,            0,             0,          0,                       \
+                                                                            \
+       /* has_gp_reloc, need_finalize_relax, reloc_done,                */  \
+          0,            0,                   0,                             \
+                                                                            \
+       /* vma, lma, size, rawsize                                       */  \
+          0,   0,   0,    0,                                                \
+                                                                            \
+       /* output_offset, output_section,              alignment_power,  */  \
+          0,             (struct bfd_section *) &SEC, 0,                    \
+                                                                            \
+       /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
+          NULL,       NULL,        0,           0,       0,                 \
+                                                                            \
+       /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
+          0,            NULL,     NULL,     NULL,   0,                      \
+                                                                            \
+       /* entsize, kept_section, moving_line_filepos,                    */ \
+          0,       NULL,          0,                                        \
+                                                                            \
+       /* target_index, used_by_bfd, constructor_chain, owner,          */  \
+          0,            NULL,        NULL,              NULL,               \
+                                                                            \
+       /* symbol,                    symbol_ptr_ptr,                    */  \
+          (struct bfd_symbol *) SYM, &SEC.symbol,                           \
+                                                                            \
+       /* map_head, map_tail                                            */  \
+          { NULL }, { NULL }                                                \
+         }
+
+\1f
+File: bfd.info,  Node: section prototypes,  Prev: typedef asection,  Up: Sections
+
+2.6.5 Section prototypes
+------------------------
+
+These are the functions exported by the section handling part of BFD.
+
+2.6.5.1 `bfd_section_list_clear'
+................................
+
+*Synopsis*
+     void bfd_section_list_clear (bfd *);
+   *Description*
+Clears the section list, and also resets the section count and hash
+table entries.
+
+2.6.5.2 `bfd_get_section_by_name'
+.................................
+
+*Synopsis*
+     asection *bfd_get_section_by_name (bfd *abfd, const char *name);
+   *Description*
+Run through ABFD and return the one of the `asection's whose name
+matches NAME, otherwise `NULL'.  *Note Sections::, for more information.
+
+   This should only be used in special cases; the normal way to process
+all sections of a given name is to use `bfd_map_over_sections' and
+`strcmp' on the name (or better yet, base it on the section flags or
+something else) for each section.
+
+2.6.5.3 `bfd_get_section_by_name_if'
+....................................
+
+*Synopsis*
+     asection *bfd_get_section_by_name_if
+        (bfd *abfd,
+         const char *name,
+         bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
+         void *obj);
+   *Description*
+Call the provided function FUNC for each section attached to the BFD
+ABFD whose name matches NAME, passing OBJ as an argument. The function
+will be called as if by
+
+            func (abfd, the_section, obj);
+
+   It returns the first section for which FUNC returns true, otherwise
+`NULL'.
+
+2.6.5.4 `bfd_get_unique_section_name'
+.....................................
+
+*Synopsis*
+     char *bfd_get_unique_section_name
+        (bfd *abfd, const char *templat, int *count);
+   *Description*
+Invent a section name that is unique in ABFD by tacking a dot and a
+digit suffix onto the original TEMPLAT.  If COUNT is non-NULL, then it
+specifies the first number tried as a suffix to generate a unique name.
+The value pointed to by COUNT will be incremented in this case.
+
+2.6.5.5 `bfd_make_section_old_way'
+..................................
+
+*Synopsis*
+     asection *bfd_make_section_old_way (bfd *abfd, const char *name);
+   *Description*
+Create a new empty section called NAME and attach it to the end of the
+chain of sections for the BFD ABFD. An attempt to create a section with
+a name which is already in use returns its pointer without changing the
+section chain.
+
+   It has the funny name since this is the way it used to be before it
+was rewritten....
+
+   Possible errors are:
+   * `bfd_error_invalid_operation' - If output has already started for
+     this BFD.
+
+   * `bfd_error_no_memory' - If memory allocation fails.
+
+2.6.5.6 `bfd_make_section_anyway_with_flags'
+............................................
+
+*Synopsis*
+     asection *bfd_make_section_anyway_with_flags
+        (bfd *abfd, const char *name, flagword flags);
+   *Description*
+Create a new empty section called NAME and attach it to the end of the
+chain of sections for ABFD.  Create a new section even if there is
+already a section with that name.  Also set the attributes of the new
+section to the value FLAGS.
+
+   Return `NULL' and set `bfd_error' on error; possible errors are:
+   * `bfd_error_invalid_operation' - If output has already started for
+     ABFD.
+
+   * `bfd_error_no_memory' - If memory allocation fails.
+
+2.6.5.7 `bfd_make_section_anyway'
+.................................
+
+*Synopsis*
+     asection *bfd_make_section_anyway (bfd *abfd, const char *name);
+   *Description*
+Create a new empty section called NAME and attach it to the end of the
+chain of sections for ABFD.  Create a new section even if there is
+already a section with that name.
+
+   Return `NULL' and set `bfd_error' on error; possible errors are:
+   * `bfd_error_invalid_operation' - If output has already started for
+     ABFD.
+
+   * `bfd_error_no_memory' - If memory allocation fails.
+
+2.6.5.8 `bfd_make_section_with_flags'
+.....................................
+
+*Synopsis*
+     asection *bfd_make_section_with_flags
+        (bfd *, const char *name, flagword flags);
+   *Description*
+Like `bfd_make_section_anyway', but return `NULL' (without calling
+bfd_set_error ()) without changing the section chain if there is
+already a section named NAME.  Also set the attributes of the new
+section to the value FLAGS.  If there is an error, return `NULL' and set
+`bfd_error'.
+
+2.6.5.9 `bfd_make_section'
+..........................
+
+*Synopsis*
+     asection *bfd_make_section (bfd *, const char *name);
+   *Description*
+Like `bfd_make_section_anyway', but return `NULL' (without calling
+bfd_set_error ()) without changing the section chain if there is
+already a section named NAME.  If there is an error, return `NULL' and
+set `bfd_error'.
+
+2.6.5.10 `bfd_set_section_flags'
+................................
+
+*Synopsis*
+     bfd_boolean bfd_set_section_flags
+        (bfd *abfd, asection *sec, flagword flags);
+   *Description*
+Set the attributes of the section SEC in the BFD ABFD to the value
+FLAGS. Return `TRUE' on success, `FALSE' on error. Possible error
+returns are:
+
+   * `bfd_error_invalid_operation' - The section cannot have one or
+     more of the attributes requested. For example, a .bss section in
+     `a.out' may not have the `SEC_HAS_CONTENTS' field set.
+
+2.6.5.11 `bfd_map_over_sections'
+................................
+
+*Synopsis*
+     void bfd_map_over_sections
+        (bfd *abfd,
+         void (*func) (bfd *abfd, asection *sect, void *obj),
+         void *obj);
+   *Description*
+Call the provided function FUNC for each section attached to the BFD
+ABFD, passing OBJ as an argument. The function will be called as if by
+
+            func (abfd, the_section, obj);
+
+   This is the preferred method for iterating over sections; an
+alternative would be to use a loop:
+
+               section *p;
+               for (p = abfd->sections; p != NULL; p = p->next)
+                  func (abfd, p, ...)
+
+2.6.5.12 `bfd_sections_find_if'
+...............................
+
+*Synopsis*
+     asection *bfd_sections_find_if
+        (bfd *abfd,
+         bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
+         void *obj);
+   *Description*
+Call the provided function OPERATION for each section attached to the
+BFD ABFD, passing OBJ as an argument. The function will be called as if
+by
+
+            operation (abfd, the_section, obj);
+
+   It returns the first section for which OPERATION returns true.
+
+2.6.5.13 `bfd_set_section_size'
+...............................
+
+*Synopsis*
+     bfd_boolean bfd_set_section_size
+        (bfd *abfd, asection *sec, bfd_size_type val);
+   *Description*
+Set SEC to the size VAL. If the operation is ok, then `TRUE' is
+returned, else `FALSE'.
+
+   Possible error returns:
+   * `bfd_error_invalid_operation' - Writing has started to the BFD, so
+     setting the size is invalid.
+
+2.6.5.14 `bfd_set_section_contents'
+...................................
+
+*Synopsis*
+     bfd_boolean bfd_set_section_contents
+        (bfd *abfd, asection *section, const void *data,
+         file_ptr offset, bfd_size_type count);
+   *Description*
+Sets the contents of the section SECTION in BFD ABFD to the data
+starting in memory at DATA. The data is written to the output section
+starting at offset OFFSET for COUNT octets.
+
+   Normally `TRUE' is returned, else `FALSE'. Possible error returns
+are:
+   * `bfd_error_no_contents' - The output section does not have the
+     `SEC_HAS_CONTENTS' attribute, so nothing can be written to it.
+
+   * and some more too
+   This routine is front end to the back end function
+`_bfd_set_section_contents'.
+
+2.6.5.15 `bfd_get_section_contents'
+...................................
+
+*Synopsis*
+     bfd_boolean bfd_get_section_contents
+        (bfd *abfd, asection *section, void *location, file_ptr offset,
+         bfd_size_type count);
+   *Description*
+Read data from SECTION in BFD ABFD into memory starting at LOCATION.
+The data is read at an offset of OFFSET from the start of the input
+section, and is read for COUNT bytes.
+
+   If the contents of a constructor with the `SEC_CONSTRUCTOR' flag set
+are requested or if the section does not have the `SEC_HAS_CONTENTS'
+flag set, then the LOCATION is filled with zeroes. If no errors occur,
+`TRUE' is returned, else `FALSE'.
+
+2.6.5.16 `bfd_malloc_and_get_section'
+.....................................
+
+*Synopsis*
+     bfd_boolean bfd_malloc_and_get_section
+        (bfd *abfd, asection *section, bfd_byte **buf);
+   *Description*
+Read all data from SECTION in BFD ABFD into a buffer, *BUF, malloc'd by
+this function.
+
+2.6.5.17 `bfd_copy_private_section_data'
+........................................
+
+*Synopsis*
+     bfd_boolean bfd_copy_private_section_data
+        (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
+   *Description*
+Copy private section information from ISEC in the BFD IBFD to the
+section OSEC in the BFD OBFD.  Return `TRUE' on success, `FALSE' on
+error.  Possible error returns are:
+
+   * `bfd_error_no_memory' - Not enough memory exists to create private
+     data for OSEC.
+
+     #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
+          BFD_SEND (obfd, _bfd_copy_private_section_data, \
+                    (ibfd, isection, obfd, osection))
+
+2.6.5.18 `bfd_generic_is_group_section'
+.......................................
+
+*Synopsis*
+     bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
+   *Description*
+Returns TRUE if SEC is a member of a group.
+
+2.6.5.19 `bfd_generic_discard_group'
+....................................
+
+*Synopsis*
+     bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
+   *Description*
+Remove all members of GROUP from the output.
+
+\1f
+File: bfd.info,  Node: Symbols,  Next: Archives,  Prev: Sections,  Up: BFD front end
+
+2.7 Symbols
+===========
+
+BFD tries to maintain as much symbol information as it can when it
+moves information from file to file. BFD passes information to
+applications though the `asymbol' structure. When the application
+requests the symbol table, BFD reads the table in the native form and
+translates parts of it into the internal format. To maintain more than
+the information passed to applications, some targets keep some
+information "behind the scenes" in a structure only the particular back
+end knows about. For example, the coff back end keeps the original
+symbol table structure as well as the canonical structure when a BFD is
+read in. On output, the coff back end can reconstruct the output symbol
+table so that no information is lost, even information unique to coff
+which BFD doesn't know or understand. If a coff symbol table were read,
+but were written through an a.out back end, all the coff specific
+information would be lost. The symbol table of a BFD is not necessarily
+read in until a canonicalize request is made. Then the BFD back end
+fills in a table provided by the application with pointers to the
+canonical information.  To output symbols, the application provides BFD
+with a table of pointers to pointers to `asymbol's. This allows
+applications like the linker to output a symbol as it was read, since
+the "behind the scenes" information will be still available.
+
+* Menu:
+
+* Reading Symbols::
+* Writing Symbols::
+* Mini Symbols::
+* typedef asymbol::
+* symbol handling functions::
+
+\1f
+File: bfd.info,  Node: Reading Symbols,  Next: Writing Symbols,  Prev: Symbols,  Up: Symbols
+
+2.7.1 Reading symbols
+---------------------
+
+There are two stages to reading a symbol table from a BFD: allocating
+storage, and the actual reading process. This is an excerpt from an
+application which reads the symbol table:
+
+              long storage_needed;
+              asymbol **symbol_table;
+              long number_of_symbols;
+              long i;
+
+              storage_needed = bfd_get_symtab_upper_bound (abfd);
+
+              if (storage_needed < 0)
+                FAIL
+
+              if (storage_needed == 0)
+                return;
+
+              symbol_table = xmalloc (storage_needed);
+                ...
+              number_of_symbols =
+                 bfd_canonicalize_symtab (abfd, symbol_table);
+
+              if (number_of_symbols < 0)
+                FAIL
+
+              for (i = 0; i < number_of_symbols; i++)
+                process_symbol (symbol_table[i]);
+
+   All storage for the symbols themselves is in an objalloc connected
+to the BFD; it is freed when the BFD is closed.
+
+\1f
+File: bfd.info,  Node: Writing Symbols,  Next: Mini Symbols,  Prev: Reading Symbols,  Up: Symbols
+
+2.7.2 Writing symbols
+---------------------
+
+Writing of a symbol table is automatic when a BFD open for writing is
+closed. The application attaches a vector of pointers to pointers to
+symbols to the BFD being written, and fills in the symbol count. The
+close and cleanup code reads through the table provided and performs
+all the necessary operations. The BFD output code must always be
+provided with an "owned" symbol: one which has come from another BFD,
+or one which has been created using `bfd_make_empty_symbol'.  Here is an
+example showing the creation of a symbol table with only one element:
+
+            #include "bfd.h"
+            int main (void)
+            {
+              bfd *abfd;
+              asymbol *ptrs[2];
+              asymbol *new;
+
+              abfd = bfd_openw ("foo","a.out-sunos-big");
+              bfd_set_format (abfd, bfd_object);
+              new = bfd_make_empty_symbol (abfd);
+              new->name = "dummy_symbol";
+              new->section = bfd_make_section_old_way (abfd, ".text");
+              new->flags = BSF_GLOBAL;
+              new->value = 0x12345;
+
+              ptrs[0] = new;
+              ptrs[1] = 0;
+
+              bfd_set_symtab (abfd, ptrs, 1);
+              bfd_close (abfd);
+              return 0;
+            }
+
+            ./makesym
+            nm foo
+            00012345 A dummy_symbol
+
+   Many formats cannot represent arbitrary symbol information; for
+instance, the `a.out' object format does not allow an arbitrary number
+of sections. A symbol pointing to a section which is not one  of
+`.text', `.data' or `.bss' cannot be described.
+
+\1f
+File: bfd.info,  Node: Mini Symbols,  Next: typedef asymbol,  Prev: Writing Symbols,  Up: Symbols
+
+2.7.3 Mini Symbols
+------------------
+
+Mini symbols provide read-only access to the symbol table.  They use
+less memory space, but require more time to access.  They can be useful
+for tools like nm or objdump, which may have to handle symbol tables of
+extremely large executables.
+
+   The `bfd_read_minisymbols' function will read the symbols into
+memory in an internal form.  It will return a `void *' pointer to a
+block of memory, a symbol count, and the size of each symbol.  The
+pointer is allocated using `malloc', and should be freed by the caller
+when it is no longer needed.
+
+   The function `bfd_minisymbol_to_symbol' will take a pointer to a
+minisymbol, and a pointer to a structure returned by
+`bfd_make_empty_symbol', and return a `asymbol' structure.  The return
+value may or may not be the same as the value from
+`bfd_make_empty_symbol' which was passed in.
+
+\1f
+File: bfd.info,  Node: typedef asymbol,  Next: symbol handling functions,  Prev: Mini Symbols,  Up: Symbols
+
+2.7.4 typedef asymbol
+---------------------
+
+An `asymbol' has the form:
+
+
+     typedef struct bfd_symbol
+     {
+       /* A pointer to the BFD which owns the symbol. This information
+          is necessary so that a back end can work out what additional
+          information (invisible to the application writer) is carried
+          with the symbol.
+
+          This field is *almost* redundant, since you can use section->owner
+          instead, except that some symbols point to the global sections
+          bfd_{abs,com,und}_section.  This could be fixed by making
+          these globals be per-bfd (or per-target-flavor).  FIXME.  */
+       struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
+
+       /* The text of the symbol. The name is left alone, and not copied; the
+          application may not alter it.  */
+       const char *name;
+
+       /* The value of the symbol.  This really should be a union of a
+          numeric value with a pointer, since some flags indicate that
+          a pointer to another symbol is stored here.  */
+       symvalue value;
+
+       /* Attributes of a symbol.  */
+     #define BSF_NO_FLAGS    0x00
+
+       /* The symbol has local scope; `static' in `C'. The value
+          is the offset into the section of the data.  */
+     #define BSF_LOCAL      0x01
+
+       /* The symbol has global scope; initialized data in `C'. The
+          value is the offset into the section of the data.  */
+     #define BSF_GLOBAL     0x02
+
+       /* The symbol has global scope and is exported. The value is
+          the offset into the section of the data.  */
+     #define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
+
+       /* A normal C symbol would be one of:
+          `BSF_LOCAL', `BSF_FORT_COMM',  `BSF_UNDEFINED' or
+          `BSF_GLOBAL'.  */
+
+       /* The symbol is a debugging record. The value has an arbitrary
+          meaning, unless BSF_DEBUGGING_RELOC is also set.  */
+     #define BSF_DEBUGGING  0x08
+
+       /* The symbol denotes a function entry point.  Used in ELF,
+          perhaps others someday.  */
+     #define BSF_FUNCTION    0x10
+
+       /* Used by the linker.  */
+     #define BSF_KEEP        0x20
+     #define BSF_KEEP_G      0x40
+
+       /* A weak global symbol, overridable without warnings by
+          a regular global symbol of the same name.  */
+     #define BSF_WEAK        0x80
+
+       /* This symbol was created to point to a section, e.g. ELF's
+          STT_SECTION symbols.  */
+     #define BSF_SECTION_SYM 0x100
+
+       /* The symbol used to be a common symbol, but now it is
+          allocated.  */
+     #define BSF_OLD_COMMON  0x200
+
+       /* The default value for common data.  */
+     #define BFD_FORT_COMM_DEFAULT_VALUE 0
+
+       /* In some files the type of a symbol sometimes alters its
+          location in an output file - ie in coff a `ISFCN' symbol
+          which is also `C_EXT' symbol appears where it was
+          declared and not at the end of a section.  This bit is set
+          by the target BFD part to convey this information.  */
+     #define BSF_NOT_AT_END    0x400
+
+       /* Signal that the symbol is the label of constructor section.  */
+     #define BSF_CONSTRUCTOR   0x800
+
+       /* Signal that the symbol is a warning symbol.  The name is a
+          warning.  The name of the next symbol is the one to warn about;
+          if a reference is made to a symbol with the same name as the next
+          symbol, a warning is issued by the linker.  */
+     #define BSF_WARNING       0x1000
+
+       /* Signal that the symbol is indirect.  This symbol is an indirect
+          pointer to the symbol with the same name as the next symbol.  */
+     #define BSF_INDIRECT      0x2000
+
+       /* BSF_FILE marks symbols that contain a file name.  This is used
+          for ELF STT_FILE symbols.  */
+     #define BSF_FILE          0x4000
+
+       /* Symbol is from dynamic linking information.  */
+     #define BSF_DYNAMIC       0x8000
+
+       /* The symbol denotes a data object.  Used in ELF, and perhaps
+          others someday.  */
+     #define BSF_OBJECT        0x10000
+
+       /* This symbol is a debugging symbol.  The value is the offset
+          into the section of the data.  BSF_DEBUGGING should be set
+          as well.  */
+     #define BSF_DEBUGGING_RELOC 0x20000
+
+       /* This symbol is thread local.  Used in ELF.  */
+     #define BSF_THREAD_LOCAL  0x40000
+
+       flagword flags;
+
+       /* A pointer to the section to which this symbol is
+          relative.  This will always be non NULL, there are special
+          sections for undefined and absolute symbols.  */
+       struct bfd_section *section;
+
+       /* Back end special data.  */
+       union
+         {
+           void *p;
+           bfd_vma i;
+         }
+       udata;
+     }
+     asymbol;
+
+\1f
+File: bfd.info,  Node: symbol handling functions,  Prev: typedef asymbol,  Up: Symbols
+
+2.7.5 Symbol handling functions
+-------------------------------
+
+2.7.5.1 `bfd_get_symtab_upper_bound'
+....................................
+
+*Description*
+Return the number of bytes required to store a vector of pointers to
+`asymbols' for all the symbols in the BFD ABFD, including a terminal
+NULL pointer. If there are no symbols in the BFD, then return 0.  If an
+error occurs, return -1.
+     #define bfd_get_symtab_upper_bound(abfd) \
+          BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
+
+2.7.5.2 `bfd_is_local_label'
+............................
+
+*Synopsis*
+     bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
+   *Description*
+Return TRUE if the given symbol SYM in the BFD ABFD is a compiler
+generated local label, else return FALSE.
+
+2.7.5.3 `bfd_is_local_label_name'
+.................................
+
+*Synopsis*
+     bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
+   *Description*
+Return TRUE if a symbol with the name NAME in the BFD ABFD is a
+compiler generated local label, else return FALSE.  This just checks
+whether the name has the form of a local label.
+     #define bfd_is_local_label_name(abfd, name) \
+       BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
+
+2.7.5.4 `bfd_is_target_special_symbol'
+......................................
+
+*Synopsis*
+     bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
+   *Description*
+Return TRUE iff a symbol SYM in the BFD ABFD is something special to
+the particular target represented by the BFD.  Such symbols should
+normally not be mentioned to the user.
+     #define bfd_is_target_special_symbol(abfd, sym) \
+       BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
+
+2.7.5.5 `bfd_canonicalize_symtab'
+.................................
+
+*Description*
+Read the symbols from the BFD ABFD, and fills in the vector LOCATION
+with pointers to the symbols and a trailing NULL.  Return the actual
+number of symbol pointers, not including the NULL.
+     #define bfd_canonicalize_symtab(abfd, location) \
+       BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
+
+2.7.5.6 `bfd_set_symtab'
+........................
+
+*Synopsis*
+     bfd_boolean bfd_set_symtab
+        (bfd *abfd, asymbol **location, unsigned int count);
+   *Description*
+Arrange that when the output BFD ABFD is closed, the table LOCATION of
+COUNT pointers to symbols will be written.
+
+2.7.5.7 `bfd_print_symbol_vandf'
+................................
+
+*Synopsis*
+     void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
+   *Description*
+Print the value and flags of the SYMBOL supplied to the stream FILE.
+
+2.7.5.8 `bfd_make_empty_symbol'
+...............................
+
+*Description*
+Create a new `asymbol' structure for the BFD ABFD and return a pointer
+to it.
+
+   This routine is necessary because each back end has private
+information surrounding the `asymbol'. Building your own `asymbol' and
+pointing to it will not create the private information, and will cause
+problems later on.
+     #define bfd_make_empty_symbol(abfd) \
+       BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
+
+2.7.5.9 `_bfd_generic_make_empty_symbol'
+........................................
+
+*Synopsis*
+     asymbol *_bfd_generic_make_empty_symbol (bfd *);
+   *Description*
+Create a new `asymbol' structure for the BFD ABFD and return a pointer
+to it.  Used by core file routines, binary back-end and anywhere else
+where no private info is needed.
+
+2.7.5.10 `bfd_make_debug_symbol'
+................................
+
+*Description*
+Create a new `asymbol' structure for the BFD ABFD, to be used as a
+debugging symbol.  Further details of its use have yet to be worked out.
+     #define bfd_make_debug_symbol(abfd,ptr,size) \
+       BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
+
+2.7.5.11 `bfd_decode_symclass'
+..............................
+
+*Description*
+Return a character corresponding to the symbol class of SYMBOL, or '?'
+for an unknown class.
+
+   *Synopsis*
+     int bfd_decode_symclass (asymbol *symbol);
+   
+2.7.5.12 `bfd_is_undefined_symclass'
+....................................
+
+*Description*
+Returns non-zero if the class symbol returned by bfd_decode_symclass
+represents an undefined symbol.  Returns zero otherwise.
+
+   *Synopsis*
+     bfd_boolean bfd_is_undefined_symclass (int symclass);
+   
+2.7.5.13 `bfd_symbol_info'
+..........................
+
+*Description*
+Fill in the basic info about symbol that nm needs.  Additional info may
+be added by the back-ends after calling this function.
+
+   *Synopsis*
+     void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
+   
+2.7.5.14 `bfd_copy_private_symbol_data'
+.......................................
+
+*Synopsis*
+     bfd_boolean bfd_copy_private_symbol_data
+        (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
+   *Description*
+Copy private symbol information from ISYM in the BFD IBFD to the symbol
+OSYM in the BFD OBFD.  Return `TRUE' on success, `FALSE' on error.
+Possible error returns are:
+
+   * `bfd_error_no_memory' - Not enough memory exists to create private
+     data for OSEC.
+
+     #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
+       BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
+                 (ibfd, isymbol, obfd, osymbol))
+
+\1f
+File: bfd.info,  Node: Archives,  Next: Formats,  Prev: Symbols,  Up: BFD front end
+
+2.8 Archives
+============
+
+*Description*
+An archive (or library) is just another BFD.  It has a symbol table,
+although there's not much a user program will do with it.
+
+   The big difference between an archive BFD and an ordinary BFD is
+that the archive doesn't have sections.  Instead it has a chain of BFDs
+that are considered its contents.  These BFDs can be manipulated like
+any other.  The BFDs contained in an archive opened for reading will
+all be opened for reading.  You may put either input or output BFDs
+into an archive opened for output; they will be handled correctly when
+the archive is closed.
+
+   Use `bfd_openr_next_archived_file' to step through the contents of
+an archive opened for input.  You don't have to read the entire archive
+if you don't want to!  Read it until you find what you want.
+
+   Archive contents of output BFDs are chained through the `next'
+pointer in a BFD.  The first one is findable through the `archive_head'
+slot of the archive.  Set it with `bfd_set_archive_head' (q.v.).  A
+given BFD may be in only one open output archive at a time.
+
+   As expected, the BFD archive code is more general than the archive
+code of any given environment.  BFD archives may contain files of
+different formats (e.g., a.out and coff) and even different
+architectures.  You may even place archives recursively into archives!
+
+   This can cause unexpected confusion, since some archive formats are
+more expressive than others.  For instance, Intel COFF archives can
+preserve long filenames; SunOS a.out archives cannot.  If you move a
+file from the first to the second format and back again, the filename
+may be truncated.  Likewise, different a.out environments have different
+conventions as to how they truncate filenames, whether they preserve
+directory names in filenames, etc.  When interoperating with native
+tools, be sure your files are homogeneous.
+
+   Beware: most of these formats do not react well to the presence of
+spaces in filenames.  We do the best we can, but can't always handle
+this case due to restrictions in the format of archives.  Many Unix
+utilities are braindead in regards to spaces and such in filenames
+anyway, so this shouldn't be much of a restriction.
+
+   Archives are supported in BFD in `archive.c'.
+
+2.8.1 Archive functions
+-----------------------
+
+2.8.1.1 `bfd_get_next_mapent'
+.............................
+
+*Synopsis*
+     symindex bfd_get_next_mapent
+        (bfd *abfd, symindex previous, carsym **sym);
+   *Description*
+Step through archive ABFD's symbol table (if it has one).  Successively
+update SYM with the next symbol's information, returning that symbol's
+(internal) index into the symbol table.
+
+   Supply `BFD_NO_MORE_SYMBOLS' as the PREVIOUS entry to get the first
+one; returns `BFD_NO_MORE_SYMBOLS' when you've already got the last one.
+
+   A `carsym' is a canonical archive symbol.  The only user-visible
+element is its name, a null-terminated string.
+
+2.8.1.2 `bfd_set_archive_head'
+..............................
+
+*Synopsis*
+     bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
+   *Description*
+Set the head of the chain of BFDs contained in the archive OUTPUT to
+NEW_HEAD.
+
+2.8.1.3 `bfd_openr_next_archived_file'
+......................................
+
+*Synopsis*
+     bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
+   *Description*
+Provided a BFD, ARCHIVE, containing an archive and NULL, open an input
+BFD on the first contained element and returns that.  Subsequent calls
+should pass the archive and the previous return value to return a
+created BFD to the next contained element. NULL is returned when there
+are no more.
+
+\1f
+File: bfd.info,  Node: Formats,  Next: Relocations,  Prev: Archives,  Up: BFD front end
+
+2.9 File formats
+================
+
+A format is a BFD concept of high level file contents type. The formats
+supported by BFD are:
+
+   * `bfd_object'
+   The BFD may contain data, symbols, relocations and debug info.
+
+   * `bfd_archive'
+   The BFD contains other BFDs and an optional index.
+
+   * `bfd_core'
+   The BFD contains the result of an executable core dump.
+
+2.9.1 File format functions
+---------------------------
+
+2.9.1.1 `bfd_check_format'
+..........................
+
+*Synopsis*
+     bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
+   *Description*
+Verify if the file attached to the BFD ABFD is compatible with the
+format FORMAT (i.e., one of `bfd_object', `bfd_archive' or `bfd_core').
+
+   If the BFD has been set to a specific target before the call, only
+the named target and format combination is checked. If the target has
+not been set, or has been set to `default', then all the known target
+backends is interrogated to determine a match.  If the default target
+matches, it is used.  If not, exactly one target must recognize the
+file, or an error results.
+
+   The function returns `TRUE' on success, otherwise `FALSE' with one
+of the following error codes:
+
+   * `bfd_error_invalid_operation' - if `format' is not one of
+     `bfd_object', `bfd_archive' or `bfd_core'.
+
+   * `bfd_error_system_call' - if an error occured during a read - even
+     some file mismatches can cause bfd_error_system_calls.
+
+   * `file_not_recognised' - none of the backends recognised the file
+     format.
+
+   * `bfd_error_file_ambiguously_recognized' - more than one backend
+     recognised the file format.
+
+2.9.1.2 `bfd_check_format_matches'
+..................................
+
+*Synopsis*
+     bfd_boolean bfd_check_format_matches
+        (bfd *abfd, bfd_format format, char ***matching);
+   *Description*
+Like `bfd_check_format', except when it returns FALSE with `bfd_errno'
+set to `bfd_error_file_ambiguously_recognized'.  In that case, if
+MATCHING is not NULL, it will be filled in with a NULL-terminated list
+of the names of the formats that matched, allocated with `malloc'.
+Then the user may choose a format and try again.
+
+   When done with the list that MATCHING points to, the caller should
+free it.
+
+2.9.1.3 `bfd_set_format'
+........................
+
+*Synopsis*
+     bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
+   *Description*
+This function sets the file format of the BFD ABFD to the format
+FORMAT. If the target set in the BFD does not support the format
+requested, the format is invalid, or the BFD is not open for writing,
+then an error occurs.
+
+2.9.1.4 `bfd_format_string'
+...........................
+
+*Synopsis*
+     const char *bfd_format_string (bfd_format format);
+   *Description*
+Return a pointer to a const string `invalid', `object', `archive',
+`core', or `unknown', depending upon the value of FORMAT.
+
+\1f
+File: bfd.info,  Node: Relocations,  Next: Core Files,  Prev: Formats,  Up: BFD front end
+
+2.10 Relocations
+================
+
+BFD maintains relocations in much the same way it maintains symbols:
+they are left alone until required, then read in en-masse and
+translated into an internal form.  A common routine
+`bfd_perform_relocation' acts upon the canonical form to do the fixup.
+
+   Relocations are maintained on a per section basis, while symbols are
+maintained on a per BFD basis.
+
+   All that a back end has to do to fit the BFD interface is to create
+a `struct reloc_cache_entry' for each relocation in a particular
+section, and fill in the right bits of the structures.
+
+* Menu:
+
+* typedef arelent::
+* howto manager::
+
+\1f
+File: bfd.info,  Node: typedef arelent,  Next: howto manager,  Prev: Relocations,  Up: Relocations
+
+2.10.1 typedef arelent
+----------------------
+
+This is the structure of a relocation entry:
+
+
+     typedef enum bfd_reloc_status
+     {
+       /* No errors detected.  */
+       bfd_reloc_ok,
+
+       /* The relocation was performed, but there was an overflow.  */
+       bfd_reloc_overflow,
+
+       /* The address to relocate was not within the section supplied.  */
+       bfd_reloc_outofrange,
+
+       /* Used by special functions.  */
+       bfd_reloc_continue,
+
+       /* Unsupported relocation size requested.  */
+       bfd_reloc_notsupported,
+
+       /* Unused.  */
+       bfd_reloc_other,
+
+       /* The symbol to relocate against was undefined.  */
+       bfd_reloc_undefined,
+
+       /* The relocation was performed, but may not be ok - presently
+          generated only when linking i960 coff files with i960 b.out
+          symbols.  If this type is returned, the error_message argument
+          to bfd_perform_relocation will be set.  */
+       bfd_reloc_dangerous
+      }
+      bfd_reloc_status_type;
+
+
+     typedef struct reloc_cache_entry
+     {
+       /* A pointer into the canonical table of pointers.  */
+       struct bfd_symbol **sym_ptr_ptr;
+
+       /* offset in section.  */
+       bfd_size_type address;
+
+       /* addend for relocation value.  */
+       bfd_vma addend;
+
+       /* Pointer to how to perform the required relocation.  */
+       reloc_howto_type *howto;
+
+     }
+     arelent;
+   *Description*
+Here is a description of each of the fields within an `arelent':
+
+   * `sym_ptr_ptr'
+   The symbol table pointer points to a pointer to the symbol
+associated with the relocation request.  It is the pointer into the
+table returned by the back end's `canonicalize_symtab' action. *Note
+Symbols::. The symbol is referenced through a pointer to a pointer so
+that tools like the linker can fix up all the symbols of the same name
+by modifying only one pointer. The relocation routine looks in the
+symbol and uses the base of the section the symbol is attached to and
+the value of the symbol as the initial relocation offset. If the symbol
+pointer is zero, then the section provided is looked up.
+
+   * `address'
+   The `address' field gives the offset in bytes from the base of the
+section data which owns the relocation record to the first byte of
+relocatable information. The actual data relocated will be relative to
+this point; for example, a relocation type which modifies the bottom
+two bytes of a four byte word would not touch the first byte pointed to
+in a big endian world.
+
+   * `addend'
+   The `addend' is a value provided by the back end to be added (!)  to
+the relocation offset. Its interpretation is dependent upon the howto.
+For example, on the 68k the code:
+
+             char foo[];
+             main()
+                     {
+                     return foo[0x12345678];
+                     }
+
+   Could be compiled into:
+
+             linkw fp,#-4
+             moveb @#12345678,d0
+             extbl d0
+             unlk fp
+             rts
+
+   This could create a reloc pointing to `foo', but leave the offset in
+the data, something like:
+
+     RELOCATION RECORDS FOR [.text]:
+     offset   type      value
+     00000006 32        _foo
+
+     00000000 4e56 fffc          ; linkw fp,#-4
+     00000004 1039 1234 5678     ; moveb @#12345678,d0
+     0000000a 49c0               ; extbl d0
+     0000000c 4e5e               ; unlk fp
+     0000000e 4e75               ; rts
+
+   Using coff and an 88k, some instructions don't have enough space in
+them to represent the full address range, and pointers have to be
+loaded in two parts. So you'd get something like:
+
+             or.u     r13,r0,hi16(_foo+0x12345678)
+             ld.b     r2,r13,lo16(_foo+0x12345678)
+             jmp      r1
+
+   This should create two relocs, both pointing to `_foo', and with
+0x12340000 in their addend field. The data would consist of:
+
+     RELOCATION RECORDS FOR [.text]:
+     offset   type      value
+     00000002 HVRT16    _foo+0x12340000
+     00000006 LVRT16    _foo+0x12340000
+
+     00000000 5da05678           ; or.u r13,r0,0x5678
+     00000004 1c4d5678           ; ld.b r2,r13,0x5678
+     00000008 f400c001           ; jmp r1
+
+   The relocation routine digs out the value from the data, adds it to
+the addend to get the original offset, and then adds the value of
+`_foo'. Note that all 32 bits have to be kept around somewhere, to cope
+with carry from bit 15 to bit 16.
+
+   One further example is the sparc and the a.out format. The sparc has
+a similar problem to the 88k, in that some instructions don't have room
+for an entire offset, but on the sparc the parts are created in odd
+sized lumps. The designers of the a.out format chose to not use the
+data within the section for storing part of the offset; all the offset
+is kept within the reloc. Anything in the data should be ignored.
+
+             save %sp,-112,%sp
+             sethi %hi(_foo+0x12345678),%g2
+             ldsb [%g2+%lo(_foo+0x12345678)],%i0
+             ret
+             restore
+
+   Both relocs contain a pointer to `foo', and the offsets contain junk.
+
+     RELOCATION RECORDS FOR [.text]:
+     offset   type      value
+     00000004 HI22      _foo+0x12345678
+     00000008 LO10      _foo+0x12345678
+
+     00000000 9de3bf90     ; save %sp,-112,%sp
+     00000004 05000000     ; sethi %hi(_foo+0),%g2
+     00000008 f048a000     ; ldsb [%g2+%lo(_foo+0)],%i0
+     0000000c 81c7e008     ; ret
+     00000010 81e80000     ; restore
+
+   * `howto'
+   The `howto' field can be imagined as a relocation instruction. It is
+a pointer to a structure which contains information on what to do with
+all of the other information in the reloc record and data section. A
+back end would normally have a relocation instruction set and turn
+relocations into pointers to the correct structure on input - but it
+would be possible to create each howto field on demand.
+
+2.10.1.1 `enum complain_overflow'
+.................................
+
+Indicates what sort of overflow checking should be done when performing
+a relocation.
+
+
+     enum complain_overflow
+     {
+       /* Do not complain on overflow.  */
+       complain_overflow_dont,
+
+       /* Complain if the value overflows when considered as a signed
+          number one bit larger than the field.  ie. A bitfield of N bits
+          is allowed to represent -2**n to 2**n-1.  */
+       complain_overflow_bitfield,
+
+       /* Complain if the value overflows when considered as a signed
+          number.  */
+       complain_overflow_signed,
+
+       /* Complain if the value overflows when considered as an
+          unsigned number.  */
+       complain_overflow_unsigned
+     };
+
+2.10.1.2 `reloc_howto_type'
+...........................
+
+The `reloc_howto_type' is a structure which contains all the
+information that libbfd needs to know to tie up a back end's data.
+
+     struct bfd_symbol;             /* Forward declaration.  */
+
+     struct reloc_howto_struct
+     {
+       /*  The type field has mainly a documentary use - the back end can
+           do what it wants with it, though normally the back end's
+           external idea of what a reloc number is stored
+           in this field.  For example, a PC relative word relocation
+           in a coff environment has the type 023 - because that's
+           what the outside world calls a R_PCRWORD reloc.  */
+       unsigned int type;
+
+       /*  The value the final relocation is shifted right by.  This drops
+           unwanted data from the relocation.  */
+       unsigned int rightshift;
+
+       /*  The size of the item to be relocated.  This is *not* a
+           power-of-two measure.  To get the number of bytes operated
+           on by a type of relocation, use bfd_get_reloc_size.  */
+       int size;
+
+       /*  The number of bits in the item to be relocated.  This is used
+           when doing overflow checking.  */
+       unsigned int bitsize;
+
+       /*  Notes that the relocation is relative to the location in the
+           data section of the addend.  The relocation function will
+           subtract from the relocation value the address of the location
+           being relocated.  */
+       bfd_boolean pc_relative;
+
+       /*  The bit position of the reloc value in the destination.
+           The relocated value is left shifted by this amount.  */
+       unsigned int bitpos;
+
+       /* What type of overflow error should be checked for when
+          relocating.  */
+       enum complain_overflow complain_on_overflow;
+
+       /* If this field is non null, then the supplied function is
+          called rather than the normal function.  This allows really
+          strange relocation methods to be accommodated (e.g., i960 callj
+          instructions).  */
+       bfd_reloc_status_type (*special_function)
+         (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
+          bfd *, char **);
+
+       /* The textual name of the relocation type.  */
+       char *name;
+
+       /* Some formats record a relocation addend in the section contents
+          rather than with the relocation.  For ELF formats this is the
+          distinction between USE_REL and USE_RELA (though the code checks
+          for USE_REL == 1/0).  The value of this field is TRUE if the
+          addend is recorded with the section contents; when performing a
+          partial link (ld -r) the section contents (the data) will be
+          modified.  The value of this field is FALSE if addends are
+          recorded with the relocation (in arelent.addend); when performing
+          a partial link the relocation will be modified.
+          All relocations for all ELF USE_RELA targets should set this field
+          to FALSE (values of TRUE should be looked on with suspicion).
+          However, the converse is not true: not all relocations of all ELF
+          USE_REL targets set this field to TRUE.  Why this is so is peculiar
+          to each particular target.  For relocs that aren't used in partial
+          links (e.g. GOT stuff) it doesn't matter what this is set to.  */
+       bfd_boolean partial_inplace;
+
+       /* src_mask selects the part of the instruction (or data) to be used
+          in the relocation sum.  If the target relocations don't have an
+          addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
+          dst_mask to extract the addend from the section contents.  If
+          relocations do have an addend in the reloc, eg. ELF USE_RELA, this
+          field should be zero.  Non-zero values for ELF USE_RELA targets are
+          bogus as in those cases the value in the dst_mask part of the
+          section contents should be treated as garbage.  */
+       bfd_vma src_mask;
+
+       /* dst_mask selects which parts of the instruction (or data) are
+          replaced with a relocated value.  */
+       bfd_vma dst_mask;
+
+       /* When some formats create PC relative instructions, they leave
+          the value of the pc of the place being relocated in the offset
+          slot of the instruction, so that a PC relative relocation can
+          be made just by adding in an ordinary offset (e.g., sun3 a.out).
+          Some formats leave the displacement part of an instruction
+          empty (e.g., m88k bcs); this flag signals the fact.  */
+       bfd_boolean pcrel_offset;
+     };
+   
+2.10.1.3 `The HOWTO Macro'
+..........................
+
+*Description*
+The HOWTO define is horrible and will go away.
+     #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
+       { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
+
+   *Description*
+And will be replaced with the totally magic way. But for the moment, we
+are compatible, so do it this way.
+     #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
+       HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
+              NAME, FALSE, 0, 0, IN)
+
+   *Description*
+This is used to fill in an empty howto entry in an array.
+     #define EMPTY_HOWTO(C) \
+       HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
+              NULL, FALSE, 0, 0, FALSE)
+
+   *Description*
+Helper routine to turn a symbol into a relocation value.
+     #define HOWTO_PREPARE(relocation, symbol)               \
+       {                                                     \
+         if (symbol != NULL)                                 \
+           {                                                 \
+             if (bfd_is_com_section (symbol->section))       \
+               {                                             \
+                 relocation = 0;                             \
+               }                                             \
+             else                                            \
+               {                                             \
+                 relocation = symbol->value;                 \
+               }                                             \
+           }                                                 \
+       }
+
+2.10.1.4 `bfd_get_reloc_size'
+.............................
+
+*Synopsis*
+     unsigned int bfd_get_reloc_size (reloc_howto_type *);
+   *Description*
+For a reloc_howto_type that operates on a fixed number of bytes, this
+returns the number of bytes operated on.
+
+2.10.1.5 `arelent_chain'
+........................
+
+*Description*
+How relocs are tied together in an `asection':
+     typedef struct relent_chain
+     {
+       arelent relent;
+       struct relent_chain *next;
+     }
+     arelent_chain;
+
+2.10.1.6 `bfd_check_overflow'
+.............................
+
+*Synopsis*
+     bfd_reloc_status_type bfd_check_overflow
+        (enum complain_overflow how,
+         unsigned int bitsize,
+         unsigned int rightshift,
+         unsigned int addrsize,
+         bfd_vma relocation);
+   *Description*
+Perform overflow checking on RELOCATION which has BITSIZE significant
+bits and will be shifted right by RIGHTSHIFT bits, on a machine with
+addresses containing ADDRSIZE significant bits.  The result is either of
+`bfd_reloc_ok' or `bfd_reloc_overflow'.
+
+2.10.1.7 `bfd_perform_relocation'
+.................................
+
+*Synopsis*
+     bfd_reloc_status_type bfd_perform_relocation
+        (bfd *abfd,
+         arelent *reloc_entry,
+         void *data,
+         asection *input_section,
+         bfd *output_bfd,
+         char **error_message);
+   *Description*
+If OUTPUT_BFD is supplied to this function, the generated image will be
+relocatable; the relocations are copied to the output file after they
+have been changed to reflect the new state of the world. There are two
+ways of reflecting the results of partial linkage in an output file: by
+modifying the output data in place, and by modifying the relocation
+record.  Some native formats (e.g., basic a.out and basic coff) have no
+way of specifying an addend in the relocation type, so the addend has
+to go in the output data.  This is no big deal since in these formats
+the output data slot will always be big enough for the addend. Complex
+reloc types with addends were invented to solve just this problem.  The
+ERROR_MESSAGE argument is set to an error message if this return
+`bfd_reloc_dangerous'.
+
+2.10.1.8 `bfd_install_relocation'
+.................................
+
+*Synopsis*
+     bfd_reloc_status_type bfd_install_relocation
+        (bfd *abfd,
+         arelent *reloc_entry,
+         void *data, bfd_vma data_start,
+         asection *input_section,
+         char **error_message);
+   *Description*
+This looks remarkably like `bfd_perform_relocation', except it does not
+expect that the section contents have been filled in.  I.e., it's
+suitable for use when creating, rather than applying a relocation.
+
+   For now, this function should be considered reserved for the
+assembler.
+
+\1f
+File: bfd.info,  Node: howto manager,  Prev: typedef arelent,  Up: Relocations
+
+2.10.2 The howto manager
+------------------------
+
+When an application wants to create a relocation, but doesn't know what
+the target machine might call it, it can find out by using this bit of
+code.
+
+2.10.2.1 `bfd_reloc_code_type'
+..............................
+
+*Description*
+The insides of a reloc code.  The idea is that, eventually, there will
+be one enumerator for every type of relocation we ever do.  Pass one of
+these values to `bfd_reloc_type_lookup', and it'll return a howto
+pointer.
+
+   This does mean that the application must determine the correct
+enumerator value; you can't get a howto pointer from a random set of
+attributes.
+
+   Here are the possible values for `enum bfd_reloc_code_real':
+
+ -- : BFD_RELOC_64
+ -- : BFD_RELOC_32
+ -- : BFD_RELOC_26
+ -- : BFD_RELOC_24
+ -- : BFD_RELOC_16
+ -- : BFD_RELOC_14
+ -- : BFD_RELOC_8
+     Basic absolute relocations of N bits.
+
+ -- : BFD_RELOC_64_PCREL
+ -- : BFD_RELOC_32_PCREL
+ -- : BFD_RELOC_24_PCREL
+ -- : BFD_RELOC_16_PCREL
+ -- : BFD_RELOC_12_PCREL
+ -- : BFD_RELOC_8_PCREL
+     PC-relative relocations.  Sometimes these are relative to the
+     address of the relocation itself; sometimes they are relative to
+     the start of the section containing the relocation.  It depends on
+     the specific target.
+
+     The 24-bit relocation is used in some Intel 960 configurations.
+
+ -- : BFD_RELOC_32_SECREL
+     Section relative relocations.  Some targets need this for DWARF2.
+
+ -- : BFD_RELOC_32_GOT_PCREL
+ -- : BFD_RELOC_16_GOT_PCREL
+ -- : BFD_RELOC_8_GOT_PCREL
+ -- : BFD_RELOC_32_GOTOFF
+ -- : BFD_RELOC_16_GOTOFF
+ -- : BFD_RELOC_LO16_GOTOFF
+ -- : BFD_RELOC_HI16_GOTOFF
+ -- : BFD_RELOC_HI16_S_GOTOFF
+ -- : BFD_RELOC_8_GOTOFF
+ -- : BFD_RELOC_64_PLT_PCREL
+ -- : BFD_RELOC_32_PLT_PCREL
+ -- : BFD_RELOC_24_PLT_PCREL
+ -- : BFD_RELOC_16_PLT_PCREL
+ -- : BFD_RELOC_8_PLT_PCREL
+ -- : BFD_RELOC_64_PLTOFF
+ -- : BFD_RELOC_32_PLTOFF
+ -- : BFD_RELOC_16_PLTOFF
+ -- : BFD_RELOC_LO16_PLTOFF
+ -- : BFD_RELOC_HI16_PLTOFF
+ -- : BFD_RELOC_HI16_S_PLTOFF
+ -- : BFD_RELOC_8_PLTOFF
+     For ELF.
+
+ -- : BFD_RELOC_68K_GLOB_DAT
+ -- : BFD_RELOC_68K_JMP_SLOT
+ -- : BFD_RELOC_68K_RELATIVE
+     Relocations used by 68K ELF.
+
+ -- : BFD_RELOC_32_BASEREL
+ -- : BFD_RELOC_16_BASEREL
+ -- : BFD_RELOC_LO16_BASEREL
+ -- : BFD_RELOC_HI16_BASEREL
+ -- : BFD_RELOC_HI16_S_BASEREL
+ -- : BFD_RELOC_8_BASEREL
+ -- : BFD_RELOC_RVA
+     Linkage-table relative.
+
+ -- : BFD_RELOC_8_FFnn
+     Absolute 8-bit relocation, but used to form an address like 0xFFnn.
+
+ -- : BFD_RELOC_32_PCREL_S2
+ -- : BFD_RELOC_16_PCREL_S2
+ -- : BFD_RELOC_23_PCREL_S2
+     These PC-relative relocations are stored as word displacements -
+     i.e., byte displacements shifted right two bits.  The 30-bit word
+     displacement (<<32_PCREL_S2>> - 32 bits, shifted 2) is used on the
+     SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
+     signed 16-bit displacement is used on the MIPS, and the 23-bit
+     displacement is used on the Alpha.
+
+ -- : BFD_RELOC_HI22
+ -- : BFD_RELOC_LO10
+     High 22 bits and low 10 bits of 32-bit value, placed into lower
+     bits of the target word.  These are used on the SPARC.
+
+ -- : BFD_RELOC_GPREL16
+ -- : BFD_RELOC_GPREL32
+     For systems that allocate a Global Pointer register, these are
+     displacements off that register.  These relocation types are
+     handled specially, because the value the register will have is
+     decided relatively late.
+
+ -- : BFD_RELOC_I960_CALLJ
+     Reloc types used for i960/b.out.
+
+ -- : BFD_RELOC_NONE
+ -- : BFD_RELOC_SPARC_WDISP22
+ -- : BFD_RELOC_SPARC22
+ -- : BFD_RELOC_SPARC13
+ -- : BFD_RELOC_SPARC_GOT10
+ -- : BFD_RELOC_SPARC_GOT13
+ -- : BFD_RELOC_SPARC_GOT22
+ -- : BFD_RELOC_SPARC_PC10
+ -- : BFD_RELOC_SPARC_PC22
+ -- : BFD_RELOC_SPARC_WPLT30
+ -- : BFD_RELOC_SPARC_COPY
+ -- : BFD_RELOC_SPARC_GLOB_DAT
+ -- : BFD_RELOC_SPARC_JMP_SLOT
+ -- : BFD_RELOC_SPARC_RELATIVE
+ -- : BFD_RELOC_SPARC_UA16
+ -- : BFD_RELOC_SPARC_UA32
+ -- : BFD_RELOC_SPARC_UA64
+     SPARC ELF relocations.  There is probably some overlap with other
+     relocation types already defined.
+
+ -- : BFD_RELOC_SPARC_BASE13
+ -- : BFD_RELOC_SPARC_BASE22
+     I think these are specific to SPARC a.out (e.g., Sun 4).
+
+ -- : BFD_RELOC_SPARC_64
+ -- : BFD_RELOC_SPARC_10
+ -- : BFD_RELOC_SPARC_11
+ -- : BFD_RELOC_SPARC_OLO10
+ -- : BFD_RELOC_SPARC_HH22
+ -- : BFD_RELOC_SPARC_HM10
+ -- : BFD_RELOC_SPARC_LM22
+ -- : BFD_RELOC_SPARC_PC_HH22
+ -- : BFD_RELOC_SPARC_PC_HM10
+ -- : BFD_RELOC_SPARC_PC_LM22
+ -- : BFD_RELOC_SPARC_WDISP16
+ -- : BFD_RELOC_SPARC_WDISP19
+ -- : BFD_RELOC_SPARC_7
+ -- : BFD_RELOC_SPARC_6
+ -- : BFD_RELOC_SPARC_5
+ -- : BFD_RELOC_SPARC_DISP64
+ -- : BFD_RELOC_SPARC_PLT32
+ -- : BFD_RELOC_SPARC_PLT64
+ -- : BFD_RELOC_SPARC_HIX22
+ -- : BFD_RELOC_SPARC_LOX10
+ -- : BFD_RELOC_SPARC_H44
+ -- : BFD_RELOC_SPARC_M44
+ -- : BFD_RELOC_SPARC_L44
+ -- : BFD_RELOC_SPARC_REGISTER
+     SPARC64 relocations
+
+ -- : BFD_RELOC_SPARC_REV32
+     SPARC little endian relocation
+
+ -- : BFD_RELOC_SPARC_TLS_GD_HI22
+ -- : BFD_RELOC_SPARC_TLS_GD_LO10
+ -- : BFD_RELOC_SPARC_TLS_GD_ADD
+ -- : BFD_RELOC_SPARC_TLS_GD_CALL
+ -- : BFD_RELOC_SPARC_TLS_LDM_HI22
+ -- : BFD_RELOC_SPARC_TLS_LDM_LO10
+ -- : BFD_RELOC_SPARC_TLS_LDM_ADD
+ -- : BFD_RELOC_SPARC_TLS_LDM_CALL
+ -- : BFD_RELOC_SPARC_TLS_LDO_HIX22
+ -- : BFD_RELOC_SPARC_TLS_LDO_LOX10
+ -- : BFD_RELOC_SPARC_TLS_LDO_ADD
+ -- : BFD_RELOC_SPARC_TLS_IE_HI22
+ -- : BFD_RELOC_SPARC_TLS_IE_LO10
+ -- : BFD_RELOC_SPARC_TLS_IE_LD
+ -- : BFD_RELOC_SPARC_TLS_IE_LDX
+ -- : BFD_RELOC_SPARC_TLS_IE_ADD
+ -- : BFD_RELOC_SPARC_TLS_LE_HIX22
+ -- : BFD_RELOC_SPARC_TLS_LE_LOX10
+ -- : BFD_RELOC_SPARC_TLS_DTPMOD32
+ -- : BFD_RELOC_SPARC_TLS_DTPMOD64
+ -- : BFD_RELOC_SPARC_TLS_DTPOFF32
+ -- : BFD_RELOC_SPARC_TLS_DTPOFF64
+ -- : BFD_RELOC_SPARC_TLS_TPOFF32
+ -- : BFD_RELOC_SPARC_TLS_TPOFF64
+     SPARC TLS relocations
+
+ -- : BFD_RELOC_SPU_IMM7
+ -- : BFD_RELOC_SPU_IMM8
+ -- : BFD_RELOC_SPU_IMM10
+ -- : BFD_RELOC_SPU_IMM10W
+ -- : BFD_RELOC_SPU_IMM16
+ -- : BFD_RELOC_SPU_IMM16W
+ -- : BFD_RELOC_SPU_IMM18
+ -- : BFD_RELOC_SPU_PCREL9a
+ -- : BFD_RELOC_SPU_PCREL9b
+ -- : BFD_RELOC_SPU_PCREL16
+ -- : BFD_RELOC_SPU_LO16
+ -- : BFD_RELOC_SPU_HI16
+     SPU Relocations.
+
+ -- : BFD_RELOC_ALPHA_GPDISP_HI16
+     Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
+     "addend" in some special way.  For GPDISP_HI16 ("gpdisp")
+     relocations, the symbol is ignored when writing; when reading, it
+     will be the absolute section symbol.  The addend is the
+     displacement in bytes of the "lda" instruction from the "ldah"
+     instruction (which is at the address of this reloc).
+
+ -- : BFD_RELOC_ALPHA_GPDISP_LO16
+     For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
+     with GPDISP_HI16 relocs.  The addend is ignored when writing the
+     relocations out, and is filled in with the file's GP value on
+     reading, for convenience.
+
+ -- : BFD_RELOC_ALPHA_GPDISP
+     The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
+     relocation except that there is no accompanying GPDISP_LO16
+     relocation.
+
+ -- : BFD_RELOC_ALPHA_LITERAL
+ -- : BFD_RELOC_ALPHA_ELF_LITERAL
+ -- : BFD_RELOC_ALPHA_LITUSE
+     The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
+     the assembler turns it into a LDQ instruction to load the address
+     of the symbol, and then fills in a register in the real
+     instruction.
+
+     The LITERAL reloc, at the LDQ instruction, refers to the .lita
+     section symbol.  The addend is ignored when writing, but is filled
+     in with the file's GP value on reading, for convenience, as with
+     the GPDISP_LO16 reloc.
+
+     The ELF_LITERAL reloc is somewhere between 16_GOTOFF and
+     GPDISP_LO16.  It should refer to the symbol to be referenced, as
+     with 16_GOTOFF, but it generates output not based on the position
+     within the .got section, but relative to the GP value chosen for
+     the file during the final link stage.
+
+     The LITUSE reloc, on the instruction using the loaded address,
+     gives information to the linker that it might be able to use to
+     optimize away some literal section references.  The symbol is
+     ignored (read as the absolute section symbol), and the "addend"
+     indicates the type of instruction using the register: 1 - "memory"
+     fmt insn 2 - byte-manipulation (byte offset reg) 3 - jsr (target
+     of branch)
+
+ -- : BFD_RELOC_ALPHA_HINT
+     The HINT relocation indicates a value that should be filled into
+     the "hint" field of a jmp/jsr/ret instruction, for possible branch-
+     prediction logic which may be provided on some processors.
+
+ -- : BFD_RELOC_ALPHA_LINKAGE
+     The LINKAGE relocation outputs a linkage pair in the object file,
+     which is filled by the linker.
+
+ -- : BFD_RELOC_ALPHA_CODEADDR
+     The CODEADDR relocation outputs a STO_CA in the object file, which
+     is filled by the linker.
+
+ -- : BFD_RELOC_ALPHA_GPREL_HI16
+ -- : BFD_RELOC_ALPHA_GPREL_LO16
+     The GPREL_HI/LO relocations together form a 32-bit offset from the
+     GP register.
+
+ -- : BFD_RELOC_ALPHA_BRSGP
+     Like BFD_RELOC_23_PCREL_S2, except that the source and target must
+     share a common GP, and the target address is adjusted for
+     STO_ALPHA_STD_GPLOAD.
+
+ -- : BFD_RELOC_ALPHA_TLSGD
+ -- : BFD_RELOC_ALPHA_TLSLDM
+ -- : BFD_RELOC_ALPHA_DTPMOD64
+ -- : BFD_RELOC_ALPHA_GOTDTPREL16
+ -- : BFD_RELOC_ALPHA_DTPREL64
+ -- : BFD_RELOC_ALPHA_DTPREL_HI16
+ -- : BFD_RELOC_ALPHA_DTPREL_LO16
+ -- : BFD_RELOC_ALPHA_DTPREL16
+ -- : BFD_RELOC_ALPHA_GOTTPREL16
+ -- : BFD_RELOC_ALPHA_TPREL64
+ -- : BFD_RELOC_ALPHA_TPREL_HI16
+ -- : BFD_RELOC_ALPHA_TPREL_LO16
+ -- : BFD_RELOC_ALPHA_TPREL16
+     Alpha thread-local storage relocations.
+
+ -- : BFD_RELOC_MIPS_JMP
+     Bits 27..2 of the relocation address shifted right 2 bits; simple
+     reloc otherwise.
+
+ -- : BFD_RELOC_MIPS16_JMP
+     The MIPS16 jump instruction.
+
+ -- : BFD_RELOC_MIPS16_GPREL
+     MIPS16 GP relative reloc.
+
+ -- : BFD_RELOC_HI16
+     High 16 bits of 32-bit value; simple reloc.
+
+ -- : BFD_RELOC_HI16_S
+     High 16 bits of 32-bit value but the low 16 bits will be sign
+     extended and added to form the final result.  If the low 16 bits
+     form a negative number, we need to add one to the high value to
+     compensate for the borrow when the low bits are added.
+
+ -- : BFD_RELOC_LO16
+     Low 16 bits.
+
+ -- : BFD_RELOC_HI16_PCREL
+     High 16 bits of 32-bit pc-relative value
+
+ -- : BFD_RELOC_HI16_S_PCREL
+     High 16 bits of 32-bit pc-relative value, adjusted
+
+ -- : BFD_RELOC_LO16_PCREL
+     Low 16 bits of pc-relative value
+
+ -- : BFD_RELOC_MIPS16_HI16
+     MIPS16 high 16 bits of 32-bit value.
+
+ -- : BFD_RELOC_MIPS16_HI16_S
+     MIPS16 high 16 bits of 32-bit value but the low 16 bits will be
+     sign extended and added to form the final result.  If the low 16
+     bits form a negative number, we need to add one to the high value
+     to compensate for the borrow when the low bits are added.
+
+ -- : BFD_RELOC_MIPS16_LO16
+     MIPS16 low 16 bits.
+
+ -- : BFD_RELOC_MIPS_LITERAL
+     Relocation against a MIPS literal section.
+
+ -- : BFD_RELOC_MIPS_GOT16
+ -- : BFD_RELOC_MIPS_CALL16
+ -- : BFD_RELOC_MIPS_GOT_HI16
+ -- : BFD_RELOC_MIPS_GOT_LO16
+ -- : BFD_RELOC_MIPS_CALL_HI16
+ -- : BFD_RELOC_MIPS_CALL_LO16
+ -- : BFD_RELOC_MIPS_SUB
+ -- : BFD_RELOC_MIPS_GOT_PAGE
+ -- : BFD_RELOC_MIPS_GOT_OFST
+ -- : BFD_RELOC_MIPS_GOT_DISP
+ -- : BFD_RELOC_MIPS_SHIFT5
+ -- : BFD_RELOC_MIPS_SHIFT6
+ -- : BFD_RELOC_MIPS_INSERT_A
+ -- : BFD_RELOC_MIPS_INSERT_B
+ -- : BFD_RELOC_MIPS_DELETE
+ -- : BFD_RELOC_MIPS_HIGHEST
+ -- : BFD_RELOC_MIPS_HIGHER
+ -- : BFD_RELOC_MIPS_SCN_DISP
+ -- : BFD_RELOC_MIPS_REL16
+ -- : BFD_RELOC_MIPS_RELGOT
+ -- : BFD_RELOC_MIPS_JALR
+ -- : BFD_RELOC_MIPS_TLS_DTPMOD32
+ -- : BFD_RELOC_MIPS_TLS_DTPREL32
+ -- : BFD_RELOC_MIPS_TLS_DTPMOD64
+ -- : BFD_RELOC_MIPS_TLS_DTPREL64
+ -- : BFD_RELOC_MIPS_TLS_GD
+ -- : BFD_RELOC_MIPS_TLS_LDM
+ -- : BFD_RELOC_MIPS_TLS_DTPREL_HI16
+ -- : BFD_RELOC_MIPS_TLS_DTPREL_LO16
+ -- : BFD_RELOC_MIPS_TLS_GOTTPREL
+ -- : BFD_RELOC_MIPS_TLS_TPREL32
+ -- : BFD_RELOC_MIPS_TLS_TPREL64
+ -- : BFD_RELOC_MIPS_TLS_TPREL_HI16
+ -- : BFD_RELOC_MIPS_TLS_TPREL_LO16
+     MIPS ELF relocations.
+
+ -- : BFD_RELOC_MIPS_COPY
+ -- : BFD_RELOC_MIPS_JUMP_SLOT
+     MIPS ELF relocations (VxWorks extensions).
+
+ -- : BFD_RELOC_FRV_LABEL16
+ -- : BFD_RELOC_FRV_LABEL24
+ -- : BFD_RELOC_FRV_LO16
+ -- : BFD_RELOC_FRV_HI16
+ -- : BFD_RELOC_FRV_GPREL12
+ -- : BFD_RELOC_FRV_GPRELU12
+ -- : BFD_RELOC_FRV_GPREL32
+ -- : BFD_RELOC_FRV_GPRELHI
+ -- : BFD_RELOC_FRV_GPRELLO
+ -- : BFD_RELOC_FRV_GOT12
+ -- : BFD_RELOC_FRV_GOTHI
+ -- : BFD_RELOC_FRV_GOTLO
+ -- : BFD_RELOC_FRV_FUNCDESC
+ -- : BFD_RELOC_FRV_FUNCDESC_GOT12
+ -- : BFD_RELOC_FRV_FUNCDESC_GOTHI
+ -- : BFD_RELOC_FRV_FUNCDESC_GOTLO
+ -- : BFD_RELOC_FRV_FUNCDESC_VALUE
+ -- : BFD_RELOC_FRV_FUNCDESC_GOTOFF12
+ -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
+ -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
+ -- : BFD_RELOC_FRV_GOTOFF12
+ -- : BFD_RELOC_FRV_GOTOFFHI
+ -- : BFD_RELOC_FRV_GOTOFFLO
+ -- : BFD_RELOC_FRV_GETTLSOFF
+ -- : BFD_RELOC_FRV_TLSDESC_VALUE
+ -- : BFD_RELOC_FRV_GOTTLSDESC12
+ -- : BFD_RELOC_FRV_GOTTLSDESCHI
+ -- : BFD_RELOC_FRV_GOTTLSDESCLO
+ -- : BFD_RELOC_FRV_TLSMOFF12
+ -- : BFD_RELOC_FRV_TLSMOFFHI
+ -- : BFD_RELOC_FRV_TLSMOFFLO
+ -- : BFD_RELOC_FRV_GOTTLSOFF12
+ -- : BFD_RELOC_FRV_GOTTLSOFFHI
+ -- : BFD_RELOC_FRV_GOTTLSOFFLO
+ -- : BFD_RELOC_FRV_TLSOFF
+ -- : BFD_RELOC_FRV_TLSDESC_RELAX
+ -- : BFD_RELOC_FRV_GETTLSOFF_RELAX
+ -- : BFD_RELOC_FRV_TLSOFF_RELAX
+ -- : BFD_RELOC_FRV_TLSMOFF
+     Fujitsu Frv Relocations.
+
+ -- : BFD_RELOC_MN10300_GOTOFF24
+     This is a 24bit GOT-relative reloc for the mn10300.
+
+ -- : BFD_RELOC_MN10300_GOT32
+     This is a 32bit GOT-relative reloc for the mn10300, offset by two
+     bytes in the instruction.
+
+ -- : BFD_RELOC_MN10300_GOT24
+     This is a 24bit GOT-relative reloc for the mn10300, offset by two
+     bytes in the instruction.
+
+ -- : BFD_RELOC_MN10300_GOT16
+     This is a 16bit GOT-relative reloc for the mn10300, offset by two
+     bytes in the instruction.
+
+ -- : BFD_RELOC_MN10300_COPY
+     Copy symbol at runtime.
+
+ -- : BFD_RELOC_MN10300_GLOB_DAT
+     Create GOT entry.
+
+ -- : BFD_RELOC_MN10300_JMP_SLOT
+     Create PLT entry.
+
+ -- : BFD_RELOC_MN10300_RELATIVE
+     Adjust by program base.
+
+ -- : BFD_RELOC_386_GOT32
+ -- : BFD_RELOC_386_PLT32
+ -- : BFD_RELOC_386_COPY
+ -- : BFD_RELOC_386_GLOB_DAT
+ -- : BFD_RELOC_386_JUMP_SLOT
+ -- : BFD_RELOC_386_RELATIVE
+ -- : BFD_RELOC_386_GOTOFF
+ -- : BFD_RELOC_386_GOTPC
+ -- : BFD_RELOC_386_TLS_TPOFF
+ -- : BFD_RELOC_386_TLS_IE
+ -- : BFD_RELOC_386_TLS_GOTIE
+ -- : BFD_RELOC_386_TLS_LE
+ -- : BFD_RELOC_386_TLS_GD
+ -- : BFD_RELOC_386_TLS_LDM
+ -- : BFD_RELOC_386_TLS_LDO_32
+ -- : BFD_RELOC_386_TLS_IE_32
+ -- : BFD_RELOC_386_TLS_LE_32
+ -- : BFD_RELOC_386_TLS_DTPMOD32
+ -- : BFD_RELOC_386_TLS_DTPOFF32
+ -- : BFD_RELOC_386_TLS_TPOFF32
+ -- : BFD_RELOC_386_TLS_GOTDESC
+ -- : BFD_RELOC_386_TLS_DESC_CALL
+ -- : BFD_RELOC_386_TLS_DESC
+     i386/elf relocations
+
+ -- : BFD_RELOC_X86_64_GOT32
+ -- : BFD_RELOC_X86_64_PLT32
+ -- : BFD_RELOC_X86_64_COPY
+ -- : BFD_RELOC_X86_64_GLOB_DAT
+ -- : BFD_RELOC_X86_64_JUMP_SLOT
+ -- : BFD_RELOC_X86_64_RELATIVE
+ -- : BFD_RELOC_X86_64_GOTPCREL
+ -- : BFD_RELOC_X86_64_32S
+ -- : BFD_RELOC_X86_64_DTPMOD64
+ -- : BFD_RELOC_X86_64_DTPOFF64
+ -- : BFD_RELOC_X86_64_TPOFF64
+ -- : BFD_RELOC_X86_64_TLSGD
+ -- : BFD_RELOC_X86_64_TLSLD
+ -- : BFD_RELOC_X86_64_DTPOFF32
+ -- : BFD_RELOC_X86_64_GOTTPOFF
+ -- : BFD_RELOC_X86_64_TPOFF32
+ -- : BFD_RELOC_X86_64_GOTOFF64
+ -- : BFD_RELOC_X86_64_GOTPC32
+ -- : BFD_RELOC_X86_64_GOT64
+ -- : BFD_RELOC_X86_64_GOTPCREL64
+ -- : BFD_RELOC_X86_64_GOTPC64
+ -- : BFD_RELOC_X86_64_GOTPLT64
+ -- : BFD_RELOC_X86_64_PLTOFF64
+ -- : BFD_RELOC_X86_64_GOTPC32_TLSDESC
+ -- : BFD_RELOC_X86_64_TLSDESC_CALL
+ -- : BFD_RELOC_X86_64_TLSDESC
+     x86-64/elf relocations
+
+ -- : BFD_RELOC_NS32K_IMM_8
+ -- : BFD_RELOC_NS32K_IMM_16
+ -- : BFD_RELOC_NS32K_IMM_32
+ -- : BFD_RELOC_NS32K_IMM_8_PCREL
+ -- : BFD_RELOC_NS32K_IMM_16_PCREL
+ -- : BFD_RELOC_NS32K_IMM_32_PCREL
+ -- : BFD_RELOC_NS32K_DISP_8
+ -- : BFD_RELOC_NS32K_DISP_16
+ -- : BFD_RELOC_NS32K_DISP_32
+ -- : BFD_RELOC_NS32K_DISP_8_PCREL
+ -- : BFD_RELOC_NS32K_DISP_16_PCREL
+ -- : BFD_RELOC_NS32K_DISP_32_PCREL
+     ns32k relocations
+
+ -- : BFD_RELOC_PDP11_DISP_8_PCREL
+ -- : BFD_RELOC_PDP11_DISP_6_PCREL
+     PDP11 relocations
+
+ -- : BFD_RELOC_PJ_CODE_HI16
+ -- : BFD_RELOC_PJ_CODE_LO16
+ -- : BFD_RELOC_PJ_CODE_DIR16
+ -- : BFD_RELOC_PJ_CODE_DIR32
+ -- : BFD_RELOC_PJ_CODE_REL16
+ -- : BFD_RELOC_PJ_CODE_REL32
+     Picojava relocs.  Not all of these appear in object files.
+
+ -- : BFD_RELOC_PPC_B26
+ -- : BFD_RELOC_PPC_BA26
+ -- : BFD_RELOC_PPC_TOC16
+ -- : BFD_RELOC_PPC_B16
+ -- : BFD_RELOC_PPC_B16_BRTAKEN
+ -- : BFD_RELOC_PPC_B16_BRNTAKEN
+ -- : BFD_RELOC_PPC_BA16
+ -- : BFD_RELOC_PPC_BA16_BRTAKEN
+ -- : BFD_RELOC_PPC_BA16_BRNTAKEN
+ -- : BFD_RELOC_PPC_COPY
+ -- : BFD_RELOC_PPC_GLOB_DAT
+ -- : BFD_RELOC_PPC_JMP_SLOT
+ -- : BFD_RELOC_PPC_RELATIVE
+ -- : BFD_RELOC_PPC_LOCAL24PC
+ -- : BFD_RELOC_PPC_EMB_NADDR32
+ -- : BFD_RELOC_PPC_EMB_NADDR16
+ -- : BFD_RELOC_PPC_EMB_NADDR16_LO
+ -- : BFD_RELOC_PPC_EMB_NADDR16_HI
+ -- : BFD_RELOC_PPC_EMB_NADDR16_HA
+ -- : BFD_RELOC_PPC_EMB_SDAI16
+ -- : BFD_RELOC_PPC_EMB_SDA2I16
+ -- : BFD_RELOC_PPC_EMB_SDA2REL
+ -- : BFD_RELOC_PPC_EMB_SDA21
+ -- : BFD_RELOC_PPC_EMB_MRKREF
+ -- : BFD_RELOC_PPC_EMB_RELSEC16
+ -- : BFD_RELOC_PPC_EMB_RELST_LO
+ -- : BFD_RELOC_PPC_EMB_RELST_HI
+ -- : BFD_RELOC_PPC_EMB_RELST_HA
+ -- : BFD_RELOC_PPC_EMB_BIT_FLD
+ -- : BFD_RELOC_PPC_EMB_RELSDA
+ -- : BFD_RELOC_PPC64_HIGHER
+ -- : BFD_RELOC_PPC64_HIGHER_S
+ -- : BFD_RELOC_PPC64_HIGHEST
+ -- : BFD_RELOC_PPC64_HIGHEST_S
+ -- : BFD_RELOC_PPC64_TOC16_LO
+ -- : BFD_RELOC_PPC64_TOC16_HI
+ -- : BFD_RELOC_PPC64_TOC16_HA
+ -- : BFD_RELOC_PPC64_TOC
+ -- : BFD_RELOC_PPC64_PLTGOT16
+ -- : BFD_RELOC_PPC64_PLTGOT16_LO
+ -- : BFD_RELOC_PPC64_PLTGOT16_HI
+ -- : BFD_RELOC_PPC64_PLTGOT16_HA
+ -- : BFD_RELOC_PPC64_ADDR16_DS
+ -- : BFD_RELOC_PPC64_ADDR16_LO_DS
+ -- : BFD_RELOC_PPC64_GOT16_DS
+ -- : BFD_RELOC_PPC64_GOT16_LO_DS
+ -- : BFD_RELOC_PPC64_PLT16_LO_DS
+ -- : BFD_RELOC_PPC64_SECTOFF_DS
+ -- : BFD_RELOC_PPC64_SECTOFF_LO_DS
+ -- : BFD_RELOC_PPC64_TOC16_DS
+ -- : BFD_RELOC_PPC64_TOC16_LO_DS
+ -- : BFD_RELOC_PPC64_PLTGOT16_DS
+ -- : BFD_RELOC_PPC64_PLTGOT16_LO_DS
+     Power(rs6000) and PowerPC relocations.
+
+ -- : BFD_RELOC_PPC_TLS
+ -- : BFD_RELOC_PPC_DTPMOD
+ -- : BFD_RELOC_PPC_TPREL16
+ -- : BFD_RELOC_PPC_TPREL16_LO
+ -- : BFD_RELOC_PPC_TPREL16_HI
+ -- : BFD_RELOC_PPC_TPREL16_HA
+ -- : BFD_RELOC_PPC_TPREL
+ -- : BFD_RELOC_PPC_DTPREL16
+ -- : BFD_RELOC_PPC_DTPREL16_LO
+ -- : BFD_RELOC_PPC_DTPREL16_HI
+ -- : BFD_RELOC_PPC_DTPREL16_HA
+ -- : BFD_RELOC_PPC_DTPREL
+ -- : BFD_RELOC_PPC_GOT_TLSGD16
+ -- : BFD_RELOC_PPC_GOT_TLSGD16_LO
+ -- : BFD_RELOC_PPC_GOT_TLSGD16_HI
+ -- : BFD_RELOC_PPC_GOT_TLSGD16_HA
+ -- : BFD_RELOC_PPC_GOT_TLSLD16
+ -- : BFD_RELOC_PPC_GOT_TLSLD16_LO
+ -- : BFD_RELOC_PPC_GOT_TLSLD16_HI
+ -- : BFD_RELOC_PPC_GOT_TLSLD16_HA
+ -- : BFD_RELOC_PPC_GOT_TPREL16
+ -- : BFD_RELOC_PPC_GOT_TPREL16_LO
+ -- : BFD_RELOC_PPC_GOT_TPREL16_HI
+ -- : BFD_RELOC_PPC_GOT_TPREL16_HA
+ -- : BFD_RELOC_PPC_GOT_DTPREL16
+ -- : BFD_RELOC_PPC_GOT_DTPREL16_LO
+ -- : BFD_RELOC_PPC_GOT_DTPREL16_HI
+ -- : BFD_RELOC_PPC_GOT_DTPREL16_HA
+ -- : BFD_RELOC_PPC64_TPREL16_DS
+ -- : BFD_RELOC_PPC64_TPREL16_LO_DS
+ -- : BFD_RELOC_PPC64_TPREL16_HIGHER
+ -- : BFD_RELOC_PPC64_TPREL16_HIGHERA
+ -- : BFD_RELOC_PPC64_TPREL16_HIGHEST
+ -- : BFD_RELOC_PPC64_TPREL16_HIGHESTA
+ -- : BFD_RELOC_PPC64_DTPREL16_DS
+ -- : BFD_RELOC_PPC64_DTPREL16_LO_DS
+ -- : BFD_RELOC_PPC64_DTPREL16_HIGHER
+ -- : BFD_RELOC_PPC64_DTPREL16_HIGHERA
+ -- : BFD_RELOC_PPC64_DTPREL16_HIGHEST
+ -- : BFD_RELOC_PPC64_DTPREL16_HIGHESTA
+     PowerPC and PowerPC64 thread-local storage relocations.
+
+ -- : BFD_RELOC_I370_D12
+     IBM 370/390 relocations
+
+ -- : BFD_RELOC_CTOR
+     The type of reloc used to build a constructor table - at the moment
+     probably a 32 bit wide absolute relocation, but the target can
+     choose.  It generally does map to one of the other relocation
+     types.
+
+ -- : BFD_RELOC_ARM_PCREL_BRANCH
+     ARM 26 bit pc-relative branch.  The lowest two bits must be zero
+     and are not stored in the instruction.
+
+ -- : BFD_RELOC_ARM_PCREL_BLX
+     ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
+     not stored in the instruction.  The 2nd lowest bit comes from a 1
+     bit field in the instruction.
+
+ -- : BFD_RELOC_THUMB_PCREL_BLX
+     Thumb 22 bit pc-relative branch.  The lowest bit must be zero and
+     is not stored in the instruction.  The 2nd lowest bit comes from a
+     1 bit field in the instruction.
+
+ -- : BFD_RELOC_ARM_PCREL_CALL
+     ARM 26-bit pc-relative branch for an unconditional BL or BLX
+     instruction.
+
+ -- : BFD_RELOC_ARM_PCREL_JUMP
+     ARM 26-bit pc-relative branch for B or conditional BL instruction.
+
+ -- : BFD_RELOC_THUMB_PCREL_BRANCH7
+ -- : BFD_RELOC_THUMB_PCREL_BRANCH9
+ -- : BFD_RELOC_THUMB_PCREL_BRANCH12
+ -- : BFD_RELOC_THUMB_PCREL_BRANCH20
+ -- : BFD_RELOC_THUMB_PCREL_BRANCH23
+ -- : BFD_RELOC_THUMB_PCREL_BRANCH25
+     Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.  The
+     lowest bit must be zero and is not stored in the instruction.
+     Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
+     "nn" one smaller in all cases.  Note further that BRANCH23
+     corresponds to R_ARM_THM_CALL.
+
+ -- : BFD_RELOC_ARM_OFFSET_IMM
+     12-bit immediate offset, used in ARM-format ldr and str
+     instructions.
+
+ -- : BFD_RELOC_ARM_THUMB_OFFSET
+     5-bit immediate offset, used in Thumb-format ldr and str
+     instructions.
+
+ -- : BFD_RELOC_ARM_TARGET1
+     Pc-relative or absolute relocation depending on target.  Used for
+     entries in .init_array sections.
+
+ -- : BFD_RELOC_ARM_ROSEGREL32
+     Read-only segment base relative address.
+
+ -- : BFD_RELOC_ARM_SBREL32
+     Data segment base relative address.
+
+ -- : BFD_RELOC_ARM_TARGET2
+     This reloc is used for references to RTTI data from exception
+     handling tables.  The actual definition depends on the target.  It
+     may be a pc-relative or some form of GOT-indirect relocation.
+
+ -- : BFD_RELOC_ARM_PREL31
+     31-bit PC relative address.
+
+ -- : BFD_RELOC_ARM_MOVW
+ -- : BFD_RELOC_ARM_MOVT
+ -- : BFD_RELOC_ARM_MOVW_PCREL
+ -- : BFD_RELOC_ARM_MOVT_PCREL
+ -- : BFD_RELOC_ARM_THUMB_MOVW
+ -- : BFD_RELOC_ARM_THUMB_MOVT
+ -- : BFD_RELOC_ARM_THUMB_MOVW_PCREL
+ -- : BFD_RELOC_ARM_THUMB_MOVT_PCREL
+     Low and High halfword relocations for MOVW and MOVT instructions.
+
+ -- : BFD_RELOC_ARM_JUMP_SLOT
+ -- : BFD_RELOC_ARM_GLOB_DAT
+ -- : BFD_RELOC_ARM_GOT32
+ -- : BFD_RELOC_ARM_PLT32
+ -- : BFD_RELOC_ARM_RELATIVE
+ -- : BFD_RELOC_ARM_GOTOFF
+ -- : BFD_RELOC_ARM_GOTPC
+     Relocations for setting up GOTs and PLTs for shared libraries.
+
+ -- : BFD_RELOC_ARM_TLS_GD32
+ -- : BFD_RELOC_ARM_TLS_LDO32
+ -- : BFD_RELOC_ARM_TLS_LDM32
+ -- : BFD_RELOC_ARM_TLS_DTPOFF32
+ -- : BFD_RELOC_ARM_TLS_DTPMOD32
+ -- : BFD_RELOC_ARM_TLS_TPOFF32
+ -- : BFD_RELOC_ARM_TLS_IE32
+ -- : BFD_RELOC_ARM_TLS_LE32
+     ARM thread-local storage relocations.
+
+ -- : BFD_RELOC_ARM_ALU_PC_G0_NC
+ -- : BFD_RELOC_ARM_ALU_PC_G0
+ -- : BFD_RELOC_ARM_ALU_PC_G1_NC
+ -- : BFD_RELOC_ARM_ALU_PC_G1
+ -- : BFD_RELOC_ARM_ALU_PC_G2
+ -- : BFD_RELOC_ARM_LDR_PC_G0
+ -- : BFD_RELOC_ARM_LDR_PC_G1
+ -- : BFD_RELOC_ARM_LDR_PC_G2
+ -- : BFD_RELOC_ARM_LDRS_PC_G0
+ -- : BFD_RELOC_ARM_LDRS_PC_G1
+ -- : BFD_RELOC_ARM_LDRS_PC_G2
+ -- : BFD_RELOC_ARM_LDC_PC_G0
+ -- : BFD_RELOC_ARM_LDC_PC_G1
+ -- : BFD_RELOC_ARM_LDC_PC_G2
+ -- : BFD_RELOC_ARM_ALU_SB_G0_NC
+ -- : BFD_RELOC_ARM_ALU_SB_G0
+ -- : BFD_RELOC_ARM_ALU_SB_G1_NC
+ -- : BFD_RELOC_ARM_ALU_SB_G1
+ -- : BFD_RELOC_ARM_ALU_SB_G2
+ -- : BFD_RELOC_ARM_LDR_SB_G0
+ -- : BFD_RELOC_ARM_LDR_SB_G1
+ -- : BFD_RELOC_ARM_LDR_SB_G2
+ -- : BFD_RELOC_ARM_LDRS_SB_G0
+ -- : BFD_RELOC_ARM_LDRS_SB_G1
+ -- : BFD_RELOC_ARM_LDRS_SB_G2
+ -- : BFD_RELOC_ARM_LDC_SB_G0
+ -- : BFD_RELOC_ARM_LDC_SB_G1
+ -- : BFD_RELOC_ARM_LDC_SB_G2
+     ARM group relocations.
+
+ -- : BFD_RELOC_ARM_IMMEDIATE
+ -- : BFD_RELOC_ARM_ADRL_IMMEDIATE
+ -- : BFD_RELOC_ARM_T32_IMMEDIATE
+ -- : BFD_RELOC_ARM_T32_ADD_IMM
+ -- : BFD_RELOC_ARM_T32_IMM12
+ -- : BFD_RELOC_ARM_T32_ADD_PC12
+ -- : BFD_RELOC_ARM_SHIFT_IMM
+ -- : BFD_RELOC_ARM_SMC
+ -- : BFD_RELOC_ARM_SWI
+ -- : BFD_RELOC_ARM_MULTI
+ -- : BFD_RELOC_ARM_CP_OFF_IMM
+ -- : BFD_RELOC_ARM_CP_OFF_IMM_S2
+ -- : BFD_RELOC_ARM_T32_CP_OFF_IMM
+ -- : BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
+ -- : BFD_RELOC_ARM_ADR_IMM
+ -- : BFD_RELOC_ARM_LDR_IMM
+ -- : BFD_RELOC_ARM_LITERAL
+ -- : BFD_RELOC_ARM_IN_POOL
+ -- : BFD_RELOC_ARM_OFFSET_IMM8
+ -- : BFD_RELOC_ARM_T32_OFFSET_U8
+ -- : BFD_RELOC_ARM_T32_OFFSET_IMM
+ -- : BFD_RELOC_ARM_HWLITERAL
+ -- : BFD_RELOC_ARM_THUMB_ADD
+ -- : BFD_RELOC_ARM_THUMB_IMM
+ -- : BFD_RELOC_ARM_THUMB_SHIFT
+     These relocs are only used within the ARM assembler.  They are not
+     (at present) written to any object files.
+
+ -- : BFD_RELOC_SH_PCDISP8BY2
+ -- : BFD_RELOC_SH_PCDISP12BY2
+ -- : BFD_RELOC_SH_IMM3
+ -- : BFD_RELOC_SH_IMM3U
+ -- : BFD_RELOC_SH_DISP12
+ -- : BFD_RELOC_SH_DISP12BY2
+ -- : BFD_RELOC_SH_DISP12BY4
+ -- : BFD_RELOC_SH_DISP12BY8
+ -- : BFD_RELOC_SH_DISP20
+ -- : BFD_RELOC_SH_DISP20BY8
+ -- : BFD_RELOC_SH_IMM4
+ -- : BFD_RELOC_SH_IMM4BY2
+ -- : BFD_RELOC_SH_IMM4BY4
+ -- : BFD_RELOC_SH_IMM8
+ -- : BFD_RELOC_SH_IMM8BY2
+ -- : BFD_RELOC_SH_IMM8BY4
+ -- : BFD_RELOC_SH_PCRELIMM8BY2
+ -- : BFD_RELOC_SH_PCRELIMM8BY4
+ -- : BFD_RELOC_SH_SWITCH16
+ -- : BFD_RELOC_SH_SWITCH32
+ -- : BFD_RELOC_SH_USES
+ -- : BFD_RELOC_SH_COUNT
+ -- : BFD_RELOC_SH_ALIGN
+ -- : BFD_RELOC_SH_CODE
+ -- : BFD_RELOC_SH_DATA
+ -- : BFD_RELOC_SH_LABEL
+ -- : BFD_RELOC_SH_LOOP_START
+ -- : BFD_RELOC_SH_LOOP_END
+ -- : BFD_RELOC_SH_COPY
+ -- : BFD_RELOC_SH_GLOB_DAT
+ -- : BFD_RELOC_SH_JMP_SLOT
+ -- : BFD_RELOC_SH_RELATIVE
+ -- : BFD_RELOC_SH_GOTPC
+ -- : BFD_RELOC_SH_GOT_LOW16
+ -- : BFD_RELOC_SH_GOT_MEDLOW16
+ -- : BFD_RELOC_SH_GOT_MEDHI16
+ -- : BFD_RELOC_SH_GOT_HI16
+ -- : BFD_RELOC_SH_GOTPLT_LOW16
+ -- : BFD_RELOC_SH_GOTPLT_MEDLOW16
+ -- : BFD_RELOC_SH_GOTPLT_MEDHI16
+ -- : BFD_RELOC_SH_GOTPLT_HI16
+ -- : BFD_RELOC_SH_PLT_LOW16
+ -- : BFD_RELOC_SH_PLT_MEDLOW16
+ -- : BFD_RELOC_SH_PLT_MEDHI16
+ -- : BFD_RELOC_SH_PLT_HI16
+ -- : BFD_RELOC_SH_GOTOFF_LOW16
+ -- : BFD_RELOC_SH_GOTOFF_MEDLOW16
+ -- : BFD_RELOC_SH_GOTOFF_MEDHI16
+ -- : BFD_RELOC_SH_GOTOFF_HI16
+ -- : BFD_RELOC_SH_GOTPC_LOW16
+ -- : BFD_RELOC_SH_GOTPC_MEDLOW16
+ -- : BFD_RELOC_SH_GOTPC_MEDHI16
+ -- : BFD_RELOC_SH_GOTPC_HI16
+ -- : BFD_RELOC_SH_COPY64
+ -- : BFD_RELOC_SH_GLOB_DAT64
+ -- : BFD_RELOC_SH_JMP_SLOT64
+ -- : BFD_RELOC_SH_RELATIVE64
+ -- : BFD_RELOC_SH_GOT10BY4
+ -- : BFD_RELOC_SH_GOT10BY8
+ -- : BFD_RELOC_SH_GOTPLT10BY4
+ -- : BFD_RELOC_SH_GOTPLT10BY8
+ -- : BFD_RELOC_SH_GOTPLT32
+ -- : BFD_RELOC_SH_SHMEDIA_CODE
+ -- : BFD_RELOC_SH_IMMU5
+ -- : BFD_RELOC_SH_IMMS6
+ -- : BFD_RELOC_SH_IMMS6BY32
+ -- : BFD_RELOC_SH_IMMU6
+ -- : BFD_RELOC_SH_IMMS10
+ -- : BFD_RELOC_SH_IMMS10BY2
+ -- : BFD_RELOC_SH_IMMS10BY4
+ -- : BFD_RELOC_SH_IMMS10BY8
+ -- : BFD_RELOC_SH_IMMS16
+ -- : BFD_RELOC_SH_IMMU16
+ -- : BFD_RELOC_SH_IMM_LOW16
+ -- : BFD_RELOC_SH_IMM_LOW16_PCREL
+ -- : BFD_RELOC_SH_IMM_MEDLOW16
+ -- : BFD_RELOC_SH_IMM_MEDLOW16_PCREL
+ -- : BFD_RELOC_SH_IMM_MEDHI16
+ -- : BFD_RELOC_SH_IMM_MEDHI16_PCREL
+ -- : BFD_RELOC_SH_IMM_HI16
+ -- : BFD_RELOC_SH_IMM_HI16_PCREL
+ -- : BFD_RELOC_SH_PT_16
+ -- : BFD_RELOC_SH_TLS_GD_32
+ -- : BFD_RELOC_SH_TLS_LD_32
+ -- : BFD_RELOC_SH_TLS_LDO_32
+ -- : BFD_RELOC_SH_TLS_IE_32
+ -- : BFD_RELOC_SH_TLS_LE_32
+ -- : BFD_RELOC_SH_TLS_DTPMOD32
+ -- : BFD_RELOC_SH_TLS_DTPOFF32
+ -- : BFD_RELOC_SH_TLS_TPOFF32
+     Renesas / SuperH SH relocs.  Not all of these appear in object
+     files.
+
+ -- : BFD_RELOC_ARC_B22_PCREL
+     ARC Cores relocs.  ARC 22 bit pc-relative branch.  The lowest two
+     bits must be zero and are not stored in the instruction.  The high
+     20 bits are installed in bits 26 through 7 of the instruction.
+
+ -- : BFD_RELOC_ARC_B26
+     ARC 26 bit absolute branch.  The lowest two bits must be zero and
+     are not stored in the instruction.  The high 24 bits are installed
+     in bits 23 through 0.
+
+ -- : BFD_RELOC_BFIN_16_IMM
+     ADI Blackfin 16 bit immediate absolute reloc.
+
+ -- : BFD_RELOC_BFIN_16_HIGH
+     ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
+
+ -- : BFD_RELOC_BFIN_4_PCREL
+     ADI Blackfin 'a' part of LSETUP.
+
+ -- : BFD_RELOC_BFIN_5_PCREL
+     ADI Blackfin.
+
+ -- : BFD_RELOC_BFIN_16_LOW
+     ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
+
+ -- : BFD_RELOC_BFIN_10_PCREL
+     ADI Blackfin.
+
+ -- : BFD_RELOC_BFIN_11_PCREL
+     ADI Blackfin 'b' part of LSETUP.
+
+ -- : BFD_RELOC_BFIN_12_PCREL_JUMP
+     ADI Blackfin.
+
+ -- : BFD_RELOC_BFIN_12_PCREL_JUMP_S
+     ADI Blackfin Short jump, pcrel.
+
+ -- : BFD_RELOC_BFIN_24_PCREL_CALL_X
+     ADI Blackfin Call.x not implemented.
+
+ -- : BFD_RELOC_BFIN_24_PCREL_JUMP_L
+     ADI Blackfin Long Jump pcrel.
+
+ -- : BFD_RELOC_BFIN_GOT17M4
+ -- : BFD_RELOC_BFIN_GOTHI
+ -- : BFD_RELOC_BFIN_GOTLO
+ -- : BFD_RELOC_BFIN_FUNCDESC
+ -- : BFD_RELOC_BFIN_FUNCDESC_GOT17M4
+ -- : BFD_RELOC_BFIN_FUNCDESC_GOTHI
+ -- : BFD_RELOC_BFIN_FUNCDESC_GOTLO
+ -- : BFD_RELOC_BFIN_FUNCDESC_VALUE
+ -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
+ -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
+ -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
+ -- : BFD_RELOC_BFIN_GOTOFF17M4
+ -- : BFD_RELOC_BFIN_GOTOFFHI
+ -- : BFD_RELOC_BFIN_GOTOFFLO
+     ADI Blackfin FD-PIC relocations.
+
+ -- : BFD_RELOC_BFIN_GOT
+     ADI Blackfin GOT relocation.
+
+ -- : BFD_RELOC_BFIN_PLTPC
+     ADI Blackfin PLTPC relocation.
+
+ -- : BFD_ARELOC_BFIN_PUSH
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_CONST
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_ADD
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_SUB
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_MULT
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_DIV
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_MOD
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_LSHIFT
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_RSHIFT
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_AND
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_OR
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_XOR
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_LAND
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_LOR
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_LEN
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_NEG
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_COMP
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_PAGE
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_HWPAGE
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_ADDR
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_RELOC_D10V_10_PCREL_R
+     Mitsubishi D10V relocs.  This is a 10-bit reloc with the right 2
+     bits assumed to be 0.
+
+ -- : BFD_RELOC_D10V_10_PCREL_L
+     Mitsubishi D10V relocs.  This is a 10-bit reloc with the right 2
+     bits assumed to be 0.  This is the same as the previous reloc
+     except it is in the left container, i.e., shifted left 15 bits.
+
+ -- : BFD_RELOC_D10V_18
+     This is an 18-bit reloc with the right 2 bits assumed to be 0.
+
+ -- : BFD_RELOC_D10V_18_PCREL
+     This is an 18-bit reloc with the right 2 bits assumed to be 0.
+
+ -- : BFD_RELOC_D30V_6
+     Mitsubishi D30V relocs.  This is a 6-bit absolute reloc.
+
+ -- : BFD_RELOC_D30V_9_PCREL
+     This is a 6-bit pc-relative reloc with the right 3 bits assumed to
+     be 0.
+
+ -- : BFD_RELOC_D30V_9_PCREL_R
+     This is a 6-bit pc-relative reloc with the right 3 bits assumed to
+     be 0. Same as the previous reloc but on the right side of the
+     container.
+
+ -- : BFD_RELOC_D30V_15
+     This is a 12-bit absolute reloc with the right 3 bitsassumed to be
+     0.
+
+ -- : BFD_RELOC_D30V_15_PCREL
+     This is a 12-bit pc-relative reloc with the right 3 bits assumed
+     to be 0.
+
+ -- : BFD_RELOC_D30V_15_PCREL_R
+     This is a 12-bit pc-relative reloc with the right 3 bits assumed
+     to be 0. Same as the previous reloc but on the right side of the
+     container.
+
+ -- : BFD_RELOC_D30V_21
+     This is an 18-bit absolute reloc with the right 3 bits assumed to
+     be 0.
+
+ -- : BFD_RELOC_D30V_21_PCREL
+     This is an 18-bit pc-relative reloc with the right 3 bits assumed
+     to be 0.
+
+ -- : BFD_RELOC_D30V_21_PCREL_R
+     This is an 18-bit pc-relative reloc with the right 3 bits assumed
+     to be 0. Same as the previous reloc but on the right side of the
+     container.
+
+ -- : BFD_RELOC_D30V_32
+     This is a 32-bit absolute reloc.
+
+ -- : BFD_RELOC_D30V_32_PCREL
+     This is a 32-bit pc-relative reloc.
+
+ -- : BFD_RELOC_DLX_HI16_S
+     DLX relocs
+
+ -- : BFD_RELOC_DLX_LO16
+     DLX relocs
+
+ -- : BFD_RELOC_DLX_JMP26
+     DLX relocs
+
+ -- : BFD_RELOC_M32C_HI8
+ -- : BFD_RELOC_M32C_RL_JUMP
+ -- : BFD_RELOC_M32C_RL_1ADDR
+ -- : BFD_RELOC_M32C_RL_2ADDR
+     Renesas M16C/M32C Relocations.
+
+ -- : BFD_RELOC_M32R_24
+     Renesas M32R (formerly Mitsubishi M32R) relocs.  This is a 24 bit
+     absolute address.
+
+ -- : BFD_RELOC_M32R_10_PCREL
+     This is a 10-bit pc-relative reloc with the right 2 bits assumed
+     to be 0.
+
+ -- : BFD_RELOC_M32R_18_PCREL
+     This is an 18-bit reloc with the right 2 bits assumed to be 0.
+
+ -- : BFD_RELOC_M32R_26_PCREL
+     This is a 26-bit reloc with the right 2 bits assumed to be 0.
+
+ -- : BFD_RELOC_M32R_HI16_ULO
+     This is a 16-bit reloc containing the high 16 bits of an address
+     used when the lower 16 bits are treated as unsigned.
+
+ -- : BFD_RELOC_M32R_HI16_SLO
+     This is a 16-bit reloc containing the high 16 bits of an address
+     used when the lower 16 bits are treated as signed.
+
+ -- : BFD_RELOC_M32R_LO16
+     This is a 16-bit reloc containing the lower 16 bits of an address.
+
+ -- : BFD_RELOC_M32R_SDA16
+     This is a 16-bit reloc containing the small data area offset for
+     use in add3, load, and store instructions.
+
+ -- : BFD_RELOC_M32R_GOT24
+ -- : BFD_RELOC_M32R_26_PLTREL
+ -- : BFD_RELOC_M32R_COPY
+ -- : BFD_RELOC_M32R_GLOB_DAT
+ -- : BFD_RELOC_M32R_JMP_SLOT
+ -- : BFD_RELOC_M32R_RELATIVE
+ -- : BFD_RELOC_M32R_GOTOFF
+ -- : BFD_RELOC_M32R_GOTOFF_HI_ULO
+ -- : BFD_RELOC_M32R_GOTOFF_HI_SLO
+ -- : BFD_RELOC_M32R_GOTOFF_LO
+ -- : BFD_RELOC_M32R_GOTPC24
+ -- : BFD_RELOC_M32R_GOT16_HI_ULO
+ -- : BFD_RELOC_M32R_GOT16_HI_SLO
+ -- : BFD_RELOC_M32R_GOT16_LO
+ -- : BFD_RELOC_M32R_GOTPC_HI_ULO
+ -- : BFD_RELOC_M32R_GOTPC_HI_SLO
+ -- : BFD_RELOC_M32R_GOTPC_LO
+     For PIC.
+
+ -- : BFD_RELOC_V850_9_PCREL
+     This is a 9-bit reloc
+
+ -- : BFD_RELOC_V850_22_PCREL
+     This is a 22-bit reloc
+
+ -- : BFD_RELOC_V850_SDA_16_16_OFFSET
+     This is a 16 bit offset from the short data area pointer.
+
+ -- : BFD_RELOC_V850_SDA_15_16_OFFSET
+     This is a 16 bit offset (of which only 15 bits are used) from the
+     short data area pointer.
+
+ -- : BFD_RELOC_V850_ZDA_16_16_OFFSET
+     This is a 16 bit offset from the zero data area pointer.
+
+ -- : BFD_RELOC_V850_ZDA_15_16_OFFSET
+     This is a 16 bit offset (of which only 15 bits are used) from the
+     zero data area pointer.
+
+ -- : BFD_RELOC_V850_TDA_6_8_OFFSET
+     This is an 8 bit offset (of which only 6 bits are used) from the
+     tiny data area pointer.
+
+ -- : BFD_RELOC_V850_TDA_7_8_OFFSET
+     This is an 8bit offset (of which only 7 bits are used) from the
+     tiny data area pointer.
+
+ -- : BFD_RELOC_V850_TDA_7_7_OFFSET
+     This is a 7 bit offset from the tiny data area pointer.
+
+ -- : BFD_RELOC_V850_TDA_16_16_OFFSET
+     This is a 16 bit offset from the tiny data area pointer.
+
+ -- : BFD_RELOC_V850_TDA_4_5_OFFSET
+     This is a 5 bit offset (of which only 4 bits are used) from the
+     tiny data area pointer.
+
+ -- : BFD_RELOC_V850_TDA_4_4_OFFSET
+     This is a 4 bit offset from the tiny data area pointer.
+
+ -- : BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
+     This is a 16 bit offset from the short data area pointer, with the
+     bits placed non-contiguously in the instruction.
+
+ -- : BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
+     This is a 16 bit offset from the zero data area pointer, with the
+     bits placed non-contiguously in the instruction.
+
+ -- : BFD_RELOC_V850_CALLT_6_7_OFFSET
+     This is a 6 bit offset from the call table base pointer.
+
+ -- : BFD_RELOC_V850_CALLT_16_16_OFFSET
+     This is a 16 bit offset from the call table base pointer.
+
+ -- : BFD_RELOC_V850_LONGCALL
+     Used for relaxing indirect function calls.
+
+ -- : BFD_RELOC_V850_LONGJUMP
+     Used for relaxing indirect jumps.
+
+ -- : BFD_RELOC_V850_ALIGN
+     Used to maintain alignment whilst relaxing.
+
+ -- : BFD_RELOC_V850_LO16_SPLIT_OFFSET
+     This is a variation of BFD_RELOC_LO16 that can be used in v850e
+     ld.bu instructions.
+
+ -- : BFD_RELOC_MN10300_32_PCREL
+     This is a 32bit pcrel reloc for the mn10300, offset by two bytes
+     in the instruction.
+
+ -- : BFD_RELOC_MN10300_16_PCREL
+     This is a 16bit pcrel reloc for the mn10300, offset by two bytes
+     in the instruction.
+
+ -- : BFD_RELOC_TIC30_LDP
+     This is a 8bit DP reloc for the tms320c30, where the most
+     significant 8 bits of a 24 bit word are placed into the least
+     significant 8 bits of the opcode.
+
+ -- : BFD_RELOC_TIC54X_PARTLS7
+     This is a 7bit reloc for the tms320c54x, where the least
+     significant 7 bits of a 16 bit word are placed into the least
+     significant 7 bits of the opcode.
+
+ -- : BFD_RELOC_TIC54X_PARTMS9
+     This is a 9bit DP reloc for the tms320c54x, where the most
+     significant 9 bits of a 16 bit word are placed into the least
+     significant 9 bits of the opcode.
+
+ -- : BFD_RELOC_TIC54X_23
+     This is an extended address 23-bit reloc for the tms320c54x.
+
+ -- : BFD_RELOC_TIC54X_16_OF_23
+     This is a 16-bit reloc for the tms320c54x, where the least
+     significant 16 bits of a 23-bit extended address are placed into
+     the opcode.
+
+ -- : BFD_RELOC_TIC54X_MS7_OF_23
+     This is a reloc for the tms320c54x, where the most significant 7
+     bits of a 23-bit extended address are placed into the opcode.
+
+ -- : BFD_RELOC_FR30_48
+     This is a 48 bit reloc for the FR30 that stores 32 bits.
+
+ -- : BFD_RELOC_FR30_20
+     This is a 32 bit reloc for the FR30 that stores 20 bits split up
+     into two sections.
+
+ -- : BFD_RELOC_FR30_6_IN_4
+     This is a 16 bit reloc for the FR30 that stores a 6 bit word
+     offset in 4 bits.
+
+ -- : BFD_RELOC_FR30_8_IN_8
+     This is a 16 bit reloc for the FR30 that stores an 8 bit byte
+     offset into 8 bits.
+
+ -- : BFD_RELOC_FR30_9_IN_8
+     This is a 16 bit reloc for the FR30 that stores a 9 bit short
+     offset into 8 bits.
+
+ -- : BFD_RELOC_FR30_10_IN_8
+     This is a 16 bit reloc for the FR30 that stores a 10 bit word
+     offset into 8 bits.
+
+ -- : BFD_RELOC_FR30_9_PCREL
+     This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
+     short offset into 8 bits.
+
+ -- : BFD_RELOC_FR30_12_PCREL
+     This is a 16 bit reloc for the FR30 that stores a 12 bit pc
+     relative short offset into 11 bits.
+
+ -- : BFD_RELOC_MCORE_PCREL_IMM8BY4
+ -- : BFD_RELOC_MCORE_PCREL_IMM11BY2
+ -- : BFD_RELOC_MCORE_PCREL_IMM4BY2
+ -- : BFD_RELOC_MCORE_PCREL_32
+ -- : BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
+ -- : BFD_RELOC_MCORE_RVA
+     Motorola Mcore relocations.
+
+ -- : BFD_RELOC_MMIX_GETA
+ -- : BFD_RELOC_MMIX_GETA_1
+ -- : BFD_RELOC_MMIX_GETA_2
+ -- : BFD_RELOC_MMIX_GETA_3
+     These are relocations for the GETA instruction.
+
+ -- : BFD_RELOC_MMIX_CBRANCH
+ -- : BFD_RELOC_MMIX_CBRANCH_J
+ -- : BFD_RELOC_MMIX_CBRANCH_1
+ -- : BFD_RELOC_MMIX_CBRANCH_2
+ -- : BFD_RELOC_MMIX_CBRANCH_3
+     These are relocations for a conditional branch instruction.
+
+ -- : BFD_RELOC_MMIX_PUSHJ
+ -- : BFD_RELOC_MMIX_PUSHJ_1
+ -- : BFD_RELOC_MMIX_PUSHJ_2
+ -- : BFD_RELOC_MMIX_PUSHJ_3
+ -- : BFD_RELOC_MMIX_PUSHJ_STUBBABLE
+     These are relocations for the PUSHJ instruction.
+
+ -- : BFD_RELOC_MMIX_JMP
+ -- : BFD_RELOC_MMIX_JMP_1
+ -- : BFD_RELOC_MMIX_JMP_2
+ -- : BFD_RELOC_MMIX_JMP_3
+     These are relocations for the JMP instruction.
+
+ -- : BFD_RELOC_MMIX_ADDR19
+     This is a relocation for a relative address as in a GETA
+     instruction or a branch.
+
+ -- : BFD_RELOC_MMIX_ADDR27
+     This is a relocation for a relative address as in a JMP
+     instruction.
+
+ -- : BFD_RELOC_MMIX_REG_OR_BYTE
+     This is a relocation for an instruction field that may be a general
+     register or a value 0..255.
+
+ -- : BFD_RELOC_MMIX_REG
+     This is a relocation for an instruction field that may be a general
+     register.
+
+ -- : BFD_RELOC_MMIX_BASE_PLUS_OFFSET
+     This is a relocation for two instruction fields holding a register
+     and an offset, the equivalent of the relocation.
+
+ -- : BFD_RELOC_MMIX_LOCAL
+     This relocation is an assertion that the expression is not
+     allocated as a global register.  It does not modify contents.
+
+ -- : BFD_RELOC_AVR_7_PCREL
+     This is a 16 bit reloc for the AVR that stores 8 bit pc relative
+     short offset into 7 bits.
+
+ -- : BFD_RELOC_AVR_13_PCREL
+     This is a 16 bit reloc for the AVR that stores 13 bit pc relative
+     short offset into 12 bits.
+
+ -- : BFD_RELOC_AVR_16_PM
+     This is a 16 bit reloc for the AVR that stores 17 bit value
+     (usually program memory address) into 16 bits.
+
+ -- : BFD_RELOC_AVR_LO8_LDI
+     This is a 16 bit reloc for the AVR that stores 8 bit value (usually
+     data memory address) into 8 bit immediate value of LDI insn.
+
+ -- : BFD_RELOC_AVR_HI8_LDI
+     This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
+     bit of data memory address) into 8 bit immediate value of LDI insn.
+
+ -- : BFD_RELOC_AVR_HH8_LDI
+     This is a 16 bit reloc for the AVR that stores 8 bit value (most
+     high 8 bit of program memory address) into 8 bit immediate value
+     of LDI insn.
+
+ -- : BFD_RELOC_AVR_MS8_LDI
+     This is a 16 bit reloc for the AVR that stores 8 bit value (most
+     high 8 bit of 32 bit value) into 8 bit immediate value of LDI insn.
+
+ -- : BFD_RELOC_AVR_LO8_LDI_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (usually data memory address) into 8 bit immediate value of SUBI
+     insn.
+
+ -- : BFD_RELOC_AVR_HI8_LDI_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (high 8 bit of data memory address) into 8 bit immediate value of
+     SUBI insn.
+
+ -- : BFD_RELOC_AVR_HH8_LDI_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (most high 8 bit of program memory address) into 8 bit immediate
+     value of LDI or SUBI insn.
+
+ -- : BFD_RELOC_AVR_MS8_LDI_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (msb of 32 bit value) into 8 bit immediate value of LDI insn.
+
+ -- : BFD_RELOC_AVR_LO8_LDI_PM
+     This is a 16 bit reloc for the AVR that stores 8 bit value (usually
+     command address) into 8 bit immediate value of LDI insn.
+
+ -- : BFD_RELOC_AVR_LO8_LDI_GS
+     This is a 16 bit reloc for the AVR that stores 8 bit value
+     (command address) into 8 bit immediate value of LDI insn. If the
+     address is beyond the 128k boundary, the linker inserts a jump
+     stub for this reloc in the lower 128k.
+
+ -- : BFD_RELOC_AVR_HI8_LDI_PM
+     This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
+     bit of command address) into 8 bit immediate value of LDI insn.
+
+ -- : BFD_RELOC_AVR_HI8_LDI_GS
+     This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
+     bit of command address) into 8 bit immediate value of LDI insn.
+     If the address is beyond the 128k boundary, the linker inserts a
+     jump stub for this reloc below 128k.
+
+ -- : BFD_RELOC_AVR_HH8_LDI_PM
+     This is a 16 bit reloc for the AVR that stores 8 bit value (most
+     high 8 bit of command address) into 8 bit immediate value of LDI
+     insn.
+
+ -- : BFD_RELOC_AVR_LO8_LDI_PM_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (usually command address) into 8 bit immediate value of SUBI insn.
+
+ -- : BFD_RELOC_AVR_HI8_LDI_PM_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (high 8 bit of 16 bit command address) into 8 bit immediate value
+     of SUBI insn.
+
+ -- : BFD_RELOC_AVR_HH8_LDI_PM_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (high 6 bit of 22 bit command address) into 8 bit immediate value
+     of SUBI insn.
+
+ -- : BFD_RELOC_AVR_CALL
+     This is a 32 bit reloc for the AVR that stores 23 bit value into
+     22 bits.
+
+ -- : BFD_RELOC_AVR_LDI
+     This is a 16 bit reloc for the AVR that stores all needed bits for
+     absolute addressing with ldi with overflow check to linktime
+
+ -- : BFD_RELOC_AVR_6
+     This is a 6 bit reloc for the AVR that stores offset for ldd/std
+     instructions
+
+ -- : BFD_RELOC_AVR_6_ADIW
+     This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
+     instructions
+
+ -- : BFD_RELOC_390_12
+     Direct 12 bit.
+
+ -- : BFD_RELOC_390_GOT12
+     12 bit GOT offset.
+
+ -- : BFD_RELOC_390_PLT32
+     32 bit PC relative PLT address.
+
+ -- : BFD_RELOC_390_COPY
+     Copy symbol at runtime.
+
+ -- : BFD_RELOC_390_GLOB_DAT
+     Create GOT entry.
+
+ -- : BFD_RELOC_390_JMP_SLOT
+     Create PLT entry.
+
+ -- : BFD_RELOC_390_RELATIVE
+     Adjust by program base.
+
+ -- : BFD_RELOC_390_GOTPC
+     32 bit PC relative offset to GOT.
+
+ -- : BFD_RELOC_390_GOT16
+     16 bit GOT offset.
+
+ -- : BFD_RELOC_390_PC16DBL
+     PC relative 16 bit shifted by 1.
+
+ -- : BFD_RELOC_390_PLT16DBL
+     16 bit PC rel. PLT shifted by 1.
+
+ -- : BFD_RELOC_390_PC32DBL
+     PC relative 32 bit shifted by 1.
+
+ -- : BFD_RELOC_390_PLT32DBL
+     32 bit PC rel. PLT shifted by 1.
+
+ -- : BFD_RELOC_390_GOTPCDBL
+     32 bit PC rel. GOT shifted by 1.
+
+ -- : BFD_RELOC_390_GOT64
+     64 bit GOT offset.
+
+ -- : BFD_RELOC_390_PLT64
+     64 bit PC relative PLT address.
+
+ -- : BFD_RELOC_390_GOTENT
+     32 bit rel. offset to GOT entry.
+
+ -- : BFD_RELOC_390_GOTOFF64
+     64 bit offset to GOT.
+
+ -- : BFD_RELOC_390_GOTPLT12
+     12-bit offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_390_GOTPLT16
+     16-bit offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_390_GOTPLT32
+     32-bit offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_390_GOTPLT64
+     64-bit offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_390_GOTPLTENT
+     32-bit rel. offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_390_PLTOFF16
+     16-bit rel. offset from the GOT to a PLT entry.
+
+ -- : BFD_RELOC_390_PLTOFF32
+     32-bit rel. offset from the GOT to a PLT entry.
+
+ -- : BFD_RELOC_390_PLTOFF64
+     64-bit rel. offset from the GOT to a PLT entry.
+
+ -- : BFD_RELOC_390_TLS_LOAD
+ -- : BFD_RELOC_390_TLS_GDCALL
+ -- : BFD_RELOC_390_TLS_LDCALL
+ -- : BFD_RELOC_390_TLS_GD32
+ -- : BFD_RELOC_390_TLS_GD64
+ -- : BFD_RELOC_390_TLS_GOTIE12
+ -- : BFD_RELOC_390_TLS_GOTIE32
+ -- : BFD_RELOC_390_TLS_GOTIE64
+ -- : BFD_RELOC_390_TLS_LDM32
+ -- : BFD_RELOC_390_TLS_LDM64
+ -- : BFD_RELOC_390_TLS_IE32
+ -- : BFD_RELOC_390_TLS_IE64
+ -- : BFD_RELOC_390_TLS_IEENT
+ -- : BFD_RELOC_390_TLS_LE32
+ -- : BFD_RELOC_390_TLS_LE64
+ -- : BFD_RELOC_390_TLS_LDO32
+ -- : BFD_RELOC_390_TLS_LDO64
+ -- : BFD_RELOC_390_TLS_DTPMOD
+ -- : BFD_RELOC_390_TLS_DTPOFF
+ -- : BFD_RELOC_390_TLS_TPOFF
+     s390 tls relocations.
+
+ -- : BFD_RELOC_390_20
+ -- : BFD_RELOC_390_GOT20
+ -- : BFD_RELOC_390_GOTPLT20
+ -- : BFD_RELOC_390_TLS_GOTIE20
+     Long displacement extension.
+
+ -- : BFD_RELOC_SCORE_DUMMY1
+     Score relocations
+
+ -- : BFD_RELOC_SCORE_GPREL15
+     Low 16 bit for load/store
+
+ -- : BFD_RELOC_SCORE_DUMMY2
+ -- : BFD_RELOC_SCORE_JMP
+     This is a 24-bit reloc with the right 1 bit assumed to be 0
+
+ -- : BFD_RELOC_SCORE_BRANCH
+     This is a 19-bit reloc with the right 1 bit assumed to be 0
+
+ -- : BFD_RELOC_SCORE16_JMP
+     This is a 11-bit reloc with the right 1 bit assumed to be 0
+
+ -- : BFD_RELOC_SCORE16_BRANCH
+     This is a 8-bit reloc with the right 1 bit assumed to be 0
+
+ -- : BFD_RELOC_SCORE_GOT15
+ -- : BFD_RELOC_SCORE_GOT_LO16
+ -- : BFD_RELOC_SCORE_CALL15
+ -- : BFD_RELOC_SCORE_DUMMY_HI16
+     Undocumented Score relocs
+
+ -- : BFD_RELOC_IP2K_FR9
+     Scenix IP2K - 9-bit register number / data address
+
+ -- : BFD_RELOC_IP2K_BANK
+     Scenix IP2K - 4-bit register/data bank number
+
+ -- : BFD_RELOC_IP2K_ADDR16CJP
+     Scenix IP2K - low 13 bits of instruction word address
+
+ -- : BFD_RELOC_IP2K_PAGE3
+     Scenix IP2K - high 3 bits of instruction word address
+
+ -- : BFD_RELOC_IP2K_LO8DATA
+ -- : BFD_RELOC_IP2K_HI8DATA
+ -- : BFD_RELOC_IP2K_EX8DATA
+     Scenix IP2K - ext/low/high 8 bits of data address
+
+ -- : BFD_RELOC_IP2K_LO8INSN
+ -- : BFD_RELOC_IP2K_HI8INSN
+     Scenix IP2K - low/high 8 bits of instruction word address
+
+ -- : BFD_RELOC_IP2K_PC_SKIP
+     Scenix IP2K - even/odd PC modifier to modify snb pcl.0
+
+ -- : BFD_RELOC_IP2K_TEXT
+     Scenix IP2K - 16 bit word address in text section.
+
+ -- : BFD_RELOC_IP2K_FR_OFFSET
+     Scenix IP2K - 7-bit sp or dp offset
+
+ -- : BFD_RELOC_VPE4KMATH_DATA
+ -- : BFD_RELOC_VPE4KMATH_INSN
+     Scenix VPE4K coprocessor - data/insn-space addressing
+
+ -- : BFD_RELOC_VTABLE_INHERIT
+ -- : BFD_RELOC_VTABLE_ENTRY
+     These two relocations are used by the linker to determine which of
+     the entries in a C++ virtual function table are actually used.
+     When the -gc-sections option is given, the linker will zero out
+     the entries that are not used, so that the code for those
+     functions need not be included in the output.
+
+     VTABLE_INHERIT is a zero-space relocation used to describe to the
+     linker the inheritance tree of a C++ virtual function table.  The
+     relocation's symbol should be the parent class' vtable, and the
+     relocation should be located at the child vtable.
+
+     VTABLE_ENTRY is a zero-space relocation that describes the use of a
+     virtual function table entry.  The reloc's symbol should refer to
+     the table of the class mentioned in the code.  Off of that base,
+     an offset describes the entry that is being used.  For Rela hosts,
+     this offset is stored in the reloc's addend.  For Rel hosts, we
+     are forced to put this offset in the reloc's section offset.
+
+ -- : BFD_RELOC_IA64_IMM14
+ -- : BFD_RELOC_IA64_IMM22
+ -- : BFD_RELOC_IA64_IMM64
+ -- : BFD_RELOC_IA64_DIR32MSB
+ -- : BFD_RELOC_IA64_DIR32LSB
+ -- : BFD_RELOC_IA64_DIR64MSB
+ -- : BFD_RELOC_IA64_DIR64LSB
+ -- : BFD_RELOC_IA64_GPREL22
+ -- : BFD_RELOC_IA64_GPREL64I
+ -- : BFD_RELOC_IA64_GPREL32MSB
+ -- : BFD_RELOC_IA64_GPREL32LSB
+ -- : BFD_RELOC_IA64_GPREL64MSB
+ -- : BFD_RELOC_IA64_GPREL64LSB
+ -- : BFD_RELOC_IA64_LTOFF22
+ -- : BFD_RELOC_IA64_LTOFF64I
+ -- : BFD_RELOC_IA64_PLTOFF22
+ -- : BFD_RELOC_IA64_PLTOFF64I
+ -- : BFD_RELOC_IA64_PLTOFF64MSB
+ -- : BFD_RELOC_IA64_PLTOFF64LSB
+ -- : BFD_RELOC_IA64_FPTR64I
+ -- : BFD_RELOC_IA64_FPTR32MSB
+ -- : BFD_RELOC_IA64_FPTR32LSB
+ -- : BFD_RELOC_IA64_FPTR64MSB
+ -- : BFD_RELOC_IA64_FPTR64LSB
+ -- : BFD_RELOC_IA64_PCREL21B
+ -- : BFD_RELOC_IA64_PCREL21BI
+ -- : BFD_RELOC_IA64_PCREL21M
+ -- : BFD_RELOC_IA64_PCREL21F
+ -- : BFD_RELOC_IA64_PCREL22
+ -- : BFD_RELOC_IA64_PCREL60B
+ -- : BFD_RELOC_IA64_PCREL64I
+ -- : BFD_RELOC_IA64_PCREL32MSB
+ -- : BFD_RELOC_IA64_PCREL32LSB
+ -- : BFD_RELOC_IA64_PCREL64MSB
+ -- : BFD_RELOC_IA64_PCREL64LSB
+ -- : BFD_RELOC_IA64_LTOFF_FPTR22
+ -- : BFD_RELOC_IA64_LTOFF_FPTR64I
+ -- : BFD_RELOC_IA64_LTOFF_FPTR32MSB
+ -- : BFD_RELOC_IA64_LTOFF_FPTR32LSB
+ -- : BFD_RELOC_IA64_LTOFF_FPTR64MSB
+ -- : BFD_RELOC_IA64_LTOFF_FPTR64LSB
+ -- : BFD_RELOC_IA64_SEGREL32MSB
+ -- : BFD_RELOC_IA64_SEGREL32LSB
+ -- : BFD_RELOC_IA64_SEGREL64MSB
+ -- : BFD_RELOC_IA64_SEGREL64LSB
+ -- : BFD_RELOC_IA64_SECREL32MSB
+ -- : BFD_RELOC_IA64_SECREL32LSB
+ -- : BFD_RELOC_IA64_SECREL64MSB
+ -- : BFD_RELOC_IA64_SECREL64LSB
+ -- : BFD_RELOC_IA64_REL32MSB
+ -- : BFD_RELOC_IA64_REL32LSB
+ -- : BFD_RELOC_IA64_REL64MSB
+ -- : BFD_RELOC_IA64_REL64LSB
+ -- : BFD_RELOC_IA64_LTV32MSB
+ -- : BFD_RELOC_IA64_LTV32LSB
+ -- : BFD_RELOC_IA64_LTV64MSB
+ -- : BFD_RELOC_IA64_LTV64LSB
+ -- : BFD_RELOC_IA64_IPLTMSB
+ -- : BFD_RELOC_IA64_IPLTLSB
+ -- : BFD_RELOC_IA64_COPY
+ -- : BFD_RELOC_IA64_LTOFF22X
+ -- : BFD_RELOC_IA64_LDXMOV
+ -- : BFD_RELOC_IA64_TPREL14
+ -- : BFD_RELOC_IA64_TPREL22
+ -- : BFD_RELOC_IA64_TPREL64I
+ -- : BFD_RELOC_IA64_TPREL64MSB
+ -- : BFD_RELOC_IA64_TPREL64LSB
+ -- : BFD_RELOC_IA64_LTOFF_TPREL22
+ -- : BFD_RELOC_IA64_DTPMOD64MSB
+ -- : BFD_RELOC_IA64_DTPMOD64LSB
+ -- : BFD_RELOC_IA64_LTOFF_DTPMOD22
+ -- : BFD_RELOC_IA64_DTPREL14
+ -- : BFD_RELOC_IA64_DTPREL22
+ -- : BFD_RELOC_IA64_DTPREL64I
+ -- : BFD_RELOC_IA64_DTPREL32MSB
+ -- : BFD_RELOC_IA64_DTPREL32LSB
+ -- : BFD_RELOC_IA64_DTPREL64MSB
+ -- : BFD_RELOC_IA64_DTPREL64LSB
+ -- : BFD_RELOC_IA64_LTOFF_DTPREL22
+     Intel IA64 Relocations.
+
+ -- : BFD_RELOC_M68HC11_HI8
+     Motorola 68HC11 reloc.  This is the 8 bit high part of an absolute
+     address.
+
+ -- : BFD_RELOC_M68HC11_LO8
+     Motorola 68HC11 reloc.  This is the 8 bit low part of an absolute
+     address.
+
+ -- : BFD_RELOC_M68HC11_3B
+     Motorola 68HC11 reloc.  This is the 3 bit of a value.
+
+ -- : BFD_RELOC_M68HC11_RL_JUMP
+     Motorola 68HC11 reloc.  This reloc marks the beginning of a
+     jump/call instruction.  It is used for linker relaxation to
+     correctly identify beginning of instruction and change some
+     branches to use PC-relative addressing mode.
+
+ -- : BFD_RELOC_M68HC11_RL_GROUP
+     Motorola 68HC11 reloc.  This reloc marks a group of several
+     instructions that gcc generates and for which the linker
+     relaxation pass can modify and/or remove some of them.
+
+ -- : BFD_RELOC_M68HC11_LO16
+     Motorola 68HC11 reloc.  This is the 16-bit lower part of an
+     address.  It is used for 'call' instruction to specify the symbol
+     address without any special transformation (due to memory bank
+     window).
+
+ -- : BFD_RELOC_M68HC11_PAGE
+     Motorola 68HC11 reloc.  This is a 8-bit reloc that specifies the
+     page number of an address.  It is used by 'call' instruction to
+     specify the page number of the symbol.
+
+ -- : BFD_RELOC_M68HC11_24
+     Motorola 68HC11 reloc.  This is a 24-bit reloc that represents the
+     address with a 16-bit value and a 8-bit page number.  The symbol
+     address is transformed to follow the 16K memory bank of 68HC12
+     (seen as mapped in the window).
+
+ -- : BFD_RELOC_M68HC12_5B
+     Motorola 68HC12 reloc.  This is the 5 bits of a value.
+
+ -- : BFD_RELOC_16C_NUM08
+ -- : BFD_RELOC_16C_NUM08_C
+ -- : BFD_RELOC_16C_NUM16
+ -- : BFD_RELOC_16C_NUM16_C
+ -- : BFD_RELOC_16C_NUM32
+ -- : BFD_RELOC_16C_NUM32_C
+ -- : BFD_RELOC_16C_DISP04
+ -- : BFD_RELOC_16C_DISP04_C
+ -- : BFD_RELOC_16C_DISP08
+ -- : BFD_RELOC_16C_DISP08_C
+ -- : BFD_RELOC_16C_DISP16
+ -- : BFD_RELOC_16C_DISP16_C
+ -- : BFD_RELOC_16C_DISP24
+ -- : BFD_RELOC_16C_DISP24_C
+ -- : BFD_RELOC_16C_DISP24a
+ -- : BFD_RELOC_16C_DISP24a_C
+ -- : BFD_RELOC_16C_REG04
+ -- : BFD_RELOC_16C_REG04_C
+ -- : BFD_RELOC_16C_REG04a
+ -- : BFD_RELOC_16C_REG04a_C
+ -- : BFD_RELOC_16C_REG14
+ -- : BFD_RELOC_16C_REG14_C
+ -- : BFD_RELOC_16C_REG16
+ -- : BFD_RELOC_16C_REG16_C
+ -- : BFD_RELOC_16C_REG20
+ -- : BFD_RELOC_16C_REG20_C
+ -- : BFD_RELOC_16C_ABS20
+ -- : BFD_RELOC_16C_ABS20_C
+ -- : BFD_RELOC_16C_ABS24
+ -- : BFD_RELOC_16C_ABS24_C
+ -- : BFD_RELOC_16C_IMM04
+ -- : BFD_RELOC_16C_IMM04_C
+ -- : BFD_RELOC_16C_IMM16
+ -- : BFD_RELOC_16C_IMM16_C
+ -- : BFD_RELOC_16C_IMM20
+ -- : BFD_RELOC_16C_IMM20_C
+ -- : BFD_RELOC_16C_IMM24
+ -- : BFD_RELOC_16C_IMM24_C
+ -- : BFD_RELOC_16C_IMM32
+ -- : BFD_RELOC_16C_IMM32_C
+     NS CR16C Relocations.
+
+ -- : BFD_RELOC_CRX_REL4
+ -- : BFD_RELOC_CRX_REL8
+ -- : BFD_RELOC_CRX_REL8_CMP
+ -- : BFD_RELOC_CRX_REL16
+ -- : BFD_RELOC_CRX_REL24
+ -- : BFD_RELOC_CRX_REL32
+ -- : BFD_RELOC_CRX_REGREL12
+ -- : BFD_RELOC_CRX_REGREL22
+ -- : BFD_RELOC_CRX_REGREL28
+ -- : BFD_RELOC_CRX_REGREL32
+ -- : BFD_RELOC_CRX_ABS16
+ -- : BFD_RELOC_CRX_ABS32
+ -- : BFD_RELOC_CRX_NUM8
+ -- : BFD_RELOC_CRX_NUM16
+ -- : BFD_RELOC_CRX_NUM32
+ -- : BFD_RELOC_CRX_IMM16
+ -- : BFD_RELOC_CRX_IMM32
+ -- : BFD_RELOC_CRX_SWITCH8
+ -- : BFD_RELOC_CRX_SWITCH16
+ -- : BFD_RELOC_CRX_SWITCH32
+     NS CRX Relocations.
+
+ -- : BFD_RELOC_CRIS_BDISP8
+ -- : BFD_RELOC_CRIS_UNSIGNED_5
+ -- : BFD_RELOC_CRIS_SIGNED_6
+ -- : BFD_RELOC_CRIS_UNSIGNED_6
+ -- : BFD_RELOC_CRIS_SIGNED_8
+ -- : BFD_RELOC_CRIS_UNSIGNED_8
+ -- : BFD_RELOC_CRIS_SIGNED_16
+ -- : BFD_RELOC_CRIS_UNSIGNED_16
+ -- : BFD_RELOC_CRIS_LAPCQ_OFFSET
+ -- : BFD_RELOC_CRIS_UNSIGNED_4
+     These relocs are only used within the CRIS assembler.  They are not
+     (at present) written to any object files.
+
+ -- : BFD_RELOC_CRIS_COPY
+ -- : BFD_RELOC_CRIS_GLOB_DAT
+ -- : BFD_RELOC_CRIS_JUMP_SLOT
+ -- : BFD_RELOC_CRIS_RELATIVE
+     Relocs used in ELF shared libraries for CRIS.
+
+ -- : BFD_RELOC_CRIS_32_GOT
+     32-bit offset to symbol-entry within GOT.
+
+ -- : BFD_RELOC_CRIS_16_GOT
+     16-bit offset to symbol-entry within GOT.
+
+ -- : BFD_RELOC_CRIS_32_GOTPLT
+     32-bit offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_CRIS_16_GOTPLT
+     16-bit offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_CRIS_32_GOTREL
+     32-bit offset to symbol, relative to GOT.
+
+ -- : BFD_RELOC_CRIS_32_PLT_GOTREL
+     32-bit offset to symbol with PLT entry, relative to GOT.
+
+ -- : BFD_RELOC_CRIS_32_PLT_PCREL
+     32-bit offset to symbol with PLT entry, relative to this
+     relocation.
+
+ -- : BFD_RELOC_860_COPY
+ -- : BFD_RELOC_860_GLOB_DAT
+ -- : BFD_RELOC_860_JUMP_SLOT
+ -- : BFD_RELOC_860_RELATIVE
+ -- : BFD_RELOC_860_PC26
+ -- : BFD_RELOC_860_PLT26
+ -- : BFD_RELOC_860_PC16
+ -- : BFD_RELOC_860_LOW0
+ -- : BFD_RELOC_860_SPLIT0
+ -- : BFD_RELOC_860_LOW1
+ -- : BFD_RELOC_860_SPLIT1
+ -- : BFD_RELOC_860_LOW2
+ -- : BFD_RELOC_860_SPLIT2
+ -- : BFD_RELOC_860_LOW3
+ -- : BFD_RELOC_860_LOGOT0
+ -- : BFD_RELOC_860_SPGOT0
+ -- : BFD_RELOC_860_LOGOT1
+ -- : BFD_RELOC_860_SPGOT1
+ -- : BFD_RELOC_860_LOGOTOFF0
+ -- : BFD_RELOC_860_SPGOTOFF0
+ -- : BFD_RELOC_860_LOGOTOFF1
+ -- : BFD_RELOC_860_SPGOTOFF1
+ -- : BFD_RELOC_860_LOGOTOFF2
+ -- : BFD_RELOC_860_LOGOTOFF3
+ -- : BFD_RELOC_860_LOPC
+ -- : BFD_RELOC_860_HIGHADJ
+ -- : BFD_RELOC_860_HAGOT
+ -- : BFD_RELOC_860_HAGOTOFF
+ -- : BFD_RELOC_860_HAPC
+ -- : BFD_RELOC_860_HIGH
+ -- : BFD_RELOC_860_HIGOT
+ -- : BFD_RELOC_860_HIGOTOFF
+     Intel i860 Relocations.
+
+ -- : BFD_RELOC_OPENRISC_ABS_26
+ -- : BFD_RELOC_OPENRISC_REL_26
+     OpenRISC Relocations.
+
+ -- : BFD_RELOC_H8_DIR16A8
+ -- : BFD_RELOC_H8_DIR16R8
+ -- : BFD_RELOC_H8_DIR24A8
+ -- : BFD_RELOC_H8_DIR24R8
+ -- : BFD_RELOC_H8_DIR32A16
+     H8 elf Relocations.
+
+ -- : BFD_RELOC_XSTORMY16_REL_12
+ -- : BFD_RELOC_XSTORMY16_12
+ -- : BFD_RELOC_XSTORMY16_24
+ -- : BFD_RELOC_XSTORMY16_FPTR16
+     Sony Xstormy16 Relocations.
+
+ -- : BFD_RELOC_XC16X_PAG
+ -- : BFD_RELOC_XC16X_POF
+ -- : BFD_RELOC_XC16X_SEG
+ -- : BFD_RELOC_XC16X_SOF
+     Infineon Relocations.
+
+ -- : BFD_RELOC_VAX_GLOB_DAT
+ -- : BFD_RELOC_VAX_JMP_SLOT
+ -- : BFD_RELOC_VAX_RELATIVE
+     Relocations used by VAX ELF.
+
+ -- : BFD_RELOC_MT_PC16
+     Morpho MT - 16 bit immediate relocation.
+
+ -- : BFD_RELOC_MT_HI16
+     Morpho MT - Hi 16 bits of an address.
+
+ -- : BFD_RELOC_MT_LO16
+     Morpho MT - Low 16 bits of an address.
+
+ -- : BFD_RELOC_MT_GNU_VTINHERIT
+     Morpho MT - Used to tell the linker which vtable entries are used.
+
+ -- : BFD_RELOC_MT_GNU_VTENTRY
+     Morpho MT - Used to tell the linker which vtable entries are used.
+
+ -- : BFD_RELOC_MT_PCINSN8
+     Morpho MT - 8 bit immediate relocation.
+
+ -- : BFD_RELOC_MSP430_10_PCREL
+ -- : BFD_RELOC_MSP430_16_PCREL
+ -- : BFD_RELOC_MSP430_16
+ -- : BFD_RELOC_MSP430_16_PCREL_BYTE
+ -- : BFD_RELOC_MSP430_16_BYTE
+ -- : BFD_RELOC_MSP430_2X_PCREL
+ -- : BFD_RELOC_MSP430_RL_PCREL
+     msp430 specific relocation codes
+
+ -- : BFD_RELOC_IQ2000_OFFSET_16
+ -- : BFD_RELOC_IQ2000_OFFSET_21
+ -- : BFD_RELOC_IQ2000_UHI16
+     IQ2000 Relocations.
+
+ -- : BFD_RELOC_XTENSA_RTLD
+     Special Xtensa relocation used only by PLT entries in ELF shared
+     objects to indicate that the runtime linker should set the value
+     to one of its own internal functions or data structures.
+
+ -- : BFD_RELOC_XTENSA_GLOB_DAT
+ -- : BFD_RELOC_XTENSA_JMP_SLOT
+ -- : BFD_RELOC_XTENSA_RELATIVE
+     Xtensa relocations for ELF shared objects.
+
+ -- : BFD_RELOC_XTENSA_PLT
+     Xtensa relocation used in ELF object files for symbols that may
+     require PLT entries.  Otherwise, this is just a generic 32-bit
+     relocation.
+
+ -- : BFD_RELOC_XTENSA_DIFF8
+ -- : BFD_RELOC_XTENSA_DIFF16
+ -- : BFD_RELOC_XTENSA_DIFF32
+     Xtensa relocations to mark the difference of two local symbols.
+     These are only needed to support linker relaxation and can be
+     ignored when not relaxing.  The field is set to the value of the
+     difference assuming no relaxation.  The relocation encodes the
+     position of the first symbol so the linker can determine whether
+     to adjust the field value.
+
+ -- : BFD_RELOC_XTENSA_SLOT0_OP
+ -- : BFD_RELOC_XTENSA_SLOT1_OP
+ -- : BFD_RELOC_XTENSA_SLOT2_OP
+ -- : BFD_RELOC_XTENSA_SLOT3_OP
+ -- : BFD_RELOC_XTENSA_SLOT4_OP
+ -- : BFD_RELOC_XTENSA_SLOT5_OP
+ -- : BFD_RELOC_XTENSA_SLOT6_OP
+ -- : BFD_RELOC_XTENSA_SLOT7_OP
+ -- : BFD_RELOC_XTENSA_SLOT8_OP
+ -- : BFD_RELOC_XTENSA_SLOT9_OP
+ -- : BFD_RELOC_XTENSA_SLOT10_OP
+ -- : BFD_RELOC_XTENSA_SLOT11_OP
+ -- : BFD_RELOC_XTENSA_SLOT12_OP
+ -- : BFD_RELOC_XTENSA_SLOT13_OP
+ -- : BFD_RELOC_XTENSA_SLOT14_OP
+     Generic Xtensa relocations for instruction operands.  Only the slot
+     number is encoded in the relocation.  The relocation applies to the
+     last PC-relative immediate operand, or if there are no PC-relative
+     immediates, to the last immediate operand.
+
+ -- : BFD_RELOC_XTENSA_SLOT0_ALT
+ -- : BFD_RELOC_XTENSA_SLOT1_ALT
+ -- : BFD_RELOC_XTENSA_SLOT2_ALT
+ -- : BFD_RELOC_XTENSA_SLOT3_ALT
+ -- : BFD_RELOC_XTENSA_SLOT4_ALT
+ -- : BFD_RELOC_XTENSA_SLOT5_ALT
+ -- : BFD_RELOC_XTENSA_SLOT6_ALT
+ -- : BFD_RELOC_XTENSA_SLOT7_ALT
+ -- : BFD_RELOC_XTENSA_SLOT8_ALT
+ -- : BFD_RELOC_XTENSA_SLOT9_ALT
+ -- : BFD_RELOC_XTENSA_SLOT10_ALT
+ -- : BFD_RELOC_XTENSA_SLOT11_ALT
+ -- : BFD_RELOC_XTENSA_SLOT12_ALT
+ -- : BFD_RELOC_XTENSA_SLOT13_ALT
+ -- : BFD_RELOC_XTENSA_SLOT14_ALT
+     Alternate Xtensa relocations.  Only the slot is encoded in the
+     relocation.  The meaning of these relocations is opcode-specific.
+
+ -- : BFD_RELOC_XTENSA_OP0
+ -- : BFD_RELOC_XTENSA_OP1
+ -- : BFD_RELOC_XTENSA_OP2
+     Xtensa relocations for backward compatibility.  These have all been
+     replaced by BFD_RELOC_XTENSA_SLOT0_OP.
+
+ -- : BFD_RELOC_XTENSA_ASM_EXPAND
+     Xtensa relocation to mark that the assembler expanded the
+     instructions from an original target.  The expansion size is
+     encoded in the reloc size.
+
+ -- : BFD_RELOC_XTENSA_ASM_SIMPLIFY
+     Xtensa relocation to mark that the linker should simplify
+     assembler-expanded instructions.  This is commonly used internally
+     by the linker after analysis of a BFD_RELOC_XTENSA_ASM_EXPAND.
+
+ -- : BFD_RELOC_Z80_DISP8
+     8 bit signed offset in (ix+d) or (iy+d).
+
+ -- : BFD_RELOC_Z8K_DISP7
+     DJNZ offset.
+
+ -- : BFD_RELOC_Z8K_CALLR
+     CALR offset.
+
+ -- : BFD_RELOC_Z8K_IMM4L
+     4 bit value.
+
+
+     typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
+   
+2.10.2.2 `bfd_reloc_type_lookup'
+................................
+
+*Synopsis*
+     reloc_howto_type *bfd_reloc_type_lookup
+        (bfd *abfd, bfd_reloc_code_real_type code);
+   *Description*
+Return a pointer to a howto structure which, when invoked, will perform
+the relocation CODE on data from the architecture noted.
+
+2.10.2.3 `bfd_default_reloc_type_lookup'
+........................................
+
+*Synopsis*
+     reloc_howto_type *bfd_default_reloc_type_lookup
+        (bfd *abfd, bfd_reloc_code_real_type  code);
+   *Description*
+Provides a default relocation lookup routine for any architecture.
+
+2.10.2.4 `bfd_get_reloc_code_name'
+..................................
+
+*Synopsis*
+     const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
+   *Description*
+Provides a printable name for the supplied relocation code.  Useful
+mainly for printing error messages.
+
+2.10.2.5 `bfd_generic_relax_section'
+....................................
+
+*Synopsis*
+     bfd_boolean bfd_generic_relax_section
+        (bfd *abfd,
+         asection *section,
+         struct bfd_link_info *,
+         bfd_boolean *);
+   *Description*
+Provides default handling for relaxing for back ends which don't do
+relaxing.
+
+2.10.2.6 `bfd_generic_gc_sections'
+..................................
+
+*Synopsis*
+     bfd_boolean bfd_generic_gc_sections
+        (bfd *, struct bfd_link_info *);
+   *Description*
+Provides default handling for relaxing for back ends which don't do
+section gc - i.e., does nothing.
+
+2.10.2.7 `bfd_generic_merge_sections'
+.....................................
+
+*Synopsis*
+     bfd_boolean bfd_generic_merge_sections
+        (bfd *, struct bfd_link_info *);
+   *Description*
+Provides default handling for SEC_MERGE section merging for back ends
+which don't have SEC_MERGE support - i.e., does nothing.
+
+2.10.2.8 `bfd_generic_get_relocated_section_contents'
+.....................................................
+
+*Synopsis*
+     bfd_byte *bfd_generic_get_relocated_section_contents
+        (bfd *abfd,
+         struct bfd_link_info *link_info,
+         struct bfd_link_order *link_order,
+         bfd_byte *data,
+         bfd_boolean relocatable,
+         asymbol **symbols);
+   *Description*
+Provides default handling of relocation effort for back ends which
+can't be bothered to do it efficiently.
+
+\1f
+File: bfd.info,  Node: Core Files,  Next: Targets,  Prev: Relocations,  Up: BFD front end
+
+2.11 Core files
+===============
+
+2.11.1 Core file functions
+--------------------------
+
+*Description*
+These are functions pertaining to core files.
+
+2.11.1.1 `bfd_core_file_failing_command'
+........................................
+
+*Synopsis*
+     const char *bfd_core_file_failing_command (bfd *abfd);
+   *Description*
+Return a read-only string explaining which program was running when it
+failed and produced the core file ABFD.
+
+2.11.1.2 `bfd_core_file_failing_signal'
+.......................................
+
+*Synopsis*
+     int bfd_core_file_failing_signal (bfd *abfd);
+   *Description*
+Returns the signal number which caused the core dump which generated
+the file the BFD ABFD is attached to.
+
+2.11.1.3 `core_file_matches_executable_p'
+.........................................
+
+*Synopsis*
+     bfd_boolean core_file_matches_executable_p
+        (bfd *core_bfd, bfd *exec_bfd);
+   *Description*
+Return `TRUE' if the core file attached to CORE_BFD was generated by a
+run of the executable file attached to EXEC_BFD, `FALSE' otherwise.
+
+2.11.1.4 `generic_core_file_matches_executable_p'
+.................................................
+
+*Synopsis*
+     bfd_boolean generic_core_file_matches_executable_p
+        (bfd *core_bfd, bfd *exec_bfd);
+   *Description*
+Return TRUE if the core file attached to CORE_BFD was generated by a
+run of the executable file attached to EXEC_BFD.  The match is based on
+executable basenames only.
+
+   Note: When not able to determine the core file failing command or
+the executable name, we still return TRUE even though we're not sure
+that core file and executable match.  This is to avoid generating a
+false warning in situations where we really don't know whether they
+match or not.
+
+\1f
+File: bfd.info,  Node: Targets,  Next: Architectures,  Prev: Core Files,  Up: BFD front end
+
+2.12 Targets
+============
+
+*Description*
+Each port of BFD to a different machine requires the creation of a
+target back end. All the back end provides to the root part of BFD is a
+structure containing pointers to functions which perform certain low
+level operations on files. BFD translates the applications's requests
+through a pointer into calls to the back end routines.
+
+   When a file is opened with `bfd_openr', its format and target are
+unknown. BFD uses various mechanisms to determine how to interpret the
+file. The operations performed are:
+
+   * Create a BFD by calling the internal routine `_bfd_new_bfd', then
+     call `bfd_find_target' with the target string supplied to
+     `bfd_openr' and the new BFD pointer.
+
+   * If a null target string was provided to `bfd_find_target', look up
+     the environment variable `GNUTARGET' and use that as the target
+     string.
+
+   * If the target string is still `NULL', or the target string is
+     `default', then use the first item in the target vector as the
+     target type, and set `target_defaulted' in the BFD to cause
+     `bfd_check_format' to loop through all the targets.  *Note
+     bfd_target::.  *Note Formats::.
+
+   * Otherwise, inspect the elements in the target vector one by one,
+     until a match on target name is found. When found, use it.
+
+   * Otherwise return the error `bfd_error_invalid_target' to
+     `bfd_openr'.
+
+   * `bfd_openr' attempts to open the file using `bfd_open_file', and
+     returns the BFD.
+   Once the BFD has been opened and the target selected, the file
+format may be determined. This is done by calling `bfd_check_format' on
+the BFD with a suggested format.  If `target_defaulted' has been set,
+each possible target type is tried to see if it recognizes the
+specified format.  `bfd_check_format' returns `TRUE' when the caller
+guesses right.
+
+* Menu:
+
+* bfd_target::
+
+\1f
+File: bfd.info,  Node: bfd_target,  Prev: Targets,  Up: Targets
+
+2.12.1 bfd_target
+-----------------
+
+*Description*
+This structure contains everything that BFD knows about a target. It
+includes things like its byte order, name, and which routines to call
+to do various operations.
+
+   Every BFD points to a target structure with its `xvec' member.
+
+   The macros below are used to dispatch to functions through the
+`bfd_target' vector. They are used in a number of macros further down
+in `bfd.h', and are also used when calling various routines by hand
+inside the BFD implementation.  The ARGLIST argument must be
+parenthesized; it contains all the arguments to the called function.
+
+   They make the documentation (more) unpleasant to read, so if someone
+wants to fix this and not break the above, please do.
+     #define BFD_SEND(bfd, message, arglist) \
+       ((*((bfd)->xvec->message)) arglist)
+
+     #ifdef DEBUG_BFD_SEND
+     #undef BFD_SEND
+     #define BFD_SEND(bfd, message, arglist) \
+       (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
+         ((*((bfd)->xvec->message)) arglist) : \
+         (bfd_assert (__FILE__,__LINE__), NULL))
+     #endif
+   For operations which index on the BFD format:
+     #define BFD_SEND_FMT(bfd, message, arglist) \
+       (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
+
+     #ifdef DEBUG_BFD_SEND
+     #undef BFD_SEND_FMT
+     #define BFD_SEND_FMT(bfd, message, arglist) \
+       (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
+        (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
+        (bfd_assert (__FILE__,__LINE__), NULL))
+     #endif
+   This is the structure which defines the type of BFD this is.  The
+`xvec' member of the struct `bfd' itself points here.  Each module that
+implements access to a different target under BFD, defines one of these.
+
+   FIXME, these names should be rationalised with the names of the
+entry points which call them. Too bad we can't have one macro to define
+them both!
+     enum bfd_flavour
+     {
+       bfd_target_unknown_flavour,
+       bfd_target_aout_flavour,
+       bfd_target_coff_flavour,
+       bfd_target_ecoff_flavour,
+       bfd_target_xcoff_flavour,
+       bfd_target_elf_flavour,
+       bfd_target_ieee_flavour,
+       bfd_target_nlm_flavour,
+       bfd_target_oasys_flavour,
+       bfd_target_tekhex_flavour,
+       bfd_target_srec_flavour,
+       bfd_target_ihex_flavour,
+       bfd_target_som_flavour,
+       bfd_target_os9k_flavour,
+       bfd_target_versados_flavour,
+       bfd_target_msdos_flavour,
+       bfd_target_ovax_flavour,
+       bfd_target_evax_flavour,
+       bfd_target_mmo_flavour,
+       bfd_target_mach_o_flavour,
+       bfd_target_pef_flavour,
+       bfd_target_pef_xlib_flavour,
+       bfd_target_sym_flavour
+     };
+
+     enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
+
+     /* Forward declaration.  */
+     typedef struct bfd_link_info _bfd_link_info;
+
+     typedef struct bfd_target
+     {
+       /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
+       char *name;
+
+      /* The "flavour" of a back end is a general indication about
+         the contents of a file.  */
+       enum bfd_flavour flavour;
+
+       /* The order of bytes within the data area of a file.  */
+       enum bfd_endian byteorder;
+
+      /* The order of bytes within the header parts of a file.  */
+       enum bfd_endian header_byteorder;
+
+       /* A mask of all the flags which an executable may have set -
+          from the set `BFD_NO_FLAGS', `HAS_RELOC', ...`D_PAGED'.  */
+       flagword object_flags;
+
+      /* A mask of all the flags which a section may have set - from
+         the set `SEC_NO_FLAGS', `SEC_ALLOC', ...`SET_NEVER_LOAD'.  */
+       flagword section_flags;
+
+      /* The character normally found at the front of a symbol.
+         (if any), perhaps `_'.  */
+       char symbol_leading_char;
+
+      /* The pad character for file names within an archive header.  */
+       char ar_pad_char;
+
+       /* The maximum number of characters in an archive header.  */
+       unsigned short ar_max_namelen;
+
+       /* Entries for byte swapping for data. These are different from the
+          other entry points, since they don't take a BFD as the first argument.
+          Certain other handlers could do the same.  */
+       bfd_uint64_t   (*bfd_getx64) (const void *);
+       bfd_int64_t    (*bfd_getx_signed_64) (const void *);
+       void           (*bfd_putx64) (bfd_uint64_t, void *);
+       bfd_vma        (*bfd_getx32) (const void *);
+       bfd_signed_vma (*bfd_getx_signed_32) (const void *);
+       void           (*bfd_putx32) (bfd_vma, void *);
+       bfd_vma        (*bfd_getx16) (const void *);
+       bfd_signed_vma (*bfd_getx_signed_16) (const void *);
+       void           (*bfd_putx16) (bfd_vma, void *);
+
+       /* Byte swapping for the headers.  */
+       bfd_uint64_t   (*bfd_h_getx64) (const void *);
+       bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
+       void           (*bfd_h_putx64) (bfd_uint64_t, void *);
+       bfd_vma        (*bfd_h_getx32) (const void *);
+       bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
+       void           (*bfd_h_putx32) (bfd_vma, void *);
+       bfd_vma        (*bfd_h_getx16) (const void *);
+       bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
+       void           (*bfd_h_putx16) (bfd_vma, void *);
+
+       /* Format dependent routines: these are vectors of entry points
+          within the target vector structure, one for each format to check.  */
+
+       /* Check the format of a file being read.  Return a `bfd_target *' or zero.  */
+       const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
+
+       /* Set the format of a file being written.  */
+       bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
+
+       /* Write cached information into a file being written, at `bfd_close'.  */
+       bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
+   The general target vector.  These vectors are initialized using the
+BFD_JUMP_TABLE macros.
+
+       /* Generic entry points.  */
+     #define BFD_JUMP_TABLE_GENERIC(NAME) \
+       NAME##_close_and_cleanup, \
+       NAME##_bfd_free_cached_info, \
+       NAME##_new_section_hook, \
+       NAME##_get_section_contents, \
+       NAME##_get_section_contents_in_window
+
+       /* Called when the BFD is being closed to do any necessary cleanup.  */
+       bfd_boolean (*_close_and_cleanup) (bfd *);
+       /* Ask the BFD to free all cached information.  */
+       bfd_boolean (*_bfd_free_cached_info) (bfd *);
+       /* Called when a new section is created.  */
+       bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
+       /* Read the contents of a section.  */
+       bfd_boolean (*_bfd_get_section_contents)
+         (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
+       bfd_boolean (*_bfd_get_section_contents_in_window)
+         (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
+
+       /* Entry points to copy private data.  */
+     #define BFD_JUMP_TABLE_COPY(NAME) \
+       NAME##_bfd_copy_private_bfd_data, \
+       NAME##_bfd_merge_private_bfd_data, \
+       _bfd_generic_init_private_section_data, \
+       NAME##_bfd_copy_private_section_data, \
+       NAME##_bfd_copy_private_symbol_data, \
+       NAME##_bfd_copy_private_header_data, \
+       NAME##_bfd_set_private_flags, \
+       NAME##_bfd_print_private_bfd_data
+
+       /* Called to copy BFD general private data from one object file
+          to another.  */
+       bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
+       /* Called to merge BFD general private data from one object file
+          to a common output file when linking.  */
+       bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
+       /* Called to initialize BFD private section data from one object file
+          to another.  */
+     #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
+       BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
+       bfd_boolean (*_bfd_init_private_section_data)
+         (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
+       /* Called to copy BFD private section data from one object file
+          to another.  */
+       bfd_boolean (*_bfd_copy_private_section_data)
+         (bfd *, sec_ptr, bfd *, sec_ptr);
+       /* Called to copy BFD private symbol data from one symbol
+          to another.  */
+       bfd_boolean (*_bfd_copy_private_symbol_data)
+         (bfd *, asymbol *, bfd *, asymbol *);
+       /* Called to copy BFD private header data from one object file
+          to another.  */
+       bfd_boolean (*_bfd_copy_private_header_data)
+         (bfd *, bfd *);
+       /* Called to set private backend flags.  */
+       bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
+
+       /* Called to print private BFD data.  */
+       bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
+
+       /* Core file entry points.  */
+     #define BFD_JUMP_TABLE_CORE(NAME) \
+       NAME##_core_file_failing_command, \
+       NAME##_core_file_failing_signal, \
+       NAME##_core_file_matches_executable_p
+
+       char *      (*_core_file_failing_command) (bfd *);
+       int         (*_core_file_failing_signal) (bfd *);
+       bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
+
+       /* Archive entry points.  */
+     #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
+       NAME##_slurp_armap, \
+       NAME##_slurp_extended_name_table, \
+       NAME##_construct_extended_name_table, \
+       NAME##_truncate_arname, \
+       NAME##_write_armap, \
+       NAME##_read_ar_hdr, \
+       NAME##_openr_next_archived_file, \
+       NAME##_get_elt_at_index, \
+       NAME##_generic_stat_arch_elt, \
+       NAME##_update_armap_timestamp
+
+       bfd_boolean (*_bfd_slurp_armap) (bfd *);
+       bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
+       bfd_boolean (*_bfd_construct_extended_name_table)
+         (bfd *, char **, bfd_size_type *, const char **);
+       void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
+       bfd_boolean (*write_armap)
+         (bfd *, unsigned int, struct orl *, unsigned int, int);
+       void *      (*_bfd_read_ar_hdr_fn) (bfd *);
+       bfd *       (*openr_next_archived_file) (bfd *, bfd *);
+     #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
+       bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
+       int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
+       bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
+
+       /* Entry points used for symbols.  */
+     #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
+       NAME##_get_symtab_upper_bound, \
+       NAME##_canonicalize_symtab, \
+       NAME##_make_empty_symbol, \
+       NAME##_print_symbol, \
+       NAME##_get_symbol_info, \
+       NAME##_bfd_is_local_label_name, \
+       NAME##_bfd_is_target_special_symbol, \
+       NAME##_get_lineno, \
+       NAME##_find_nearest_line, \
+       _bfd_generic_find_line, \
+       NAME##_find_inliner_info, \
+       NAME##_bfd_make_debug_symbol, \
+       NAME##_read_minisymbols, \
+       NAME##_minisymbol_to_symbol
+
+       long        (*_bfd_get_symtab_upper_bound) (bfd *);
+       long        (*_bfd_canonicalize_symtab)
+         (bfd *, struct bfd_symbol **);
+       struct bfd_symbol *
+                   (*_bfd_make_empty_symbol) (bfd *);
+       void        (*_bfd_print_symbol)
+         (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
+     #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
+       void        (*_bfd_get_symbol_info)
+         (bfd *, struct bfd_symbol *, symbol_info *);
+     #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
+       bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
+       bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
+       alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
+       bfd_boolean (*_bfd_find_nearest_line)
+         (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
+          const char **, const char **, unsigned int *);
+       bfd_boolean (*_bfd_find_line)
+         (bfd *, struct bfd_symbol **, struct bfd_symbol *,
+          const char **, unsigned int *);
+       bfd_boolean (*_bfd_find_inliner_info)
+         (bfd *, const char **, const char **, unsigned int *);
+      /* Back-door to allow format-aware applications to create debug symbols
+         while using BFD for everything else.  Currently used by the assembler
+         when creating COFF files.  */
+       asymbol *   (*_bfd_make_debug_symbol)
+         (bfd *, void *, unsigned long size);
+     #define bfd_read_minisymbols(b, d, m, s) \
+       BFD_SEND (b, _read_minisymbols, (b, d, m, s))
+       long        (*_read_minisymbols)
+         (bfd *, bfd_boolean, void **, unsigned int *);
+     #define bfd_minisymbol_to_symbol(b, d, m, f) \
+       BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
+       asymbol *   (*_minisymbol_to_symbol)
+         (bfd *, bfd_boolean, const void *, asymbol *);
+
+       /* Routines for relocs.  */
+     #define BFD_JUMP_TABLE_RELOCS(NAME) \
+       NAME##_get_reloc_upper_bound, \
+       NAME##_canonicalize_reloc, \
+       NAME##_bfd_reloc_type_lookup
+
+       long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
+       long        (*_bfd_canonicalize_reloc)
+         (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
+       /* See documentation on reloc types.  */
+       reloc_howto_type *
+                   (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
+
+       /* Routines used when writing an object file.  */
+     #define BFD_JUMP_TABLE_WRITE(NAME) \
+       NAME##_set_arch_mach, \
+       NAME##_set_section_contents
+
+       bfd_boolean (*_bfd_set_arch_mach)
+         (bfd *, enum bfd_architecture, unsigned long);
+       bfd_boolean (*_bfd_set_section_contents)
+         (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
+
+       /* Routines used by the linker.  */
+     #define BFD_JUMP_TABLE_LINK(NAME) \
+       NAME##_sizeof_headers, \
+       NAME##_bfd_get_relocated_section_contents, \
+       NAME##_bfd_relax_section, \
+       NAME##_bfd_link_hash_table_create, \
+       NAME##_bfd_link_hash_table_free, \
+       NAME##_bfd_link_add_symbols, \
+       NAME##_bfd_link_just_syms, \
+       NAME##_bfd_final_link, \
+       NAME##_bfd_link_split_section, \
+       NAME##_bfd_gc_sections, \
+       NAME##_bfd_merge_sections, \
+       NAME##_bfd_is_group_section, \
+       NAME##_bfd_discard_group, \
+       NAME##_section_already_linked \
+
+       int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
+       bfd_byte *  (*_bfd_get_relocated_section_contents)
+         (bfd *, struct bfd_link_info *, struct bfd_link_order *,
+          bfd_byte *, bfd_boolean, struct bfd_symbol **);
+
+       bfd_boolean (*_bfd_relax_section)
+         (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
+
+       /* Create a hash table for the linker.  Different backends store
+          different information in this table.  */
+       struct bfd_link_hash_table *
+                   (*_bfd_link_hash_table_create) (bfd *);
+
+       /* Release the memory associated with the linker hash table.  */
+       void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
+
+       /* Add symbols from this object file into the hash table.  */
+       bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
+
+       /* Indicate that we are only retrieving symbol values from this section.  */
+       void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
+
+       /* Do a link based on the link_order structures attached to each
+          section of the BFD.  */
+       bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
+
+       /* Should this section be split up into smaller pieces during linking.  */
+       bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
+
+       /* Remove sections that are not referenced from the output.  */
+       bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
+
+       /* Attempt to merge SEC_MERGE sections.  */
+       bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
+
+       /* Is this section a member of a group?  */
+       bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
+
+       /* Discard members of a group.  */
+       bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
+
+       /* Check if SEC has been already linked during a reloceatable or
+          final link.  */
+       void (*_section_already_linked) (bfd *, struct bfd_section *,
+                                        struct bfd_link_info *);
+
+       /* Routines to handle dynamic symbols and relocs.  */
+     #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
+       NAME##_get_dynamic_symtab_upper_bound, \
+       NAME##_canonicalize_dynamic_symtab, \
+       NAME##_get_synthetic_symtab, \
+       NAME##_get_dynamic_reloc_upper_bound, \
+       NAME##_canonicalize_dynamic_reloc
+
+       /* Get the amount of memory required to hold the dynamic symbols.  */
+       long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
+       /* Read in the dynamic symbols.  */
+       long        (*_bfd_canonicalize_dynamic_symtab)
+         (bfd *, struct bfd_symbol **);
+       /* Create synthetized symbols.  */
+       long        (*_bfd_get_synthetic_symtab)
+         (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
+          struct bfd_symbol **);
+       /* Get the amount of memory required to hold the dynamic relocs.  */
+       long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
+       /* Read in the dynamic relocs.  */
+       long        (*_bfd_canonicalize_dynamic_reloc)
+         (bfd *, arelent **, struct bfd_symbol **);
+   A pointer to an alternative bfd_target in case the current one is not
+satisfactory.  This can happen when the target cpu supports both big
+and little endian code, and target chosen by the linker has the wrong
+endianness.  The function open_output() in ld/ldlang.c uses this field
+to find an alternative output format that is suitable.
+       /* Opposite endian version of this target.  */
+       const struct bfd_target * alternative_target;
+
+       /* Data for use by back-end routines, which isn't
+          generic enough to belong in this structure.  */
+       const void *backend_data;
+
+     } bfd_target;
+
+2.12.1.1 `bfd_set_default_target'
+.................................
+
+*Synopsis*
+     bfd_boolean bfd_set_default_target (const char *name);
+   *Description*
+Set the default target vector to use when recognizing a BFD.  This
+takes the name of the target, which may be a BFD target name or a
+configuration triplet.
+
+2.12.1.2 `bfd_find_target'
+..........................
+
+*Synopsis*
+     const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
+   *Description*
+Return a pointer to the transfer vector for the object target named
+TARGET_NAME.  If TARGET_NAME is `NULL', choose the one in the
+environment variable `GNUTARGET'; if that is null or not defined, then
+choose the first entry in the target list.  Passing in the string
+"default" or setting the environment variable to "default" will cause
+the first entry in the target list to be returned, and
+"target_defaulted" will be set in the BFD if ABFD isn't `NULL'.  This
+causes `bfd_check_format' to loop over all the targets to find the one
+that matches the file being read.
+
+2.12.1.3 `bfd_target_list'
+..........................
+
+*Synopsis*
+     const char ** bfd_target_list (void);
+   *Description*
+Return a freshly malloced NULL-terminated vector of the names of all
+the valid BFD targets. Do not modify the names.
+
+2.12.1.4 `bfd_seach_for_target'
+...............................
+
+*Synopsis*
+     const bfd_target *bfd_search_for_target
+        (int (*search_func) (const bfd_target *, void *),
+         void *);
+   *Description*
+Return a pointer to the first transfer vector in the list of transfer
+vectors maintained by BFD that produces a non-zero result when passed
+to the function SEARCH_FUNC.  The parameter DATA is passed, unexamined,
+to the search function.
+
+\1f
+File: bfd.info,  Node: Architectures,  Next: Opening and Closing,  Prev: Targets,  Up: BFD front end
+
+2.13 Architectures
+==================
+
+BFD keeps one atom in a BFD describing the architecture of the data
+attached to the BFD: a pointer to a `bfd_arch_info_type'.
+
+   Pointers to structures can be requested independently of a BFD so
+that an architecture's information can be interrogated without access
+to an open BFD.
+
+   The architecture information is provided by each architecture
+package.  The set of default architectures is selected by the macro
+`SELECT_ARCHITECTURES'.  This is normally set up in the
+`config/TARGET.mt' file of your choice.  If the name is not defined,
+then all the architectures supported are included.
+
+   When BFD starts up, all the architectures are called with an
+initialize method.  It is up to the architecture back end to insert as
+many items into the list of architectures as it wants to; generally
+this would be one for each machine and one for the default case (an
+item with a machine field of 0).
+
+   BFD's idea of an architecture is implemented in `archures.c'.
+
+2.13.1 bfd_architecture
+-----------------------
+
+*Description*
+This enum gives the object file's CPU architecture, in a global
+sense--i.e., what processor family does it belong to?  Another field
+indicates which processor within the family is in use.  The machine
+gives a number which distinguishes different versions of the
+architecture, containing, for example, 2 and 3 for Intel i960 KA and
+i960 KB, and 68020 and 68030 for Motorola 68020 and 68030.
+     enum bfd_architecture
+     {
+       bfd_arch_unknown,   /* File arch not known.  */
+       bfd_arch_obscure,   /* Arch known, not one of these.  */
+       bfd_arch_m68k,      /* Motorola 68xxx */
+     #define bfd_mach_m68000 1
+     #define bfd_mach_m68008 2
+     #define bfd_mach_m68010 3
+     #define bfd_mach_m68020 4
+     #define bfd_mach_m68030 5
+     #define bfd_mach_m68040 6
+     #define bfd_mach_m68060 7
+     #define bfd_mach_cpu32  8
+     #define bfd_mach_mcf_isa_a_nodiv 9
+     #define bfd_mach_mcf_isa_a 10
+     #define bfd_mach_mcf_isa_a_mac 11
+     #define bfd_mach_mcf_isa_a_emac 12
+     #define bfd_mach_mcf_isa_aplus 13
+     #define bfd_mach_mcf_isa_aplus_mac 14
+     #define bfd_mach_mcf_isa_aplus_emac 15
+     #define bfd_mach_mcf_isa_b_nousp 16
+     #define bfd_mach_mcf_isa_b_nousp_mac 17
+     #define bfd_mach_mcf_isa_b_nousp_emac 18
+     #define bfd_mach_mcf_isa_b 19
+     #define bfd_mach_mcf_isa_b_mac 20
+     #define bfd_mach_mcf_isa_b_emac 21
+     #define bfd_mach_mcf_isa_b_float 22
+     #define bfd_mach_mcf_isa_b_float_mac 23
+     #define bfd_mach_mcf_isa_b_float_emac 24
+       bfd_arch_vax,       /* DEC Vax */
+       bfd_arch_i960,      /* Intel 960 */
+         /* The order of the following is important.
+            lower number indicates a machine type that
+            only accepts a subset of the instructions
+            available to machines with higher numbers.
+            The exception is the "ca", which is
+            incompatible with all other machines except
+            "core".  */
+
+     #define bfd_mach_i960_core      1
+     #define bfd_mach_i960_ka_sa     2
+     #define bfd_mach_i960_kb_sb     3
+     #define bfd_mach_i960_mc        4
+     #define bfd_mach_i960_xa        5
+     #define bfd_mach_i960_ca        6
+     #define bfd_mach_i960_jx        7
+     #define bfd_mach_i960_hx        8
+
+       bfd_arch_or32,      /* OpenRISC 32 */
+
+       bfd_arch_sparc,     /* SPARC */
+     #define bfd_mach_sparc                 1
+     /* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
+     #define bfd_mach_sparc_sparclet        2
+     #define bfd_mach_sparc_sparclite       3
+     #define bfd_mach_sparc_v8plus          4
+     #define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
+     #define bfd_mach_sparc_sparclite_le    6
+     #define bfd_mach_sparc_v9              7
+     #define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
+     #define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
+     #define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
+     /* Nonzero if MACH has the v9 instruction set.  */
+     #define bfd_mach_sparc_v9_p(mach) \
+       ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
+        && (mach) != bfd_mach_sparc_sparclite_le)
+     /* Nonzero if MACH is a 64 bit sparc architecture.  */
+     #define bfd_mach_sparc_64bit_p(mach) \
+       ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
+       bfd_arch_spu,       /* PowerPC SPU */
+     #define bfd_mach_spu           256
+       bfd_arch_mips,      /* MIPS Rxxxx */
+     #define bfd_mach_mips3000              3000
+     #define bfd_mach_mips3900              3900
+     #define bfd_mach_mips4000              4000
+     #define bfd_mach_mips4010              4010
+     #define bfd_mach_mips4100              4100
+     #define bfd_mach_mips4111              4111
+     #define bfd_mach_mips4120              4120
+     #define bfd_mach_mips4300              4300
+     #define bfd_mach_mips4400              4400
+     #define bfd_mach_mips4600              4600
+     #define bfd_mach_mips4650              4650
+     #define bfd_mach_mips5000              5000
+     #define bfd_mach_mips5400              5400
+     #define bfd_mach_mips5500              5500
+     #define bfd_mach_mips6000              6000
+     #define bfd_mach_mips7000              7000
+     #define bfd_mach_mips8000              8000
+     #define bfd_mach_mips9000              9000
+     #define bfd_mach_mips10000             10000
+     #define bfd_mach_mips12000             12000
+     #define bfd_mach_mips16                16
+     #define bfd_mach_mips5                 5
+     #define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
+     #define bfd_mach_mipsisa32             32
+     #define bfd_mach_mipsisa32r2           33
+     #define bfd_mach_mipsisa64             64
+     #define bfd_mach_mipsisa64r2           65
+       bfd_arch_i386,      /* Intel 386 */
+     #define bfd_mach_i386_i386 1
+     #define bfd_mach_i386_i8086 2
+     #define bfd_mach_i386_i386_intel_syntax 3
+     #define bfd_mach_x86_64 64
+     #define bfd_mach_x86_64_intel_syntax 65
+       bfd_arch_we32k,     /* AT&T WE32xxx */
+       bfd_arch_tahoe,     /* CCI/Harris Tahoe */
+       bfd_arch_i860,      /* Intel 860 */
+       bfd_arch_i370,      /* IBM 360/370 Mainframes */
+       bfd_arch_romp,      /* IBM ROMP PC/RT */
+       bfd_arch_convex,    /* Convex */
+       bfd_arch_m88k,      /* Motorola 88xxx */
+       bfd_arch_m98k,      /* Motorola 98xxx */
+       bfd_arch_pyramid,   /* Pyramid Technology */
+       bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
+     #define bfd_mach_h8300    1
+     #define bfd_mach_h8300h   2
+     #define bfd_mach_h8300s   3
+     #define bfd_mach_h8300hn  4
+     #define bfd_mach_h8300sn  5
+     #define bfd_mach_h8300sx  6
+     #define bfd_mach_h8300sxn 7
+       bfd_arch_pdp11,     /* DEC PDP-11 */
+       bfd_arch_powerpc,   /* PowerPC */
+     #define bfd_mach_ppc           32
+     #define bfd_mach_ppc64         64
+     #define bfd_mach_ppc_403       403
+     #define bfd_mach_ppc_403gc     4030
+     #define bfd_mach_ppc_505       505
+     #define bfd_mach_ppc_601       601
+     #define bfd_mach_ppc_602       602
+     #define bfd_mach_ppc_603       603
+     #define bfd_mach_ppc_ec603e    6031
+     #define bfd_mach_ppc_604       604
+     #define bfd_mach_ppc_620       620
+     #define bfd_mach_ppc_630       630
+     #define bfd_mach_ppc_750       750
+     #define bfd_mach_ppc_860       860
+     #define bfd_mach_ppc_a35       35
+     #define bfd_mach_ppc_rs64ii    642
+     #define bfd_mach_ppc_rs64iii   643
+     #define bfd_mach_ppc_7400      7400
+     #define bfd_mach_ppc_e500      500
+       bfd_arch_rs6000,    /* IBM RS/6000 */
+     #define bfd_mach_rs6k          6000
+     #define bfd_mach_rs6k_rs1      6001
+     #define bfd_mach_rs6k_rsc      6003
+     #define bfd_mach_rs6k_rs2      6002
+       bfd_arch_hppa,      /* HP PA RISC */
+     #define bfd_mach_hppa10        10
+     #define bfd_mach_hppa11        11
+     #define bfd_mach_hppa20        20
+     #define bfd_mach_hppa20w       25
+       bfd_arch_d10v,      /* Mitsubishi D10V */
+     #define bfd_mach_d10v          1
+     #define bfd_mach_d10v_ts2      2
+     #define bfd_mach_d10v_ts3      3
+       bfd_arch_d30v,      /* Mitsubishi D30V */
+       bfd_arch_dlx,       /* DLX */
+       bfd_arch_m68hc11,   /* Motorola 68HC11 */
+       bfd_arch_m68hc12,   /* Motorola 68HC12 */
+     #define bfd_mach_m6812_default 0
+     #define bfd_mach_m6812         1
+     #define bfd_mach_m6812s        2
+       bfd_arch_z8k,       /* Zilog Z8000 */
+     #define bfd_mach_z8001         1
+     #define bfd_mach_z8002         2
+       bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
+       bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
+     #define bfd_mach_sh            1
+     #define bfd_mach_sh2        0x20
+     #define bfd_mach_sh_dsp     0x2d
+     #define bfd_mach_sh2a       0x2a
+     #define bfd_mach_sh2a_nofpu 0x2b
+     #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
+     #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
+     #define bfd_mach_sh2a_or_sh4  0x2a3
+     #define bfd_mach_sh2a_or_sh3e 0x2a4
+     #define bfd_mach_sh2e       0x2e
+     #define bfd_mach_sh3        0x30
+     #define bfd_mach_sh3_nommu  0x31
+     #define bfd_mach_sh3_dsp    0x3d
+     #define bfd_mach_sh3e       0x3e
+     #define bfd_mach_sh4        0x40
+     #define bfd_mach_sh4_nofpu  0x41
+     #define bfd_mach_sh4_nommu_nofpu  0x42
+     #define bfd_mach_sh4a       0x4a
+     #define bfd_mach_sh4a_nofpu 0x4b
+     #define bfd_mach_sh4al_dsp  0x4d
+     #define bfd_mach_sh5        0x50
+       bfd_arch_alpha,     /* Dec Alpha */
+     #define bfd_mach_alpha_ev4  0x10
+     #define bfd_mach_alpha_ev5  0x20
+     #define bfd_mach_alpha_ev6  0x30
+       bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
+     #define bfd_mach_arm_unknown   0
+     #define bfd_mach_arm_2         1
+     #define bfd_mach_arm_2a        2
+     #define bfd_mach_arm_3         3
+     #define bfd_mach_arm_3M        4
+     #define bfd_mach_arm_4         5
+     #define bfd_mach_arm_4T        6
+     #define bfd_mach_arm_5         7
+     #define bfd_mach_arm_5T        8
+     #define bfd_mach_arm_5TE       9
+     #define bfd_mach_arm_XScale    10
+     #define bfd_mach_arm_ep9312    11
+     #define bfd_mach_arm_iWMMXt    12
+     #define bfd_mach_arm_iWMMXt2   13
+       bfd_arch_ns32k,     /* National Semiconductors ns32000 */
+       bfd_arch_w65,       /* WDC 65816 */
+       bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
+       bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
+     #define bfd_mach_tic3x         30
+     #define bfd_mach_tic4x         40
+       bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
+       bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
+       bfd_arch_v850,      /* NEC V850 */
+     #define bfd_mach_v850          1
+     #define bfd_mach_v850e         'E'
+     #define bfd_mach_v850e1        '1'
+       bfd_arch_arc,       /* ARC Cores */
+     #define bfd_mach_arc_5         5
+     #define bfd_mach_arc_6         6
+     #define bfd_mach_arc_7         7
+     #define bfd_mach_arc_8         8
+      bfd_arch_m32c,     /* Renesas M16C/M32C.  */
+     #define bfd_mach_m16c        0x75
+     #define bfd_mach_m32c        0x78
+       bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
+     #define bfd_mach_m32r          1 /* For backwards compatibility.  */
+     #define bfd_mach_m32rx         'x'
+     #define bfd_mach_m32r2         '2'
+       bfd_arch_mn10200,   /* Matsushita MN10200 */
+       bfd_arch_mn10300,   /* Matsushita MN10300 */
+     #define bfd_mach_mn10300               300
+     #define bfd_mach_am33          330
+     #define bfd_mach_am33_2        332
+       bfd_arch_fr30,
+     #define bfd_mach_fr30          0x46523330
+       bfd_arch_frv,
+     #define bfd_mach_frv           1
+     #define bfd_mach_frvsimple     2
+     #define bfd_mach_fr300         300
+     #define bfd_mach_fr400         400
+     #define bfd_mach_fr450         450
+     #define bfd_mach_frvtomcat     499     /* fr500 prototype */
+     #define bfd_mach_fr500         500
+     #define bfd_mach_fr550         550
+       bfd_arch_mcore,
+       bfd_arch_ia64,      /* HP/Intel ia64 */
+     #define bfd_mach_ia64_elf64    64
+     #define bfd_mach_ia64_elf32    32
+       bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
+     #define bfd_mach_ip2022        1
+     #define bfd_mach_ip2022ext     2
+      bfd_arch_iq2000,     /* Vitesse IQ2000.  */
+     #define bfd_mach_iq2000        1
+     #define bfd_mach_iq10          2
+       bfd_arch_mt,
+     #define bfd_mach_ms1           1
+     #define bfd_mach_mrisc2        2
+     #define bfd_mach_ms2           3
+       bfd_arch_pj,
+       bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
+     #define bfd_mach_avr1          1
+     #define bfd_mach_avr2          2
+     #define bfd_mach_avr3          3
+     #define bfd_mach_avr4          4
+     #define bfd_mach_avr5          5
+     #define bfd_mach_avr6          6
+       bfd_arch_bfin,        /* ADI Blackfin */
+     #define bfd_mach_bfin          1
+       bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
+     #define bfd_mach_cr16c         1
+       bfd_arch_crx,       /*  National Semiconductor CRX.  */
+     #define bfd_mach_crx           1
+       bfd_arch_cris,      /* Axis CRIS */
+     #define bfd_mach_cris_v0_v10   255
+     #define bfd_mach_cris_v32      32
+     #define bfd_mach_cris_v10_v32  1032
+       bfd_arch_s390,      /* IBM s390 */
+     #define bfd_mach_s390_31       31
+     #define bfd_mach_s390_64       64
+       bfd_arch_score,     /* Sunplus score */
+       bfd_arch_openrisc,  /* OpenRISC */
+       bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
+       bfd_arch_xstormy16,
+     #define bfd_mach_xstormy16     1
+       bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
+     #define bfd_mach_msp11          11
+     #define bfd_mach_msp110         110
+     #define bfd_mach_msp12          12
+     #define bfd_mach_msp13          13
+     #define bfd_mach_msp14          14
+     #define bfd_mach_msp15          15
+     #define bfd_mach_msp16          16
+     #define bfd_mach_msp21          21
+     #define bfd_mach_msp31          31
+     #define bfd_mach_msp32          32
+     #define bfd_mach_msp33          33
+     #define bfd_mach_msp41          41
+     #define bfd_mach_msp42          42
+     #define bfd_mach_msp43          43
+     #define bfd_mach_msp44          44
+       bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
+     #define bfd_mach_xc16x         1
+     #define bfd_mach_xc16xl        2
+     #define bfd_mach_xc16xs         3
+       bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
+     #define bfd_mach_xtensa        1
+        bfd_arch_maxq,     /* Dallas MAXQ 10/20 */
+     #define bfd_mach_maxq10    10
+     #define bfd_mach_maxq20    20
+       bfd_arch_z80,
+     #define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
+     #define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
+     #define bfd_mach_z80full        7 /* All undocumented instructions.  */
+     #define bfd_mach_r800           11 /* R800: successor with multiplication.  */
+       bfd_arch_last
+       };
+
+2.13.2 bfd_arch_info
+--------------------
+
+*Description*
+This structure contains information on architectures for use within BFD.
+
+     typedef struct bfd_arch_info
+     {
+       int bits_per_word;
+       int bits_per_address;
+       int bits_per_byte;
+       enum bfd_architecture arch;
+       unsigned long mach;
+       const char *arch_name;
+       const char *printable_name;
+       unsigned int section_align_power;
+       /* TRUE if this is the default machine for the architecture.
+          The default arch should be the first entry for an arch so that
+          all the entries for that arch can be accessed via `next'.  */
+       bfd_boolean the_default;
+       const struct bfd_arch_info * (*compatible)
+         (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
+
+       bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
+
+       const struct bfd_arch_info *next;
+     }
+     bfd_arch_info_type;
+
+2.13.2.1 `bfd_printable_name'
+.............................
+
+*Synopsis*
+     const char *bfd_printable_name (bfd *abfd);
+   *Description*
+Return a printable string representing the architecture and machine
+from the pointer to the architecture info structure.
+
+2.13.2.2 `bfd_scan_arch'
+........................
+
+*Synopsis*
+     const bfd_arch_info_type *bfd_scan_arch (const char *string);
+   *Description*
+Figure out if BFD supports any cpu which could be described with the
+name STRING.  Return a pointer to an `arch_info' structure if a machine
+is found, otherwise NULL.
+
+2.13.2.3 `bfd_arch_list'
+........................
+
+*Synopsis*
+     const char **bfd_arch_list (void);
+   *Description*
+Return a freshly malloced NULL-terminated vector of the names of all
+the valid BFD architectures.  Do not modify the names.
+
+2.13.2.4 `bfd_arch_get_compatible'
+..................................
+
+*Synopsis*
+     const bfd_arch_info_type *bfd_arch_get_compatible
+        (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
+   *Description*
+Determine whether two BFDs' architectures and machine types are
+compatible.  Calculates the lowest common denominator between the two
+architectures and machine types implied by the BFDs and returns a
+pointer to an `arch_info' structure describing the compatible machine.
+
+2.13.2.5 `bfd_default_arch_struct'
+..................................
+
+*Description*
+The `bfd_default_arch_struct' is an item of `bfd_arch_info_type' which
+has been initialized to a fairly generic state.  A BFD starts life by
+pointing to this structure, until the correct back end has determined
+the real architecture of the file.
+     extern const bfd_arch_info_type bfd_default_arch_struct;
+
+2.13.2.6 `bfd_set_arch_info'
+............................
+
+*Synopsis*
+     void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
+   *Description*
+Set the architecture info of ABFD to ARG.
+
+2.13.2.7 `bfd_default_set_arch_mach'
+....................................
+
+*Synopsis*
+     bfd_boolean bfd_default_set_arch_mach
+        (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
+   *Description*
+Set the architecture and machine type in BFD ABFD to ARCH and MACH.
+Find the correct pointer to a structure and insert it into the
+`arch_info' pointer.
+
+2.13.2.8 `bfd_get_arch'
+.......................
+
+*Synopsis*
+     enum bfd_architecture bfd_get_arch (bfd *abfd);
+   *Description*
+Return the enumerated type which describes the BFD ABFD's architecture.
+
+2.13.2.9 `bfd_get_mach'
+.......................
+
+*Synopsis*
+     unsigned long bfd_get_mach (bfd *abfd);
+   *Description*
+Return the long type which describes the BFD ABFD's machine.
+
+2.13.2.10 `bfd_arch_bits_per_byte'
+..................................
+
+*Synopsis*
+     unsigned int bfd_arch_bits_per_byte (bfd *abfd);
+   *Description*
+Return the number of bits in one of the BFD ABFD's architecture's bytes.
+
+2.13.2.11 `bfd_arch_bits_per_address'
+.....................................
+
+*Synopsis*
+     unsigned int bfd_arch_bits_per_address (bfd *abfd);
+   *Description*
+Return the number of bits in one of the BFD ABFD's architecture's
+addresses.
+
+2.13.2.12 `bfd_default_compatible'
+..................................
+
+*Synopsis*
+     const bfd_arch_info_type *bfd_default_compatible
+        (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
+   *Description*
+The default function for testing for compatibility.
+
+2.13.2.13 `bfd_default_scan'
+............................
+
+*Synopsis*
+     bfd_boolean bfd_default_scan
+        (const struct bfd_arch_info *info, const char *string);
+   *Description*
+The default function for working out whether this is an architecture
+hit and a machine hit.
+
+2.13.2.14 `bfd_get_arch_info'
+.............................
+
+*Synopsis*
+     const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
+   *Description*
+Return the architecture info struct in ABFD.
+
+2.13.2.15 `bfd_lookup_arch'
+...........................
+
+*Synopsis*
+     const bfd_arch_info_type *bfd_lookup_arch
+        (enum bfd_architecture arch, unsigned long machine);
+   *Description*
+Look for the architecture info structure which matches the arguments
+ARCH and MACHINE. A machine of 0 matches the machine/architecture
+structure which marks itself as the default.
+
+2.13.2.16 `bfd_printable_arch_mach'
+...................................
+
+*Synopsis*
+     const char *bfd_printable_arch_mach
+        (enum bfd_architecture arch, unsigned long machine);
+   *Description*
+Return a printable string representing the architecture and machine
+type.
+
+   This routine is depreciated.
+
+2.13.2.17 `bfd_octets_per_byte'
+...............................
+
+*Synopsis*
+     unsigned int bfd_octets_per_byte (bfd *abfd);
+   *Description*
+Return the number of octets (8-bit quantities) per target byte (minimum
+addressable unit).  In most cases, this will be one, but some DSP
+targets have 16, 32, or even 48 bits per byte.
+
+2.13.2.18 `bfd_arch_mach_octets_per_byte'
+.........................................
+
+*Synopsis*
+     unsigned int bfd_arch_mach_octets_per_byte
+        (enum bfd_architecture arch, unsigned long machine);
+   *Description*
+See bfd_octets_per_byte.
+
+   This routine is provided for those cases where a bfd * is not
+available
+
+\1f
+File: bfd.info,  Node: Opening and Closing,  Next: Internal,  Prev: Architectures,  Up: BFD front end
+
+2.14 Opening and closing BFDs
+=============================
+
+2.14.1 Functions for opening and closing
+----------------------------------------
+
+2.14.1.1 `bfd_fopen'
+....................
+
+*Synopsis*
+     bfd *bfd_fopen (const char *filename, const char *target,
+         const char *mode, int fd);
+   *Description*
+Open the file FILENAME with the target TARGET.  Return a pointer to the
+created BFD.  If FD is not -1, then `fdopen' is used to open the file;
+otherwise, `fopen' is used.  MODE is passed directly to `fopen' or
+`fdopen'.
+
+   Calls `bfd_find_target', so TARGET is interpreted as by that
+function.
+
+   The new BFD is marked as cacheable iff FD is -1.
+
+   If `NULL' is returned then an error has occured.   Possible errors
+are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call'
+error.
+
+2.14.1.2 `bfd_openr'
+....................
+
+*Synopsis*
+     bfd *bfd_openr (const char *filename, const char *target);
+   *Description*
+Open the file FILENAME (using `fopen') with the target TARGET.  Return
+a pointer to the created BFD.
+
+   Calls `bfd_find_target', so TARGET is interpreted as by that
+function.
+
+   If `NULL' is returned then an error has occured.   Possible errors
+are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call'
+error.
+
+2.14.1.3 `bfd_fdopenr'
+......................
+
+*Synopsis*
+     bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
+   *Description*
+`bfd_fdopenr' is to `bfd_fopenr' much like `fdopen' is to `fopen'.  It
+opens a BFD on a file already described by the FD supplied.
+
+   When the file is later `bfd_close'd, the file descriptor will be
+closed.  If the caller desires that this file descriptor be cached by
+BFD (opened as needed, closed as needed to free descriptors for other
+opens), with the supplied FD used as an initial file descriptor (but
+subject to closure at any time), call bfd_set_cacheable(bfd, 1) on the
+returned BFD.  The default is to assume no caching; the file descriptor
+will remain open until `bfd_close', and will not be affected by BFD
+operations on other files.
+
+   Possible errors are `bfd_error_no_memory',
+`bfd_error_invalid_target' and `bfd_error_system_call'.
+
+2.14.1.4 `bfd_openstreamr'
+..........................
+
+*Synopsis*
+     bfd *bfd_openstreamr (const char *, const char *, void *);
+   *Description*
+Open a BFD for read access on an existing stdio stream.  When the BFD
+is passed to `bfd_close', the stream will be closed.
+
+2.14.1.5 `bfd_openr_iovec'
+..........................
+
+*Synopsis*
+     bfd *bfd_openr_iovec (const char *filename, const char *target,
+         void *(*open) (struct bfd *nbfd,
+         void *open_closure),
+         void *open_closure,
+         file_ptr (*pread) (struct bfd *nbfd,
+         void *stream,
+         void *buf,
+         file_ptr nbytes,
+         file_ptr offset),
+         int (*close) (struct bfd *nbfd,
+         void *stream));
+   *Description*
+Create and return a BFD backed by a read-only STREAM.  The STREAM is
+created using OPEN, accessed using PREAD and destroyed using CLOSE.
+
+   Calls `bfd_find_target', so TARGET is interpreted as by that
+function.
+
+   Calls OPEN (which can call `bfd_zalloc' and `bfd_get_filename') to
+obtain the read-only stream backing the BFD.  OPEN either succeeds
+returning the non-`NULL' STREAM, or fails returning `NULL' (setting
+`bfd_error').
+
+   Calls PREAD to request NBYTES of data from STREAM starting at OFFSET
+(e.g., via a call to `bfd_read').  PREAD either succeeds returning the
+number of bytes read (which can be less than NBYTES when end-of-file),
+or fails returning -1 (setting `bfd_error').
+
+   Calls CLOSE when the BFD is later closed using `bfd_close'.  CLOSE
+either succeeds returning 0, or fails returning -1 (setting
+`bfd_error').
+
+   If `bfd_openr_iovec' returns `NULL' then an error has occurred.
+Possible errors are `bfd_error_no_memory', `bfd_error_invalid_target'
+and `bfd_error_system_call'.
+
+2.14.1.6 `bfd_openw'
+....................
+
+*Synopsis*
+     bfd *bfd_openw (const char *filename, const char *target);
+   *Description*
+Create a BFD, associated with file FILENAME, using the file format
+TARGET, and return a pointer to it.
+
+   Possible errors are `bfd_error_system_call', `bfd_error_no_memory',
+`bfd_error_invalid_target'.
+
+2.14.1.7 `bfd_close'
+....................
+
+*Synopsis*
+     bfd_boolean bfd_close (bfd *abfd);
+   *Description*
+Close a BFD. If the BFD was open for writing, then pending operations
+are completed and the file written out and closed.  If the created file
+is executable, then `chmod' is called to mark it as such.
+
+   All memory attached to the BFD is released.
+
+   The file descriptor associated with the BFD is closed (even if it
+was passed in to BFD by `bfd_fdopenr').
+
+   *Returns*
+`TRUE' is returned if all is ok, otherwise `FALSE'.
+
+2.14.1.8 `bfd_close_all_done'
+.............................
+
+*Synopsis*
+     bfd_boolean bfd_close_all_done (bfd *);
+   *Description*
+Close a BFD.  Differs from `bfd_close' since it does not complete any
+pending operations.  This routine would be used if the application had
+just used BFD for swapping and didn't want to use any of the writing
+code.
+
+   If the created file is executable, then `chmod' is called to mark it
+as such.
+
+   All memory attached to the BFD is released.
+
+   *Returns*
+`TRUE' is returned if all is ok, otherwise `FALSE'.
+
+2.14.1.9 `bfd_create'
+.....................
+
+*Synopsis*
+     bfd *bfd_create (const char *filename, bfd *templ);
+   *Description*
+Create a new BFD in the manner of `bfd_openw', but without opening a
+file. The new BFD takes the target from the target used by TEMPLATE.
+The format is always set to `bfd_object'.
+
+2.14.1.10 `bfd_make_writable'
+.............................
+
+*Synopsis*
+     bfd_boolean bfd_make_writable (bfd *abfd);
+   *Description*
+Takes a BFD as created by `bfd_create' and converts it into one like as
+returned by `bfd_openw'.  It does this by converting the BFD to
+BFD_IN_MEMORY.  It's assumed that you will call `bfd_make_readable' on
+this bfd later.
+
+   *Returns*
+`TRUE' is returned if all is ok, otherwise `FALSE'.
+
+2.14.1.11 `bfd_make_readable'
+.............................
+
+*Synopsis*
+     bfd_boolean bfd_make_readable (bfd *abfd);
+   *Description*
+Takes a BFD as created by `bfd_create' and `bfd_make_writable' and
+converts it into one like as returned by `bfd_openr'.  It does this by
+writing the contents out to the memory buffer, then reversing the
+direction.
+
+   *Returns*
+`TRUE' is returned if all is ok, otherwise `FALSE'.
+
+2.14.1.12 `bfd_alloc'
+.....................
+
+*Synopsis*
+     void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
+   *Description*
+Allocate a block of WANTED bytes of memory attached to `abfd' and
+return a pointer to it.
+
+2.14.1.13 `bfd_alloc2'
+......................
+
+*Synopsis*
+     void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
+   *Description*
+Allocate a block of NMEMB elements of SIZE bytes each of memory
+attached to `abfd' and return a pointer to it.
+
+2.14.1.14 `bfd_zalloc'
+......................
+
+*Synopsis*
+     void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
+   *Description*
+Allocate a block of WANTED bytes of zeroed memory attached to `abfd'
+and return a pointer to it.
+
+2.14.1.15 `bfd_zalloc2'
+.......................
+
+*Synopsis*
+     void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
+   *Description*
+Allocate a block of NMEMB elements of SIZE bytes each of zeroed memory
+attached to `abfd' and return a pointer to it.
+
+2.14.1.16 `bfd_calc_gnu_debuglink_crc32'
+........................................
+
+*Synopsis*
+     unsigned long bfd_calc_gnu_debuglink_crc32
+        (unsigned long crc, const unsigned char *buf, bfd_size_type len);
+   *Description*
+Computes a CRC value as used in the .gnu_debuglink section.  Advances
+the previously computed CRC value by computing and adding in the crc32
+for LEN bytes of BUF.
+
+   *Returns*
+Return the updated CRC32 value.
+
+2.14.1.17 `get_debug_link_info'
+...............................
+
+*Synopsis*
+     char *get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
+   *Description*
+fetch the filename and CRC32 value for any separate debuginfo
+associated with ABFD. Return NULL if no such info found, otherwise
+return filename and update CRC32_OUT.
+
+2.14.1.18 `separate_debug_file_exists'
+......................................
+
+*Synopsis*
+     bfd_boolean separate_debug_file_exists
+        (char *name, unsigned long crc32);
+   *Description*
+Checks to see if NAME is a file and if its contents match CRC32.
+
+2.14.1.19 `find_separate_debug_file'
+....................................
+
+*Synopsis*
+     char *find_separate_debug_file (bfd *abfd);
+   *Description*
+Searches ABFD for a reference to separate debugging information, scans
+various locations in the filesystem, including the file tree rooted at
+DEBUG_FILE_DIRECTORY, and returns a filename of such debugging
+information if the file is found and has matching CRC32.  Returns NULL
+if no reference to debugging file exists, or file cannot be found.
+
+2.14.1.20 `bfd_follow_gnu_debuglink'
+....................................
+
+*Synopsis*
+     char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
+   *Description*
+Takes a BFD and searches it for a .gnu_debuglink section.  If this
+section is found, it examines the section for the name and checksum of
+a '.debug' file containing auxiliary debugging information.  It then
+searches the filesystem for this .debug file in some standard
+locations, including the directory tree rooted at DIR, and if found
+returns the full filename.
+
+   If DIR is NULL, it will search a default path configured into libbfd
+at build time.  [XXX this feature is not currently implemented].
+
+   *Returns*
+`NULL' on any errors or failure to locate the .debug file, otherwise a
+pointer to a heap-allocated string containing the filename.  The caller
+is responsible for freeing this string.
+
+2.14.1.21 `bfd_create_gnu_debuglink_section'
+............................................
+
+*Synopsis*
+     struct bfd_section *bfd_create_gnu_debuglink_section
+        (bfd *abfd, const char *filename);
+   *Description*
+Takes a BFD and adds a .gnu_debuglink section to it.  The section is
+sized to be big enough to contain a link to the specified FILENAME.
+
+   *Returns*
+A pointer to the new section is returned if all is ok.  Otherwise
+`NULL' is returned and bfd_error is set.
+
+2.14.1.22 `bfd_fill_in_gnu_debuglink_section'
+.............................................
+
+*Synopsis*
+     bfd_boolean bfd_fill_in_gnu_debuglink_section
+        (bfd *abfd, struct bfd_section *sect, const char *filename);
+   *Description*
+Takes a BFD and containing a .gnu_debuglink section SECT and fills in
+the contents of the section to contain a link to the specified
+FILENAME.  The filename should be relative to the current directory.
+
+   *Returns*
+`TRUE' is returned if all is ok.  Otherwise `FALSE' is returned and
+bfd_error is set.
+
+\1f
+File: bfd.info,  Node: Internal,  Next: File Caching,  Prev: Opening and Closing,  Up: BFD front end
+
+2.15 Implementation details
+===========================
+
+2.15.1 Internal functions
+-------------------------
+
+*Description*
+These routines are used within BFD.  They are not intended for export,
+but are documented here for completeness.
+
+2.15.1.1 `bfd_write_bigendian_4byte_int'
+........................................
+
+*Synopsis*
+     bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
+   *Description*
+Write a 4 byte integer I to the output BFD ABFD, in big endian order
+regardless of what else is going on.  This is useful in archives.
+
+2.15.1.2 `bfd_put_size'
+.......................
+
+2.15.1.3 `bfd_get_size'
+.......................
+
+*Description*
+These macros as used for reading and writing raw data in sections; each
+access (except for bytes) is vectored through the target format of the
+BFD and mangled accordingly. The mangling performs any necessary endian
+translations and removes alignment restrictions.  Note that types
+accepted and returned by these macros are identical so they can be
+swapped around in macros--for example, `libaout.h' defines `GET_WORD'
+to either `bfd_get_32' or `bfd_get_64'.
+
+   In the put routines, VAL must be a `bfd_vma'.  If we are on a system
+without prototypes, the caller is responsible for making sure that is
+true, with a cast if necessary.  We don't cast them in the macro
+definitions because that would prevent `lint' or `gcc -Wall' from
+detecting sins such as passing a pointer.  To detect calling these with
+less than a `bfd_vma', use `gcc -Wconversion' on a host with 64 bit
+`bfd_vma''s.
+
+     /* Byte swapping macros for user section data.  */
+
+     #define bfd_put_8(abfd, val, ptr) \
+       ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
+     #define bfd_put_signed_8 \
+       bfd_put_8
+     #define bfd_get_8(abfd, ptr) \
+       (*(unsigned char *) (ptr) & 0xff)
+     #define bfd_get_signed_8(abfd, ptr) \
+       (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
+
+     #define bfd_put_16(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
+     #define bfd_put_signed_16 \
+       bfd_put_16
+     #define bfd_get_16(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx16, (ptr))
+     #define bfd_get_signed_16(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
+
+     #define bfd_put_32(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
+     #define bfd_put_signed_32 \
+       bfd_put_32
+     #define bfd_get_32(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx32, (ptr))
+     #define bfd_get_signed_32(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
+
+     #define bfd_put_64(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
+     #define bfd_put_signed_64 \
+       bfd_put_64
+     #define bfd_get_64(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx64, (ptr))
+     #define bfd_get_signed_64(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
+
+     #define bfd_get(bits, abfd, ptr)                       \
+       ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
+        : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
+        : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
+        : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
+        : (abort (), (bfd_vma) - 1))
+
+     #define bfd_put(bits, abfd, val, ptr)                  \
+       ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
+        : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
+        : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
+        : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
+        : (abort (), (void) 0))
+
+2.15.1.4 `bfd_h_put_size'
+.........................
+
+*Description*
+These macros have the same function as their `bfd_get_x' brethren,
+except that they are used for removing information for the header
+records of object files. Believe it or not, some object files keep
+their header records in big endian order and their data in little
+endian order.
+
+     /* Byte swapping macros for file header data.  */
+
+     #define bfd_h_put_8(abfd, val, ptr) \
+       bfd_put_8 (abfd, val, ptr)
+     #define bfd_h_put_signed_8(abfd, val, ptr) \
+       bfd_put_8 (abfd, val, ptr)
+     #define bfd_h_get_8(abfd, ptr) \
+       bfd_get_8 (abfd, ptr)
+     #define bfd_h_get_signed_8(abfd, ptr) \
+       bfd_get_signed_8 (abfd, ptr)
+
+     #define bfd_h_put_16(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
+     #define bfd_h_put_signed_16 \
+       bfd_h_put_16
+     #define bfd_h_get_16(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx16, (ptr))
+     #define bfd_h_get_signed_16(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
+
+     #define bfd_h_put_32(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
+     #define bfd_h_put_signed_32 \
+       bfd_h_put_32
+     #define bfd_h_get_32(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx32, (ptr))
+     #define bfd_h_get_signed_32(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
+
+     #define bfd_h_put_64(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
+     #define bfd_h_put_signed_64 \
+       bfd_h_put_64
+     #define bfd_h_get_64(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx64, (ptr))
+     #define bfd_h_get_signed_64(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
+
+     /* Aliases for the above, which should eventually go away.  */
+
+     #define H_PUT_64  bfd_h_put_64
+     #define H_PUT_32  bfd_h_put_32
+     #define H_PUT_16  bfd_h_put_16
+     #define H_PUT_8   bfd_h_put_8
+     #define H_PUT_S64 bfd_h_put_signed_64
+     #define H_PUT_S32 bfd_h_put_signed_32
+     #define H_PUT_S16 bfd_h_put_signed_16
+     #define H_PUT_S8  bfd_h_put_signed_8
+     #define H_GET_64  bfd_h_get_64
+     #define H_GET_32  bfd_h_get_32
+     #define H_GET_16  bfd_h_get_16
+     #define H_GET_8   bfd_h_get_8
+     #define H_GET_S64 bfd_h_get_signed_64
+     #define H_GET_S32 bfd_h_get_signed_32
+     #define H_GET_S16 bfd_h_get_signed_16
+     #define H_GET_S8  bfd_h_get_signed_8
+
+2.15.1.5 `bfd_log2'
+...................
+
+*Synopsis*
+     unsigned int bfd_log2 (bfd_vma x);
+   *Description*
+Return the log base 2 of the value supplied, rounded up.  E.g., an X of
+1025 returns 11.  A X of 0 returns 0.
+
+\1f
+File: bfd.info,  Node: File Caching,  Next: Linker Functions,  Prev: Internal,  Up: BFD front end
+
+2.16 File caching
+=================
+
+The file caching mechanism is embedded within BFD and allows the
+application to open as many BFDs as it wants without regard to the
+underlying operating system's file descriptor limit (often as low as 20
+open files).  The module in `cache.c' maintains a least recently used
+list of `BFD_CACHE_MAX_OPEN' files, and exports the name
+`bfd_cache_lookup', which runs around and makes sure that the required
+BFD is open. If not, then it chooses a file to close, closes it and
+opens the one wanted, returning its file handle.
+
+2.16.1 Caching functions
+------------------------
+
+2.16.1.1 `bfd_cache_init'
+.........................
+
+*Synopsis*
+     bfd_boolean bfd_cache_init (bfd *abfd);
+   *Description*
+Add a newly opened BFD to the cache.
+
+2.16.1.2 `bfd_cache_close'
+..........................
+
+*Synopsis*
+     bfd_boolean bfd_cache_close (bfd *abfd);
+   *Description*
+Remove the BFD ABFD from the cache. If the attached file is open, then
+close it too.
+
+   *Returns*
+`FALSE' is returned if closing the file fails, `TRUE' is returned if
+all is well.
+
+2.16.1.3 `bfd_cache_close_all'
+..............................
+
+*Synopsis*
+     bfd_boolean bfd_cache_close_all (void);
+   *Description*
+Remove all BFDs from the cache. If the attached file is open, then
+close it too.
+
+   *Returns*
+`FALSE' is returned if closing one of the file fails, `TRUE' is
+returned if all is well.
+
+2.16.1.4 `bfd_open_file'
+........................
+
+*Synopsis*
+     FILE* bfd_open_file (bfd *abfd);
+   *Description*
+Call the OS to open a file for ABFD.  Return the `FILE *' (possibly
+`NULL') that results from this operation.  Set up the BFD so that
+future accesses know the file is open. If the `FILE *' returned is
+`NULL', then it won't have been put in the cache, so it won't have to
+be removed from it.
+
+\1f
+File: bfd.info,  Node: Linker Functions,  Next: Hash Tables,  Prev: File Caching,  Up: BFD front end
+
+2.17 Linker Functions
+=====================
+
+The linker uses three special entry points in the BFD target vector.
+It is not necessary to write special routines for these entry points
+when creating a new BFD back end, since generic versions are provided.
+However, writing them can speed up linking and make it use
+significantly less runtime memory.
+
+   The first routine creates a hash table used by the other routines.
+The second routine adds the symbols from an object file to the hash
+table.  The third routine takes all the object files and links them
+together to create the output file.  These routines are designed so
+that the linker proper does not need to know anything about the symbols
+in the object files that it is linking.  The linker merely arranges the
+sections as directed by the linker script and lets BFD handle the
+details of symbols and relocs.
+
+   The second routine and third routines are passed a pointer to a
+`struct bfd_link_info' structure (defined in `bfdlink.h') which holds
+information relevant to the link, including the linker hash table
+(which was created by the first routine) and a set of callback
+functions to the linker proper.
+
+   The generic linker routines are in `linker.c', and use the header
+file `genlink.h'.  As of this writing, the only back ends which have
+implemented versions of these routines are a.out (in `aoutx.h') and
+ECOFF (in `ecoff.c').  The a.out routines are used as examples
+throughout this section.
+
+* Menu:
+
+* Creating a Linker Hash Table::
+* Adding Symbols to the Hash Table::
+* Performing the Final Link::
+
+\1f
+File: bfd.info,  Node: Creating a Linker Hash Table,  Next: Adding Symbols to the Hash Table,  Prev: Linker Functions,  Up: Linker Functions
+
+2.17.1 Creating a linker hash table
+-----------------------------------
+
+The linker routines must create a hash table, which must be derived
+from `struct bfd_link_hash_table' described in `bfdlink.c'.  *Note Hash
+Tables::, for information on how to create a derived hash table.  This
+entry point is called using the target vector of the linker output file.
+
+   The `_bfd_link_hash_table_create' entry point must allocate and
+initialize an instance of the desired hash table.  If the back end does
+not require any additional information to be stored with the entries in
+the hash table, the entry point may simply create a `struct
+bfd_link_hash_table'.  Most likely, however, some additional
+information will be needed.
+
+   For example, with each entry in the hash table the a.out linker
+keeps the index the symbol has in the final output file (this index
+number is used so that when doing a relocatable link the symbol index
+used in the output file can be quickly filled in when copying over a
+reloc).  The a.out linker code defines the required structures and
+functions for a hash table derived from `struct bfd_link_hash_table'.
+The a.out linker hash table is created by the function
+`NAME(aout,link_hash_table_create)'; it simply allocates space for the
+hash table, initializes it, and returns a pointer to it.
+
+   When writing the linker routines for a new back end, you will
+generally not know exactly which fields will be required until you have
+finished.  You should simply create a new hash table which defines no
+additional fields, and then simply add fields as they become necessary.
+
+\1f
+File: bfd.info,  Node: Adding Symbols to the Hash Table,  Next: Performing the Final Link,  Prev: Creating a Linker Hash Table,  Up: Linker Functions
+
+2.17.2 Adding symbols to the hash table
+---------------------------------------
+
+The linker proper will call the `_bfd_link_add_symbols' entry point for
+each object file or archive which is to be linked (typically these are
+the files named on the command line, but some may also come from the
+linker script).  The entry point is responsible for examining the file.
+For an object file, BFD must add any relevant symbol information to
+the hash table.  For an archive, BFD must determine which elements of
+the archive should be used and adding them to the link.
+
+   The a.out version of this entry point is
+`NAME(aout,link_add_symbols)'.
+
+* Menu:
+
+* Differing file formats::
+* Adding symbols from an object file::
+* Adding symbols from an archive::
+
+\1f
+File: bfd.info,  Node: Differing file formats,  Next: Adding symbols from an object file,  Prev: Adding Symbols to the Hash Table,  Up: Adding Symbols to the Hash Table
+
+2.17.2.1 Differing file formats
+...............................
+
+Normally all the files involved in a link will be of the same format,
+but it is also possible to link together different format object files,
+and the back end must support that.  The `_bfd_link_add_symbols' entry
+point is called via the target vector of the file to be added.  This
+has an important consequence: the function may not assume that the hash
+table is the type created by the corresponding
+`_bfd_link_hash_table_create' vector.  All the `_bfd_link_add_symbols'
+function can assume about the hash table is that it is derived from
+`struct bfd_link_hash_table'.
+
+   Sometimes the `_bfd_link_add_symbols' function must store some
+information in the hash table entry to be used by the `_bfd_final_link'
+function.  In such a case the `creator' field of the hash table must be
+checked to make sure that the hash table was created by an object file
+of the same format.
+
+   The `_bfd_final_link' routine must be prepared to handle a hash
+entry without any extra information added by the
+`_bfd_link_add_symbols' function.  A hash entry without extra
+information will also occur when the linker script directs the linker
+to create a symbol.  Note that, regardless of how a hash table entry is
+added, all the fields will be initialized to some sort of null value by
+the hash table entry initialization function.
+
+   See `ecoff_link_add_externals' for an example of how to check the
+`creator' field before saving information (in this case, the ECOFF
+external symbol debugging information) in a hash table entry.
+
+\1f
+File: bfd.info,  Node: Adding symbols from an object file,  Next: Adding symbols from an archive,  Prev: Differing file formats,  Up: Adding Symbols to the Hash Table
+
+2.17.2.2 Adding symbols from an object file
+...........................................
+
+When the `_bfd_link_add_symbols' routine is passed an object file, it
+must add all externally visible symbols in that object file to the hash
+table.  The actual work of adding the symbol to the hash table is
+normally handled by the function `_bfd_generic_link_add_one_symbol'.
+The `_bfd_link_add_symbols' routine is responsible for reading all the
+symbols from the object file and passing the correct information to
+`_bfd_generic_link_add_one_symbol'.
+
+   The `_bfd_link_add_symbols' routine should not use
+`bfd_canonicalize_symtab' to read the symbols.  The point of providing
+this routine is to avoid the overhead of converting the symbols into
+generic `asymbol' structures.
+
+   `_bfd_generic_link_add_one_symbol' handles the details of combining
+common symbols, warning about multiple definitions, and so forth.  It
+takes arguments which describe the symbol to add, notably symbol flags,
+a section, and an offset.  The symbol flags include such things as
+`BSF_WEAK' or `BSF_INDIRECT'.  The section is a section in the object
+file, or something like `bfd_und_section_ptr' for an undefined symbol
+or `bfd_com_section_ptr' for a common symbol.
+
+   If the `_bfd_final_link' routine is also going to need to read the
+symbol information, the `_bfd_link_add_symbols' routine should save it
+somewhere attached to the object file BFD.  However, the information
+should only be saved if the `keep_memory' field of the `info' argument
+is TRUE, so that the `-no-keep-memory' linker switch is effective.
+
+   The a.out function which adds symbols from an object file is
+`aout_link_add_object_symbols', and most of the interesting work is in
+`aout_link_add_symbols'.  The latter saves pointers to the hash tables
+entries created by `_bfd_generic_link_add_one_symbol' indexed by symbol
+number, so that the `_bfd_final_link' routine does not have to call the
+hash table lookup routine to locate the entry.
+
+\1f
+File: bfd.info,  Node: Adding symbols from an archive,  Prev: Adding symbols from an object file,  Up: Adding Symbols to the Hash Table
+
+2.17.2.3 Adding symbols from an archive
+.......................................
+
+When the `_bfd_link_add_symbols' routine is passed an archive, it must
+look through the symbols defined by the archive and decide which
+elements of the archive should be included in the link.  For each such
+element it must call the `add_archive_element' linker callback, and it
+must add the symbols from the object file to the linker hash table.
+
+   In most cases the work of looking through the symbols in the archive
+should be done by the `_bfd_generic_link_add_archive_symbols' function.
+This function builds a hash table from the archive symbol table and
+looks through the list of undefined symbols to see which elements
+should be included.  `_bfd_generic_link_add_archive_symbols' is passed
+a function to call to make the final decision about adding an archive
+element to the link and to do the actual work of adding the symbols to
+the linker hash table.
+
+   The function passed to `_bfd_generic_link_add_archive_symbols' must
+read the symbols of the archive element and decide whether the archive
+element should be included in the link.  If the element is to be
+included, the `add_archive_element' linker callback routine must be
+called with the element as an argument, and the elements symbols must
+be added to the linker hash table just as though the element had itself
+been passed to the `_bfd_link_add_symbols' function.
+
+   When the a.out `_bfd_link_add_symbols' function receives an archive,
+it calls `_bfd_generic_link_add_archive_symbols' passing
+`aout_link_check_archive_element' as the function argument.
+`aout_link_check_archive_element' calls `aout_link_check_ar_symbols'.
+If the latter decides to add the element (an element is only added if
+it provides a real, non-common, definition for a previously undefined
+or common symbol) it calls the `add_archive_element' callback and then
+`aout_link_check_archive_element' calls `aout_link_add_symbols' to
+actually add the symbols to the linker hash table.
+
+   The ECOFF back end is unusual in that it does not normally call
+`_bfd_generic_link_add_archive_symbols', because ECOFF archives already
+contain a hash table of symbols.  The ECOFF back end searches the
+archive itself to avoid the overhead of creating a new hash table.
+
+\1f
+File: bfd.info,  Node: Performing the Final Link,  Prev: Adding Symbols to the Hash Table,  Up: Linker Functions
+
+2.17.3 Performing the final link
+--------------------------------
+
+When all the input files have been processed, the linker calls the
+`_bfd_final_link' entry point of the output BFD.  This routine is
+responsible for producing the final output file, which has several
+aspects.  It must relocate the contents of the input sections and copy
+the data into the output sections.  It must build an output symbol
+table including any local symbols from the input files and the global
+symbols from the hash table.  When producing relocatable output, it must
+modify the input relocs and write them into the output file.  There may
+also be object format dependent work to be done.
+
+   The linker will also call the `write_object_contents' entry point
+when the BFD is closed.  The two entry points must work together in
+order to produce the correct output file.
+
+   The details of how this works are inevitably dependent upon the
+specific object file format.  The a.out `_bfd_final_link' routine is
+`NAME(aout,final_link)'.
+
+* Menu:
+
+* Information provided by the linker::
+* Relocating the section contents::
+* Writing the symbol table::
+
+\1f
+File: bfd.info,  Node: Information provided by the linker,  Next: Relocating the section contents,  Prev: Performing the Final Link,  Up: Performing the Final Link
+
+2.17.3.1 Information provided by the linker
+...........................................
+
+Before the linker calls the `_bfd_final_link' entry point, it sets up
+some data structures for the function to use.
+
+   The `input_bfds' field of the `bfd_link_info' structure will point
+to a list of all the input files included in the link.  These files are
+linked through the `link_next' field of the `bfd' structure.
+
+   Each section in the output file will have a list of `link_order'
+structures attached to the `map_head.link_order' field (the
+`link_order' structure is defined in `bfdlink.h').  These structures
+describe how to create the contents of the output section in terms of
+the contents of various input sections, fill constants, and,
+eventually, other types of information.  They also describe relocs that
+must be created by the BFD backend, but do not correspond to any input
+file; this is used to support -Ur, which builds constructors while
+generating a relocatable object file.
+
+\1f
+File: bfd.info,  Node: Relocating the section contents,  Next: Writing the symbol table,  Prev: Information provided by the linker,  Up: Performing the Final Link
+
+2.17.3.2 Relocating the section contents
+........................................
+
+The `_bfd_final_link' function should look through the `link_order'
+structures attached to each section of the output file.  Each
+`link_order' structure should either be handled specially, or it should
+be passed to the function `_bfd_default_link_order' which will do the
+right thing (`_bfd_default_link_order' is defined in `linker.c').
+
+   For efficiency, a `link_order' of type `bfd_indirect_link_order'
+whose associated section belongs to a BFD of the same format as the
+output BFD must be handled specially.  This type of `link_order'
+describes part of an output section in terms of a section belonging to
+one of the input files.  The `_bfd_final_link' function should read the
+contents of the section and any associated relocs, apply the relocs to
+the section contents, and write out the modified section contents.  If
+performing a relocatable link, the relocs themselves must also be
+modified and written out.
+
+   The functions `_bfd_relocate_contents' and
+`_bfd_final_link_relocate' provide some general support for performing
+the actual relocations, notably overflow checking.  Their arguments
+include information about the symbol the relocation is against and a
+`reloc_howto_type' argument which describes the relocation to perform.
+These functions are defined in `reloc.c'.
+
+   The a.out function which handles reading, relocating, and writing
+section contents is `aout_link_input_section'.  The actual relocation
+is done in `aout_link_input_section_std' and
+`aout_link_input_section_ext'.
+
+\1f
+File: bfd.info,  Node: Writing the symbol table,  Prev: Relocating the section contents,  Up: Performing the Final Link
+
+2.17.3.3 Writing the symbol table
+.................................
+
+The `_bfd_final_link' function must gather all the symbols in the input
+files and write them out.  It must also write out all the symbols in
+the global hash table.  This must be controlled by the `strip' and
+`discard' fields of the `bfd_link_info' structure.
+
+   The local symbols of the input files will not have been entered into
+the linker hash table.  The `_bfd_final_link' routine must consider
+each input file and include the symbols in the output file.  It may be
+convenient to do this when looking through the `link_order' structures,
+or it may be done by stepping through the `input_bfds' list.
+
+   The `_bfd_final_link' routine must also traverse the global hash
+table to gather all the externally visible symbols.  It is possible
+that most of the externally visible symbols may be written out when
+considering the symbols of each input file, but it is still necessary
+to traverse the hash table since the linker script may have defined
+some symbols that are not in any of the input files.
+
+   The `strip' field of the `bfd_link_info' structure controls which
+symbols are written out.  The possible values are listed in
+`bfdlink.h'.  If the value is `strip_some', then the `keep_hash' field
+of the `bfd_link_info' structure is a hash table of symbols to keep;
+each symbol should be looked up in this hash table, and only symbols
+which are present should be included in the output file.
+
+   If the `strip' field of the `bfd_link_info' structure permits local
+symbols to be written out, the `discard' field is used to further
+controls which local symbols are included in the output file.  If the
+value is `discard_l', then all local symbols which begin with a certain
+prefix are discarded; this is controlled by the
+`bfd_is_local_label_name' entry point.
+
+   The a.out backend handles symbols by calling
+`aout_link_write_symbols' on each input BFD and then traversing the
+global hash table with the function `aout_link_write_other_symbol'.  It
+builds a string table while writing out the symbols, which is written
+to the output file at the end of `NAME(aout,final_link)'.
+
+2.17.3.4 `bfd_link_split_section'
+.................................
+
+*Synopsis*
+     bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
+   *Description*
+Return nonzero if SEC should be split during a reloceatable or final
+link.
+     #define bfd_link_split_section(abfd, sec) \
+            BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
+
+2.17.3.5 `bfd_section_already_linked'
+.....................................
+
+*Synopsis*
+     void bfd_section_already_linked (bfd *abfd, asection *sec,
+         struct bfd_link_info *info);
+   *Description*
+Check if SEC has been already linked during a reloceatable or final
+link.
+     #define bfd_section_already_linked(abfd, sec, info) \
+            BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
+
+\1f
+File: bfd.info,  Node: Hash Tables,  Prev: Linker Functions,  Up: BFD front end
+
+2.18 Hash Tables
+================
+
+BFD provides a simple set of hash table functions.  Routines are
+provided to initialize a hash table, to free a hash table, to look up a
+string in a hash table and optionally create an entry for it, and to
+traverse a hash table.  There is currently no routine to delete an
+string from a hash table.
+
+   The basic hash table does not permit any data to be stored with a
+string.  However, a hash table is designed to present a base class from
+which other types of hash tables may be derived.  These derived types
+may store additional information with the string.  Hash tables were
+implemented in this way, rather than simply providing a data pointer in
+a hash table entry, because they were designed for use by the linker
+back ends.  The linker may create thousands of hash table entries, and
+the overhead of allocating private data and storing and following
+pointers becomes noticeable.
+
+   The basic hash table code is in `hash.c'.
+
+* Menu:
+
+* Creating and Freeing a Hash Table::
+* Looking Up or Entering a String::
+* Traversing a Hash Table::
+* Deriving a New Hash Table Type::
+
+\1f
+File: bfd.info,  Node: Creating and Freeing a Hash Table,  Next: Looking Up or Entering a String,  Prev: Hash Tables,  Up: Hash Tables
+
+2.18.1 Creating and freeing a hash table
+----------------------------------------
+
+To create a hash table, create an instance of a `struct bfd_hash_table'
+(defined in `bfd.h') and call `bfd_hash_table_init' (if you know
+approximately how many entries you will need, the function
+`bfd_hash_table_init_n', which takes a SIZE argument, may be used).
+`bfd_hash_table_init' returns `FALSE' if some sort of error occurs.
+
+   The function `bfd_hash_table_init' take as an argument a function to
+use to create new entries.  For a basic hash table, use the function
+`bfd_hash_newfunc'.  *Note Deriving a New Hash Table Type::, for why
+you would want to use a different value for this argument.
+
+   `bfd_hash_table_init' will create an objalloc which will be used to
+allocate new entries.  You may allocate memory on this objalloc using
+`bfd_hash_allocate'.
+
+   Use `bfd_hash_table_free' to free up all the memory that has been
+allocated for a hash table.  This will not free up the `struct
+bfd_hash_table' itself, which you must provide.
+
+   Use `bfd_hash_set_default_size' to set the default size of hash
+table to use.
+
+\1f
+File: bfd.info,  Node: Looking Up or Entering a String,  Next: Traversing a Hash Table,  Prev: Creating and Freeing a Hash Table,  Up: Hash Tables
+
+2.18.2 Looking up or entering a string
+--------------------------------------
+
+The function `bfd_hash_lookup' is used both to look up a string in the
+hash table and to create a new entry.
+
+   If the CREATE argument is `FALSE', `bfd_hash_lookup' will look up a
+string.  If the string is found, it will returns a pointer to a `struct
+bfd_hash_entry'.  If the string is not found in the table
+`bfd_hash_lookup' will return `NULL'.  You should not modify any of the
+fields in the returns `struct bfd_hash_entry'.
+
+   If the CREATE argument is `TRUE', the string will be entered into
+the hash table if it is not already there.  Either way a pointer to a
+`struct bfd_hash_entry' will be returned, either to the existing
+structure or to a newly created one.  In this case, a `NULL' return
+means that an error occurred.
+
+   If the CREATE argument is `TRUE', and a new entry is created, the
+COPY argument is used to decide whether to copy the string onto the
+hash table objalloc or not.  If COPY is passed as `FALSE', you must be
+careful not to deallocate or modify the string as long as the hash table
+exists.
+
+\1f
+File: bfd.info,  Node: Traversing a Hash Table,  Next: Deriving a New Hash Table Type,  Prev: Looking Up or Entering a String,  Up: Hash Tables
+
+2.18.3 Traversing a hash table
+------------------------------
+
+The function `bfd_hash_traverse' may be used to traverse a hash table,
+calling a function on each element.  The traversal is done in a random
+order.
+
+   `bfd_hash_traverse' takes as arguments a function and a generic
+`void *' pointer.  The function is called with a hash table entry (a
+`struct bfd_hash_entry *') and the generic pointer passed to
+`bfd_hash_traverse'.  The function must return a `boolean' value, which
+indicates whether to continue traversing the hash table.  If the
+function returns `FALSE', `bfd_hash_traverse' will stop the traversal
+and return immediately.
+
+\1f
+File: bfd.info,  Node: Deriving a New Hash Table Type,  Prev: Traversing a Hash Table,  Up: Hash Tables
+
+2.18.4 Deriving a new hash table type
+-------------------------------------
+
+Many uses of hash tables want to store additional information which
+each entry in the hash table.  Some also find it convenient to store
+additional information with the hash table itself.  This may be done
+using a derived hash table.
+
+   Since C is not an object oriented language, creating a derived hash
+table requires sticking together some boilerplate routines with a few
+differences specific to the type of hash table you want to create.
+
+   An example of a derived hash table is the linker hash table.  The
+structures for this are defined in `bfdlink.h'.  The functions are in
+`linker.c'.
+
+   You may also derive a hash table from an already derived hash table.
+For example, the a.out linker backend code uses a hash table derived
+from the linker hash table.
+
+* Menu:
+
+* Define the Derived Structures::
+* Write the Derived Creation Routine::
+* Write Other Derived Routines::
+
+\1f
+File: bfd.info,  Node: Define the Derived Structures,  Next: Write the Derived Creation Routine,  Prev: Deriving a New Hash Table Type,  Up: Deriving a New Hash Table Type
+
+2.18.4.1 Define the derived structures
+......................................
+
+You must define a structure for an entry in the hash table, and a
+structure for the hash table itself.
+
+   The first field in the structure for an entry in the hash table must
+be of the type used for an entry in the hash table you are deriving
+from.  If you are deriving from a basic hash table this is `struct
+bfd_hash_entry', which is defined in `bfd.h'.  The first field in the
+structure for the hash table itself must be of the type of the hash
+table you are deriving from itself.  If you are deriving from a basic
+hash table, this is `struct bfd_hash_table'.
+
+   For example, the linker hash table defines `struct
+bfd_link_hash_entry' (in `bfdlink.h').  The first field, `root', is of
+type `struct bfd_hash_entry'.  Similarly, the first field in `struct
+bfd_link_hash_table', `table', is of type `struct bfd_hash_table'.
+
+\1f
+File: bfd.info,  Node: Write the Derived Creation Routine,  Next: Write Other Derived Routines,  Prev: Define the Derived Structures,  Up: Deriving a New Hash Table Type
+
+2.18.4.2 Write the derived creation routine
+...........................................
+
+You must write a routine which will create and initialize an entry in
+the hash table.  This routine is passed as the function argument to
+`bfd_hash_table_init'.
+
+   In order to permit other hash tables to be derived from the hash
+table you are creating, this routine must be written in a standard way.
+
+   The first argument to the creation routine is a pointer to a hash
+table entry.  This may be `NULL', in which case the routine should
+allocate the right amount of space.  Otherwise the space has already
+been allocated by a hash table type derived from this one.
+
+   After allocating space, the creation routine must call the creation
+routine of the hash table type it is derived from, passing in a pointer
+to the space it just allocated.  This will initialize any fields used
+by the base hash table.
+
+   Finally the creation routine must initialize any local fields for
+the new hash table type.
+
+   Here is a boilerplate example of a creation routine.  FUNCTION_NAME
+is the name of the routine.  ENTRY_TYPE is the type of an entry in the
+hash table you are creating.  BASE_NEWFUNC is the name of the creation
+routine of the hash table type your hash table is derived from.
+
+     struct bfd_hash_entry *
+     FUNCTION_NAME (struct bfd_hash_entry *entry,
+                          struct bfd_hash_table *table,
+                          const char *string)
+     {
+       struct ENTRY_TYPE *ret = (ENTRY_TYPE *) entry;
+
+      /* Allocate the structure if it has not already been allocated by a
+         derived class.  */
+       if (ret == NULL)
+         {
+           ret = bfd_hash_allocate (table, sizeof (* ret));
+           if (ret == NULL)
+             return NULL;
+         }
+
+      /* Call the allocation method of the base class.  */
+       ret = ((ENTRY_TYPE *)
+             BASE_NEWFUNC ((struct bfd_hash_entry *) ret, table, string));
+
+      /* Initialize the local fields here.  */
+
+       return (struct bfd_hash_entry *) ret;
+     }
+   *Description*
+The creation routine for the linker hash table, which is in `linker.c',
+looks just like this example.  FUNCTION_NAME is
+`_bfd_link_hash_newfunc'.  ENTRY_TYPE is `struct bfd_link_hash_entry'.
+BASE_NEWFUNC is `bfd_hash_newfunc', the creation routine for a basic
+hash table.
+
+   `_bfd_link_hash_newfunc' also initializes the local fields in a
+linker hash table entry: `type', `written' and `next'.
+
+\1f
+File: bfd.info,  Node: Write Other Derived Routines,  Prev: Write the Derived Creation Routine,  Up: Deriving a New Hash Table Type
+
+2.18.4.3 Write other derived routines
+.....................................
+
+You will want to write other routines for your new hash table, as well.
+
+   You will want an initialization routine which calls the
+initialization routine of the hash table you are deriving from and
+initializes any other local fields.  For the linker hash table, this is
+`_bfd_link_hash_table_init' in `linker.c'.
+
+   You will want a lookup routine which calls the lookup routine of the
+hash table you are deriving from and casts the result.  The linker hash
+table uses `bfd_link_hash_lookup' in `linker.c' (this actually takes an
+additional argument which it uses to decide how to return the looked up
+value).
+
+   You may want a traversal routine.  This should just call the
+traversal routine of the hash table you are deriving from with
+appropriate casts.  The linker hash table uses `bfd_link_hash_traverse'
+in `linker.c'.
+
+   These routines may simply be defined as macros.  For example, the
+a.out backend linker hash table, which is derived from the linker hash
+table, uses macros for the lookup and traversal routines.  These are
+`aout_link_hash_lookup' and `aout_link_hash_traverse' in aoutx.h.
+
+\1f
+File: bfd.info,  Node: BFD back ends,  Next: GNU Free Documentation License,  Prev: BFD front end,  Up: Top
+
+3 BFD back ends
+***************
+
+* Menu:
+
+* What to Put Where::
+* aout ::      a.out backends
+* coff ::      coff backends
+* elf  ::      elf backends
+* mmo  ::      mmo backend
+
+\1f
+File: bfd.info,  Node: What to Put Where,  Next: aout,  Prev: BFD back ends,  Up: BFD back ends
+
+3.1 What to Put Where
+=====================
+
+All of BFD lives in one directory.
+
+\1f
+File: bfd.info,  Node: aout,  Next: coff,  Prev: What to Put Where,  Up: BFD back ends
+
+3.2 a.out backends
+==================
+
+*Description*
+BFD supports a number of different flavours of a.out format, though the
+major differences are only the sizes of the structures on disk, and the
+shape of the relocation information.
+
+   The support is split into a basic support file `aoutx.h' and other
+files which derive functions from the base. One derivation file is
+`aoutf1.h' (for a.out flavour 1), and adds to the basic a.out functions
+support for sun3, sun4, 386 and 29k a.out files, to create a target
+jump vector for a specific target.
+
+   This information is further split out into more specific files for
+each machine, including `sunos.c' for sun3 and sun4, `newsos3.c' for
+the Sony NEWS, and `demo64.c' for a demonstration of a 64 bit a.out
+format.
+
+   The base file `aoutx.h' defines general mechanisms for reading and
+writing records to and from disk and various other methods which BFD
+requires. It is included by `aout32.c' and `aout64.c' to form the names
+`aout_32_swap_exec_header_in', `aout_64_swap_exec_header_in', etc.
+
+   As an example, this is what goes on to make the back end for a sun4,
+from `aout32.c':
+
+            #define ARCH_SIZE 32
+            #include "aoutx.h"
+
+   Which exports names:
+
+            ...
+            aout_32_canonicalize_reloc
+            aout_32_find_nearest_line
+            aout_32_get_lineno
+            aout_32_get_reloc_upper_bound
+            ...
+
+   from `sunos.c':
+
+            #define TARGET_NAME "a.out-sunos-big"
+            #define VECNAME    sunos_big_vec
+            #include "aoutf1.h"
+
+   requires all the names from `aout32.c', and produces the jump vector
+
+            sunos_big_vec
+
+   The file `host-aout.c' is a special case.  It is for a large set of
+hosts that use "more or less standard" a.out files, and for which
+cross-debugging is not interesting.  It uses the standard 32-bit a.out
+support routines, but determines the file offsets and addresses of the
+text, data, and BSS sections, the machine architecture and machine
+type, and the entry point address, in a host-dependent manner.  Once
+these values have been determined, generic code is used to handle the
+object file.
+
+   When porting it to run on a new system, you must supply:
+
+             HOST_PAGE_SIZE
+             HOST_SEGMENT_SIZE
+             HOST_MACHINE_ARCH       (optional)
+             HOST_MACHINE_MACHINE    (optional)
+             HOST_TEXT_START_ADDR
+             HOST_STACK_END_ADDR
+
+   in the file `../include/sys/h-XXX.h' (for your host).  These values,
+plus the structures and macros defined in `a.out.h' on your host
+system, will produce a BFD target that will access ordinary a.out files
+on your host. To configure a new machine to use `host-aout.c', specify:
+
+            TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec
+            TDEPFILES= host-aout.o trad-core.o
+
+   in the `config/XXX.mt' file, and modify `configure.in' to use the
+`XXX.mt' file (by setting "`bfd_target=XXX'") when your configuration
+is selected.
+
+3.2.1 Relocations
+-----------------
+
+*Description*
+The file `aoutx.h' provides for both the _standard_ and _extended_
+forms of a.out relocation records.
+
+   The standard records contain only an address, a symbol index, and a
+type field. The extended records (used on 29ks and sparcs) also have a
+full integer for an addend.
+
+3.2.2 Internal entry points
+---------------------------
+
+*Description*
+`aoutx.h' exports several routines for accessing the contents of an
+a.out file, which are gathered and exported in turn by various format
+specific files (eg sunos.c).
+
+3.2.2.1 `aout_SIZE_swap_exec_header_in'
+.......................................
+
+*Synopsis*
+     void aout_SIZE_swap_exec_header_in,
+        (bfd *abfd,
+         struct external_exec *bytes,
+         struct internal_exec *execp);
+   *Description*
+Swap the information in an executable header RAW_BYTES taken from a raw
+byte stream memory image into the internal exec header structure EXECP.
+
+3.2.2.2 `aout_SIZE_swap_exec_header_out'
+........................................
+
+*Synopsis*
+     void aout_SIZE_swap_exec_header_out
+        (bfd *abfd,
+         struct internal_exec *execp,
+         struct external_exec *raw_bytes);
+   *Description*
+Swap the information in an internal exec header structure EXECP into
+the buffer RAW_BYTES ready for writing to disk.
+
+3.2.2.3 `aout_SIZE_some_aout_object_p'
+......................................
+
+*Synopsis*
+     const bfd_target *aout_SIZE_some_aout_object_p
+        (bfd *abfd,
+         struct internal_exec *execp,
+         const bfd_target *(*callback_to_real_object_p) (bfd *));
+   *Description*
+Some a.out variant thinks that the file open in ABFD checking is an
+a.out file.  Do some more checking, and set up for access if it really
+is.  Call back to the calling environment's "finish up" function just
+before returning, to handle any last-minute setup.
+
+3.2.2.4 `aout_SIZE_mkobject'
+............................
+
+*Synopsis*
+     bfd_boolean aout_SIZE_mkobject, (bfd *abfd);
+   *Description*
+Initialize BFD ABFD for use with a.out files.
+
+3.2.2.5 `aout_SIZE_machine_type'
+................................
+
+*Synopsis*
+     enum machine_type  aout_SIZE_machine_type
+        (enum bfd_architecture arch,
+         unsigned long machine,
+         bfd_boolean *unknown);
+   *Description*
+Keep track of machine architecture and machine type for a.out's. Return
+the `machine_type' for a particular architecture and machine, or
+`M_UNKNOWN' if that exact architecture and machine can't be represented
+in a.out format.
+
+   If the architecture is understood, machine type 0 (default) is
+always understood.
+
+3.2.2.6 `aout_SIZE_set_arch_mach'
+.................................
+
+*Synopsis*
+     bfd_boolean aout_SIZE_set_arch_mach,
+        (bfd *,
+         enum bfd_architecture arch,
+         unsigned long machine);
+   *Description*
+Set the architecture and the machine of the BFD ABFD to the values ARCH
+and MACHINE.  Verify that ABFD's format can support the architecture
+required.
+
+3.2.2.7 `aout_SIZE_new_section_hook'
+....................................
+
+*Synopsis*
+     bfd_boolean aout_SIZE_new_section_hook,
+        (bfd *abfd,
+         asection *newsect);
+   *Description*
+Called by the BFD in response to a `bfd_make_section' request.
+
+\1f
+File: bfd.info,  Node: coff,  Next: elf,  Prev: aout,  Up: BFD back ends
+
+3.3 coff backends
+=================
+
+BFD supports a number of different flavours of coff format.  The major
+differences between formats are the sizes and alignments of fields in
+structures on disk, and the occasional extra field.
+
+   Coff in all its varieties is implemented with a few common files and
+a number of implementation specific files. For example, The 88k bcs
+coff format is implemented in the file `coff-m88k.c'. This file
+`#include's `coff/m88k.h' which defines the external structure of the
+coff format for the 88k, and `coff/internal.h' which defines the
+internal structure. `coff-m88k.c' also defines the relocations used by
+the 88k format *Note Relocations::.
+
+   The Intel i960 processor version of coff is implemented in
+`coff-i960.c'. This file has the same structure as `coff-m88k.c',
+except that it includes `coff/i960.h' rather than `coff-m88k.h'.
+
+3.3.1 Porting to a new version of coff
+--------------------------------------
+
+The recommended method is to select from the existing implementations
+the version of coff which is most like the one you want to use.  For
+example, we'll say that i386 coff is the one you select, and that your
+coff flavour is called foo.  Copy `i386coff.c' to `foocoff.c', copy
+`../include/coff/i386.h' to `../include/coff/foo.h', and add the lines
+to `targets.c' and `Makefile.in' so that your new back end is used.
+Alter the shapes of the structures in `../include/coff/foo.h' so that
+they match what you need. You will probably also have to add `#ifdef's
+to the code in `coff/internal.h' and `coffcode.h' if your version of
+coff is too wild.
+
+   You can verify that your new BFD backend works quite simply by
+building `objdump' from the `binutils' directory, and making sure that
+its version of what's going on and your host system's idea (assuming it
+has the pretty standard coff dump utility, usually called `att-dump' or
+just `dump') are the same.  Then clean up your code, and send what
+you've done to Cygnus. Then your stuff will be in the next release, and
+you won't have to keep integrating it.
+
+3.3.2 How the coff backend works
+--------------------------------
+
+3.3.2.1 File layout
+...................
+
+The Coff backend is split into generic routines that are applicable to
+any Coff target and routines that are specific to a particular target.
+The target-specific routines are further split into ones which are
+basically the same for all Coff targets except that they use the
+external symbol format or use different values for certain constants.
+
+   The generic routines are in `coffgen.c'.  These routines work for
+any Coff target.  They use some hooks into the target specific code;
+the hooks are in a `bfd_coff_backend_data' structure, one of which
+exists for each target.
+
+   The essentially similar target-specific routines are in
+`coffcode.h'.  This header file includes executable C code.  The
+various Coff targets first include the appropriate Coff header file,
+make any special defines that are needed, and then include `coffcode.h'.
+
+   Some of the Coff targets then also have additional routines in the
+target source file itself.
+
+   For example, `coff-i960.c' includes `coff/internal.h' and
+`coff/i960.h'.  It then defines a few constants, such as `I960', and
+includes `coffcode.h'.  Since the i960 has complex relocation types,
+`coff-i960.c' also includes some code to manipulate the i960 relocs.
+This code is not in `coffcode.h' because it would not be used by any
+other target.
+
+3.3.2.2 Bit twiddling
+.....................
+
+Each flavour of coff supported in BFD has its own header file
+describing the external layout of the structures. There is also an
+internal description of the coff layout, in `coff/internal.h'. A major
+function of the coff backend is swapping the bytes and twiddling the
+bits to translate the external form of the structures into the normal
+internal form. This is all performed in the `bfd_swap'_thing_direction
+routines. Some elements are different sizes between different versions
+of coff; it is the duty of the coff version specific include file to
+override the definitions of various packing routines in `coffcode.h'.
+E.g., the size of line number entry in coff is sometimes 16 bits, and
+sometimes 32 bits. `#define'ing `PUT_LNSZ_LNNO' and `GET_LNSZ_LNNO'
+will select the correct one. No doubt, some day someone will find a
+version of coff which has a varying field size not catered to at the
+moment. To port BFD, that person will have to add more `#defines'.
+Three of the bit twiddling routines are exported to `gdb';
+`coff_swap_aux_in', `coff_swap_sym_in' and `coff_swap_lineno_in'. `GDB'
+reads the symbol table on its own, but uses BFD to fix things up.  More
+of the bit twiddlers are exported for `gas'; `coff_swap_aux_out',
+`coff_swap_sym_out', `coff_swap_lineno_out', `coff_swap_reloc_out',
+`coff_swap_filehdr_out', `coff_swap_aouthdr_out',
+`coff_swap_scnhdr_out'. `Gas' currently keeps track of all the symbol
+table and reloc drudgery itself, thereby saving the internal BFD
+overhead, but uses BFD to swap things on the way out, making cross
+ports much safer.  Doing so also allows BFD (and thus the linker) to
+use the same header files as `gas', which makes one avenue to disaster
+disappear.
+
+3.3.2.3 Symbol reading
+......................
+
+The simple canonical form for symbols used by BFD is not rich enough to
+keep all the information available in a coff symbol table. The back end
+gets around this problem by keeping the original symbol table around,
+"behind the scenes".
+
+   When a symbol table is requested (through a call to
+`bfd_canonicalize_symtab'), a request gets through to
+`coff_get_normalized_symtab'. This reads the symbol table from the coff
+file and swaps all the structures inside into the internal form. It
+also fixes up all the pointers in the table (represented in the file by
+offsets from the first symbol in the table) into physical pointers to
+elements in the new internal table. This involves some work since the
+meanings of fields change depending upon context: a field that is a
+pointer to another structure in the symbol table at one moment may be
+the size in bytes of a structure at the next.  Another pass is made
+over the table. All symbols which mark file names (`C_FILE' symbols)
+are modified so that the internal string points to the value in the
+auxent (the real filename) rather than the normal text associated with
+the symbol (`".file"').
+
+   At this time the symbol names are moved around. Coff stores all
+symbols less than nine characters long physically within the symbol
+table; longer strings are kept at the end of the file in the string
+table. This pass moves all strings into memory and replaces them with
+pointers to the strings.
+
+   The symbol table is massaged once again, this time to create the
+canonical table used by the BFD application. Each symbol is inspected
+in turn, and a decision made (using the `sclass' field) about the
+various flags to set in the `asymbol'.  *Note Symbols::. The generated
+canonical table shares strings with the hidden internal symbol table.
+
+   Any linenumbers are read from the coff file too, and attached to the
+symbols which own the functions the linenumbers belong to.
+
+3.3.2.4 Symbol writing
+......................
+
+Writing a symbol to a coff file which didn't come from a coff file will
+lose any debugging information. The `asymbol' structure remembers the
+BFD from which the symbol was taken, and on output the back end makes
+sure that the same destination target as source target is present.
+
+   When the symbols have come from a coff file then all the debugging
+information is preserved.
+
+   Symbol tables are provided for writing to the back end in a vector
+of pointers to pointers. This allows applications like the linker to
+accumulate and output large symbol tables without having to do too much
+byte copying.
+
+   This function runs through the provided symbol table and patches
+each symbol marked as a file place holder (`C_FILE') to point to the
+next file place holder in the list. It also marks each `offset' field
+in the list with the offset from the first symbol of the current symbol.
+
+   Another function of this procedure is to turn the canonical value
+form of BFD into the form used by coff. Internally, BFD expects symbol
+values to be offsets from a section base; so a symbol physically at
+0x120, but in a section starting at 0x100, would have the value 0x20.
+Coff expects symbols to contain their final value, so symbols have
+their values changed at this point to reflect their sum with their
+owning section.  This transformation uses the `output_section' field of
+the `asymbol''s `asection' *Note Sections::.
+
+   * `coff_mangle_symbols'
+   This routine runs though the provided symbol table and uses the
+offsets generated by the previous pass and the pointers generated when
+the symbol table was read in to create the structured hierarchy
+required by coff. It changes each pointer to a symbol into the index
+into the symbol table of the asymbol.
+
+   * `coff_write_symbols'
+   This routine runs through the symbol table and patches up the
+symbols from their internal form into the coff way, calls the bit
+twiddlers, and writes out the table to the file.
+
+3.3.2.5 `coff_symbol_type'
+..........................
+
+*Description*
+The hidden information for an `asymbol' is described in a
+`combined_entry_type':
+
+
+     typedef struct coff_ptr_struct
+     {
+       /* Remembers the offset from the first symbol in the file for
+          this symbol. Generated by coff_renumber_symbols. */
+       unsigned int offset;
+
+       /* Should the value of this symbol be renumbered.  Used for
+          XCOFF C_BSTAT symbols.  Set by coff_slurp_symbol_table.  */
+       unsigned int fix_value : 1;
+
+       /* Should the tag field of this symbol be renumbered.
+          Created by coff_pointerize_aux. */
+       unsigned int fix_tag : 1;
+
+       /* Should the endidx field of this symbol be renumbered.
+          Created by coff_pointerize_aux. */
+       unsigned int fix_end : 1;
+
+       /* Should the x_csect.x_scnlen field be renumbered.
+          Created by coff_pointerize_aux. */
+       unsigned int fix_scnlen : 1;
+
+       /* Fix up an XCOFF C_BINCL/C_EINCL symbol.  The value is the
+          index into the line number entries.  Set by coff_slurp_symbol_table.  */
+       unsigned int fix_line : 1;
+
+       /* The container for the symbol structure as read and translated
+          from the file. */
+       union
+       {
+         union internal_auxent auxent;
+         struct internal_syment syment;
+       } u;
+     } combined_entry_type;
+
+
+     /* Each canonical asymbol really looks like this: */
+
+     typedef struct coff_symbol_struct
+     {
+       /* The actual symbol which the rest of BFD works with */
+       asymbol symbol;
+
+       /* A pointer to the hidden information for this symbol */
+       combined_entry_type *native;
+
+       /* A pointer to the linenumber information for this symbol */
+       struct lineno_cache_entry *lineno;
+
+       /* Have the line numbers been relocated yet ? */
+       bfd_boolean done_lineno;
+     } coff_symbol_type;
+   
+3.3.2.6 `bfd_coff_backend_data'
+...............................
+
+     /* COFF symbol classifications.  */
+
+     enum coff_symbol_classification
+     {
+       /* Global symbol.  */
+       COFF_SYMBOL_GLOBAL,
+       /* Common symbol.  */
+       COFF_SYMBOL_COMMON,
+       /* Undefined symbol.  */
+       COFF_SYMBOL_UNDEFINED,
+       /* Local symbol.  */
+       COFF_SYMBOL_LOCAL,
+       /* PE section symbol.  */
+       COFF_SYMBOL_PE_SECTION
+     };
+Special entry points for gdb to swap in coff symbol table parts:
+     typedef struct
+     {
+       void (*_bfd_coff_swap_aux_in)
+         (bfd *, void *, int, int, int, int, void *);
+
+       void (*_bfd_coff_swap_sym_in)
+         (bfd *, void *, void *);
+
+       void (*_bfd_coff_swap_lineno_in)
+         (bfd *, void *, void *);
+
+       unsigned int (*_bfd_coff_swap_aux_out)
+         (bfd *, void *, int, int, int, int, void *);
+
+       unsigned int (*_bfd_coff_swap_sym_out)
+         (bfd *, void *, void *);
+
+       unsigned int (*_bfd_coff_swap_lineno_out)
+         (bfd *, void *, void *);
+
+       unsigned int (*_bfd_coff_swap_reloc_out)
+         (bfd *, void *, void *);
+
+       unsigned int (*_bfd_coff_swap_filehdr_out)
+         (bfd *, void *, void *);
+
+       unsigned int (*_bfd_coff_swap_aouthdr_out)
+         (bfd *, void *, void *);
+
+       unsigned int (*_bfd_coff_swap_scnhdr_out)
+         (bfd *, void *, void *);
+
+       unsigned int _bfd_filhsz;
+       unsigned int _bfd_aoutsz;
+       unsigned int _bfd_scnhsz;
+       unsigned int _bfd_symesz;
+       unsigned int _bfd_auxesz;
+       unsigned int _bfd_relsz;
+       unsigned int _bfd_linesz;
+       unsigned int _bfd_filnmlen;
+       bfd_boolean _bfd_coff_long_filenames;
+       bfd_boolean _bfd_coff_long_section_names;
+       unsigned int _bfd_coff_default_section_alignment_power;
+       bfd_boolean _bfd_coff_force_symnames_in_strings;
+       unsigned int _bfd_coff_debug_string_prefix_length;
+
+       void (*_bfd_coff_swap_filehdr_in)
+         (bfd *, void *, void *);
+
+       void (*_bfd_coff_swap_aouthdr_in)
+         (bfd *, void *, void *);
+
+       void (*_bfd_coff_swap_scnhdr_in)
+         (bfd *, void *, void *);
+
+       void (*_bfd_coff_swap_reloc_in)
+         (bfd *abfd, void *, void *);
+
+       bfd_boolean (*_bfd_coff_bad_format_hook)
+         (bfd *, void *);
+
+       bfd_boolean (*_bfd_coff_set_arch_mach_hook)
+         (bfd *, void *);
+
+       void * (*_bfd_coff_mkobject_hook)
+         (bfd *, void *, void *);
+
+       bfd_boolean (*_bfd_styp_to_sec_flags_hook)
+         (bfd *, void *, const char *, asection *, flagword *);
+
+       void (*_bfd_set_alignment_hook)
+         (bfd *, asection *, void *);
+
+       bfd_boolean (*_bfd_coff_slurp_symbol_table)
+         (bfd *);
+
+       bfd_boolean (*_bfd_coff_symname_in_debug)
+         (bfd *, struct internal_syment *);
+
+       bfd_boolean (*_bfd_coff_pointerize_aux_hook)
+         (bfd *, combined_entry_type *, combined_entry_type *,
+                 unsigned int, combined_entry_type *);
+
+       bfd_boolean (*_bfd_coff_print_aux)
+         (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
+                 combined_entry_type *, unsigned int);
+
+       void (*_bfd_coff_reloc16_extra_cases)
+         (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
+                bfd_byte *, unsigned int *, unsigned int *);
+
+       int (*_bfd_coff_reloc16_estimate)
+         (bfd *, asection *, arelent *, unsigned int,
+                 struct bfd_link_info *);
+
+       enum coff_symbol_classification (*_bfd_coff_classify_symbol)
+         (bfd *, struct internal_syment *);
+
+       bfd_boolean (*_bfd_coff_compute_section_file_positions)
+         (bfd *);
+
+       bfd_boolean (*_bfd_coff_start_final_link)
+         (bfd *, struct bfd_link_info *);
+
+       bfd_boolean (*_bfd_coff_relocate_section)
+         (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
+                 struct internal_reloc *, struct internal_syment *, asection **);
+
+       reloc_howto_type *(*_bfd_coff_rtype_to_howto)
+         (bfd *, asection *, struct internal_reloc *,
+                 struct coff_link_hash_entry *, struct internal_syment *,
+                 bfd_vma *);
+
+       bfd_boolean (*_bfd_coff_adjust_symndx)
+         (bfd *, struct bfd_link_info *, bfd *, asection *,
+                 struct internal_reloc *, bfd_boolean *);
+
+       bfd_boolean (*_bfd_coff_link_add_one_symbol)
+         (struct bfd_link_info *, bfd *, const char *, flagword,
+                 asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
+                 struct bfd_link_hash_entry **);
+
+       bfd_boolean (*_bfd_coff_link_output_has_begun)
+         (bfd *, struct coff_final_link_info *);
+
+       bfd_boolean (*_bfd_coff_final_link_postscript)
+         (bfd *, struct coff_final_link_info *);
+
+     } bfd_coff_backend_data;
+
+     #define coff_backend_info(abfd) \
+       ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
+
+     #define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
+       ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
+
+     #define bfd_coff_swap_sym_in(a,e,i) \
+       ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
+
+     #define bfd_coff_swap_lineno_in(a,e,i) \
+       ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
+
+     #define bfd_coff_swap_reloc_out(abfd, i, o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
+
+     #define bfd_coff_swap_lineno_out(abfd, i, o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
+
+     #define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
+       ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
+
+     #define bfd_coff_swap_sym_out(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
+
+     #define bfd_coff_swap_scnhdr_out(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
+
+     #define bfd_coff_swap_filehdr_out(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
+
+     #define bfd_coff_swap_aouthdr_out(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
+
+     #define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
+     #define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
+     #define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
+     #define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
+     #define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
+     #define bfd_coff_relsz(abfd)  (coff_backend_info (abfd)->_bfd_relsz)
+     #define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
+     #define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
+     #define bfd_coff_long_filenames(abfd) \
+       (coff_backend_info (abfd)->_bfd_coff_long_filenames)
+     #define bfd_coff_long_section_names(abfd) \
+       (coff_backend_info (abfd)->_bfd_coff_long_section_names)
+     #define bfd_coff_default_section_alignment_power(abfd) \
+       (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
+     #define bfd_coff_swap_filehdr_in(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
+
+     #define bfd_coff_swap_aouthdr_in(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
+
+     #define bfd_coff_swap_scnhdr_in(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
+
+     #define bfd_coff_swap_reloc_in(abfd, i, o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
+
+     #define bfd_coff_bad_format_hook(abfd, filehdr) \
+       ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
+
+     #define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
+       ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
+     #define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
+       ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
+        (abfd, filehdr, aouthdr))
+
+     #define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
+       ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
+        (abfd, scnhdr, name, section, flags_ptr))
+
+     #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
+       ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
+
+     #define bfd_coff_slurp_symbol_table(abfd)\
+       ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
+
+     #define bfd_coff_symname_in_debug(abfd, sym)\
+       ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
+
+     #define bfd_coff_force_symnames_in_strings(abfd)\
+       (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
+
+     #define bfd_coff_debug_string_prefix_length(abfd)\
+       (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
+
+     #define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
+       ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
+        (abfd, file, base, symbol, aux, indaux))
+
+     #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
+                                          reloc, data, src_ptr, dst_ptr)\
+       ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
+        (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
+
+     #define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
+       ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
+        (abfd, section, reloc, shrink, link_info))
+
+     #define bfd_coff_classify_symbol(abfd, sym)\
+       ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
+        (abfd, sym))
+
+     #define bfd_coff_compute_section_file_positions(abfd)\
+       ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
+        (abfd))
+
+     #define bfd_coff_start_final_link(obfd, info)\
+       ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
+        (obfd, info))
+     #define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
+       ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
+        (obfd, info, ibfd, o, con, rel, isyms, secs))
+     #define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
+       ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
+        (abfd, sec, rel, h, sym, addendp))
+     #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
+       ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
+        (obfd, info, ibfd, sec, rel, adjustedp))
+     #define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
+                                          value, string, cp, coll, hashp)\
+       ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
+        (info, abfd, name, flags, section, value, string, cp, coll, hashp))
+
+     #define bfd_coff_link_output_has_begun(a,p) \
+       ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
+     #define bfd_coff_final_link_postscript(a,p) \
+       ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
+
+3.3.2.7 Writing relocations
+...........................
+
+To write relocations, the back end steps though the canonical
+relocation table and create an `internal_reloc'. The symbol index to
+use is removed from the `offset' field in the symbol table supplied.
+The address comes directly from the sum of the section base address and
+the relocation offset; the type is dug directly from the howto field.
+Then the `internal_reloc' is swapped into the shape of an
+`external_reloc' and written out to disk.
+
+3.3.2.8 Reading linenumbers
+...........................
+
+Creating the linenumber table is done by reading in the entire coff
+linenumber table, and creating another table for internal use.
+
+   A coff linenumber table is structured so that each function is
+marked as having a line number of 0. Each line within the function is
+an offset from the first line in the function. The base of the line
+number information for the table is stored in the symbol associated
+with the function.
+
+   Note: The PE format uses line number 0 for a flag indicating a new
+source file.
+
+   The information is copied from the external to the internal table,
+and each symbol which marks a function is marked by pointing its...
+
+   How does this work ?
+
+3.3.2.9 Reading relocations
+...........................
+
+Coff relocations are easily transformed into the internal BFD form
+(`arelent').
+
+   Reading a coff relocation table is done in the following stages:
+
+   * Read the entire coff relocation table into memory.
+
+   * Process each relocation in turn; first swap it from the external
+     to the internal form.
+
+   * Turn the symbol referenced in the relocation's symbol index into a
+     pointer into the canonical symbol table.  This table is the same
+     as the one returned by a call to `bfd_canonicalize_symtab'. The
+     back end will call that routine and save the result if a
+     canonicalization hasn't been done.
+
+   * The reloc index is turned into a pointer to a howto structure, in
+     a back end specific way. For instance, the 386 and 960 use the
+     `r_type' to directly produce an index into a howto table vector;
+     the 88k subtracts a number from the `r_type' field and creates an
+     addend field.
+
+\1f
+File: bfd.info,  Node: elf,  Next: mmo,  Prev: coff,  Up: BFD back ends
+
+3.4 ELF backends
+================
+
+BFD support for ELF formats is being worked on.  Currently, the best
+supported back ends are for sparc and i386 (running svr4 or Solaris 2).
+
+   Documentation of the internals of the support code still needs to be
+written.  The code is changing quickly enough that we haven't bothered
+yet.
+
+3.4.0.1 `bfd_elf_find_section'
+..............................
+
+*Synopsis*
+     struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
+   *Description*
+Helper functions for GDB to locate the string tables.  Since BFD hides
+string tables from callers, GDB needs to use an internal hook to find
+them.  Sun's .stabstr, in particular, isn't even pointed to by the
+.stab section, so ordinary mechanisms wouldn't work to find it, even if
+we had some.
+
+\1f
+File: bfd.info,  Node: mmo,  Prev: elf,  Up: BFD back ends
+
+3.5 mmo backend
+===============
+
+The mmo object format is used exclusively together with Professor
+Donald E. Knuth's educational 64-bit processor MMIX.  The simulator
+`mmix' which is available at
+`http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz'
+understands this format.  That package also includes a combined
+assembler and linker called `mmixal'.  The mmo format has no advantages
+feature-wise compared to e.g. ELF.  It is a simple non-relocatable
+object format with no support for archives or debugging information,
+except for symbol value information and line numbers (which is not yet
+implemented in BFD).  See
+`http://www-cs-faculty.stanford.edu/~knuth/mmix.html' for more
+information about MMIX.  The ELF format is used for intermediate object
+files in the BFD implementation.
+
+* Menu:
+
+* File layout::
+* Symbol-table::
+* mmo section mapping::
+
+\1f
+File: bfd.info,  Node: File layout,  Next: Symbol-table,  Prev: mmo,  Up: mmo
+
+3.5.1 File layout
+-----------------
+
+The mmo file contents is not partitioned into named sections as with
+e.g. ELF.  Memory areas is formed by specifying the location of the
+data that follows.  Only the memory area `0x0000...00' to `0x01ff...ff'
+is executable, so it is used for code (and constants) and the area
+`0x2000...00' to `0x20ff...ff' is used for writable data.  *Note mmo
+section mapping::.
+
+   There is provision for specifying "special data" of 65536 different
+types.  We use type 80 (decimal), arbitrarily chosen the same as the
+ELF `e_machine' number for MMIX, filling it with section information
+normally found in ELF objects. *Note mmo section mapping::.
+
+   Contents is entered as 32-bit words, xor:ed over previous contents,
+always zero-initialized.  A word that starts with the byte `0x98' forms
+a command called a `lopcode', where the next byte distinguished between
+the thirteen lopcodes.  The two remaining bytes, called the `Y' and `Z'
+fields, or the `YZ' field (a 16-bit big-endian number), are used for
+various purposes different for each lopcode.  As documented in
+`http://www-cs-faculty.stanford.edu/~knuth/mmixal-intro.ps.gz', the
+lopcodes are:
+
+`lop_quote'
+     0x98000001.  The next word is contents, regardless of whether it
+     starts with 0x98 or not.
+
+`lop_loc'
+     0x9801YYZZ, where `Z' is 1 or 2.  This is a location directive,
+     setting the location for the next data to the next 32-bit word
+     (for Z = 1) or 64-bit word (for Z = 2), plus Y * 2^56.  Normally
+     `Y' is 0 for the text segment and 2 for the data segment.
+
+`lop_skip'
+     0x9802YYZZ.  Increase the current location by `YZ' bytes.
+
+`lop_fixo'
+     0x9803YYZZ, where `Z' is 1 or 2.  Store the current location as 64
+     bits into the location pointed to by the next 32-bit (Z = 1) or
+     64-bit (Z = 2) word, plus Y * 2^56.
+
+`lop_fixr'
+     0x9804YYZZ.  `YZ' is stored into the current location plus 2 - 4 *
+     YZ.
+
+`lop_fixrx'
+     0x980500ZZ.  `Z' is 16 or 24.  A value `L' derived from the
+     following 32-bit word are used in a manner similar to `YZ' in
+     lop_fixr: it is xor:ed into the current location minus 4 * L.  The
+     first byte of the word is 0 or 1.  If it is 1, then L = (LOWEST 24
+     BITS OF WORD) - 2^Z, if 0, then L = (LOWEST 24 BITS OF WORD).
+
+`lop_file'
+     0x9806YYZZ.  `Y' is the file number, `Z' is count of 32-bit words.
+     Set the file number to `Y' and the line counter to 0.  The next Z
+     * 4 bytes contain the file name, padded with zeros if the count is
+     not a multiple of four.  The same `Y' may occur multiple times,
+     but `Z' must be 0 for all but the first occurrence.
+
+`lop_line'
+     0x9807YYZZ.  `YZ' is the line number.  Together with lop_file, it
+     forms the source location for the next 32-bit word.  Note that for
+     each non-lopcode 32-bit word, line numbers are assumed incremented
+     by one.
+
+`lop_spec'
+     0x9808YYZZ.  `YZ' is the type number.  Data until the next lopcode
+     other than lop_quote forms special data of type `YZ'.  *Note mmo
+     section mapping::.
+
+     Other types than 80, (or type 80 with a content that does not
+     parse) is stored in sections named `.MMIX.spec_data.N' where N is
+     the `YZ'-type.  The flags for such a sections say not to allocate
+     or load the data.  The vma is 0.  Contents of multiple occurrences
+     of special data N is concatenated to the data of the previous
+     lop_spec Ns.  The location in data or code at which the lop_spec
+     occurred is lost.
+
+`lop_pre'
+     0x980901ZZ.  The first lopcode in a file.  The `Z' field forms the
+     length of header information in 32-bit words, where the first word
+     tells the time in seconds since `00:00:00 GMT Jan 1 1970'.
+
+`lop_post'
+     0x980a00ZZ.  Z > 32.  This lopcode follows after all
+     content-generating lopcodes in a program.  The `Z' field denotes
+     the value of `rG' at the beginning of the program.  The following
+     256 - Z big-endian 64-bit words are loaded into global registers
+     `$G' ... `$255'.
+
+`lop_stab'
+     0x980b0000.  The next-to-last lopcode in a program.  Must follow
+     immediately after the lop_post lopcode and its data.  After this
+     lopcode follows all symbols in a compressed format (*note
+     Symbol-table::).
+
+`lop_end'
+     0x980cYYZZ.  The last lopcode in a program.  It must follow the
+     lop_stab lopcode and its data.  The `YZ' field contains the number
+     of 32-bit words of symbol table information after the preceding
+     lop_stab lopcode.
+
+   Note that the lopcode "fixups"; `lop_fixr', `lop_fixrx' and
+`lop_fixo' are not generated by BFD, but are handled.  They are
+generated by `mmixal'.
+
+   This trivial one-label, one-instruction file:
+
+      :Main TRAP 1,2,3
+
+   can be represented this way in mmo:
+
+      0x98090101 - lop_pre, one 32-bit word with timestamp.
+      <timestamp>
+      0x98010002 - lop_loc, text segment, using a 64-bit address.
+                   Note that mmixal does not emit this for the file above.
+      0x00000000 - Address, high 32 bits.
+      0x00000000 - Address, low 32 bits.
+      0x98060002 - lop_file, 2 32-bit words for file-name.
+      0x74657374 - "test"
+      0x2e730000 - ".s\0\0"
+      0x98070001 - lop_line, line 1.
+      0x00010203 - TRAP 1,2,3
+      0x980a00ff - lop_post, setting $255 to 0.
+      0x00000000
+      0x00000000
+      0x980b0000 - lop_stab for ":Main" = 0, serial 1.
+      0x203a4040   *Note Symbol-table::.
+      0x10404020
+      0x4d206120
+      0x69016e00
+      0x81000000
+      0x980c0005 - lop_end; symbol table contained five 32-bit words.
+
+\1f
+File: bfd.info,  Node: Symbol-table,  Next: mmo section mapping,  Prev: File layout,  Up: mmo
+
+3.5.2 Symbol table format
+-------------------------
+
+From mmixal.w (or really, the generated mmixal.tex) in
+`http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz'):
+"Symbols are stored and retrieved by means of a `ternary search trie',
+following ideas of Bentley and Sedgewick. (See ACM-SIAM Symp. on
+Discrete Algorithms `8' (1997), 360-369; R.Sedgewick, `Algorithms in C'
+(Reading, Mass.  Addison-Wesley, 1998), `15.4'.)  Each trie node stores
+a character, and there are branches to subtries for the cases where a
+given character is less than, equal to, or greater than the character
+in the trie.  There also is a pointer to a symbol table entry if a
+symbol ends at the current node."
+
+   So it's a tree encoded as a stream of bytes.  The stream of bytes
+acts on a single virtual global symbol, adding and removing characters
+and signalling complete symbol points.  Here, we read the stream and
+create symbols at the completion points.
+
+   First, there's a control byte `m'.  If any of the listed bits in `m'
+is nonzero, we execute what stands at the right, in the listed order:
+
+      (MMO3_LEFT)
+      0x40 - Traverse left trie.
+             (Read a new command byte and recurse.)
+
+      (MMO3_SYMBITS)
+      0x2f - Read the next byte as a character and store it in the
+             current character position; increment character position.
+             Test the bits of `m':
+
+             (MMO3_WCHAR)
+             0x80 - The character is 16-bit (so read another byte,
+                    merge into current character.
+
+             (MMO3_TYPEBITS)
+             0xf  - We have a complete symbol; parse the type, value
+                    and serial number and do what should be done
+                    with a symbol.  The type and length information
+                    is in j = (m & 0xf).
+
+                    (MMO3_REGQUAL_BITS)
+                    j == 0xf: A register variable.  The following
+                              byte tells which register.
+                    j <= 8:   An absolute symbol.  Read j bytes as the
+                              big-endian number the symbol equals.
+                              A j = 2 with two zero bytes denotes an
+                              unknown symbol.
+                    j > 8:    As with j <= 8, but add (0x20 << 56)
+                              to the value in the following j - 8
+                              bytes.
+
+                    Then comes the serial number, as a variant of
+                    uleb128, but better named ubeb128:
+                    Read bytes and shift the previous value left 7
+                    (multiply by 128).  Add in the new byte, repeat
+                    until a byte has bit 7 set.  The serial number
+                    is the computed value minus 128.
+
+             (MMO3_MIDDLE)
+             0x20 - Traverse middle trie.  (Read a new command byte
+                    and recurse.)  Decrement character position.
+
+      (MMO3_RIGHT)
+      0x10 - Traverse right trie.  (Read a new command byte and
+             recurse.)
+
+   Let's look again at the `lop_stab' for the trivial file (*note File
+layout::).
+
+      0x980b0000 - lop_stab for ":Main" = 0, serial 1.
+      0x203a4040
+      0x10404020
+      0x4d206120
+      0x69016e00
+      0x81000000
+
+   This forms the trivial trie (note that the path between ":" and "M"
+is redundant):
+
+      203a     ":"
+      40       /
+      40      /
+      10      \
+      40      /
+      40     /
+      204d  "M"
+      2061  "a"
+      2069  "i"
+      016e  "n" is the last character in a full symbol, and
+            with a value represented in one byte.
+      00    The value is 0.
+      81    The serial number is 1.
+
+\1f
+File: bfd.info,  Node: mmo section mapping,  Prev: Symbol-table,  Up: mmo
+
+3.5.3 mmo section mapping
+-------------------------
+
+The implementation in BFD uses special data type 80 (decimal) to
+encapsulate and describe named sections, containing e.g. debug
+information.  If needed, any datum in the encapsulation will be quoted
+using lop_quote.  First comes a 32-bit word holding the number of
+32-bit words containing the zero-terminated zero-padded segment name.
+After the name there's a 32-bit word holding flags describing the
+section type.  Then comes a 64-bit big-endian word with the section
+length (in bytes), then another with the section start address.
+Depending on the type of section, the contents might follow,
+zero-padded to 32-bit boundary.  For a loadable section (such as data
+or code), the contents might follow at some later point, not
+necessarily immediately, as a lop_loc with the same start address as in
+the section description, followed by the contents.  This in effect
+forms a descriptor that must be emitted before the actual contents.
+Sections described this way must not overlap.
+
+   For areas that don't have such descriptors, synthetic sections are
+formed by BFD.  Consecutive contents in the two memory areas
+`0x0000...00' to `0x01ff...ff' and `0x2000...00' to `0x20ff...ff' are
+entered in sections named `.text' and `.data' respectively.  If an area
+is not otherwise described, but would together with a neighboring lower
+area be less than `0x40000000' bytes long, it is joined with the lower
+area and the gap is zero-filled.  For other cases, a new section is
+formed, named `.MMIX.sec.N'.  Here, N is a number, a running count
+through the mmo file, starting at 0.
+
+   A loadable section specified as:
+
+      .section secname,"ax"
+      TETRA 1,2,3,4,-1,-2009
+      BYTE 80
+
+   and linked to address `0x4', is represented by the sequence:
+
+      0x98080050 - lop_spec 80
+      0x00000002 - two 32-bit words for the section name
+      0x7365636e - "secn"
+      0x616d6500 - "ame\0"
+      0x00000033 - flags CODE, READONLY, LOAD, ALLOC
+      0x00000000 - high 32 bits of section length
+      0x0000001c - section length is 28 bytes; 6 * 4 + 1 + alignment to 32 bits
+      0x00000000 - high 32 bits of section address
+      0x00000004 - section address is 4
+      0x98010002 - 64 bits with address of following data
+      0x00000000 - high 32 bits of address
+      0x00000004 - low 32 bits: data starts at address 4
+      0x00000001 - 1
+      0x00000002 - 2
+      0x00000003 - 3
+      0x00000004 - 4
+      0xffffffff - -1
+      0xfffff827 - -2009
+      0x50000000 - 80 as a byte, padded with zeros.
+
+   Note that the lop_spec wrapping does not include the section
+contents.  Compare this to a non-loaded section specified as:
+
+      .section thirdsec
+      TETRA 200001,100002
+      BYTE 38,40
+
+   This, when linked to address `0x200000000000001c', is represented by:
+
+      0x98080050 - lop_spec 80
+      0x00000002 - two 32-bit words for the section name
+      0x7365636e - "thir"
+      0x616d6500 - "dsec"
+      0x00000010 - flag READONLY
+      0x00000000 - high 32 bits of section length
+      0x0000000c - section length is 12 bytes; 2 * 4 + 2 + alignment to 32 bits
+      0x20000000 - high 32 bits of address
+      0x0000001c - low 32 bits of address 0x200000000000001c
+      0x00030d41 - 200001
+      0x000186a2 - 100002
+      0x26280000 - 38, 40 as bytes, padded with zeros
+
+   For the latter example, the section contents must not be loaded in
+memory, and is therefore specified as part of the special data.  The
+address is usually unimportant but might provide information for e.g.
+the DWARF 2 debugging format.
+
+\1f
+File: bfd.info,  Node: GNU Free Documentation License,  Next: BFD Index,  Prev: BFD back ends,  Up: Top
+
+Appendix A GNU Free Documentation License
+*****************************************
+
+                        Version 1.1, March 2000
+
+     Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
+  0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     written document "free" in the sense of freedom: to assure everyone
+     the effective freedom to copy and redistribute it, with or without
+     modifying it, either commercially or noncommercially.  Secondarily,
+     this License preserves for the author and publisher a way to get
+     credit for their work, while not being considered responsible for
+     modifications made by others.
+
+     This License is a kind of "copyleft", which means that derivative
+     works of the document must themselves be free in the same sense.
+     It complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for
+     free software, because free software needs free documentation: a
+     free program should come with manuals providing the same freedoms
+     that the software does.  But this License is not limited to
+     software manuals; it can be used for any textual work, regardless
+     of subject matter or whether it is published as a printed book.
+     We recommend this License principally for works whose purpose is
+     instruction or reference.
+
+
+  1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work that contains a
+     notice placed by the copyright holder saying it can be distributed
+     under the terms of this License.  The "Document", below, refers to
+     any such manual or work.  Any member of the public is a licensee,
+     and is addressed as "you."
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter
+     section of the Document that deals exclusively with the
+     relationship of the publishers or authors of the Document to the
+     Document's overall subject (or to related matters) and contains
+     nothing that could fall directly within that overall subject.
+     (For example, if the Document is in part a textbook of
+     mathematics, a Secondary Section may not explain any mathematics.)
+     The relationship could be a matter of historical connection with
+     the subject or with related matters, or of legal, commercial,
+     philosophical, ethical or political position regarding them.
+
+     The "Invariant Sections" are certain Secondary Sections whose
+     titles are designated, as being those of Invariant Sections, in
+     the notice that says that the Document is released under this
+     License.
+
+     The "Cover Texts" are certain short passages of text that are
+     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+     that says that the Document is released under this License.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, whose contents can be viewed and edited directly
+     and straightforwardly with generic text editors or (for images
+     composed of pixels) generic paint programs or (for drawings) some
+     widely available drawing editor, and that is suitable for input to
+     text formatters or for automatic translation to a variety of
+     formats suitable for input to text formatters.  A copy made in an
+     otherwise Transparent file format whose markup has been designed
+     to thwart or discourage subsequent modification by readers is not
+     Transparent.  A copy that is not "Transparent" is called "Opaque."
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format,
+     SGML or XML using a publicly available DTD, and
+     standard-conforming simple HTML designed for human modification.
+     Opaque formats include PostScript, PDF, proprietary formats that
+     can be read and edited only by proprietary word processors, SGML
+     or XML for which the DTD and/or processing tools are not generally
+     available, and the machine-generated HTML produced by some word
+     processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the
+     material this License requires to appear in the title page.  For
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
+
+  2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License
+     applies to the Document are reproduced in all copies, and that you
+     add no other conditions whatsoever to those of this License.  You
+     may not use technical measures to obstruct or control the reading
+     or further copying of the copies you make or distribute.  However,
+     you may accept compensation in exchange for copies.  If you
+     distribute a large enough number of copies you must also follow
+     the conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above,
+     and you may publicly display copies.
+
+  3. COPYING IN QUANTITY
+
+     If you publish printed copies of the Document numbering more than
+     100, and the Document's license notice requires Cover Texts, you
+     must enclose the copies in covers that carry, clearly and legibly,
+     all these Cover Texts: Front-Cover Texts on the front cover, and
+     Back-Cover Texts on the back cover.  Both covers must also clearly
+     and legibly identify you as the publisher of these copies.  The
+     front cover must present the full title with all words of the
+     title equally prominent and visible.  You may add other material
+     on the covers in addition.  Copying with changes limited to the
+     covers, as long as they preserve the title of the Document and
+     satisfy these conditions, can be treated as verbatim copying in
+     other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto
+     adjacent pages.
+
+     If you publish or distribute Opaque copies of the Document
+     numbering more than 100, you must either include a
+     machine-readable Transparent copy along with each Opaque copy, or
+     state in or with each Opaque copy a publicly-accessible
+     computer-network location containing a complete Transparent copy
+     of the Document, free of added material, which the general
+     network-using public has access to download anonymously at no
+     charge using public-standard network protocols.  If you use the
+     latter option, you must take reasonably prudent steps, when you
+     begin distribution of Opaque copies in quantity, to ensure that
+     this Transparent copy will remain thus accessible at the stated
+     location until at least one year after the last time you
+     distribute an Opaque copy (directly or through your agents or
+     retailers) of that edition to the public.
+
+     It is requested, but not required, that you contact the authors of
+     the Document well before redistributing any large number of
+     copies, to give them a chance to provide you with an updated
+     version of the Document.
+
+  4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document
+     under the conditions of sections 2 and 3 above, provided that you
+     release the Modified Version under precisely this License, with
+     the Modified Version filling the role of the Document, thus
+     licensing distribution and modification of the Modified Version to
+     whoever possesses a copy of it.  In addition, you must do these
+     things in the Modified Version:
+
+     A. Use in the Title Page (and on the covers, if any) a title
+     distinct    from that of the Document, and from those of previous
+     versions    (which should, if there were any, be listed in the
+     History section    of the Document).  You may use the same title
+     as a previous version    if the original publisher of that version
+     gives permission.
+     B. List on the Title Page, as authors, one or more persons or
+     entities    responsible for authorship of the modifications in the
+     Modified    Version, together with at least five of the principal
+     authors of the    Document (all of its principal authors, if it
+     has less than five).
+     C. State on the Title page the name of the publisher of the
+     Modified Version, as the publisher.
+     D. Preserve all the copyright notices of the Document.
+     E. Add an appropriate copyright notice for your modifications
+     adjacent to the other copyright notices.
+     F. Include, immediately after the copyright notices, a license
+     notice    giving the public permission to use the Modified Version
+     under the    terms of this License, in the form shown in the
+     Addendum below.
+     G. Preserve in that license notice the full lists of Invariant
+     Sections    and required Cover Texts given in the Document's
+     license notice.
+     H. Include an unaltered copy of this License.
+     I. Preserve the section entitled "History", and its title, and add
+     to    it an item stating at least the title, year, new authors, and
+       publisher of the Modified Version as given on the Title Page.
+     If    there is no section entitled "History" in the Document,
+     create one    stating the title, year, authors, and publisher of
+     the Document as    given on its Title Page, then add an item
+     describing the Modified    Version as stated in the previous
+     sentence.
+     J. Preserve the network location, if any, given in the Document for
+       public access to a Transparent copy of the Document, and
+     likewise    the network locations given in the Document for
+     previous versions    it was based on.  These may be placed in the
+     "History" section.     You may omit a network location for a work
+     that was published at    least four years before the Document
+     itself, or if the original    publisher of the version it refers
+     to gives permission.
+     K. In any section entitled "Acknowledgements" or "Dedications",
+     preserve the section's title, and preserve in the section all the
+      substance and tone of each of the contributor acknowledgements
+     and/or dedications given therein.
+     L. Preserve all the Invariant Sections of the Document,
+     unaltered in their text and in their titles.  Section numbers
+     or the equivalent are not considered part of the section titles.
+     M. Delete any section entitled "Endorsements."  Such a section
+     may not be included in the Modified Version.
+     N. Do not retitle any existing section as "Endorsements"    or to
+     conflict in title with any Invariant Section.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no
+     material copied from the Document, you may at your option
+     designate some or all of these sections as invariant.  To do this,
+     add their titles to the list of Invariant Sections in the Modified
+     Version's license notice.  These titles must be distinct from any
+     other section titles.
+
+     You may add a section entitled "Endorsements", provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties-for example, statements of peer review or that the text has
+     been approved by an organization as the authoritative definition
+     of a standard.
+
+     You may add a passage of up to five words as a Front-Cover Text,
+     and a passage of up to 25 words as a Back-Cover Text, to the end
+     of the list of Cover Texts in the Modified Version.  Only one
+     passage of Front-Cover Text and one of Back-Cover Text may be
+     added by (or through arrangements made by) any one entity.  If the
+     Document already includes a cover text for the same cover,
+     previously added by you or by arrangement made by the same entity
+     you are acting on behalf of, you may not add another; but you may
+     replace the old one, on explicit permission from the previous
+     publisher that added the old one.
+
+     The author(s) and publisher(s) of the Document do not by this
+     License give permission to use their names for publicity for or to
+     assert or imply endorsement of any Modified Version.
+
+  5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under
+     this License, under the terms defined in section 4 above for
+     modified versions, provided that you include in the combination
+     all of the Invariant Sections of all of the original documents,
+     unmodified, and list them all as Invariant Sections of your
+     combined work in its license notice.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name
+     but different contents, make the title of each such section unique
+     by adding at the end of it, in parentheses, the name of the
+     original author or publisher of that section if known, or else a
+     unique number.  Make the same adjustment to the section titles in
+     the list of Invariant Sections in the license notice of the
+     combined work.
+
+     In the combination, you must combine any sections entitled
+     "History" in the various original documents, forming one section
+     entitled "History"; likewise combine any sections entitled
+     "Acknowledgements", and any sections entitled "Dedications."  You
+     must delete all sections entitled "Endorsements."
+
+  6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the
+     rules of this License for verbatim copying of each of the
+     documents in all other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert
+     a copy of this License into the extracted document, and follow
+     this License in all other respects regarding verbatim copying of
+     that document.
+
+  7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other
+     separate and independent documents or works, in or on a volume of
+     a storage or distribution medium, does not as a whole count as a
+     Modified Version of the Document, provided no compilation
+     copyright is claimed for the compilation.  Such a compilation is
+     called an "aggregate", and this License does not apply to the
+     other self-contained works thus compiled with the Document, on
+     account of their being thus compiled, if they are not themselves
+     derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one
+     quarter of the entire aggregate, the Document's Cover Texts may be
+     placed on covers that surround only the Document within the
+     aggregate.  Otherwise they must appear on covers around the whole
+     aggregate.
+
+  8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section
+     4.  Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License provided that you also include the
+     original English version of this License.  In case of a
+     disagreement between the translation and the original English
+     version of this License, the original English version will prevail.
+
+  9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided for under this License.  Any other
+     attempt to copy, modify, sublicense or distribute the Document is
+     void, and will automatically terminate your rights under this
+     License.  However, parties who have received copies, or rights,
+     from you under this License will not have their licenses
+     terminated so long as such parties remain in full compliance.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of
+     the GNU Free Documentation License from time to time.  Such new
+     versions will be similar in spirit to the present version, but may
+     differ in detail to address new problems or concerns.  See
+     http://www.gnu.org/copyleft/.
+
+     Each version of the License is given a distinguishing version
+     number.  If the Document specifies that a particular numbered
+     version of this License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that specified version or of any later version that has been
+     published (not as a draft) by the Free Software Foundation.  If
+     the Document does not specify a version number of this License,
+     you may choose any version ever published (not as a draft) by the
+     Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+     Copyright (C)  YEAR  YOUR NAME.
+     Permission is granted to copy, distribute and/or modify this document
+     under the terms of the GNU Free Documentation License, Version 1.1
+     or any later version published by the Free Software Foundation;
+     with the Invariant Sections being LIST THEIR TITLES, with the
+     Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+     A copy of the license is included in the section entitled "GNU
+     Free Documentation License."
+
+   If you have no Invariant Sections, write "with no Invariant Sections"
+instead of saying which ones are invariant.  If you have no Front-Cover
+Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
+LIST"; likewise for Back-Cover Texts.
+
+   If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+\1f
+File: bfd.info,  Node: BFD Index,  Prev: GNU Free Documentation License,  Up: Top
+
+BFD Index
+*********
+
+\0\b[index\0\b]
+* Menu:
+
+* _bfd_final_link_relocate:              Relocating the section contents.
+                                                             (line   22)
+* _bfd_generic_link_add_archive_symbols: Adding symbols from an archive.
+                                                             (line   12)
+* _bfd_generic_link_add_one_symbol:      Adding symbols from an object file.
+                                                             (line   19)
+* _bfd_generic_make_empty_symbol:        symbol handling functions.
+                                                             (line   92)
+* _bfd_link_add_symbols in target vector: Adding Symbols to the Hash Table.
+                                                             (line    6)
+* _bfd_link_final_link in target vector: Performing the Final Link.
+                                                             (line    6)
+* _bfd_link_hash_table_create in target vector: Creating a Linker Hash Table.
+                                                             (line    6)
+* _bfd_relocate_contents:                Relocating the section contents.
+                                                             (line   22)
+* aout_SIZE_machine_type:                aout.               (line  147)
+* aout_SIZE_mkobject:                    aout.               (line  139)
+* aout_SIZE_new_section_hook:            aout.               (line  177)
+* aout_SIZE_set_arch_mach:               aout.               (line  164)
+* aout_SIZE_some_aout_object_p:          aout.               (line  125)
+* aout_SIZE_swap_exec_header_in:         aout.               (line  101)
+* aout_SIZE_swap_exec_header_out:        aout.               (line  113)
+* arelent_chain:                         typedef arelent.    (line  339)
+* BFD:                                   Overview.           (line    6)
+* BFD canonical format:                  Canonical format.   (line   11)
+* bfd_alloc:                             Opening and Closing.
+                                                             (line  203)
+* bfd_alloc2:                            Opening and Closing.
+                                                             (line  212)
+* bfd_alt_mach_code:                     BFD front end.      (line  602)
+* bfd_arch_bits_per_address:             Architectures.      (line  481)
+* bfd_arch_bits_per_byte:                Architectures.      (line  473)
+* bfd_arch_get_compatible:               Architectures.      (line  416)
+* bfd_arch_list:                         Architectures.      (line  407)
+* bfd_arch_mach_octets_per_byte:         Architectures.      (line  550)
+* BFD_ARELOC_BFIN_ADD:                   howto manager.      (line  942)
+* BFD_ARELOC_BFIN_ADDR:                  howto manager.      (line  993)
+* BFD_ARELOC_BFIN_AND:                   howto manager.      (line  963)
+* BFD_ARELOC_BFIN_COMP:                  howto manager.      (line  984)
+* BFD_ARELOC_BFIN_CONST:                 howto manager.      (line  939)
+* BFD_ARELOC_BFIN_DIV:                   howto manager.      (line  951)
+* BFD_ARELOC_BFIN_HWPAGE:                howto manager.      (line  990)
+* BFD_ARELOC_BFIN_LAND:                  howto manager.      (line  972)
+* BFD_ARELOC_BFIN_LEN:                   howto manager.      (line  978)
+* BFD_ARELOC_BFIN_LOR:                   howto manager.      (line  975)
+* BFD_ARELOC_BFIN_LSHIFT:                howto manager.      (line  957)
+* BFD_ARELOC_BFIN_MOD:                   howto manager.      (line  954)
+* BFD_ARELOC_BFIN_MULT:                  howto manager.      (line  948)
+* BFD_ARELOC_BFIN_NEG:                   howto manager.      (line  981)
+* BFD_ARELOC_BFIN_OR:                    howto manager.      (line  966)
+* BFD_ARELOC_BFIN_PAGE:                  howto manager.      (line  987)
+* BFD_ARELOC_BFIN_PUSH:                  howto manager.      (line  936)
+* BFD_ARELOC_BFIN_RSHIFT:                howto manager.      (line  960)
+* BFD_ARELOC_BFIN_SUB:                   howto manager.      (line  945)
+* BFD_ARELOC_BFIN_XOR:                   howto manager.      (line  969)
+* bfd_cache_close:                       File Caching.       (line   26)
+* bfd_cache_close_all:                   File Caching.       (line   39)
+* bfd_cache_init:                        File Caching.       (line   18)
+* bfd_calc_gnu_debuglink_crc32:          Opening and Closing.
+                                                             (line  239)
+* bfd_canonicalize_reloc:                BFD front end.      (line  321)
+* bfd_canonicalize_symtab:               symbol handling functions.
+                                                             (line   50)
+* bfd_check_format:                      Formats.            (line   21)
+* bfd_check_format_matches:              Formats.            (line   52)
+* bfd_check_overflow:                    typedef arelent.    (line  351)
+* bfd_close:                             Opening and Closing.
+                                                             (line  128)
+* bfd_close_all_done:                    Opening and Closing.
+                                                             (line  146)
+* bfd_coff_backend_data:                 coff.               (line  246)
+* bfd_copy_private_bfd_data:             BFD front end.      (line  460)
+* bfd_copy_private_header_data:          BFD front end.      (line  442)
+* bfd_copy_private_section_data:         section prototypes. (line  255)
+* bfd_copy_private_symbol_data:          symbol handling functions.
+                                                             (line  140)
+* bfd_core_file_failing_command:         Core Files.         (line   12)
+* bfd_core_file_failing_signal:          Core Files.         (line   21)
+* bfd_create:                            Opening and Closing.
+                                                             (line  165)
+* bfd_create_gnu_debuglink_section:      Opening and Closing.
+                                                             (line  305)
+* bfd_decode_symclass:                   symbol handling functions.
+                                                             (line  111)
+* bfd_default_arch_struct:               Architectures.      (line  428)
+* bfd_default_compatible:                Architectures.      (line  490)
+* bfd_default_reloc_type_lookup:         howto manager.      (line 2023)
+* bfd_default_scan:                      Architectures.      (line  499)
+* bfd_default_set_arch_mach:             Architectures.      (line  446)
+* bfd_elf_find_section:                  elf.                (line   13)
+* bfd_emul_get_commonpagesize:           BFD front end.      (line  680)
+* bfd_emul_get_maxpagesize:              BFD front end.      (line  660)
+* bfd_emul_set_commonpagesize:           BFD front end.      (line  691)
+* bfd_emul_set_maxpagesize:              BFD front end.      (line  671)
+* bfd_errmsg:                            BFD front end.      (line  246)
+* bfd_fdopenr:                           Opening and Closing.
+                                                             (line   46)
+* bfd_fill_in_gnu_debuglink_section:     Opening and Closing.
+                                                             (line  319)
+* bfd_find_target:                       bfd_target.         (line  435)
+* bfd_follow_gnu_debuglink:              Opening and Closing.
+                                                             (line  284)
+* bfd_fopen:                             Opening and Closing.
+                                                             (line    9)
+* bfd_format_string:                     Formats.            (line   79)
+* bfd_generic_discard_group:             section prototypes. (line  281)
+* bfd_generic_gc_sections:               howto manager.      (line 2054)
+* bfd_generic_get_relocated_section_contents: howto manager. (line 2074)
+* bfd_generic_is_group_section:          section prototypes. (line  273)
+* bfd_generic_merge_sections:            howto manager.      (line 2064)
+* bfd_generic_relax_section:             howto manager.      (line 2041)
+* bfd_get_arch:                          Architectures.      (line  457)
+* bfd_get_arch_info:                     Architectures.      (line  509)
+* bfd_get_arch_size:                     BFD front end.      (line  365)
+* bfd_get_error:                         BFD front end.      (line  227)
+* bfd_get_error_handler:                 BFD front end.      (line  297)
+* bfd_get_gp_size:                       BFD front end.      (line  406)
+* bfd_get_mach:                          Architectures.      (line  465)
+* bfd_get_mtime:                         BFD front end.      (line  730)
+* bfd_get_next_mapent:                   Archives.           (line   52)
+* bfd_get_reloc_code_name:               howto manager.      (line 2032)
+* bfd_get_reloc_size:                    typedef arelent.    (line  330)
+* bfd_get_reloc_upper_bound:             BFD front end.      (line  311)
+* bfd_get_section_by_name:               section prototypes. (line   17)
+* bfd_get_section_by_name_if:            section prototypes. (line   31)
+* bfd_get_section_contents:              section prototypes. (line  228)
+* bfd_get_sign_extend_vma:               BFD front end.      (line  378)
+* bfd_get_size <1>:                      BFD front end.      (line  739)
+* bfd_get_size:                          Internal.           (line   25)
+* bfd_get_symtab_upper_bound:            symbol handling functions.
+                                                             (line    6)
+* bfd_get_unique_section_name:           section prototypes. (line   50)
+* bfd_h_put_size:                        Internal.           (line   97)
+* bfd_hash_allocate:                     Creating and Freeing a Hash Table.
+                                                             (line   17)
+* bfd_hash_lookup:                       Looking Up or Entering a String.
+                                                             (line    6)
+* bfd_hash_newfunc:                      Creating and Freeing a Hash Table.
+                                                             (line   12)
+* bfd_hash_set_default_size:             Creating and Freeing a Hash Table.
+                                                             (line   25)
+* bfd_hash_table_free:                   Creating and Freeing a Hash Table.
+                                                             (line   21)
+* bfd_hash_table_init:                   Creating and Freeing a Hash Table.
+                                                             (line    6)
+* bfd_hash_table_init_n:                 Creating and Freeing a Hash Table.
+                                                             (line    6)
+* bfd_hash_traverse:                     Traversing a Hash Table.
+                                                             (line    6)
+* bfd_init:                              Initialization.     (line   11)
+* bfd_install_relocation:                typedef arelent.    (line  392)
+* bfd_is_local_label:                    symbol handling functions.
+                                                             (line   17)
+* bfd_is_local_label_name:               symbol handling functions.
+                                                             (line   26)
+* bfd_is_target_special_symbol:          symbol handling functions.
+                                                             (line   38)
+* bfd_is_undefined_symclass:             symbol handling functions.
+                                                             (line  120)
+* bfd_link_split_section:                Writing the symbol table.
+                                                             (line   44)
+* bfd_log2:                              Internal.           (line  164)
+* bfd_lookup_arch:                       Architectures.      (line  517)
+* bfd_make_debug_symbol:                 symbol handling functions.
+                                                             (line  102)
+* bfd_make_empty_symbol:                 symbol handling functions.
+                                                             (line   78)
+* bfd_make_readable:                     Opening and Closing.
+                                                             (line  189)
+* bfd_make_section:                      section prototypes. (line  129)
+* bfd_make_section_anyway:               section prototypes. (line  100)
+* bfd_make_section_anyway_with_flags:    section prototypes. (line   82)
+* bfd_make_section_old_way:              section prototypes. (line   62)
+* bfd_make_section_with_flags:           section prototypes. (line  116)
+* bfd_make_writable:                     Opening and Closing.
+                                                             (line  175)
+* bfd_malloc_and_get_section:            section prototypes. (line  245)
+* bfd_map_over_sections:                 section prototypes. (line  155)
+* bfd_merge_private_bfd_data:            BFD front end.      (line  476)
+* bfd_octets_per_byte:                   Architectures.      (line  540)
+* bfd_open_file:                         File Caching.       (line   52)
+* bfd_openr:                             Opening and Closing.
+                                                             (line   30)
+* bfd_openr_iovec:                       Opening and Closing.
+                                                             (line   76)
+* bfd_openr_next_archived_file:          Archives.           (line   78)
+* bfd_openstreamr:                       Opening and Closing.
+                                                             (line   67)
+* bfd_openw:                             Opening and Closing.
+                                                             (line  116)
+* bfd_perform_relocation:                typedef arelent.    (line  367)
+* bfd_perror:                            BFD front end.      (line  255)
+* bfd_preserve_finish:                   BFD front end.      (line  650)
+* bfd_preserve_restore:                  BFD front end.      (line  640)
+* bfd_preserve_save:                     BFD front end.      (line  624)
+* bfd_print_symbol_vandf:                symbol handling functions.
+                                                             (line   70)
+* bfd_printable_arch_mach:               Architectures.      (line  528)
+* bfd_printable_name:                    Architectures.      (line  388)
+* bfd_put_size:                          Internal.           (line   22)
+* BFD_RELOC_12_PCREL:                    howto manager.      (line   39)
+* BFD_RELOC_14:                          howto manager.      (line   31)
+* BFD_RELOC_16:                          howto manager.      (line   30)
+* BFD_RELOC_16_BASEREL:                  howto manager.      (line   80)
+* BFD_RELOC_16_GOT_PCREL:                howto manager.      (line   52)
+* BFD_RELOC_16_GOTOFF:                   howto manager.      (line   55)
+* BFD_RELOC_16_PCREL:                    howto manager.      (line   38)
+* BFD_RELOC_16_PCREL_S2:                 howto manager.      (line   92)
+* BFD_RELOC_16_PLT_PCREL:                howto manager.      (line   63)
+* BFD_RELOC_16_PLTOFF:                   howto manager.      (line   67)
+* BFD_RELOC_16C_ABS20:                   howto manager.      (line 1747)
+* BFD_RELOC_16C_ABS20_C:                 howto manager.      (line 1748)
+* BFD_RELOC_16C_ABS24:                   howto manager.      (line 1749)
+* BFD_RELOC_16C_ABS24_C:                 howto manager.      (line 1750)
+* BFD_RELOC_16C_DISP04:                  howto manager.      (line 1727)
+* BFD_RELOC_16C_DISP04_C:                howto manager.      (line 1728)
+* BFD_RELOC_16C_DISP08:                  howto manager.      (line 1729)
+* BFD_RELOC_16C_DISP08_C:                howto manager.      (line 1730)
+* BFD_RELOC_16C_DISP16:                  howto manager.      (line 1731)
+* BFD_RELOC_16C_DISP16_C:                howto manager.      (line 1732)
+* BFD_RELOC_16C_DISP24:                  howto manager.      (line 1733)
+* BFD_RELOC_16C_DISP24_C:                howto manager.      (line 1734)
+* BFD_RELOC_16C_DISP24a:                 howto manager.      (line 1735)
+* BFD_RELOC_16C_DISP24a_C:               howto manager.      (line 1736)
+* BFD_RELOC_16C_IMM04:                   howto manager.      (line 1751)
+* BFD_RELOC_16C_IMM04_C:                 howto manager.      (line 1752)
+* BFD_RELOC_16C_IMM16:                   howto manager.      (line 1753)
+* BFD_RELOC_16C_IMM16_C:                 howto manager.      (line 1754)
+* BFD_RELOC_16C_IMM20:                   howto manager.      (line 1755)
+* BFD_RELOC_16C_IMM20_C:                 howto manager.      (line 1756)
+* BFD_RELOC_16C_IMM24:                   howto manager.      (line 1757)
+* BFD_RELOC_16C_IMM24_C:                 howto manager.      (line 1758)
+* BFD_RELOC_16C_IMM32:                   howto manager.      (line 1759)
+* BFD_RELOC_16C_IMM32_C:                 howto manager.      (line 1760)
+* BFD_RELOC_16C_NUM08:                   howto manager.      (line 1721)
+* BFD_RELOC_16C_NUM08_C:                 howto manager.      (line 1722)
+* BFD_RELOC_16C_NUM16:                   howto manager.      (line 1723)
+* BFD_RELOC_16C_NUM16_C:                 howto manager.      (line 1724)
+* BFD_RELOC_16C_NUM32:                   howto manager.      (line 1725)
+* BFD_RELOC_16C_NUM32_C:                 howto manager.      (line 1726)
+* BFD_RELOC_16C_REG04:                   howto manager.      (line 1737)
+* BFD_RELOC_16C_REG04_C:                 howto manager.      (line 1738)
+* BFD_RELOC_16C_REG04a:                  howto manager.      (line 1739)
+* BFD_RELOC_16C_REG04a_C:                howto manager.      (line 1740)
+* BFD_RELOC_16C_REG14:                   howto manager.      (line 1741)
+* BFD_RELOC_16C_REG14_C:                 howto manager.      (line 1742)
+* BFD_RELOC_16C_REG16:                   howto manager.      (line 1743)
+* BFD_RELOC_16C_REG16_C:                 howto manager.      (line 1744)
+* BFD_RELOC_16C_REG20:                   howto manager.      (line 1745)
+* BFD_RELOC_16C_REG20_C:                 howto manager.      (line 1746)
+* BFD_RELOC_23_PCREL_S2:                 howto manager.      (line   93)
+* BFD_RELOC_24:                          howto manager.      (line   29)
+* BFD_RELOC_24_PCREL:                    howto manager.      (line   37)
+* BFD_RELOC_24_PLT_PCREL:                howto manager.      (line   62)
+* BFD_RELOC_26:                          howto manager.      (line   28)
+* BFD_RELOC_32:                          howto manager.      (line   27)
+* BFD_RELOC_32_BASEREL:                  howto manager.      (line   79)
+* BFD_RELOC_32_GOT_PCREL:                howto manager.      (line   51)
+* BFD_RELOC_32_GOTOFF:                   howto manager.      (line   54)
+* BFD_RELOC_32_PCREL:                    howto manager.      (line   36)
+* BFD_RELOC_32_PCREL_S2:                 howto manager.      (line   91)
+* BFD_RELOC_32_PLT_PCREL:                howto manager.      (line   61)
+* BFD_RELOC_32_PLTOFF:                   howto manager.      (line   66)
+* BFD_RELOC_32_SECREL:                   howto manager.      (line   48)
+* BFD_RELOC_386_COPY:                    howto manager.      (line  449)
+* BFD_RELOC_386_GLOB_DAT:                howto manager.      (line  450)
+* BFD_RELOC_386_GOT32:                   howto manager.      (line  447)
+* BFD_RELOC_386_GOTOFF:                  howto manager.      (line  453)
+* BFD_RELOC_386_GOTPC:                   howto manager.      (line  454)
+* BFD_RELOC_386_JUMP_SLOT:               howto manager.      (line  451)
+* BFD_RELOC_386_PLT32:                   howto manager.      (line  448)
+* BFD_RELOC_386_RELATIVE:                howto manager.      (line  452)
+* BFD_RELOC_386_TLS_DESC:                howto manager.      (line  469)
+* BFD_RELOC_386_TLS_DESC_CALL:           howto manager.      (line  468)
+* BFD_RELOC_386_TLS_DTPMOD32:            howto manager.      (line  464)
+* BFD_RELOC_386_TLS_DTPOFF32:            howto manager.      (line  465)
+* BFD_RELOC_386_TLS_GD:                  howto manager.      (line  459)
+* BFD_RELOC_386_TLS_GOTDESC:             howto manager.      (line  467)
+* BFD_RELOC_386_TLS_GOTIE:               howto manager.      (line  457)
+* BFD_RELOC_386_TLS_IE:                  howto manager.      (line  456)
+* BFD_RELOC_386_TLS_IE_32:               howto manager.      (line  462)
+* BFD_RELOC_386_TLS_LDM:                 howto manager.      (line  460)
+* BFD_RELOC_386_TLS_LDO_32:              howto manager.      (line  461)
+* BFD_RELOC_386_TLS_LE:                  howto manager.      (line  458)
+* BFD_RELOC_386_TLS_LE_32:               howto manager.      (line  463)
+* BFD_RELOC_386_TLS_TPOFF:               howto manager.      (line  455)
+* BFD_RELOC_386_TLS_TPOFF32:             howto manager.      (line  466)
+* BFD_RELOC_390_12:                      howto manager.      (line 1413)
+* BFD_RELOC_390_20:                      howto manager.      (line 1513)
+* BFD_RELOC_390_COPY:                    howto manager.      (line 1422)
+* BFD_RELOC_390_GLOB_DAT:                howto manager.      (line 1425)
+* BFD_RELOC_390_GOT12:                   howto manager.      (line 1416)
+* BFD_RELOC_390_GOT16:                   howto manager.      (line 1437)
+* BFD_RELOC_390_GOT20:                   howto manager.      (line 1514)
+* BFD_RELOC_390_GOT64:                   howto manager.      (line 1455)
+* BFD_RELOC_390_GOTENT:                  howto manager.      (line 1461)
+* BFD_RELOC_390_GOTOFF64:                howto manager.      (line 1464)
+* BFD_RELOC_390_GOTPC:                   howto manager.      (line 1434)
+* BFD_RELOC_390_GOTPCDBL:                howto manager.      (line 1452)
+* BFD_RELOC_390_GOTPLT12:                howto manager.      (line 1467)
+* BFD_RELOC_390_GOTPLT16:                howto manager.      (line 1470)
+* BFD_RELOC_390_GOTPLT20:                howto manager.      (line 1515)
+* BFD_RELOC_390_GOTPLT32:                howto manager.      (line 1473)
+* BFD_RELOC_390_GOTPLT64:                howto manager.      (line 1476)
+* BFD_RELOC_390_GOTPLTENT:               howto manager.      (line 1479)
+* BFD_RELOC_390_JMP_SLOT:                howto manager.      (line 1428)
+* BFD_RELOC_390_PC16DBL:                 howto manager.      (line 1440)
+* BFD_RELOC_390_PC32DBL:                 howto manager.      (line 1446)
+* BFD_RELOC_390_PLT16DBL:                howto manager.      (line 1443)
+* BFD_RELOC_390_PLT32:                   howto manager.      (line 1419)
+* BFD_RELOC_390_PLT32DBL:                howto manager.      (line 1449)
+* BFD_RELOC_390_PLT64:                   howto manager.      (line 1458)
+* BFD_RELOC_390_PLTOFF16:                howto manager.      (line 1482)
+* BFD_RELOC_390_PLTOFF32:                howto manager.      (line 1485)
+* BFD_RELOC_390_PLTOFF64:                howto manager.      (line 1488)
+* BFD_RELOC_390_RELATIVE:                howto manager.      (line 1431)
+* BFD_RELOC_390_TLS_DTPMOD:              howto manager.      (line 1508)
+* BFD_RELOC_390_TLS_DTPOFF:              howto manager.      (line 1509)
+* BFD_RELOC_390_TLS_GD32:                howto manager.      (line 1494)
+* BFD_RELOC_390_TLS_GD64:                howto manager.      (line 1495)
+* BFD_RELOC_390_TLS_GDCALL:              howto manager.      (line 1492)
+* BFD_RELOC_390_TLS_GOTIE12:             howto manager.      (line 1496)
+* BFD_RELOC_390_TLS_GOTIE20:             howto manager.      (line 1516)
+* BFD_RELOC_390_TLS_GOTIE32:             howto manager.      (line 1497)
+* BFD_RELOC_390_TLS_GOTIE64:             howto manager.      (line 1498)
+* BFD_RELOC_390_TLS_IE32:                howto manager.      (line 1501)
+* BFD_RELOC_390_TLS_IE64:                howto manager.      (line 1502)
+* BFD_RELOC_390_TLS_IEENT:               howto manager.      (line 1503)
+* BFD_RELOC_390_TLS_LDCALL:              howto manager.      (line 1493)
+* BFD_RELOC_390_TLS_LDM32:               howto manager.      (line 1499)
+* BFD_RELOC_390_TLS_LDM64:               howto manager.      (line 1500)
+* BFD_RELOC_390_TLS_LDO32:               howto manager.      (line 1506)
+* BFD_RELOC_390_TLS_LDO64:               howto manager.      (line 1507)
+* BFD_RELOC_390_TLS_LE32:                howto manager.      (line 1504)
+* BFD_RELOC_390_TLS_LE64:                howto manager.      (line 1505)
+* BFD_RELOC_390_TLS_LOAD:                howto manager.      (line 1491)
+* BFD_RELOC_390_TLS_TPOFF:               howto manager.      (line 1510)
+* BFD_RELOC_64:                          howto manager.      (line   26)
+* BFD_RELOC_64_PCREL:                    howto manager.      (line   35)
+* BFD_RELOC_64_PLT_PCREL:                howto manager.      (line   60)
+* BFD_RELOC_64_PLTOFF:                   howto manager.      (line   65)
+* BFD_RELOC_68K_GLOB_DAT:                howto manager.      (line   74)
+* BFD_RELOC_68K_JMP_SLOT:                howto manager.      (line   75)
+* BFD_RELOC_68K_RELATIVE:                howto manager.      (line   76)
+* BFD_RELOC_8:                           howto manager.      (line   32)
+* BFD_RELOC_860_COPY:                    howto manager.      (line 1826)
+* BFD_RELOC_860_GLOB_DAT:                howto manager.      (line 1827)
+* BFD_RELOC_860_HAGOT:                   howto manager.      (line 1852)
+* BFD_RELOC_860_HAGOTOFF:                howto manager.      (line 1853)
+* BFD_RELOC_860_HAPC:                    howto manager.      (line 1854)
+* BFD_RELOC_860_HIGH:                    howto manager.      (line 1855)
+* BFD_RELOC_860_HIGHADJ:                 howto manager.      (line 1851)
+* BFD_RELOC_860_HIGOT:                   howto manager.      (line 1856)
+* BFD_RELOC_860_HIGOTOFF:                howto manager.      (line 1857)
+* BFD_RELOC_860_JUMP_SLOT:               howto manager.      (line 1828)
+* BFD_RELOC_860_LOGOT0:                  howto manager.      (line 1840)
+* BFD_RELOC_860_LOGOT1:                  howto manager.      (line 1842)
+* BFD_RELOC_860_LOGOTOFF0:               howto manager.      (line 1844)
+* BFD_RELOC_860_LOGOTOFF1:               howto manager.      (line 1846)
+* BFD_RELOC_860_LOGOTOFF2:               howto manager.      (line 1848)
+* BFD_RELOC_860_LOGOTOFF3:               howto manager.      (line 1849)
+* BFD_RELOC_860_LOPC:                    howto manager.      (line 1850)
+* BFD_RELOC_860_LOW0:                    howto manager.      (line 1833)
+* BFD_RELOC_860_LOW1:                    howto manager.      (line 1835)
+* BFD_RELOC_860_LOW2:                    howto manager.      (line 1837)
+* BFD_RELOC_860_LOW3:                    howto manager.      (line 1839)
+* BFD_RELOC_860_PC16:                    howto manager.      (line 1832)
+* BFD_RELOC_860_PC26:                    howto manager.      (line 1830)
+* BFD_RELOC_860_PLT26:                   howto manager.      (line 1831)
+* BFD_RELOC_860_RELATIVE:                howto manager.      (line 1829)
+* BFD_RELOC_860_SPGOT0:                  howto manager.      (line 1841)
+* BFD_RELOC_860_SPGOT1:                  howto manager.      (line 1843)
+* BFD_RELOC_860_SPGOTOFF0:               howto manager.      (line 1845)
+* BFD_RELOC_860_SPGOTOFF1:               howto manager.      (line 1847)
+* BFD_RELOC_860_SPLIT0:                  howto manager.      (line 1834)
+* BFD_RELOC_860_SPLIT1:                  howto manager.      (line 1836)
+* BFD_RELOC_860_SPLIT2:                  howto manager.      (line 1838)
+* BFD_RELOC_8_BASEREL:                   howto manager.      (line   84)
+* BFD_RELOC_8_FFnn:                      howto manager.      (line   88)
+* BFD_RELOC_8_GOT_PCREL:                 howto manager.      (line   53)
+* BFD_RELOC_8_GOTOFF:                    howto manager.      (line   59)
+* BFD_RELOC_8_PCREL:                     howto manager.      (line   40)
+* BFD_RELOC_8_PLT_PCREL:                 howto manager.      (line   64)
+* BFD_RELOC_8_PLTOFF:                    howto manager.      (line   71)
+* BFD_RELOC_ALPHA_BRSGP:                 howto manager.      (line  273)
+* BFD_RELOC_ALPHA_CODEADDR:              howto manager.      (line  264)
+* BFD_RELOC_ALPHA_DTPMOD64:              howto manager.      (line  280)
+* BFD_RELOC_ALPHA_DTPREL16:              howto manager.      (line  285)
+* BFD_RELOC_ALPHA_DTPREL64:              howto manager.      (line  282)
+* BFD_RELOC_ALPHA_DTPREL_HI16:           howto manager.      (line  283)
+* BFD_RELOC_ALPHA_DTPREL_LO16:           howto manager.      (line  284)
+* BFD_RELOC_ALPHA_ELF_LITERAL:           howto manager.      (line  229)
+* BFD_RELOC_ALPHA_GOTDTPREL16:           howto manager.      (line  281)
+* BFD_RELOC_ALPHA_GOTTPREL16:            howto manager.      (line  286)
+* BFD_RELOC_ALPHA_GPDISP:                howto manager.      (line  223)
+* BFD_RELOC_ALPHA_GPDISP_HI16:           howto manager.      (line  209)
+* BFD_RELOC_ALPHA_GPDISP_LO16:           howto manager.      (line  217)
+* BFD_RELOC_ALPHA_GPREL_HI16:            howto manager.      (line  268)
+* BFD_RELOC_ALPHA_GPREL_LO16:            howto manager.      (line  269)
+* BFD_RELOC_ALPHA_HINT:                  howto manager.      (line  255)
+* BFD_RELOC_ALPHA_LINKAGE:               howto manager.      (line  260)
+* BFD_RELOC_ALPHA_LITERAL:               howto manager.      (line  228)
+* BFD_RELOC_ALPHA_LITUSE:                howto manager.      (line  230)
+* BFD_RELOC_ALPHA_TLSGD:                 howto manager.      (line  278)
+* BFD_RELOC_ALPHA_TLSLDM:                howto manager.      (line  279)
+* BFD_RELOC_ALPHA_TPREL16:               howto manager.      (line  290)
+* BFD_RELOC_ALPHA_TPREL64:               howto manager.      (line  287)
+* BFD_RELOC_ALPHA_TPREL_HI16:            howto manager.      (line  288)
+* BFD_RELOC_ALPHA_TPREL_LO16:            howto manager.      (line  289)
+* BFD_RELOC_ARC_B22_PCREL:               howto manager.      (line  871)
+* BFD_RELOC_ARC_B26:                     howto manager.      (line  876)
+* BFD_RELOC_ARM_ADR_IMM:                 howto manager.      (line  764)
+* BFD_RELOC_ARM_ADRL_IMMEDIATE:          howto manager.      (line  751)
+* BFD_RELOC_ARM_ALU_PC_G0:               howto manager.      (line  721)
+* BFD_RELOC_ARM_ALU_PC_G0_NC:            howto manager.      (line  720)
+* BFD_RELOC_ARM_ALU_PC_G1:               howto manager.      (line  723)
+* BFD_RELOC_ARM_ALU_PC_G1_NC:            howto manager.      (line  722)
+* BFD_RELOC_ARM_ALU_PC_G2:               howto manager.      (line  724)
+* BFD_RELOC_ARM_ALU_SB_G0:               howto manager.      (line  735)
+* BFD_RELOC_ARM_ALU_SB_G0_NC:            howto manager.      (line  734)
+* BFD_RELOC_ARM_ALU_SB_G1:               howto manager.      (line  737)
+* BFD_RELOC_ARM_ALU_SB_G1_NC:            howto manager.      (line  736)
+* BFD_RELOC_ARM_ALU_SB_G2:               howto manager.      (line  738)
+* BFD_RELOC_ARM_CP_OFF_IMM:              howto manager.      (line  760)
+* BFD_RELOC_ARM_CP_OFF_IMM_S2:           howto manager.      (line  761)
+* BFD_RELOC_ARM_GLOB_DAT:                howto manager.      (line  702)
+* BFD_RELOC_ARM_GOT32:                   howto manager.      (line  703)
+* BFD_RELOC_ARM_GOTOFF:                  howto manager.      (line  706)
+* BFD_RELOC_ARM_GOTPC:                   howto manager.      (line  707)
+* BFD_RELOC_ARM_HWLITERAL:               howto manager.      (line  771)
+* BFD_RELOC_ARM_IMMEDIATE:               howto manager.      (line  750)
+* BFD_RELOC_ARM_IN_POOL:                 howto manager.      (line  767)
+* BFD_RELOC_ARM_JUMP_SLOT:               howto manager.      (line  701)
+* BFD_RELOC_ARM_LDC_PC_G0:               howto manager.      (line  731)
+* BFD_RELOC_ARM_LDC_PC_G1:               howto manager.      (line  732)
+* BFD_RELOC_ARM_LDC_PC_G2:               howto manager.      (line  733)
+* BFD_RELOC_ARM_LDC_SB_G0:               howto manager.      (line  745)
+* BFD_RELOC_ARM_LDC_SB_G1:               howto manager.      (line  746)
+* BFD_RELOC_ARM_LDC_SB_G2:               howto manager.      (line  747)
+* BFD_RELOC_ARM_LDR_IMM:                 howto manager.      (line  765)
+* BFD_RELOC_ARM_LDR_PC_G0:               howto manager.      (line  725)
+* BFD_RELOC_ARM_LDR_PC_G1:               howto manager.      (line  726)
+* BFD_RELOC_ARM_LDR_PC_G2:               howto manager.      (line  727)
+* BFD_RELOC_ARM_LDR_SB_G0:               howto manager.      (line  739)
+* BFD_RELOC_ARM_LDR_SB_G1:               howto manager.      (line  740)
+* BFD_RELOC_ARM_LDR_SB_G2:               howto manager.      (line  741)
+* BFD_RELOC_ARM_LDRS_PC_G0:              howto manager.      (line  728)
+* BFD_RELOC_ARM_LDRS_PC_G1:              howto manager.      (line  729)
+* BFD_RELOC_ARM_LDRS_PC_G2:              howto manager.      (line  730)
+* BFD_RELOC_ARM_LDRS_SB_G0:              howto manager.      (line  742)
+* BFD_RELOC_ARM_LDRS_SB_G1:              howto manager.      (line  743)
+* BFD_RELOC_ARM_LDRS_SB_G2:              howto manager.      (line  744)
+* BFD_RELOC_ARM_LITERAL:                 howto manager.      (line  766)
+* BFD_RELOC_ARM_MOVT:                    howto manager.      (line  692)
+* BFD_RELOC_ARM_MOVT_PCREL:              howto manager.      (line  694)
+* BFD_RELOC_ARM_MOVW:                    howto manager.      (line  691)
+* BFD_RELOC_ARM_MOVW_PCREL:              howto manager.      (line  693)
+* BFD_RELOC_ARM_MULTI:                   howto manager.      (line  759)
+* BFD_RELOC_ARM_OFFSET_IMM:              howto manager.      (line  665)
+* BFD_RELOC_ARM_OFFSET_IMM8:             howto manager.      (line  768)
+* BFD_RELOC_ARM_PCREL_BLX:               howto manager.      (line  636)
+* BFD_RELOC_ARM_PCREL_BRANCH:            howto manager.      (line  632)
+* BFD_RELOC_ARM_PCREL_CALL:              howto manager.      (line  646)
+* BFD_RELOC_ARM_PCREL_JUMP:              howto manager.      (line  650)
+* BFD_RELOC_ARM_PLT32:                   howto manager.      (line  704)
+* BFD_RELOC_ARM_PREL31:                  howto manager.      (line  688)
+* BFD_RELOC_ARM_RELATIVE:                howto manager.      (line  705)
+* BFD_RELOC_ARM_ROSEGREL32:              howto manager.      (line  677)
+* BFD_RELOC_ARM_SBREL32:                 howto manager.      (line  680)
+* BFD_RELOC_ARM_SHIFT_IMM:               howto manager.      (line  756)
+* BFD_RELOC_ARM_SMC:                     howto manager.      (line  757)
+* BFD_RELOC_ARM_SWI:                     howto manager.      (line  758)
+* BFD_RELOC_ARM_T32_ADD_IMM:             howto manager.      (line  753)
+* BFD_RELOC_ARM_T32_ADD_PC12:            howto manager.      (line  755)
+* BFD_RELOC_ARM_T32_CP_OFF_IMM:          howto manager.      (line  762)
+* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2:       howto manager.      (line  763)
+* BFD_RELOC_ARM_T32_IMM12:               howto manager.      (line  754)
+* BFD_RELOC_ARM_T32_IMMEDIATE:           howto manager.      (line  752)
+* BFD_RELOC_ARM_T32_OFFSET_IMM:          howto manager.      (line  770)
+* BFD_RELOC_ARM_T32_OFFSET_U8:           howto manager.      (line  769)
+* BFD_RELOC_ARM_TARGET1:                 howto manager.      (line  673)
+* BFD_RELOC_ARM_TARGET2:                 howto manager.      (line  683)
+* BFD_RELOC_ARM_THUMB_ADD:               howto manager.      (line  772)
+* BFD_RELOC_ARM_THUMB_IMM:               howto manager.      (line  773)
+* BFD_RELOC_ARM_THUMB_MOVT:              howto manager.      (line  696)
+* BFD_RELOC_ARM_THUMB_MOVT_PCREL:        howto manager.      (line  698)
+* BFD_RELOC_ARM_THUMB_MOVW:              howto manager.      (line  695)
+* BFD_RELOC_ARM_THUMB_MOVW_PCREL:        howto manager.      (line  697)
+* BFD_RELOC_ARM_THUMB_OFFSET:            howto manager.      (line  669)
+* BFD_RELOC_ARM_THUMB_SHIFT:             howto manager.      (line  774)
+* BFD_RELOC_ARM_TLS_DTPMOD32:            howto manager.      (line  714)
+* BFD_RELOC_ARM_TLS_DTPOFF32:            howto manager.      (line  713)
+* BFD_RELOC_ARM_TLS_GD32:                howto manager.      (line  710)
+* BFD_RELOC_ARM_TLS_IE32:                howto manager.      (line  716)
+* BFD_RELOC_ARM_TLS_LDM32:               howto manager.      (line  712)
+* BFD_RELOC_ARM_TLS_LDO32:               howto manager.      (line  711)
+* BFD_RELOC_ARM_TLS_LE32:                howto manager.      (line  717)
+* BFD_RELOC_ARM_TLS_TPOFF32:             howto manager.      (line  715)
+* BFD_RELOC_AVR_13_PCREL:                howto manager.      (line 1314)
+* BFD_RELOC_AVR_16_PM:                   howto manager.      (line 1318)
+* BFD_RELOC_AVR_6:                       howto manager.      (line 1405)
+* BFD_RELOC_AVR_6_ADIW:                  howto manager.      (line 1409)
+* BFD_RELOC_AVR_7_PCREL:                 howto manager.      (line 1310)
+* BFD_RELOC_AVR_CALL:                    howto manager.      (line 1397)
+* BFD_RELOC_AVR_HH8_LDI:                 howto manager.      (line 1330)
+* BFD_RELOC_AVR_HH8_LDI_NEG:             howto manager.      (line 1349)
+* BFD_RELOC_AVR_HH8_LDI_PM:              howto manager.      (line 1378)
+* BFD_RELOC_AVR_HH8_LDI_PM_NEG:          howto manager.      (line 1392)
+* BFD_RELOC_AVR_HI8_LDI:                 howto manager.      (line 1326)
+* BFD_RELOC_AVR_HI8_LDI_GS:              howto manager.      (line 1372)
+* BFD_RELOC_AVR_HI8_LDI_NEG:             howto manager.      (line 1344)
+* BFD_RELOC_AVR_HI8_LDI_PM:              howto manager.      (line 1368)
+* BFD_RELOC_AVR_HI8_LDI_PM_NEG:          howto manager.      (line 1387)
+* BFD_RELOC_AVR_LDI:                     howto manager.      (line 1401)
+* BFD_RELOC_AVR_LO8_LDI:                 howto manager.      (line 1322)
+* BFD_RELOC_AVR_LO8_LDI_GS:              howto manager.      (line 1362)
+* BFD_RELOC_AVR_LO8_LDI_NEG:             howto manager.      (line 1339)
+* BFD_RELOC_AVR_LO8_LDI_PM:              howto manager.      (line 1358)
+* BFD_RELOC_AVR_LO8_LDI_PM_NEG:          howto manager.      (line 1383)
+* BFD_RELOC_AVR_MS8_LDI:                 howto manager.      (line 1335)
+* BFD_RELOC_AVR_MS8_LDI_NEG:             howto manager.      (line 1354)
+* BFD_RELOC_BFIN_10_PCREL:               howto manager.      (line  896)
+* BFD_RELOC_BFIN_11_PCREL:               howto manager.      (line  899)
+* BFD_RELOC_BFIN_12_PCREL_JUMP:          howto manager.      (line  902)
+* BFD_RELOC_BFIN_12_PCREL_JUMP_S:        howto manager.      (line  905)
+* BFD_RELOC_BFIN_16_HIGH:                howto manager.      (line  884)
+* BFD_RELOC_BFIN_16_IMM:                 howto manager.      (line  881)
+* BFD_RELOC_BFIN_16_LOW:                 howto manager.      (line  893)
+* BFD_RELOC_BFIN_24_PCREL_CALL_X:        howto manager.      (line  908)
+* BFD_RELOC_BFIN_24_PCREL_JUMP_L:        howto manager.      (line  911)
+* BFD_RELOC_BFIN_4_PCREL:                howto manager.      (line  887)
+* BFD_RELOC_BFIN_5_PCREL:                howto manager.      (line  890)
+* BFD_RELOC_BFIN_FUNCDESC:               howto manager.      (line  917)
+* BFD_RELOC_BFIN_FUNCDESC_GOT17M4:       howto manager.      (line  918)
+* BFD_RELOC_BFIN_FUNCDESC_GOTHI:         howto manager.      (line  919)
+* BFD_RELOC_BFIN_FUNCDESC_GOTLO:         howto manager.      (line  920)
+* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4:    howto manager.      (line  922)
+* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI:      howto manager.      (line  923)
+* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO:      howto manager.      (line  924)
+* BFD_RELOC_BFIN_FUNCDESC_VALUE:         howto manager.      (line  921)
+* BFD_RELOC_BFIN_GOT:                    howto manager.      (line  930)
+* BFD_RELOC_BFIN_GOT17M4:                howto manager.      (line  914)
+* BFD_RELOC_BFIN_GOTHI:                  howto manager.      (line  915)
+* BFD_RELOC_BFIN_GOTLO:                  howto manager.      (line  916)
+* BFD_RELOC_BFIN_GOTOFF17M4:             howto manager.      (line  925)
+* BFD_RELOC_BFIN_GOTOFFHI:               howto manager.      (line  926)
+* BFD_RELOC_BFIN_GOTOFFLO:               howto manager.      (line  927)
+* BFD_RELOC_BFIN_PLTPC:                  howto manager.      (line  933)
+* bfd_reloc_code_type:                   howto manager.      (line   10)
+* BFD_RELOC_CRIS_16_GOT:                 howto manager.      (line 1807)
+* BFD_RELOC_CRIS_16_GOTPLT:              howto manager.      (line 1813)
+* BFD_RELOC_CRIS_32_GOT:                 howto manager.      (line 1804)
+* BFD_RELOC_CRIS_32_GOTPLT:              howto manager.      (line 1810)
+* BFD_RELOC_CRIS_32_GOTREL:              howto manager.      (line 1816)
+* BFD_RELOC_CRIS_32_PLT_GOTREL:          howto manager.      (line 1819)
+* BFD_RELOC_CRIS_32_PLT_PCREL:           howto manager.      (line 1822)
+* BFD_RELOC_CRIS_BDISP8:                 howto manager.      (line 1785)
+* BFD_RELOC_CRIS_COPY:                   howto manager.      (line 1798)
+* BFD_RELOC_CRIS_GLOB_DAT:               howto manager.      (line 1799)
+* BFD_RELOC_CRIS_JUMP_SLOT:              howto manager.      (line 1800)
+* BFD_RELOC_CRIS_LAPCQ_OFFSET:           howto manager.      (line 1793)
+* BFD_RELOC_CRIS_RELATIVE:               howto manager.      (line 1801)
+* BFD_RELOC_CRIS_SIGNED_16:              howto manager.      (line 1791)
+* BFD_RELOC_CRIS_SIGNED_6:               howto manager.      (line 1787)
+* BFD_RELOC_CRIS_SIGNED_8:               howto manager.      (line 1789)
+* BFD_RELOC_CRIS_UNSIGNED_16:            howto manager.      (line 1792)
+* BFD_RELOC_CRIS_UNSIGNED_4:             howto manager.      (line 1794)
+* BFD_RELOC_CRIS_UNSIGNED_5:             howto manager.      (line 1786)
+* BFD_RELOC_CRIS_UNSIGNED_6:             howto manager.      (line 1788)
+* BFD_RELOC_CRIS_UNSIGNED_8:             howto manager.      (line 1790)
+* BFD_RELOC_CRX_ABS16:                   howto manager.      (line 1773)
+* BFD_RELOC_CRX_ABS32:                   howto manager.      (line 1774)
+* BFD_RELOC_CRX_IMM16:                   howto manager.      (line 1778)
+* BFD_RELOC_CRX_IMM32:                   howto manager.      (line 1779)
+* BFD_RELOC_CRX_NUM16:                   howto manager.      (line 1776)
+* BFD_RELOC_CRX_NUM32:                   howto manager.      (line 1777)
+* BFD_RELOC_CRX_NUM8:                    howto manager.      (line 1775)
+* BFD_RELOC_CRX_REGREL12:                howto manager.      (line 1769)
+* BFD_RELOC_CRX_REGREL22:                howto manager.      (line 1770)
+* BFD_RELOC_CRX_REGREL28:                howto manager.      (line 1771)
+* BFD_RELOC_CRX_REGREL32:                howto manager.      (line 1772)
+* BFD_RELOC_CRX_REL16:                   howto manager.      (line 1766)
+* BFD_RELOC_CRX_REL24:                   howto manager.      (line 1767)
+* BFD_RELOC_CRX_REL32:                   howto manager.      (line 1768)
+* BFD_RELOC_CRX_REL4:                    howto manager.      (line 1763)
+* BFD_RELOC_CRX_REL8:                    howto manager.      (line 1764)
+* BFD_RELOC_CRX_REL8_CMP:                howto manager.      (line 1765)
+* BFD_RELOC_CRX_SWITCH16:                howto manager.      (line 1781)
+* BFD_RELOC_CRX_SWITCH32:                howto manager.      (line 1782)
+* BFD_RELOC_CRX_SWITCH8:                 howto manager.      (line 1780)
+* BFD_RELOC_CTOR:                        howto manager.      (line  626)
+* BFD_RELOC_D10V_10_PCREL_L:             howto manager.      (line 1000)
+* BFD_RELOC_D10V_10_PCREL_R:             howto manager.      (line  996)
+* BFD_RELOC_D10V_18:                     howto manager.      (line 1005)
+* BFD_RELOC_D10V_18_PCREL:               howto manager.      (line 1008)
+* BFD_RELOC_D30V_15:                     howto manager.      (line 1023)
+* BFD_RELOC_D30V_15_PCREL:               howto manager.      (line 1027)
+* BFD_RELOC_D30V_15_PCREL_R:             howto manager.      (line 1031)
+* BFD_RELOC_D30V_21:                     howto manager.      (line 1036)
+* BFD_RELOC_D30V_21_PCREL:               howto manager.      (line 1040)
+* BFD_RELOC_D30V_21_PCREL_R:             howto manager.      (line 1044)
+* BFD_RELOC_D30V_32:                     howto manager.      (line 1049)
+* BFD_RELOC_D30V_32_PCREL:               howto manager.      (line 1052)
+* BFD_RELOC_D30V_6:                      howto manager.      (line 1011)
+* BFD_RELOC_D30V_9_PCREL:                howto manager.      (line 1014)
+* BFD_RELOC_D30V_9_PCREL_R:              howto manager.      (line 1018)
+* BFD_RELOC_DLX_HI16_S:                  howto manager.      (line 1055)
+* BFD_RELOC_DLX_JMP26:                   howto manager.      (line 1061)
+* BFD_RELOC_DLX_LO16:                    howto manager.      (line 1058)
+* BFD_RELOC_FR30_10_IN_8:                howto manager.      (line 1240)
+* BFD_RELOC_FR30_12_PCREL:               howto manager.      (line 1248)
+* BFD_RELOC_FR30_20:                     howto manager.      (line 1224)
+* BFD_RELOC_FR30_48:                     howto manager.      (line 1221)
+* BFD_RELOC_FR30_6_IN_4:                 howto manager.      (line 1228)
+* BFD_RELOC_FR30_8_IN_8:                 howto manager.      (line 1232)
+* BFD_RELOC_FR30_9_IN_8:                 howto manager.      (line 1236)
+* BFD_RELOC_FR30_9_PCREL:                howto manager.      (line 1244)
+* BFD_RELOC_FRV_FUNCDESC:                howto manager.      (line  391)
+* BFD_RELOC_FRV_FUNCDESC_GOT12:          howto manager.      (line  392)
+* BFD_RELOC_FRV_FUNCDESC_GOTHI:          howto manager.      (line  393)
+* BFD_RELOC_FRV_FUNCDESC_GOTLO:          howto manager.      (line  394)
+* BFD_RELOC_FRV_FUNCDESC_GOTOFF12:       howto manager.      (line  396)
+* BFD_RELOC_FRV_FUNCDESC_GOTOFFHI:       howto manager.      (line  397)
+* BFD_RELOC_FRV_FUNCDESC_GOTOFFLO:       howto manager.      (line  398)
+* BFD_RELOC_FRV_FUNCDESC_VALUE:          howto manager.      (line  395)
+* BFD_RELOC_FRV_GETTLSOFF:               howto manager.      (line  402)
+* BFD_RELOC_FRV_GETTLSOFF_RELAX:         howto manager.      (line  415)
+* BFD_RELOC_FRV_GOT12:                   howto manager.      (line  388)
+* BFD_RELOC_FRV_GOTHI:                   howto manager.      (line  389)
+* BFD_RELOC_FRV_GOTLO:                   howto manager.      (line  390)
+* BFD_RELOC_FRV_GOTOFF12:                howto manager.      (line  399)
+* BFD_RELOC_FRV_GOTOFFHI:                howto manager.      (line  400)
+* BFD_RELOC_FRV_GOTOFFLO:                howto manager.      (line  401)
+* BFD_RELOC_FRV_GOTTLSDESC12:            howto manager.      (line  404)
+* BFD_RELOC_FRV_GOTTLSDESCHI:            howto manager.      (line  405)
+* BFD_RELOC_FRV_GOTTLSDESCLO:            howto manager.      (line  406)
+* BFD_RELOC_FRV_GOTTLSOFF12:             howto manager.      (line  410)
+* BFD_RELOC_FRV_GOTTLSOFFHI:             howto manager.      (line  411)
+* BFD_RELOC_FRV_GOTTLSOFFLO:             howto manager.      (line  412)
+* BFD_RELOC_FRV_GPREL12:                 howto manager.      (line  383)
+* BFD_RELOC_FRV_GPREL32:                 howto manager.      (line  385)
+* BFD_RELOC_FRV_GPRELHI:                 howto manager.      (line  386)
+* BFD_RELOC_FRV_GPRELLO:                 howto manager.      (line  387)
+* BFD_RELOC_FRV_GPRELU12:                howto manager.      (line  384)
+* BFD_RELOC_FRV_HI16:                    howto manager.      (line  382)
+* BFD_RELOC_FRV_LABEL16:                 howto manager.      (line  379)
+* BFD_RELOC_FRV_LABEL24:                 howto manager.      (line  380)
+* BFD_RELOC_FRV_LO16:                    howto manager.      (line  381)
+* BFD_RELOC_FRV_TLSDESC_RELAX:           howto manager.      (line  414)
+* BFD_RELOC_FRV_TLSDESC_VALUE:           howto manager.      (line  403)
+* BFD_RELOC_FRV_TLSMOFF:                 howto manager.      (line  417)
+* BFD_RELOC_FRV_TLSMOFF12:               howto manager.      (line  407)
+* BFD_RELOC_FRV_TLSMOFFHI:               howto manager.      (line  408)
+* BFD_RELOC_FRV_TLSMOFFLO:               howto manager.      (line  409)
+* BFD_RELOC_FRV_TLSOFF:                  howto manager.      (line  413)
+* BFD_RELOC_FRV_TLSOFF_RELAX:            howto manager.      (line  416)
+* BFD_RELOC_GPREL16:                     howto manager.      (line  106)
+* BFD_RELOC_GPREL32:                     howto manager.      (line  107)
+* BFD_RELOC_H8_DIR16A8:                  howto manager.      (line 1864)
+* BFD_RELOC_H8_DIR16R8:                  howto manager.      (line 1865)
+* BFD_RELOC_H8_DIR24A8:                  howto manager.      (line 1866)
+* BFD_RELOC_H8_DIR24R8:                  howto manager.      (line 1867)
+* BFD_RELOC_H8_DIR32A16:                 howto manager.      (line 1868)
+* BFD_RELOC_HI16:                        howto manager.      (line  303)
+* BFD_RELOC_HI16_BASEREL:                howto manager.      (line   82)
+* BFD_RELOC_HI16_GOTOFF:                 howto manager.      (line   57)
+* BFD_RELOC_HI16_PCREL:                  howto manager.      (line  315)
+* BFD_RELOC_HI16_PLTOFF:                 howto manager.      (line   69)
+* BFD_RELOC_HI16_S:                      howto manager.      (line  306)
+* BFD_RELOC_HI16_S_BASEREL:              howto manager.      (line   83)
+* BFD_RELOC_HI16_S_GOTOFF:               howto manager.      (line   58)
+* BFD_RELOC_HI16_S_PCREL:                howto manager.      (line  318)
+* BFD_RELOC_HI16_S_PLTOFF:               howto manager.      (line   70)
+* BFD_RELOC_HI22:                        howto manager.      (line  101)
+* BFD_RELOC_I370_D12:                    howto manager.      (line  623)
+* BFD_RELOC_I960_CALLJ:                  howto manager.      (line  113)
+* BFD_RELOC_IA64_COPY:                   howto manager.      (line 1657)
+* BFD_RELOC_IA64_DIR32LSB:               howto manager.      (line 1602)
+* BFD_RELOC_IA64_DIR32MSB:               howto manager.      (line 1601)
+* BFD_RELOC_IA64_DIR64LSB:               howto manager.      (line 1604)
+* BFD_RELOC_IA64_DIR64MSB:               howto manager.      (line 1603)
+* BFD_RELOC_IA64_DTPMOD64LSB:            howto manager.      (line 1667)
+* BFD_RELOC_IA64_DTPMOD64MSB:            howto manager.      (line 1666)
+* BFD_RELOC_IA64_DTPREL14:               howto manager.      (line 1669)
+* BFD_RELOC_IA64_DTPREL22:               howto manager.      (line 1670)
+* BFD_RELOC_IA64_DTPREL32LSB:            howto manager.      (line 1673)
+* BFD_RELOC_IA64_DTPREL32MSB:            howto manager.      (line 1672)
+* BFD_RELOC_IA64_DTPREL64I:              howto manager.      (line 1671)
+* BFD_RELOC_IA64_DTPREL64LSB:            howto manager.      (line 1675)
+* BFD_RELOC_IA64_DTPREL64MSB:            howto manager.      (line 1674)
+* BFD_RELOC_IA64_FPTR32LSB:              howto manager.      (line 1619)
+* BFD_RELOC_IA64_FPTR32MSB:              howto manager.      (line 1618)
+* BFD_RELOC_IA64_FPTR64I:                howto manager.      (line 1617)
+* BFD_RELOC_IA64_FPTR64LSB:              howto manager.      (line 1621)
+* BFD_RELOC_IA64_FPTR64MSB:              howto manager.      (line 1620)
+* BFD_RELOC_IA64_GPREL22:                howto manager.      (line 1605)
+* BFD_RELOC_IA64_GPREL32LSB:             howto manager.      (line 1608)
+* BFD_RELOC_IA64_GPREL32MSB:             howto manager.      (line 1607)
+* BFD_RELOC_IA64_GPREL64I:               howto manager.      (line 1606)
+* BFD_RELOC_IA64_GPREL64LSB:             howto manager.      (line 1610)
+* BFD_RELOC_IA64_GPREL64MSB:             howto manager.      (line 1609)
+* BFD_RELOC_IA64_IMM14:                  howto manager.      (line 1598)
+* BFD_RELOC_IA64_IMM22:                  howto manager.      (line 1599)
+* BFD_RELOC_IA64_IMM64:                  howto manager.      (line 1600)
+* BFD_RELOC_IA64_IPLTLSB:                howto manager.      (line 1656)
+* BFD_RELOC_IA64_IPLTMSB:                howto manager.      (line 1655)
+* BFD_RELOC_IA64_LDXMOV:                 howto manager.      (line 1659)
+* BFD_RELOC_IA64_LTOFF22:                howto manager.      (line 1611)
+* BFD_RELOC_IA64_LTOFF22X:               howto manager.      (line 1658)
+* BFD_RELOC_IA64_LTOFF64I:               howto manager.      (line 1612)
+* BFD_RELOC_IA64_LTOFF_DTPMOD22:         howto manager.      (line 1668)
+* BFD_RELOC_IA64_LTOFF_DTPREL22:         howto manager.      (line 1676)
+* BFD_RELOC_IA64_LTOFF_FPTR22:           howto manager.      (line 1633)
+* BFD_RELOC_IA64_LTOFF_FPTR32LSB:        howto manager.      (line 1636)
+* BFD_RELOC_IA64_LTOFF_FPTR32MSB:        howto manager.      (line 1635)
+* BFD_RELOC_IA64_LTOFF_FPTR64I:          howto manager.      (line 1634)
+* BFD_RELOC_IA64_LTOFF_FPTR64LSB:        howto manager.      (line 1638)
+* BFD_RELOC_IA64_LTOFF_FPTR64MSB:        howto manager.      (line 1637)
+* BFD_RELOC_IA64_LTOFF_TPREL22:          howto manager.      (line 1665)
+* BFD_RELOC_IA64_LTV32LSB:               howto manager.      (line 1652)
+* BFD_RELOC_IA64_LTV32MSB:               howto manager.      (line 1651)
+* BFD_RELOC_IA64_LTV64LSB:               howto manager.      (line 1654)
+* BFD_RELOC_IA64_LTV64MSB:               howto manager.      (line 1653)
+* BFD_RELOC_IA64_PCREL21B:               howto manager.      (line 1622)
+* BFD_RELOC_IA64_PCREL21BI:              howto manager.      (line 1623)
+* BFD_RELOC_IA64_PCREL21F:               howto manager.      (line 1625)
+* BFD_RELOC_IA64_PCREL21M:               howto manager.      (line 1624)
+* BFD_RELOC_IA64_PCREL22:                howto manager.      (line 1626)
+* BFD_RELOC_IA64_PCREL32LSB:             howto manager.      (line 1630)
+* BFD_RELOC_IA64_PCREL32MSB:             howto manager.      (line 1629)
+* BFD_RELOC_IA64_PCREL60B:               howto manager.      (line 1627)
+* BFD_RELOC_IA64_PCREL64I:               howto manager.      (line 1628)
+* BFD_RELOC_IA64_PCREL64LSB:             howto manager.      (line 1632)
+* BFD_RELOC_IA64_PCREL64MSB:             howto manager.      (line 1631)
+* BFD_RELOC_IA64_PLTOFF22:               howto manager.      (line 1613)
+* BFD_RELOC_IA64_PLTOFF64I:              howto manager.      (line 1614)
+* BFD_RELOC_IA64_PLTOFF64LSB:            howto manager.      (line 1616)
+* BFD_RELOC_IA64_PLTOFF64MSB:            howto manager.      (line 1615)
+* BFD_RELOC_IA64_REL32LSB:               howto manager.      (line 1648)
+* BFD_RELOC_IA64_REL32MSB:               howto manager.      (line 1647)
+* BFD_RELOC_IA64_REL64LSB:               howto manager.      (line 1650)
+* BFD_RELOC_IA64_REL64MSB:               howto manager.      (line 1649)
+* BFD_RELOC_IA64_SECREL32LSB:            howto manager.      (line 1644)
+* BFD_RELOC_IA64_SECREL32MSB:            howto manager.      (line 1643)
+* BFD_RELOC_IA64_SECREL64LSB:            howto manager.      (line 1646)
+* BFD_RELOC_IA64_SECREL64MSB:            howto manager.      (line 1645)
+* BFD_RELOC_IA64_SEGREL32LSB:            howto manager.      (line 1640)
+* BFD_RELOC_IA64_SEGREL32MSB:            howto manager.      (line 1639)
+* BFD_RELOC_IA64_SEGREL64LSB:            howto manager.      (line 1642)
+* BFD_RELOC_IA64_SEGREL64MSB:            howto manager.      (line 1641)
+* BFD_RELOC_IA64_TPREL14:                howto manager.      (line 1660)
+* BFD_RELOC_IA64_TPREL22:                howto manager.      (line 1661)
+* BFD_RELOC_IA64_TPREL64I:               howto manager.      (line 1662)
+* BFD_RELOC_IA64_TPREL64LSB:             howto manager.      (line 1664)
+* BFD_RELOC_IA64_TPREL64MSB:             howto manager.      (line 1663)
+* BFD_RELOC_IP2K_ADDR16CJP:              howto manager.      (line 1550)
+* BFD_RELOC_IP2K_BANK:                   howto manager.      (line 1547)
+* BFD_RELOC_IP2K_EX8DATA:                howto manager.      (line 1558)
+* BFD_RELOC_IP2K_FR9:                    howto manager.      (line 1544)
+* BFD_RELOC_IP2K_FR_OFFSET:              howto manager.      (line 1571)
+* BFD_RELOC_IP2K_HI8DATA:                howto manager.      (line 1557)
+* BFD_RELOC_IP2K_HI8INSN:                howto manager.      (line 1562)
+* BFD_RELOC_IP2K_LO8DATA:                howto manager.      (line 1556)
+* BFD_RELOC_IP2K_LO8INSN:                howto manager.      (line 1561)
+* BFD_RELOC_IP2K_PAGE3:                  howto manager.      (line 1553)
+* BFD_RELOC_IP2K_PC_SKIP:                howto manager.      (line 1565)
+* BFD_RELOC_IP2K_TEXT:                   howto manager.      (line 1568)
+* BFD_RELOC_IQ2000_OFFSET_16:            howto manager.      (line 1915)
+* BFD_RELOC_IQ2000_OFFSET_21:            howto manager.      (line 1916)
+* BFD_RELOC_IQ2000_UHI16:                howto manager.      (line 1917)
+* BFD_RELOC_LO10:                        howto manager.      (line  102)
+* BFD_RELOC_LO16:                        howto manager.      (line  312)
+* BFD_RELOC_LO16_BASEREL:                howto manager.      (line   81)
+* BFD_RELOC_LO16_GOTOFF:                 howto manager.      (line   56)
+* BFD_RELOC_LO16_PCREL:                  howto manager.      (line  321)
+* BFD_RELOC_LO16_PLTOFF:                 howto manager.      (line   68)
+* BFD_RELOC_M32C_HI8:                    howto manager.      (line 1064)
+* BFD_RELOC_M32C_RL_1ADDR:               howto manager.      (line 1066)
+* BFD_RELOC_M32C_RL_2ADDR:               howto manager.      (line 1067)
+* BFD_RELOC_M32C_RL_JUMP:                howto manager.      (line 1065)
+* BFD_RELOC_M32R_10_PCREL:               howto manager.      (line 1074)
+* BFD_RELOC_M32R_18_PCREL:               howto manager.      (line 1078)
+* BFD_RELOC_M32R_24:                     howto manager.      (line 1070)
+* BFD_RELOC_M32R_26_PCREL:               howto manager.      (line 1081)
+* BFD_RELOC_M32R_26_PLTREL:              howto manager.      (line 1100)
+* BFD_RELOC_M32R_COPY:                   howto manager.      (line 1101)
+* BFD_RELOC_M32R_GLOB_DAT:               howto manager.      (line 1102)
+* BFD_RELOC_M32R_GOT16_HI_SLO:           howto manager.      (line 1111)
+* BFD_RELOC_M32R_GOT16_HI_ULO:           howto manager.      (line 1110)
+* BFD_RELOC_M32R_GOT16_LO:               howto manager.      (line 1112)
+* BFD_RELOC_M32R_GOT24:                  howto manager.      (line 1099)
+* BFD_RELOC_M32R_GOTOFF:                 howto manager.      (line 1105)
+* BFD_RELOC_M32R_GOTOFF_HI_SLO:          howto manager.      (line 1107)
+* BFD_RELOC_M32R_GOTOFF_HI_ULO:          howto manager.      (line 1106)
+* BFD_RELOC_M32R_GOTOFF_LO:              howto manager.      (line 1108)
+* BFD_RELOC_M32R_GOTPC24:                howto manager.      (line 1109)
+* BFD_RELOC_M32R_GOTPC_HI_SLO:           howto manager.      (line 1114)
+* BFD_RELOC_M32R_GOTPC_HI_ULO:           howto manager.      (line 1113)
+* BFD_RELOC_M32R_GOTPC_LO:               howto manager.      (line 1115)
+* BFD_RELOC_M32R_HI16_SLO:               howto manager.      (line 1088)
+* BFD_RELOC_M32R_HI16_ULO:               howto manager.      (line 1084)
+* BFD_RELOC_M32R_JMP_SLOT:               howto manager.      (line 1103)
+* BFD_RELOC_M32R_LO16:                   howto manager.      (line 1092)
+* BFD_RELOC_M32R_RELATIVE:               howto manager.      (line 1104)
+* BFD_RELOC_M32R_SDA16:                  howto manager.      (line 1095)
+* BFD_RELOC_M68HC11_24:                  howto manager.      (line 1712)
+* BFD_RELOC_M68HC11_3B:                  howto manager.      (line 1687)
+* BFD_RELOC_M68HC11_HI8:                 howto manager.      (line 1679)
+* BFD_RELOC_M68HC11_LO16:                howto manager.      (line 1701)
+* BFD_RELOC_M68HC11_LO8:                 howto manager.      (line 1683)
+* BFD_RELOC_M68HC11_PAGE:                howto manager.      (line 1707)
+* BFD_RELOC_M68HC11_RL_GROUP:            howto manager.      (line 1696)
+* BFD_RELOC_M68HC11_RL_JUMP:             howto manager.      (line 1690)
+* BFD_RELOC_M68HC12_5B:                  howto manager.      (line 1718)
+* BFD_RELOC_MCORE_PCREL_32:              howto manager.      (line 1255)
+* BFD_RELOC_MCORE_PCREL_IMM11BY2:        howto manager.      (line 1253)
+* BFD_RELOC_MCORE_PCREL_IMM4BY2:         howto manager.      (line 1254)
+* BFD_RELOC_MCORE_PCREL_IMM8BY4:         howto manager.      (line 1252)
+* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2:    howto manager.      (line 1256)
+* BFD_RELOC_MCORE_RVA:                   howto manager.      (line 1257)
+* BFD_RELOC_MIPS16_GPREL:                howto manager.      (line  300)
+* BFD_RELOC_MIPS16_HI16:                 howto manager.      (line  324)
+* BFD_RELOC_MIPS16_HI16_S:               howto manager.      (line  327)
+* BFD_RELOC_MIPS16_JMP:                  howto manager.      (line  297)
+* BFD_RELOC_MIPS16_LO16:                 howto manager.      (line  333)
+* BFD_RELOC_MIPS_CALL16:                 howto manager.      (line  340)
+* BFD_RELOC_MIPS_CALL_HI16:              howto manager.      (line  343)
+* BFD_RELOC_MIPS_CALL_LO16:              howto manager.      (line  344)
+* BFD_RELOC_MIPS_COPY:                   howto manager.      (line  375)
+* BFD_RELOC_MIPS_DELETE:                 howto manager.      (line  353)
+* BFD_RELOC_MIPS_GOT16:                  howto manager.      (line  339)
+* BFD_RELOC_MIPS_GOT_DISP:               howto manager.      (line  348)
+* BFD_RELOC_MIPS_GOT_HI16:               howto manager.      (line  341)
+* BFD_RELOC_MIPS_GOT_LO16:               howto manager.      (line  342)
+* BFD_RELOC_MIPS_GOT_OFST:               howto manager.      (line  347)
+* BFD_RELOC_MIPS_GOT_PAGE:               howto manager.      (line  346)
+* BFD_RELOC_MIPS_HIGHER:                 howto manager.      (line  355)
+* BFD_RELOC_MIPS_HIGHEST:                howto manager.      (line  354)
+* BFD_RELOC_MIPS_INSERT_A:               howto manager.      (line  351)
+* BFD_RELOC_MIPS_INSERT_B:               howto manager.      (line  352)
+* BFD_RELOC_MIPS_JALR:                   howto manager.      (line  359)
+* BFD_RELOC_MIPS_JMP:                    howto manager.      (line  293)
+* BFD_RELOC_MIPS_JUMP_SLOT:              howto manager.      (line  376)
+* BFD_RELOC_MIPS_LITERAL:                howto manager.      (line  336)
+* BFD_RELOC_MIPS_REL16:                  howto manager.      (line  357)
+* BFD_RELOC_MIPS_RELGOT:                 howto manager.      (line  358)
+* BFD_RELOC_MIPS_SCN_DISP:               howto manager.      (line  356)
+* BFD_RELOC_MIPS_SHIFT5:                 howto manager.      (line  349)
+* BFD_RELOC_MIPS_SHIFT6:                 howto manager.      (line  350)
+* BFD_RELOC_MIPS_SUB:                    howto manager.      (line  345)
+* BFD_RELOC_MIPS_TLS_DTPMOD32:           howto manager.      (line  360)
+* BFD_RELOC_MIPS_TLS_DTPMOD64:           howto manager.      (line  362)
+* BFD_RELOC_MIPS_TLS_DTPREL32:           howto manager.      (line  361)
+* BFD_RELOC_MIPS_TLS_DTPREL64:           howto manager.      (line  363)
+* BFD_RELOC_MIPS_TLS_DTPREL_HI16:        howto manager.      (line  366)
+* BFD_RELOC_MIPS_TLS_DTPREL_LO16:        howto manager.      (line  367)
+* BFD_RELOC_MIPS_TLS_GD:                 howto manager.      (line  364)
+* BFD_RELOC_MIPS_TLS_GOTTPREL:           howto manager.      (line  368)
+* BFD_RELOC_MIPS_TLS_LDM:                howto manager.      (line  365)
+* BFD_RELOC_MIPS_TLS_TPREL32:            howto manager.      (line  369)
+* BFD_RELOC_MIPS_TLS_TPREL64:            howto manager.      (line  370)
+* BFD_RELOC_MIPS_TLS_TPREL_HI16:         howto manager.      (line  371)
+* BFD_RELOC_MIPS_TLS_TPREL_LO16:         howto manager.      (line  372)
+* BFD_RELOC_MMIX_ADDR19:                 howto manager.      (line 1286)
+* BFD_RELOC_MMIX_ADDR27:                 howto manager.      (line 1290)
+* BFD_RELOC_MMIX_BASE_PLUS_OFFSET:       howto manager.      (line 1302)
+* BFD_RELOC_MMIX_CBRANCH:                howto manager.      (line 1266)
+* BFD_RELOC_MMIX_CBRANCH_1:              howto manager.      (line 1268)
+* BFD_RELOC_MMIX_CBRANCH_2:              howto manager.      (line 1269)
+* BFD_RELOC_MMIX_CBRANCH_3:              howto manager.      (line 1270)
+* BFD_RELOC_MMIX_CBRANCH_J:              howto manager.      (line 1267)
+* BFD_RELOC_MMIX_GETA:                   howto manager.      (line 1260)
+* BFD_RELOC_MMIX_GETA_1:                 howto manager.      (line 1261)
+* BFD_RELOC_MMIX_GETA_2:                 howto manager.      (line 1262)
+* BFD_RELOC_MMIX_GETA_3:                 howto manager.      (line 1263)
+* BFD_RELOC_MMIX_JMP:                    howto manager.      (line 1280)
+* BFD_RELOC_MMIX_JMP_1:                  howto manager.      (line 1281)
+* BFD_RELOC_MMIX_JMP_2:                  howto manager.      (line 1282)
+* BFD_RELOC_MMIX_JMP_3:                  howto manager.      (line 1283)
+* BFD_RELOC_MMIX_LOCAL:                  howto manager.      (line 1306)
+* BFD_RELOC_MMIX_PUSHJ:                  howto manager.      (line 1273)
+* BFD_RELOC_MMIX_PUSHJ_1:                howto manager.      (line 1274)
+* BFD_RELOC_MMIX_PUSHJ_2:                howto manager.      (line 1275)
+* BFD_RELOC_MMIX_PUSHJ_3:                howto manager.      (line 1276)
+* BFD_RELOC_MMIX_PUSHJ_STUBBABLE:        howto manager.      (line 1277)
+* BFD_RELOC_MMIX_REG:                    howto manager.      (line 1298)
+* BFD_RELOC_MMIX_REG_OR_BYTE:            howto manager.      (line 1294)
+* BFD_RELOC_MN10300_16_PCREL:            howto manager.      (line 1190)
+* BFD_RELOC_MN10300_32_PCREL:            howto manager.      (line 1186)
+* BFD_RELOC_MN10300_COPY:                howto manager.      (line  435)
+* BFD_RELOC_MN10300_GLOB_DAT:            howto manager.      (line  438)
+* BFD_RELOC_MN10300_GOT16:               howto manager.      (line  431)
+* BFD_RELOC_MN10300_GOT24:               howto manager.      (line  427)
+* BFD_RELOC_MN10300_GOT32:               howto manager.      (line  423)
+* BFD_RELOC_MN10300_GOTOFF24:            howto manager.      (line  420)
+* BFD_RELOC_MN10300_JMP_SLOT:            howto manager.      (line  441)
+* BFD_RELOC_MN10300_RELATIVE:            howto manager.      (line  444)
+* BFD_RELOC_MSP430_10_PCREL:             howto manager.      (line 1906)
+* BFD_RELOC_MSP430_16:                   howto manager.      (line 1908)
+* BFD_RELOC_MSP430_16_BYTE:              howto manager.      (line 1910)
+* BFD_RELOC_MSP430_16_PCREL:             howto manager.      (line 1907)
+* BFD_RELOC_MSP430_16_PCREL_BYTE:        howto manager.      (line 1909)
+* BFD_RELOC_MSP430_2X_PCREL:             howto manager.      (line 1911)
+* BFD_RELOC_MSP430_RL_PCREL:             howto manager.      (line 1912)
+* BFD_RELOC_MT_GNU_VTENTRY:              howto manager.      (line 1900)
+* BFD_RELOC_MT_GNU_VTINHERIT:            howto manager.      (line 1897)
+* BFD_RELOC_MT_HI16:                     howto manager.      (line 1891)
+* BFD_RELOC_MT_LO16:                     howto manager.      (line 1894)
+* BFD_RELOC_MT_PC16:                     howto manager.      (line 1888)
+* BFD_RELOC_MT_PCINSN8:                  howto manager.      (line 1903)
+* BFD_RELOC_NONE:                        howto manager.      (line  116)
+* BFD_RELOC_NS32K_DISP_16:               howto manager.      (line  507)
+* BFD_RELOC_NS32K_DISP_16_PCREL:         howto manager.      (line  510)
+* BFD_RELOC_NS32K_DISP_32:               howto manager.      (line  508)
+* BFD_RELOC_NS32K_DISP_32_PCREL:         howto manager.      (line  511)
+* BFD_RELOC_NS32K_DISP_8:                howto manager.      (line  506)
+* BFD_RELOC_NS32K_DISP_8_PCREL:          howto manager.      (line  509)
+* BFD_RELOC_NS32K_IMM_16:                howto manager.      (line  501)
+* BFD_RELOC_NS32K_IMM_16_PCREL:          howto manager.      (line  504)
+* BFD_RELOC_NS32K_IMM_32:                howto manager.      (line  502)
+* BFD_RELOC_NS32K_IMM_32_PCREL:          howto manager.      (line  505)
+* BFD_RELOC_NS32K_IMM_8:                 howto manager.      (line  500)
+* BFD_RELOC_NS32K_IMM_8_PCREL:           howto manager.      (line  503)
+* BFD_RELOC_OPENRISC_ABS_26:             howto manager.      (line 1860)
+* BFD_RELOC_OPENRISC_REL_26:             howto manager.      (line 1861)
+* BFD_RELOC_PDP11_DISP_6_PCREL:          howto manager.      (line  515)
+* BFD_RELOC_PDP11_DISP_8_PCREL:          howto manager.      (line  514)
+* BFD_RELOC_PJ_CODE_DIR16:               howto manager.      (line  520)
+* BFD_RELOC_PJ_CODE_DIR32:               howto manager.      (line  521)
+* BFD_RELOC_PJ_CODE_HI16:                howto manager.      (line  518)
+* BFD_RELOC_PJ_CODE_LO16:                howto manager.      (line  519)
+* BFD_RELOC_PJ_CODE_REL16:               howto manager.      (line  522)
+* BFD_RELOC_PJ_CODE_REL32:               howto manager.      (line  523)
+* BFD_RELOC_PPC64_ADDR16_DS:             howto manager.      (line  568)
+* BFD_RELOC_PPC64_ADDR16_LO_DS:          howto manager.      (line  569)
+* BFD_RELOC_PPC64_DTPREL16_DS:           howto manager.      (line  615)
+* BFD_RELOC_PPC64_DTPREL16_HIGHER:       howto manager.      (line  617)
+* BFD_RELOC_PPC64_DTPREL16_HIGHERA:      howto manager.      (line  618)
+* BFD_RELOC_PPC64_DTPREL16_HIGHEST:      howto manager.      (line  619)
+* BFD_RELOC_PPC64_DTPREL16_HIGHESTA:     howto manager.      (line  620)
+* BFD_RELOC_PPC64_DTPREL16_LO_DS:        howto manager.      (line  616)
+* BFD_RELOC_PPC64_GOT16_DS:              howto manager.      (line  570)
+* BFD_RELOC_PPC64_GOT16_LO_DS:           howto manager.      (line  571)
+* BFD_RELOC_PPC64_HIGHER:                howto manager.      (line  556)
+* BFD_RELOC_PPC64_HIGHER_S:              howto manager.      (line  557)
+* BFD_RELOC_PPC64_HIGHEST:               howto manager.      (line  558)
+* BFD_RELOC_PPC64_HIGHEST_S:             howto manager.      (line  559)
+* BFD_RELOC_PPC64_PLT16_LO_DS:           howto manager.      (line  572)
+* BFD_RELOC_PPC64_PLTGOT16:              howto manager.      (line  564)
+* BFD_RELOC_PPC64_PLTGOT16_DS:           howto manager.      (line  577)
+* BFD_RELOC_PPC64_PLTGOT16_HA:           howto manager.      (line  567)
+* BFD_RELOC_PPC64_PLTGOT16_HI:           howto manager.      (line  566)
+* BFD_RELOC_PPC64_PLTGOT16_LO:           howto manager.      (line  565)
+* BFD_RELOC_PPC64_PLTGOT16_LO_DS:        howto manager.      (line  578)
+* BFD_RELOC_PPC64_SECTOFF_DS:            howto manager.      (line  573)
+* BFD_RELOC_PPC64_SECTOFF_LO_DS:         howto manager.      (line  574)
+* BFD_RELOC_PPC64_TOC:                   howto manager.      (line  563)
+* BFD_RELOC_PPC64_TOC16_DS:              howto manager.      (line  575)
+* BFD_RELOC_PPC64_TOC16_HA:              howto manager.      (line  562)
+* BFD_RELOC_PPC64_TOC16_HI:              howto manager.      (line  561)
+* BFD_RELOC_PPC64_TOC16_LO:              howto manager.      (line  560)
+* BFD_RELOC_PPC64_TOC16_LO_DS:           howto manager.      (line  576)
+* BFD_RELOC_PPC64_TPREL16_DS:            howto manager.      (line  609)
+* BFD_RELOC_PPC64_TPREL16_HIGHER:        howto manager.      (line  611)
+* BFD_RELOC_PPC64_TPREL16_HIGHERA:       howto manager.      (line  612)
+* BFD_RELOC_PPC64_TPREL16_HIGHEST:       howto manager.      (line  613)
+* BFD_RELOC_PPC64_TPREL16_HIGHESTA:      howto manager.      (line  614)
+* BFD_RELOC_PPC64_TPREL16_LO_DS:         howto manager.      (line  610)
+* BFD_RELOC_PPC_B16:                     howto manager.      (line  529)
+* BFD_RELOC_PPC_B16_BRNTAKEN:            howto manager.      (line  531)
+* BFD_RELOC_PPC_B16_BRTAKEN:             howto manager.      (line  530)
+* BFD_RELOC_PPC_B26:                     howto manager.      (line  526)
+* BFD_RELOC_PPC_BA16:                    howto manager.      (line  532)
+* BFD_RELOC_PPC_BA16_BRNTAKEN:           howto manager.      (line  534)
+* BFD_RELOC_PPC_BA16_BRTAKEN:            howto manager.      (line  533)
+* BFD_RELOC_PPC_BA26:                    howto manager.      (line  527)
+* BFD_RELOC_PPC_COPY:                    howto manager.      (line  535)
+* BFD_RELOC_PPC_DTPMOD:                  howto manager.      (line  582)
+* BFD_RELOC_PPC_DTPREL:                  howto manager.      (line  592)
+* BFD_RELOC_PPC_DTPREL16:                howto manager.      (line  588)
+* BFD_RELOC_PPC_DTPREL16_HA:             howto manager.      (line  591)
+* BFD_RELOC_PPC_DTPREL16_HI:             howto manager.      (line  590)
+* BFD_RELOC_PPC_DTPREL16_LO:             howto manager.      (line  589)
+* BFD_RELOC_PPC_EMB_BIT_FLD:             howto manager.      (line  554)
+* BFD_RELOC_PPC_EMB_MRKREF:              howto manager.      (line  549)
+* BFD_RELOC_PPC_EMB_NADDR16:             howto manager.      (line  541)
+* BFD_RELOC_PPC_EMB_NADDR16_HA:          howto manager.      (line  544)
+* BFD_RELOC_PPC_EMB_NADDR16_HI:          howto manager.      (line  543)
+* BFD_RELOC_PPC_EMB_NADDR16_LO:          howto manager.      (line  542)
+* BFD_RELOC_PPC_EMB_NADDR32:             howto manager.      (line  540)
+* BFD_RELOC_PPC_EMB_RELSDA:              howto manager.      (line  555)
+* BFD_RELOC_PPC_EMB_RELSEC16:            howto manager.      (line  550)
+* BFD_RELOC_PPC_EMB_RELST_HA:            howto manager.      (line  553)
+* BFD_RELOC_PPC_EMB_RELST_HI:            howto manager.      (line  552)
+* BFD_RELOC_PPC_EMB_RELST_LO:            howto manager.      (line  551)
+* BFD_RELOC_PPC_EMB_SDA21:               howto manager.      (line  548)
+* BFD_RELOC_PPC_EMB_SDA2I16:             howto manager.      (line  546)
+* BFD_RELOC_PPC_EMB_SDA2REL:             howto manager.      (line  547)
+* BFD_RELOC_PPC_EMB_SDAI16:              howto manager.      (line  545)
+* BFD_RELOC_PPC_GLOB_DAT:                howto manager.      (line  536)
+* BFD_RELOC_PPC_GOT_DTPREL16:            howto manager.      (line  605)
+* BFD_RELOC_PPC_GOT_DTPREL16_HA:         howto manager.      (line  608)
+* BFD_RELOC_PPC_GOT_DTPREL16_HI:         howto manager.      (line  607)
+* BFD_RELOC_PPC_GOT_DTPREL16_LO:         howto manager.      (line  606)
+* BFD_RELOC_PPC_GOT_TLSGD16:             howto manager.      (line  593)
+* BFD_RELOC_PPC_GOT_TLSGD16_HA:          howto manager.      (line  596)
+* BFD_RELOC_PPC_GOT_TLSGD16_HI:          howto manager.      (line  595)
+* BFD_RELOC_PPC_GOT_TLSGD16_LO:          howto manager.      (line  594)
+* BFD_RELOC_PPC_GOT_TLSLD16:             howto manager.      (line  597)
+* BFD_RELOC_PPC_GOT_TLSLD16_HA:          howto manager.      (line  600)
+* BFD_RELOC_PPC_GOT_TLSLD16_HI:          howto manager.      (line  599)
+* BFD_RELOC_PPC_GOT_TLSLD16_LO:          howto manager.      (line  598)
+* BFD_RELOC_PPC_GOT_TPREL16:             howto manager.      (line  601)
+* BFD_RELOC_PPC_GOT_TPREL16_HA:          howto manager.      (line  604)
+* BFD_RELOC_PPC_GOT_TPREL16_HI:          howto manager.      (line  603)
+* BFD_RELOC_PPC_GOT_TPREL16_LO:          howto manager.      (line  602)
+* BFD_RELOC_PPC_JMP_SLOT:                howto manager.      (line  537)
+* BFD_RELOC_PPC_LOCAL24PC:               howto manager.      (line  539)
+* BFD_RELOC_PPC_RELATIVE:                howto manager.      (line  538)
+* BFD_RELOC_PPC_TLS:                     howto manager.      (line  581)
+* BFD_RELOC_PPC_TOC16:                   howto manager.      (line  528)
+* BFD_RELOC_PPC_TPREL:                   howto manager.      (line  587)
+* BFD_RELOC_PPC_TPREL16:                 howto manager.      (line  583)
+* BFD_RELOC_PPC_TPREL16_HA:              howto manager.      (line  586)
+* BFD_RELOC_PPC_TPREL16_HI:              howto manager.      (line  585)
+* BFD_RELOC_PPC_TPREL16_LO:              howto manager.      (line  584)
+* BFD_RELOC_RVA:                         howto manager.      (line   85)
+* BFD_RELOC_SCORE16_BRANCH:              howto manager.      (line 1535)
+* BFD_RELOC_SCORE16_JMP:                 howto manager.      (line 1532)
+* BFD_RELOC_SCORE_BRANCH:                howto manager.      (line 1529)
+* BFD_RELOC_SCORE_CALL15:                howto manager.      (line 1540)
+* BFD_RELOC_SCORE_DUMMY1:                howto manager.      (line 1519)
+* BFD_RELOC_SCORE_DUMMY2:                howto manager.      (line 1525)
+* BFD_RELOC_SCORE_DUMMY_HI16:            howto manager.      (line 1541)
+* BFD_RELOC_SCORE_GOT15:                 howto manager.      (line 1538)
+* BFD_RELOC_SCORE_GOT_LO16:              howto manager.      (line 1539)
+* BFD_RELOC_SCORE_GPREL15:               howto manager.      (line 1522)
+* BFD_RELOC_SCORE_JMP:                   howto manager.      (line 1526)
+* BFD_RELOC_SH_ALIGN:                    howto manager.      (line  800)
+* BFD_RELOC_SH_CODE:                     howto manager.      (line  801)
+* BFD_RELOC_SH_COPY:                     howto manager.      (line  806)
+* BFD_RELOC_SH_COPY64:                   howto manager.      (line  831)
+* BFD_RELOC_SH_COUNT:                    howto manager.      (line  799)
+* BFD_RELOC_SH_DATA:                     howto manager.      (line  802)
+* BFD_RELOC_SH_DISP12:                   howto manager.      (line  782)
+* BFD_RELOC_SH_DISP12BY2:                howto manager.      (line  783)
+* BFD_RELOC_SH_DISP12BY4:                howto manager.      (line  784)
+* BFD_RELOC_SH_DISP12BY8:                howto manager.      (line  785)
+* BFD_RELOC_SH_DISP20:                   howto manager.      (line  786)
+* BFD_RELOC_SH_DISP20BY8:                howto manager.      (line  787)
+* BFD_RELOC_SH_GLOB_DAT:                 howto manager.      (line  807)
+* BFD_RELOC_SH_GLOB_DAT64:               howto manager.      (line  832)
+* BFD_RELOC_SH_GOT10BY4:                 howto manager.      (line  835)
+* BFD_RELOC_SH_GOT10BY8:                 howto manager.      (line  836)
+* BFD_RELOC_SH_GOT_HI16:                 howto manager.      (line  814)
+* BFD_RELOC_SH_GOT_LOW16:                howto manager.      (line  811)
+* BFD_RELOC_SH_GOT_MEDHI16:              howto manager.      (line  813)
+* BFD_RELOC_SH_GOT_MEDLOW16:             howto manager.      (line  812)
+* BFD_RELOC_SH_GOTOFF_HI16:              howto manager.      (line  826)
+* BFD_RELOC_SH_GOTOFF_LOW16:             howto manager.      (line  823)
+* BFD_RELOC_SH_GOTOFF_MEDHI16:           howto manager.      (line  825)
+* BFD_RELOC_SH_GOTOFF_MEDLOW16:          howto manager.      (line  824)
+* BFD_RELOC_SH_GOTPC:                    howto manager.      (line  810)
+* BFD_RELOC_SH_GOTPC_HI16:               howto manager.      (line  830)
+* BFD_RELOC_SH_GOTPC_LOW16:              howto manager.      (line  827)
+* BFD_RELOC_SH_GOTPC_MEDHI16:            howto manager.      (line  829)
+* BFD_RELOC_SH_GOTPC_MEDLOW16:           howto manager.      (line  828)
+* BFD_RELOC_SH_GOTPLT10BY4:              howto manager.      (line  837)
+* BFD_RELOC_SH_GOTPLT10BY8:              howto manager.      (line  838)
+* BFD_RELOC_SH_GOTPLT32:                 howto manager.      (line  839)
+* BFD_RELOC_SH_GOTPLT_HI16:              howto manager.      (line  818)
+* BFD_RELOC_SH_GOTPLT_LOW16:             howto manager.      (line  815)
+* BFD_RELOC_SH_GOTPLT_MEDHI16:           howto manager.      (line  817)
+* BFD_RELOC_SH_GOTPLT_MEDLOW16:          howto manager.      (line  816)
+* BFD_RELOC_SH_IMM3:                     howto manager.      (line  780)
+* BFD_RELOC_SH_IMM3U:                    howto manager.      (line  781)
+* BFD_RELOC_SH_IMM4:                     howto manager.      (line  788)
+* BFD_RELOC_SH_IMM4BY2:                  howto manager.      (line  789)
+* BFD_RELOC_SH_IMM4BY4:                  howto manager.      (line  790)
+* BFD_RELOC_SH_IMM8:                     howto manager.      (line  791)
+* BFD_RELOC_SH_IMM8BY2:                  howto manager.      (line  792)
+* BFD_RELOC_SH_IMM8BY4:                  howto manager.      (line  793)
+* BFD_RELOC_SH_IMM_HI16:                 howto manager.      (line  857)
+* BFD_RELOC_SH_IMM_HI16_PCREL:           howto manager.      (line  858)
+* BFD_RELOC_SH_IMM_LOW16:                howto manager.      (line  851)
+* BFD_RELOC_SH_IMM_LOW16_PCREL:          howto manager.      (line  852)
+* BFD_RELOC_SH_IMM_MEDHI16:              howto manager.      (line  855)
+* BFD_RELOC_SH_IMM_MEDHI16_PCREL:        howto manager.      (line  856)
+* BFD_RELOC_SH_IMM_MEDLOW16:             howto manager.      (line  853)
+* BFD_RELOC_SH_IMM_MEDLOW16_PCREL:       howto manager.      (line  854)
+* BFD_RELOC_SH_IMMS10:                   howto manager.      (line  845)
+* BFD_RELOC_SH_IMMS10BY2:                howto manager.      (line  846)
+* BFD_RELOC_SH_IMMS10BY4:                howto manager.      (line  847)
+* BFD_RELOC_SH_IMMS10BY8:                howto manager.      (line  848)
+* BFD_RELOC_SH_IMMS16:                   howto manager.      (line  849)
+* BFD_RELOC_SH_IMMS6:                    howto manager.      (line  842)
+* BFD_RELOC_SH_IMMS6BY32:                howto manager.      (line  843)
+* BFD_RELOC_SH_IMMU16:                   howto manager.      (line  850)
+* BFD_RELOC_SH_IMMU5:                    howto manager.      (line  841)
+* BFD_RELOC_SH_IMMU6:                    howto manager.      (line  844)
+* BFD_RELOC_SH_JMP_SLOT:                 howto manager.      (line  808)
+* BFD_RELOC_SH_JMP_SLOT64:               howto manager.      (line  833)
+* BFD_RELOC_SH_LABEL:                    howto manager.      (line  803)
+* BFD_RELOC_SH_LOOP_END:                 howto manager.      (line  805)
+* BFD_RELOC_SH_LOOP_START:               howto manager.      (line  804)
+* BFD_RELOC_SH_PCDISP12BY2:              howto manager.      (line  779)
+* BFD_RELOC_SH_PCDISP8BY2:               howto manager.      (line  778)
+* BFD_RELOC_SH_PCRELIMM8BY2:             howto manager.      (line  794)
+* BFD_RELOC_SH_PCRELIMM8BY4:             howto manager.      (line  795)
+* BFD_RELOC_SH_PLT_HI16:                 howto manager.      (line  822)
+* BFD_RELOC_SH_PLT_LOW16:                howto manager.      (line  819)
+* BFD_RELOC_SH_PLT_MEDHI16:              howto manager.      (line  821)
+* BFD_RELOC_SH_PLT_MEDLOW16:             howto manager.      (line  820)
+* BFD_RELOC_SH_PT_16:                    howto manager.      (line  859)
+* BFD_RELOC_SH_RELATIVE:                 howto manager.      (line  809)
+* BFD_RELOC_SH_RELATIVE64:               howto manager.      (line  834)
+* BFD_RELOC_SH_SHMEDIA_CODE:             howto manager.      (line  840)
+* BFD_RELOC_SH_SWITCH16:                 howto manager.      (line  796)
+* BFD_RELOC_SH_SWITCH32:                 howto manager.      (line  797)
+* BFD_RELOC_SH_TLS_DTPMOD32:             howto manager.      (line  865)
+* BFD_RELOC_SH_TLS_DTPOFF32:             howto manager.      (line  866)
+* BFD_RELOC_SH_TLS_GD_32:                howto manager.      (line  860)
+* BFD_RELOC_SH_TLS_IE_32:                howto manager.      (line  863)
+* BFD_RELOC_SH_TLS_LD_32:                howto manager.      (line  861)
+* BFD_RELOC_SH_TLS_LDO_32:               howto manager.      (line  862)
+* BFD_RELOC_SH_TLS_LE_32:                howto manager.      (line  864)
+* BFD_RELOC_SH_TLS_TPOFF32:              howto manager.      (line  867)
+* BFD_RELOC_SH_USES:                     howto manager.      (line  798)
+* BFD_RELOC_SPARC13:                     howto manager.      (line  119)
+* BFD_RELOC_SPARC22:                     howto manager.      (line  118)
+* BFD_RELOC_SPARC_10:                    howto manager.      (line  141)
+* BFD_RELOC_SPARC_11:                    howto manager.      (line  142)
+* BFD_RELOC_SPARC_5:                     howto manager.      (line  154)
+* BFD_RELOC_SPARC_6:                     howto manager.      (line  153)
+* BFD_RELOC_SPARC_64:                    howto manager.      (line  140)
+* BFD_RELOC_SPARC_7:                     howto manager.      (line  152)
+* BFD_RELOC_SPARC_BASE13:                howto manager.      (line  136)
+* BFD_RELOC_SPARC_BASE22:                howto manager.      (line  137)
+* BFD_RELOC_SPARC_COPY:                  howto manager.      (line  126)
+* BFD_RELOC_SPARC_DISP64:                howto manager.      (line  155)
+* BFD_RELOC_SPARC_GLOB_DAT:              howto manager.      (line  127)
+* BFD_RELOC_SPARC_GOT10:                 howto manager.      (line  120)
+* BFD_RELOC_SPARC_GOT13:                 howto manager.      (line  121)
+* BFD_RELOC_SPARC_GOT22:                 howto manager.      (line  122)
+* BFD_RELOC_SPARC_H44:                   howto manager.      (line  160)
+* BFD_RELOC_SPARC_HH22:                  howto manager.      (line  144)
+* BFD_RELOC_SPARC_HIX22:                 howto manager.      (line  158)
+* BFD_RELOC_SPARC_HM10:                  howto manager.      (line  145)
+* BFD_RELOC_SPARC_JMP_SLOT:              howto manager.      (line  128)
+* BFD_RELOC_SPARC_L44:                   howto manager.      (line  162)
+* BFD_RELOC_SPARC_LM22:                  howto manager.      (line  146)
+* BFD_RELOC_SPARC_LOX10:                 howto manager.      (line  159)
+* BFD_RELOC_SPARC_M44:                   howto manager.      (line  161)
+* BFD_RELOC_SPARC_OLO10:                 howto manager.      (line  143)
+* BFD_RELOC_SPARC_PC10:                  howto manager.      (line  123)
+* BFD_RELOC_SPARC_PC22:                  howto manager.      (line  124)
+* BFD_RELOC_SPARC_PC_HH22:               howto manager.      (line  147)
+* BFD_RELOC_SPARC_PC_HM10:               howto manager.      (line  148)
+* BFD_RELOC_SPARC_PC_LM22:               howto manager.      (line  149)
+* BFD_RELOC_SPARC_PLT32:                 howto manager.      (line  156)
+* BFD_RELOC_SPARC_PLT64:                 howto manager.      (line  157)
+* BFD_RELOC_SPARC_REGISTER:              howto manager.      (line  163)
+* BFD_RELOC_SPARC_RELATIVE:              howto manager.      (line  129)
+* BFD_RELOC_SPARC_REV32:                 howto manager.      (line  166)
+* BFD_RELOC_SPARC_TLS_DTPMOD32:          howto manager.      (line  187)
+* BFD_RELOC_SPARC_TLS_DTPMOD64:          howto manager.      (line  188)
+* BFD_RELOC_SPARC_TLS_DTPOFF32:          howto manager.      (line  189)
+* BFD_RELOC_SPARC_TLS_DTPOFF64:          howto manager.      (line  190)
+* BFD_RELOC_SPARC_TLS_GD_ADD:            howto manager.      (line  171)
+* BFD_RELOC_SPARC_TLS_GD_CALL:           howto manager.      (line  172)
+* BFD_RELOC_SPARC_TLS_GD_HI22:           howto manager.      (line  169)
+* BFD_RELOC_SPARC_TLS_GD_LO10:           howto manager.      (line  170)
+* BFD_RELOC_SPARC_TLS_IE_ADD:            howto manager.      (line  184)
+* BFD_RELOC_SPARC_TLS_IE_HI22:           howto manager.      (line  180)
+* BFD_RELOC_SPARC_TLS_IE_LD:             howto manager.      (line  182)
+* BFD_RELOC_SPARC_TLS_IE_LDX:            howto manager.      (line  183)
+* BFD_RELOC_SPARC_TLS_IE_LO10:           howto manager.      (line  181)
+* BFD_RELOC_SPARC_TLS_LDM_ADD:           howto manager.      (line  175)
+* BFD_RELOC_SPARC_TLS_LDM_CALL:          howto manager.      (line  176)
+* BFD_RELOC_SPARC_TLS_LDM_HI22:          howto manager.      (line  173)
+* BFD_RELOC_SPARC_TLS_LDM_LO10:          howto manager.      (line  174)
+* BFD_RELOC_SPARC_TLS_LDO_ADD:           howto manager.      (line  179)
+* BFD_RELOC_SPARC_TLS_LDO_HIX22:         howto manager.      (line  177)
+* BFD_RELOC_SPARC_TLS_LDO_LOX10:         howto manager.      (line  178)
+* BFD_RELOC_SPARC_TLS_LE_HIX22:          howto manager.      (line  185)
+* BFD_RELOC_SPARC_TLS_LE_LOX10:          howto manager.      (line  186)
+* BFD_RELOC_SPARC_TLS_TPOFF32:           howto manager.      (line  191)
+* BFD_RELOC_SPARC_TLS_TPOFF64:           howto manager.      (line  192)
+* BFD_RELOC_SPARC_UA16:                  howto manager.      (line  130)
+* BFD_RELOC_SPARC_UA32:                  howto manager.      (line  131)
+* BFD_RELOC_SPARC_UA64:                  howto manager.      (line  132)
+* BFD_RELOC_SPARC_WDISP16:               howto manager.      (line  150)
+* BFD_RELOC_SPARC_WDISP19:               howto manager.      (line  151)
+* BFD_RELOC_SPARC_WDISP22:               howto manager.      (line  117)
+* BFD_RELOC_SPARC_WPLT30:                howto manager.      (line  125)
+* BFD_RELOC_SPU_HI16:                    howto manager.      (line  206)
+* BFD_RELOC_SPU_IMM10:                   howto manager.      (line  197)
+* BFD_RELOC_SPU_IMM10W:                  howto manager.      (line  198)
+* BFD_RELOC_SPU_IMM16:                   howto manager.      (line  199)
+* BFD_RELOC_SPU_IMM16W:                  howto manager.      (line  200)
+* BFD_RELOC_SPU_IMM18:                   howto manager.      (line  201)
+* BFD_RELOC_SPU_IMM7:                    howto manager.      (line  195)
+* BFD_RELOC_SPU_IMM8:                    howto manager.      (line  196)
+* BFD_RELOC_SPU_LO16:                    howto manager.      (line  205)
+* BFD_RELOC_SPU_PCREL16:                 howto manager.      (line  204)
+* BFD_RELOC_SPU_PCREL9a:                 howto manager.      (line  202)
+* BFD_RELOC_SPU_PCREL9b:                 howto manager.      (line  203)
+* BFD_RELOC_THUMB_PCREL_BLX:             howto manager.      (line  641)
+* BFD_RELOC_THUMB_PCREL_BRANCH12:        howto manager.      (line  655)
+* BFD_RELOC_THUMB_PCREL_BRANCH20:        howto manager.      (line  656)
+* BFD_RELOC_THUMB_PCREL_BRANCH23:        howto manager.      (line  657)
+* BFD_RELOC_THUMB_PCREL_BRANCH25:        howto manager.      (line  658)
+* BFD_RELOC_THUMB_PCREL_BRANCH7:         howto manager.      (line  653)
+* BFD_RELOC_THUMB_PCREL_BRANCH9:         howto manager.      (line  654)
+* BFD_RELOC_TIC30_LDP:                   howto manager.      (line 1194)
+* BFD_RELOC_TIC54X_16_OF_23:             howto manager.      (line 1212)
+* BFD_RELOC_TIC54X_23:                   howto manager.      (line 1209)
+* BFD_RELOC_TIC54X_MS7_OF_23:            howto manager.      (line 1217)
+* BFD_RELOC_TIC54X_PARTLS7:              howto manager.      (line 1199)
+* BFD_RELOC_TIC54X_PARTMS9:              howto manager.      (line 1204)
+* bfd_reloc_type_lookup:                 howto manager.      (line 2012)
+* BFD_RELOC_V850_22_PCREL:               howto manager.      (line 1121)
+* BFD_RELOC_V850_9_PCREL:                howto manager.      (line 1118)
+* BFD_RELOC_V850_ALIGN:                  howto manager.      (line 1179)
+* BFD_RELOC_V850_CALLT_16_16_OFFSET:     howto manager.      (line 1170)
+* BFD_RELOC_V850_CALLT_6_7_OFFSET:       howto manager.      (line 1167)
+* BFD_RELOC_V850_LO16_SPLIT_OFFSET:      howto manager.      (line 1182)
+* BFD_RELOC_V850_LONGCALL:               howto manager.      (line 1173)
+* BFD_RELOC_V850_LONGJUMP:               howto manager.      (line 1176)
+* BFD_RELOC_V850_SDA_15_16_OFFSET:       howto manager.      (line 1127)
+* BFD_RELOC_V850_SDA_16_16_OFFSET:       howto manager.      (line 1124)
+* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager.      (line 1159)
+* BFD_RELOC_V850_TDA_16_16_OFFSET:       howto manager.      (line 1149)
+* BFD_RELOC_V850_TDA_4_4_OFFSET:         howto manager.      (line 1156)
+* BFD_RELOC_V850_TDA_4_5_OFFSET:         howto manager.      (line 1152)
+* BFD_RELOC_V850_TDA_6_8_OFFSET:         howto manager.      (line 1138)
+* BFD_RELOC_V850_TDA_7_7_OFFSET:         howto manager.      (line 1146)
+* BFD_RELOC_V850_TDA_7_8_OFFSET:         howto manager.      (line 1142)
+* BFD_RELOC_V850_ZDA_15_16_OFFSET:       howto manager.      (line 1134)
+* BFD_RELOC_V850_ZDA_16_16_OFFSET:       howto manager.      (line 1131)
+* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager.      (line 1163)
+* BFD_RELOC_VAX_GLOB_DAT:                howto manager.      (line 1883)
+* BFD_RELOC_VAX_JMP_SLOT:                howto manager.      (line 1884)
+* BFD_RELOC_VAX_RELATIVE:                howto manager.      (line 1885)
+* BFD_RELOC_VPE4KMATH_DATA:              howto manager.      (line 1574)
+* BFD_RELOC_VPE4KMATH_INSN:              howto manager.      (line 1575)
+* BFD_RELOC_VTABLE_ENTRY:                howto manager.      (line 1579)
+* BFD_RELOC_VTABLE_INHERIT:              howto manager.      (line 1578)
+* BFD_RELOC_X86_64_32S:                  howto manager.      (line  479)
+* BFD_RELOC_X86_64_COPY:                 howto manager.      (line  474)
+* BFD_RELOC_X86_64_DTPMOD64:             howto manager.      (line  480)
+* BFD_RELOC_X86_64_DTPOFF32:             howto manager.      (line  485)
+* BFD_RELOC_X86_64_DTPOFF64:             howto manager.      (line  481)
+* BFD_RELOC_X86_64_GLOB_DAT:             howto manager.      (line  475)
+* BFD_RELOC_X86_64_GOT32:                howto manager.      (line  472)
+* BFD_RELOC_X86_64_GOT64:                howto manager.      (line  490)
+* BFD_RELOC_X86_64_GOTOFF64:             howto manager.      (line  488)
+* BFD_RELOC_X86_64_GOTPC32:              howto manager.      (line  489)
+* BFD_RELOC_X86_64_GOTPC32_TLSDESC:      howto manager.      (line  495)
+* BFD_RELOC_X86_64_GOTPC64:              howto manager.      (line  492)
+* BFD_RELOC_X86_64_GOTPCREL:             howto manager.      (line  478)
+* BFD_RELOC_X86_64_GOTPCREL64:           howto manager.      (line  491)
+* BFD_RELOC_X86_64_GOTPLT64:             howto manager.      (line  493)
+* BFD_RELOC_X86_64_GOTTPOFF:             howto manager.      (line  486)
+* BFD_RELOC_X86_64_JUMP_SLOT:            howto manager.      (line  476)
+* BFD_RELOC_X86_64_PLT32:                howto manager.      (line  473)
+* BFD_RELOC_X86_64_PLTOFF64:             howto manager.      (line  494)
+* BFD_RELOC_X86_64_RELATIVE:             howto manager.      (line  477)
+* BFD_RELOC_X86_64_TLSDESC:              howto manager.      (line  497)
+* BFD_RELOC_X86_64_TLSDESC_CALL:         howto manager.      (line  496)
+* BFD_RELOC_X86_64_TLSGD:                howto manager.      (line  483)
+* BFD_RELOC_X86_64_TLSLD:                howto manager.      (line  484)
+* BFD_RELOC_X86_64_TPOFF32:              howto manager.      (line  487)
+* BFD_RELOC_X86_64_TPOFF64:              howto manager.      (line  482)
+* BFD_RELOC_XC16X_PAG:                   howto manager.      (line 1877)
+* BFD_RELOC_XC16X_POF:                   howto manager.      (line 1878)
+* BFD_RELOC_XC16X_SEG:                   howto manager.      (line 1879)
+* BFD_RELOC_XC16X_SOF:                   howto manager.      (line 1880)
+* BFD_RELOC_XSTORMY16_12:                howto manager.      (line 1872)
+* BFD_RELOC_XSTORMY16_24:                howto manager.      (line 1873)
+* BFD_RELOC_XSTORMY16_FPTR16:            howto manager.      (line 1874)
+* BFD_RELOC_XSTORMY16_REL_12:            howto manager.      (line 1871)
+* BFD_RELOC_XTENSA_ASM_EXPAND:           howto manager.      (line 1989)
+* BFD_RELOC_XTENSA_ASM_SIMPLIFY:         howto manager.      (line 1994)
+* BFD_RELOC_XTENSA_DIFF16:               howto manager.      (line 1936)
+* BFD_RELOC_XTENSA_DIFF32:               howto manager.      (line 1937)
+* BFD_RELOC_XTENSA_DIFF8:                howto manager.      (line 1935)
+* BFD_RELOC_XTENSA_GLOB_DAT:             howto manager.      (line 1925)
+* BFD_RELOC_XTENSA_JMP_SLOT:             howto manager.      (line 1926)
+* BFD_RELOC_XTENSA_OP0:                  howto manager.      (line 1983)
+* BFD_RELOC_XTENSA_OP1:                  howto manager.      (line 1984)
+* BFD_RELOC_XTENSA_OP2:                  howto manager.      (line 1985)
+* BFD_RELOC_XTENSA_PLT:                  howto manager.      (line 1930)
+* BFD_RELOC_XTENSA_RELATIVE:             howto manager.      (line 1927)
+* BFD_RELOC_XTENSA_RTLD:                 howto manager.      (line 1920)
+* BFD_RELOC_XTENSA_SLOT0_ALT:            howto manager.      (line 1965)
+* BFD_RELOC_XTENSA_SLOT0_OP:             howto manager.      (line 1945)
+* BFD_RELOC_XTENSA_SLOT10_ALT:           howto manager.      (line 1975)
+* BFD_RELOC_XTENSA_SLOT10_OP:            howto manager.      (line 1955)
+* BFD_RELOC_XTENSA_SLOT11_ALT:           howto manager.      (line 1976)
+* BFD_RELOC_XTENSA_SLOT11_OP:            howto manager.      (line 1956)
+* BFD_RELOC_XTENSA_SLOT12_ALT:           howto manager.      (line 1977)
+* BFD_RELOC_XTENSA_SLOT12_OP:            howto manager.      (line 1957)
+* BFD_RELOC_XTENSA_SLOT13_ALT:           howto manager.      (line 1978)
+* BFD_RELOC_XTENSA_SLOT13_OP:            howto manager.      (line 1958)
+* BFD_RELOC_XTENSA_SLOT14_ALT:           howto manager.      (line 1979)
+* BFD_RELOC_XTENSA_SLOT14_OP:            howto manager.      (line 1959)
+* BFD_RELOC_XTENSA_SLOT1_ALT:            howto manager.      (line 1966)
+* BFD_RELOC_XTENSA_SLOT1_OP:             howto manager.      (line 1946)
+* BFD_RELOC_XTENSA_SLOT2_ALT:            howto manager.      (line 1967)
+* BFD_RELOC_XTENSA_SLOT2_OP:             howto manager.      (line 1947)
+* BFD_RELOC_XTENSA_SLOT3_ALT:            howto manager.      (line 1968)
+* BFD_RELOC_XTENSA_SLOT3_OP:             howto manager.      (line 1948)
+* BFD_RELOC_XTENSA_SLOT4_ALT:            howto manager.      (line 1969)
+* BFD_RELOC_XTENSA_SLOT4_OP:             howto manager.      (line 1949)
+* BFD_RELOC_XTENSA_SLOT5_ALT:            howto manager.      (line 1970)
+* BFD_RELOC_XTENSA_SLOT5_OP:             howto manager.      (line 1950)
+* BFD_RELOC_XTENSA_SLOT6_ALT:            howto manager.      (line 1971)
+* BFD_RELOC_XTENSA_SLOT6_OP:             howto manager.      (line 1951)
+* BFD_RELOC_XTENSA_SLOT7_ALT:            howto manager.      (line 1972)
+* BFD_RELOC_XTENSA_SLOT7_OP:             howto manager.      (line 1952)
+* BFD_RELOC_XTENSA_SLOT8_ALT:            howto manager.      (line 1973)
+* BFD_RELOC_XTENSA_SLOT8_OP:             howto manager.      (line 1953)
+* BFD_RELOC_XTENSA_SLOT9_ALT:            howto manager.      (line 1974)
+* BFD_RELOC_XTENSA_SLOT9_OP:             howto manager.      (line 1954)
+* BFD_RELOC_Z80_DISP8:                   howto manager.      (line 1999)
+* BFD_RELOC_Z8K_CALLR:                   howto manager.      (line 2005)
+* BFD_RELOC_Z8K_DISP7:                   howto manager.      (line 2002)
+* BFD_RELOC_Z8K_IMM4L:                   howto manager.      (line 2008)
+* bfd_scan_arch:                         Architectures.      (line  397)
+* bfd_scan_vma:                          BFD front end.      (line  426)
+* bfd_seach_for_target:                  bfd_target.         (line  460)
+* bfd_section_already_linked:            Writing the symbol table.
+                                                             (line   55)
+* bfd_section_list_clear:                section prototypes. (line    8)
+* bfd_sections_find_if:                  section prototypes. (line  176)
+* bfd_set_arch_info:                     Architectures.      (line  438)
+* bfd_set_archive_head:                  Archives.           (line   69)
+* bfd_set_default_target:                bfd_target.         (line  425)
+* bfd_set_error:                         BFD front end.      (line  236)
+* bfd_set_error_handler:                 BFD front end.      (line  278)
+* bfd_set_error_program_name:            BFD front end.      (line  287)
+* bfd_set_file_flags:                    BFD front end.      (line  346)
+* bfd_set_format:                        Formats.            (line   68)
+* bfd_set_gp_size:                       BFD front end.      (line  416)
+* bfd_set_private_flags:                 BFD front end.      (line  493)
+* bfd_set_reloc:                         BFD front end.      (line  336)
+* bfd_set_section_contents:              section prototypes. (line  207)
+* bfd_set_section_flags:                 section prototypes. (line  140)
+* bfd_set_section_size:                  section prototypes. (line  193)
+* bfd_set_start_address:                 BFD front end.      (line  395)
+* bfd_set_symtab:                        symbol handling functions.
+                                                             (line   60)
+* bfd_symbol_info:                       symbol handling functions.
+                                                             (line  130)
+* bfd_target_list:                       bfd_target.         (line  451)
+* bfd_write_bigendian_4byte_int:         Internal.           (line   13)
+* bfd_zalloc:                            Opening and Closing.
+                                                             (line  221)
+* bfd_zalloc2:                           Opening and Closing.
+                                                             (line  230)
+* coff_symbol_type:                      coff.               (line  186)
+* core_file_matches_executable_p:        Core Files.         (line   30)
+* find_separate_debug_file:              Opening and Closing.
+                                                             (line  272)
+* generic_core_file_matches_executable_p: Core Files.        (line   40)
+* get_debug_link_info:                   Opening and Closing.
+                                                             (line  253)
+* Hash tables:                           Hash Tables.        (line    6)
+* internal object-file format:           Canonical format.   (line   11)
+* Linker:                                Linker Functions.   (line    6)
+* Other functions:                       BFD front end.      (line  508)
+* separate_debug_file_exists:            Opening and Closing.
+                                                             (line  263)
+* struct bfd_iovec:                      BFD front end.      (line  700)
+* target vector (_bfd_final_link):       Performing the Final Link.
+                                                             (line    6)
+* target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table.
+                                                             (line    6)
+* target vector (_bfd_link_hash_table_create): Creating a Linker Hash Table.
+                                                             (line    6)
+* The HOWTO Macro:                       typedef arelent.    (line  291)
+* what is it?:                           Overview.           (line    6)
+
+
+\1f
+Tag Table:
+Node: Top\7f757
+Node: Overview\7f1096
+Node: History\7f2147
+Node: How It Works\7f3093
+Node: What BFD Version 2 Can Do\7f4636
+Node: BFD information loss\7f5951
+Node: Canonical format\7f8483
+Node: BFD front end\7f12855
+Node: Memory Usage\7f39775
+Node: Initialization\7f41003
+Node: Sections\7f41462
+Node: Section Input\7f41945
+Node: Section Output\7f43310
+Node: typedef asection\7f45796
+Node: section prototypes\7f70397
+Node: Symbols\7f80077
+Node: Reading Symbols\7f81672
+Node: Writing Symbols\7f82779
+Node: Mini Symbols\7f84488
+Node: typedef asymbol\7f85462
+Node: symbol handling functions\7f90380
+Node: Archives\7f95722
+Node: Formats\7f99448
+Node: Relocations\7f102396
+Node: typedef arelent\7f103123
+Node: howto manager\7f118934
+Node: Core Files\7f184029
+Node: Targets\7f185846
+Node: bfd_target\7f187816
+Node: Architectures\7f207992
+Node: Opening and Closing\7f229633
+Node: Internal\7f240635
+Node: File Caching\7f246968
+Node: Linker Functions\7f248882
+Node: Creating a Linker Hash Table\7f250555
+Node: Adding Symbols to the Hash Table\7f252293
+Node: Differing file formats\7f253193
+Node: Adding symbols from an object file\7f254941
+Node: Adding symbols from an archive\7f257092
+Node: Performing the Final Link\7f259506
+Node: Information provided by the linker\7f260748
+Node: Relocating the section contents\7f261902
+Node: Writing the symbol table\7f263653
+Node: Hash Tables\7f266695
+Node: Creating and Freeing a Hash Table\7f267893
+Node: Looking Up or Entering a String\7f269143
+Node: Traversing a Hash Table\7f270396
+Node: Deriving a New Hash Table Type\7f271185
+Node: Define the Derived Structures\7f272251
+Node: Write the Derived Creation Routine\7f273332
+Node: Write Other Derived Routines\7f275956
+Node: BFD back ends\7f277271
+Node: What to Put Where\7f277541
+Node: aout\7f277721
+Node: coff\7f284039
+Node: elf\7f308516
+Node: mmo\7f309379
+Node: File layout\7f310307
+Node: Symbol-table\7f315954
+Node: mmo section mapping\7f319723
+Node: GNU Free Documentation License\7f323375
+Node: BFD Index\7f343104
+\1f
+End Tag Table
diff --git a/darwin-x86/toolchain/arm-eabi-4.4.0/share/info/configure.info b/darwin-x86/toolchain/arm-eabi-4.4.0/share/info/configure.info
new file mode 100644 (file)
index 0000000..78cc7eb
--- /dev/null
@@ -0,0 +1,2773 @@
+This is configure.info, produced by makeinfo version 4.8 from
+.././etc/configure.texi.
+
+INFO-DIR-SECTION GNU admin
+START-INFO-DIR-ENTRY
+* configure: (configure).      The GNU configure and build system
+END-INFO-DIR-ENTRY
+
+   This file documents the GNU configure and build system.
+
+   Copyright (C) 1998 Cygnus Solutions.
+
+   Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+   Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+   Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be stated in a
+translation approved by the Foundation.
+
+\1f
+File: configure.info,  Node: Top,  Next: Introduction,  Up: (dir)
+
+GNU configure and build system
+******************************
+
+The GNU configure and build system.
+
+* Menu:
+
+* Introduction::               Introduction.
+* Getting Started::            Getting Started.
+* Files::                      Files.
+* Configuration Names::                Configuration Names.
+* Cross Compilation Tools::    Cross Compilation Tools.
+* Canadian Cross::             Canadian Cross.
+* Cygnus Configure::           Cygnus Configure.
+* Multilibs::                  Multilibs.
+* FAQ::                                Frequently Asked Questions.
+* Index::                      Index.
+
+\1f
+File: configure.info,  Node: Introduction,  Next: Getting Started,  Prev: Top,  Up: Top
+
+1 Introduction
+**************
+
+This document describes the GNU configure and build systems.  It
+describes how autoconf, automake, libtool, and make fit together.  It
+also includes a discussion of the older Cygnus configure system.
+
+   This document does not describe in detail how to use each of the
+tools; see the respective manuals for that.  Instead, it describes
+which files the developer must write, which files are machine generated
+and how they are generated, and where certain common problems should be
+addressed.
+
+   This document draws on several sources, including the autoconf
+manual by David MacKenzie (*note autoconf overview: (autoconf)Top.),
+the automake manual by David MacKenzie and Tom Tromey (*note automake
+overview: (automake)Top.), the libtool manual by Gordon Matzigkeit
+(*note libtool overview: (libtool)Top.), and the Cygnus configure
+manual by K. Richard Pixley.
+
+* Menu:
+
+* Goals::                      Goals.
+* Tools::                      The tools.
+* History::                    History.
+* Building::                   Building.
+
+\1f
+File: configure.info,  Node: Goals,  Next: Tools,  Up: Introduction
+
+1.1 Goals
+=========
+
+The GNU configure and build system has two main goals.
+
+   The first is to simplify the development of portable programs.  The
+system permits the developer to concentrate on writing the program,
+simplifying many details of portability across Unix and even Windows
+systems, and permitting the developer to describe how to build the
+program using simple rules rather than complex Makefiles.
+
+   The second is to simplify the building of programs distributed as
+source code.  All programs are built using a simple, standardized, two
+step process.  The program builder need not install any special tools in
+order to build the program.
+
+\1f
+File: configure.info,  Node: Tools,  Next: History,  Prev: Goals,  Up: Introduction
+
+1.2 Tools
+=========
+
+The GNU configure and build system is comprised of several different
+tools.  Program developers must build and install all of these tools.
+
+   People who just want to build programs from distributed sources
+normally do not need any special tools beyond a Unix shell, a make
+program, and a C compiler.
+
+autoconf
+     provides a general portability framework, based on testing the
+     features of the host system at build time.
+
+automake
+     a system for describing how to build a program, permitting the
+     developer to write a simplified `Makefile'.
+
+libtool
+     a standardized approach to building shared libraries.
+
+gettext
+     provides a framework for translation of text messages into other
+     languages; not really discussed in this document.
+
+m4
+     autoconf requires the GNU version of m4; the standard Unix m4 does
+     not suffice.
+
+perl
+     automake requires perl.
+
+\1f
+File: configure.info,  Node: History,  Next: Building,  Prev: Tools,  Up: Introduction
+
+1.3 History
+===========
+
+This is a very brief and probably inaccurate history.
+
+   As the number of Unix variants increased during the 1980s, it became
+harder to write programs which could run on all variants.  While it was
+often possible to use `#ifdef' to identify particular systems,
+developers frequently did not have access to every system, and the
+characteristics of some systems changed from version to version.
+
+   By 1992, at least three different approaches had been developed:
+   * The Metaconfig program, by Larry Wall, Harlan Stenn, and Raphael
+     Manfredi.
+
+   * The Cygnus configure script, by K. Richard Pixley, and the gcc
+     configure script, by Richard Stallman.  These use essentially the
+     same approach, and the developers communicated regularly.
+
+   * The autoconf program, by David MacKenzie.
+
+   The Metaconfig program is still used for Perl and a few other
+programs.  It is part of the Dist package.  I do not know if it is
+being developed.
+
+   In 1994, David MacKenzie and others modified autoconf to incorporate
+all the features of Cygnus configure.  Since then, there has been a
+slow but steady conversion of GNU programs from Cygnus configure to
+autoconf. gcc has been converted, eliminating the gcc configure script.
+
+   GNU autoconf was regularly maintained until late 1996.  As of this
+writing in June, 1998, it has no public maintainer.
+
+   Most programs are built using the make program, which requires the
+developer to write Makefiles describing how to build the programs.
+Since most programs are built in pretty much the same way, this led to a
+lot of duplication.
+
+   The X Window system is built using the imake tool, which uses a
+database of rules to eliminate the duplication.  However, building a
+tool which was developed using imake requires that the builder have
+imake installed, violating one of the goals of the GNU system.
+
+   The new BSD make provides a standard library of Makefile fragments,
+which permits developers to write very simple Makefiles.  However, this
+requires that the builder install the new BSD make program.
+
+   In 1994, David MacKenzie wrote the first version of automake, which
+permitted writing a simple build description which was converted into a
+Makefile which could be used by the standard make program.  In 1995, Tom
+Tromey completely rewrote automake in Perl, and he continues to enhance
+it.
+
+   Various free packages built libraries, and by around 1995 several
+included support to build shared libraries on various platforms.
+However, there was no consistent approach.  In early 1996, Gordon
+Matzigkeit began working on libtool, which provided a standardized
+approach to building shared libraries.  This was integrated into
+automake from the start.
+
+   The development of automake and libtool was driven by the GNITS
+project, a group of GNU maintainers who designed standardized tools to
+help meet the GNU coding standards.
+
+\1f
+File: configure.info,  Node: Building,  Prev: History,  Up: Introduction
+
+1.4 Building
+============
+
+Most readers of this document should already know how to build a tool by
+running `configure' and `make'.  This section may serve as a quick
+introduction or reminder.
+
+   Building a tool is normally as simple as running `configure'
+followed by `make'.  You should normally run `configure' from an empty
+directory, using some path to refer to the `configure' script in the
+source directory.  The directory in which you run `configure' is called
+the "object directory".
+
+   In order to use a object directory which is different from the source
+directory, you must be using the GNU version of `make', which has the
+required `VPATH' support.  Despite this restriction, using a different
+object directory is highly recommended:
+   * It keeps the files generated during the build from cluttering up
+     your sources.
+
+   * It permits you to remove the built files by simply removing the
+     entire build directory.
+
+   * It permits you to build from the same sources with several sets of
+     configure options simultaneously.
+
+   If you don't have GNU `make', you will have to run `configure' in
+the source directory.  All GNU packages should support this; in
+particular, GNU packages should not assume the presence of GNU `make'.
+
+   After running `configure', you can build the tools by running `make'.
+
+   To install the tools, run `make install'.  Installing the tools will
+copy the programs and any required support files to the "installation
+directory".  The location of the installation directory is controlled
+by `configure' options, as described below.
+
+   In the Cygnus tree at present, the info files are built and
+installed as a separate step.  To build them, run `make info'.  To
+install them, run `make install-info'. The equivalent html files are
+also built and installed in a separate step. To build the html files,
+run `make html'. To install the html files run `make install-html'.
+
+   All `configure' scripts support a wide variety of options.  The most
+interesting ones are `--with' and `--enable' options which are
+generally specific to particular tools.  You can usually use the
+`--help' option to get a list of interesting options for a particular
+configure script.
+
+   The only generic options you are likely to use are the `--prefix'
+and `--exec-prefix' options.  These options are used to specify the
+installation directory.
+
+   The directory named by the `--prefix' option will hold machine
+independent files such as info files.
+
+   The directory named by the `--exec-prefix' option, which is normally
+a subdirectory of the `--prefix' directory, will hold machine dependent
+files such as executables.
+
+   The default for `--prefix' is `/usr/local'.  The default for
+`--exec-prefix' is the value used for `--prefix'.
+
+   The convention used in Cygnus releases is to use a `--prefix' option
+of `/usr/cygnus/RELEASE', where RELEASE is the name of the release, and
+to use a `--exec-prefix' option of `/usr/cygnus/RELEASE/H-HOST', where
+HOST is the configuration name of the host system (*note Configuration
+Names::).
+
+   Do not use either the source or the object directory as the
+installation directory.  That will just lead to confusion.
+
+\1f
+File: configure.info,  Node: Getting Started,  Next: Files,  Prev: Introduction,  Up: Top
+
+2 Getting Started
+*****************
+
+To start using the GNU configure and build system with your software
+package, you must write three files, and you must run some tools to
+manually generate additional files.
+
+* Menu:
+
+* Write configure.in::         Write configure.in.
+* Write Makefile.am::          Write Makefile.am.
+* Write acconfig.h::           Write acconfig.h.
+* Generate files::             Generate files.
+* Getting Started Example::    Example.
+
+\1f
+File: configure.info,  Node: Write configure.in,  Next: Write Makefile.am,  Up: Getting Started
+
+2.1 Write configure.in
+======================
+
+You must first write the file `configure.in'.  This is an autoconf
+input file, and the autoconf manual describes in detail what this file
+should look like.
+
+   You will write tests in your `configure.in' file to check for
+conditions that may change from one system to another, such as the
+presence of particular header files or functions.
+
+   For example, not all systems support the `gettimeofday' function.
+If you want to use the `gettimeofday' function when it is available,
+and to use some other function when it is not, you would check for this
+by putting `AC_CHECK_FUNCS(gettimeofday)' in `configure.in'.
+
+   When the configure script is run at build time, this will arrange to
+define the preprocessor macro `HAVE_GETTIMEOFDAY' to the value 1 if the
+`gettimeofday' function is available, and to not define the macro at
+all if the function is not available.  Your code can then use `#ifdef'
+to test whether it is safe to call `gettimeofday'.
+
+   If you have an existing body of code, the `autoscan' program may
+help identify potential portability problems, and hence configure tests
+that you will want to use.  *Note Invoking autoscan: (autoconf)Invoking
+autoscan.
+
+   Another handy tool for an existing body of code is `ifnames'.  This
+will show you all the preprocessor conditionals that the code already
+uses.  *Note Invoking ifnames: (autoconf)Invoking ifnames.
+
+   Besides the portability tests which are specific to your particular
+package, every `configure.in' file should contain the following macros.
+
+`AC_INIT'
+     This macro takes a single argument, which is the name of a file in
+     your package.  For example, `AC_INIT(foo.c)'.
+
+`AC_PREREQ(VERSION)'
+     This macro is optional.  It may be used to indicate the version of
+     `autoconf' that you are using.  This will prevent users from
+     running an earlier version of `autoconf' and perhaps getting an
+     invalid `configure' script.  For example, `AC_PREREQ(2.12)'.
+
+`AM_INIT_AUTOMAKE'
+     This macro takes two arguments: the name of the package, and a
+     version number.  For example, `AM_INIT_AUTOMAKE(foo, 1.0)'.  (This
+     macro is not needed if you are not using automake).
+
+`AM_CONFIG_HEADER'
+     This macro names the header file which will hold the preprocessor
+     macro definitions at run time.  Normally this should be
+     `config.h'.  Your sources would then use `#include "config.h"' to
+     include it.
+
+     This macro may optionally name the input file for that header
+     file; by default, this is `config.h.in', but that file name works
+     poorly on DOS filesystems.  Therefore, it is often better to name
+     it explicitly as `config.in'.
+
+     This is what you should normally put in `configure.in':
+          AM_CONFIG_HEADER(config.h:config.in)
+
+     (If you are not using automake, use `AC_CONFIG_HEADER' rather than
+     `AM_CONFIG_HEADER').
+
+`AM_MAINTAINER_MODE'
+     This macro always appears in Cygnus configure scripts.  Other
+     programs may or may not use it.
+
+     If this macro is used, the `--enable-maintainer-mode' option is
+     required to enable automatic rebuilding of generated files used by
+     the configure system.  This of course requires that developers be
+     aware of, and use, that option.
+
+     If this macro is not used, then the generated files will always be
+     rebuilt automatically.  This will cause problems if the wrong
+     versions of autoconf, automake, or others are in the builder's
+     `PATH'.
+
+     (If you are not using automake, you do not need to use this macro).
+
+`AC_EXEEXT'
+     Either this macro or `AM_EXEEXT' always appears in Cygnus configure
+     files.  Other programs may or may not use one of them.
+
+     This macro looks for the executable suffix used on the host
+     system.  On Unix systems, this is the empty string.  On Windows
+     systems, this is `.exe'.  This macro directs automake to use the
+     executable suffix as appropriate when creating programs.  This
+     macro does not take any arguments.
+
+     The `AC_EXEEXT' form is new, and is part of a Cygnus patch to
+     autoconf to support compiling with Visual C++.  Older programs use
+     `AM_EXEEXT' instead.
+
+     (Programs which do not use automake use neither `AC_EXEEXT' nor
+     `AM_EXEEXT').
+
+`AC_PROG_CC'
+     If you are writing C code, you will normally want to use this
+     macro.  It locates the C compiler to use.  It does not take any
+     arguments.
+
+     However, if this `configure.in' file is for a library which is to
+     be compiled by a cross compiler which may not fully work, then you
+     will not want to use `AC_PROG_CC'.  Instead, you will want to use a
+     variant which does not call the macro `AC_PROG_CC_WORKS'.  Examples
+     can be found in various `configure.in' files for libraries that are
+     compiled with cross compilers, such as libiberty or libgloss.
+     This is essentially a bug in autoconf, and there will probably be
+     a better workaround at some point.
+
+`AC_PROG_CXX'
+     If you are writing C++ code, you will want to use this macro.  It
+     locates the C++ compiler to use.  It does not take any arguments.
+     The same cross compiler comments apply as for `AC_PROG_CC'.
+
+`AM_PROG_LIBTOOL'
+     If you want to build libraries, and you want to permit them to be
+     shared, or you want to link against libraries which were built
+     using libtool, then you will need this macro.  This macro is
+     required in order to use libtool.
+
+     By default, this will cause all libraries to be built as shared
+     libraries.  To prevent this-to change the default-use
+     `AM_DISABLE_SHARED' before `AM_PROG_LIBTOOL'.  The configure
+     options `--enable-shared' and `--disable-shared' may be used to
+     override the default at build time.
+
+`AC_DEFINE(_GNU_SOURCE)'
+     GNU packages should normally include this line before any other
+     feature tests.  This defines the macro `_GNU_SOURCE' when
+     compiling, which directs the libc header files to provide the
+     standard GNU system interfaces including all GNU extensions.  If
+     this macro is not defined, certain GNU extensions may not be
+     available.
+
+`AC_OUTPUT'
+     This macro takes a list of file names which the configure process
+     should produce.  This is normally a list of one or more `Makefile'
+     files in different directories.  If your package lives entirely in
+     a single directory, you would use simply `AC_OUTPUT(Makefile)'.
+     If you also have, for example, a `lib' subdirectory, you would use
+     `AC_OUTPUT(Makefile lib/Makefile)'.
+
+   If you want to use locally defined macros in your `configure.in'
+file, then you will need to write a `acinclude.m4' file which defines
+them (if not using automake, this file is called `aclocal.m4').
+Alternatively, you can put separate macros in an `m4' subdirectory, and
+put `ACLOCAL_AMFLAGS = -I m4' in your `Makefile.am' file so that the
+`aclocal' program will be able to find them.
+
+   The different macro prefixes indicate which tool defines the macro.
+Macros which start with `AC_' are part of autoconf.  Macros which start
+with `AM_' are provided by automake or libtool.
+
+\1f
+File: configure.info,  Node: Write Makefile.am,  Next: Write acconfig.h,  Prev: Write configure.in,  Up: Getting Started
+
+2.2 Write Makefile.am
+=====================
+
+You must write the file `Makefile.am'.  This is an automake input file,
+and the automake manual describes in detail what this file should look
+like.
+
+   The automake commands in `Makefile.am' mostly look like variable
+assignments in a `Makefile'.  automake recognizes special variable
+names, and automatically add make rules to the output as needed.
+
+   There will be one `Makefile.am' file for each directory in your
+package.  For each directory with subdirectories, the `Makefile.am'
+file should contain the line
+     SUBDIRS = DIR DIR ...
+   where each DIR is the name of a subdirectory.
+
+   For each `Makefile.am', there should be a corresponding `Makefile'
+in the `AC_OUTPUT' macro in `configure.in'.
+
+   Every `Makefile.am' written at Cygnus should contain the line
+     AUTOMAKE_OPTIONS = cygnus
+   This puts automake into Cygnus mode.  See the automake manual for
+details.
+
+   You may to include the version number of `automake' that you are
+using on the `AUTOMAKE_OPTIONS' line.  For example,
+     AUTOMAKE_OPTIONS = cygnus 1.3
+   This will prevent users from running an earlier version of
+`automake' and perhaps getting an invalid `Makefile.in'.
+
+   If your package builds a program, then in the directory where that
+program is built you will normally want a line like
+     bin_PROGRAMS = PROGRAM
+   where PROGRAM is the name of the program.  You will then want a line
+like
+     PROGRAM_SOURCES = FILE FILE ...
+   where each FILE is the name of a source file to link into the
+program (e.g., `foo.c').
+
+   If your package builds a library, and you do not want the library to
+ever be built as a shared library, then in the directory where that
+library is built you will normally want a line like
+     lib_LIBRARIES = libNAME.a
+   where `libNAME.a' is the name of the library.  You will then want a
+line like
+     libNAME_a_SOURCES = FILE FILE ...
+   where each FILE is the name of a source file to add to the library.
+
+   If your package builds a library, and you want to permit building the
+library as a shared library, then in the directory where that library is
+built you will normally want a line like
+     lib_LTLIBRARIES = libNAME.la
+   The use of `LTLIBRARIES', and the `.la' extension, indicate a
+library to be built using libtool.  As usual, you will then want a line
+like
+     libNAME_la_SOURCES = FILE FILE ...
+
+   The strings `bin' and `lib' that appear above in `bin_PROGRAMS' and
+`lib_LIBRARIES' are not arbitrary.  They refer to particular
+directories, which may be set by the `--bindir' and `--libdir' options
+to `configure'.  If those options are not used, the default values are
+based on the `--prefix' or `--exec-prefix' options to `configure'.  It
+is possible to use other names if the program or library should be
+installed in some other directory.
+
+   The `Makefile.am' file may also contain almost anything that may
+appear in a normal `Makefile'.  automake also supports many other
+special variables, as well as conditionals.
+
+   See the automake manual for more information.
+
+\1f
+File: configure.info,  Node: Write acconfig.h,  Next: Generate files,  Prev: Write Makefile.am,  Up: Getting Started
+
+2.3 Write acconfig.h
+====================
+
+If you are generating a portability header file, (i.e., you are using
+`AM_CONFIG_HEADER' in `configure.in'), then you will have to write a
+`acconfig.h' file.  It will have to contain the following lines.
+
+     /* Name of package.  */
+     #undef PACKAGE
+
+     /* Version of package.  */
+     #undef VERSION
+
+   This requirement is really a bug in the system, and the requirement
+may be eliminated at some later date.
+
+   The `acconfig.h' file will also similar comment and `#undef' lines
+for any unusual macros in the `configure.in' file, including any macro
+which appears in a `AC_DEFINE' macro.
+
+   In particular, if you are writing a GNU package and therefore include
+`AC_DEFINE(_GNU_SOURCE)' in `configure.in' as suggested above, you will
+need lines like this in `acconfig.h':
+     /* Enable GNU extensions.  */
+     #undef _GNU_SOURCE
+
+   Normally the `autoheader' program will inform you of any such
+requirements by printing an error message when it is run.  However, if
+you do anything particular odd in your `configure.in' file, you will
+have to make sure that the right entries appear in `acconfig.h', since
+otherwise the results of the tests may not be available in the
+`config.h' file which your code will use.
+
+   (Thee `PACKAGE' and `VERSION' lines are not required if you are not
+using automake, and in that case you may not need a `acconfig.h' file
+at all).
+
+\1f
+File: configure.info,  Node: Generate files,  Next: Getting Started Example,  Prev: Write acconfig.h,  Up: Getting Started
+
+2.4 Generate files
+==================
+
+Once you have written `configure.in', `Makefile.am', `acconfig.h', and
+possibly `acinclude.m4', you must use autoconf and automake programs to
+produce the first versions of the generated files.  This is done by
+executing the following sequence of commands.
+
+     aclocal
+     autoconf
+     autoheader
+     automake
+
+   The `aclocal' and `automake' commands are part of the automake
+package, and the `autoconf' and `autoheader' commands are part of the
+autoconf package.
+
+   If you are using a `m4' subdirectory for your macros, you will need
+to use the `-I m4' option when you run `aclocal'.
+
+   If you are not using the Cygnus tree, use the `-a' option when
+running `automake' command in order to copy the required support files
+into your source directory.
+
+   If you are using libtool, you must build and install the libtool
+package with the same `--prefix' and `--exec-prefix' options as you
+used with the autoconf and automake packages.  You must do this before
+running any of the above commands.  If you are not using the Cygnus
+tree, you will need to run the `libtoolize' program to copy the libtool
+support files into your directory.
+
+   Once you have managed to run these commands without getting any
+errors, you should create a new empty directory, and run the `configure'
+script which will have been created by `autoconf' with the
+`--enable-maintainer-mode' option.  This will give you a set of
+Makefiles which will include rules to automatically rebuild all the
+generated files.
+
+   After doing that, whenever you have changed some of the input files
+and want to regenerated the other files, go to your object directory
+and run `make'.  Doing this is more reliable than trying to rebuild the
+files manually, because there are complex order dependencies and it is
+easy to forget something.
+
+\1f
+File: configure.info,  Node: Getting Started Example,  Prev: Generate files,  Up: Getting Started
+
+2.5 Example
+===========
+
+Let's consider a trivial example.
+
+   Suppose we want to write a simple version of `touch'.  Our program,
+which we will call `poke', will take a single file name argument, and
+use the `utime' system call to set the modification and access times of
+the file to the current time.  We want this program to be highly
+portable.
+
+   We'll first see what this looks like without using autoconf and
+automake, and then see what it looks like with them.
+
+* Menu:
+
+* Getting Started Example 1::          First Try.
+* Getting Started Example 2::          Second Try.
+* Getting Started Example 3::          Third Try.
+* Generate Files in Example::          Generate Files.
+
+\1f
+File: configure.info,  Node: Getting Started Example 1,  Next: Getting Started Example 2,  Up: Getting Started Example
+
+2.5.1 First Try
+---------------
+
+Here is our first try at `poke.c'.  Note that we've written it without
+ANSI/ISO C prototypes, since we want it to be highly portable.
+
+     #include <stdio.h>
+     #include <stdlib.h>
+     #include <sys/types.h>
+     #include <utime.h>
+
+     int
+     main (argc, argv)
+          int argc;
+          char **argv;
+     {
+       if (argc != 2)
+         {
+           fprintf (stderr, "Usage: poke file\n");
+           exit (1);
+         }
+
+       if (utime (argv[1], NULL) < 0)
+         {
+           perror ("utime");
+           exit (1);
+         }
+
+       exit (0);
+     }
+
+   We also write a simple `Makefile'.
+
+     CC = gcc
+     CFLAGS = -g -O2
+
+     all: poke
+
+     poke: poke.o
+       $(CC) -o poke $(CFLAGS) $(LDFLAGS) poke.o
+
+   So far, so good.
+
+   Unfortunately, there are a few problems.
+
+   On older Unix systems derived from BSD 4.3, the `utime' system call
+does not accept a second argument of `NULL'.  On those systems, we need
+to pass a pointer to `struct utimbuf' structure.  Unfortunately, even
+older systems don't define that structure; on those systems, we need to
+pass an array of two `long' values.
+
+   The header file `stdlib.h' was invented by ANSI C, and older systems
+don't have a copy.  We included it above to get a declaration of `exit'.
+
+   We can find some of these portability problems by running
+`autoscan', which will create a `configure.scan' file which we can use
+as a prototype for our `configure.in' file.  I won't show the output,
+but it will notice the potential problems with `utime' and `stdlib.h'.
+
+   In our `Makefile', we don't provide any way to install the program.
+This doesn't matter much for such a simple example, but a real program
+will need an `install' target.  For that matter, we will also want a
+`clean' target.
+
+\1f
+File: configure.info,  Node: Getting Started Example 2,  Next: Getting Started Example 3,  Prev: Getting Started Example 1,  Up: Getting Started Example
+
+2.5.2 Second Try
+----------------
+
+Here is our second try at this program.
+
+   We modify `poke.c' to use preprocessor macros to control what
+features are available.  (I've cheated a bit by using the same macro
+names which autoconf will use).
+
+     #include <stdio.h>
+
+     #ifdef STDC_HEADERS
+     #include <stdlib.h>
+     #endif
+
+     #include <sys/types.h>
+
+     #ifdef HAVE_UTIME_H
+     #include <utime.h>
+     #endif
+
+     #ifndef HAVE_UTIME_NULL
+
+     #include <time.h>
+
+     #ifndef HAVE_STRUCT_UTIMBUF
+
+     struct utimbuf
+     {
+       long actime;
+       long modtime;
+     };
+
+     #endif
+
+     static int
+     utime_now (file)
+          char *file;
+     {
+       struct utimbuf now;
+
+       now.actime = now.modtime = time (NULL);
+       return utime (file, &now);
+     }
+
+     #define utime(f, p) utime_now (f)
+
+     #endif /* HAVE_UTIME_NULL  */
+
+     int
+     main (argc, argv)
+          int argc;
+          char **argv;
+     {
+       if (argc != 2)
+         {
+           fprintf (stderr, "Usage: poke file\n");
+           exit (1);
+         }
+
+       if (utime (argv[1], NULL) < 0)
+         {
+           perror ("utime");
+           exit (1);
+         }
+
+       exit (0);
+     }
+
+   Here is the associated `Makefile'.  We've added support for the
+preprocessor flags we use.  We've also added `install' and `clean'
+targets.
+
+     # Set this to your installation directory.
+     bindir = /usr/local/bin
+
+     # Uncomment this if you have the standard ANSI/ISO C header files.
+     # STDC_HDRS = -DSTDC_HEADERS
+
+     # Uncomment this if you have utime.h.
+     # UTIME_H = -DHAVE_UTIME_H
+
+     # Uncomment this if utime (FILE, NULL) works on your system.
+     # UTIME_NULL = -DHAVE_UTIME_NULL
+
+     # Uncomment this if struct utimbuf is defined in utime.h.
+     # UTIMBUF = -DHAVE_STRUCT_UTIMBUF
+
+     CC = gcc
+     CFLAGS = -g -O2
+
+     ALL_CFLAGS = $(STDC_HDRS) $(UTIME_H) $(UTIME_NULL) $(UTIMBUF) $(CFLAGS)
+
+     all: poke
+
+     poke: poke.o
+       $(CC) -o poke $(ALL_CFLAGS) $(LDFLAGS) poke.o
+
+     .c.o:
+       $(CC) -c $(ALL_CFLAGS) poke.c
+
+     install: poke
+       cp poke $(bindir)/poke
+
+     clean:
+       rm poke poke.o
+
+   Some problems with this approach should be clear.
+
+   Users who want to compile poke will have to know how `utime' works
+on their systems, so that they can uncomment the `Makefile' correctly.
+
+   The installation is done using `cp', but many systems have an
+`install' program which may be used, and which supports optional
+features such as stripping debugging information out of the installed
+binary.
+
+   The use of `Makefile' variables like `CC', `CFLAGS' and `LDFLAGS'
+follows the requirements of the GNU standards.  This is convenient for
+all packages, since it reduces surprises for users.  However, it is
+easy to get the details wrong, and wind up with a slightly nonstandard
+distribution.
+
+\1f
+File: configure.info,  Node: Getting Started Example 3,  Next: Generate Files in Example,  Prev: Getting Started Example 2,  Up: Getting Started Example
+
+2.5.3 Third Try
+---------------
+
+For our third try at this program, we will write a `configure.in'
+script to discover the configuration features on the host system, rather
+than requiring the user to edit the `Makefile'.  We will also write a
+`Makefile.am' rather than a `Makefile'.
+
+   The only change to `poke.c' is to add a line at the start of the
+file:
+     #include "config.h"
+
+   The new `configure.in' file is as follows.
+
+     AC_INIT(poke.c)
+     AM_INIT_AUTOMAKE(poke, 1.0)
+     AM_CONFIG_HEADER(config.h:config.in)
+     AC_PROG_CC
+     AC_HEADER_STDC
+     AC_CHECK_HEADERS(utime.h)
+     AC_EGREP_HEADER(utimbuf, utime.h, AC_DEFINE(HAVE_STRUCT_UTIMBUF))
+     AC_FUNC_UTIME_NULL
+     AC_OUTPUT(Makefile)
+
+   The first four macros in this file, and the last one, were described
+above; see *Note Write configure.in::.  If we omit these macros, then
+when we run `automake' we will get a reminder that we need them.
+
+   The other macros are standard autoconf macros.
+
+`AC_HEADER_STDC'
+     Check for standard C headers.
+
+`AC_CHECK_HEADERS'
+     Check whether a particular header file exists.
+
+`AC_EGREP_HEADER'
+     Check for a particular string in a particular header file, in this
+     case checking for `utimbuf' in `utime.h'.
+
+`AC_FUNC_UTIME_NULL'
+     Check whether `utime' accepts a NULL second argument to set the
+     file change time to the current time.
+
+   See the autoconf manual for a more complete description.
+
+   The new `Makefile.am' file is as follows.  Note how simple this is
+compared to our earlier `Makefile'.
+
+     bin_PROGRAMS = poke
+
+     poke_SOURCES = poke.c
+
+   This means that we should build a single program name `poke'.  It
+should be installed in the binary directory, which we called `bindir'
+earlier.  The program `poke' is built from the source file `poke.c'.
+
+   We must also write a `acconfig.h' file.  Besides `PACKAGE' and
+`VERSION', which must be mentioned for all packages which use automake,
+we must include `HAVE_STRUCT_UTIMBUF', since we mentioned it in an
+`AC_DEFINE'.
+
+     /* Name of package.  */
+     #undef PACKAGE
+
+     /* Version of package.  */
+     #undef VERSION
+
+     /* Whether utime.h defines struct utimbuf.  */
+     #undef HAVE_STRUCT_UTIMBUF
+
+\1f
+File: configure.info,  Node: Generate Files in Example,  Prev: Getting Started Example 3,  Up: Getting Started Example
+
+2.5.4 Generate Files
+--------------------
+
+We must now generate the other files, using the following commands.
+
+     aclocal
+     autoconf
+     autoheader
+     automake
+
+   When we run `autoheader', it will remind us of any macros we forgot
+to add to `acconfig.h'.
+
+   When we run `automake', it will want to add some files to our
+distribution.  It will add them automatically if we use the
+`--add-missing' option.
+
+   By default, `automake' will run in GNU mode, which means that it
+will want us to create certain additional files; as of this writing, it
+will want `NEWS', `README', `AUTHORS', and `ChangeLog', all of which
+are files which should appear in a standard GNU distribution.  We can
+either add those files, or run `automake' with the `--foreign' option.
+
+   Running these tools will generate the following files, all of which
+are described in the next chapter.
+
+   * `aclocal.m4'
+
+   * `configure'
+
+   * `config.in'
+
+   * `Makefile.in'
+
+   * `stamp-h.in'
+
+\1f
+File: configure.info,  Node: Files,  Next: Configuration Names,  Prev: Getting Started,  Up: Top
+
+3 Files
+*******
+
+As was seen in the previous chapter, the GNU configure and build system
+uses a number of different files.  The developer must write a few files.
+The others are generated by various tools.
+
+   The system is rather flexible, and can be used in many different
+ways.  In describing the files that it uses, I will describe the common
+case, and mention some other cases that may arise.
+
+* Menu:
+
+* Developer Files::            Developer Files.
+* Build Files::                        Build Files.
+* Support Files::              Support Files.
+
+\1f
+File: configure.info,  Node: Developer Files,  Next: Build Files,  Up: Files
+
+3.1 Developer Files
+===================
+
+This section describes the files written or generated by the developer
+of a package.
+
+* Menu:
+
+* Developer Files Picture::    Developer Files Picture.
+* Written Developer Files::    Written Developer Files.
+* Generated Developer Files::  Generated Developer Files.
+
+\1f
+File: configure.info,  Node: Developer Files Picture,  Next: Written Developer Files,  Up: Developer Files
+
+3.1.1 Developer Files Picture
+-----------------------------
+
+Here is a picture of the files which are written by the developer, the
+generated files which would be included with a complete source
+distribution, and the tools which create those files.  The file names
+are plain text and the tool names are enclosed by `*' characters (e.g.,
+`autoheader' is the name of a tool, not the name of a file).
+
+   acconfig.h       configure.in                 Makefile.am
+       |                |                           |
+       |  --------------+----------------------     |
+       |  |             |                     |     |
+       v  v             |    acinclude.m4     |     |
+   *autoheader*         |         |           v     v
+       |                |         v      --->*automake*
+       v                |--->*aclocal*   |       |
+   config.in            |         |      |       v
+                        |         v      |   Makefile.in
+                        |    aclocal.m4---
+                        |     |
+                        v     v
+                       *autoconf*
+                           |
+                           v
+                       configure
+
+\1f
+File: configure.info,  Node: Written Developer Files,  Next: Generated Developer Files,  Prev: Developer Files Picture,  Up: Developer Files
+
+3.1.2 Written Developer Files
+-----------------------------
+
+The following files would be written by the developer.
+
+`configure.in'
+     This is the configuration script.  This script contains
+     invocations of autoconf macros.  It may also contain ordinary
+     shell script code.  This file will contain feature tests for
+     portability issues.  The last thing in the file will normally be
+     an `AC_OUTPUT' macro listing which files to create when the
+     builder runs the configure script.  This file is always required
+     when using the GNU configure system.  *Note Write configure.in::.
+
+`Makefile.am'
+     This is the automake input file.  It describes how the code should
+     be built.  It consists of definitions of automake variables.  It
+     may also contain ordinary Makefile targets.  This file is only
+     needed when using automake (newer tools normally use automake, but
+     there are still older tools which have not been converted, in
+     which the developer writes `Makefile.in' directly).  *Note Write
+     Makefile.am::.
+
+`acconfig.h'
+     When the configure script creates a portability header file, by
+     using `AM_CONFIG_HEADER' (or, if not using automake,
+     `AC_CONFIG_HEADER'), this file is used to describe macros which are
+     not recognized by the `autoheader' command.  This is normally a
+     fairly uninteresting file, consisting of a collection of `#undef'
+     lines with comments.  Normally any call to `AC_DEFINE' in
+     `configure.in' will require a line in this file. *Note Write
+     acconfig.h::.
+
+`acinclude.m4'
+     This file is not always required.  It defines local autoconf
+     macros.  These macros may then be used in `configure.in'.  If you
+     don't need any local autoconf macros, then you don't need this
+     file at all.  In fact, in general, you never need local autoconf
+     macros, since you can put everything in `configure.in', but
+     sometimes a local macro is convenient.
+
+     Newer tools may omit `acinclude.m4', and instead use a
+     subdirectory, typically named `m4', and define `ACLOCAL_AMFLAGS =
+     -I m4' in `Makefile.am' to force `aclocal' to look there for macro
+     definitions.  The macro definitions are then placed in separate
+     files in that directory.
+
+     The `acinclude.m4' file is only used when using automake; in older
+     tools, the developer writes `aclocal.m4' directly, if it is needed.
+
+\1f
+File: configure.info,  Node: Generated Developer Files,  Prev: Written Developer Files,  Up: Developer Files
+
+3.1.3 Generated Developer Files
+-------------------------------
+
+The following files would be generated by the developer.
+
+   When using automake, these files are normally not generated manually
+after the first time.  Instead, the generated `Makefile' contains rules
+to automatically rebuild the files as required.  When
+`AM_MAINTAINER_MODE' is used in `configure.in' (the normal case in
+Cygnus code), the automatic rebuilding rules will only be defined if
+you configure using the `--enable-maintainer-mode' option.
+
+   When using automatic rebuilding, it is important to ensure that all
+the various tools have been built and installed on your `PATH'.  Using
+automatic rebuilding is highly recommended, so much so that I'm not
+going to explain what you have to do if you don't use it.
+
+`configure'
+     This is the configure script which will be run when building the
+     package.  This is generated by `autoconf' from `configure.in' and
+     `aclocal.m4'.  This is a shell script.
+
+`Makefile.in'
+     This is the file which the configure script will turn into the
+     `Makefile' at build time.  This file is generated by `automake'
+     from `Makefile.am'.  If you aren't using automake, you must write
+     this file yourself.  This file is pretty much a normal `Makefile',
+     with some configure substitutions for certain variables.
+
+`aclocal.m4'
+     This file is created by the `aclocal' program, based on the
+     contents of `configure.in' and `acinclude.m4' (or, as noted in the
+     description of `acinclude.m4' above, on the contents of an `m4'
+     subdirectory).  This file contains definitions of autoconf macros
+     which `autoconf' will use when generating the file `configure'.
+     These autoconf macros may be defined by you in `acinclude.m4' or
+     they may be defined by other packages such as automake, libtool or
+     gettext.  If you aren't using automake, you will normally write
+     this file yourself; in that case, if `configure.in' uses only
+     standard autoconf macros, this file will not be needed at all.
+
+`config.in'
+     This file is created by `autoheader' based on `acconfig.h' and
+     `configure.in'.  At build time, the configure script will define
+     some of the macros in it to create `config.h', which may then be
+     included by your program.  This permits your C code to use
+     preprocessor conditionals to change its behaviour based on the
+     characteristics of the host system.  This file may also be called
+     `config.h.in'.
+
+`stamp.h-in'
+     This rather uninteresting file, which I omitted from the picture,
+     is generated by `automake'.  It always contains the string
+     `timestamp'.  It is used as a timestamp file indicating whether
+     `config.in' is up to date.  Using a timestamp file means that
+     `config.in' can be marked as up to date without actually changing
+     its modification time.  This is useful since `config.in' depends
+     upon `configure.in', but it is easy to change `configure.in' in a
+     way which does not affect `config.in'.
+
+\1f
+File: configure.info,  Node: Build Files,  Next: Support Files,  Prev: Developer Files,  Up: Files
+
+3.2 Build Files
+===============
+
+This section describes the files which are created at configure and
+build time.  These are the files which somebody who builds the package
+will see.
+
+   Of course, the developer will also build the package.  The
+distinction between developer files and build files is not that the
+developer does not see the build files, but that somebody who only
+builds the package does not have to worry about the developer files.
+
+* Menu:
+
+* Build Files Picture::                Build Files Picture.
+* Build Files Description::    Build Files Description.
+
+\1f
+File: configure.info,  Node: Build Files Picture,  Next: Build Files Description,  Up: Build Files
+
+3.2.1 Build Files Picture
+-------------------------
+
+Here is a picture of the files which will be created at build time.
+`config.status' is both a created file and a shell script which is run
+to create other files, and the picture attempts to show that.
+
+   config.in        *configure*      Makefile.in
+      |                  |               |
+      |                  v               |
+      |             config.status        |
+      |                  |               |
+   *config.status*<======+==========>*config.status*
+      |                                  |
+      v                                  v
+   config.h                          Makefile
+
+\1f
+File: configure.info,  Node: Build Files Description,  Prev: Build Files Picture,  Up: Build Files
+
+3.2.2 Build Files Description
+-----------------------------
+
+This is a description of the files which are created at build time.
+
+`config.status'
+     The first step in building a package is to run the `configure'
+     script.  The `configure' script will create the file
+     `config.status', which is itself a shell script.  When you first
+     run `configure', it will automatically run `config.status'.  An
+     `Makefile' derived from an automake generated `Makefile.in' will
+     contain rules to automatically run `config.status' again when
+     necessary to recreate certain files if their inputs change.
+
+`Makefile'
+     This is the file which make will read to build the program.  The
+     `config.status' script will transform `Makefile.in' into
+     `Makefile'.
+
+`config.h'
+     This file defines C preprocessor macros which C code can use to
+     adjust its behaviour on different systems.  The `config.status'
+     script will transform `config.in' into `config.h'.
+
+`config.cache'
+     This file did not fit neatly into the picture, and I omitted it.
+     It is used by the `configure' script to cache results between
+     runs.  This can be an important speedup.  If you modify
+     `configure.in' in such a way that the results of old tests should
+     change (perhaps you have added a new library to `LDFLAGS'), then
+     you will have to remove `config.cache' to force the tests to be
+     rerun.
+
+     The autoconf manual explains how to set up a site specific cache
+     file.  This can speed up running `configure' scripts on your
+     system.
+
+`stamp.h'
+     This file, which I omitted from the picture, is similar to
+     `stamp-h.in'.  It is used as a timestamp file indicating whether
+     `config.h' is up to date.  This is useful since `config.h' depends
+     upon `config.status', but it is easy for `config.status' to change
+     in a way which does not affect `config.h'.
+
+\1f
+File: configure.info,  Node: Support Files,  Prev: Build Files,  Up: Files
+
+3.3 Support Files
+=================
+
+The GNU configure and build system requires several support files to be
+included with your distribution.  You do not normally need to concern
+yourself with these.  If you are using the Cygnus tree, most are already
+present.  Otherwise, they will be installed with your source by
+`automake' (with the `--add-missing' option) and `libtoolize'.
+
+   You don't have to put the support files in the top level directory.
+You can put them in a subdirectory, and use the `AC_CONFIG_AUX_DIR'
+macro in `configure.in' to tell `automake' and the `configure' script
+where they are.
+
+   In this section, I describe the support files, so that you can know
+what they are and why they are there.
+
+`ABOUT-NLS'
+     Added by automake if you are using gettext.  This is a
+     documentation file about the gettext project.
+
+`ansi2knr.c'
+     Used by an automake generated `Makefile' if you put `ansi2knr' in
+     `AUTOMAKE_OPTIONS' in `Makefile.am'.  This permits compiling ANSI
+     C code with a K&R C compiler.
+
+`ansi2knr.1'
+     The man page which goes with `ansi2knr.c'.
+
+`config.guess'
+     A shell script which determines the configuration name for the
+     system on which it is run.
+
+`config.sub'
+     A shell script which canonicalizes a configuration name entered by
+     a user.
+
+`elisp-comp'
+     Used to compile Emacs LISP files.
+
+`install-sh'
+     A shell script which installs a program.  This is used if the
+     configure script can not find an install binary.
+
+`ltconfig'
+     Used by libtool.  This is a shell script which configures libtool
+     for the particular system on which it is used.
+
+`ltmain.sh'
+     Used by libtool.  This is the actual libtool script which is used,
+     after it is configured by `ltconfig' to build a library.
+
+`mdate-sh'
+     A shell script used by an automake generated `Makefile' to pretty
+     print the modification time of a file.  This is used to maintain
+     version numbers for texinfo files.
+
+`missing'
+     A shell script used if some tool is missing entirely.  This is
+     used by an automake generated `Makefile' to avoid certain sorts of
+     timestamp problems.
+
+`mkinstalldirs'
+     A shell script which creates a directory, including all parent
+     directories.  This is used by an automake generated `Makefile'
+     during installation.
+
+`texinfo.tex'
+     Required if you have any texinfo files.  This is used when
+     converting Texinfo files into DVI using `texi2dvi' and TeX.
+
+`ylwrap'
+     A shell script used by an automake generated `Makefile' to run
+     programs like `bison', `yacc', `flex', and `lex'.  These programs
+     default to producing output files with a fixed name, and the
+     `ylwrap' script runs them in a subdirectory to avoid file name
+     conflicts when using a parallel make program.
+
+\1f
+File: configure.info,  Node: Configuration Names,  Next: Cross Compilation Tools,  Prev: Files,  Up: Top
+
+4 Configuration Names
+*********************
+
+The GNU configure system names all systems using a "configuration
+name".  All such names used to be triplets (they may now contain four
+parts in certain cases), and the term "configuration triplet" is still
+seen.
+
+* Menu:
+
+* Configuration Name Definition::      Configuration Name Definition.
+* Using Configuration Names::          Using Configuration Names.
+
+\1f
+File: configure.info,  Node: Configuration Name Definition,  Next: Using Configuration Names,  Up: Configuration Names
+
+4.1 Configuration Name Definition
+=================================
+
+This is a string of the form CPU-MANUFACTURER-OPERATING_SYSTEM.  In
+some cases, this is extended to a four part form:
+CPU-MANUFACTURER-KERNEL-OPERATING_SYSTEM.
+
+   When using a configuration name in a configure option, it is normally
+not necessary to specify an entire name.  In particular, the
+MANUFACTURER field is often omitted, leading to strings such as
+`i386-linux' or `sparc-sunos'.  The shell script `config.sub' will
+translate these shortened strings into the canonical form.  autoconf
+will arrange for `config.sub' to be run automatically when it is needed.
+
+   The fields of a configuration name are as follows:
+
+CPU
+     The type of processor.  This is typically something like `i386' or
+     `sparc'.  More specific variants are used as well, such as
+     `mipsel' to indicate a little endian MIPS processor.
+
+MANUFACTURER
+     A somewhat freeform field which indicates the manufacturer of the
+     system.  This is often simply `unknown'.  Other common strings are
+     `pc' for an IBM PC compatible system, or the name of a workstation
+     vendor, such as `sun'.
+
+OPERATING_SYSTEM
+     The name of the operating system which is run on the system.  This
+     will be something like `solaris2.5' or `irix6.3'.  There is no
+     particular restriction on the version number, and strings like
+     `aix4.1.4.0' are seen.  For an embedded system, which has no
+     operating system, this field normally indicates the type of object
+     file format, such as `elf' or `coff'.
+
+KERNEL
+     This is used mainly for GNU/Linux.  A typical GNU/Linux
+     configuration name is `i586-pc-linux-gnulibc1'.  In this case the
+     kernel, `linux', is separated from the operating system,
+     `gnulibc1'.
+
+   The shell script `config.guess' will normally print the correct
+configuration name for the system on which it is run.  It does by
+running `uname' and by examining other characteristics of the system.
+
+   Because `config.guess' can normally determine the configuration name
+for a machine, it is normally only necessary to specify a configuration
+name when building a cross-compiler or when building using a
+cross-compiler.
+
+\1f
+File: configure.info,  Node: Using Configuration Names,  Prev: Configuration Name Definition,  Up: Configuration Names
+
+4.2 Using Configuration Names
+=============================
+
+A configure script will sometimes have to make a decision based on a
+configuration name.  You will need to do this if you have to compile
+code differently based on something which can not be tested using a
+standard autoconf feature test.
+
+   It is normally better to test for particular features, rather than to
+test for a particular system.  This is because as Unix evolves,
+different systems copy features from one another.  Even if you need to
+determine whether the feature is supported based on a configuration
+name, you should define a macro which describes the feature, rather than
+defining a macro which describes the particular system you are on.
+
+   Testing for a particular system is normally done using a case
+statement in `configure.in'.  The case statement might look something
+like the following, assuming that `host' is a shell variable holding a
+canonical configuration name (which will be the case if `configure.in'
+uses the `AC_CANONICAL_HOST' or `AC_CANONICAL_SYSTEM' macro).
+
+     case "${host}" in
+     i[3-7]86-*-linux-gnu*) do something ;;
+     sparc*-sun-solaris2.[56789]*) do something ;;
+     sparc*-sun-solaris*) do something ;;
+     mips*-*-elf*) do something ;;
+     esac
+
+   It is particularly important to use `*' after the operating system
+field, in order to match the version number which will be generated by
+`config.guess'.
+
+   In most cases you must be careful to match a range of processor
+types.  For most processor families, a trailing `*' suffices, as in
+`mips*' above.  For the i386 family, something along the lines of
+`i[3-7]86' suffices at present.  For the m68k family, you will need
+something like `m68*'.  Of course, if you do not need to match on the
+processor, it is simpler to just replace the entire field by a `*', as
+in `*-*-irix*'.
+
+\1f
+File: configure.info,  Node: Cross Compilation Tools,  Next: Canadian Cross,  Prev: Configuration Names,  Up: Top
+
+5 Cross Compilation Tools
+*************************
+
+The GNU configure and build system can be used to build "cross
+compilation" tools.  A cross compilation tool is a tool which runs on
+one system and produces code which runs on another system.
+
+* Menu:
+
+* Cross Compilation Concepts::         Cross Compilation Concepts.
+* Host and Target::                    Host and Target.
+* Using the Host Type::                        Using the Host Type.
+* Specifying the Target::              Specifying the Target.
+* Using the Target Type::              Using the Target Type.
+* Cross Tools in the Cygnus Tree::     Cross Tools in the Cygnus Tree
+
+\1f
+File: configure.info,  Node: Cross Compilation Concepts,  Next: Host and Target,  Up: Cross Compilation Tools
+
+5.1 Cross Compilation Concepts
+==============================
+
+A compiler which produces programs which run on a different system is a
+cross compilation compiler, or simply a "cross compiler".  Similarly,
+we speak of cross assemblers, cross linkers, etc.
+
+   In the normal case, a compiler produces code which runs on the same
+system as the one on which the compiler runs.  When it is necessary to
+distinguish this case from the cross compilation case, such a compiler
+is called a "native compiler".  Similarly, we speak of native
+assemblers, etc.
+
+   Although the debugger is not strictly speaking a compilation tool,
+it is nevertheless meaningful to speak of a cross debugger: a debugger
+which is used to debug code which runs on another system.  Everything
+that is said below about configuring cross compilation tools applies to
+the debugger as well.
+
+\1f
+File: configure.info,  Node: Host and Target,  Next: Using the Host Type,  Prev: Cross Compilation Concepts,  Up: Cross Compilation Tools
+
+5.2 Host and Target
+===================
+
+When building cross compilation tools, there are two different systems
+involved: the system on which the tools will run, and the system for
+which the tools generate code.
+
+   The system on which the tools will run is called the "host" system.
+
+   The system for which the tools generate code is called the "target"
+system.
+
+   For example, suppose you have a compiler which runs on a GNU/Linux
+system and generates ELF programs for a MIPS embedded system.  In this
+case the GNU/Linux system is the host, and the MIPS ELF system is the
+target.  Such a compiler could be called a GNU/Linux cross MIPS ELF
+compiler, or, equivalently, a `i386-linux-gnu' cross `mips-elf'
+compiler.
+
+   Naturally, most programs are not cross compilation tools.  For those
+programs, it does not make sense to speak of a target.  It only makes
+sense to speak of a target for tools like `gcc' or the `binutils' which
+actually produce running code.  For example, it does not make sense to
+speak of the target of a tool like `bison' or `make'.
+
+   Most cross compilation tools can also serve as native tools.  For a
+native compilation tool, it is still meaningful to speak of a target.
+For a native tool, the target is the same as the host.  For example, for
+a GNU/Linux native compiler, the host is GNU/Linux, and the target is
+also GNU/Linux.
+
+\1f
+File: configure.info,  Node: Using the Host Type,  Next: Specifying the Target,  Prev: Host and Target,  Up: Cross Compilation Tools
+
+5.3 Using the Host Type
+=======================
+
+In almost all cases the host system is the system on which you run the
+`configure' script, and on which you build the tools (for the case when
+they differ, *note Canadian Cross::).
+
+   If your configure script needs to know the configuration name of the
+host system, and the package is not a cross compilation tool and
+therefore does not have a target, put `AC_CANONICAL_HOST' in
+`configure.in'.  This macro will arrange to define a few shell
+variables when the `configure' script is run.
+
+`host'
+     The canonical configuration name of the host.  This will normally
+     be determined by running the `config.guess' shell script, although
+     the user is permitted to override this by using an explicit
+     `--host' option.
+
+`host_alias'
+     In the unusual case that the user used an explicit `--host' option,
+     this will be the argument to `--host'.  In the normal case, this
+     will be the same as the `host' variable.
+
+`host_cpu'
+`host_vendor'
+`host_os'
+     The first three parts of the canonical configuration name.
+
+   The shell variables may be used by putting shell code in
+`configure.in'.  For an example, see *Note Using Configuration Names::.
+
+\1f
+File: configure.info,  Node: Specifying the Target,  Next: Using the Target Type,  Prev: Using the Host Type,  Up: Cross Compilation Tools
+
+5.4 Specifying the Target
+=========================
+
+By default, the `configure' script will assume that the target is the
+same as the host.  This is the more common case; for example, it leads
+to a native compiler rather than a cross compiler.
+
+   If you want to build a cross compilation tool, you must specify the
+target explicitly by using the `--target' option when you run
+`configure'.  The argument to `--target' is the configuration name of
+the system for which you wish to generate code.  *Note Configuration
+Names::.
+
+   For example, to build tools which generate code for a MIPS ELF
+embedded system, you would use `--target mips-elf'.
+
+\1f
+File: configure.info,  Node: Using the Target Type,  Next: Cross Tools in the Cygnus Tree,  Prev: Specifying the Target,  Up: Cross Compilation Tools
+
+5.5 Using the Target Type
+=========================
+
+When writing `configure.in' for a cross compilation tool, you will need
+to use information about the target.  To do this, put
+`AC_CANONICAL_SYSTEM' in `configure.in'.
+
+   `AC_CANONICAL_SYSTEM' will look for a `--target' option and
+canonicalize it using the `config.sub' shell script.  It will also run
+`AC_CANONICAL_HOST' (*note Using the Host Type::).
+
+   The target type will be recorded in the following shell variables.
+Note that the host versions of these variables will also be defined by
+`AC_CANONICAL_HOST'.
+
+`target'
+     The canonical configuration name of the target.
+
+`target_alias'
+     The argument to the `--target' option.  If the user did not specify
+     a `--target' option, this will be the same as `host_alias'.
+
+`target_cpu'
+`target_vendor'
+`target_os'
+     The first three parts of the canonical target configuration name.
+
+   Note that if `host' and `target' are the same string, you can assume
+a native configuration.  If they are different, you can assume a cross
+configuration.
+
+   It is arguably possible for `host' and `target' to represent the
+same system, but for the strings to not be identical.  For example, if
+`config.guess' returns `sparc-sun-sunos4.1.4', and somebody configures
+with `--target sparc-sun-sunos4.1', then the slight differences between
+the two versions of SunOS may be unimportant for your tool.  However,
+in the general case it can be quite difficult to determine whether the
+differences between two configuration names are significant or not.
+Therefore, by convention, if the user specifies a `--target' option
+without specifying a `--host' option, it is assumed that the user wants
+to configure a cross compilation tool.
+
+   The variables `target' and `target_alias' should be handled
+differently.
+
+   In general, whenever the user may actually see a string,
+`target_alias' should be used.  This includes anything which may appear
+in the file system, such as a directory name or part of a tool name.
+It also includes any tool output, unless it is clearly labelled as the
+canonical target configuration name.  This permits the user to use the
+`--target' option to specify how the tool will appear to the outside
+world.
+
+   On the other hand, when checking for characteristics of the target
+system, `target' should be used.  This is because a wide variety of
+`--target' options may map into the same canonical configuration name.
+You should not attempt to duplicate the canonicalization done by
+`config.sub' in your own code.
+
+   By convention, cross tools are installed with a prefix of the
+argument used with the `--target' option, also known as `target_alias'
+(*note Using the Target Type::).  If the user does not use the
+`--target' option, and thus is building a native tool, no prefix is
+used.
+
+   For example, if gcc is configured with `--target mips-elf', then the
+installed binary will be named `mips-elf-gcc'.  If gcc is configured
+without a `--target' option, then the installed binary will be named
+`gcc'.
+
+   The autoconf macro `AC_ARG_PROGRAM' will handle this for you.  If
+you are using automake, no more need be done; the programs will
+automatically be installed with the correct prefixes.  Otherwise, see
+the autoconf documentation for `AC_ARG_PROGRAM'.
+
+\1f
+File: configure.info,  Node: Cross Tools in the Cygnus Tree,  Prev: Using the Target Type,  Up: Cross Compilation Tools
+
+5.6 Cross Tools in the Cygnus Tree
+==================================
+
+The Cygnus tree is used for various packages including gdb, the GNU
+binutils, and egcs.  It is also, of course, used for Cygnus releases.
+
+   In the Cygnus tree, the top level `configure' script uses the old
+Cygnus configure system, not autoconf.  The top level `Makefile.in' is
+written to build packages based on what is in the source tree, and
+supports building a large number of tools in a single
+`configure'/`make' step.
+
+   The Cygnus tree may be configured with a `--target' option.  The
+`--target' option applies recursively to every subdirectory, and
+permits building an entire set of cross tools at once.
+
+* Menu:
+
+* Host and Target Libraries::          Host and Target Libraries.
+* Target Library Configure Scripts::   Target Library Configure Scripts.
+* Make Targets in Cygnus Tree::         Make Targets in Cygnus Tree.
+* Target libiberty::                   Target libiberty
+
+\1f
+File: configure.info,  Node: Host and Target Libraries,  Next: Target Library Configure Scripts,  Up: Cross Tools in the Cygnus Tree
+
+5.6.1 Host and Target Libraries
+-------------------------------
+
+The Cygnus tree distinguishes host libraries from target libraries.
+
+   Host libraries are built with the compiler used to build the programs
+which run on the host, which is called the host compiler.  This includes
+libraries such as `bfd' and `tcl'.  These libraries are built with the
+host compiler, and are linked into programs like the binutils or gcc
+which run on the host.
+
+   Target libraries are built with the target compiler.  If gcc is
+present in the source tree, then the target compiler is the gcc that is
+built using the host compiler.  Target libraries are libraries such as
+`newlib' and `libstdc++'.  These libraries are not linked into the host
+programs, but are instead made available for use with programs built
+with the target compiler.
+
+   For the rest of this section, assume that gcc is present in the
+source tree, so that it will be used to build the target libraries.
+
+   There is a complication here.  The configure process needs to know
+which compiler you are going to use to build a tool; otherwise, the
+feature tests will not work correctly.  The Cygnus tree handles this by
+not configuring the target libraries until the target compiler is
+built.  In order to permit everything to build using a single
+`configure'/`make', the configuration of the target libraries is
+actually triggered during the make step.
+
+   When the target libraries are configured, the `--target' option is
+not used.  Instead, the `--host' option is used with the argument of
+the `--target' option for the overall configuration.  If no `--target'
+option was used for the overall configuration, the `--host' option will
+be passed with the output of the `config.guess' shell script.  Any
+`--build' option is passed down unchanged.
+
+   This translation of configuration options is done because since the
+target libraries are compiled with the target compiler, they are being
+built in order to run on the target of the overall configuration.  By
+the definition of host, this means that their host system is the same as
+the target system of the overall configuration.
+
+   The same process is used for both a native configuration and a cross
+configuration.  Even when using a native configuration, the target
+libraries will be configured and built using the newly built compiler.
+This is particularly important for the C++ libraries, since there is no
+reason to assume that the C++ compiler used to build the host tools (if
+there even is one) uses the same ABI as the g++ compiler which will be
+used to build the target libraries.
+
+   There is one difference between a native configuration and a cross
+configuration.  In a native configuration, the target libraries are
+normally configured and built as siblings of the host tools.  In a cross
+configuration, the target libraries are normally built in a subdirectory
+whose name is the argument to `--target'.  This is mainly for
+historical reasons.
+
+   To summarize, running `configure' in the Cygnus tree configures all
+the host libraries and tools, but does not configure any of the target
+libraries.  Running `make' then does the following steps:
+
+   * Build the host libraries.
+
+   * Build the host programs, including gcc.  Note that we call gcc
+     both a host program (since it runs on the host) and a target
+     compiler (since it generates code for the target).
+
+   * Using the newly built target compiler, configure the target
+     libraries.
+
+   * Build the target libraries.
+
+   The steps need not be done in precisely this order, since they are
+actually controlled by `Makefile' targets.
+
+\1f
+File: configure.info,  Node: Target Library Configure Scripts,  Next: Make Targets in Cygnus Tree,  Prev: Host and Target Libraries,  Up: Cross Tools in the Cygnus Tree
+
+5.6.2 Target Library Configure Scripts
+--------------------------------------
+
+There are a few things you must know in order to write a configure
+script for a target library.  This is just a quick sketch, and beginners
+shouldn't worry if they don't follow everything here.
+
+   The target libraries are configured and built using a newly built
+target compiler.  There may not be any startup files or libraries for
+this target compiler.  In fact, those files will probably be built as
+part of some target library, which naturally means that they will not
+exist when your target library is configured.
+
+   This means that the configure script for a target library may not use
+any test which requires doing a link.  This unfortunately includes many
+useful autoconf macros, such as `AC_CHECK_FUNCS'.  autoconf macros
+which do a compile but not a link, such as `AC_CHECK_HEADERS', may be
+used.
+
+   This is a severe restriction, but normally not a fatal one, as target
+libraries can often assume the presence of other target libraries, and
+thus know which functions will be available.
+
+   As of this writing, the autoconf macro `AC_PROG_CC' does a link to
+make sure that the compiler works.  This may fail in a target library,
+so target libraries must use a different set of macros to locate the
+compiler.  See the `configure.in' file in a directory like `libiberty'
+or `libgloss' for an example.
+
+   As noted in the previous section, target libraries are sometimes
+built in directories which are siblings to the host tools, and are
+sometimes built in a subdirectory.  The `--with-target-subdir' configure
+option will be passed when the library is configured.  Its value will be
+an empty string if the target library is a sibling.  Its value will be
+the name of the subdirectory if the target library is in a subdirectory.
+
+   If the overall build is not a native build (i.e., the overall
+configure used the `--target' option), then the library will be
+configured with the `--with-cross-host' option.  The value of this
+option will be the host system of the overall build.  Recall that the
+host system of the library will be the target of the overall build.  If
+the overall build is a native build, the `--with-cross-host' option
+will not be used.
+
+   A library which can be built both standalone and as a target library
+may want to install itself into different directories depending upon the
+case.  When built standalone, or when built native, the library should
+be installed in `$(libdir)'.  When built as a target library which is
+not native, the library should be installed in `$(tooldir)/lib'.  The
+`--with-cross-host' option may be used to distinguish these cases.
+
+   This same test of `--with-cross-host' may be used to see whether it
+is OK to use link tests in the configure script.  If the
+`--with-cross-host' option is not used, then the library is being built
+either standalone or native, and a link should work.
+
+\1f
+File: configure.info,  Node: Make Targets in Cygnus Tree,  Next: Target libiberty,  Prev: Target Library Configure Scripts,  Up: Cross Tools in the Cygnus Tree
+
+5.6.3 Make Targets in Cygnus Tree
+---------------------------------
+
+The top level `Makefile' in the Cygnus tree defines targets for every
+known subdirectory.
+
+   For every subdirectory DIR which holds a host library or program,
+the `Makefile' target `all-DIR' will build that library or program.
+
+   There are dependencies among host tools.  For example, building gcc
+requires first building gas, because the gcc build process invokes the
+target assembler.  These dependencies are reflected in the top level
+`Makefile'.
+
+   For every subdirectory DIR which holds a target library, the
+`Makefile' target `configure-target-DIR' will configure that library.
+The `Makefile' target `all-target-DIR' will build that library.
+
+   Every `configure-target-DIR' target depends upon `all-gcc', since
+gcc, the target compiler, is required to configure the tool.  Every
+`all-target-DIR' target depends upon the corresponding
+`configure-target-DIR' target.
+
+   There are several other targets which may be of interest for each
+directory: `install-DIR', `clean-DIR', and `check-DIR'.  There are also
+corresponding `target' versions of these for the target libraries ,
+such as `install-target-DIR'.
+
+\1f
+File: configure.info,  Node: Target libiberty,  Prev: Make Targets in Cygnus Tree,  Up: Cross Tools in the Cygnus Tree
+
+5.6.4 Target libiberty
+----------------------
+
+The `libiberty' subdirectory is currently a special case, in that it is
+the only directory which is built both using the host compiler and
+using the target compiler.
+
+   This is because the files in `libiberty' are used when building the
+host tools, and they are also incorporated into the `libstdc++' target
+library as support code.
+
+   This duality does not pose any particular difficulties.  It means
+that there are targets for both `all-libiberty' and
+`all-target-libiberty'.
+
+   In a native configuration, when target libraries are not built in a
+subdirectory, the same objects are normally used as both the host build
+and the target build.  This is normally OK, since libiberty contains
+only C code, and in a native configuration the results of the host
+compiler and the target compiler are normally interoperable.
+
+   Irix 6 is again an exception here, since the SGI native compiler
+defaults to using the `O32' ABI, and gcc defaults to using the `N32'
+ABI.  On Irix 6, the target libraries are built in a subdirectory even
+for a native configuration, avoiding this problem.
+
+   There are currently no other libraries built for both the host and
+the target, but there is no conceptual problem with adding more.
+
+\1f
+File: configure.info,  Node: Canadian Cross,  Next: Cygnus Configure,  Prev: Cross Compilation Tools,  Up: Top
+
+6 Canadian Cross
+****************
+
+It is possible to use the GNU configure and build system to build a
+program which will run on a system which is different from the system on
+which the tools are built.  In other words, it is possible to build
+programs using a cross compiler.
+
+   This is referred to as a "Canadian Cross".
+
+* Menu:
+
+* Canadian Cross Example::             Canadian Cross Example.
+* Canadian Cross Concepts::            Canadian Cross Concepts.
+* Build Cross Host Tools::             Build Cross Host Tools.
+* Build and Host Options::             Build and Host Options.
+* CCross not in Cygnus Tree::          Canadian Cross not in Cygnus Tree.
+* CCross in Cygnus Tree::              Canadian Cross in Cygnus Tree.
+* Supporting Canadian Cross::          Supporting Canadian Cross.
+
+\1f
+File: configure.info,  Node: Canadian Cross Example,  Next: Canadian Cross Concepts,  Up: Canadian Cross
+
+6.1 Canadian Cross Example
+==========================
+
+Here is an example of a Canadian Cross.
+
+   While running on a GNU/Linux, you can build a program which will run
+on a Solaris system.  You would use a GNU/Linux cross Solaris compiler
+to build the program.
+
+   Of course, you could not run the resulting program on your GNU/Linux
+system.  You would have to copy it over to a Solaris system before you
+would run it.
+
+   Of course, you could also simply build the programs on the Solaris
+system in the first place.  However, perhaps the Solaris system is not
+available for some reason; perhaps you actually don't have one, but you
+want to build the tools for somebody else to use.  Or perhaps your
+GNU/Linux system is much faster than your Solaris system.
+
+   A Canadian Cross build is most frequently used when building
+programs to run on a non-Unix system, such as DOS or Windows.  It may
+be simpler to configure and build on a Unix system than to support the
+configuration machinery on a non-Unix system.
+
+\1f
+File: configure.info,  Node: Canadian Cross Concepts,  Next: Build Cross Host Tools,  Prev: Canadian Cross Example,  Up: Canadian Cross
+
+6.2 Canadian Cross Concepts
+===========================
+
+When building a Canadian Cross, there are at least two different systems
+involved: the system on which the tools are being built, and the system
+on which the tools will run.
+
+   The system on which the tools are being built is called the "build"
+system.
+
+   The system on which the tools will run is called the host system.
+
+   For example, if you are building a Solaris program on a GNU/Linux
+system, as in the previous section, the build system would be GNU/Linux,
+and the host system would be Solaris.
+
+   It is, of course, possible to build a cross compiler using a Canadian
+Cross (i.e., build a cross compiler using a cross compiler).  In this
+case, the system for which the resulting cross compiler generates code
+is called the target system.  (For a more complete discussion of host
+and target systems, *note Host and Target::).
+
+   An example of building a cross compiler using a Canadian Cross would
+be building a Windows cross MIPS ELF compiler on a GNU/Linux system.  In
+this case the build system would be GNU/Linux, the host system would be
+Windows, and the target system would be MIPS ELF.
+
+   The name Canadian Cross comes from the case when the build, host, and
+target systems are all different.  At the time that these issues were
+all being hashed out, Canada had three national political parties.
+
+\1f
+File: configure.info,  Node: Build Cross Host Tools,  Next: Build and Host Options,  Prev: Canadian Cross Concepts,  Up: Canadian Cross
+
+6.3 Build Cross Host Tools
+==========================
+
+In order to configure a program for a Canadian Cross build, you must
+first build and install the set of cross tools you will use to build the
+program.
+
+   These tools will be build cross host tools.  That is, they will run
+on the build system, and will produce code that runs on the host system.
+
+   It is easy to confuse the meaning of build and host here.  Always
+remember that the build system is where you are doing the build, and the
+host system is where the resulting program will run.  Therefore, you
+need a build cross host compiler.
+
+   In general, you must have a complete cross environment in order to do
+the build.  This normally means a cross compiler, cross assembler, and
+so forth, as well as libraries and include files for the host system.
+
+\1f
+File: configure.info,  Node: Build and Host Options,  Next: CCross not in Cygnus Tree,  Prev: Build Cross Host Tools,  Up: Canadian Cross
+
+6.4 Build and Host Options
+==========================
+
+When you run `configure', you must use both the `--build' and `--host'
+options.
+
+   The `--build' option is used to specify the configuration name of
+the build system.  This can normally be the result of running the
+`config.guess' shell script, and it is reasonable to use
+`--build=`config.guess`'.
+
+   The `--host' option is used to specify the configuration name of the
+host system.
+
+   As we explained earlier, `config.guess' is used to set the default
+value for the `--host' option (*note Using the Host Type::).  We can
+now see that since `config.guess' returns the type of system on which
+it is run, it really identifies the build system.  Since the host
+system is normally the same as the build system (i.e., people do not
+normally build using a cross compiler), it is reasonable to use the
+result of `config.guess' as the default for the host system when the
+`--host' option is not used.
+
+   It might seem that if the `--host' option were used without the
+`--build' option that the configure script could run `config.guess' to
+determine the build system, and presume a Canadian Cross if the result
+of `config.guess' differed from the `--host' option.  However, for
+historical reasons, some configure scripts are routinely run using an
+explicit `--host' option, rather than using the default from
+`config.guess'.  As noted earlier, it is difficult or impossible to
+reliably compare configuration names (*note Using the Target Type::).
+Therefore, by convention, if the `--host' option is used, but the
+`--build' option is not used, then the build system defaults to the
+host system.
+
+\1f
+File: configure.info,  Node: CCross not in Cygnus Tree,  Next: CCross in Cygnus Tree,  Prev: Build and Host Options,  Up: Canadian Cross
+
+6.5 Canadian Cross not in Cygnus Tree.
+======================================
+
+If you are not using the Cygnus tree, you must explicitly specify the
+cross tools which you want to use to build the program.  This is done by
+setting environment variables before running the `configure' script.
+
+   You must normally set at least the environment variables `CC', `AR',
+and `RANLIB' to the cross tools which you want to use to build.
+
+   For some programs, you must set additional cross tools as well, such
+as `AS', `LD', or `NM'.
+
+   You would set these environment variables to the build cross tools
+which you are going to use.
+
+   For example, if you are building a Solaris program on a GNU/Linux
+system, and your GNU/Linux cross Solaris compiler were named
+`solaris-gcc', then you would set the environment variable `CC' to
+`solaris-gcc'.
+
+\1f
+File: configure.info,  Node: CCross in Cygnus Tree,  Next: Supporting Canadian Cross,  Prev: CCross not in Cygnus Tree,  Up: Canadian Cross
+
+6.6 Canadian Cross in Cygnus Tree
+=================================
+
+This section describes configuring and building a Canadian Cross when
+using the Cygnus tree.
+
+* Menu:
+
+* Standard Cygnus CCross::     Building a Normal Program.
+* Cross Cygnus CCross::                Building a Cross Program.
+
+\1f
+File: configure.info,  Node: Standard Cygnus CCross,  Next: Cross Cygnus CCross,  Up: CCross in Cygnus Tree
+
+6.6.1 Building a Normal Program
+-------------------------------
+
+When configuring a Canadian Cross in the Cygnus tree, all the
+appropriate environment variables are automatically set to `HOST-TOOL',
+where HOST is the value used for the `--host' option, and TOOL is the
+name of the tool (e.g., `gcc', `as', etc.).  These tools must be on
+your `PATH'.
+
+   Adding a prefix of HOST will give the usual name for the build cross
+host tools.  To see this, consider that when these cross tools were
+built, they were configured to run on the build system and to produce
+code for the host system.  That is, they were configured with a
+`--target' option that is the same as the system which we are now
+calling the host.  Recall that the default name for installed cross
+tools uses the target system as a prefix (*note Using the Target
+Type::).  Since that is the system which we are now calling the host,
+HOST is the right prefix to use.
+
+   For example, if you configure with `--build=i386-linux-gnu' and
+`--host=solaris', then the Cygnus tree will automatically default to
+using the compiler `solaris-gcc'.  You must have previously built and
+installed this compiler, probably by doing a build with no `--host'
+option and with a `--target' option of `solaris'.
+
+\1f
+File: configure.info,  Node: Cross Cygnus CCross,  Prev: Standard Cygnus CCross,  Up: CCross in Cygnus Tree
+
+6.6.2 Building a Cross Program
+------------------------------
+
+There are additional considerations if you want to build a cross
+compiler, rather than a native compiler, in the Cygnus tree using a
+Canadian Cross.
+
+   When you build a cross compiler using the Cygnus tree, then the
+target libraries will normally be built with the newly built target
+compiler (*note Host and Target Libraries::).  However, this will not
+work when building with a Canadian Cross.  This is because the newly
+built target compiler will be a program which runs on the host system,
+and therefore will not be able to run on the build system.
+
+   Therefore, when building a cross compiler with the Cygnus tree, you
+must first install a set of build cross target tools.  These tools will
+be used when building the target libraries.
+
+   Note that this is not a requirement of a Canadian Cross in general.
+For example, it would be possible to build just the host cross target
+tools on the build system, to copy the tools to the host system, and to
+build the target libraries on the host system.  The requirement for
+build cross target tools is imposed by the Cygnus tree, which expects
+to be able to build both host programs and target libraries in a single
+`configure'/`make' step.  Because it builds these in a single step, it
+expects to be able to build the target libraries on the build system,
+which means that it must use a build cross target toolchain.
+
+   For example, suppose you want to build a Windows cross MIPS ELF
+compiler on a GNU/Linux system.  You must have previously installed
+both a GNU/Linux cross Windows compiler and a GNU/Linux cross MIPS ELF
+compiler.
+
+   In order to build the Windows (configuration name `i386-cygwin32')
+cross MIPS ELF (configure name `mips-elf') compiler, you might execute
+the following commands (long command lines are broken across lines with
+a trailing backslash as a continuation character).
+
+     mkdir linux-x-cygwin32
+     cd linux-x-cygwin32
+     SRCDIR/configure --target i386-cygwin32 --prefix=INSTALLDIR \
+       --exec-prefix=INSTALLDIR/H-i386-linux
+     make
+     make install
+     cd ..
+     mkdir linux-x-mips-elf
+     cd linux-x-mips-elf
+     SRCDIR/configure --target mips-elf --prefix=INSTALLDIR \
+       --exec-prefix=INSTALLDIR/H-i386-linux
+     make
+     make install
+     cd ..
+     mkdir cygwin32-x-mips-elf
+     cd cygwin32-x-mips-elf
+     SRCDIR/configure --build=i386-linux-gnu --host=i386-cygwin32 \
+       --target=mips-elf --prefix=WININSTALLDIR \
+       --exec-prefix=WININSTALLDIR/H-i386-cygwin32
+     make
+     make install
+
+   You would then copy the contents of WININSTALLDIR over to the
+Windows machine, and run the resulting programs.
+
+\1f
+File: configure.info,  Node: Supporting Canadian Cross,  Prev: CCross in Cygnus Tree,  Up: Canadian Cross
+
+6.7 Supporting Canadian Cross
+=============================
+
+If you want to make it possible to build a program you are developing
+using a Canadian Cross, you must take some care when writing your
+configure and make rules.  Simple cases will normally work correctly.
+However, it is not hard to write configure and make tests which will
+fail in a Canadian Cross.
+
+* Menu:
+
+* CCross in Configure::                Supporting Canadian Cross in Configure Scripts.
+* CCross in Make::             Supporting Canadian Cross in Makefiles.
+
+\1f
+File: configure.info,  Node: CCross in Configure,  Next: CCross in Make,  Up: Supporting Canadian Cross
+
+6.7.1 Supporting Canadian Cross in Configure Scripts
+----------------------------------------------------
+
+In a `configure.in' file, after calling `AC_PROG_CC', you can find out
+whether this is a Canadian Cross configure by examining the shell
+variable `cross_compiling'.  In a Canadian Cross, which means that the
+compiler is a cross compiler, `cross_compiling' will be `yes'.  In a
+normal configuration, `cross_compiling' will be `no'.
+
+   You ordinarily do not need to know the type of the build system in a
+configure script.  However, if you do need that information, you can get
+it by using the macro `AC_CANONICAL_SYSTEM', the same macro that is
+used to determine the target system.  This macro will set the variables
+`build', `build_alias', `build_cpu', `build_vendor', and `build_os',
+which correspond to the similar `target' and `host' variables, except
+that they describe the build system.
+
+   When writing tests in `configure.in', you must remember that you
+want to test the host environment, not the build environment.
+
+   Macros like `AC_CHECK_FUNCS' which use the compiler will test the
+host environment.  That is because the tests will be done by running the
+compiler, which is actually a build cross host compiler.  If the
+compiler can find the function, that means that the function is present
+in the host environment.
+
+   Tests like `test -f /dev/ptyp0', on the other hand, will test the
+build environment.  Remember that the configure script is running on the
+build system, not the host system.  If your configure scripts examines
+files, those files will be on the build system.  Whatever you determine
+based on those files may or may not be the case on the host system.
+
+   Most autoconf macros will work correctly for a Canadian Cross.  The
+main exception is `AC_TRY_RUN'.  This macro tries to compile and run a
+test program.  This will fail in a Canadian Cross, because the program
+will be compiled for the host system, which means that it will not run
+on the build system.
+
+   The `AC_TRY_RUN' macro provides an optional argument to tell the
+configure script what to do in a Canadian Cross.  If that argument is
+not present, you will get a warning when you run `autoconf':
+     warning: AC_TRY_RUN called without default to allow cross compiling
+   This tells you that the resulting `configure' script will not work
+with a Canadian Cross.
+
+   In some cases while it may better to perform a test at configure
+time, it is also possible to perform the test at run time.  In such a
+case you can use the cross compiling argument to `AC_TRY_RUN' to tell
+your program that the test could not be performed at configure time.
+
+   There are a few other autoconf macros which will not work correctly
+with a Canadian Cross: a partial list is `AC_FUNC_GETPGRP',
+`AC_FUNC_SETPGRP', `AC_FUNC_SETVBUF_REVERSED', and
+`AC_SYS_RESTARTABLE_SYSCALLS'.  The `AC_CHECK_SIZEOF' macro is
+generally not very useful with a Canadian Cross; it permits an optional
+argument indicating the default size, but there is no way to know what
+the correct default should be.
+
+\1f
+File: configure.info,  Node: CCross in Make,  Prev: CCross in Configure,  Up: Supporting Canadian Cross
+
+6.7.2 Supporting Canadian Cross in Makefiles.
+---------------------------------------------
+
+The main Canadian Cross issue in a `Makefile' arises when you want to
+use a subsidiary program to generate code or data which you will then
+include in your real program.
+
+   If you compile this subsidiary program using `$(CC)' in the usual
+way, you will not be able to run it.  This is because `$(CC)' will
+build a program for the host system, but the program is being built on
+the build system.
+
+   You must instead use a compiler for the build system, rather than the
+host system.  In the Cygnus tree, this make variable `$(CC_FOR_BUILD)'
+will hold a compiler for the build system.
+
+   Note that you should not include `config.h' in a file you are
+compiling with `$(CC_FOR_BUILD)'.  The `configure' script will build
+`config.h' with information for the host system.  However, you are
+compiling the file using a compiler for the build system (a native
+compiler).  Subsidiary programs are normally simple filters which do no
+user interaction, and it is normally possible to write them in a highly
+portable fashion so that the absence of `config.h' is not crucial.
+
+   The gcc `Makefile.in' shows a complex situation in which certain
+files, such as `rtl.c', must be compiled into both subsidiary programs
+run on the build system and into the final program.  This approach may
+be of interest for advanced build system hackers.  Note that the build
+system compiler is rather confusingly called `HOST_CC'.
+
+\1f
+File: configure.info,  Node: Cygnus Configure,  Next: Multilibs,  Prev: Canadian Cross,  Up: Top
+
+7 Cygnus Configure
+******************
+
+The Cygnus configure script predates autoconf.  All of its interesting
+features have been incorporated into autoconf.  No new programs should
+be written to use the Cygnus configure script.
+
+   However, the Cygnus configure script is still used in a few places:
+at the top of the Cygnus tree and in a few target libraries in the
+Cygnus tree.  Until those uses have been replaced with autoconf, some
+brief notes are appropriate here.  This is not complete documentation,
+but it should be possible to use this as a guide while examining the
+scripts themselves.
+
+* Menu:
+
+* Cygnus Configure Basics::            Cygnus Configure Basics.
+* Cygnus Configure in C++ Libraries::  Cygnus Configure in C++ Libraries.
+
+\1f
+File: configure.info,  Node: Cygnus Configure Basics,  Next: Cygnus Configure in C++ Libraries,  Up: Cygnus Configure
+
+7.1 Cygnus Configure Basics
+===========================
+
+Cygnus configure does not use any generated files; there is no program
+corresponding to `autoconf'.  Instead, there is a single shell script
+named `configure' which may be found at the top of the Cygnus tree.
+This shell script was written by hand; it was not generated by
+autoconf, and it is incorrect, and indeed harmful, to run `autoconf' in
+the top level of a Cygnus tree.
+
+   Cygnus configure works in a particular directory by examining the
+file `configure.in' in that directory.  That file is broken into four
+separate shell scripts.
+
+   The first is the contents of `configure.in' up to a line that starts
+with `# per-host:'.  This is the common part.
+
+   The second is the rest of `configure.in' up to a line that starts
+with `# per-target:'.  This is the per host part.
+
+   The third is the rest of `configure.in' up to a line that starts
+with `# post-target:'.  This is the per target part.
+
+   The fourth is the remainder of `configure.in'.  This is the post
+target part.
+
+   If any of these comment lines are missing, the corresponding shell
+script is empty.
+
+   Cygnus configure will first execute the common part.  This must set
+the shell variable `srctrigger' to the name of a source file, to
+confirm that Cygnus configure is looking at the right directory.  This
+may set the shell variables `package_makefile_frag' and
+`package_makefile_rules_frag'.
+
+   Cygnus configure will next set the `build' and `host' shell
+variables, and execute the per host part.  This may set the shell
+variable `host_makefile_frag'.
+
+   Cygnus configure will next set the `target' variable, and execute
+the per target part.  This may set the shell variable
+`target_makefile_frag'.
+
+   Any of these scripts may set the `subdirs' shell variable.  This
+variable is a list of subdirectories where a `Makefile.in' file may be
+found.  Cygnus configure will automatically look for a `Makefile.in'
+file in the current directory.  The `subdirs' shell variable is not
+normally used, and I believe that the only directory which uses it at
+present is `newlib'.
+
+   For each `Makefile.in', Cygnus configure will automatically create a
+`Makefile' by adding definitions for `make' variables such as `host'
+and `target', and automatically editing the values of `make' variables
+such as `prefix' if they are present.
+
+   Also, if any of the `makefile_frag' shell variables are set, Cygnus
+configure will interpret them as file names relative to either the
+working directory or the source directory, and will read the contents of
+the file into the generated `Makefile'.  The file contents will be read
+in after the first line in `Makefile.in' which starts with `####'.
+
+   These `Makefile' fragments are used to customize behaviour for a
+particular host or target.  They serve to select particular files to
+compile, and to define particular preprocessor macros by providing
+values for `make' variables which are then used during compilation.
+Cygnus configure, unlike autoconf, normally does not do feature tests,
+and normally requires support to be added manually for each new host.
+
+   The `Makefile' fragment support is similar to the autoconf
+`AC_SUBST_FILE' macro.
+
+   After creating each `Makefile', the post target script will be run
+(i.e., it may be run several times).  This script may further customize
+the `Makefile'.  When it is run, the shell variable `Makefile' will
+hold the name of the `Makefile', including the appropriate directory
+component.
+
+   Like an autoconf generated `configure' script, Cygnus configure will
+create a file named `config.status' which, when run, will automatically
+recreate the configuration.  The `config.status' file will simply
+execute the Cygnus configure script again with the appropriate
+arguments.
+
+   Any of the parts of `configure.in' may set the shell variables
+`files' and `links'.  Cygnus configure will set up symlinks from the
+names in `links' to the files named in `files'.  This is similar to the
+autoconf `AC_LINK_FILES' macro.
+
+   Finally, any of the parts of `configure.in' may set the shell
+variable `configdirs' to a set of subdirectories.  If it is set, Cygnus
+configure will recursively run the configure process in each
+subdirectory.  If the subdirectory uses Cygnus configure, it will
+contain a `configure.in' file but no `configure' file, in which case
+Cygnus configure will invoke itself recursively.  If the subdirectory
+has a `configure' file, Cygnus configure assumes that it is an autoconf
+generated `configure' script, and simply invokes it directly.
+
+\1f
+File: configure.info,  Node: Cygnus Configure in C++ Libraries,  Prev: Cygnus Configure Basics,  Up: Cygnus Configure
+
+7.2 Cygnus Configure in C++ Libraries
+=====================================
+
+The C++ library configure system, written by Per Bothner, deserves
+special mention.  It uses Cygnus configure, but it does feature testing
+like that done by autoconf generated `configure' scripts.  This
+approach is used in the libraries `libio', `libstdc++', and `libg++'.
+
+   Most of the `Makefile' information is written out by the shell
+script `libio/config.shared'.  Each `configure.in' file sets certain
+shell variables, and then invokes `config.shared' to create two package
+`Makefile' fragments.  These fragments are then incorporated into the
+resulting `Makefile' by the Cygnus configure script.
+
+   The file `_G_config.h' is created in the `libio' object directory by
+running the shell script `libio/gen-params'.  This shell script uses
+feature tests to define macros and typedefs in `_G_config.h'.
+
+\1f
+File: configure.info,  Node: Multilibs,  Next: FAQ,  Prev: Cygnus Configure,  Up: Top
+
+8 Multilibs
+***********
+
+For some targets gcc may have different processor requirements depending
+upon command line options.  An obvious example is the `-msoft-float'
+option supported on several processors.  This option means that the
+floating point registers are not available, which means that floating
+point operations must be done by calling an emulation subroutine rather
+than by using machine instructions.
+
+   For such options, gcc is often configured to compile target libraries
+twice: once with `-msoft-float' and once without.  When gcc compiles
+target libraries more than once, the resulting libraries are called
+"multilibs".
+
+   Multilibs are not really part of the GNU configure and build system,
+but we discuss them here since they require support in the `configure'
+scripts and `Makefile's used for target libraries.
+
+* Menu:
+
+* Multilibs in gcc::                   Multilibs in gcc.
+* Multilibs in Target Libraries::      Multilibs in Target Libraries.
+
+\1f
+File: configure.info,  Node: Multilibs in gcc,  Next: Multilibs in Target Libraries,  Up: Multilibs
+
+8.1 Multilibs in gcc
+====================
+
+In gcc, multilibs are defined by setting the variable
+`MULTILIB_OPTIONS' in the target `Makefile' fragment.  Several other
+`MULTILIB' variables may also be defined there.  *Note The Target
+Makefile Fragment: (gcc)Target Fragment.
+
+   If you have built gcc, you can see what multilibs it uses by running
+it with the `-print-multi-lib' option.  The output `.;' means that no
+multilibs are used.  In general, the output is a sequence of lines, one
+per multilib.  The first part of each line, up to the `;', is the name
+of the multilib directory.  The second part is a list of compiler
+options separated by `@' characters.
+
+   Multilibs are built in a tree of directories.  The top of the tree,
+represented by `.' in the list of multilib directories, is the default
+library to use when no special compiler options are used.  The
+subdirectories of the tree hold versions of the library to use when
+particular compiler options are used.
+
+\1f
+File: configure.info,  Node: Multilibs in Target Libraries,  Prev: Multilibs in gcc,  Up: Multilibs
+
+8.2 Multilibs in Target Libraries
+=================================
+
+The target libraries in the Cygnus tree are automatically built with
+multilibs.  That means that each library is built multiple times.
+
+   This default is set in the top level `configure.in' file, by adding
+`--enable-multilib' to the list of arguments passed to configure when
+it is run for the target libraries (*note Host and Target Libraries::).
+
+   Each target library uses the shell script `config-ml.in', written by
+Doug Evans, to prepare to build target libraries.  This shell script is
+invoked after the `Makefile' has been created by the `configure'
+script.  If multilibs are not enabled, it does nothing, otherwise it
+modifies the `Makefile' to support multilibs.
+
+   The `config-ml.in' script makes one copy of the `Makefile' for each
+multilib in the appropriate subdirectory.  When configuring in the
+source directory (which is not recommended), it will build a symlink
+tree of the sources in each subdirectory.
+
+   The `config-ml.in' script sets several variables in the various
+`Makefile's.  The `Makefile.in' must have definitions for these
+variables already; `config-ml.in' simply changes the existing values.
+The `Makefile' should use default values for these variables which will
+do the right thing in the subdirectories.
+
+`MULTISRCTOP'
+     `config-ml.in' will set this to a sequence of `../' strings, where
+     the number of strings is the number of multilib levels in the
+     source tree.  The default value should be the empty string.
+
+`MULTIBUILDTOP'
+     `config-ml.in' will set this to a sequence of `../' strings, where
+     the number of strings is number of multilib levels in the object
+     directory.  The default value should be the empty string.  This
+     will differ from `MULTISRCTOP' when configuring in the source tree
+     (which is not recommended).
+
+`MULTIDIRS'
+     In the top level `Makefile' only, `config-ml.in' will set this to
+     the list of multilib subdirectories.  The default value should be
+     the empty string.
+
+`MULTISUBDIR'
+     `config-ml.in' will set this to the installed subdirectory name to
+     use for this subdirectory, with a leading `/'.  The default value
+     shold be the empty string.
+
+`MULTIDO'
+`MULTICLEAN'
+     In the top level `Makefile' only, `config-ml.in' will set these
+     variables to commands to use when doing a recursive make.  These
+     variables should both default to the string `true', so that by
+     default nothing happens.
+
+   All references to the parent of the source directory should use the
+variable `MULTISRCTOP'.  Instead of writing `$(srcdir)/..', you must
+write `$(srcdir)/$(MULTISRCTOP)..'.
+
+   Similarly, references to the parent of the object directory should
+use the variable `MULTIBUILDTOP'.
+
+   In the installation target, the libraries should be installed in the
+subdirectory `MULTISUBDIR'.  Instead of installing
+`$(libdir)/libfoo.a', install `$(libdir)$(MULTISUBDIR)/libfoo.a'.
+
+   The `config-ml.in' script also modifies the top level `Makefile' to
+add `multi-do' and `multi-clean' targets which are used when building
+multilibs.
+
+   The default target of the `Makefile' should include the following
+command:
+     @$(MULTIDO) $(FLAGS_TO_PASS) DO=all multi-do
+   This assumes that `$(FLAGS_TO_PASS)' is defined as a set of
+variables to pass to a recursive invocation of `make'.  This will build
+all the multilibs.  Note that the default value of `MULTIDO' is `true',
+so by default this command will do nothing.  It will only do something
+in the top level `Makefile' if multilibs were enabled.
+
+   The `install' target of the `Makefile' should include the following
+command:
+     @$(MULTIDO) $(FLAGS_TO_PASS) DO=install multi-do
+
+   In general, any operation, other than clean, which should be
+performed on all the multilibs should use a `$(MULTIDO)' line, setting
+the variable `DO' to the target of each recursive call to `make'.
+
+   The `clean' targets (`clean', `mostlyclean', etc.) should use
+`$(MULTICLEAN)'.  For example, the `clean' target should do this:
+     @$(MULTICLEAN) DO=clean multi-clean
+
+\1f
+File: configure.info,  Node: FAQ,  Next: Index,  Prev: Multilibs,  Up: Top
+
+9 Frequently Asked Questions
+****************************
+
+Which do I run first, `autoconf' or `automake'?
+     Except when you first add autoconf or automake support to a
+     package, you shouldn't run either by hand.  Instead, configure
+     with the `--enable-maintainer-mode' option, and let `make' take
+     care of it.
+
+`autoconf' says something about undefined macros.
+     This means that you have macros in your `configure.in' which are
+     not defined by `autoconf'.  You may be using an old version of
+     `autoconf'; try building and installing a newer one.  Make sure the
+     newly installled `autoconf' is first on your `PATH'.  Also, see
+     the next question.
+
+My `configure' script has stuff like `CY_GNU_GETTEXT' in it.
+     This means that you have macros in your `configure.in' which should
+     be defined in your `aclocal.m4' file, but aren't.  This usually
+     means that `aclocal' was not able to appropriate definitions of the
+     macros.  Make sure that you have installed all the packages you
+     need.  In particular, make sure that you have installed libtool
+     (this is where `AM_PROG_LIBTOOL' is defined) and gettext (this is
+     where `CY_GNU_GETTEXT' is defined, at least in the Cygnus version
+     of gettext).
+
+My `Makefile' has `@' characters in it.
+     This may mean that you tried to use an autoconf substitution in
+     your `Makefile.in' without adding the appropriate `AC_SUBST' call
+     to your `configure' script.  Or it may just mean that you need to
+     rebuild `Makefile' in your build directory.  To rebuild `Makefile'
+     from `Makefile.in', run the shell script `config.status' with no
+     arguments.  If you need to force `configure' to run again, first
+     run `config.status --recheck'.  These runs are normally done
+     automatically by `Makefile' targets, but if your `Makefile' has
+     gotten messed up you'll need to help them along.
+
+Why do I have to run both `config.status --recheck' and `config.status'?
+     Normally, you don't; they will be run automatically by `Makefile'
+     targets.  If you do need to run them, use `config.status --recheck'
+     to run the `configure' script again with the same arguments as the
+     first time you ran it.  Use `config.status' (with no arguments) to
+     regenerate all files (`Makefile', `config.h', etc.) based on the
+     results of the configure script.  The two cases are separate
+     because it isn't always necessary to regenerate all the files
+     after running `config.status --recheck'.  The `Makefile' targets
+     generated by automake will use the environment variables
+     `CONFIG_FILES' and `CONFIG_HEADERS' to only regenerate files as
+     they are needed.
+
+What is the Cygnus tree?
+     The Cygnus tree is used for various packages including gdb, the GNU
+     binutils, and egcs.  It is also, of course, used for Cygnus
+     releases.  It is the build system which was developed at Cygnus,
+     using the Cygnus configure script.  It permits building many
+     different packages with a single configure and make.  The
+     configure scripts in the tree are being converted to autoconf, but
+     the general build structure remains intact.
+
+Why do I have to keep rebuilding and reinstalling the tools?
+     I know, it's a pain.  Unfortunately, there are bugs in the tools
+     themselves which need to be fixed, and each time that happens
+     everybody who uses the tools need to reinstall new versions of
+     them.  I don't know if there is going to be a clever fix until the
+     tools stabilize.
+
+Why not just have a Cygnus tree `make' target to update the tools?
+     The tools unfortunately need to be installed before they can be
+     used.  That means that they must be built using an appropriate
+     prefix, and it seems unwise to assume that every configuration
+     uses an appropriate prefix.  It might be possible to make them
+     work in place, or it might be possible to install them in some
+     subdirectory; so far these approaches have not been implemented.
+
+\1f
+File: configure.info,  Node: Index,  Prev: FAQ,  Up: Top
+
+Index
+*****
+
+\0\b[index\0\b]
+* Menu:
+
+* --build option:                        Build and Host Options.
+                                                              (line   9)
+* --host option:                         Build and Host Options.
+                                                              (line  14)
+* --target option:                       Specifying the Target.
+                                                              (line  10)
+* _GNU_SOURCE:                           Write configure.in.  (line 134)
+* AC_CANONICAL_HOST:                     Using the Host Type. (line  10)
+* AC_CANONICAL_SYSTEM:                   Using the Target Type.
+                                                              (line   6)
+* AC_CONFIG_HEADER:                      Write configure.in.  (line  66)
+* AC_EXEEXT:                             Write configure.in.  (line  86)
+* AC_INIT:                               Write configure.in.  (line  38)
+* AC_OUTPUT:                             Write configure.in.  (line 142)
+* AC_PREREQ:                             Write configure.in.  (line  42)
+* AC_PROG_CC:                            Write configure.in.  (line 103)
+* AC_PROG_CXX:                           Write configure.in.  (line 117)
+* acconfig.h:                            Written Developer Files.
+                                                              (line  27)
+* acconfig.h, writing:                   Write acconfig.h.    (line   6)
+* acinclude.m4:                          Written Developer Files.
+                                                              (line  37)
+* aclocal.m4:                            Generated Developer Files.
+                                                              (line  33)
+* AM_CONFIG_HEADER:                      Write configure.in.  (line  53)
+* AM_DISABLE_SHARED:                     Write configure.in.  (line 127)
+* AM_EXEEXT:                             Write configure.in.  (line  86)
+* AM_INIT_AUTOMAKE:                      Write configure.in.  (line  48)
+* AM_MAINTAINER_MODE:                    Write configure.in.  (line  70)
+* AM_PROG_LIBTOOL:                       Write configure.in.  (line 122)
+* AM_PROG_LIBTOOL in configure:          FAQ.                 (line  19)
+* build option:                          Build and Host Options.
+                                                              (line   9)
+* building with a cross compiler:        Canadian Cross.      (line   6)
+* canadian cross:                        Canadian Cross.      (line   6)
+* canadian cross in configure:           CCross in Configure. (line   6)
+* canadian cross in cygnus tree:         CCross in Cygnus Tree.
+                                                              (line   6)
+* canadian cross in makefile:            CCross in Make.      (line   6)
+* canadian cross, configuring:           Build and Host Options.
+                                                              (line   6)
+* canonical system names:                Configuration Names. (line   6)
+* config.cache:                          Build Files Description.
+                                                              (line  28)
+* config.h:                              Build Files Description.
+                                                              (line  23)
+* config.h.in:                           Generated Developer Files.
+                                                              (line  45)
+* config.in:                             Generated Developer Files.
+                                                              (line  45)
+* config.status:                         Build Files Description.
+                                                              (line   9)
+* config.status --recheck:               FAQ.                 (line  40)
+* configuration names:                   Configuration Names. (line   6)
+* configuration triplets:                Configuration Names. (line   6)
+* configure:                             Generated Developer Files.
+                                                              (line  21)
+* configure build system:                Build and Host Options.
+                                                              (line   9)
+* configure host:                        Build and Host Options.
+                                                              (line  14)
+* configure target:                      Specifying the Target.
+                                                              (line  10)
+* configure.in:                          Written Developer Files.
+                                                              (line   9)
+* configure.in, writing:                 Write configure.in.  (line   6)
+* configuring a canadian cross:          Build and Host Options.
+                                                              (line   6)
+* cross compiler:                        Cross Compilation Concepts.
+                                                              (line   6)
+* cross compiler, building with:         Canadian Cross.      (line   6)
+* cross tools:                           Cross Compilation Tools.
+                                                              (line   6)
+* CY_GNU_GETTEXT in configure:           FAQ.                 (line  19)
+* cygnus configure:                      Cygnus Configure.    (line   6)
+* goals:                                 Goals.               (line   6)
+* history:                               History.             (line   6)
+* host names:                            Configuration Names. (line   6)
+* host option:                           Build and Host Options.
+                                                              (line  14)
+* host system:                           Host and Target.     (line   6)
+* host triplets:                         Configuration Names. (line   6)
+* HOST_CC:                               CCross in Make.      (line  27)
+* libg++ configure:                      Cygnus Configure in C++ Libraries.
+                                                              (line   6)
+* libio configure:                       Cygnus Configure in C++ Libraries.
+                                                              (line   6)
+* libstdc++ configure:                   Cygnus Configure in C++ Libraries.
+                                                              (line   6)
+* Makefile:                              Build Files Description.
+                                                              (line  18)
+* Makefile, garbage characters:          FAQ.                 (line  29)
+* Makefile.am:                           Written Developer Files.
+                                                              (line  18)
+* Makefile.am, writing:                  Write Makefile.am.   (line   6)
+* Makefile.in:                           Generated Developer Files.
+                                                              (line  26)
+* multilibs:                             Multilibs.           (line   6)
+* stamp-h:                               Build Files Description.
+                                                              (line  41)
+* stamp-h.in:                            Generated Developer Files.
+                                                              (line  54)
+* system names:                          Configuration Names. (line   6)
+* system types:                          Configuration Names. (line   6)
+* target option:                         Specifying the Target.
+                                                              (line  10)
+* target system:                         Host and Target.     (line   6)
+* triplets:                              Configuration Names. (line   6)
+* undefined macros:                      FAQ.                 (line  12)
+
+
+\1f
+Tag Table:
+Node: Top\7f978
+Node: Introduction\7f1506
+Node: Goals\7f2588
+Node: Tools\7f3312
+Node: History\7f4306
+Node: Building\7f7304
+Node: Getting Started\7f10567
+Node: Write configure.in\7f11080
+Node: Write Makefile.am\7f18331
+Node: Write acconfig.h\7f21508
+Node: Generate files\7f23045
+Node: Getting Started Example\7f25011
+Node: Getting Started Example 1\7f25766
+Node: Getting Started Example 2\7f27687
+Node: Getting Started Example 3\7f30682
+Node: Generate Files in Example\7f33046
+Node: Files\7f34136
+Node: Developer Files\7f34747
+Node: Developer Files Picture\7f35127
+Node: Written Developer Files\7f36415
+Node: Generated Developer Files\7f38967
+Node: Build Files\7f42111
+Node: Build Files Picture\7f42772
+Node: Build Files Description\7f43536
+Node: Support Files\7f45542
+Node: Configuration Names\7f48424
+Node: Configuration Name Definition\7f48924
+Node: Using Configuration Names\7f51247
+Node: Cross Compilation Tools\7f53217
+Node: Cross Compilation Concepts\7f53908
+Node: Host and Target\7f54876
+Node: Using the Host Type\7f56377
+Node: Specifying the Target\7f57726
+Node: Using the Target Type\7f58515
+Node: Cross Tools in the Cygnus Tree\7f61946
+Node: Host and Target Libraries\7f63003
+Node: Target Library Configure Scripts\7f66752
+Node: Make Targets in Cygnus Tree\7f69844
+Node: Target libiberty\7f71192
+Node: Canadian Cross\7f72579
+Node: Canadian Cross Example\7f73420
+Node: Canadian Cross Concepts\7f74539
+Node: Build Cross Host Tools\7f76051
+Node: Build and Host Options\7f77003
+Node: CCross not in Cygnus Tree\7f78789
+Node: CCross in Cygnus Tree\7f79767
+Node: Standard Cygnus CCross\7f80188
+Node: Cross Cygnus CCross\7f81552
+Node: Supporting Canadian Cross\7f84352
+Node: CCross in Configure\7f84967
+Node: CCross in Make\7f88135
+Node: Cygnus Configure\7f89738
+Node: Cygnus Configure Basics\7f90573
+Node: Cygnus Configure in C++ Libraries\7f95251
+Node: Multilibs\7f96258
+Node: Multilibs in gcc\7f97303
+Node: Multilibs in Target Libraries\7f98381
+Node: FAQ\7f102572
+Node: Index\7f106672
+\1f
+End Tag Table
diff --git a/darwin-x86/toolchain/arm-eabi-4.4.0/share/info/dir b/darwin-x86/toolchain/arm-eabi-4.4.0/share/info/dir
new file mode 100644 (file)
index 0000000..85deeed
--- /dev/null
@@ -0,0 +1,24 @@
+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.
+\1f
+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
+* Bfd: (bfd).                   The Binary File Descriptor library.
+
+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.
@@ -1,5 +1,5 @@
 This is gdb.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gdb-6.6/gdb/doc/gdb.texinfo.
+../../../../../toolchain/android-toolchain/gdb-6.6/gdb/doc/gdb.texinfo.
 
 INFO-DIR-SECTION Software development
 START-INFO-DIR-ENTRY
@@ -25414,8 +25414,8 @@ Index
 * C and C++ constants:                   C Constants.         (line   6)
 * C and C++ defaults:                    C Defaults.          (line   6)
 * C and C++ operators:                   C Operators.         (line   6)
-* C packet:                              Packets.             (line  80)
 * c packet:                              Packets.             (line  74)
+* C packet:                              Packets.             (line  80)
 * C++:                                   C.                   (line  10)
 * C++ compilers:                         C plus plus expressions.
                                                               (line   8)
@@ -25565,8 +25565,8 @@ Index
 * Cygwin-specific commands:              Cygwin Native.       (line   6)
 * d (delete):                            Delete Breaks.       (line  36)
 * d (SingleKey TUI key):                 TUI Single Key Mode. (line  13)
-* D packet:                              Packets.             (line  92)
 * d packet:                              Packets.             (line  86)
+* D packet:                              Packets.             (line  92)
 * data breakpoints:                      Breakpoints.         (line  20)
 * data manipulation, in GDB/MI:          GDB/MI Data Manipulation.
                                                               (line   6)
@@ -25662,8 +25662,8 @@ Index
 * dont-repeat:                           Define.              (line  58)
 * DOS serial data link, remote debugging: DJGPP Native.       (line 121)
 * DOS serial port status:                DJGPP Native.        (line 142)
-* Down:                                  TUI Keys.            (line  60)
 * down:                                  Selection.           (line  40)
+* Down:                                  TUI Keys.            (line  60)
 * down-silently:                         Selection.           (line  64)
 * downcase-word (M-l):                   Commands For Text.   (line  45)
 * download server address (M32R):        M32R/D.              (line  27)
@@ -25832,8 +25832,8 @@ Index
 * function entry/exit, wrong values of variables: Variables.  (line  58)
 * functions without line info, and stepping: Continuing and Stepping.
                                                               (line  93)
-* G packet:                              Packets.             (line 124)
 * g packet:                              Packets.             (line 108)
+* G packet:                              Packets.             (line 124)
 * g++, GNU C++ compiler:                 C.                   (line  10)
 * garbled pointers:                      DJGPP Native.        (line  42)
 * GCC and C++:                           C plus plus expressions.
@@ -25927,8 +25927,8 @@ Index
 * htrace:                                OpenRISC 1000.       (line  69)
 * hwatch:                                OpenRISC 1000.       (line  59)
 * i (info):                              Help.                (line 100)
-* I packet:                              Packets.             (line 154)
 * i packet:                              Packets.             (line 149)
+* I packet:                              Packets.             (line 154)
 * i/o:                                   Input/Output.        (line   6)
 * I/O registers (Atmel AVR):             AVR.                 (line  10)
 * i386:                                  remote stub.         (line  57)
@@ -26367,8 +26367,8 @@ Index
 * overloading in C++:                    Debugging C plus plus.
                                                               (line  14)
 * overwrite-mode ():                     Commands For Text.   (line  53)
-* P packet:                              Packets.             (line 213)
 * p packet:                              Packets.             (line 198)
+* P packet:                              Packets.             (line 213)
 * Pacal objects, static members display: Print Settings.      (line 312)
 * packet size, remote protocol:          General Query Packets.
                                                               (line 275)
@@ -26620,8 +26620,8 @@ Index
 * s (SingleKey TUI key):                 TUI Single Key Mode. (line  28)
 * s (step):                              Continuing and Stepping.
                                                               (line  46)
-* S packet:                              Packets.             (line 247)
 * s packet:                              Packets.             (line 241)
+* S packet:                              Packets.             (line 247)
 * save command history:                  Command History.     (line  36)
 * save GDB output to a file:             Logging output.      (line   6)
 * save tracepoints for future sessions:  save-tracepoints.    (line   6)
@@ -27054,8 +27054,8 @@ Index
 * sysinfo:                               DJGPP Native.        (line  19)
 * system calls and thread breakpoints:   Thread Stops.        (line  36)
 * system, file-i/o system call:          system.              (line   6)
-* T packet:                              Packets.             (line 259)
 * t packet:                              Packets.             (line 254)
+* T packet:                              Packets.             (line 259)
 * T packet reply:                        Stop Reply Packets.  (line  22)
 * tabset NCHARS:                         TUI Commands.        (line  65)
 * target:                                Target Commands.     (line  49)
@@ -27301,12 +27301,12 @@ Index
 * z0 packet:                             Packets.             (line 385)
 * Z1 packet:                             Packets.             (line 411)
 * z1 packet:                             Packets.             (line 411)
-* Z2 packet:                             Packets.             (line 432)
 * z2 packet:                             Packets.             (line 432)
+* Z2 packet:                             Packets.             (line 432)
 * Z3 packet:                             Packets.             (line 446)
 * z3 packet:                             Packets.             (line 446)
-* Z4 packet:                             Packets.             (line 460)
 * z4 packet:                             Packets.             (line 460)
+* Z4 packet:                             Packets.             (line 460)
 * Z8000:                                 Z8000.               (line   6)
 * Zilog Z8000 simulator:                 Z8000.               (line   6)
 * {TYPE}:                                Expressions.         (line  42)
@@ -27314,384 +27314,384 @@ Index
 
 \1f
 Tag Table:
-Node: Top\7f1199
-Node: Summary\7f3625
-Node: Free Software\7f5261
-Node: Contributors\7f10829
-Node: Sample Session\7f18813
-Node: Invocation\7f25649
-Node: Invoking GDB\7f26193
-Node: File Options\7f28506
-Node: Mode Options\7f31266
-Node: Startup\7f37678
-Ref: Startup-Footnote-1\7f40133
-Node: Quitting GDB\7f40242
-Node: Shell Commands\7f41139
-Node: Logging output\7f41981
-Node: Commands\7f42827
-Node: Command Syntax\7f43465
-Node: Completion\7f45631
-Node: Help\7f49966
-Node: Running\7f55196
-Node: Compilation\7f56378
-Node: Starting\7f59017
-Node: Arguments\7f63906
-Node: Environment\7f65176
-Node: Working Directory\7f68444
-Node: Input/Output\7f69552
-Node: Attach\7f71523
-Node: Kill Process\7f73959
-Node: Threads\7f74925
-Node: Processes\7f81069
-Node: Checkpoint/Restart\7f86120
-Ref: Checkpoint/Restart-Footnote-1\7f90653
-Node: Stopping\7f90688
-Node: Breakpoints\7f91835
-Node: Set Breaks\7f95253
-Node: Set Watchpoints\7f106972
-Node: Set Catchpoints\7f114810
-Node: Delete Breaks\7f118288
-Node: Disabling\7f120005
-Node: Conditions\7f122772
-Node: Break Commands\7f127720
-Node: Breakpoint Menus\7f130605
-Node: Error in Breakpoints\7f132337
-Node: Breakpoint related warnings\7f133915
-Node: Continuing and Stepping\7f136242
-Node: Signals\7f145582
-Node: Thread Stops\7f149854
-Node: Stack\7f154459
-Node: Frames\7f155934
-Node: Backtrace\7f158686
-Ref: Backtrace-Footnote-1\7f163576
-Node: Selection\7f163764
-Node: Frame Info\7f166628
-Node: Source\7f168959
-Node: List\7f169963
-Node: Edit\7f173492
-Ref: Edit-Footnote-1\7f175223
-Node: Search\7f175458
-Node: Source Path\7f176266
-Ref: set substitute-path\7f182020
-Node: Machine Code\7f184241
-Node: Data\7f187651
-Node: Expressions\7f190032
-Node: Variables\7f192000
-Node: Arrays\7f195986
-Node: Output Formats\7f198515
-Ref: Output Formats-Footnote-1\7f200737
-Node: Memory\7f200894
-Node: Auto Display\7f205930
-Node: Print Settings\7f209702
-Node: Value History\7f221488
-Node: Convenience Vars\7f223904
-Node: Registers\7f227428
-Ref: Registers-Footnote-1\7f232103
-Node: Floating Point Hardware\7f232498
-Node: Vector Unit\7f233028
-Node: OS Information\7f233413
-Node: Memory Region Attributes\7f235411
-Node: Dump/Restore Files\7f239227
-Node: Core File Generation\7f241530
-Node: Character Sets\7f242762
-Node: Caching Remote Data\7f249594
-Node: Macros\7f250732
-Node: Tracepoints\7f257683
-Node: Set Tracepoints\7f259525
-Node: Create and Delete Tracepoints\7f260724
-Node: Enable and Disable Tracepoints\7f262368
-Node: Tracepoint Passcounts\7f263067
-Node: Tracepoint Actions\7f264491
-Node: Listing Tracepoints\7f267491
-Node: Starting and Stopping Trace Experiment\7f268612
-Node: Analyze Collected Data\7f269790
-Node: tfind\7f271095
-Node: tdump\7f275488
-Node: save-tracepoints\7f277147
-Node: Tracepoint Variables\7f277566
-Node: Overlays\7f278581
-Node: How Overlays Work\7f279301
-Ref: A code overlay\7f281861
-Node: Overlay Commands\7f285299
-Node: Automatic Overlay Debugging\7f289489
-Node: Overlay Sample Program\7f291630
-Node: Languages\7f293390
-Node: Setting\7f294553
-Node: Filenames\7f296255
-Node: Manually\7f297041
-Node: Automatically\7f298250
-Node: Show\7f299311
-Node: Checks\7f300633
-Node: Type Checking\7f302023
-Node: Range Checking\7f304756
-Node: Supported languages\7f307157
-Node: C\7f308330
-Node: C Operators\7f309561
-Node: C Constants\7f313942
-Node: C plus plus expressions\7f316429
-Node: C Defaults\7f319972
-Node: C Checks\7f320655
-Node: Debugging C\7f321378
-Node: Debugging C plus plus\7f321898
-Node: Objective-C\7f324984
-Node: Method Names in Commands\7f325445
-Node: The Print Command with Objective-C\7f327160
-Node: Fortran\7f327811
-Node: Fortran Operators\7f328536
-Node: Fortran Defaults\7f329126
-Node: Special Fortran commands\7f329511
-Node: Pascal\7f330011
-Node: Modula-2\7f330526
-Node: M2 Operators\7f331501
-Node: Built-In Func/Proc\7f334499
-Node: M2 Constants\7f337277
-Node: M2 Types\7f338878
-Node: M2 Defaults\7f342151
-Node: Deviations\7f342756
-Node: M2 Checks\7f343857
-Node: M2 Scope\7f344675
-Node: GDB/M2\7f345699
-Node: Ada\7f346611
-Node: Ada Mode Intro\7f347410
-Node: Omissions from Ada\7f349282
-Node: Additions to Ada\7f353243
-Node: Stopping Before Main Program\7f357141
-Node: Ada Glitches\7f357673
-Node: Unsupported languages\7f359651
-Node: Symbols\7f360341
-Node: Altering\7f373702
-Node: Assignment\7f374671
-Node: Jumping\7f377776
-Node: Signaling\7f379933
-Node: Returning\7f381064
-Node: Calling\7f382266
-Node: Patching\7f384159
-Node: GDB Files\7f385236
-Node: Files\7f385777
-Node: Separate Debug Files\7f403518
-Node: Symbol Errors\7f411860
-Node: Targets\7f415463
-Node: Active Targets\7f416992
-Node: Target Commands\7f418571
-Node: Byte Order\7f423811
-Node: Remote\7f424803
-Node: Remote Debugging\7f425913
-Node: Connecting\7f426303
-Node: Server\7f431171
-Ref: Server-Footnote-1\7f435534
-Node: Remote configuration\7f435654
-Ref: set remotebreak\7f436678
-Ref: set remote hardware-watchpoint-limit\7f438403
-Ref: set remote hardware-breakpoint-limit\7f438403
-Node: remote stub\7f440317
-Node: Stub Contents\7f443214
-Node: Bootstrapping\7f445325
-Node: Debug Session\7f449134
-Node: Configurations\7f450694
-Node: Native\7f451463
-Node: HP-UX\7f452057
-Node: BSD libkvm Interface\7f452346
-Node: SVR4 Process Information\7f453417
-Node: DJGPP Native\7f456847
-Node: Cygwin Native\7f463427
-Node: Non-debug DLL symbols\7f466825
-Node: Hurd Native\7f471375
-Node: Neutrino\7f476638
-Node: Embedded OS\7f477013
-Node: VxWorks\7f477489
-Node: VxWorks Connection\7f479706
-Node: VxWorks Download\7f480640
-Node: VxWorks Attach\7f482375
-Node: Embedded Processors\7f482773
-Node: ARM\7f484150
-Node: H8/300\7f487104
-Node: Renesas Boards\7f488603
-Node: Renesas ICE\7f493027
-Node: Renesas Special\7f494754
-Node: H8/500\7f495204
-Node: M32R/D\7f495579
-Node: M68K\7f497284
-Node: MIPS Embedded\7f497918
-Node: OpenRISC 1000\7f502863
-Node: PowerPC\7f505717
-Node: PA\7f506381
-Node: SH\7f506661
-Node: Sparclet\7f507122
-Node: Sparclet File\7f508594
-Node: Sparclet Connection\7f509476
-Node: Sparclet Download\7f509956
-Node: Sparclet Execution\7f511007
-Node: Sparclite\7f511600
-Node: ST2000\7f511976
-Node: Z8000\7f513521
-Node: AVR\7f514902
-Node: CRIS\7f515265
-Node: Super-H\7f516243
-Node: WinCE\7f516499
-Node: Architectures\7f517407
-Node: i386\7f517755
-Node: A29K\7f518439
-Node: Alpha\7f519278
-Node: MIPS\7f519411
-Node: HPPA\7f522723
-Node: Controlling GDB\7f523229
-Node: Prompt\7f523990
-Node: Editing\7f524769
-Node: Command History\7f525712
-Node: Screen Size\7f529092
-Node: Numbers\7f530797
-Node: ABI\7f532774
-Node: Messages/Warnings\7f535703
-Node: Debugging Output\7f538196
-Node: Sequences\7f542403
-Node: Define\7f543005
-Node: Hooks\7f546356
-Node: Command Files\7f548546
-Node: Output\7f552399
-Node: Interpreters\7f554813
-Node: TUI\7f556904
-Node: TUI Overview\7f557598
-Node: TUI Keys\7f560683
-Node: TUI Single Key Mode\7f563184
-Node: TUI Commands\7f564027
-Node: TUI Configuration\7f565964
-Node: Emacs\7f567442
-Node: GDB/MI\7f572550
-Node: GDB/MI Command Syntax\7f574341
-Node: GDB/MI Input Syntax\7f574554
-Node: GDB/MI Output Syntax\7f576108
-Node: GDB/MI Compatibility with CLI\7f579526
-Node: GDB/MI Development and Front Ends\7f580263
-Node: GDB/MI Output Records\7f582065
-Node: GDB/MI Result Records\7f582347
-Node: GDB/MI Stream Records\7f583074
-Node: GDB/MI Out-of-band Records\7f584345
-Node: GDB/MI Simple Examples\7f585782
-Node: GDB/MI Command Description Format\7f587595
-Node: GDB/MI Breakpoint Commands\7f588475
-Node: GDB/MI Program Context\7f604844
-Node: GDB/MI Thread Commands\7f609326
-Node: GDB/MI Program Execution\7f611402
-Node: GDB/MI Stack Manipulation\7f620011
-Node: GDB/MI Variable Objects\7f629645
-Ref: -var-list-children\7f635409
-Node: GDB/MI Data Manipulation\7f638642
-Node: GDB/MI Tracepoint Commands\7f653008
-Node: GDB/MI Symbol Query\7f653252
-Node: GDB/MI File Commands\7f656540
-Node: GDB/MI Target Manipulation\7f660646
-Node: GDB/MI Miscellaneous Commands\7f667825
-Ref: -interpreter-exec\7f669957
-Node: Annotations\7f671179
-Node: Annotations Overview\7f672019
-Node: Prompting\7f674477
-Node: Errors\7f676001
-Node: Invalidation\7f676897
-Node: Annotations for Running\7f677374
-Node: Source Annotations\7f678894
-Node: GDB Bugs\7f679819
-Node: Bug Criteria\7f680545
-Node: Bug Reporting\7f681422
-Node: Command Line Editing\7f689044
-Node: Introduction and Notation\7f689712
-Node: Readline Interaction\7f691332
-Node: Readline Bare Essentials\7f692521
-Node: Readline Movement Commands\7f694308
-Node: Readline Killing Commands\7f695271
-Node: Readline Arguments\7f697189
-Node: Searching\7f698231
-Node: Readline Init File\7f700380
-Node: Readline Init File Syntax\7f701443
-Node: Conditional Init Constructs\7f713375
-Node: Sample Init File\7f715906
-Node: Bindable Readline Commands\7f719021
-Node: Commands For Moving\7f720076
-Node: Commands For History\7f720935
-Node: Commands For Text\7f724057
-Node: Commands For Killing\7f726781
-Node: Numeric Arguments\7f728921
-Node: Commands For Completion\7f730058
-Node: Keyboard Macros\7f731600
-Node: Miscellaneous Commands\7f732169
-Node: Readline vi Mode\7f735528
-Node: Using History Interactively\7f736445
-Node: History Interaction\7f736950
-Node: Event Designators\7f738372
-Node: Word Designators\7f739305
-Node: Modifiers\7f740942
-Node: Formatting Documentation\7f742167
-Ref: Formatting Documentation-Footnote-1\7f745487
-Node: Installing GDB\7f745551
-Node: Requirements\7f746063
-Node: Running Configure\7f747144
-Node: Separate Objdir\7f750683
-Node: Config Names\7f753567
-Node: Configure Options\7f755012
-Node: Maintenance Commands\7f757349
-Ref: maint info breakpoints\7f758008
-Node: Remote Protocol\7f767516
-Node: Overview\7f767923
-Ref: Binary Data\7f770109
-Node: Packets\7f771915
-Ref: read registers packet\7f775521
-Ref: cycle step packet\7f776674
-Ref: write register packet\7f778550
-Ref: step with signal packet\7f779428
-Ref: X packet\7f783099
-Ref: insert breakpoint or watchpoint packet\7f783389
-Node: Stop Reply Packets\7f785835
-Node: General Query Packets\7f788894
-Ref: qSupported\7f795880
-Ref: qXfer read\7f803384
-Ref: qXfer auxiliary vector read\7f803882
-Ref: qXfer memory map read\7f804227
-Ref: General Query Packets-Footnote-1\7f807029
-Node: Register Packet Format\7f807356
-Node: Tracepoint Packets\7f808274
-Node: Interrupts\7f814363
-Node: Examples\7f815826
-Node: File-I/O remote protocol extension\7f816439
-Node: File-I/O Overview\7f816897
-Node: Protocol basics\7f819044
-Node: The F request packet\7f821274
-Node: The F reply packet\7f822173
-Node: The Ctrl-C message\7f823089
-Node: Console I/O\7f824716
-Node: List of supported calls\7f825932
-Node: open\7f826292
-Node: close\7f828786
-Node: read\7f829168
-Node: write\7f829775
-Node: lseek\7f830542
-Node: rename\7f831420
-Node: unlink\7f832816
-Node: stat/fstat\7f833755
-Node: gettimeofday\7f834642
-Node: isatty\7f835077
-Node: system\7f835673
-Node: Protocol specific representation of datatypes\7f837215
-Node: Integral datatypes\7f837590
-Node: Pointer values\7f838397
-Node: Memory transfer\7f839105
-Node: struct stat\7f839725
-Node: struct timeval\7f841927
-Node: Constants\7f842444
-Node: Open flags\7f842891
-Node: mode_t values\7f843232
-Node: Errno values\7f843724
-Node: Lseek flags\7f844535
-Node: Limits\7f844720
-Node: File-I/O Examples\7f845080
-Node: Memory map format\7f846194
-Node: Agent Expressions\7f848649
-Node: General Bytecode Design\7f851570
-Node: Bytecode Descriptions\7f856370
-Node: Using Agent Expressions\7f867056
-Node: Varying Target Capabilities\7f868589
-Node: Tracing on Symmetrix\7f869762
-Node: Rationale\7f875584
-Node: Copying\7f882963
-Node: GNU Free Documentation License\7f902179
-Node: Index\7f924614
+Node: Top\7f1182
+Node: Summary\7f3608
+Node: Free Software\7f5244
+Node: Contributors\7f10812
+Node: Sample Session\7f18796
+Node: Invocation\7f25632
+Node: Invoking GDB\7f26176
+Node: File Options\7f28489
+Node: Mode Options\7f31249
+Node: Startup\7f37661
+Ref: Startup-Footnote-1\7f40116
+Node: Quitting GDB\7f40225
+Node: Shell Commands\7f41122
+Node: Logging output\7f41964
+Node: Commands\7f42810
+Node: Command Syntax\7f43448
+Node: Completion\7f45614
+Node: Help\7f49949
+Node: Running\7f55179
+Node: Compilation\7f56361
+Node: Starting\7f59000
+Node: Arguments\7f63889
+Node: Environment\7f65159
+Node: Working Directory\7f68427
+Node: Input/Output\7f69535
+Node: Attach\7f71506
+Node: Kill Process\7f73942
+Node: Threads\7f74908
+Node: Processes\7f81052
+Node: Checkpoint/Restart\7f86103
+Ref: Checkpoint/Restart-Footnote-1\7f90636
+Node: Stopping\7f90671
+Node: Breakpoints\7f91818
+Node: Set Breaks\7f95236
+Node: Set Watchpoints\7f106955
+Node: Set Catchpoints\7f114793
+Node: Delete Breaks\7f118271
+Node: Disabling\7f119988
+Node: Conditions\7f122755
+Node: Break Commands\7f127703
+Node: Breakpoint Menus\7f130588
+Node: Error in Breakpoints\7f132320
+Node: Breakpoint related warnings\7f133898
+Node: Continuing and Stepping\7f136225
+Node: Signals\7f145565
+Node: Thread Stops\7f149837
+Node: Stack\7f154442
+Node: Frames\7f155917
+Node: Backtrace\7f158669
+Ref: Backtrace-Footnote-1\7f163559
+Node: Selection\7f163747
+Node: Frame Info\7f166611
+Node: Source\7f168942
+Node: List\7f169946
+Node: Edit\7f173475
+Ref: Edit-Footnote-1\7f175206
+Node: Search\7f175441
+Node: Source Path\7f176249
+Ref: set substitute-path\7f182003
+Node: Machine Code\7f184224
+Node: Data\7f187634
+Node: Expressions\7f190015
+Node: Variables\7f191983
+Node: Arrays\7f195969
+Node: Output Formats\7f198498
+Ref: Output Formats-Footnote-1\7f200720
+Node: Memory\7f200877
+Node: Auto Display\7f205913
+Node: Print Settings\7f209685
+Node: Value History\7f221471
+Node: Convenience Vars\7f223887
+Node: Registers\7f227411
+Ref: Registers-Footnote-1\7f232086
+Node: Floating Point Hardware\7f232481
+Node: Vector Unit\7f233011
+Node: OS Information\7f233396
+Node: Memory Region Attributes\7f235394
+Node: Dump/Restore Files\7f239210
+Node: Core File Generation\7f241513
+Node: Character Sets\7f242745
+Node: Caching Remote Data\7f249577
+Node: Macros\7f250715
+Node: Tracepoints\7f257666
+Node: Set Tracepoints\7f259508
+Node: Create and Delete Tracepoints\7f260707
+Node: Enable and Disable Tracepoints\7f262351
+Node: Tracepoint Passcounts\7f263050
+Node: Tracepoint Actions\7f264474
+Node: Listing Tracepoints\7f267474
+Node: Starting and Stopping Trace Experiment\7f268595
+Node: Analyze Collected Data\7f269773
+Node: tfind\7f271078
+Node: tdump\7f275471
+Node: save-tracepoints\7f277130
+Node: Tracepoint Variables\7f277549
+Node: Overlays\7f278564
+Node: How Overlays Work\7f279284
+Ref: A code overlay\7f281844
+Node: Overlay Commands\7f285282
+Node: Automatic Overlay Debugging\7f289472
+Node: Overlay Sample Program\7f291613
+Node: Languages\7f293373
+Node: Setting\7f294536
+Node: Filenames\7f296238
+Node: Manually\7f297024
+Node: Automatically\7f298233
+Node: Show\7f299294
+Node: Checks\7f300616
+Node: Type Checking\7f302006
+Node: Range Checking\7f304739
+Node: Supported languages\7f307140
+Node: C\7f308313
+Node: C Operators\7f309544
+Node: C Constants\7f313925
+Node: C plus plus expressions\7f316412
+Node: C Defaults\7f319955
+Node: C Checks\7f320638
+Node: Debugging C\7f321361
+Node: Debugging C plus plus\7f321881
+Node: Objective-C\7f324967
+Node: Method Names in Commands\7f325428
+Node: The Print Command with Objective-C\7f327143
+Node: Fortran\7f327794
+Node: Fortran Operators\7f328519
+Node: Fortran Defaults\7f329109
+Node: Special Fortran commands\7f329494
+Node: Pascal\7f329994
+Node: Modula-2\7f330509
+Node: M2 Operators\7f331484
+Node: Built-In Func/Proc\7f334482
+Node: M2 Constants\7f337260
+Node: M2 Types\7f338861
+Node: M2 Defaults\7f342134
+Node: Deviations\7f342739
+Node: M2 Checks\7f343840
+Node: M2 Scope\7f344658
+Node: GDB/M2\7f345682
+Node: Ada\7f346594
+Node: Ada Mode Intro\7f347393
+Node: Omissions from Ada\7f349265
+Node: Additions to Ada\7f353226
+Node: Stopping Before Main Program\7f357124
+Node: Ada Glitches\7f357656
+Node: Unsupported languages\7f359634
+Node: Symbols\7f360324
+Node: Altering\7f373685
+Node: Assignment\7f374654
+Node: Jumping\7f377759
+Node: Signaling\7f379916
+Node: Returning\7f381047
+Node: Calling\7f382249
+Node: Patching\7f384142
+Node: GDB Files\7f385219
+Node: Files\7f385760
+Node: Separate Debug Files\7f403501
+Node: Symbol Errors\7f411843
+Node: Targets\7f415446
+Node: Active Targets\7f416975
+Node: Target Commands\7f418554
+Node: Byte Order\7f423794
+Node: Remote\7f424786
+Node: Remote Debugging\7f425896
+Node: Connecting\7f426286
+Node: Server\7f431154
+Ref: Server-Footnote-1\7f435517
+Node: Remote configuration\7f435637
+Ref: set remotebreak\7f436661
+Ref: set remote hardware-watchpoint-limit\7f438386
+Ref: set remote hardware-breakpoint-limit\7f438386
+Node: remote stub\7f440300
+Node: Stub Contents\7f443197
+Node: Bootstrapping\7f445308
+Node: Debug Session\7f449117
+Node: Configurations\7f450677
+Node: Native\7f451446
+Node: HP-UX\7f452040
+Node: BSD libkvm Interface\7f452329
+Node: SVR4 Process Information\7f453400
+Node: DJGPP Native\7f456830
+Node: Cygwin Native\7f463410
+Node: Non-debug DLL symbols\7f466808
+Node: Hurd Native\7f471358
+Node: Neutrino\7f476621
+Node: Embedded OS\7f476996
+Node: VxWorks\7f477472
+Node: VxWorks Connection\7f479689
+Node: VxWorks Download\7f480623
+Node: VxWorks Attach\7f482358
+Node: Embedded Processors\7f482756
+Node: ARM\7f484133
+Node: H8/300\7f487087
+Node: Renesas Boards\7f488586
+Node: Renesas ICE\7f493010
+Node: Renesas Special\7f494737
+Node: H8/500\7f495187
+Node: M32R/D\7f495562
+Node: M68K\7f497267
+Node: MIPS Embedded\7f497901
+Node: OpenRISC 1000\7f502846
+Node: PowerPC\7f505700
+Node: PA\7f506364
+Node: SH\7f506644
+Node: Sparclet\7f507105
+Node: Sparclet File\7f508577
+Node: Sparclet Connection\7f509459
+Node: Sparclet Download\7f509939
+Node: Sparclet Execution\7f510990
+Node: Sparclite\7f511583
+Node: ST2000\7f511959
+Node: Z8000\7f513504
+Node: AVR\7f514885
+Node: CRIS\7f515248
+Node: Super-H\7f516226
+Node: WinCE\7f516482
+Node: Architectures\7f517390
+Node: i386\7f517738
+Node: A29K\7f518422
+Node: Alpha\7f519261
+Node: MIPS\7f519394
+Node: HPPA\7f522706
+Node: Controlling GDB\7f523212
+Node: Prompt\7f523973
+Node: Editing\7f524752
+Node: Command History\7f525695
+Node: Screen Size\7f529075
+Node: Numbers\7f530780
+Node: ABI\7f532757
+Node: Messages/Warnings\7f535686
+Node: Debugging Output\7f538179
+Node: Sequences\7f542386
+Node: Define\7f542988
+Node: Hooks\7f546339
+Node: Command Files\7f548529
+Node: Output\7f552382
+Node: Interpreters\7f554796
+Node: TUI\7f556887
+Node: TUI Overview\7f557581
+Node: TUI Keys\7f560666
+Node: TUI Single Key Mode\7f563167
+Node: TUI Commands\7f564010
+Node: TUI Configuration\7f565947
+Node: Emacs\7f567425
+Node: GDB/MI\7f572533
+Node: GDB/MI Command Syntax\7f574324
+Node: GDB/MI Input Syntax\7f574537
+Node: GDB/MI Output Syntax\7f576091
+Node: GDB/MI Compatibility with CLI\7f579509
+Node: GDB/MI Development and Front Ends\7f580246
+Node: GDB/MI Output Records\7f582048
+Node: GDB/MI Result Records\7f582330
+Node: GDB/MI Stream Records\7f583057
+Node: GDB/MI Out-of-band Records\7f584328
+Node: GDB/MI Simple Examples\7f585765
+Node: GDB/MI Command Description Format\7f587578
+Node: GDB/MI Breakpoint Commands\7f588458
+Node: GDB/MI Program Context\7f604827
+Node: GDB/MI Thread Commands\7f609309
+Node: GDB/MI Program Execution\7f611385
+Node: GDB/MI Stack Manipulation\7f619994
+Node: GDB/MI Variable Objects\7f629628
+Ref: -var-list-children\7f635392
+Node: GDB/MI Data Manipulation\7f638625
+Node: GDB/MI Tracepoint Commands\7f652991
+Node: GDB/MI Symbol Query\7f653235
+Node: GDB/MI File Commands\7f656523
+Node: GDB/MI Target Manipulation\7f660629
+Node: GDB/MI Miscellaneous Commands\7f667808
+Ref: -interpreter-exec\7f669940
+Node: Annotations\7f671162
+Node: Annotations Overview\7f672002
+Node: Prompting\7f674460
+Node: Errors\7f675984
+Node: Invalidation\7f676880
+Node: Annotations for Running\7f677357
+Node: Source Annotations\7f678877
+Node: GDB Bugs\7f679802
+Node: Bug Criteria\7f680528
+Node: Bug Reporting\7f681405
+Node: Command Line Editing\7f689027
+Node: Introduction and Notation\7f689695
+Node: Readline Interaction\7f691315
+Node: Readline Bare Essentials\7f692504
+Node: Readline Movement Commands\7f694291
+Node: Readline Killing Commands\7f695254
+Node: Readline Arguments\7f697172
+Node: Searching\7f698214
+Node: Readline Init File\7f700363
+Node: Readline Init File Syntax\7f701426
+Node: Conditional Init Constructs\7f713358
+Node: Sample Init File\7f715889
+Node: Bindable Readline Commands\7f719004
+Node: Commands For Moving\7f720059
+Node: Commands For History\7f720918
+Node: Commands For Text\7f724040
+Node: Commands For Killing\7f726764
+Node: Numeric Arguments\7f728904
+Node: Commands For Completion\7f730041
+Node: Keyboard Macros\7f731583
+Node: Miscellaneous Commands\7f732152
+Node: Readline vi Mode\7f735511
+Node: Using History Interactively\7f736428
+Node: History Interaction\7f736933
+Node: Event Designators\7f738355
+Node: Word Designators\7f739288
+Node: Modifiers\7f740925
+Node: Formatting Documentation\7f742150
+Ref: Formatting Documentation-Footnote-1\7f745470
+Node: Installing GDB\7f745534
+Node: Requirements\7f746046
+Node: Running Configure\7f747127
+Node: Separate Objdir\7f750666
+Node: Config Names\7f753550
+Node: Configure Options\7f754995
+Node: Maintenance Commands\7f757332
+Ref: maint info breakpoints\7f757991
+Node: Remote Protocol\7f767499
+Node: Overview\7f767906
+Ref: Binary Data\7f770092
+Node: Packets\7f771898
+Ref: read registers packet\7f775504
+Ref: cycle step packet\7f776657
+Ref: write register packet\7f778533
+Ref: step with signal packet\7f779411
+Ref: X packet\7f783082
+Ref: insert breakpoint or watchpoint packet\7f783372
+Node: Stop Reply Packets\7f785818
+Node: General Query Packets\7f788877
+Ref: qSupported\7f795863
+Ref: qXfer read\7f803367
+Ref: qXfer auxiliary vector read\7f803865
+Ref: qXfer memory map read\7f804210
+Ref: General Query Packets-Footnote-1\7f807012
+Node: Register Packet Format\7f807339
+Node: Tracepoint Packets\7f808257
+Node: Interrupts\7f814346
+Node: Examples\7f815809
+Node: File-I/O remote protocol extension\7f816422
+Node: File-I/O Overview\7f816880
+Node: Protocol basics\7f819027
+Node: The F request packet\7f821257
+Node: The F reply packet\7f822156
+Node: The Ctrl-C message\7f823072
+Node: Console I/O\7f824699
+Node: List of supported calls\7f825915
+Node: open\7f826275
+Node: close\7f828769
+Node: read\7f829151
+Node: write\7f829758
+Node: lseek\7f830525
+Node: rename\7f831403
+Node: unlink\7f832799
+Node: stat/fstat\7f833738
+Node: gettimeofday\7f834625
+Node: isatty\7f835060
+Node: system\7f835656
+Node: Protocol specific representation of datatypes\7f837198
+Node: Integral datatypes\7f837573
+Node: Pointer values\7f838380
+Node: Memory transfer\7f839088
+Node: struct stat\7f839708
+Node: struct timeval\7f841910
+Node: Constants\7f842427
+Node: Open flags\7f842874
+Node: mode_t values\7f843215
+Node: Errno values\7f843707
+Node: Lseek flags\7f844518
+Node: Limits\7f844703
+Node: File-I/O Examples\7f845063
+Node: Memory map format\7f846177
+Node: Agent Expressions\7f848632
+Node: General Bytecode Design\7f851553
+Node: Bytecode Descriptions\7f856353
+Node: Using Agent Expressions\7f867039
+Node: Varying Target Capabilities\7f868572
+Node: Tracing on Symmetrix\7f869745
+Node: Rationale\7f875567
+Node: Copying\7f882946
+Node: GNU Free Documentation License\7f902162
+Node: Index\7f924597
 \1f
 End Tag Table
@@ -1,5 +1,5 @@
 This is gdbint.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gdb-6.6/gdb/doc/gdbint.texinfo.
+../../../../../toolchain/android-toolchain/gdb-6.6/gdb/doc/gdbint.texinfo.
 
 INFO-DIR-SECTION Software development
 START-INFO-DIR-ENTRY
@@ -7768,54 +7768,54 @@ Index
 
 \1f
 Tag Table:
-Node: Top\7f964
-Node: Requirements\7f1803
-Node: Overall Structure\7f3291
-Node: Algorithms\7f8224
-Node: User Interface\7f37932
-Ref: User Interface-Footnote-1\7f61709
-Ref: User Interface-Footnote-2\7f61758
-Node: libgdb\7f61993
-Node: Symbol Handling\7f65953
-Node: Language Support\7f81053
-Node: Host Definition\7f86454
-Node: Target Architecture Definition\7f93811
-Ref: BREAKPOINT_FROM_PC\7f121433
-Ref: DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS\7f127601
-Ref: frame_align\7f128433
-Ref: DEPRECATED_FRAME_SAVED_PC\7f130812
-Ref: unwind_pc\7f130998
-Ref: unwind_sp\7f131551
-Ref: stabs_argument_has_addr\7f144014
-Ref: push_dummy_call\7f144788
-Ref: push_dummy_code\7f145374
-Ref: DEPRECATED_REG_STRUCT_HAS_ADDR\7f146219
-Ref: SAVE_DUMMY_FRAME_TOS\7f146453
-Ref: gdbarch_return_value\7f147072
-Ref: DEPRECATED_STACK_ALIGN\7f150357
-Ref: TARGET_WRITE_PC\7f152984
-Ref: TARGET_READ_SP\7f153018
-Ref: unwind_dummy_id\7f154691
-Ref: Target Architecture Definition-Footnote-1\7f163244
-Ref: Target Architecture Definition-Footnote-2\7f163487
-Node: Target Vector Definition\7f163606
-Node: Managing Execution State\7f164149
-Node: Existing Targets\7f165962
-Node: Native Debugging\7f168283
-Node: Support Libraries\7f178722
-Node: Coding\7f190128
-Node: Porting GDB\7f215847
-Node: Versions and Branches\7f217756
-Ref: Tags\7f223715
-Ref: experimental branch tags\7f224046
-Node: Start of New Year Procedure\7f224778
-Node: Releasing GDB\7f225776
-Node: Testsuite\7f244120
-Node: Hints\7f251073
-Node: Getting Started\7f251395
-Node: Debugging GDB\7f255538
-Node: GDB Observers\7f260900
-Node: GNU Free Documentation License\7f265265
-Node: Index\7f287709
+Node: Top\7f947
+Node: Requirements\7f1786
+Node: Overall Structure\7f3274
+Node: Algorithms\7f8207
+Node: User Interface\7f37915
+Ref: User Interface-Footnote-1\7f61692
+Ref: User Interface-Footnote-2\7f61741
+Node: libgdb\7f61976
+Node: Symbol Handling\7f65936
+Node: Language Support\7f81036
+Node: Host Definition\7f86437
+Node: Target Architecture Definition\7f93794
+Ref: BREAKPOINT_FROM_PC\7f121416
+Ref: DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS\7f127584
+Ref: frame_align\7f128416
+Ref: DEPRECATED_FRAME_SAVED_PC\7f130795
+Ref: unwind_pc\7f130981
+Ref: unwind_sp\7f131534
+Ref: stabs_argument_has_addr\7f143997
+Ref: push_dummy_call\7f144771
+Ref: push_dummy_code\7f145357
+Ref: DEPRECATED_REG_STRUCT_HAS_ADDR\7f146202
+Ref: SAVE_DUMMY_FRAME_TOS\7f146436
+Ref: gdbarch_return_value\7f147055
+Ref: DEPRECATED_STACK_ALIGN\7f150340
+Ref: TARGET_WRITE_PC\7f152967
+Ref: TARGET_READ_SP\7f153001
+Ref: unwind_dummy_id\7f154674
+Ref: Target Architecture Definition-Footnote-1\7f163227
+Ref: Target Architecture Definition-Footnote-2\7f163470
+Node: Target Vector Definition\7f163589
+Node: Managing Execution State\7f164132
+Node: Existing Targets\7f165945
+Node: Native Debugging\7f168266
+Node: Support Libraries\7f178705
+Node: Coding\7f190111
+Node: Porting GDB\7f215830
+Node: Versions and Branches\7f217739
+Ref: Tags\7f223698
+Ref: experimental branch tags\7f224029
+Node: Start of New Year Procedure\7f224761
+Node: Releasing GDB\7f225759
+Node: Testsuite\7f244103
+Node: Hints\7f251056
+Node: Getting Started\7f251378
+Node: Debugging GDB\7f255521
+Node: GDB Observers\7f260883
+Node: GNU Free Documentation License\7f265248
+Node: Index\7f287692
 \1f
 End Tag Table
diff --git a/darwin-x86/toolchain/arm-eabi-4.4.0/share/info/standards.info b/darwin-x86/toolchain/arm-eabi-4.4.0/share/info/standards.info
new file mode 100644 (file)
index 0000000..4fc9776
--- /dev/null
@@ -0,0 +1,4930 @@
+This is standards.info, produced by makeinfo version 4.8 from
+.././etc/standards.texi.
+
+START-INFO-DIR-ENTRY
+* Standards: (standards).        GNU coding standards.
+END-INFO-DIR-ENTRY
+
+   GNU Coding Standards Copyright (C) 1992, 1993, 1994, 1995, 1996,
+1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+   Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.  A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+\1f
+File: standards.info,  Node: Top,  Next: Preface,  Prev: (dir),  Up: (dir)
+
+Version
+*******
+
+Last updated February 14, 2002.
+
+* Menu:
+
+* Preface::                     About the GNU Coding Standards
+* Legal Issues::                Keeping Free Software Free
+* Design Advice::               General Program Design
+* Program Behavior::            Program Behavior for All Programs
+* Writing C::                   Making The Best Use of C
+* Documentation::               Documenting Programs
+* Managing Releases::           The Release Process
+* References::                  References to Non-Free Software or Documentation
+* Copying This Manual::         How to Make Copies of This Manual
+* Index::
+
+\1f
+File: standards.info,  Node: Preface,  Next: Legal Issues,  Prev: Top,  Up: Top
+
+1 About the GNU Coding Standards
+********************************
+
+The GNU Coding Standards were written by Richard Stallman and other GNU
+Project volunteers.  Their purpose is to make the GNU system clean,
+consistent, and easy to install.  This document can also be read as a
+guide to writing portable, robust and reliable programs.  It focuses on
+programs written in C, but many of the rules and principles are useful
+even if you write in another programming language.  The rules often
+state reasons for writing in a certain way.
+
+   This release of the GNU Coding Standards was last updated February
+14, 2002.
+
+   If you did not obtain this file directly from the GNU project and
+recently, please check for a newer version.  You can ftp the GNU Coding
+Standards from any GNU FTP host in the directory `/pub/gnu/standards/'.
+The GNU Coding Standards are available there in several different
+formats: `standards.text', `standards.info', and `standards.dvi', as
+well as the Texinfo "source" which is divided in two files:
+`standards.texi' and `make-stds.texi'.  The GNU Coding Standards are
+also available on the GNU World Wide Web server:
+`http://www.gnu.org/prep/standards_toc.html'.
+
+   Corrections or suggestions for this document should be sent to
+<bug-standards@gnu.org>.  If you make a suggestion, please include a
+suggested new wording for it; our time is limited.  We prefer a context
+diff to the `standards.texi' or `make-stds.texi' files, but if you
+don't have those files, please mail your suggestion anyway.
+
+   These standards cover the minimum of what is important when writing a
+GNU package.  Likely, the needs for additional standards will come up.
+Sometimes, you might suggest that such standards be added to this
+document.  If you think your standards would be generally useful, please
+do suggest them.
+
+   You should also set standards for your package on many questions not
+addressed or not firmly specified here.  The most important point is to
+be self-consistent--try to stick to the conventions you pick, and try
+to document them as much as possible.  That way, your program will be
+more maintainable by others.
+
+\1f
+File: standards.info,  Node: Legal Issues,  Next: Design Advice,  Prev: Preface,  Up: Top
+
+2 Keeping Free Software Free
+****************************
+
+This node discusses how you can make sure that GNU software avoids
+legal difficulties, and other related issues.
+
+* Menu:
+
+* Reading Non-Free Code::       Referring to Proprietary Programs
+* Contributions::               Accepting Contributions
+* Trademarks::                  How We Deal with Trademark Issues
+
+\1f
+File: standards.info,  Node: Reading Non-Free Code,  Next: Contributions,  Up: Legal Issues
+
+2.1 Referring to Proprietary Programs
+=====================================
+
+Don't in any circumstances refer to Unix source code for or during your
+work on GNU!  (Or to any other proprietary programs.)
+
+   If you have a vague recollection of the internals of a Unix program,
+this does not absolutely mean you can't write an imitation of it, but
+do try to organize the imitation internally along different lines,
+because this is likely to make the details of the Unix version
+irrelevant and dissimilar to your results.
+
+   For example, Unix utilities were generally optimized to minimize
+memory use; if you go for speed instead, your program will be very
+different.  You could keep the entire input file in core and scan it
+there instead of using stdio.  Use a smarter algorithm discovered more
+recently than the Unix program.  Eliminate use of temporary files.  Do
+it in one pass instead of two (we did this in the assembler).
+
+   Or, on the contrary, emphasize simplicity instead of speed.  For some
+applications, the speed of today's computers makes simpler algorithms
+adequate.
+
+   Or go for generality.  For example, Unix programs often have static
+tables or fixed-size strings, which make for arbitrary limits; use
+dynamic allocation instead.  Make sure your program handles NULs and
+other funny characters in the input files.  Add a programming language
+for extensibility and write part of the program in that language.
+
+   Or turn some parts of the program into independently usable
+libraries.  Or use a simple garbage collector instead of tracking
+precisely when to free memory, or use a new GNU facility such as
+obstacks.
+
+\1f
+File: standards.info,  Node: Contributions,  Next: Trademarks,  Prev: Reading Non-Free Code,  Up: Legal Issues
+
+2.2 Accepting Contributions
+===========================
+
+If the program you are working on is copyrighted by the Free Software
+Foundation, then when someone else sends you a piece of code to add to
+the program, we need legal papers to use it--just as we asked you to
+sign papers initially.  _Each_ person who makes a nontrivial
+contribution to a program must sign some sort of legal papers in order
+for us to have clear title to the program; the main author alone is not
+enough.
+
+   So, before adding in any contributions from other people, please tell
+us, so we can arrange to get the papers.  Then wait until we tell you
+that we have received the signed papers, before you actually use the
+contribution.
+
+   This applies both before you release the program and afterward.  If
+you receive diffs to fix a bug, and they make significant changes, we
+need legal papers for that change.
+
+   This also applies to comments and documentation files.  For copyright
+law, comments and code are just text.  Copyright applies to all kinds of
+text, so we need legal papers for all kinds.
+
+   We know it is frustrating to ask for legal papers; it's frustrating
+for us as well.  But if you don't wait, you are going out on a limb--for
+example, what if the contributor's employer won't sign a disclaimer?
+You might have to take that code out again!
+
+   You don't need papers for changes of a few lines here or there, since
+they are not significant for copyright purposes.  Also, you don't need
+papers if all you get from the suggestion is some ideas, not actual code
+which you use.  For example, if someone send you one implementation, but
+you write a different implementation of the same idea, you don't need to
+get papers.
+
+   The very worst thing is if you forget to tell us about the other
+contributor.  We could be very embarrassed in court some day as a
+result.
+
+   We have more detailed advice for maintainers of programs; if you have
+reached the stage of actually maintaining a program for GNU (whether
+released or not), please ask us for a copy.
+
+\1f
+File: standards.info,  Node: Trademarks,  Prev: Contributions,  Up: Legal Issues
+
+2.3 Trademarks
+==============
+
+Please do not include any trademark acknowledgements in GNU software
+packages or documentation.
+
+   Trademark acknowledgements are the statements that such-and-such is a
+trademark of so-and-so.  The GNU Project has no objection to the basic
+idea of trademarks, but these acknowledgements feel like kowtowing, so
+we don't use them.  There is no legal requirement for them.
+
+   What is legally required, as regards other people's trademarks, is to
+avoid using them in ways which a reader might read as naming or labeling
+our own programs or activities.  For example, since "Objective C" is
+(or at least was) a trademark, we made sure to say that we provide a
+"compiler for the Objective C language" rather than an "Objective C
+compiler".  The latter is meant to be short for the former, but it does
+not explicitly state the relationship, so it could be misinterpreted as
+using "Objective C" as a label for the compiler rather than for the
+language.
+
+\1f
+File: standards.info,  Node: Design Advice,  Next: Program Behavior,  Prev: Legal Issues,  Up: Top
+
+3 General Program Design
+************************
+
+This node discusses some of the issues you should take into account
+when designing your program.
+
+* Menu:
+
+* Source Language::             Which languges to use.
+* Compatibility::               Compatibility with other implementations
+* Using Extensions::            Using non-standard features
+* Standard C::                  Using Standard C features
+* Conditional Compilation::     Compiling Code Only If A Conditional is True
+
+\1f
+File: standards.info,  Node: Source Language,  Next: Compatibility,  Up: Design Advice
+
+3.1 Which Languages to Use
+==========================
+
+When you want to use a language that gets compiled and runs at high
+speed, the best language to use is C.  Using another language is like
+using a non-standard feature: it will cause trouble for users.  Even if
+GCC supports the other language, users may find it inconvenient to have
+to install the compiler for that other language in order to build your
+program.  For example, if you write your program in C++, people will
+have to install the GNU C++ compiler in order to compile your program.
+
+   C has one other advantage over C++ and other compiled languages: more
+people know C, so more people will find it easy to read and modify the
+program if it is written in C.
+
+   So in general it is much better to use C, rather than the comparable
+alternatives.
+
+   But there are two exceptions to that conclusion:
+
+   * It is no problem to use another language to write a tool
+     specifically intended for use with that language.  That is because
+     the only people who want to build the tool will be those who have
+     installed the other language anyway.
+
+   * If an application is of interest only to a narrow part of the
+     community, then the question of which language it is written in
+     has less effect on other people, so you may as well please
+     yourself.
+
+   Many programs are designed to be extensible: they include an
+interpreter for a language that is higher level than C.  Often much of
+the program is written in that language, too.  The Emacs editor
+pioneered this technique.
+
+   The standard extensibility interpreter for GNU software is GUILE,
+which implements the language Scheme (an especially clean and simple
+dialect of Lisp).  `http://www.gnu.org/software/guile/'.  We don't
+reject programs written in other "scripting languages" such as Perl and
+Python, but using GUILE is very important for the overall consistency of
+the GNU system.
+
+\1f
+File: standards.info,  Node: Compatibility,  Next: Using Extensions,  Prev: Source Language,  Up: Design Advice
+
+3.2 Compatibility with Other Implementations
+============================================
+
+With occasional exceptions, utility programs and libraries for GNU
+should be upward compatible with those in Berkeley Unix, and upward
+compatible with Standard C if Standard C specifies their behavior, and
+upward compatible with POSIX if POSIX specifies their behavior.
+
+   When these standards conflict, it is useful to offer compatibility
+modes for each of them.
+
+   Standard C and POSIX prohibit many kinds of extensions.  Feel free
+to make the extensions anyway, and include a `--ansi', `--posix', or
+`--compatible' option to turn them off.  However, if the extension has
+a significant chance of breaking any real programs or scripts, then it
+is not really upward compatible.  So you should try to redesign its
+interface to make it upward compatible.
+
+   Many GNU programs suppress extensions that conflict with POSIX if the
+environment variable `POSIXLY_CORRECT' is defined (even if it is
+defined with a null value).  Please make your program recognize this
+variable if appropriate.
+
+   When a feature is used only by users (not by programs or command
+files), and it is done poorly in Unix, feel free to replace it
+completely with something totally different and better.  (For example,
+`vi' is replaced with Emacs.)  But it is nice to offer a compatible
+feature as well.  (There is a free `vi' clone, so we offer it.)
+
+   Additional useful features are welcome regardless of whether there
+is any precedent for them.
+
+\1f
+File: standards.info,  Node: Using Extensions,  Next: Standard C,  Prev: Compatibility,  Up: Design Advice
+
+3.3 Using Non-standard Features
+===============================
+
+Many GNU facilities that already exist support a number of convenient
+extensions over the comparable Unix facilities.  Whether to use these
+extensions in implementing your program is a difficult question.
+
+   On the one hand, using the extensions can make a cleaner program.
+On the other hand, people will not be able to build the program unless
+the other GNU tools are available.  This might cause the program to
+work on fewer kinds of machines.
+
+   With some extensions, it might be easy to provide both alternatives.
+For example, you can define functions with a "keyword" `INLINE' and
+define that as a macro to expand into either `inline' or nothing,
+depending on the compiler.
+
+   In general, perhaps it is best not to use the extensions if you can
+straightforwardly do without them, but to use the extensions if they
+are a big improvement.
+
+   An exception to this rule are the large, established programs (such
+as Emacs) which run on a great variety of systems.  Using GNU
+extensions in such programs would make many users unhappy, so we don't
+do that.
+
+   Another exception is for programs that are used as part of
+compilation: anything that must be compiled with other compilers in
+order to bootstrap the GNU compilation facilities.  If these require
+the GNU compiler, then no one can compile them without having them
+installed already.  That would be extremely troublesome in certain
+cases.
+
+\1f
+File: standards.info,  Node: Standard C,  Next: Conditional Compilation,  Prev: Using Extensions,  Up: Design Advice
+
+3.4 Standard C and Pre-Standard C
+=================================
+
+1989 Standard C is widespread enough now that it is ok to use its
+features in new programs.  There is one exception: do not ever use the
+"trigraph" feature of Standard C.
+
+   1999 Standard C is not widespread yet, so please do not require its
+features in programs.  It is ok to use its features if they are present.
+
+   However, it is easy to support pre-standard compilers in most
+programs, so if you know how to do that, feel free.  If a program you
+are maintaining has such support, you should try to keep it working.
+
+   To support pre-standard C, instead of writing function definitions in
+standard prototype form,
+
+     int
+     foo (int x, int y)
+     ...
+
+write the definition in pre-standard style like this,
+
+     int
+     foo (x, y)
+          int x, y;
+     ...
+
+and use a separate declaration to specify the argument prototype:
+
+     int foo (int, int);
+
+   You need such a declaration anyway, in a header file, to get the
+benefit of prototypes in all the files where the function is called.
+And once you have the declaration, you normally lose nothing by writing
+the function definition in the pre-standard style.
+
+   This technique does not work for integer types narrower than `int'.
+If you think of an argument as being of a type narrower than `int',
+declare it as `int' instead.
+
+   There are a few special cases where this technique is hard to use.
+For example, if a function argument needs to hold the system type
+`dev_t', you run into trouble, because `dev_t' is shorter than `int' on
+some machines; but you cannot use `int' instead, because `dev_t' is
+wider than `int' on some machines.  There is no type you can safely use
+on all machines in a non-standard definition.  The only way to support
+non-standard C and pass such an argument is to check the width of
+`dev_t' using Autoconf and choose the argument type accordingly.  This
+may not be worth the trouble.
+
+   In order to support pre-standard compilers that do not recognize
+prototypes, you may want to use a preprocessor macro like this:
+
+     /* Declare the prototype for a general external function.  */
+     #if defined (__STDC__) || defined (WINDOWSNT)
+     #define P_(proto) proto
+     #else
+     #define P_(proto) ()
+     #endif
+
+\1f
+File: standards.info,  Node: Conditional Compilation,  Prev: Standard C,  Up: Design Advice
+
+3.5 Conditional Compilation
+===========================
+
+When supporting configuration options already known when building your
+program we prefer using `if (... )' over conditional compilation, as in
+the former case the compiler is able to perform more extensive checking
+of all possible code paths.
+
+   For example, please write
+
+       if (HAS_FOO)
+         ...
+       else
+         ...
+
+   instead of:
+
+       #ifdef HAS_FOO
+         ...
+       #else
+         ...
+       #endif
+
+   A modern compiler such as GCC will generate exactly the same code in
+both cases, and we have been using similar techniques with good success
+in several projects.
+
+   While this is not a silver bullet solving all portability problems,
+following this policy would have saved the GCC project alone many person
+hours if not days per year.
+
+   In the case of function-like macros like `REVERSIBLE_CC_MODE' in GCC
+which cannot be simply used in `if( ...)' statements, there is an easy
+workaround.  Simply introduce another macro `HAS_REVERSIBLE_CC_MODE' as
+in the following example:
+
+       #ifdef REVERSIBLE_CC_MODE
+       #define HAS_REVERSIBLE_CC_MODE 1
+       #else
+       #define HAS_REVERSIBLE_CC_MODE 0
+       #endif
+
+\1f
+File: standards.info,  Node: Program Behavior,  Next: Writing C,  Prev: Design Advice,  Up: Top
+
+4 Program Behavior for All Programs
+***********************************
+
+This node describes conventions for writing robust software.  It also
+describes general standards for error messages, the command line
+interface, and how libraries should behave.
+
+* Menu:
+
+* Semantics::                   Writing robust programs
+* Libraries::                   Library behavior
+* Errors::                      Formatting error messages
+* User Interfaces::             Standards about interfaces generally
+* Graphical Interfaces::        Standards for graphical interfaces
+* Command-Line Interfaces::     Standards for command line interfaces
+* Option Table::                Table of long options
+* Memory Usage::                When and how to care about memory needs
+* File Usage::                  Which files to use, and where
+
+\1f
+File: standards.info,  Node: Semantics,  Next: Libraries,  Up: Program Behavior
+
+4.1 Writing Robust Programs
+===========================
+
+Avoid arbitrary limits on the length or number of _any_ data structure,
+including file names, lines, files, and symbols, by allocating all data
+structures dynamically.  In most Unix utilities, "long lines are
+silently truncated".  This is not acceptable in a GNU utility.
+
+   Utilities reading files should not drop NUL characters, or any other
+nonprinting characters _including those with codes above 0177_.  The
+only sensible exceptions would be utilities specifically intended for
+interface to certain types of terminals or printers that can't handle
+those characters.  Whenever possible, try to make programs work
+properly with sequences of bytes that represent multibyte characters,
+using encodings such as UTF-8 and others.
+
+   Check every system call for an error return, unless you know you
+wish to ignore errors.  Include the system error text (from `perror' or
+equivalent) in _every_ error message resulting from a failing system
+call, as well as the name of the file if any and the name of the
+utility.  Just "cannot open foo.c" or "stat failed" is not sufficient.
+
+   Check every call to `malloc' or `realloc' to see if it returned
+zero.  Check `realloc' even if you are making the block smaller; in a
+system that rounds block sizes to a power of 2, `realloc' may get a
+different block if you ask for less space.
+
+   In Unix, `realloc' can destroy the storage block if it returns zero.
+GNU `realloc' does not have this bug: if it fails, the original block
+is unchanged.  Feel free to assume the bug is fixed.  If you wish to
+run your program on Unix, and wish to avoid lossage in this case, you
+can use the GNU `malloc'.
+
+   You must expect `free' to alter the contents of the block that was
+freed.  Anything you want to fetch from the block, you must fetch before
+calling `free'.
+
+   If `malloc' fails in a noninteractive program, make that a fatal
+error.  In an interactive program (one that reads commands from the
+user), it is better to abort the command and return to the command
+reader loop.  This allows the user to kill other processes to free up
+virtual memory, and then try the command again.
+
+   Use `getopt_long' to decode arguments, unless the argument syntax
+makes this unreasonable.
+
+   When static storage is to be written in during program execution, use
+explicit C code to initialize it.  Reserve C initialized declarations
+for data that will not be changed.
+
+   Try to avoid low-level interfaces to obscure Unix data structures
+(such as file directories, utmp, or the layout of kernel memory), since
+these are less likely to work compatibly.  If you need to find all the
+files in a directory, use `readdir' or some other high-level interface.
+These are supported compatibly by GNU.
+
+   The preferred signal handling facilities are the BSD variant of
+`signal', and the POSIX `sigaction' function; the alternative USG
+`signal' interface is an inferior design.
+
+   Nowadays, using the POSIX signal functions may be the easiest way to
+make a program portable.  If you use `signal', then on GNU/Linux
+systems running GNU libc version 1, you should include `bsd/signal.h'
+instead of `signal.h', so as to get BSD behavior.  It is up to you
+whether to support systems where `signal' has only the USG behavior, or
+give up on them.
+
+   In error checks that detect "impossible" conditions, just abort.
+There is usually no point in printing any message.  These checks
+indicate the existence of bugs.  Whoever wants to fix the bugs will have
+to read the source code and run a debugger.  So explain the problem with
+comments in the source.  The relevant data will be in variables, which
+are easy to examine with the debugger, so there is no point moving them
+elsewhere.
+
+   Do not use a count of errors as the exit status for a program.
+_That does not work_, because exit status values are limited to 8 bits
+(0 through 255).  A single run of the program might have 256 errors; if
+you try to return 256 as the exit status, the parent process will see 0
+as the status, and it will appear that the program succeeded.
+
+   If you make temporary files, check the `TMPDIR' environment
+variable; if that variable is defined, use the specified directory
+instead of `/tmp'.
+
+   In addition, be aware that there is a possible security problem when
+creating temporary files in world-writable directories.  In C, you can
+avoid this problem by creating temporary files in this manner:
+
+     fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0600);
+
+or by using the `mkstemps' function from libiberty.
+
+   In bash, use `set -C' to avoid this problem.
+
+\1f
+File: standards.info,  Node: Libraries,  Next: Errors,  Prev: Semantics,  Up: Program Behavior
+
+4.2 Library Behavior
+====================
+
+Try to make library functions reentrant.  If they need to do dynamic
+storage allocation, at least try to avoid any nonreentrancy aside from
+that of `malloc' itself.
+
+   Here are certain name conventions for libraries, to avoid name
+conflicts.
+
+   Choose a name prefix for the library, more than two characters long.
+All external function and variable names should start with this prefix.
+In addition, there should only be one of these in any given library
+member.  This usually means putting each one in a separate source file.
+
+   An exception can be made when two external symbols are always used
+together, so that no reasonable program could use one without the
+other; then they can both go in the same file.
+
+   External symbols that are not documented entry points for the user
+should have names beginning with `_'.  The `_' should be followed by
+the chosen name prefix for the library, to prevent collisions with
+other libraries.  These can go in the same files with user entry points
+if you like.
+
+   Static functions and variables can be used as you like and need not
+fit any naming convention.
+
+\1f
+File: standards.info,  Node: Errors,  Next: User Interfaces,  Prev: Libraries,  Up: Program Behavior
+
+4.3 Formatting Error Messages
+=============================
+
+Error messages from compilers should look like this:
+
+     SOURCE-FILE-NAME:LINENO: MESSAGE
+
+If you want to mention the column number, use this format:
+
+     SOURCE-FILE-NAME:LINENO:COLUMN: MESSAGE
+
+Line numbers should start from 1 at the beginning of the file, and
+column numbers should start from 1 at the beginning of the line.  (Both
+of these conventions are chosen for compatibility.)  Calculate column
+numbers assuming that space and all ASCII printing characters have
+equal width, and assuming tab stops every 8 columns.
+
+   Error messages from other noninteractive programs should look like
+this:
+
+     PROGRAM:SOURCE-FILE-NAME:LINENO: MESSAGE
+
+when there is an appropriate source file, or like this:
+
+     PROGRAM: MESSAGE
+
+when there is no relevant source file.
+
+   If you want to mention the column number, use this format:
+
+     PROGRAM:SOURCE-FILE-NAME:LINENO:COLUMN: MESSAGE
+
+   In an interactive program (one that is reading commands from a
+terminal), it is better not to include the program name in an error
+message.  The place to indicate which program is running is in the
+prompt or with the screen layout.  (When the same program runs with
+input from a source other than a terminal, it is not interactive and
+would do best to print error messages using the noninteractive style.)
+
+   The string MESSAGE should not begin with a capital letter when it
+follows a program name and/or file name.  Also, it should not end with
+a period.
+
+   Error messages from interactive programs, and other messages such as
+usage messages, should start with a capital letter.  But they should not
+end with a period.
+
+\1f
+File: standards.info,  Node: User Interfaces,  Next: Graphical Interfaces,  Prev: Errors,  Up: Program Behavior
+
+4.4 Standards for Interfaces Generally
+======================================
+
+Please don't make the behavior of a utility depend on the name used to
+invoke it.  It is useful sometimes to make a link to a utility with a
+different name, and that should not change what it does.
+
+   Instead, use a run time option or a compilation switch or both to
+select among the alternate behaviors.
+
+   Likewise, please don't make the behavior of the program depend on the
+type of output device it is used with.  Device independence is an
+important principle of the system's design; do not compromise it merely
+to save someone from typing an option now and then.  (Variation in error
+message syntax when using a terminal is ok, because that is a side issue
+that people do not depend on.)
+
+   If you think one behavior is most useful when the output is to a
+terminal, and another is most useful when the output is a file or a
+pipe, then it is usually best to make the default behavior the one that
+is useful with output to a terminal, and have an option for the other
+behavior.
+
+   Compatibility requires certain programs to depend on the type of
+output device.  It would be disastrous if `ls' or `sh' did not do so in
+the way all users expect.  In some of these cases, we supplement the
+program with a preferred alternate version that does not depend on the
+output device type.  For example, we provide a `dir' program much like
+`ls' except that its default output format is always multi-column
+format.
+
+\1f
+File: standards.info,  Node: Graphical Interfaces,  Next: Command-Line Interfaces,  Prev: User Interfaces,  Up: Program Behavior
+
+4.5 Standards for Graphical Interfaces
+======================================
+
+When you write a program that provides a graphical user interface,
+please make it work with X Windows and the GTK toolkit unless the
+functionality specifically requires some alternative (for example,
+"displaying jpeg images while in console mode").
+
+   In addition, please provide a command-line interface to control the
+functionality.  (In many cases, the graphical user interface can be a
+separate program which invokes the command-line program.)  This is so
+that the same jobs can be done from scripts.
+
+   Please also consider providing a CORBA interface (for use from
+GNOME), a library interface (for use from C), and perhaps a
+keyboard-driven console interface (for use by users from console mode).
+Once you are doing the work to provide the functionality and the
+graphical interface, these won't be much extra work.
+
+\1f
+File: standards.info,  Node: Command-Line Interfaces,  Next: Option Table,  Prev: Graphical Interfaces,  Up: Program Behavior
+
+4.6 Standards for Command Line Interfaces
+=========================================
+
+It is a good idea to follow the POSIX guidelines for the command-line
+options of a program.  The easiest way to do this is to use `getopt' to
+parse them.  Note that the GNU version of `getopt' will normally permit
+options anywhere among the arguments unless the special argument `--'
+is used.  This is not what POSIX specifies; it is a GNU extension.
+
+   Please define long-named options that are equivalent to the
+single-letter Unix-style options.  We hope to make GNU more user
+friendly this way.  This is easy to do with the GNU function
+`getopt_long'.
+
+   One of the advantages of long-named options is that they can be
+consistent from program to program.  For example, users should be able
+to expect the "verbose" option of any GNU program which has one, to be
+spelled precisely `--verbose'.  To achieve this uniformity, look at the
+table of common long-option names when you choose the option names for
+your program (*note Option Table::).
+
+   It is usually a good idea for file names given as ordinary arguments
+to be input files only; any output files would be specified using
+options (preferably `-o' or `--output').  Even if you allow an output
+file name as an ordinary argument for compatibility, try to provide an
+option as another way to specify it.  This will lead to more consistency
+among GNU utilities, and fewer idiosyncracies for users to remember.
+
+   All programs should support two standard options: `--version' and
+`--help'.
+
+`--version'
+     This option should direct the program to print information about
+     its name, version, origin and legal status, all on standard
+     output, and then exit successfully.  Other options and arguments
+     should be ignored once this is seen, and the program should not
+     perform its normal function.
+
+     The first line is meant to be easy for a program to parse; the
+     version number proper starts after the last space.  In addition,
+     it contains the canonical name for this program, in this format:
+
+          GNU Emacs 19.30
+
+     The program's name should be a constant string; _don't_ compute it
+     from `argv[0]'.  The idea is to state the standard or canonical
+     name for the program, not its file name.  There are other ways to
+     find out the precise file name where a command is found in `PATH'.
+
+     If the program is a subsidiary part of a larger package, mention
+     the package name in parentheses, like this:
+
+          emacsserver (GNU Emacs) 19.30
+
+     If the package has a version number which is different from this
+     program's version number, you can mention the package version
+     number just before the close-parenthesis.
+
+     If you *need* to mention the version numbers of libraries which
+     are distributed separately from the package which contains this
+     program, you can do so by printing an additional line of version
+     info for each library you want to mention.  Use the same format
+     for these lines as for the first line.
+
+     Please do not mention all of the libraries that the program uses
+     "just for completeness"--that would produce a lot of unhelpful
+     clutter.  Please mention library version numbers only if you find
+     in practice that they are very important to you in debugging.
+
+     The following line, after the version number line or lines, should
+     be a copyright notice.  If more than one copyright notice is
+     called for, put each on a separate line.
+
+     Next should follow a brief statement that the program is free
+     software, and that users are free to copy and change it on certain
+     conditions.  If the program is covered by the GNU GPL, say so
+     here.  Also mention that there is no warranty, to the extent
+     permitted by law.
+
+     It is ok to finish the output with a list of the major authors of
+     the program, as a way of giving credit.
+
+     Here's an example of output that follows these rules:
+
+          GNU Emacs 19.34.5
+          Copyright (C) 1996 Free Software Foundation, Inc.
+          GNU Emacs comes with NO WARRANTY,
+          to the extent permitted by law.
+          You may redistribute copies of GNU Emacs
+          under the terms of the GNU General Public License.
+          For more information about these matters,
+          see the files named COPYING.
+
+     You should adapt this to your program, of course, filling in the
+     proper year, copyright holder, name of program, and the references
+     to distribution terms, and changing the rest of the wording as
+     necessary.
+
+     This copyright notice only needs to mention the most recent year in
+     which changes were made--there's no need to list the years for
+     previous versions' changes.  You don't have to mention the name of
+     the program in these notices, if that is inconvenient, since it
+     appeared in the first line.
+
+     Translations of the above lines must preserve the validity of the
+     copyright notices (*note Internationalization::).  If the
+     translation's character set supports it, the `(C)' should be
+     replaced with the copyright symbol, as follows:
+
+     (the official copyright symbol, which is the letter C in a circle);
+
+     Write the word "Copyright" exactly like that, in English.  Do not
+     translate it into another language.  International treaties
+     recognize the English word "Copyright"; translations into other
+     languages do not have legal significance.
+
+`--help'
+     This option should output brief documentation for how to invoke the
+     program, on standard output, then exit successfully.  Other
+     options and arguments should be ignored once this is seen, and the
+     program should not perform its normal function.
+
+     Near the end of the `--help' option's output there should be a line
+     that says where to mail bug reports.  It should have this format:
+
+          Report bugs to MAILING-ADDRESS.
+
+\1f
+File: standards.info,  Node: Option Table,  Next: Memory Usage,  Prev: Command-Line Interfaces,  Up: Program Behavior
+
+4.7 Table of Long Options
+=========================
+
+Here is a table of long options used by GNU programs.  It is surely
+incomplete, but we aim to list all the options that a new program might
+want to be compatible with.  If you use names not already in the table,
+please send <bug-standards@gnu.org> a list of them, with their
+meanings, so we can update the table.
+
+`after-date'
+     `-N' in `tar'.
+
+`all'
+     `-a' in `du', `ls', `nm', `stty', `uname', and `unexpand'.
+
+`all-text'
+     `-a' in `diff'.
+
+`almost-all'
+     `-A' in `ls'.
+
+`append'
+     `-a' in `etags', `tee', `time'; `-r' in `tar'.
+
+`archive'
+     `-a' in `cp'.
+
+`archive-name'
+     `-n' in `shar'.
+
+`arglength'
+     `-l' in `m4'.
+
+`ascii'
+     `-a' in `diff'.
+
+`assign'
+     `-v' in `gawk'.
+
+`assume-new'
+     `-W' in Make.
+
+`assume-old'
+     `-o' in Make.
+
+`auto-check'
+     `-a' in `recode'.
+
+`auto-pager'
+     `-a' in `wdiff'.
+
+`auto-reference'
+     `-A' in `ptx'.
+
+`avoid-wraps'
+     `-n' in `wdiff'.
+
+`background'
+     For server programs, run in the background.
+
+`backward-search'
+     `-B' in `ctags'.
+
+`basename'
+     `-f' in `shar'.
+
+`batch'
+     Used in GDB.
+
+`baud'
+     Used in GDB.
+
+`before'
+     `-b' in `tac'.
+
+`binary'
+     `-b' in `cpio' and `diff'.
+
+`bits-per-code'
+     `-b' in `shar'.
+
+`block-size'
+     Used in `cpio' and `tar'.
+
+`blocks'
+     `-b' in `head' and `tail'.
+
+`break-file'
+     `-b' in `ptx'.
+
+`brief'
+     Used in various programs to make output shorter.
+
+`bytes'
+     `-c' in `head', `split', and `tail'.
+
+`c++'
+     `-C' in `etags'.
+
+`catenate'
+     `-A' in `tar'.
+
+`cd'
+     Used in various programs to specify the directory to use.
+
+`changes'
+     `-c' in `chgrp' and `chown'.
+
+`classify'
+     `-F' in `ls'.
+
+`colons'
+     `-c' in `recode'.
+
+`command'
+     `-c' in `su'; `-x' in GDB.
+
+`compare'
+     `-d' in `tar'.
+
+`compat'
+     Used in `gawk'.
+
+`compress'
+     `-Z' in `tar' and `shar'.
+
+`concatenate'
+     `-A' in `tar'.
+
+`confirmation'
+     `-w' in `tar'.
+
+`context'
+     Used in `diff'.
+
+`copyleft'
+     `-W copyleft' in `gawk'.
+
+`copyright'
+     `-C' in `ptx', `recode', and `wdiff'; `-W copyright' in `gawk'.
+
+`core'
+     Used in GDB.
+
+`count'
+     `-q' in `who'.
+
+`count-links'
+     `-l' in `du'.
+
+`create'
+     Used in `tar' and `cpio'.
+
+`cut-mark'
+     `-c' in `shar'.
+
+`cxref'
+     `-x' in `ctags'.
+
+`date'
+     `-d' in `touch'.
+
+`debug'
+     `-d' in Make and `m4'; `-t' in Bison.
+
+`define'
+     `-D' in `m4'.
+
+`defines'
+     `-d' in Bison and `ctags'.
+
+`delete'
+     `-D' in `tar'.
+
+`dereference'
+     `-L' in `chgrp', `chown', `cpio', `du', `ls', and `tar'.
+
+`dereference-args'
+     `-D' in `du'.
+
+`device'
+     Specify an I/O device (special file name).
+
+`diacritics'
+     `-d' in `recode'.
+
+`dictionary-order'
+     `-d' in `look'.
+
+`diff'
+     `-d' in `tar'.
+
+`digits'
+     `-n' in `csplit'.
+
+`directory'
+     Specify the directory to use, in various programs.  In `ls', it
+     means to show directories themselves rather than their contents.
+     In `rm' and `ln', it means to not treat links to directories
+     specially.
+
+`discard-all'
+     `-x' in `strip'.
+
+`discard-locals'
+     `-X' in `strip'.
+
+`dry-run'
+     `-n' in Make.
+
+`ed'
+     `-e' in `diff'.
+
+`elide-empty-files'
+     `-z' in `csplit'.
+
+`end-delete'
+     `-x' in `wdiff'.
+
+`end-insert'
+     `-z' in `wdiff'.
+
+`entire-new-file'
+     `-N' in `diff'.
+
+`environment-overrides'
+     `-e' in Make.
+
+`eof'
+     `-e' in `xargs'.
+
+`epoch'
+     Used in GDB.
+
+`error-limit'
+     Used in `makeinfo'.
+
+`error-output'
+     `-o' in `m4'.
+
+`escape'
+     `-b' in `ls'.
+
+`exclude-from'
+     `-X' in `tar'.
+
+`exec'
+     Used in GDB.
+
+`exit'
+     `-x' in `xargs'.
+
+`exit-0'
+     `-e' in `unshar'.
+
+`expand-tabs'
+     `-t' in `diff'.
+
+`expression'
+     `-e' in `sed'.
+
+`extern-only'
+     `-g' in `nm'.
+
+`extract'
+     `-i' in `cpio'; `-x' in `tar'.
+
+`faces'
+     `-f' in `finger'.
+
+`fast'
+     `-f' in `su'.
+
+`fatal-warnings'
+     `-E' in `m4'.
+
+`file'
+     `-f' in `info', `gawk', Make, `mt', and `tar'; `-n' in `sed'; `-r'
+     in `touch'.
+
+`field-separator'
+     `-F' in `gawk'.
+
+`file-prefix'
+     `-b' in Bison.
+
+`file-type'
+     `-F' in `ls'.
+
+`files-from'
+     `-T' in `tar'.
+
+`fill-column'
+     Used in `makeinfo'.
+
+`flag-truncation'
+     `-F' in `ptx'.
+
+`fixed-output-files'
+     `-y' in Bison.
+
+`follow'
+     `-f' in `tail'.
+
+`footnote-style'
+     Used in `makeinfo'.
+
+`force'
+     `-f' in `cp', `ln', `mv', and `rm'.
+
+`force-prefix'
+     `-F' in `shar'.
+
+`foreground'
+     For server programs, run in the foreground; in other words, don't
+     do anything special to run the server in the background.
+
+`format'
+     Used in `ls', `time', and `ptx'.
+
+`freeze-state'
+     `-F' in `m4'.
+
+`fullname'
+     Used in GDB.
+
+`gap-size'
+     `-g' in `ptx'.
+
+`get'
+     `-x' in `tar'.
+
+`graphic'
+     `-i' in `ul'.
+
+`graphics'
+     `-g' in `recode'.
+
+`group'
+     `-g' in `install'.
+
+`gzip'
+     `-z' in `tar' and `shar'.
+
+`hashsize'
+     `-H' in `m4'.
+
+`header'
+     `-h' in `objdump' and `recode'
+
+`heading'
+     `-H' in `who'.
+
+`help'
+     Used to ask for brief usage information.
+
+`here-delimiter'
+     `-d' in `shar'.
+
+`hide-control-chars'
+     `-q' in `ls'.
+
+`html'
+     In `makeinfo', output HTML.
+
+`idle'
+     `-u' in `who'.
+
+`ifdef'
+     `-D' in `diff'.
+
+`ignore'
+     `-I' in `ls'; `-x' in `recode'.
+
+`ignore-all-space'
+     `-w' in `diff'.
+
+`ignore-backups'
+     `-B' in `ls'.
+
+`ignore-blank-lines'
+     `-B' in `diff'.
+
+`ignore-case'
+     `-f' in `look' and `ptx'; `-i' in `diff' and `wdiff'.
+
+`ignore-errors'
+     `-i' in Make.
+
+`ignore-file'
+     `-i' in `ptx'.
+
+`ignore-indentation'
+     `-I' in `etags'.
+
+`ignore-init-file'
+     `-f' in Oleo.
+
+`ignore-interrupts'
+     `-i' in `tee'.
+
+`ignore-matching-lines'
+     `-I' in `diff'.
+
+`ignore-space-change'
+     `-b' in `diff'.
+
+`ignore-zeros'
+     `-i' in `tar'.
+
+`include'
+     `-i' in `etags'; `-I' in `m4'.
+
+`include-dir'
+     `-I' in Make.
+
+`incremental'
+     `-G' in `tar'.
+
+`info'
+     `-i', `-l', and `-m' in Finger.
+
+`init-file'
+     In some programs, specify the name of the file to read as the
+     user's init file.
+
+`initial'
+     `-i' in `expand'.
+
+`initial-tab'
+     `-T' in `diff'.
+
+`inode'
+     `-i' in `ls'.
+
+`interactive'
+     `-i' in `cp', `ln', `mv', `rm'; `-e' in `m4'; `-p' in `xargs';
+     `-w' in `tar'.
+
+`intermix-type'
+     `-p' in `shar'.
+
+`iso-8601'
+     Used in `date'
+
+`jobs'
+     `-j' in Make.
+
+`just-print'
+     `-n' in Make.
+
+`keep-going'
+     `-k' in Make.
+
+`keep-files'
+     `-k' in `csplit'.
+
+`kilobytes'
+     `-k' in `du' and `ls'.
+
+`language'
+     `-l' in `etags'.
+
+`less-mode'
+     `-l' in `wdiff'.
+
+`level-for-gzip'
+     `-g' in `shar'.
+
+`line-bytes'
+     `-C' in `split'.
+
+`lines'
+     Used in `split', `head', and `tail'.
+
+`link'
+     `-l' in `cpio'.
+
+`lint'
+`lint-old'
+     Used in `gawk'.
+
+`list'
+     `-t' in `cpio'; `-l' in `recode'.
+
+`list'
+     `-t' in `tar'.
+
+`literal'
+     `-N' in `ls'.
+
+`load-average'
+     `-l' in Make.
+
+`login'
+     Used in `su'.
+
+`machine'
+     No listing of which programs already use this; someone should
+     check to see if any actually do, and tell <gnu@gnu.org>.
+
+`macro-name'
+     `-M' in `ptx'.
+
+`mail'
+     `-m' in `hello' and `uname'.
+
+`make-directories'
+     `-d' in `cpio'.
+
+`makefile'
+     `-f' in Make.
+
+`mapped'
+     Used in GDB.
+
+`max-args'
+     `-n' in `xargs'.
+
+`max-chars'
+     `-n' in `xargs'.
+
+`max-lines'
+     `-l' in `xargs'.
+
+`max-load'
+     `-l' in Make.
+
+`max-procs'
+     `-P' in `xargs'.
+
+`mesg'
+     `-T' in `who'.
+
+`message'
+     `-T' in `who'.
+
+`minimal'
+     `-d' in `diff'.
+
+`mixed-uuencode'
+     `-M' in `shar'.
+
+`mode'
+     `-m' in `install', `mkdir', and `mkfifo'.
+
+`modification-time'
+     `-m' in `tar'.
+
+`multi-volume'
+     `-M' in `tar'.
+
+`name-prefix'
+     `-a' in Bison.
+
+`nesting-limit'
+     `-L' in `m4'.
+
+`net-headers'
+     `-a' in `shar'.
+
+`new-file'
+     `-W' in Make.
+
+`no-builtin-rules'
+     `-r' in Make.
+
+`no-character-count'
+     `-w' in `shar'.
+
+`no-check-existing'
+     `-x' in `shar'.
+
+`no-common'
+     `-3' in `wdiff'.
+
+`no-create'
+     `-c' in `touch'.
+
+`no-defines'
+     `-D' in `etags'.
+
+`no-deleted'
+     `-1' in `wdiff'.
+
+`no-dereference'
+     `-d' in `cp'.
+
+`no-inserted'
+     `-2' in `wdiff'.
+
+`no-keep-going'
+     `-S' in Make.
+
+`no-lines'
+     `-l' in Bison.
+
+`no-piping'
+     `-P' in `shar'.
+
+`no-prof'
+     `-e' in `gprof'.
+
+`no-regex'
+     `-R' in `etags'.
+
+`no-sort'
+     `-p' in `nm'.
+
+`no-split'
+     Used in `makeinfo'.
+
+`no-static'
+     `-a' in `gprof'.
+
+`no-time'
+     `-E' in `gprof'.
+
+`no-timestamp'
+     `-m' in `shar'.
+
+`no-validate'
+     Used in `makeinfo'.
+
+`no-wait'
+     Used in `emacsclient'.
+
+`no-warn'
+     Used in various programs to inhibit warnings.
+
+`node'
+     `-n' in `info'.
+
+`nodename'
+     `-n' in `uname'.
+
+`nonmatching'
+     `-f' in `cpio'.
+
+`nstuff'
+     `-n' in `objdump'.
+
+`null'
+     `-0' in `xargs'.
+
+`number'
+     `-n' in `cat'.
+
+`number-nonblank'
+     `-b' in `cat'.
+
+`numeric-sort'
+     `-n' in `nm'.
+
+`numeric-uid-gid'
+     `-n' in `cpio' and `ls'.
+
+`nx'
+     Used in GDB.
+
+`old-archive'
+     `-o' in `tar'.
+
+`old-file'
+     `-o' in Make.
+
+`one-file-system'
+     `-l' in `tar', `cp', and `du'.
+
+`only-file'
+     `-o' in `ptx'.
+
+`only-prof'
+     `-f' in `gprof'.
+
+`only-time'
+     `-F' in `gprof'.
+
+`options'
+     `-o' in `getopt', `fdlist', `fdmount', `fdmountd', and `fdumount'.
+
+`output'
+     In various programs, specify the output file name.
+
+`output-prefix'
+     `-o' in `shar'.
+
+`override'
+     `-o' in `rm'.
+
+`overwrite'
+     `-c' in `unshar'.
+
+`owner'
+     `-o' in `install'.
+
+`paginate'
+     `-l' in `diff'.
+
+`paragraph-indent'
+     Used in `makeinfo'.
+
+`parents'
+     `-p' in `mkdir' and `rmdir'.
+
+`pass-all'
+     `-p' in `ul'.
+
+`pass-through'
+     `-p' in `cpio'.
+
+`port'
+     `-P' in `finger'.
+
+`portability'
+     `-c' in `cpio' and `tar'.
+
+`posix'
+     Used in `gawk'.
+
+`prefix-builtins'
+     `-P' in `m4'.
+
+`prefix'
+     `-f' in `csplit'.
+
+`preserve'
+     Used in `tar' and `cp'.
+
+`preserve-environment'
+     `-p' in `su'.
+
+`preserve-modification-time'
+     `-m' in `cpio'.
+
+`preserve-order'
+     `-s' in `tar'.
+
+`preserve-permissions'
+     `-p' in `tar'.
+
+`print'
+     `-l' in `diff'.
+
+`print-chars'
+     `-L' in `cmp'.
+
+`print-data-base'
+     `-p' in Make.
+
+`print-directory'
+     `-w' in Make.
+
+`print-file-name'
+     `-o' in `nm'.
+
+`print-symdefs'
+     `-s' in `nm'.
+
+`printer'
+     `-p' in `wdiff'.
+
+`prompt'
+     `-p' in `ed'.
+
+`proxy'
+     Specify an HTTP proxy.
+
+`query-user'
+     `-X' in `shar'.
+
+`question'
+     `-q' in Make.
+
+`quiet'
+     Used in many programs to inhibit the usual output.  *Note_* every
+     program accepting `--quiet' should accept `--silent' as a synonym.
+
+`quiet-unshar'
+     `-Q' in `shar'
+
+`quote-name'
+     `-Q' in `ls'.
+
+`rcs'
+     `-n' in `diff'.
+
+`re-interval'
+     Used in `gawk'.
+
+`read-full-blocks'
+     `-B' in `tar'.
+
+`readnow'
+     Used in GDB.
+
+`recon'
+     `-n' in Make.
+
+`record-number'
+     `-R' in `tar'.
+
+`recursive'
+     Used in `chgrp', `chown', `cp', `ls', `diff', and `rm'.
+
+`reference-limit'
+     Used in `makeinfo'.
+
+`references'
+     `-r' in `ptx'.
+
+`regex'
+     `-r' in `tac' and `etags'.
+
+`release'
+     `-r' in `uname'.
+
+`reload-state'
+     `-R' in `m4'.
+
+`relocation'
+     `-r' in `objdump'.
+
+`rename'
+     `-r' in `cpio'.
+
+`replace'
+     `-i' in `xargs'.
+
+`report-identical-files'
+     `-s' in `diff'.
+
+`reset-access-time'
+     `-a' in `cpio'.
+
+`reverse'
+     `-r' in `ls' and `nm'.
+
+`reversed-ed'
+     `-f' in `diff'.
+
+`right-side-defs'
+     `-R' in `ptx'.
+
+`same-order'
+     `-s' in `tar'.
+
+`same-permissions'
+     `-p' in `tar'.
+
+`save'
+     `-g' in `stty'.
+
+`se'
+     Used in GDB.
+
+`sentence-regexp'
+     `-S' in `ptx'.
+
+`separate-dirs'
+     `-S' in `du'.
+
+`separator'
+     `-s' in `tac'.
+
+`sequence'
+     Used by `recode' to chose files or pipes for sequencing passes.
+
+`shell'
+     `-s' in `su'.
+
+`show-all'
+     `-A' in `cat'.
+
+`show-c-function'
+     `-p' in `diff'.
+
+`show-ends'
+     `-E' in `cat'.
+
+`show-function-line'
+     `-F' in `diff'.
+
+`show-tabs'
+     `-T' in `cat'.
+
+`silent'
+     Used in many programs to inhibit the usual output.  *Note_* every
+     program accepting `--silent' should accept `--quiet' as a synonym.
+
+`size'
+     `-s' in `ls'.
+
+`socket'
+     Specify a file descriptor for a network server to use for its
+     socket, instead of opening and binding a new socket.  This
+     provides a way to run, in a nonpriveledged process, a server that
+     normally needs a reserved port number.
+
+`sort'
+     Used in `ls'.
+
+`source'
+     `-W source' in `gawk'.
+
+`sparse'
+     `-S' in `tar'.
+
+`speed-large-files'
+     `-H' in `diff'.
+
+`split-at'
+     `-E' in `unshar'.
+
+`split-size-limit'
+     `-L' in `shar'.
+
+`squeeze-blank'
+     `-s' in `cat'.
+
+`start-delete'
+     `-w' in `wdiff'.
+
+`start-insert'
+     `-y' in `wdiff'.
+
+`starting-file'
+     Used in `tar' and `diff' to specify which file within a directory
+     to start processing with.
+
+`statistics'
+     `-s' in `wdiff'.
+
+`stdin-file-list'
+     `-S' in `shar'.
+
+`stop'
+     `-S' in Make.
+
+`strict'
+     `-s' in `recode'.
+
+`strip'
+     `-s' in `install'.
+
+`strip-all'
+     `-s' in `strip'.
+
+`strip-debug'
+     `-S' in `strip'.
+
+`submitter'
+     `-s' in `shar'.
+
+`suffix'
+     `-S' in `cp', `ln', `mv'.
+
+`suffix-format'
+     `-b' in `csplit'.
+
+`sum'
+     `-s' in `gprof'.
+
+`summarize'
+     `-s' in `du'.
+
+`symbolic'
+     `-s' in `ln'.
+
+`symbols'
+     Used in GDB and `objdump'.
+
+`synclines'
+     `-s' in `m4'.
+
+`sysname'
+     `-s' in `uname'.
+
+`tabs'
+     `-t' in `expand' and `unexpand'.
+
+`tabsize'
+     `-T' in `ls'.
+
+`terminal'
+     `-T' in `tput' and `ul'.  `-t' in `wdiff'.
+
+`text'
+     `-a' in `diff'.
+
+`text-files'
+     `-T' in `shar'.
+
+`time'
+     Used in `ls' and `touch'.
+
+`timeout'
+     Specify how long to wait before giving up on some operation.
+
+`to-stdout'
+     `-O' in `tar'.
+
+`total'
+     `-c' in `du'.
+
+`touch'
+     `-t' in Make, `ranlib', and `recode'.
+
+`trace'
+     `-t' in `m4'.
+
+`traditional'
+     `-t' in `hello'; `-W traditional' in `gawk'; `-G' in `ed', `m4',
+     and `ptx'.
+
+`tty'
+     Used in GDB.
+
+`typedefs'
+     `-t' in `ctags'.
+
+`typedefs-and-c++'
+     `-T' in `ctags'.
+
+`typeset-mode'
+     `-t' in `ptx'.
+
+`uncompress'
+     `-z' in `tar'.
+
+`unconditional'
+     `-u' in `cpio'.
+
+`undefine'
+     `-U' in `m4'.
+
+`undefined-only'
+     `-u' in `nm'.
+
+`update'
+     `-u' in `cp', `ctags', `mv', `tar'.
+
+`usage'
+     Used in `gawk'; same as `--help'.
+
+`uuencode'
+     `-B' in `shar'.
+
+`vanilla-operation'
+     `-V' in `shar'.
+
+`verbose'
+     Print more information about progress.  Many programs support this.
+
+`verify'
+     `-W' in `tar'.
+
+`version'
+     Print the version number.
+
+`version-control'
+     `-V' in `cp', `ln', `mv'.
+
+`vgrind'
+     `-v' in `ctags'.
+
+`volume'
+     `-V' in `tar'.
+
+`what-if'
+     `-W' in Make.
+
+`whole-size-limit'
+     `-l' in `shar'.
+
+`width'
+     `-w' in `ls' and `ptx'.
+
+`word-regexp'
+     `-W' in `ptx'.
+
+`writable'
+     `-T' in `who'.
+
+`zeros'
+     `-z' in `gprof'.
+
+\1f
+File: standards.info,  Node: Memory Usage,  Next: File Usage,  Prev: Option Table,  Up: Program Behavior
+
+4.8 Memory Usage
+================
+
+If a program typically uses just a few meg of memory, don't bother
+making any effort to reduce memory usage.  For example, if it is
+impractical for other reasons to operate on files more than a few meg
+long, it is reasonable to read entire input files into core to operate
+on them.
+
+   However, for programs such as `cat' or `tail', that can usefully
+operate on very large files, it is important to avoid using a technique
+that would artificially limit the size of files it can handle.  If a
+program works by lines and could be applied to arbitrary user-supplied
+input files, it should keep only a line in memory, because this is not
+very hard and users will want to be able to operate on input files that
+are bigger than will fit in core all at once.
+
+   If your program creates complicated data structures, just make them
+in core and give a fatal error if `malloc' returns zero.
+
+\1f
+File: standards.info,  Node: File Usage,  Prev: Memory Usage,  Up: Program Behavior
+
+4.9 File Usage
+==============
+
+Programs should be prepared to operate when `/usr' and `/etc' are
+read-only file systems.  Thus, if the program manages log files, lock
+files, backup files, score files, or any other files which are modified
+for internal purposes, these files should not be stored in `/usr' or
+`/etc'.
+
+   There are two exceptions.  `/etc' is used to store system
+configuration information; it is reasonable for a program to modify
+files in `/etc' when its job is to update the system configuration.
+Also, if the user explicitly asks to modify one file in a directory, it
+is reasonable for the program to store other files in the same
+directory.
+
+\1f
+File: standards.info,  Node: Writing C,  Next: Documentation,  Prev: Program Behavior,  Up: Top
+
+5 Making The Best Use of C
+**************************
+
+This node provides advice on how best to use the C language when
+writing GNU software.
+
+* Menu:
+
+* Formatting::                  Formatting Your Source Code
+* Comments::                    Commenting Your Work
+* Syntactic Conventions::       Clean Use of C Constructs
+* Names::                       Naming Variables, Functions, and Files
+* System Portability::          Portability between different operating systems
+* CPU Portability::             Supporting the range of CPU types
+* System Functions::            Portability and ``standard'' library functions
+* Internationalization::        Techniques for internationalization
+* Mmap::                        How you can safely use `mmap'.
+
+\1f
+File: standards.info,  Node: Formatting,  Next: Comments,  Up: Writing C
+
+5.1 Formatting Your Source Code
+===============================
+
+It is important to put the open-brace that starts the body of a C
+function in column zero, and avoid putting any other open-brace or
+open-parenthesis or open-bracket in column zero.  Several tools look
+for open-braces in column zero to find the beginnings of C functions.
+These tools will not work on code not formatted that way.
+
+   It is also important for function definitions to start the name of
+the function in column zero.  This helps people to search for function
+definitions, and may also help certain tools recognize them.  Thus, the
+proper format is this:
+
+     static char *
+     concat (s1, s2)        /* Name starts in column zero here */
+          char *s1, *s2;
+     {                     /* Open brace in column zero here */
+       ...
+     }
+
+or, if you want to use Standard C syntax, format the definition like
+this:
+
+     static char *
+     concat (char *s1, char *s2)
+     {
+       ...
+     }
+
+   In Standard C, if the arguments don't fit nicely on one line, split
+it like this:
+
+     int
+     lots_of_args (int an_integer, long a_long, short a_short,
+                   double a_double, float a_float)
+     ...
+
+   The rest of this section gives our recommendations for other aspects
+of C formatting style, which is also the default style of the `indent'
+program in version 1.2 and newer.  It corresponds to the options
+
+     -nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2
+     -ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -psl -nsc -nsob
+
+   We don't think of these recommendations as requirements, because it
+causes no problems for users if two different programs have different
+formatting styles.
+
+   But whatever style you use, please use it consistently, since a
+mixture of styles within one program tends to look ugly.  If you are
+contributing changes to an existing program, please follow the style of
+that program.
+
+   For the body of the function, our recommended style looks like this:
+
+     if (x < foo (y, z))
+       haha = bar[4] + 5;
+     else
+       {
+         while (z)
+           {
+             haha += foo (z, z);
+             z--;
+           }
+         return ++x + bar ();
+       }
+
+   We find it easier to read a program when it has spaces before the
+open-parentheses and after the commas.  Especially after the commas.
+
+   When you split an expression into multiple lines, split it before an
+operator, not after one.  Here is the right way:
+
+     if (foo_this_is_long && bar > win (x, y, z)
+         && remaining_condition)
+
+   Try to avoid having two operators of different precedence at the same
+level of indentation.  For example, don't write this:
+
+     mode = (inmode[j] == VOIDmode
+             || GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j])
+             ? outmode[j] : inmode[j]);
+
+   Instead, use extra parentheses so that the indentation shows the
+nesting:
+
+     mode = ((inmode[j] == VOIDmode
+              || (GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j])))
+             ? outmode[j] : inmode[j]);
+
+   Insert extra parentheses so that Emacs will indent the code properly.
+For example, the following indentation looks nice if you do it by hand,
+
+     v = rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
+         + rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000;
+
+but Emacs would alter it.  Adding a set of parentheses produces
+something that looks equally nice, and which Emacs will preserve:
+
+     v = (rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
+          + rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000);
+
+   Format do-while statements like this:
+
+     do
+       {
+         a = foo (a);
+       }
+     while (a > 0);
+
+   Please use formfeed characters (control-L) to divide the program into
+pages at logical places (but not within a function).  It does not matter
+just how long the pages are, since they do not have to fit on a printed
+page.  The formfeeds should appear alone on lines by themselves.
+
+\1f
+File: standards.info,  Node: Comments,  Next: Syntactic Conventions,  Prev: Formatting,  Up: Writing C
+
+5.2 Commenting Your Work
+========================
+
+Every program should start with a comment saying briefly what it is for.
+Example: `fmt - filter for simple filling of text'.
+
+   Please write the comments in a GNU program in English, because
+English is the one language that nearly all programmers in all
+countries can read.  If you do not write English well, please write
+comments in English as well as you can, then ask other people to help
+rewrite them.  If you can't write comments in English, please find
+someone to work with you and translate your comments into English.
+
+   Please put a comment on each function saying what the function does,
+what sorts of arguments it gets, and what the possible values of
+arguments mean and are used for.  It is not necessary to duplicate in
+words the meaning of the C argument declarations, if a C type is being
+used in its customary fashion.  If there is anything nonstandard about
+its use (such as an argument of type `char *' which is really the
+address of the second character of a string, not the first), or any
+possible values that would not work the way one would expect (such as,
+that strings containing newlines are not guaranteed to work), be sure
+to say so.
+
+   Also explain the significance of the return value, if there is one.
+
+   Please put two spaces after the end of a sentence in your comments,
+so that the Emacs sentence commands will work.  Also, please write
+complete sentences and capitalize the first word.  If a lower-case
+identifier comes at the beginning of a sentence, don't capitalize it!
+Changing the spelling makes it a different identifier.  If you don't
+like starting a sentence with a lower case letter, write the sentence
+differently (e.g., "The identifier lower-case is ...").
+
+   The comment on a function is much clearer if you use the argument
+names to speak about the argument values.  The variable name itself
+should be lower case, but write it in upper case when you are speaking
+about the value rather than the variable itself.  Thus, "the inode
+number NODE_NUM" rather than "an inode".
+
+   There is usually no purpose in restating the name of the function in
+the comment before it, because the reader can see that for himself.
+There might be an exception when the comment is so long that the
+function itself would be off the bottom of the screen.
+
+   There should be a comment on each static variable as well, like this:
+
+     /* Nonzero means truncate lines in the display;
+        zero means continue them.  */
+     int truncate_lines;
+
+   Every `#endif' should have a comment, except in the case of short
+conditionals (just a few lines) that are not nested.  The comment should
+state the condition of the conditional that is ending, _including its
+sense_.  `#else' should have a comment describing the condition _and
+sense_ of the code that follows.  For example:
+
+     #ifdef foo
+       ...
+     #else /* not foo */
+       ...
+     #endif /* not foo */
+     #ifdef foo
+       ...
+     #endif /* foo */
+
+but, by contrast, write the comments this way for a `#ifndef':
+
+     #ifndef foo
+       ...
+     #else /* foo */
+       ...
+     #endif /* foo */
+     #ifndef foo
+       ...
+     #endif /* not foo */
+
+\1f
+File: standards.info,  Node: Syntactic Conventions,  Next: Names,  Prev: Comments,  Up: Writing C
+
+5.3 Clean Use of C Constructs
+=============================
+
+Please explicitly declare the types of all objects.  For example, you
+should explicitly declare all arguments to functions, and you should
+declare functions to return `int' rather than omitting the `int'.
+
+   Some programmers like to use the GCC `-Wall' option, and change the
+code whenever it issues a warning.  If you want to do this, then do.
+Other programmers prefer not to use `-Wall', because it gives warnings
+for valid and legitimate code which they do not want to change.  If you
+want to do this, then do.  The compiler should be your servant, not
+your master.
+
+   Declarations of external functions and functions to appear later in
+the source file should all go in one place near the beginning of the
+file (somewhere before the first function definition in the file), or
+else should go in a header file.  Don't put `extern' declarations inside
+functions.
+
+   It used to be common practice to use the same local variables (with
+names like `tem') over and over for different values within one
+function.  Instead of doing this, it is better declare a separate local
+variable for each distinct purpose, and give it a name which is
+meaningful.  This not only makes programs easier to understand, it also
+facilitates optimization by good compilers.  You can also move the
+declaration of each local variable into the smallest scope that includes
+all its uses.  This makes the program even cleaner.
+
+   Don't use local variables or parameters that shadow global
+identifiers.
+
+   Don't declare multiple variables in one declaration that spans lines.
+Start a new declaration on each line, instead.  For example, instead of
+this:
+
+     int    foo,
+            bar;
+
+write either this:
+
+     int foo, bar;
+
+or this:
+
+     int foo;
+     int bar;
+
+(If they are global variables, each should have a comment preceding it
+anyway.)
+
+   When you have an `if'-`else' statement nested in another `if'
+statement, always put braces around the `if'-`else'.  Thus, never write
+like this:
+
+     if (foo)
+       if (bar)
+         win ();
+       else
+         lose ();
+
+always like this:
+
+     if (foo)
+       {
+         if (bar)
+           win ();
+         else
+           lose ();
+       }
+
+   If you have an `if' statement nested inside of an `else' statement,
+either write `else if' on one line, like this,
+
+     if (foo)
+       ...
+     else if (bar)
+       ...
+
+with its `then'-part indented like the preceding `then'-part, or write
+the nested `if' within braces like this:
+
+     if (foo)
+       ...
+     else
+       {
+         if (bar)
+           ...
+       }
+
+   Don't declare both a structure tag and variables or typedefs in the
+same declaration.  Instead, declare the structure tag separately and
+then use it to declare the variables or typedefs.
+
+   Try to avoid assignments inside `if'-conditions.  For example, don't
+write this:
+
+     if ((foo = (char *) malloc (sizeof *foo)) == 0)
+       fatal ("virtual memory exhausted");
+
+instead, write this:
+
+     foo = (char *) malloc (sizeof *foo);
+     if (foo == 0)
+       fatal ("virtual memory exhausted");
+
+   Don't make the program ugly to placate `lint'.  Please don't insert
+any casts to `void'.  Zero without a cast is perfectly fine as a null
+pointer constant, except when calling a varargs function.
+
+\1f
+File: standards.info,  Node: Names,  Next: System Portability,  Prev: Syntactic Conventions,  Up: Writing C
+
+5.4 Naming Variables, Functions, and Files
+==========================================
+
+The names of global variables and functions in a program serve as
+comments of a sort.  So don't choose terse names--instead, look for
+names that give useful information about the meaning of the variable or
+function.  In a GNU program, names should be English, like other
+comments.
+
+   Local variable names can be shorter, because they are used only
+within one context, where (presumably) comments explain their purpose.
+
+   Try to limit your use of abbreviations in symbol names.  It is ok to
+make a few abbreviations, explain what they mean, and then use them
+frequently, but don't use lots of obscure abbreviations.
+
+   Please use underscores to separate words in a name, so that the Emacs
+word commands can be useful within them.  Stick to lower case; reserve
+upper case for macros and `enum' constants, and for name-prefixes that
+follow a uniform convention.
+
+   For example, you should use names like `ignore_space_change_flag';
+don't use names like `iCantReadThis'.
+
+   Variables that indicate whether command-line options have been
+specified should be named after the meaning of the option, not after
+the option-letter.  A comment should state both the exact meaning of
+the option and its letter.  For example,
+
+     /* Ignore changes in horizontal whitespace (-b).  */
+     int ignore_space_change_flag;
+
+   When you want to define names with constant integer values, use
+`enum' rather than `#define'.  GDB knows about enumeration constants.
+
+   You might want to make sure that none of the file names would
+conflict the files were loaded onto an MS-DOS file system which
+shortens the names.  You can use the program `doschk' to test for this.
+
+   Some GNU programs were designed to limit themselves to file names of
+14 characters or less, to avoid file name conflicts if they are read
+into older System V systems.  Please preserve this feature in the
+existing GNU programs that have it, but there is no need to do this in
+new GNU programs.  `doschk' also reports file names longer than 14
+characters.
+
+\1f
+File: standards.info,  Node: System Portability,  Next: CPU Portability,  Prev: Names,  Up: Writing C
+
+5.5 Portability between System Types
+====================================
+
+In the Unix world, "portability" refers to porting to different Unix
+versions.  For a GNU program, this kind of portability is desirable, but
+not paramount.
+
+   The primary purpose of GNU software is to run on top of the GNU
+kernel, compiled with the GNU C compiler, on various types of CPU.  So
+the kinds of portability that are absolutely necessary are quite
+limited.  But it is important to support Linux-based GNU systems, since
+they are the form of GNU that is popular.
+
+   Beyond that, it is good to support the other free operating systems
+(*BSD), and it is nice to support other Unix-like systems if you want
+to.  Supporting a variety of Unix-like systems is desirable, although
+not paramount.  It is usually not too hard, so you may as well do it.
+But you don't have to consider it an obligation, if it does turn out to
+be hard.
+
+   The easiest way to achieve portability to most Unix-like systems is
+to use Autoconf.  It's unlikely that your program needs to know more
+information about the host platform than Autoconf can provide, simply
+because most of the programs that need such knowledge have already been
+written.
+
+   Avoid using the format of semi-internal data bases (e.g.,
+directories) when there is a higher-level alternative (`readdir').
+
+   As for systems that are not like Unix, such as MSDOS, Windows, the
+Macintosh, VMS, and MVS, supporting them is often a lot of work.  When
+that is the case, it is better to spend your time adding features that
+will be useful on GNU and GNU/Linux, rather than on supporting other
+incompatible systems.
+
+   It is a good idea to define the "feature test macro" `_GNU_SOURCE'
+when compiling your C files.  When you compile on GNU or GNU/Linux,
+this will enable the declarations of GNU library extension functions,
+and that will usually give you a compiler error message if you define
+the same function names in some other way in your program.  (You don't
+have to actually _use_ these functions, if you prefer to make the
+program more portable to other systems.)
+
+   But whether or not you use these GNU extensions, you should avoid
+using their names for any other meanings.  Doing so would make it hard
+to move your code into other GNU programs.
+
+\1f
+File: standards.info,  Node: CPU Portability,  Next: System Functions,  Prev: System Portability,  Up: Writing C
+
+5.6 Portability between CPUs
+============================
+
+Even GNU systems will differ because of differences among CPU
+types--for example, difference in byte ordering and alignment
+requirements.  It is absolutely essential to handle these differences.
+However, don't make any effort to cater to the possibility that an
+`int' will be less than 32 bits.  We don't support 16-bit machines in
+GNU.
+
+   Similarly, don't make any effort to cater to the possibility that
+`long' will be smaller than predefined types like `size_t'.  For
+example, the following code is ok:
+
+     printf ("size = %lu\n", (unsigned long) sizeof array);
+     printf ("diff = %ld\n", (long) (pointer2 - pointer1));
+
+   1989 Standard C requires this to work, and we know of only one
+counterexample: 64-bit programs on Microsoft Windows IA-64.  We will
+leave it to those who want to port GNU programs to that environment to
+figure out how to do it.
+
+   Predefined file-size types like `off_t' are an exception: they are
+longer than `long' on many platforms, so code like the above won't work
+with them.  One way to print an `off_t' value portably is to print its
+digits yourself, one by one.
+
+   Don't assume that the address of an `int' object is also the address
+of its least-significant byte.  This is false on big-endian machines.
+Thus, don't make the following mistake:
+
+     int c;
+     ...
+     while ((c = getchar()) != EOF)
+       write(file_descriptor, &c, 1);
+
+   When calling functions, you need not worry about the difference
+between pointers of various types, or between pointers and integers.
+On most machines, there's no difference anyway.  As for the few
+machines where there is a difference, all of them support Standard C
+prototypes, so you can use prototypes (perhaps conditionalized to be
+active only in Standard C) to make the code work on those systems.
+
+   In certain cases, it is ok to pass integer and pointer arguments
+indiscriminately to the same function, and use no prototype on any
+system.  For example, many GNU programs have error-reporting functions
+that pass their arguments along to `printf' and friends:
+
+     error (s, a1, a2, a3)
+          char *s;
+          char *a1, *a2, *a3;
+     {
+       fprintf (stderr, "error: ");
+       fprintf (stderr, s, a1, a2, a3);
+     }
+
+In practice, this works on all machines, since a pointer is generally
+the widest possible kind of argument; it is much simpler than any
+"correct" alternative.  Be sure _not_ to use a prototype for such
+functions.
+
+   If you have decided to use Standard C, then you can instead define
+`error' using `stdarg.h', and pass the arguments along to `vfprintf'.
+
+   Avoid casting pointers to integers if you can.  Such casts greatly
+reduce portability, and in most programs they are easy to avoid.  In the
+cases where casting pointers to integers is essential--such as, a Lisp
+interpreter which stores type information as well as an address in one
+word--you'll have to make explicit provisions to handle different word
+sizes.  You will also need to make provision for systems in which the
+normal range of addresses you can get from `malloc' starts far away
+from zero.
+
+\1f
+File: standards.info,  Node: System Functions,  Next: Internationalization,  Prev: CPU Portability,  Up: Writing C
+
+5.7 Calling System Functions
+============================
+
+C implementations differ substantially.  Standard C reduces but does
+not eliminate the incompatibilities; meanwhile, many GNU packages still
+support pre-standard compilers because this is not hard to do.  This
+chapter gives recommendations for how to use the more-or-less standard C
+library functions to avoid unnecessary loss of portability.
+
+   * Don't use the return value of `sprintf'.  It returns the number of
+     characters written on some systems, but not on all systems.
+
+   * Be aware that `vfprintf' is not always available.
+
+   * `main' should be declared to return type `int'.  It should
+     terminate either by calling `exit' or by returning the integer
+     status code; make sure it cannot ever return an undefined value.
+
+   * Don't declare system functions explicitly.
+
+     Almost any declaration for a system function is wrong on some
+     system.  To minimize conflicts, leave it to the system header
+     files to declare system functions.  If the headers don't declare a
+     function, let it remain undeclared.
+
+     While it may seem unclean to use a function without declaring it,
+     in practice this works fine for most system library functions on
+     the systems where this really happens; thus, the disadvantage is
+     only theoretical.  By contrast, actual declarations have
+     frequently caused actual conflicts.
+
+   * If you must declare a system function, don't specify the argument
+     types.  Use an old-style declaration, not a Standard C prototype.
+     The more you specify about the function, the more likely a
+     conflict.
+
+   * In particular, don't unconditionally declare `malloc' or `realloc'.
+
+     Most GNU programs use those functions just once, in functions
+     conventionally named `xmalloc' and `xrealloc'.  These functions
+     call `malloc' and `realloc', respectively, and check the results.
+
+     Because `xmalloc' and `xrealloc' are defined in your program, you
+     can declare them in other files without any risk of type conflict.
+
+     On most systems, `int' is the same length as a pointer; thus, the
+     calls to `malloc' and `realloc' work fine.  For the few
+     exceptional systems (mostly 64-bit machines), you can use
+     *conditionalized* declarations of `malloc' and `realloc'--or put
+     these declarations in configuration files specific to those
+     systems.
+
+   * The string functions require special treatment.  Some Unix systems
+     have a header file `string.h'; others have `strings.h'.  Neither
+     file name is portable.  There are two things you can do: use
+     Autoconf to figure out which file to include, or don't include
+     either file.
+
+   * If you don't include either strings file, you can't get
+     declarations for the string functions from the header file in the
+     usual way.
+
+     That causes less of a problem than you might think.  The newer
+     standard string functions should be avoided anyway because many
+     systems still don't support them.  The string functions you can
+     use are these:
+
+          strcpy   strncpy   strcat   strncat
+          strlen   strcmp    strncmp
+          strchr   strrchr
+
+     The copy and concatenate functions work fine without a declaration
+     as long as you don't use their values.  Using their values without
+     a declaration fails on systems where the width of a pointer
+     differs from the width of `int', and perhaps in other cases.  It
+     is trivial to avoid using their values, so do that.
+
+     The compare functions and `strlen' work fine without a declaration
+     on most systems, possibly all the ones that GNU software runs on.
+     You may find it necessary to declare them *conditionally* on a few
+     systems.
+
+     The search functions must be declared to return `char *'.  Luckily,
+     there is no variation in the data type they return.  But there is
+     variation in their names.  Some systems give these functions the
+     names `index' and `rindex'; other systems use the names `strchr'
+     and `strrchr'.  Some systems support both pairs of names, but
+     neither pair works on all systems.
+
+     You should pick a single pair of names and use it throughout your
+     program.  (Nowadays, it is better to choose `strchr' and `strrchr'
+     for new programs, since those are the standard names.)  Declare
+     both of those names as functions returning `char *'.  On systems
+     which don't support those names, define them as macros in terms of
+     the other pair.  For example, here is what to put at the beginning
+     of your file (or in a header) if you want to use the names
+     `strchr' and `strrchr' throughout:
+
+          #ifndef HAVE_STRCHR
+          #define strchr index
+          #endif
+          #ifndef HAVE_STRRCHR
+          #define strrchr rindex
+          #endif
+
+          char *strchr ();
+          char *strrchr ();
+
+   Here we assume that `HAVE_STRCHR' and `HAVE_STRRCHR' are macros
+defined in systems where the corresponding functions exist.  One way to
+get them properly defined is to use Autoconf.
+
+\1f
+File: standards.info,  Node: Internationalization,  Next: Mmap,  Prev: System Functions,  Up: Writing C
+
+5.8 Internationalization
+========================
+
+GNU has a library called GNU gettext that makes it easy to translate the
+messages in a program into various languages.  You should use this
+library in every program.  Use English for the messages as they appear
+in the program, and let gettext provide the way to translate them into
+other languages.
+
+   Using GNU gettext involves putting a call to the `gettext' macro
+around each string that might need translation--like this:
+
+     printf (gettext ("Processing file `%s'..."));
+
+This permits GNU gettext to replace the string `"Processing file
+`%s'..."' with a translated version.
+
+   Once a program uses gettext, please make a point of writing calls to
+`gettext' when you add new strings that call for translation.
+
+   Using GNU gettext in a package involves specifying a "text domain
+name" for the package.  The text domain name is used to separate the
+translations for this package from the translations for other packages.
+Normally, the text domain name should be the same as the name of the
+package--for example, `fileutils' for the GNU file utilities.
+
+   To enable gettext to work well, avoid writing code that makes
+assumptions about the structure of words or sentences.  When you want
+the precise text of a sentence to vary depending on the data, use two or
+more alternative string constants each containing a complete sentences,
+rather than inserting conditionalized words or phrases into a single
+sentence framework.
+
+   Here is an example of what not to do:
+
+     printf ("%d file%s processed", nfiles,
+             nfiles != 1 ? "s" : "");
+
+The problem with that example is that it assumes that plurals are made
+by adding `s'.  If you apply gettext to the format string, like this,
+
+     printf (gettext ("%d file%s processed"), nfiles,
+             nfiles != 1 ? "s" : "");
+
+the message can use different words, but it will still be forced to use
+`s' for the plural.  Here is a better way:
+
+     printf ((nfiles != 1 ? "%d files processed"
+              : "%d file processed"),
+             nfiles);
+
+This way, you can apply gettext to each of the two strings
+independently:
+
+     printf ((nfiles != 1 ? gettext ("%d files processed")
+              : gettext ("%d file processed")),
+             nfiles);
+
+This can be any method of forming the plural of the word for "file", and
+also handles languages that require agreement in the word for
+"processed".
+
+   A similar problem appears at the level of sentence structure with
+this code:
+
+     printf ("#  Implicit rule search has%s been done.\n",
+             f->tried_implicit ? "" : " not");
+
+Adding `gettext' calls to this code cannot give correct results for all
+languages, because negation in some languages requires adding words at
+more than one place in the sentence.  By contrast, adding `gettext'
+calls does the job straightfowardly if the code starts out like this:
+
+     printf (f->tried_implicit
+             ? "#  Implicit rule search has been done.\n",
+             : "#  Implicit rule search has not been done.\n");
+
+\1f
+File: standards.info,  Node: Mmap,  Prev: Internationalization,  Up: Writing C
+
+5.9 Mmap
+========
+
+Don't assume that `mmap' either works on all files or fails for all
+files.  It may work on some files and fail on others.
+
+   The proper way to use `mmap' is to try it on the specific file for
+which you want to use it--and if `mmap' doesn't work, fall back on
+doing the job in another way using `read' and `write'.
+
+   The reason this precaution is needed is that the GNU kernel (the
+HURD) provides a user-extensible file system, in which there can be many
+different kinds of "ordinary files."  Many of them support `mmap', but
+some do not.  It is important to make programs handle all these kinds
+of files.
+
+\1f
+File: standards.info,  Node: Documentation,  Next: Managing Releases,  Prev: Writing C,  Up: Top
+
+6 Documenting Programs
+**********************
+
+A GNU program should ideally come with full free documentation, adequate
+for both reference and tutorial purposes.  If the package can be
+programmed or extended, the documentation should cover programming or
+extending it, as well as just using it.
+
+* Menu:
+
+* GNU Manuals::                 Writing proper manuals.
+* Doc Strings and Manuals::     Compiling doc strings doesn't make a manual.
+* Manual Structure Details::    Specific structure conventions.
+* License for Manuals::         Writing the distribution terms for a manual.
+* Manual Credits::              Giving credit to documentation contributors.
+* Printed Manuals::             Mentioning the printed manual.
+* NEWS File::                   NEWS files supplement manuals.
+* Change Logs::                 Recording Changes
+* Man Pages::                   Man pages are secondary.
+* Reading other Manuals::       How far you can go in learning
+                                from other manuals.
+
+\1f
+File: standards.info,  Node: GNU Manuals,  Next: Doc Strings and Manuals,  Up: Documentation
+
+6.1 GNU Manuals
+===============
+
+The preferred document format for the GNU system is the Texinfo
+formatting language.  Every GNU package should (ideally) have
+documentation in Texinfo both for reference and for learners.  Texinfo
+makes it possible to produce a good quality formatted book, using TeX,
+and to generate an Info file.  It is also possible to generate HTML
+output from Texinfo source.  See the Texinfo manual, either the
+hardcopy, or the on-line version available through `info' or the Emacs
+Info subsystem (`C-h i').
+
+   Nowadays some other formats such as Docbook and Sgmltexi can be
+converted automatically into Texinfo.  It is ok to produce the Texinfo
+documentation by conversion this way, as long as it gives good results.
+
+   Programmers often find it most natural to structure the documentation
+following the structure of the implementation, which they know.  But
+this structure is not necessarily good for explaining how to use the
+program; it may be irrelevant and confusing for a user.
+
+   At every level, from the sentences in a paragraph to the grouping of
+topics into separate manuals, the right way to structure documentation
+is according to the concepts and questions that a user will have in mind
+when reading it.  Sometimes this structure of ideas matches the
+structure of the implementation of the software being documented--but
+often they are different.  Often the most important part of learning to
+write good documentation is learning to notice when you are structuring
+the documentation like the implementation, and think about better
+alternatives.
+
+   For example, each program in the GNU system probably ought to be
+documented in one manual; but this does not mean each program should
+have its own manual.  That would be following the structure of the
+implementation, rather than the structure that helps the user
+understand.
+
+   Instead, each manual should cover a coherent _topic_.  For example,
+instead of a manual for `diff' and a manual for `diff3', we have one
+manual for "comparison of files" which covers both of those programs,
+as well as `cmp'.  By documenting these programs together, we can make
+the whole subject clearer.
+
+   The manual which discusses a program should certainly document all of
+the program's command-line options and all of its commands.  It should
+give examples of their use.  But don't organize the manual as a list of
+features.  Instead, organize it logically, by subtopics.  Address the
+questions that a user will ask when thinking about the job that the
+program does.
+
+   In general, a GNU manual should serve both as tutorial and reference.
+It should be set up for convenient access to each topic through Info,
+and for reading straight through (appendixes aside).  A GNU manual
+should give a good introduction to a beginner reading through from the
+start, and should also provide all the details that hackers want.  The
+Bison manual is a good example of this--please take a look at it to see
+what we mean.
+
+   That is not as hard as it first sounds.  Arrange each chapter as a
+logical breakdown of its topic, but order the sections, and write their
+text, so that reading the chapter straight through makes sense.  Do
+likewise when structuring the book into chapters, and when structuring a
+section into paragraphs.  The watchword is, _at each point, address the
+most fundamental and important issue raised by the preceding text._
+
+   If necessary, add extra chapters at the beginning of the manual which
+are purely tutorial and cover the basics of the subject.  These provide
+the framework for a beginner to understand the rest of the manual.  The
+Bison manual provides a good example of how to do this.
+
+   To serve as a reference, a manual should have an Index that list all
+the functions, variables, options, and important concepts that are part
+of the program.  One combined Index should do for a short manual, but
+sometimes for a complex package it is better to use multiple indices.
+The Texinfo manual includes advice on preparing good index entries, see
+*Note Making Index Entries: (texinfo)Index Entries, and see *Note
+Defining the Entries of an Index: (texinfo)Indexing Commands.
+
+   Don't use Unix man pages as a model for how to write GNU
+documentation; most of them are terse, badly structured, and give
+inadequate explanation of the underlying concepts.  (There are, of
+course, some exceptions.)  Also, Unix man pages use a particular format
+which is different from what we use in GNU manuals.
+
+   Please include an email address in the manual for where to report
+bugs _in the manual_.
+
+   Please do not use the term "pathname" that is used in Unix
+documentation; use "file name" (two words) instead.  We use the term
+"path" only for search paths, which are lists of directory names.
+
+   Please do not use the term "illegal" to refer to erroneous input to a
+computer program.  Please use "invalid" for this, and reserve the term
+"illegal" for activities punishable by law.
+
+\1f
+File: standards.info,  Node: Doc Strings and Manuals,  Next: Manual Structure Details,  Prev: GNU Manuals,  Up: Documentation
+
+6.2 Doc Strings and Manuals
+===========================
+
+Some programming systems, such as Emacs, provide a documentation string
+for each function, command or variable.  You may be tempted to write a
+reference manual by compiling the documentation strings and writing a
+little additional text to go around them--but you must not do it.  That
+approach is a fundamental mistake.  The text of well-written
+documentation strings will be entirely wrong for a manual.
+
+   A documentation string needs to stand alone--when it appears on the
+screen, there will be no other text to introduce or explain it.
+Meanwhile, it can be rather informal in style.
+
+   The text describing a function or variable in a manual must not stand
+alone; it appears in the context of a section or subsection.  Other text
+at the beginning of the section should explain some of the concepts, and
+should often make some general points that apply to several functions or
+variables.  The previous descriptions of functions and variables in the
+section will also have given information about the topic.  A description
+written to stand alone would repeat some of that information; this
+redundance looks bad.  Meanwhile, the informality that is acceptable in
+a documentation string is totally unacceptable in a manual.
+
+   The only good way to use documentation strings in writing a good
+manual is to use them as a source of information for writing good text.
+
+\1f
+File: standards.info,  Node: Manual Structure Details,  Next: License for Manuals,  Prev: Doc Strings and Manuals,  Up: Documentation
+
+6.3 Manual Structure Details
+============================
+
+The title page of the manual should state the version of the programs or
+packages documented in the manual.  The Top node of the manual should
+also contain this information.  If the manual is changing more
+frequently than or independent of the program, also state a version
+number for the manual in both of these places.
+
+   Each program documented in the manual should have a node named
+`PROGRAM Invocation' or `Invoking PROGRAM'.  This node (together with
+its subnodes, if any) should describe the program's command line
+arguments and how to run it (the sort of information people would look
+in a man page for).  Start with an `@example' containing a template for
+all the options and arguments that the program uses.
+
+   Alternatively, put a menu item in some menu whose item name fits one
+of the above patterns.  This identifies the node which that item points
+to as the node for this purpose, regardless of the node's actual name.
+
+   The `--usage' feature of the Info reader looks for such a node or
+menu item in order to find the relevant text, so it is essential for
+every Texinfo file to have one.
+
+   If one manual describes several programs, it should have such a node
+for each program described in the manual.
+
+\1f
+File: standards.info,  Node: License for Manuals,  Next: Manual Credits,  Prev: Manual Structure Details,  Up: Documentation
+
+6.4 License for Manuals
+=======================
+
+Please use the GNU Free Documentation License for all GNU manuals that
+are more than a few pages long.  Likewise for a collection of short
+documents--you only need one copy of the GNU FDL for the whole
+collection.  For a single short document, you can use a very permissive
+non-copyleft license, to avoid taking up space with a long license.
+
+   See `http://www.gnu.org/copyleft/fdl-howto.html' for more explanation
+of how to employ the GFDL.
+
+   Note that it is not obligatory to include a copy of the GNU GPL or
+GNU LGPL in a manual whose license is neither the GPL nor the LGPL.  It
+can be a good idea to include the program's license in a large manual;
+in a short manual, whose size would be increased considerably by
+including the program's license, it is probably better not to include
+it.
+
+\1f
+File: standards.info,  Node: Manual Credits,  Next: Printed Manuals,  Prev: License for Manuals,  Up: Documentation
+
+6.5 Manual Credits
+==================
+
+Please credit the principal human writers of the manual as the authors,
+on the title page of the manual.  If a company sponsored the work, thank
+the company in a suitable place in the manual, but do not cite the
+company as an author.
+
+\1f
+File: standards.info,  Node: Printed Manuals,  Next: NEWS File,  Prev: Manual Credits,  Up: Documentation
+
+6.6 Printed Manuals
+===================
+
+The FSF publishes some GNU manuals in printed form.  To encourage sales
+of these manuals, the on-line versions of the manual should mention at
+the very start that the printed manual is available and should point at
+information for getting it--for instance, with a link to the page
+`http://www.gnu.org/order/order.html'.  This should not be included in
+the printed manual, though, because there it is redundant.
+
+   It is also useful to explain in the on-line forms of the manual how
+the user can print out the manual from the sources.
+
+\1f
+File: standards.info,  Node: NEWS File,  Next: Change Logs,  Prev: Printed Manuals,  Up: Documentation
+
+6.7 The NEWS File
+=================
+
+In addition to its manual, the package should have a file named `NEWS'
+which contains a list of user-visible changes worth mentioning.  In
+each new release, add items to the front of the file and identify the
+version they pertain to.  Don't discard old items; leave them in the
+file after the newer items.  This way, a user upgrading from any
+previous version can see what is new.
+
+   If the `NEWS' file gets very long, move some of the older items into
+a file named `ONEWS' and put a note at the end referring the user to
+that file.
+
+\1f
+File: standards.info,  Node: Change Logs,  Next: Man Pages,  Prev: NEWS File,  Up: Documentation
+
+6.8 Change Logs
+===============
+
+Keep a change log to describe all the changes made to program source
+files.  The purpose of this is so that people investigating bugs in the
+future will know about the changes that might have introduced the bug.
+Often a new bug can be found by looking at what was recently changed.
+More importantly, change logs can help you eliminate conceptual
+inconsistencies between different parts of a program, by giving you a
+history of how the conflicting concepts arose and who they came from.
+
+* Menu:
+
+* Change Log Concepts::
+* Style of Change Logs::
+* Simple Changes::
+* Conditional Changes::
+* Indicating the Part Changed::
+
+\1f
+File: standards.info,  Node: Change Log Concepts,  Next: Style of Change Logs,  Up: Change Logs
+
+6.8.1 Change Log Concepts
+-------------------------
+
+You can think of the change log as a conceptual "undo list" which
+explains how earlier versions were different from the current version.
+People can see the current version; they don't need the change log to
+tell them what is in it.  What they want from a change log is a clear
+explanation of how the earlier version differed.
+
+   The change log file is normally called `ChangeLog' and covers an
+entire directory.  Each directory can have its own change log, or a
+directory can use the change log of its parent directory-it's up to you.
+
+   Another alternative is to record change log information with a
+version control system such as RCS or CVS.  This can be converted
+automatically to a `ChangeLog' file using `rcs2log'; in Emacs, the
+command `C-x v a' (`vc-update-change-log') does the job.
+
+   There's no need to describe the full purpose of the changes or how
+they work together.  If you think that a change calls for explanation,
+you're probably right.  Please do explain it--but please put the
+explanation in comments in the code, where people will see it whenever
+they see the code.  For example, "New function" is enough for the
+change log when you add a function, because there should be a comment
+before the function definition to explain what it does.
+
+   However, sometimes it is useful to write one line to describe the
+overall purpose of a batch of changes.
+
+   The easiest way to add an entry to `ChangeLog' is with the Emacs
+command `M-x add-change-log-entry'.  An entry should have an asterisk,
+the name of the changed file, and then in parentheses the name of the
+changed functions, variables or whatever, followed by a colon.  Then
+describe the changes you made to that function or variable.
+
+\1f
+File: standards.info,  Node: Style of Change Logs,  Next: Simple Changes,  Prev: Change Log Concepts,  Up: Change Logs
+
+6.8.2 Style of Change Logs
+--------------------------
+
+Here are some simple examples of change log entries, starting with the
+header line that says who made the change and when, followed by
+descriptions of specific changes.  (These examples are drawn from Emacs
+and GCC.)
+
+     1998-08-17  Richard Stallman  <rms@gnu.org>
+
+     * register.el (insert-register): Return nil.
+     (jump-to-register): Likewise.
+
+     * sort.el (sort-subr): Return nil.
+
+     * tex-mode.el (tex-bibtex-file, tex-file, tex-region):
+     Restart the tex shell if process is gone or stopped.
+     (tex-shell-running): New function.
+
+     * expr.c (store_one_arg): Round size up for move_block_to_reg.
+     (expand_call): Round up when emitting USE insns.
+     * stmt.c (assign_parms): Round size up for move_block_from_reg.
+
+   It's important to name the changed function or variable in full.
+Don't abbreviate function or variable names, and don't combine them.
+Subsequent maintainers will often search for a function name to find all
+the change log entries that pertain to it; if you abbreviate the name,
+they won't find it when they search.
+
+   For example, some people are tempted to abbreviate groups of function
+names by writing `* register.el ({insert,jump-to}-register)'; this is
+not a good idea, since searching for `jump-to-register' or
+`insert-register' would not find that entry.
+
+   Separate unrelated change log entries with blank lines.  When two
+entries represent parts of the same change, so that they work together,
+then don't put blank lines between them.  Then you can omit the file
+name and the asterisk when successive entries are in the same file.
+
+   Break long lists of function names by closing continued lines with
+`)', rather than `,', and opening the continuation with `(' as in this
+example:
+
+     * keyboard.c (menu_bar_items, tool_bar_items)
+     (Fexecute_extended_command): Deal with `keymap' property.
+
+\1f
+File: standards.info,  Node: Simple Changes,  Next: Conditional Changes,  Prev: Style of Change Logs,  Up: Change Logs
+
+6.8.3 Simple Changes
+--------------------
+
+Certain simple kinds of changes don't need much detail in the change
+log.
+
+   When you change the calling sequence of a function in a simple
+fashion, and you change all the callers of the function to use the new
+calling sequence, there is no need to make individual entries for all
+the callers that you changed.  Just write in the entry for the function
+being called, "All callers changed"--like this:
+
+     * keyboard.c (Fcommand_execute): New arg SPECIAL.
+     All callers changed.
+
+   When you change just comments or doc strings, it is enough to write
+an entry for the file, without mentioning the functions.  Just "Doc
+fixes" is enough for the change log.
+
+   There's no need to make change log entries for documentation files.
+This is because documentation is not susceptible to bugs that are hard
+to fix.  Documentation does not consist of parts that must interact in a
+precisely engineered fashion.  To correct an error, you need not know
+the history of the erroneous passage; it is enough to compare what the
+documentation says with the way the program actually works.
+
+\1f
+File: standards.info,  Node: Conditional Changes,  Next: Indicating the Part Changed,  Prev: Simple Changes,  Up: Change Logs
+
+6.8.4 Conditional Changes
+-------------------------
+
+C programs often contain compile-time `#if' conditionals.  Many changes
+are conditional; sometimes you add a new definition which is entirely
+contained in a conditional.  It is very useful to indicate in the
+change log the conditions for which the change applies.
+
+   Our convention for indicating conditional changes is to use square
+brackets around the name of the condition.
+
+   Here is a simple example, describing a change which is conditional
+but does not have a function or entity name associated with it:
+
+     * xterm.c [SOLARIS2]: Include string.h.
+
+   Here is an entry describing a new definition which is entirely
+conditional.  This new definition for the macro `FRAME_WINDOW_P' is
+used only when `HAVE_X_WINDOWS' is defined:
+
+     * frame.h [HAVE_X_WINDOWS] (FRAME_WINDOW_P): Macro defined.
+
+   Here is an entry for a change within the function `init_display',
+whose definition as a whole is unconditional, but the changes themselves
+are contained in a `#ifdef HAVE_LIBNCURSES' conditional:
+
+     * dispnew.c (init_display) [HAVE_LIBNCURSES]: If X, call tgetent.
+
+   Here is an entry for a change that takes affect only when a certain
+macro is _not_ defined:
+
+     (gethostname) [!HAVE_SOCKETS]: Replace with winsock version.
+
+\1f
+File: standards.info,  Node: Indicating the Part Changed,  Prev: Conditional Changes,  Up: Change Logs
+
+6.8.5 Indicating the Part Changed
+---------------------------------
+
+Indicate the part of a function which changed by using angle brackets
+enclosing an indication of what the changed part does.  Here is an entry
+for a change in the part of the function `sh-while-getopts' that deals
+with `sh' commands:
+
+     * progmodes/sh-script.el (sh-while-getopts) <sh>: Handle case that
+     user-specified option string is empty.
+
+\1f
+File: standards.info,  Node: Man Pages,  Next: Reading other Manuals,  Prev: Change Logs,  Up: Documentation
+
+6.9 Man Pages
+=============
+
+In the GNU project, man pages are secondary.  It is not necessary or
+expected for every GNU program to have a man page, but some of them do.
+It's your choice whether to include a man page in your program.
+
+   When you make this decision, consider that supporting a man page
+requires continual effort each time the program is changed.  The time
+you spend on the man page is time taken away from more useful work.
+
+   For a simple program which changes little, updating the man page may
+be a small job.  Then there is little reason not to include a man page,
+if you have one.
+
+   For a large program that changes a great deal, updating a man page
+may be a substantial burden.  If a user offers to donate a man page,
+you may find this gift costly to accept.  It may be better to refuse
+the man page unless the same person agrees to take full responsibility
+for maintaining it--so that you can wash your hands of it entirely.  If
+this volunteer later ceases to do the job, then don't feel obliged to
+pick it up yourself; it may be better to withdraw the man page from the
+distribution until someone else agrees to update it.
+
+   When a program changes only a little, you may feel that the
+discrepancies are small enough that the man page remains useful without
+updating.  If so, put a prominent note near the beginning of the man
+page explaining that you don't maintain it and that the Texinfo manual
+is more authoritative.  The note should say how to access the Texinfo
+documentation.
+
+\1f
+File: standards.info,  Node: Reading other Manuals,  Prev: Man Pages,  Up: Documentation
+
+6.10 Reading other Manuals
+==========================
+
+There may be non-free books or documentation files that describe the
+program you are documenting.
+
+   It is ok to use these documents for reference, just as the author of
+a new algebra textbook can read other books on algebra.  A large portion
+of any non-fiction book consists of facts, in this case facts about how
+a certain program works, and these facts are necessarily the same for
+everyone who writes about the subject.  But be careful not to copy your
+outline structure, wording, tables or examples from preexisting non-free
+documentation.  Copying from free documentation may be ok; please check
+with the FSF about the individual case.
+
+\1f
+File: standards.info,  Node: Managing Releases,  Next: References,  Prev: Documentation,  Up: Top
+
+7 The Release Process
+*********************
+
+Making a release is more than just bundling up your source files in a
+tar file and putting it up for FTP.  You should set up your software so
+that it can be configured to run on a variety of systems.  Your Makefile
+should conform to the GNU standards described below, and your directory
+layout should also conform to the standards discussed below.  Doing so
+makes it easy to include your package into the larger framework of all
+GNU software.
+
+* Menu:
+
+* Configuration::               How Configuration Should Work
+* Makefile Conventions::        Makefile Conventions
+* Releases::                    Making Releases
+
+\1f
+File: standards.info,  Node: Configuration,  Next: Makefile Conventions,  Up: Managing Releases
+
+7.1 How Configuration Should Work
+=================================
+
+Each GNU distribution should come with a shell script named
+`configure'.  This script is given arguments which describe the kind of
+machine and system you want to compile the program for.
+
+   The `configure' script must record the configuration options so that
+they affect compilation.
+
+   One way to do this is to make a link from a standard name such as
+`config.h' to the proper configuration file for the chosen system.  If
+you use this technique, the distribution should _not_ contain a file
+named `config.h'.  This is so that people won't be able to build the
+program without configuring it first.
+
+   Another thing that `configure' can do is to edit the Makefile.  If
+you do this, the distribution should _not_ contain a file named
+`Makefile'.  Instead, it should include a file `Makefile.in' which
+contains the input used for editing.  Once again, this is so that people
+won't be able to build the program without configuring it first.
+
+   If `configure' does write the `Makefile', then `Makefile' should
+have a target named `Makefile' which causes `configure' to be rerun,
+setting up the same configuration that was set up last time.  The files
+that `configure' reads should be listed as dependencies of `Makefile'.
+
+   All the files which are output from the `configure' script should
+have comments at the beginning explaining that they were generated
+automatically using `configure'.  This is so that users won't think of
+trying to edit them by hand.
+
+   The `configure' script should write a file named `config.status'
+which describes which configuration options were specified when the
+program was last configured.  This file should be a shell script which,
+if run, will recreate the same configuration.
+
+   The `configure' script should accept an option of the form
+`--srcdir=DIRNAME' to specify the directory where sources are found (if
+it is not the current directory).  This makes it possible to build the
+program in a separate directory, so that the actual source directory is
+not modified.
+
+   If the user does not specify `--srcdir', then `configure' should
+check both `.' and `..' to see if it can find the sources.  If it finds
+the sources in one of these places, it should use them from there.
+Otherwise, it should report that it cannot find the sources, and should
+exit with nonzero status.
+
+   Usually the easy way to support `--srcdir' is by editing a
+definition of `VPATH' into the Makefile.  Some rules may need to refer
+explicitly to the specified source directory.  To make this possible,
+`configure' can add to the Makefile a variable named `srcdir' whose
+value is precisely the specified directory.
+
+   The `configure' script should also take an argument which specifies
+the type of system to build the program for.  This argument should look
+like this:
+
+     CPU-COMPANY-SYSTEM
+
+   For example, a Sun 3 might be `m68k-sun-sunos4.1'.
+
+   The `configure' script needs to be able to decode all plausible
+alternatives for how to describe a machine.  Thus, `sun3-sunos4.1'
+would be a valid alias.  For many programs, `vax-dec-ultrix' would be
+an alias for `vax-dec-bsd', simply because the differences between
+Ultrix and BSD are rarely noticeable, but a few programs might need to
+distinguish them.
+
+   There is a shell script called `config.sub' that you can use as a
+subroutine to validate system types and canonicalize aliases.
+
+   Other options are permitted to specify in more detail the software
+or hardware present on the machine, and include or exclude optional
+parts of the package:
+
+`--enable-FEATURE[=PARAMETER]'
+     Configure the package to build and install an optional user-level
+     facility called FEATURE.  This allows users to choose which
+     optional features to include.  Giving an optional PARAMETER of
+     `no' should omit FEATURE, if it is built by default.
+
+     No `--enable' option should *ever* cause one feature to replace
+     another.  No `--enable' option should ever substitute one useful
+     behavior for another useful behavior.  The only proper use for
+     `--enable' is for questions of whether to build part of the program
+     or exclude it.
+
+`--with-PACKAGE'
+     The package PACKAGE will be installed, so configure this package
+     to work with PACKAGE.
+
+     Possible values of PACKAGE include `gnu-as' (or `gas'), `gnu-ld',
+     `gnu-libc', `gdb', `x', and `x-toolkit'.
+
+     Do not use a `--with' option to specify the file name to use to
+     find certain files.  That is outside the scope of what `--with'
+     options are for.
+
+   All `configure' scripts should accept all of these "detail" options,
+whether or not they make any difference to the particular package at
+hand.  In particular, they should accept any option that starts with
+`--with-' or `--enable-'.  This is so users will be able to configure
+an entire GNU source tree at once with a single set of options.
+
+   You will note that the categories `--with-' and `--enable-' are
+narrow: they *do not* provide a place for any sort of option you might
+think of.  That is deliberate.  We want to limit the possible
+configuration options in GNU software.  We do not want GNU programs to
+have idiosyncratic configuration options.
+
+   Packages that perform part of the compilation process may support
+cross-compilation.  In such a case, the host and target machines for the
+program may be different.
+
+   The `configure' script should normally treat the specified type of
+system as both the host and the target, thus producing a program which
+works for the same type of machine that it runs on.
+
+   To configure a cross-compiler, cross-assembler, or what have you, you
+should specify a target different from the host, using the configure
+option `--target=TARGETTYPE'.  The syntax for TARGETTYPE is the same as
+for the host type.  So the command would look like this:
+
+     ./configure HOSTTYPE --target=TARGETTYPE
+
+   Programs for which cross-operation is not meaningful need not accept
+the `--target' option, because configuring an entire operating system
+for cross-operation is not a meaningful operation.
+
+   Bootstrapping a cross-compiler requires compiling it on a machine
+other than the host it will run on.  Compilation packages accept a
+configuration option `--build=BUILDTYPE' for specifying the
+configuration on which you will compile them, but the configure script
+should normally guess the build machine type (using `config.guess'), so
+this option is probably not necessary.  The host and target types
+normally default from the build type, so in bootstrapping a
+cross-compiler you must specify them both explicitly.
+
+   Some programs have ways of configuring themselves automatically.  If
+your program is set up to do this, your `configure' script can simply
+ignore most of its arguments.
+
+\1f
+File: standards.info,  Node: Makefile Conventions,  Next: Releases,  Prev: Configuration,  Up: Managing Releases
+
+7.2 Makefile Conventions
+========================
+
+This node describes conventions for writing the Makefiles for GNU
+programs.  Using Automake will help you write a Makefile that follows
+these conventions.
+
+* Menu:
+
+* Makefile Basics::             General Conventions for Makefiles
+* Utilities in Makefiles::      Utilities in Makefiles
+* Command Variables::           Variables for Specifying Commands
+* Directory Variables::         Variables for Installation Directories
+* Standard Targets::            Standard Targets for Users
+* Install Command Categories::  Three categories of commands in the `install'
+                                  rule: normal, pre-install and post-install.
+
+\1f
+File: standards.info,  Node: Makefile Basics,  Next: Utilities in Makefiles,  Up: Makefile Conventions
+
+7.2.1 General Conventions for Makefiles
+---------------------------------------
+
+Every Makefile should contain this line:
+
+     SHELL = /bin/sh
+
+to avoid trouble on systems where the `SHELL' variable might be
+inherited from the environment.  (This is never a problem with GNU
+`make'.)
+
+   Different `make' programs have incompatible suffix lists and
+implicit rules, and this sometimes creates confusion or misbehavior.  So
+it is a good idea to set the suffix list explicitly using only the
+suffixes you need in the particular Makefile, like this:
+
+     .SUFFIXES:
+     .SUFFIXES: .c .o
+
+The first line clears out the suffix list, the second introduces all
+suffixes which may be subject to implicit rules in this Makefile.
+
+   Don't assume that `.' is in the path for command execution.  When
+you need to run programs that are a part of your package during the
+make, please make sure that it uses `./' if the program is built as
+part of the make or `$(srcdir)/' if the file is an unchanging part of
+the source code.  Without one of these prefixes, the current search
+path is used.
+
+   The distinction between `./' (the "build directory") and
+`$(srcdir)/' (the "source directory") is important because users can
+build in a separate directory using the `--srcdir' option to
+`configure'.  A rule of the form:
+
+     foo.1 : foo.man sedscript
+             sed -e sedscript foo.man > foo.1
+
+will fail when the build directory is not the source directory, because
+`foo.man' and `sedscript' are in the source directory.
+
+   When using GNU `make', relying on `VPATH' to find the source file
+will work in the case where there is a single dependency file, since
+the `make' automatic variable `$<' will represent the source file
+wherever it is.  (Many versions of `make' set `$<' only in implicit
+rules.)  A Makefile target like
+
+     foo.o : bar.c
+             $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o
+
+should instead be written as
+
+     foo.o : bar.c
+             $(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@
+
+in order to allow `VPATH' to work correctly.  When the target has
+multiple dependencies, using an explicit `$(srcdir)' is the easiest way
+to make the rule work well.  For example, the target above for `foo.1'
+is best written as:
+
+     foo.1 : foo.man sedscript
+             sed -e $(srcdir)/sedscript $(srcdir)/foo.man > $@
+
+   GNU distributions usually contain some files which are not source
+files--for example, Info files, and the output from Autoconf, Automake,
+Bison or Flex.  Since these files normally appear in the source
+directory, they should always appear in the source directory, not in the
+build directory.  So Makefile rules to update them should put the
+updated files in the source directory.
+
+   However, if a file does not appear in the distribution, then the
+Makefile should not put it in the source directory, because building a
+program in ordinary circumstances should not modify the source directory
+in any way.
+
+   Try to make the build and installation targets, at least (and all
+their subtargets) work correctly with a parallel `make'.
+
+\1f
+File: standards.info,  Node: Utilities in Makefiles,  Next: Command Variables,  Prev: Makefile Basics,  Up: Makefile Conventions
+
+7.2.2 Utilities in Makefiles
+----------------------------
+
+Write the Makefile commands (and any shell scripts, such as
+`configure') to run in `sh', not in `csh'.  Don't use any special
+features of `ksh' or `bash'.
+
+   The `configure' script and the Makefile rules for building and
+installation should not use any utilities directly except these:
+
+     cat cmp cp diff echo egrep expr false grep install-info
+     ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true
+
+   The compression program `gzip' can be used in the `dist' rule.
+
+   Stick to the generally supported options for these programs.  For
+example, don't use `mkdir -p', convenient as it may be, because most
+systems don't support it.
+
+   It is a good idea to avoid creating symbolic links in makefiles,
+since a few systems don't support them.
+
+   The Makefile rules for building and installation can also use
+compilers and related programs, but should do so via `make' variables
+so that the user can substitute alternatives.  Here are some of the
+programs we mean:
+
+     ar bison cc flex install ld ldconfig lex
+     make makeinfo ranlib texi2dvi yacc
+
+   Use the following `make' variables to run those programs:
+
+     $(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX)
+     $(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC)
+
+   When you use `ranlib' or `ldconfig', you should make sure nothing
+bad happens if the system does not have the program in question.
+Arrange to ignore an error from that command, and print a message before
+the command to tell the user that failure of this command does not mean
+a problem.  (The Autoconf `AC_PROG_RANLIB' macro can help with this.)
+
+   If you use symbolic links, you should implement a fallback for
+systems that don't have symbolic links.
+
+   Additional utilities that can be used via Make variables are:
+
+     chgrp chmod chown mknod
+
+   It is ok to use other utilities in Makefile portions (or scripts)
+intended only for particular systems where you know those utilities
+exist.
+
+\1f
+File: standards.info,  Node: Command Variables,  Next: Directory Variables,  Prev: Utilities in Makefiles,  Up: Makefile Conventions
+
+7.2.3 Variables for Specifying Commands
+---------------------------------------
+
+Makefiles should provide variables for overriding certain commands,
+options, and so on.
+
+   In particular, you should run most utility programs via variables.
+Thus, if you use Bison, have a variable named `BISON' whose default
+value is set with `BISON = bison', and refer to it with `$(BISON)'
+whenever you need to use Bison.
+
+   File management utilities such as `ln', `rm', `mv', and so on, need
+not be referred to through variables in this way, since users don't
+need to replace them with other programs.
+
+   Each program-name variable should come with an options variable that
+is used to supply options to the program.  Append `FLAGS' to the
+program-name variable name to get the options variable name--for
+example, `BISONFLAGS'.  (The names `CFLAGS' for the C compiler,
+`YFLAGS' for yacc, and `LFLAGS' for lex, are exceptions to this rule,
+but we keep them because they are standard.)  Use `CPPFLAGS' in any
+compilation command that runs the preprocessor, and use `LDFLAGS' in
+any compilation command that does linking as well as in any direct use
+of `ld'.
+
+   If there are C compiler options that _must_ be used for proper
+compilation of certain files, do not include them in `CFLAGS'.  Users
+expect to be able to specify `CFLAGS' freely themselves.  Instead,
+arrange to pass the necessary options to the C compiler independently
+of `CFLAGS', by writing them explicitly in the compilation commands or
+by defining an implicit rule, like this:
+
+     CFLAGS = -g
+     ALL_CFLAGS = -I. $(CFLAGS)
+     .c.o:
+             $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
+
+   Do include the `-g' option in `CFLAGS', because that is not
+_required_ for proper compilation.  You can consider it a default that
+is only recommended.  If the package is set up so that it is compiled
+with GCC by default, then you might as well include `-O' in the default
+value of `CFLAGS' as well.
+
+   Put `CFLAGS' last in the compilation command, after other variables
+containing compiler options, so the user can use `CFLAGS' to override
+the others.
+
+   `CFLAGS' should be used in every invocation of the C compiler, both
+those which do compilation and those which do linking.
+
+   Every Makefile should define the variable `INSTALL', which is the
+basic command for installing a file into the system.
+
+   Every Makefile should also define the variables `INSTALL_PROGRAM'
+and `INSTALL_DATA'.  (The default for `INSTALL_PROGRAM' should be
+`$(INSTALL)'; the default for `INSTALL_DATA' should be `${INSTALL} -m
+644'.)  Then it should use those variables as the commands for actual
+installation, for executables and nonexecutables respectively.  Use
+these variables as follows:
+
+     $(INSTALL_PROGRAM) foo $(bindir)/foo
+     $(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a
+
+   Optionally, you may prepend the value of `DESTDIR' to the target
+filename.  Doing this allows the installer to create a snapshot of the
+installation to be copied onto the real target filesystem later.  Do not
+set the value of `DESTDIR' in your Makefile, and do not include it in
+any installed files.  With support for `DESTDIR', the above examples
+become:
+
+     $(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo
+     $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a
+
+Always use a file name, not a directory name, as the second argument of
+the installation commands.  Use a separate command for each file to be
+installed.
+
+\1f
+File: standards.info,  Node: Directory Variables,  Next: Standard Targets,  Prev: Command Variables,  Up: Makefile Conventions
+
+7.2.4 Variables for Installation Directories
+--------------------------------------------
+
+Installation directories should always be named by variables, so it is
+easy to install in a nonstandard place.  The standard names for these
+variables are described below.  They are based on a standard filesystem
+layout; variants of it are used in SVR4, 4.4BSD, GNU/Linux, Ultrix v4,
+and other modern operating systems.
+
+   These two variables set the root for the installation.  All the other
+installation directories should be subdirectories of one of these two,
+and nothing should be directly installed into these two directories.
+
+`prefix'
+     A prefix used in constructing the default values of the variables
+     listed below.  The default value of `prefix' should be
+     `/usr/local'.  When building the complete GNU system, the prefix
+     will be empty and `/usr' will be a symbolic link to `/'.  (If you
+     are using Autoconf, write it as `@prefix@'.)
+
+     Running `make install' with a different value of `prefix' from the
+     one used to build the program should _not_ recompile the program.
+
+`exec_prefix'
+     A prefix used in constructing the default values of some of the
+     variables listed below.  The default value of `exec_prefix' should
+     be `$(prefix)'.  (If you are using Autoconf, write it as
+     `@exec_prefix@'.)
+
+     Generally, `$(exec_prefix)' is used for directories that contain
+     machine-specific files (such as executables and subroutine
+     libraries), while `$(prefix)' is used directly for other
+     directories.
+
+     Running `make install' with a different value of `exec_prefix'
+     from the one used to build the program should _not_ recompile the
+     program.
+
+   Executable programs are installed in one of the following
+directories.
+
+`bindir'
+     The directory for installing executable programs that users can
+     run.  This should normally be `/usr/local/bin', but write it as
+     `$(exec_prefix)/bin'.  (If you are using Autoconf, write it as
+     `@bindir@'.)
+
+`sbindir'
+     The directory for installing executable programs that can be run
+     from the shell, but are only generally useful to system
+     administrators.  This should normally be `/usr/local/sbin', but
+     write it as `$(exec_prefix)/sbin'.  (If you are using Autoconf,
+     write it as `@sbindir@'.)
+
+`libexecdir'
+     The directory for installing executable programs to be run by other
+     programs rather than by users.  This directory should normally be
+     `/usr/local/libexec', but write it as `$(exec_prefix)/libexec'.
+     (If you are using Autoconf, write it as `@libexecdir@'.)
+
+   Data files used by the program during its execution are divided into
+categories in two ways.
+
+   * Some files are normally modified by programs; others are never
+     normally modified (though users may edit some of these).
+
+   * Some files are architecture-independent and can be shared by all
+     machines at a site; some are architecture-dependent and can be
+     shared only by machines of the same kind and operating system;
+     others may never be shared between two machines.
+
+   This makes for six different possibilities.  However, we want to
+discourage the use of architecture-dependent files, aside from object
+files and libraries.  It is much cleaner to make other data files
+architecture-independent, and it is generally not hard.
+
+   Therefore, here are the variables Makefiles should use to specify
+directories:
+
+`datadir'
+     The directory for installing read-only architecture independent
+     data files.  This should normally be `/usr/local/share', but write
+     it as `$(prefix)/share'.  (If you are using Autoconf, write it as
+     `@datadir@'.)  As a special exception, see `$(infodir)' and
+     `$(includedir)' below.
+
+`sysconfdir'
+     The directory for installing read-only data files that pertain to a
+     single machine-that is to say, files for configuring a host.
+     Mailer and network configuration files, `/etc/passwd', and so
+     forth belong here.  All the files in this directory should be
+     ordinary ASCII text files.  This directory should normally be
+     `/usr/local/etc', but write it as `$(prefix)/etc'.  (If you are
+     using Autoconf, write it as `@sysconfdir@'.)
+
+     Do not install executables here in this directory (they probably
+     belong in `$(libexecdir)' or `$(sbindir)').  Also do not install
+     files that are modified in the normal course of their use (programs
+     whose purpose is to change the configuration of the system
+     excluded).  Those probably belong in `$(localstatedir)'.
+
+`sharedstatedir'
+     The directory for installing architecture-independent data files
+     which the programs modify while they run.  This should normally be
+     `/usr/local/com', but write it as `$(prefix)/com'.  (If you are
+     using Autoconf, write it as `@sharedstatedir@'.)
+
+`localstatedir'
+     The directory for installing data files which the programs modify
+     while they run, and that pertain to one specific machine.  Users
+     should never need to modify files in this directory to configure
+     the package's operation; put such configuration information in
+     separate files that go in `$(datadir)' or `$(sysconfdir)'.
+     `$(localstatedir)' should normally be `/usr/local/var', but write
+     it as `$(prefix)/var'.  (If you are using Autoconf, write it as
+     `@localstatedir@'.)
+
+`libdir'
+     The directory for object files and libraries of object code.  Do
+     not install executables here, they probably ought to go in
+     `$(libexecdir)' instead.  The value of `libdir' should normally be
+     `/usr/local/lib', but write it as `$(exec_prefix)/lib'.  (If you
+     are using Autoconf, write it as `@libdir@'.)
+
+`infodir'
+     The directory for installing the Info files for this package.  By
+     default, it should be `/usr/local/info', but it should be written
+     as `$(prefix)/info'.  (If you are using Autoconf, write it as
+     `@infodir@'.)
+
+`lispdir'
+     The directory for installing any Emacs Lisp files in this package.
+     By default, it should be `/usr/local/share/emacs/site-lisp', but
+     it should be written as `$(prefix)/share/emacs/site-lisp'.
+
+     If you are using Autoconf, write the default as `@lispdir@'.  In
+     order to make `@lispdir@' work, you need the following lines in
+     your `configure.in' file:
+
+          lispdir='${datadir}/emacs/site-lisp'
+          AC_SUBST(lispdir)
+
+`includedir'
+     The directory for installing header files to be included by user
+     programs with the C `#include' preprocessor directive.  This
+     should normally be `/usr/local/include', but write it as
+     `$(prefix)/include'.  (If you are using Autoconf, write it as
+     `@includedir@'.)
+
+     Most compilers other than GCC do not look for header files in
+     directory `/usr/local/include'.  So installing the header files
+     this way is only useful with GCC.  Sometimes this is not a problem
+     because some libraries are only really intended to work with GCC.
+     But some libraries are intended to work with other compilers.
+     They should install their header files in two places, one
+     specified by `includedir' and one specified by `oldincludedir'.
+
+`oldincludedir'
+     The directory for installing `#include' header files for use with
+     compilers other than GCC.  This should normally be `/usr/include'.
+     (If you are using Autoconf, you can write it as `@oldincludedir@'.)
+
+     The Makefile commands should check whether the value of
+     `oldincludedir' is empty.  If it is, they should not try to use
+     it; they should cancel the second installation of the header files.
+
+     A package should not replace an existing header in this directory
+     unless the header came from the same package.  Thus, if your Foo
+     package provides a header file `foo.h', then it should install the
+     header file in the `oldincludedir' directory if either (1) there
+     is no `foo.h' there or (2) the `foo.h' that exists came from the
+     Foo package.
+
+     To tell whether `foo.h' came from the Foo package, put a magic
+     string in the file--part of a comment--and `grep' for that string.
+
+   Unix-style man pages are installed in one of the following:
+
+`mandir'
+     The top-level directory for installing the man pages (if any) for
+     this package.  It will normally be `/usr/local/man', but you should
+     write it as `$(prefix)/man'.  (If you are using Autoconf, write it
+     as `@mandir@'.)
+
+`man1dir'
+     The directory for installing section 1 man pages.  Write it as
+     `$(mandir)/man1'.
+
+`man2dir'
+     The directory for installing section 2 man pages.  Write it as
+     `$(mandir)/man2'
+
+`...'
+     *Don't make the primary documentation for any GNU software be a
+     man page.  Write a manual in Texinfo instead.  Man pages are just
+     for the sake of people running GNU software on Unix, which is a
+     secondary application only.*
+
+`manext'
+     The file name extension for the installed man page.  This should
+     contain a period followed by the appropriate digit; it should
+     normally be `.1'.
+
+`man1ext'
+     The file name extension for installed section 1 man pages.
+
+`man2ext'
+     The file name extension for installed section 2 man pages.
+
+`...'
+     Use these names instead of `manext' if the package needs to
+     install man pages in more than one section of the manual.
+
+   And finally, you should set the following variable:
+
+`srcdir'
+     The directory for the sources being compiled.  The value of this
+     variable is normally inserted by the `configure' shell script.
+     (If you are using Autconf, use `srcdir = @srcdir@'.)
+
+   For example:
+
+     # Common prefix for installation directories.
+     # NOTE: This directory must exist when you start the install.
+     prefix = /usr/local
+     exec_prefix = $(prefix)
+     # Where to put the executable for the command `gcc'.
+     bindir = $(exec_prefix)/bin
+     # Where to put the directories used by the compiler.
+     libexecdir = $(exec_prefix)/libexec
+     # Where to put the Info files.
+     infodir = $(prefix)/info
+
+   If your program installs a large number of files into one of the
+standard user-specified directories, it might be useful to group them
+into a subdirectory particular to that program.  If you do this, you
+should write the `install' rule to create these subdirectories.
+
+   Do not expect the user to include the subdirectory name in the value
+of any of the variables listed above.  The idea of having a uniform set
+of variable names for installation directories is to enable the user to
+specify the exact same values for several different GNU packages.  In
+order for this to be useful, all the packages must be designed so that
+they will work sensibly when the user does so.
+
+\1f
+File: standards.info,  Node: Standard Targets,  Next: Install Command Categories,  Prev: Directory Variables,  Up: Makefile Conventions
+
+7.2.5 Standard Targets for Users
+--------------------------------
+
+All GNU programs should have the following targets in their Makefiles:
+
+`all'
+     Compile the entire program.  This should be the default target.
+     This target need not rebuild any documentation files; Info files
+     should normally be included in the distribution, and DVI files
+     should be made only when explicitly asked for.
+
+     By default, the Make rules should compile and link with `-g', so
+     that executable programs have debugging symbols.  Users who don't
+     mind being helpless can strip the executables later if they wish.
+
+`install'
+     Compile the program and copy the executables, libraries, and so on
+     to the file names where they should reside for actual use.  If
+     there is a simple test to verify that a program is properly
+     installed, this target should run that test.
+
+     Do not strip executables when installing them.  Devil-may-care
+     users can use the `install-strip' target to do that.
+
+     If possible, write the `install' target rule so that it does not
+     modify anything in the directory where the program was built,
+     provided `make all' has just been done.  This is convenient for
+     building the program under one user name and installing it under
+     another.
+
+     The commands should create all the directories in which files are
+     to be installed, if they don't already exist.  This includes the
+     directories specified as the values of the variables `prefix' and
+     `exec_prefix', as well as all subdirectories that are needed.  One
+     way to do this is by means of an `installdirs' target as described
+     below.
+
+     Use `-' before any command for installing a man page, so that
+     `make' will ignore any errors.  This is in case there are systems
+     that don't have the Unix man page documentation system installed.
+
+     The way to install Info files is to copy them into `$(infodir)'
+     with `$(INSTALL_DATA)' (*note Command Variables::), and then run
+     the `install-info' program if it is present.  `install-info' is a
+     program that edits the Info `dir' file to add or update the menu
+     entry for the given Info file; it is part of the Texinfo package.
+     Here is a sample rule to install an Info file:
+
+          $(DESTDIR)$(infodir)/foo.info: foo.info
+                  $(POST_INSTALL)
+          # There may be a newer info file in . than in srcdir.
+                  -if test -f foo.info; then d=.; \
+                   else d=$(srcdir); fi; \
+                  $(INSTALL_DATA) $$d/foo.info $(DESTDIR)$@; \
+          # Run install-info only if it exists.
+          # Use `if' instead of just prepending `-' to the
+          # line so we notice real errors from install-info.
+          # We use `$(SHELL) -c' because some shells do not
+          # fail gracefully when there is an unknown command.
+                  if $(SHELL) -c 'install-info --version' \
+                     >/dev/null 2>&1; then \
+                    install-info --dir-file=$(DESTDIR)$(infodir)/dir \
+                                 $(DESTDIR)$(infodir)/foo.info; \
+                  else true; fi
+
+     When writing the `install' target, you must classify all the
+     commands into three categories: normal ones, "pre-installation"
+     commands and "post-installation" commands.  *Note Install Command
+     Categories::.
+
+`uninstall'
+     Delete all the installed files--the copies that the `install'
+     target creates.
+
+     This rule should not modify the directories where compilation is
+     done, only the directories where files are installed.
+
+     The uninstallation commands are divided into three categories,
+     just like the installation commands.  *Note Install Command
+     Categories::.
+
+`install-strip'
+     Like `install', but strip the executable files while installing
+     them.  In simple cases, this target can use the `install' target in
+     a simple way:
+
+          install-strip:
+                  $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \
+                          install
+
+     But if the package installs scripts as well as real executables,
+     the `install-strip' target can't just refer to the `install'
+     target; it has to strip the executables but not the scripts.
+
+     `install-strip' should not strip the executables in the build
+     directory which are being copied for installation.  It should only
+     strip the copies that are installed.
+
+     Normally we do not recommend stripping an executable unless you
+     are sure the program has no bugs.  However, it can be reasonable
+     to install a stripped executable for actual execution while saving
+     the unstripped executable elsewhere in case there is a bug.
+
+`clean'
+     Delete all files from the current directory that are normally
+     created by building the program.  Don't delete the files that
+     record the configuration.  Also preserve files that could be made
+     by building, but normally aren't because the distribution comes
+     with them.
+
+     Delete `.dvi' files here if they are not part of the distribution.
+
+`distclean'
+     Delete all files from the current directory that are created by
+     configuring or building the program.  If you have unpacked the
+     source and built the program without creating any other files,
+     `make distclean' should leave only the files that were in the
+     distribution.
+
+`mostlyclean'
+     Like `clean', but may refrain from deleting a few files that people
+     normally don't want to recompile.  For example, the `mostlyclean'
+     target for GCC does not delete `libgcc.a', because recompiling it
+     is rarely necessary and takes a lot of time.
+
+`maintainer-clean'
+     Delete almost everything from the current directory that can be
+     reconstructed with this Makefile.  This typically includes
+     everything deleted by `distclean', plus more: C source files
+     produced by Bison, tags tables, Info files, and so on.
+
+     The reason we say "almost everything" is that running the command
+     `make maintainer-clean' should not delete `configure' even if
+     `configure' can be remade using a rule in the Makefile.  More
+     generally, `make maintainer-clean' should not delete anything that
+     needs to exist in order to run `configure' and then begin to build
+     the program.  This is the only exception; `maintainer-clean' should
+     delete everything else that can be rebuilt.
+
+     The `maintainer-clean' target is intended to be used by a
+     maintainer of the package, not by ordinary users.  You may need
+     special tools to reconstruct some of the files that `make
+     maintainer-clean' deletes.  Since these files are normally
+     included in the distribution, we don't take care to make them easy
+     to reconstruct.  If you find you need to unpack the full
+     distribution again, don't blame us.
+
+     To help make users aware of this, the commands for the special
+     `maintainer-clean' target should start with these two:
+
+          @echo 'This command is intended for maintainers to use; it'
+          @echo 'deletes files that may need special tools to rebuild.'
+
+`TAGS'
+     Update a tags table for this program.
+
+`info'
+     Generate any Info files needed.  The best way to write the rules
+     is as follows:
+
+          info: foo.info
+
+          foo.info: foo.texi chap1.texi chap2.texi
+                  $(MAKEINFO) $(srcdir)/foo.texi
+
+     You must define the variable `MAKEINFO' in the Makefile.  It should
+     run the `makeinfo' program, which is part of the Texinfo
+     distribution.
+
+     Normally a GNU distribution comes with Info files, and that means
+     the Info files are present in the source directory.  Therefore,
+     the Make rule for an info file should update it in the source
+     directory.  When users build the package, ordinarily Make will not
+     update the Info files because they will already be up to date.
+
+`dvi'
+     Generate DVI files for all Texinfo documentation.  For example:
+
+          dvi: foo.dvi
+
+          foo.dvi: foo.texi chap1.texi chap2.texi
+                  $(TEXI2DVI) $(srcdir)/foo.texi
+
+     You must define the variable `TEXI2DVI' in the Makefile.  It should
+     run the program `texi2dvi', which is part of the Texinfo
+     distribution.(1)  Alternatively, write just the dependencies, and
+     allow GNU `make' to provide the command.
+
+`dist'
+     Create a distribution tar file for this program.  The tar file
+     should be set up so that the file names in the tar file start with
+     a subdirectory name which is the name of the package it is a
+     distribution for.  This name can include the version number.
+
+     For example, the distribution tar file of GCC version 1.40 unpacks
+     into a subdirectory named `gcc-1.40'.
+
+     The easiest way to do this is to create a subdirectory
+     appropriately named, use `ln' or `cp' to install the proper files
+     in it, and then `tar' that subdirectory.
+
+     Compress the tar file with `gzip'.  For example, the actual
+     distribution file for GCC version 1.40 is called `gcc-1.40.tar.gz'.
+
+     The `dist' target should explicitly depend on all non-source files
+     that are in the distribution, to make sure they are up to date in
+     the distribution.  *Note Making Releases: Releases.
+
+`check'
+     Perform self-tests (if any).  The user must build the program
+     before running the tests, but need not install the program; you
+     should write the self-tests so that they work when the program is
+     built but not installed.
+
+   The following targets are suggested as conventional names, for
+programs in which they are useful.
+
+`installcheck'
+     Perform installation tests (if any).  The user must build and
+     install the program before running the tests.  You should not
+     assume that `$(bindir)' is in the search path.
+
+`installdirs'
+     It's useful to add a target named `installdirs' to create the
+     directories where files are installed, and their parent
+     directories.  There is a script called `mkinstalldirs' which is
+     convenient for this; you can find it in the Texinfo package.  You
+     can use a rule like this:
+
+          # Make sure all installation directories (e.g. $(bindir))
+          # actually exist by making them if necessary.
+          installdirs: mkinstalldirs
+                  $(srcdir)/mkinstalldirs $(bindir) $(datadir) \
+                                          $(libdir) $(infodir) \
+                                          $(mandir)
+
+     or, if you wish to support `DESTDIR',
+
+          # Make sure all installation directories (e.g. $(bindir))
+          # actually exist by making them if necessary.
+          installdirs: mkinstalldirs
+                  $(srcdir)/mkinstalldirs \
+                      $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) \
+                      $(DESTDIR)$(libdir) $(DESTDIR)$(infodir) \
+                      $(DESTDIR)$(mandir)
+
+     This rule should not modify the directories where compilation is
+     done.  It should do nothing but create installation directories.
+
+   ---------- Footnotes ----------
+
+   (1) `texi2dvi' uses TeX to do the real work of formatting. TeX is
+not distributed with Texinfo.
+
+\1f
+File: standards.info,  Node: Install Command Categories,  Prev: Standard Targets,  Up: Makefile Conventions
+
+7.2.6 Install Command Categories
+--------------------------------
+
+When writing the `install' target, you must classify all the commands
+into three categories: normal ones, "pre-installation" commands and
+"post-installation" commands.
+
+   Normal commands move files into their proper places, and set their
+modes.  They may not alter any files except the ones that come entirely
+from the package they belong to.
+
+   Pre-installation and post-installation commands may alter other
+files; in particular, they can edit global configuration files or data
+bases.
+
+   Pre-installation commands are typically executed before the normal
+commands, and post-installation commands are typically run after the
+normal commands.
+
+   The most common use for a post-installation command is to run
+`install-info'.  This cannot be done with a normal command, since it
+alters a file (the Info directory) which does not come entirely and
+solely from the package being installed.  It is a post-installation
+command because it needs to be done after the normal command which
+installs the package's Info files.
+
+   Most programs don't need any pre-installation commands, but we have
+the feature just in case it is needed.
+
+   To classify the commands in the `install' rule into these three
+categories, insert "category lines" among them.  A category line
+specifies the category for the commands that follow.
+
+   A category line consists of a tab and a reference to a special Make
+variable, plus an optional comment at the end.  There are three
+variables you can use, one for each category; the variable name
+specifies the category.  Category lines are no-ops in ordinary execution
+because these three Make variables are normally undefined (and you
+_should not_ define them in the makefile).
+
+   Here are the three possible category lines, each with a comment that
+explains what it means:
+
+             $(PRE_INSTALL)     # Pre-install commands follow.
+             $(POST_INSTALL)    # Post-install commands follow.
+             $(NORMAL_INSTALL)  # Normal commands follow.
+
+   If you don't use a category line at the beginning of the `install'
+rule, all the commands are classified as normal until the first category
+line.  If you don't use any category lines, all the commands are
+classified as normal.
+
+   These are the category lines for `uninstall':
+
+             $(PRE_UNINSTALL)     # Pre-uninstall commands follow.
+             $(POST_UNINSTALL)    # Post-uninstall commands follow.
+             $(NORMAL_UNINSTALL)  # Normal commands follow.
+
+   Typically, a pre-uninstall command would be used for deleting entries
+from the Info directory.
+
+   If the `install' or `uninstall' target has any dependencies which
+act as subroutines of installation, then you should start _each_
+dependency's commands with a category line, and start the main target's
+commands with a category line also.  This way, you can ensure that each
+command is placed in the right category regardless of which of the
+dependencies actually run.
+
+   Pre-installation and post-installation commands should not run any
+programs except for these:
+
+     [ basename bash cat chgrp chmod chown cmp cp dd diff echo
+     egrep expand expr false fgrep find getopt grep gunzip gzip
+     hostname install install-info kill ldconfig ln ls md5sum
+     mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee
+     test touch true uname xargs yes
+
+   The reason for distinguishing the commands in this way is for the
+sake of making binary packages.  Typically a binary package contains
+all the executables and other files that need to be installed, and has
+its own method of installing them--so it does not need to run the normal
+installation commands.  But installing the binary package does need to
+execute the pre-installation and post-installation commands.
+
+   Programs to build binary packages work by extracting the
+pre-installation and post-installation commands.  Here is one way of
+extracting the pre-installation commands:
+
+     make -n install -o all \
+           PRE_INSTALL=pre-install \
+           POST_INSTALL=post-install \
+           NORMAL_INSTALL=normal-install \
+       | gawk -f pre-install.awk
+
+where the file `pre-install.awk' could contain this:
+
+     $0 ~ /^\t[ \t]*(normal_install|post_install)[ \t]*$/ {on = 0}
+     on {print $0}
+     $0 ~ /^\t[ \t]*pre_install[ \t]*$/ {on = 1}
+
+   The resulting file of pre-installation commands is executed as a
+shell script as part of installing the binary package.
+
+\1f
+File: standards.info,  Node: Releases,  Prev: Makefile Conventions,  Up: Managing Releases
+
+7.3 Making Releases
+===================
+
+Package the distribution of `Foo version 69.96' up in a gzipped tar
+file with the name `foo-69.96.tar.gz'.  It should unpack into a
+subdirectory named `foo-69.96'.
+
+   Building and installing the program should never modify any of the
+files contained in the distribution.  This means that all the files
+that form part of the program in any way must be classified into "source
+files" and "non-source files".  Source files are written by humans and
+never changed automatically; non-source files are produced from source
+files by programs under the control of the Makefile.
+
+   The distribution should contain a file named `README' which gives
+the name of the package, and a general description of what it does.  It
+is also good to explain the purpose of each of the first-level
+subdirectories in the package, if there are any.  The `README' file
+should either state the version number of the package, or refer to where
+in the package it can be found.
+
+   The `README' file should refer to the file `INSTALL', which should
+contain an explanation of the installation procedure.
+
+   The `README' file should also refer to the file which contains the
+copying conditions.  The GNU GPL, if used, should be in a file called
+`COPYING'.  If the GNU LGPL is used, it should be in a file called
+`COPYING.LIB'.
+
+   Naturally, all the source files must be in the distribution.  It is
+okay to include non-source files in the distribution, provided they are
+up-to-date and machine-independent, so that building the distribution
+normally will never modify them.  We commonly include non-source files
+produced by Bison, `lex', TeX, and `makeinfo'; this helps avoid
+unnecessary dependencies between our distributions, so that users can
+install whichever packages they want to install.
+
+   Non-source files that might actually be modified by building and
+installing the program should *never* be included in the distribution.
+So if you do distribute non-source files, always make sure they are up
+to date when you make a new distribution.
+
+   Make sure that the directory into which the distribution unpacks (as
+well as any subdirectories) are all world-writable (octal mode 777).
+This is so that old versions of `tar' which preserve the ownership and
+permissions of the files from the tar archive will be able to extract
+all the files even if the user is unprivileged.
+
+   Make sure that all the files in the distribution are world-readable.
+
+   Make sure that no file name in the distribution is more than 14
+characters long.  Likewise, no file created by building the program
+should have a name longer than 14 characters.  The reason for this is
+that some systems adhere to a foolish interpretation of the POSIX
+standard, and refuse to open a longer name, rather than truncating as
+they did in the past.
+
+   Don't include any symbolic links in the distribution itself.  If the
+tar file contains symbolic links, then people cannot even unpack it on
+systems that don't support symbolic links.  Also, don't use multiple
+names for one file in different directories, because certain file
+systems cannot handle this and that prevents unpacking the distribution.
+
+   Try to make sure that all the file names will be unique on MS-DOS.  A
+name on MS-DOS consists of up to 8 characters, optionally followed by a
+period and up to three characters.  MS-DOS will truncate extra
+characters both before and after the period.  Thus, `foobarhacker.c'
+and `foobarhacker.o' are not ambiguous; they are truncated to
+`foobarha.c' and `foobarha.o', which are distinct.
+
+   Include in your distribution a copy of the `texinfo.tex' you used to
+test print any `*.texinfo' or `*.texi' files.
+
+   Likewise, if your program uses small GNU software packages like
+regex, getopt, obstack, or termcap, include them in the distribution
+file.  Leaving them out would make the distribution file a little
+smaller at the expense of possible inconvenience to a user who doesn't
+know what other files to get.
+
+\1f
+File: standards.info,  Node: References,  Next: Copying This Manual,  Prev: Managing Releases,  Up: Top
+
+8 References to Non-Free Software and Documentation
+***************************************************
+
+A GNU program should not recommend use of any non-free program.  We
+can't stop some people from writing proprietary programs, or stop other
+people from using them, but we can and should avoid helping to
+advertise them to new potential customers.  Proprietary software is a
+social and ethical problem, and the point of GNU is to solve that
+problem.
+
+   When a non-free program or system is well known, you can mention it
+in passing--that is harmless, since users who might want to use it
+probably already know about it.  For instance, it is fine to explain
+how to build your package on top of some non-free operating system, or
+how to use it together with some widely used non-free program.
+
+   However, you should give only the necessary information to help those
+who already use the non-free program to use your program with it--don't
+give, or refer to, any further information about the proprietary
+program, and don't imply that the proprietary program enhances your
+program, or that its existence is in any way a good thing.  The goal
+should be that people already using the proprietary program will get
+the advice they need about how to use your free program, while people
+who don't already use the proprietary program will not see anything to
+lead them to take an interest in it.
+
+   If a non-free program or system is obscure in your program's domain,
+your program should not mention or support it at all, since doing so
+would tend to popularize the non-free program more than it popularizes
+your program.  (You cannot hope to find many additional users among the
+users of Foobar if the users of Foobar are few.)
+
+   A GNU package should not refer the user to any non-free documentation
+for free software.  Free documentation that can be included in free
+operating systems is essential for completing the GNU system, so it is
+a major focus of the GNU Project; to recommend use of documentation
+that we are not allowed to use in GNU would undermine the efforts to
+get documentation that we can include.  So GNU packages should never
+recommend non-free documentation.
+
+\1f
+File: standards.info,  Node: Copying This Manual,  Next: Index,  Prev: References,  Up: Top
+
+Appendix A Copying This Manual
+******************************
+
+* Menu:
+
+* GNU Free Documentation License::  License for copying this manual
+
+\1f
+File: standards.info,  Node: GNU Free Documentation License,  Up: Copying This Manual
+
+Appendix B GNU Free Documentation License
+*****************************************
+
+                        Version 1.1, March 2000
+
+     Copyright (C) 2000  Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
+  0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     written document "free" in the sense of freedom: to assure everyone
+     the effective freedom to copy and redistribute it, with or without
+     modifying it, either commercially or noncommercially.  Secondarily,
+     this License preserves for the author and publisher a way to get
+     credit for their work, while not being considered responsible for
+     modifications made by others.
+
+     This License is a kind of "copyleft", which means that derivative
+     works of the document must themselves be free in the same sense.
+     It complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for
+     free software, because free software needs free documentation: a
+     free program should come with manuals providing the same freedoms
+     that the software does.  But this License is not limited to
+     software manuals; it can be used for any textual work, regardless
+     of subject matter or whether it is published as a printed book.
+     We recommend this License principally for works whose purpose is
+     instruction or reference.
+
+
+  1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work that contains a
+     notice placed by the copyright holder saying it can be distributed
+     under the terms of this License.  The "Document", below, refers to
+     any such manual or work.  Any member of the public is a licensee,
+     and is addressed as "you."
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter
+     section of the Document that deals exclusively with the
+     relationship of the publishers or authors of the Document to the
+     Document's overall subject (or to related matters) and contains
+     nothing that could fall directly within that overall subject.
+     (For example, if the Document is in part a textbook of
+     mathematics, a Secondary Section may not explain any mathematics.)
+     The relationship could be a matter of historical connection with
+     the subject or with related matters, or of legal, commercial,
+     philosophical, ethical or political position regarding them.
+
+     The "Invariant Sections" are certain Secondary Sections whose
+     titles are designated, as being those of Invariant Sections, in
+     the notice that says that the Document is released under this
+     License.
+
+     The "Cover Texts" are certain short passages of text that are
+     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+     that says that the Document is released under this License.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, whose contents can be viewed and edited directly
+     and straightforwardly with generic text editors or (for images
+     composed of pixels) generic paint programs or (for drawings) some
+     widely available drawing editor, and that is suitable for input to
+     text formatters or for automatic translation to a variety of
+     formats suitable for input to text formatters.  A copy made in an
+     otherwise Transparent file format whose markup has been designed
+     to thwart or discourage subsequent modification by readers is not
+     Transparent.  A copy that is not "Transparent" is called "Opaque."
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format,
+     SGML or XML using a publicly available DTD, and
+     standard-conforming simple HTML designed for human modification.
+     Opaque formats include PostScript, PDF, proprietary formats that
+     can be read and edited only by proprietary word processors, SGML
+     or XML for which the DTD and/or processing tools are not generally
+     available, and the machine-generated HTML produced by some word
+     processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the
+     material this License requires to appear in the title page.  For
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
+
+  2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License
+     applies to the Document are reproduced in all copies, and that you
+     add no other conditions whatsoever to those of this License.  You
+     may not use technical measures to obstruct or control the reading
+     or further copying of the copies you make or distribute.  However,
+     you may accept compensation in exchange for copies.  If you
+     distribute a large enough number of copies you must also follow
+     the conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above,
+     and you may publicly display copies.
+
+  3. COPYING IN QUANTITY
+
+     If you publish printed copies of the Document numbering more than
+     100, and the Document's license notice requires Cover Texts, you
+     must enclose the copies in covers that carry, clearly and legibly,
+     all these Cover Texts: Front-Cover Texts on the front cover, and
+     Back-Cover Texts on the back cover.  Both covers must also clearly
+     and legibly identify you as the publisher of these copies.  The
+     front cover must present the full title with all words of the
+     title equally prominent and visible.  You may add other material
+     on the covers in addition.  Copying with changes limited to the
+     covers, as long as they preserve the title of the Document and
+     satisfy these conditions, can be treated as verbatim copying in
+     other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto
+     adjacent pages.
+
+     If you publish or distribute Opaque copies of the Document
+     numbering more than 100, you must either include a
+     machine-readable Transparent copy along with each Opaque copy, or
+     state in or with each Opaque copy a publicly-accessible
+     computer-network location containing a complete Transparent copy
+     of the Document, free of added material, which the general
+     network-using public has access to download anonymously at no
+     charge using public-standard network protocols.  If you use the
+     latter option, you must take reasonably prudent steps, when you
+     begin distribution of Opaque copies in quantity, to ensure that
+     this Transparent copy will remain thus accessible at the stated
+     location until at least one year after the last time you
+     distribute an Opaque copy (directly or through your agents or
+     retailers) of that edition to the public.
+
+     It is requested, but not required, that you contact the authors of
+     the Document well before redistributing any large number of
+     copies, to give them a chance to provide you with an updated
+     version of the Document.
+
+  4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document
+     under the conditions of sections 2 and 3 above, provided that you
+     release the Modified Version under precisely this License, with
+     the Modified Version filling the role of the Document, thus
+     licensing distribution and modification of the Modified Version to
+     whoever possesses a copy of it.  In addition, you must do these
+     things in the Modified Version:
+
+     A. Use in the Title Page (and on the covers, if any) a title
+     distinct    from that of the Document, and from those of previous
+     versions    (which should, if there were any, be listed in the
+     History section    of the Document).  You may use the same title
+     as a previous version    if the original publisher of that version
+     gives permission.
+     B. List on the Title Page, as authors, one or more persons or
+     entities    responsible for authorship of the modifications in the
+     Modified    Version, together with at least five of the principal
+     authors of the    Document (all of its principal authors, if it
+     has less than five).
+     C. State on the Title page the name of the publisher of the
+     Modified Version, as the publisher.
+     D. Preserve all the copyright notices of the Document.
+     E. Add an appropriate copyright notice for your modifications
+     adjacent to the other copyright notices.
+     F. Include, immediately after the copyright notices, a license
+     notice    giving the public permission to use the Modified Version
+     under the    terms of this License, in the form shown in the
+     Addendum below.
+     G. Preserve in that license notice the full lists of Invariant
+     Sections    and required Cover Texts given in the Document's
+     license notice.
+     H. Include an unaltered copy of this License.
+     I. Preserve the section entitled "History", and its title, and add
+     to    it an item stating at least the title, year, new authors, and
+       publisher of the Modified Version as given on the Title Page.
+     If    there is no section entitled "History" in the Document,
+     create one    stating the title, year, authors, and publisher of
+     the Document as    given on its Title Page, then add an item
+     describing the Modified    Version as stated in the previous
+     sentence.
+     J. Preserve the network location, if any, given in the Document for
+       public access to a Transparent copy of the Document, and
+     likewise    the network locations given in the Document for
+     previous versions    it was based on.  These may be placed in the
+     "History" section.     You may omit a network location for a work
+     that was published at    least four years before the Document
+     itself, or if the original    publisher of the version it refers
+     to gives permission.
+     K. In any section entitled "Acknowledgements" or "Dedications",
+     preserve the section's title, and preserve in the section all the
+      substance and tone of each of the contributor acknowledgements
+     and/or dedications given therein.
+     L. Preserve all the Invariant Sections of the Document,
+     unaltered in their text and in their titles.  Section numbers
+     or the equivalent are not considered part of the section titles.
+     M. Delete any section entitled "Endorsements."  Such a section
+     may not be included in the Modified Version.
+     N. Do not retitle any existing section as "Endorsements"    or to
+     conflict in title with any Invariant Section.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no
+     material copied from the Document, you may at your option
+     designate some or all of these sections as invariant.  To do this,
+     add their titles to the list of Invariant Sections in the Modified
+     Version's license notice.  These titles must be distinct from any
+     other section titles.
+
+     You may add a section entitled "Endorsements", provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties-for example, statements of peer review or that the text has
+     been approved by an organization as the authoritative definition
+     of a standard.
+
+     You may add a passage of up to five words as a Front-Cover Text,
+     and a passage of up to 25 words as a Back-Cover Text, to the end
+     of the list of Cover Texts in the Modified Version.  Only one
+     passage of Front-Cover Text and one of Back-Cover Text may be
+     added by (or through arrangements made by) any one entity.  If the
+     Document already includes a cover text for the same cover,
+     previously added by you or by arrangement made by the same entity
+     you are acting on behalf of, you may not add another; but you may
+     replace the old one, on explicit permission from the previous
+     publisher that added the old one.
+
+     The author(s) and publisher(s) of the Document do not by this
+     License give permission to use their names for publicity for or to
+     assert or imply endorsement of any Modified Version.
+
+  5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under
+     this License, under the terms defined in section 4 above for
+     modified versions, provided that you include in the combination
+     all of the Invariant Sections of all of the original documents,
+     unmodified, and list them all as Invariant Sections of your
+     combined work in its license notice.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name
+     but different contents, make the title of each such section unique
+     by adding at the end of it, in parentheses, the name of the
+     original author or publisher of that section if known, or else a
+     unique number.  Make the same adjustment to the section titles in
+     the list of Invariant Sections in the license notice of the
+     combined work.
+
+     In the combination, you must combine any sections entitled
+     "History" in the various original documents, forming one section
+     entitled "History"; likewise combine any sections entitled
+     "Acknowledgements", and any sections entitled "Dedications."  You
+     must delete all sections entitled "Endorsements."
+
+  6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the
+     rules of this License for verbatim copying of each of the
+     documents in all other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert
+     a copy of this License into the extracted document, and follow
+     this License in all other respects regarding verbatim copying of
+     that document.
+
+  7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other
+     separate and independent documents or works, in or on a volume of
+     a storage or distribution medium, does not as a whole count as a
+     Modified Version of the Document, provided no compilation
+     copyright is claimed for the compilation.  Such a compilation is
+     called an "aggregate", and this License does not apply to the
+     other self-contained works thus compiled with the Document, on
+     account of their being thus compiled, if they are not themselves
+     derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one
+     quarter of the entire aggregate, the Document's Cover Texts may be
+     placed on covers that surround only the Document within the
+     aggregate.  Otherwise they must appear on covers around the whole
+     aggregate.
+
+  8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section
+     4.  Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License provided that you also include the
+     original English version of this License.  In case of a
+     disagreement between the translation and the original English
+     version of this License, the original English version will prevail.
+
+  9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided for under this License.  Any other
+     attempt to copy, modify, sublicense or distribute the Document is
+     void, and will automatically terminate your rights under this
+     License.  However, parties who have received copies, or rights,
+     from you under this License will not have their licenses
+     terminated so long as such parties remain in full compliance.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of
+     the GNU Free Documentation License from time to time.  Such new
+     versions will be similar in spirit to the present version, but may
+     differ in detail to address new problems or concerns.  See
+     http://www.gnu.org/copyleft/.
+
+     Each version of the License is given a distinguishing version
+     number.  If the Document specifies that a particular numbered
+     version of this License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that specified version or of any later version that has been
+     published (not as a draft) by the Free Software Foundation.  If
+     the Document does not specify a version number of this License,
+     you may choose any version ever published (not as a draft) by the
+     Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+     Copyright (C)  YEAR  YOUR NAME.
+     Permission is granted to copy, distribute and/or modify this document
+     under the terms of the GNU Free Documentation License, Version 1.1
+     or any later version published by the Free Software Foundation;
+     with the Invariant Sections being LIST THEIR TITLES, with the
+     Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+     A copy of the license is included in the section entitled "GNU
+     Free Documentation License."
+
+   If you have no Invariant Sections, write "with no Invariant Sections"
+instead of saying which ones are invariant.  If you have no Front-Cover
+Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
+LIST"; likewise for Back-Cover Texts.
+
+   If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+\1f
+File: standards.info,  Node: Index,  Prev: Copying This Manual,  Up: Top
+
+Index
+*****
+
+\0\b[index\0\b]
+* Menu:
+
+* #endif, commenting:                    Comments.            (line  54)
+* --help option:                         Command-Line Interfaces.
+                                                              (line 119)
+* --version option:                      Command-Line Interfaces.
+                                                              (line  34)
+* -Wall compiler option:                 Syntactic Conventions.
+                                                              (line  10)
+* accepting contributions:               Contributions.       (line   6)
+* address for bug reports:               Command-Line Interfaces.
+                                                              (line 125)
+* ANSI C standard:                       Standard C.          (line   6)
+* arbitrary limits on data:              Semantics.           (line   6)
+* autoconf:                              System Portability.  (line  23)
+* avoiding proprietary code:             Reading Non-Free Code.
+                                                              (line   6)
+* behavior, dependent on program's name: User Interfaces.     (line   6)
+* binary packages:                       Install Command Categories.
+                                                              (line  80)
+* bindir:                                Directory Variables. (line  45)
+* braces, in C source:                   Formatting.          (line   6)
+* bug reports:                           Command-Line Interfaces.
+                                                              (line 125)
+* canonical name of a program:           Command-Line Interfaces.
+                                                              (line  41)
+* casting pointers to integers:          CPU Portability.     (line  67)
+* change logs:                           Change Logs.         (line   6)
+* change logs, conditional changes:      Conditional Changes. (line   6)
+* change logs, style:                    Style of Change Logs.
+                                                              (line   6)
+* command-line arguments, decoding:      Semantics.           (line  46)
+* command-line interface:                Command-Line Interfaces.
+                                                              (line   6)
+* commenting:                            Comments.            (line   6)
+* compatibility with C and POSIX standards: Compatibility.    (line   6)
+* compiler warnings:                     Syntactic Conventions.
+                                                              (line  10)
+* conditional changes, and change logs:  Conditional Changes. (line   6)
+* conditionals, comments for:            Comments.            (line  54)
+* configure:                             Configuration.       (line   6)
+* control-L:                             Formatting.          (line 114)
+* conventions for makefiles:             Makefile Conventions.
+                                                              (line   6)
+* corba:                                 Graphical Interfaces.
+                                                              (line  16)
+* credits for manuals:                   Manual Credits.      (line   6)
+* data types, and portability:           CPU Portability.     (line   6)
+* declaration for system functions:      System Functions.    (line  21)
+* documentation:                         Documentation.       (line   6)
+* doschk:                                Names.               (line  38)
+* downloading this manual:               Preface.             (line  17)
+* error messages:                        Semantics.           (line  19)
+* error messages, formatting:            Errors.              (line   6)
+* exec_prefix:                           Directory Variables. (line  27)
+* expressions, splitting:                Formatting.          (line  77)
+* file usage:                            File Usage.          (line   6)
+* file-name limitations:                 Names.               (line  38)
+* formatting error messages:             Errors.              (line   6)
+* formatting source code:                Formatting.          (line   6)
+* formfeed:                              Formatting.          (line 114)
+* function argument, declaring:          Syntactic Conventions.
+                                                              (line   6)
+* function prototypes:                   Standard C.          (line  17)
+* getopt:                                Command-Line Interfaces.
+                                                              (line   6)
+* gettext:                               Internationalization.
+                                                              (line   6)
+* gnome:                                 Graphical Interfaces.
+                                                              (line  16)
+* graphical user interface:              Graphical Interfaces.
+                                                              (line   6)
+* gtk:                                   Graphical Interfaces.
+                                                              (line   6)
+* GUILE:                                 Source Language.     (line  38)
+* implicit int:                          Syntactic Conventions.
+                                                              (line   6)
+* impossible conditions:                 Semantics.           (line  70)
+* internationalization:                  Internationalization.
+                                                              (line   6)
+* legal aspects:                         Legal Issues.        (line   6)
+* legal papers:                          Contributions.       (line   6)
+* libexecdir:                            Directory Variables. (line  58)
+* libraries:                             Libraries.           (line   6)
+* library functions, and portability:    System Functions.    (line   6)
+* license for manuals:                   License for Manuals. (line   6)
+* lint:                                  Syntactic Conventions.
+                                                              (line 109)
+* long option names:                     Option Table.        (line   6)
+* long-named options:                    Command-Line Interfaces.
+                                                              (line  12)
+* makefile, conventions for:             Makefile Conventions.
+                                                              (line   6)
+* malloc return value:                   Semantics.           (line  25)
+* man pages:                             Man Pages.           (line   6)
+* manual structure:                      Manual Structure Details.
+                                                              (line   6)
+* memory allocation failure:             Semantics.           (line  25)
+* memory usage:                          Memory Usage.        (line   6)
+* message text, and internationalization: Internationalization.
+                                                              (line  29)
+* mmap:                                  Mmap.                (line   6)
+* multiple variables in a line:          Syntactic Conventions.
+                                                              (line  35)
+* names of variables, functions, and files: Names.            (line   6)
+* NEWS file:                             NEWS File.           (line   6)
+* non-POSIX systems, and portability:    System Portability.  (line  32)
+* non-standard extensions:               Using Extensions.    (line   6)
+* NUL characters:                        Semantics.           (line  11)
+* open brace:                            Formatting.          (line   6)
+* optional features, configure-time:     Configuration.       (line  76)
+* options for compatibility:             Compatibility.       (line  14)
+* output device and program's behavior:  User Interfaces.     (line  13)
+* packaging:                             Releases.            (line   6)
+* portability, and data types:           CPU Portability.     (line   6)
+* portability, and library functions:    System Functions.    (line   6)
+* portability, between system types:     System Portability.  (line   6)
+* POSIX compatibility:                   Compatibility.       (line   6)
+* POSIXLY_CORRECT, environment variable: Compatibility.       (line  21)
+* post-installation commands:            Install Command Categories.
+                                                              (line   6)
+* pre-installation commands:             Install Command Categories.
+                                                              (line   6)
+* prefix:                                Directory Variables. (line  17)
+* program configuration:                 Configuration.       (line   6)
+* program design:                        Design Advice.       (line   6)
+* program name and its behavior:         User Interfaces.     (line   6)
+* program's canonical name:              Command-Line Interfaces.
+                                                              (line  41)
+* programming languges:                  Source Language.     (line   6)
+* proprietary programs:                  Reading Non-Free Code.
+                                                              (line   6)
+* README file:                           Releases.            (line  17)
+* references to non-free material:       References.          (line   6)
+* releasing:                             Managing Releases.   (line   6)
+* sbindir:                               Directory Variables. (line  51)
+* signal handling:                       Semantics.           (line  59)
+* spaces before open-paren:              Formatting.          (line  71)
+* standard command-line options:         Command-Line Interfaces.
+                                                              (line  31)
+* standards for makefiles:               Makefile Conventions.
+                                                              (line   6)
+* string library functions:              System Functions.    (line  55)
+* syntactic conventions:                 Syntactic Conventions.
+                                                              (line   6)
+* table of long options:                 Option Table.        (line   6)
+* temporary files:                       Semantics.           (line  84)
+* temporary variables:                   Syntactic Conventions.
+                                                              (line  23)
+* texinfo.tex, in a distribution:        Releases.            (line  73)
+* TMPDIR environment variable:           Semantics.           (line  84)
+* trademarks:                            Trademarks.          (line   6)
+* where to obtain standards.texi:        Preface.             (line  17)
+
+
+\1f
+Tag Table:
+Node: Top\7f696
+Node: Preface\7f1396
+Node: Legal Issues\7f3616
+Node: Reading Non-Free Code\7f4080
+Node: Contributions\7f5808
+Node: Trademarks\7f7962
+Node: Design Advice\7f9025
+Node: Source Language\7f9609
+Node: Compatibility\7f11621
+Node: Using Extensions\7f13249
+Node: Standard C\7f14825
+Node: Conditional Compilation\7f17228
+Node: Program Behavior\7f18527
+Node: Semantics\7f19446
+Node: Libraries\7f24139
+Node: Errors\7f25384
+Node: User Interfaces\7f27165
+Node: Graphical Interfaces\7f28770
+Node: Command-Line Interfaces\7f29805
+Node: Option Table\7f35876
+Node: Memory Usage\7f50885
+Node: File Usage\7f51910
+Node: Writing C\7f52658
+Node: Formatting\7f53508
+Node: Comments\7f57571
+Node: Syntactic Conventions\7f60873
+Node: Names\7f64285
+Node: System Portability\7f66494
+Node: CPU Portability\7f68879
+Node: System Functions\7f72135
+Node: Internationalization\7f77332
+Node: Mmap\7f80485
+Node: Documentation\7f81195
+Node: GNU Manuals\7f82300
+Node: Doc Strings and Manuals\7f87357
+Node: Manual Structure Details\7f88910
+Node: License for Manuals\7f90328
+Node: Manual Credits\7f91302
+Node: Printed Manuals\7f91695
+Node: NEWS File\7f92381
+Node: Change Logs\7f93059
+Node: Change Log Concepts\7f93813
+Node: Style of Change Logs\7f95677
+Node: Simple Changes\7f97712
+Node: Conditional Changes\7f98956
+Node: Indicating the Part Changed\7f100378
+Node: Man Pages\7f100905
+Node: Reading other Manuals\7f102529
+Node: Managing Releases\7f103320
+Node: Configuration\7f104083
+Node: Makefile Conventions\7f110988
+Node: Makefile Basics\7f111794
+Node: Utilities in Makefiles\7f114968
+Node: Command Variables\7f117113
+Node: Directory Variables\7f120690
+Node: Standard Targets\7f131584
+Ref: Standard Targets-Footnote-1\7f142824
+Node: Install Command Categories\7f142924
+Node: Releases\7f147506
+Node: References\7f151594
+Node: Copying This Manual\7f153879
+Node: GNU Free Documentation License\7f154115
+Node: Index\7f173816
+\1f
+End Tag Table
index 9dfd732..4097899 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/es/LC_MESSAGES/bfd.mo and b/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/es/LC_MESSAGES/bfd.mo differ
index 3130319..8e4253f 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/es/LC_MESSAGES/opcodes.mo and b/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/es/LC_MESSAGES/opcodes.mo differ
index 97678b7..927782d 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/fi/LC_MESSAGES/opcodes.mo and b/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/fi/LC_MESSAGES/opcodes.mo differ
index 3fd1e06..47a17c6 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/fr/LC_MESSAGES/opcodes.mo and b/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/fr/LC_MESSAGES/opcodes.mo differ
index 4343237..79c304c 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/ga/LC_MESSAGES/opcodes.mo and b/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/ga/LC_MESSAGES/opcodes.mo differ
index 85e25d5..6e28b25 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/nl/LC_MESSAGES/opcodes.mo and b/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/nl/LC_MESSAGES/opcodes.mo differ
index 243cfe1..f5683c6 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/vi/LC_MESSAGES/bfd.mo and b/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/vi/LC_MESSAGES/bfd.mo differ
index 07f941b..1ab0155 100644 (file)
Binary files a/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/vi/LC_MESSAGES/opcodes.mo and b/darwin-x86/toolchain/arm-eabi-4.4.0/share/locale/vi/LC_MESSAGES/opcodes.mo differ
index 5b8af93..e232c54 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ar and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ar differ
index b993d81..662d772 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/as and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/as differ
index 6468492..9046f23 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/c++ and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/c++ differ
index 6468492..9046f23 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/g++ and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/g++ differ
index 0cd1358..64b654f 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/gcc and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/gcc differ
index d1cf9c9..15d5a37 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ld and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ld differ
index f0023a5..da1f485 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/nm and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/nm differ
index e9508b4..f2e2f7e 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objcopy and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objcopy differ
index 0daa737..3ec8748 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objdump and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/objdump differ
index a121c59..3c795c3 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ranlib and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/ranlib differ
index f485465..7d56d89 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/strip and b/linux-x86/toolchain/arm-eabi-4.4.0/arm-eabi/bin/strip differ
index 9af925c..fac6251 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-addr2line and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-addr2line differ
index 5b8af93..e232c54 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ar and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ar differ
index b993d81..662d772 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-as and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-as differ
index 6468492..9046f23 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++ and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++ differ
index 6b1568e..0e670c5 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++filt and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-c++filt differ
index e112bd6..3b55212 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-cpp and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-cpp differ
index 6468492..9046f23 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-g++ and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-g++ differ
index 0cd1358..64b654f 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc differ
index 0cd1358..64b654f 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc-4.4.0 and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc-4.4.0 differ
index f35fe92..0a982de 100755 (executable)
@@ -344,12 +344,12 @@ SEND-PR: support             I need help with gcc.
 `[ -n "$ARCH" ] && echo Architecture: $ARCH`
 `[ -n "$MACHINE" ] && echo Machine: $MACHINE`
        $ENVIRONMENT_C
-host: i686-pc-linux-gnu
-build: i686-pc-linux-gnu
+host: i686-unknown-linux-gnu
+build: i686-unknown-linux-gnu
 target: arm-unknown-eabi
 __EOF__
       cat >> $file << \__EOF__
-configured with: /home/dougkwan/android-tool-src/toolchain/android-toolchain/gcc-4.4.0/configure --prefix=/g/users/dougkwan/toolbuild/arm-eabi-4.4.0 --target=arm-eabi --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --enable-languages=c,c++ --with-gmp=/g/users/dougkwan/toolbuild/obj/temp-install --with-mpfr=/g/users/dougkwan/toolbuild/obj/temp-install --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs --with-gcc-version=4.4.0 --with-binutils-version=2.19 --with-arch=armv5te --prefix=/g/users/dougkwan/toolbuild/arm-eabi-4.4.0 --with-sysroot=/g/users/dougkwan/toolbuild/arm-eabi-4.4.0/sysroot --with-gdb-version=6.6 --with-gmp-version=4.2.4 --with-mpfr-version=2.4.1 --program-transform-name='s,^,arm-eabi-,'
+configured with: ../../../android-toolchain/gcc-4.4.0/configure --prefix=/usr/local --target=arm-eabi --host=i686-unknown-linux-gnu --build=i686-unknown-linux-gnu --enable-languages=c,c++ --with-gmp=/home/jingyu/projects/gcc/toolchain_build/obj_bcpl/temp-install --with-mpfr=/home/jingyu/projects/gcc/toolchain_build/obj_bcpl/temp-install --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs --with-gcc-version=4.4.0 --with-binutils-version=2.19 --with-arch=armv5te --with-sysroot=/g/users/jingyu/toolchain/cupcake_rel_root --with-gmp-version=4.2.4 --with-mpfr-version=2.4.1 --with-gdb-version=6.6 --with-multilib-list=mthumb-interwork,mandroid --program-transform-name='s,^,arm-eabi-,'
 __EOF__
       cat >> $file << __EOF__
 >Description:
index a460c3a..3561d6f 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcov and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcov differ
index 9ca8d8a..f338975 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb differ
index 751d98b..aa5363e 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdbtui and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdbtui differ
index 82ee87f..ffbab5d 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gprof and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gprof differ
index d1cf9c9..15d5a37 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ld and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ld differ
index f0023a5..da1f485 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-nm and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-nm differ
index e9508b4..f2e2f7e 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objcopy and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objcopy differ
index 0daa737..3ec8748 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objdump and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-objdump differ
index a121c59..3c795c3 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ranlib and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ranlib differ
index 1a73f70..33b00dd 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-readelf and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-readelf differ
index 9edcc58..f49e231 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-run and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-run differ
index 05234d0..7bd0434 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-size and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-size differ
index 152151b..6c0cf1e 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strings and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strings differ
index f485465..7d56d89 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strip and b/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-strip differ
index 491369b..03e7c68 100644 (file)
@@ -1,5 +1,5 @@
 This is as.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/binutils-2.19/gas/doc/as.texinfo.
+../../../../../android-toolchain/binutils-2.19/gas/doc/as.texinfo.
 
 START-INFO-DIR-ENTRY
 * As: (as).                     The GNU assembler.
@@ -19781,494 +19781,494 @@ AS Index
 
 \1f
 Tag Table:
-Node: Top\7f840
-Node: Overview\7f1826
-Node: Manual\7f29717
-Node: GNU Assembler\7f30661
-Node: Object Formats\7f31832
-Node: Command Line\7f32284
-Node: Input Files\7f33371
-Node: Object\7f35352
-Node: Errors\7f36248
-Node: Invoking\7f37443
-Node: a\7f39398
-Node: alternate\7f41309
-Node: D\7f41481
-Node: f\7f41714
-Node: I\7f42222
-Node: K\7f42766
-Node: L\7f43070
-Node: listing\7f43809
-Node: M\7f45468
-Node: MD\7f49869
-Node: o\7f50295
-Node: R\7f50750
-Node: statistics\7f51780
-Node: traditional-format\7f52187
-Node: v\7f52660
-Node: W\7f52935
-Node: Z\7f53842
-Node: Syntax\7f54364
-Node: Preprocessing\7f54955
-Node: Whitespace\7f56518
-Node: Comments\7f56914
-Node: Symbol Intro\7f59067
-Node: Statements\7f59757
-Node: Constants\7f61678
-Node: Characters\7f62309
-Node: Strings\7f62811
-Node: Chars\7f64977
-Node: Numbers\7f65731
-Node: Integers\7f66271
-Node: Bignums\7f66927
-Node: Flonums\7f67283
-Node: Sections\7f69030
-Node: Secs Background\7f69408
-Node: Ld Sections\7f74447
-Node: As Sections\7f76831
-Node: Sub-Sections\7f77741
-Node: bss\7f80886
-Node: Symbols\7f81836
-Node: Labels\7f82484
-Node: Setting Symbols\7f83215
-Node: Symbol Names\7f83711
-Node: Dot\7f88774
-Node: Symbol Attributes\7f89221
-Node: Symbol Value\7f89958
-Node: Symbol Type\7f91003
-Node: a.out Symbols\7f91391
-Node: Symbol Desc\7f91653
-Node: Symbol Other\7f91948
-Node: COFF Symbols\7f92117
-Node: SOM Symbols\7f92790
-Node: Expressions\7f93232
-Node: Empty Exprs\7f93981
-Node: Integer Exprs\7f94328
-Node: Arguments\7f94723
-Node: Operators\7f95829
-Node: Prefix Ops\7f96164
-Node: Infix Ops\7f96492
-Node: Pseudo Ops\7f98882
-Node: Abort\7f104288
-Node: ABORT (COFF)\7f104700
-Node: Align\7f104908
-Node: Ascii\7f107190
-Node: Asciz\7f107499
-Node: Balign\7f107744
-Node: Byte\7f109607
-Node: Comm\7f109845
-Node: CFI directives\7f111219
-Node: LNS directives\7f116414
-Node: Data\7f118489
-Node: Def\7f118816
-Node: Desc\7f119048
-Node: Dim\7f119548
-Node: Double\7f119805
-Node: Eject\7f120143
-Node: Else\7f120318
-Node: Elseif\7f120618
-Node: End\7f120912
-Node: Endef\7f121127
-Node: Endfunc\7f121304
-Node: Endif\7f121479
-Node: Equ\7f121740
-Node: Equiv\7f122254
-Node: Eqv\7f122810
-Node: Err\7f123174
-Node: Error\7f123485
-Node: Exitm\7f123930
-Node: Extern\7f124099
-Node: Fail\7f124360
-Node: File\7f124805
-Node: Fill\7f125282
-Node: Float\7f126246
-Node: Func\7f126588
-Node: Global\7f127178
-Node: Gnu_attribute\7f127935
-Node: Hidden\7f128160
-Node: hword\7f128746
-Node: Ident\7f129074
-Node: If\7f129648
-Node: Incbin\7f132707
-Node: Include\7f133402
-Node: Int\7f133953
-Node: Internal\7f134334
-Node: Irp\7f134982
-Node: Irpc\7f135861
-Node: Lcomm\7f136778
-Node: Lflags\7f137526
-Node: Line\7f137720
-Node: Linkonce\7f138639
-Node: Ln\7f139868
-Node: MRI\7f140029
-Node: List\7f140367
-Node: Long\7f140975
-Node: Macro\7f141162
-Node: Altmacro\7f147084
-Node: Noaltmacro\7f148415
-Node: Nolist\7f148584
-Node: Octa\7f149014
-Node: Org\7f149348
-Node: P2align\7f150631
-Node: Previous\7f152559
-Node: PopSection\7f153972
-Node: Print\7f154480
-Node: Protected\7f154709
-Node: Psize\7f155356
-Node: Purgem\7f156040
-Node: PushSection\7f156261
-Node: Quad\7f157004
-Node: Reloc\7f157460
-Node: Rept\7f158221
-Node: Sbttl\7f158635
-Node: Scl\7f159000
-Node: Section\7f159341
-Node: Set\7f164478
-Node: Short\7f165115
-Node: Single\7f165436
-Node: Size\7f165781
-Node: Sleb128\7f166453
-Node: Skip\7f166777
-Node: Space\7f167101
-Node: Stab\7f167742
-Node: String\7f169746
-Node: Struct\7f170740
-Node: SubSection\7f171465
-Node: Symver\7f172028
-Node: Tag\7f174421
-Node: Text\7f174803
-Node: Title\7f175124
-Node: Type\7f175505
-Node: Uleb128\7f177228
-Node: Val\7f177552
-Node: Version\7f177802
-Node: VTableEntry\7f178077
-Node: VTableInherit\7f178367
-Node: Warning\7f178817
-Node: Weak\7f179051
-Node: Weakref\7f179720
-Node: Word\7f180685
-Node: Deprecated\7f182531
-Node: Object Attributes\7f182766
-Node: GNU Object Attributes\7f184486
-Node: Defining New Object Attributes\7f187039
-Node: Machine Dependencies\7f187836
-Node: Alpha-Dependent\7f190720
-Node: Alpha Notes\7f191134
-Node: Alpha Options\7f191415
-Node: Alpha Syntax\7f193613
-Node: Alpha-Chars\7f194082
-Node: Alpha-Regs\7f194313
-Node: Alpha-Relocs\7f194700
-Node: Alpha Floating Point\7f200958
-Node: Alpha Directives\7f201180
-Node: Alpha Opcodes\7f206703
-Node: ARC-Dependent\7f206998
-Node: ARC Options\7f207381
-Node: ARC Syntax\7f208450
-Node: ARC-Chars\7f208682
-Node: ARC-Regs\7f208814
-Node: ARC Floating Point\7f208938
-Node: ARC Directives\7f209249
-Node: ARC Opcodes\7f215221
-Node: ARM-Dependent\7f215447
-Node: ARM Options\7f215912
-Node: ARM Syntax\7f222045
-Node: ARM-Chars\7f222314
-Node: ARM-Regs\7f222838
-Node: ARM Floating Point\7f223047
-Node: ARM-Relocations\7f223246
-Node: ARM Directives\7f224199
-Ref: arm_fnstart\7f228214
-Ref: arm_fnend\7f228289
-Ref: arm_save\7f229306
-Ref: arm_pad\7f230636
-Ref: arm_movsp\7f230842
-Ref: arm_setfp\7f231020
-Node: ARM Opcodes\7f232571
-Node: ARM Mapping Symbols\7f234659
-Node: ARM Unwinding Tutorial\7f235469
-Node: AVR-Dependent\7f241671
-Node: AVR Options\7f241957
-Node: AVR Syntax\7f244788
-Node: AVR-Chars\7f245075
-Node: AVR-Regs\7f245481
-Node: AVR-Modifiers\7f246060
-Node: AVR Opcodes\7f248120
-Node: BFIN-Dependent\7f253366
-Node: BFIN Syntax\7f253620
-Node: BFIN Directives\7f259316
-Node: CR16-Dependent\7f259723
-Node: CR16 Operand Qualifiers\7f259967
-Node: CRIS-Dependent\7f261733
-Node: CRIS-Opts\7f262079
-Ref: march-option\7f263697
-Node: CRIS-Expand\7f265514
-Node: CRIS-Symbols\7f266697
-Node: CRIS-Syntax\7f267866
-Node: CRIS-Chars\7f268202
-Node: CRIS-Pic\7f268753
-Ref: crispic\7f268949
-Node: CRIS-Regs\7f272489
-Node: CRIS-Pseudos\7f272906
-Ref: crisnous\7f273682
-Node: D10V-Dependent\7f274964
-Node: D10V-Opts\7f275315
-Node: D10V-Syntax\7f276278
-Node: D10V-Size\7f276807
-Node: D10V-Subs\7f277780
-Node: D10V-Chars\7f278815
-Node: D10V-Regs\7f280419
-Node: D10V-Addressing\7f281464
-Node: D10V-Word\7f282150
-Node: D10V-Float\7f282665
-Node: D10V-Opcodes\7f282976
-Node: D30V-Dependent\7f283369
-Node: D30V-Opts\7f283722
-Node: D30V-Syntax\7f284397
-Node: D30V-Size\7f284929
-Node: D30V-Subs\7f285900
-Node: D30V-Chars\7f286935
-Node: D30V-Guarded\7f289233
-Node: D30V-Regs\7f289913
-Node: D30V-Addressing\7f291052
-Node: D30V-Float\7f291720
-Node: D30V-Opcodes\7f292031
-Node: H8/300-Dependent\7f292424
-Node: H8/300 Options\7f292836
-Node: H8/300 Syntax\7f293103
-Node: H8/300-Chars\7f293404
-Node: H8/300-Regs\7f293703
-Node: H8/300-Addressing\7f294622
-Node: H8/300 Floating Point\7f295663
-Node: H8/300 Directives\7f295990
-Node: H8/300 Opcodes\7f297118
-Node: HPPA-Dependent\7f305440
-Node: HPPA Notes\7f305875
-Node: HPPA Options\7f306633
-Node: HPPA Syntax\7f306828
-Node: HPPA Floating Point\7f308098
-Node: HPPA Directives\7f308304
-Node: HPPA Opcodes\7f316990
-Node: ESA/390-Dependent\7f317249
-Node: ESA/390 Notes\7f317709
-Node: ESA/390 Options\7f318500
-Node: ESA/390 Syntax\7f318710
-Node: ESA/390 Floating Point\7f320883
-Node: ESA/390 Directives\7f321162
-Node: ESA/390 Opcodes\7f324451
-Node: i386-Dependent\7f324713
-Node: i386-Options\7f325837
-Node: i386-Directives\7f329539
-Node: i386-Syntax\7f330277
-Node: i386-Mnemonics\7f332710
-Node: i386-Regs\7f335778
-Node: i386-Prefixes\7f337823
-Node: i386-Memory\7f340583
-Node: i386-Jumps\7f343520
-Node: i386-Float\7f344641
-Node: i386-SIMD\7f346472
-Node: i386-16bit\7f347583
-Node: i386-Bugs\7f349623
-Node: i386-Arch\7f350377
-Node: i386-Notes\7f352882
-Node: i860-Dependent\7f353740
-Node: Notes-i860\7f354136
-Node: Options-i860\7f355041
-Node: Directives-i860\7f356404
-Node: Opcodes for i860\7f357473
-Node: i960-Dependent\7f359640
-Node: Options-i960\7f360043
-Node: Floating Point-i960\7f363928
-Node: Directives-i960\7f364196
-Node: Opcodes for i960\7f366230
-Node: callj-i960\7f366847
-Node: Compare-and-branch-i960\7f367336
-Node: IA-64-Dependent\7f369240
-Node: IA-64 Options\7f369541
-Node: IA-64 Syntax\7f372701
-Node: IA-64-Chars\7f373064
-Node: IA-64-Regs\7f373294
-Node: IA-64-Bits\7f374220
-Node: IA-64 Opcodes\7f374729
-Node: IP2K-Dependent\7f375001
-Node: IP2K-Opts\7f375229
-Node: M32C-Dependent\7f375709
-Node: M32C-Opts\7f376233
-Node: M32C-Modifiers\7f376656
-Node: M32R-Dependent\7f378443
-Node: M32R-Opts\7f378764
-Node: M32R-Directives\7f382931
-Node: M32R-Warnings\7f386906
-Node: M68K-Dependent\7f389912
-Node: M68K-Opts\7f390379
-Node: M68K-Syntax\7f397771
-Node: M68K-Moto-Syntax\7f399611
-Node: M68K-Float\7f402201
-Node: M68K-Directives\7f402721
-Node: M68K-opcodes\7f404049
-Node: M68K-Branch\7f404275
-Node: M68K-Chars\7f408473
-Node: M68HC11-Dependent\7f408886
-Node: M68HC11-Opts\7f409417
-Node: M68HC11-Syntax\7f413238
-Node: M68HC11-Modifiers\7f415452
-Node: M68HC11-Directives\7f417280
-Node: M68HC11-Float\7f418656
-Node: M68HC11-opcodes\7f419184
-Node: M68HC11-Branch\7f419366
-Node: MIPS-Dependent\7f421815
-Node: MIPS Opts\7f422975
-Node: MIPS Object\7f432561
-Node: MIPS Stabs\7f434127
-Node: MIPS symbol sizes\7f434849
-Node: MIPS ISA\7f436518
-Node: MIPS autoextend\7f437992
-Node: MIPS insn\7f438722
-Node: MIPS option stack\7f439219
-Node: MIPS ASE instruction generation overrides\7f439993
-Node: MIPS floating-point\7f441807
-Node: MMIX-Dependent\7f442693
-Node: MMIX-Opts\7f443073
-Node: MMIX-Expand\7f446677
-Node: MMIX-Syntax\7f447992
-Ref: mmixsite\7f448349
-Node: MMIX-Chars\7f449190
-Node: MMIX-Symbols\7f449844
-Node: MMIX-Regs\7f451912
-Node: MMIX-Pseudos\7f452937
-Ref: MMIX-loc\7f453078
-Ref: MMIX-local\7f454158
-Ref: MMIX-is\7f454690
-Ref: MMIX-greg\7f454961
-Ref: GREG-base\7f455880
-Ref: MMIX-byte\7f457197
-Ref: MMIX-constants\7f457668
-Ref: MMIX-prefix\7f458314
-Ref: MMIX-spec\7f458688
-Node: MMIX-mmixal\7f459022
-Node: MSP430-Dependent\7f462520
-Node: MSP430 Options\7f462986
-Node: MSP430 Syntax\7f463272
-Node: MSP430-Macros\7f463588
-Node: MSP430-Chars\7f464319
-Node: MSP430-Regs\7f464632
-Node: MSP430-Ext\7f465192
-Node: MSP430 Floating Point\7f467013
-Node: MSP430 Directives\7f467237
-Node: MSP430 Opcodes\7f468028
-Node: MSP430 Profiling Capability\7f468423
-Node: PDP-11-Dependent\7f470752
-Node: PDP-11-Options\7f471141
-Node: PDP-11-Pseudos\7f476212
-Node: PDP-11-Syntax\7f476557
-Node: PDP-11-Mnemonics\7f477309
-Node: PDP-11-Synthetic\7f477611
-Node: PJ-Dependent\7f477829
-Node: PJ Options\7f478054
-Node: PPC-Dependent\7f478331
-Node: PowerPC-Opts\7f478618
-Node: PowerPC-Pseudo\7f481137
-Node: SH-Dependent\7f481736
-Node: SH Options\7f482148
-Node: SH Syntax\7f483156
-Node: SH-Chars\7f483429
-Node: SH-Regs\7f483723
-Node: SH-Addressing\7f484337
-Node: SH Floating Point\7f485246
-Node: SH Directives\7f486340
-Node: SH Opcodes\7f486710
-Node: SH64-Dependent\7f491032
-Node: SH64 Options\7f491395
-Node: SH64 Syntax\7f493192
-Node: SH64-Chars\7f493475
-Node: SH64-Regs\7f493775
-Node: SH64-Addressing\7f494871
-Node: SH64 Directives\7f496054
-Node: SH64 Opcodes\7f497164
-Node: Sparc-Dependent\7f497880
-Node: Sparc-Opts\7f498290
-Node: Sparc-Aligned-Data\7f500547
-Node: Sparc-Syntax\7f501379
-Node: Sparc-Chars\7f501953
-Node: Sparc-Regs\7f502186
-Node: Sparc-Constants\7f507297
-Node: Sparc-Relocs\7f512057
-Node: Sparc-Size-Translations\7f516737
-Node: Sparc-Float\7f518386
-Node: Sparc-Directives\7f518581
-Node: TIC54X-Dependent\7f520541
-Node: TIC54X-Opts\7f521267
-Node: TIC54X-Block\7f522310
-Node: TIC54X-Env\7f522670
-Node: TIC54X-Constants\7f523018
-Node: TIC54X-Subsyms\7f523420
-Node: TIC54X-Locals\7f525329
-Node: TIC54X-Builtins\7f526073
-Node: TIC54X-Ext\7f528544
-Node: TIC54X-Directives\7f529115
-Node: TIC54X-Macros\7f540017
-Node: TIC54X-MMRegs\7f542128
-Node: Z80-Dependent\7f542344
-Node: Z80 Options\7f542732
-Node: Z80 Syntax\7f544155
-Node: Z80-Chars\7f544827
-Node: Z80-Regs\7f545361
-Node: Z80-Case\7f545713
-Node: Z80 Floating Point\7f546158
-Node: Z80 Directives\7f546352
-Node: Z80 Opcodes\7f547977
-Node: Z8000-Dependent\7f549321
-Node: Z8000 Options\7f550282
-Node: Z8000 Syntax\7f550499
-Node: Z8000-Chars\7f550789
-Node: Z8000-Regs\7f551022
-Node: Z8000-Addressing\7f551812
-Node: Z8000 Directives\7f552929
-Node: Z8000 Opcodes\7f554538
-Node: Vax-Dependent\7f564480
-Node: VAX-Opts\7f564997
-Node: VAX-float\7f568732
-Node: VAX-directives\7f569364
-Node: VAX-opcodes\7f570225
-Node: VAX-branch\7f570614
-Node: VAX-operands\7f573121
-Node: VAX-no\7f573884
-Node: V850-Dependent\7f574121
-Node: V850 Options\7f574519
-Node: V850 Syntax\7f576908
-Node: V850-Chars\7f577148
-Node: V850-Regs\7f577313
-Node: V850 Floating Point\7f578881
-Node: V850 Directives\7f579087
-Node: V850 Opcodes\7f580230
-Node: Xtensa-Dependent\7f586122
-Node: Xtensa Options\7f586851
-Node: Xtensa Syntax\7f589661
-Node: Xtensa Opcodes\7f591550
-Node: Xtensa Registers\7f593344
-Node: Xtensa Optimizations\7f593977
-Node: Density Instructions\7f594429
-Node: Xtensa Automatic Alignment\7f595531
-Node: Xtensa Relaxation\7f597978
-Node: Xtensa Branch Relaxation\7f598886
-Node: Xtensa Call Relaxation\7f600258
-Node: Xtensa Immediate Relaxation\7f602044
-Node: Xtensa Directives\7f604618
-Node: Schedule Directive\7f606327
-Node: Longcalls Directive\7f606667
-Node: Transform Directive\7f607211
-Node: Literal Directive\7f607953
-Ref: Literal Directive-Footnote-1\7f611492
-Node: Literal Position Directive\7f611634
-Node: Literal Prefix Directive\7f613333
-Node: Absolute Literals Directive\7f614231
-Node: Reporting Bugs\7f615538
-Node: Bug Criteria\7f616264
-Node: Bug Reporting\7f617031
-Node: Acknowledgements\7f623680
-Ref: Acknowledgements-Footnote-1\7f628578
-Node: GNU Free Documentation License\7f628604
-Node: AS Index\7f648334
+Node: Top\7f813
+Node: Overview\7f1799
+Node: Manual\7f29690
+Node: GNU Assembler\7f30634
+Node: Object Formats\7f31805
+Node: Command Line\7f32257
+Node: Input Files\7f33344
+Node: Object\7f35325
+Node: Errors\7f36221
+Node: Invoking\7f37416
+Node: a\7f39371
+Node: alternate\7f41282
+Node: D\7f41454
+Node: f\7f41687
+Node: I\7f42195
+Node: K\7f42739
+Node: L\7f43043
+Node: listing\7f43782
+Node: M\7f45441
+Node: MD\7f49842
+Node: o\7f50268
+Node: R\7f50723
+Node: statistics\7f51753
+Node: traditional-format\7f52160
+Node: v\7f52633
+Node: W\7f52908
+Node: Z\7f53815
+Node: Syntax\7f54337
+Node: Preprocessing\7f54928
+Node: Whitespace\7f56491
+Node: Comments\7f56887
+Node: Symbol Intro\7f59040
+Node: Statements\7f59730
+Node: Constants\7f61651
+Node: Characters\7f62282
+Node: Strings\7f62784
+Node: Chars\7f64950
+Node: Numbers\7f65704
+Node: Integers\7f66244
+Node: Bignums\7f66900
+Node: Flonums\7f67256
+Node: Sections\7f69003
+Node: Secs Background\7f69381
+Node: Ld Sections\7f74420
+Node: As Sections\7f76804
+Node: Sub-Sections\7f77714
+Node: bss\7f80859
+Node: Symbols\7f81809
+Node: Labels\7f82457
+Node: Setting Symbols\7f83188
+Node: Symbol Names\7f83684
+Node: Dot\7f88747
+Node: Symbol Attributes\7f89194
+Node: Symbol Value\7f89931
+Node: Symbol Type\7f90976
+Node: a.out Symbols\7f91364
+Node: Symbol Desc\7f91626
+Node: Symbol Other\7f91921
+Node: COFF Symbols\7f92090
+Node: SOM Symbols\7f92763
+Node: Expressions\7f93205
+Node: Empty Exprs\7f93954
+Node: Integer Exprs\7f94301
+Node: Arguments\7f94696
+Node: Operators\7f95802
+Node: Prefix Ops\7f96137
+Node: Infix Ops\7f96465
+Node: Pseudo Ops\7f98855
+Node: Abort\7f104261
+Node: ABORT (COFF)\7f104673
+Node: Align\7f104881
+Node: Ascii\7f107163
+Node: Asciz\7f107472
+Node: Balign\7f107717
+Node: Byte\7f109580
+Node: Comm\7f109818
+Node: CFI directives\7f111192
+Node: LNS directives\7f116387
+Node: Data\7f118462
+Node: Def\7f118789
+Node: Desc\7f119021
+Node: Dim\7f119521
+Node: Double\7f119778
+Node: Eject\7f120116
+Node: Else\7f120291
+Node: Elseif\7f120591
+Node: End\7f120885
+Node: Endef\7f121100
+Node: Endfunc\7f121277
+Node: Endif\7f121452
+Node: Equ\7f121713
+Node: Equiv\7f122227
+Node: Eqv\7f122783
+Node: Err\7f123147
+Node: Error\7f123458
+Node: Exitm\7f123903
+Node: Extern\7f124072
+Node: Fail\7f124333
+Node: File\7f124778
+Node: Fill\7f125255
+Node: Float\7f126219
+Node: Func\7f126561
+Node: Global\7f127151
+Node: Gnu_attribute\7f127908
+Node: Hidden\7f128133
+Node: hword\7f128719
+Node: Ident\7f129047
+Node: If\7f129621
+Node: Incbin\7f132680
+Node: Include\7f133375
+Node: Int\7f133926
+Node: Internal\7f134307
+Node: Irp\7f134955
+Node: Irpc\7f135834
+Node: Lcomm\7f136751
+Node: Lflags\7f137499
+Node: Line\7f137693
+Node: Linkonce\7f138612
+Node: Ln\7f139841
+Node: MRI\7f140002
+Node: List\7f140340
+Node: Long\7f140948
+Node: Macro\7f141135
+Node: Altmacro\7f147057
+Node: Noaltmacro\7f148388
+Node: Nolist\7f148557
+Node: Octa\7f148987
+Node: Org\7f149321
+Node: P2align\7f150604
+Node: Previous\7f152532
+Node: PopSection\7f153945
+Node: Print\7f154453
+Node: Protected\7f154682
+Node: Psize\7f155329
+Node: Purgem\7f156013
+Node: PushSection\7f156234
+Node: Quad\7f156977
+Node: Reloc\7f157433
+Node: Rept\7f158194
+Node: Sbttl\7f158608
+Node: Scl\7f158973
+Node: Section\7f159314
+Node: Set\7f164451
+Node: Short\7f165088
+Node: Single\7f165409
+Node: Size\7f165754
+Node: Sleb128\7f166426
+Node: Skip\7f166750
+Node: Space\7f167074
+Node: Stab\7f167715
+Node: String\7f169719
+Node: Struct\7f170713
+Node: SubSection\7f171438
+Node: Symver\7f172001
+Node: Tag\7f174394
+Node: Text\7f174776
+Node: Title\7f175097
+Node: Type\7f175478
+Node: Uleb128\7f177201
+Node: Val\7f177525
+Node: Version\7f177775
+Node: VTableEntry\7f178050
+Node: VTableInherit\7f178340
+Node: Warning\7f178790
+Node: Weak\7f179024
+Node: Weakref\7f179693
+Node: Word\7f180658
+Node: Deprecated\7f182504
+Node: Object Attributes\7f182739
+Node: GNU Object Attributes\7f184459
+Node: Defining New Object Attributes\7f187012
+Node: Machine Dependencies\7f187809
+Node: Alpha-Dependent\7f190693
+Node: Alpha Notes\7f191107
+Node: Alpha Options\7f191388
+Node: Alpha Syntax\7f193586
+Node: Alpha-Chars\7f194055
+Node: Alpha-Regs\7f194286
+Node: Alpha-Relocs\7f194673
+Node: Alpha Floating Point\7f200931
+Node: Alpha Directives\7f201153
+Node: Alpha Opcodes\7f206676
+Node: ARC-Dependent\7f206971
+Node: ARC Options\7f207354
+Node: ARC Syntax\7f208423
+Node: ARC-Chars\7f208655
+Node: ARC-Regs\7f208787
+Node: ARC Floating Point\7f208911
+Node: ARC Directives\7f209222
+Node: ARC Opcodes\7f215194
+Node: ARM-Dependent\7f215420
+Node: ARM Options\7f215885
+Node: ARM Syntax\7f222018
+Node: ARM-Chars\7f222287
+Node: ARM-Regs\7f222811
+Node: ARM Floating Point\7f223020
+Node: ARM-Relocations\7f223219
+Node: ARM Directives\7f224172
+Ref: arm_fnstart\7f228187
+Ref: arm_fnend\7f228262
+Ref: arm_save\7f229279
+Ref: arm_pad\7f230609
+Ref: arm_movsp\7f230815
+Ref: arm_setfp\7f230993
+Node: ARM Opcodes\7f232544
+Node: ARM Mapping Symbols\7f234632
+Node: ARM Unwinding Tutorial\7f235442
+Node: AVR-Dependent\7f241644
+Node: AVR Options\7f241930
+Node: AVR Syntax\7f244761
+Node: AVR-Chars\7f245048
+Node: AVR-Regs\7f245454
+Node: AVR-Modifiers\7f246033
+Node: AVR Opcodes\7f248093
+Node: BFIN-Dependent\7f253339
+Node: BFIN Syntax\7f253593
+Node: BFIN Directives\7f259289
+Node: CR16-Dependent\7f259696
+Node: CR16 Operand Qualifiers\7f259940
+Node: CRIS-Dependent\7f261706
+Node: CRIS-Opts\7f262052
+Ref: march-option\7f263670
+Node: CRIS-Expand\7f265487
+Node: CRIS-Symbols\7f266670
+Node: CRIS-Syntax\7f267839
+Node: CRIS-Chars\7f268175
+Node: CRIS-Pic\7f268726
+Ref: crispic\7f268922
+Node: CRIS-Regs\7f272462
+Node: CRIS-Pseudos\7f272879
+Ref: crisnous\7f273655
+Node: D10V-Dependent\7f274937
+Node: D10V-Opts\7f275288
+Node: D10V-Syntax\7f276251
+Node: D10V-Size\7f276780
+Node: D10V-Subs\7f277753
+Node: D10V-Chars\7f278788
+Node: D10V-Regs\7f280392
+Node: D10V-Addressing\7f281437
+Node: D10V-Word\7f282123
+Node: D10V-Float\7f282638
+Node: D10V-Opcodes\7f282949
+Node: D30V-Dependent\7f283342
+Node: D30V-Opts\7f283695
+Node: D30V-Syntax\7f284370
+Node: D30V-Size\7f284902
+Node: D30V-Subs\7f285873
+Node: D30V-Chars\7f286908
+Node: D30V-Guarded\7f289206
+Node: D30V-Regs\7f289886
+Node: D30V-Addressing\7f291025
+Node: D30V-Float\7f291693
+Node: D30V-Opcodes\7f292004
+Node: H8/300-Dependent\7f292397
+Node: H8/300 Options\7f292809
+Node: H8/300 Syntax\7f293076
+Node: H8/300-Chars\7f293377
+Node: H8/300-Regs\7f293676
+Node: H8/300-Addressing\7f294595
+Node: H8/300 Floating Point\7f295636
+Node: H8/300 Directives\7f295963
+Node: H8/300 Opcodes\7f297091
+Node: HPPA-Dependent\7f305413
+Node: HPPA Notes\7f305848
+Node: HPPA Options\7f306606
+Node: HPPA Syntax\7f306801
+Node: HPPA Floating Point\7f308071
+Node: HPPA Directives\7f308277
+Node: HPPA Opcodes\7f316963
+Node: ESA/390-Dependent\7f317222
+Node: ESA/390 Notes\7f317682
+Node: ESA/390 Options\7f318473
+Node: ESA/390 Syntax\7f318683
+Node: ESA/390 Floating Point\7f320856
+Node: ESA/390 Directives\7f321135
+Node: ESA/390 Opcodes\7f324424
+Node: i386-Dependent\7f324686
+Node: i386-Options\7f325810
+Node: i386-Directives\7f329512
+Node: i386-Syntax\7f330250
+Node: i386-Mnemonics\7f332683
+Node: i386-Regs\7f335751
+Node: i386-Prefixes\7f337796
+Node: i386-Memory\7f340556
+Node: i386-Jumps\7f343493
+Node: i386-Float\7f344614
+Node: i386-SIMD\7f346445
+Node: i386-16bit\7f347556
+Node: i386-Bugs\7f349596
+Node: i386-Arch\7f350350
+Node: i386-Notes\7f352855
+Node: i860-Dependent\7f353713
+Node: Notes-i860\7f354109
+Node: Options-i860\7f355014
+Node: Directives-i860\7f356377
+Node: Opcodes for i860\7f357446
+Node: i960-Dependent\7f359613
+Node: Options-i960\7f360016
+Node: Floating Point-i960\7f363901
+Node: Directives-i960\7f364169
+Node: Opcodes for i960\7f366203
+Node: callj-i960\7f366820
+Node: Compare-and-branch-i960\7f367309
+Node: IA-64-Dependent\7f369213
+Node: IA-64 Options\7f369514
+Node: IA-64 Syntax\7f372674
+Node: IA-64-Chars\7f373037
+Node: IA-64-Regs\7f373267
+Node: IA-64-Bits\7f374193
+Node: IA-64 Opcodes\7f374702
+Node: IP2K-Dependent\7f374974
+Node: IP2K-Opts\7f375202
+Node: M32C-Dependent\7f375682
+Node: M32C-Opts\7f376206
+Node: M32C-Modifiers\7f376629
+Node: M32R-Dependent\7f378416
+Node: M32R-Opts\7f378737
+Node: M32R-Directives\7f382904
+Node: M32R-Warnings\7f386879
+Node: M68K-Dependent\7f389885
+Node: M68K-Opts\7f390352
+Node: M68K-Syntax\7f397744
+Node: M68K-Moto-Syntax\7f399584
+Node: M68K-Float\7f402174
+Node: M68K-Directives\7f402694
+Node: M68K-opcodes\7f404022
+Node: M68K-Branch\7f404248
+Node: M68K-Chars\7f408446
+Node: M68HC11-Dependent\7f408859
+Node: M68HC11-Opts\7f409390
+Node: M68HC11-Syntax\7f413211
+Node: M68HC11-Modifiers\7f415425
+Node: M68HC11-Directives\7f417253
+Node: M68HC11-Float\7f418629
+Node: M68HC11-opcodes\7f419157
+Node: M68HC11-Branch\7f419339
+Node: MIPS-Dependent\7f421788
+Node: MIPS Opts\7f422948
+Node: MIPS Object\7f432534
+Node: MIPS Stabs\7f434100
+Node: MIPS symbol sizes\7f434822
+Node: MIPS ISA\7f436491
+Node: MIPS autoextend\7f437965
+Node: MIPS insn\7f438695
+Node: MIPS option stack\7f439192
+Node: MIPS ASE instruction generation overrides\7f439966
+Node: MIPS floating-point\7f441780
+Node: MMIX-Dependent\7f442666
+Node: MMIX-Opts\7f443046
+Node: MMIX-Expand\7f446650
+Node: MMIX-Syntax\7f447965
+Ref: mmixsite\7f448322
+Node: MMIX-Chars\7f449163
+Node: MMIX-Symbols\7f449817
+Node: MMIX-Regs\7f451885
+Node: MMIX-Pseudos\7f452910
+Ref: MMIX-loc\7f453051
+Ref: MMIX-local\7f454131
+Ref: MMIX-is\7f454663
+Ref: MMIX-greg\7f454934
+Ref: GREG-base\7f455853
+Ref: MMIX-byte\7f457170
+Ref: MMIX-constants\7f457641
+Ref: MMIX-prefix\7f458287
+Ref: MMIX-spec\7f458661
+Node: MMIX-mmixal\7f458995
+Node: MSP430-Dependent\7f462493
+Node: MSP430 Options\7f462959
+Node: MSP430 Syntax\7f463245
+Node: MSP430-Macros\7f463561
+Node: MSP430-Chars\7f464292
+Node: MSP430-Regs\7f464605
+Node: MSP430-Ext\7f465165
+Node: MSP430 Floating Point\7f466986
+Node: MSP430 Directives\7f467210
+Node: MSP430 Opcodes\7f468001
+Node: MSP430 Profiling Capability\7f468396
+Node: PDP-11-Dependent\7f470725
+Node: PDP-11-Options\7f471114
+Node: PDP-11-Pseudos\7f476185
+Node: PDP-11-Syntax\7f476530
+Node: PDP-11-Mnemonics\7f477282
+Node: PDP-11-Synthetic\7f477584
+Node: PJ-Dependent\7f477802
+Node: PJ Options\7f478027
+Node: PPC-Dependent\7f478304
+Node: PowerPC-Opts\7f478591
+Node: PowerPC-Pseudo\7f481110
+Node: SH-Dependent\7f481709
+Node: SH Options\7f482121
+Node: SH Syntax\7f483129
+Node: SH-Chars\7f483402
+Node: SH-Regs\7f483696
+Node: SH-Addressing\7f484310
+Node: SH Floating Point\7f485219
+Node: SH Directives\7f486313
+Node: SH Opcodes\7f486683
+Node: SH64-Dependent\7f491005
+Node: SH64 Options\7f491368
+Node: SH64 Syntax\7f493165
+Node: SH64-Chars\7f493448
+Node: SH64-Regs\7f493748
+Node: SH64-Addressing\7f494844
+Node: SH64 Directives\7f496027
+Node: SH64 Opcodes\7f497137
+Node: Sparc-Dependent\7f497853
+Node: Sparc-Opts\7f498263
+Node: Sparc-Aligned-Data\7f500520
+Node: Sparc-Syntax\7f501352
+Node: Sparc-Chars\7f501926
+Node: Sparc-Regs\7f502159
+Node: Sparc-Constants\7f507270
+Node: Sparc-Relocs\7f512030
+Node: Sparc-Size-Translations\7f516710
+Node: Sparc-Float\7f518359
+Node: Sparc-Directives\7f518554
+Node: TIC54X-Dependent\7f520514
+Node: TIC54X-Opts\7f521240
+Node: TIC54X-Block\7f522283
+Node: TIC54X-Env\7f522643
+Node: TIC54X-Constants\7f522991
+Node: TIC54X-Subsyms\7f523393
+Node: TIC54X-Locals\7f525302
+Node: TIC54X-Builtins\7f526046
+Node: TIC54X-Ext\7f528517
+Node: TIC54X-Directives\7f529088
+Node: TIC54X-Macros\7f539990
+Node: TIC54X-MMRegs\7f542101
+Node: Z80-Dependent\7f542317
+Node: Z80 Options\7f542705
+Node: Z80 Syntax\7f544128
+Node: Z80-Chars\7f544800
+Node: Z80-Regs\7f545334
+Node: Z80-Case\7f545686
+Node: Z80 Floating Point\7f546131
+Node: Z80 Directives\7f546325
+Node: Z80 Opcodes\7f547950
+Node: Z8000-Dependent\7f549294
+Node: Z8000 Options\7f550255
+Node: Z8000 Syntax\7f550472
+Node: Z8000-Chars\7f550762
+Node: Z8000-Regs\7f550995
+Node: Z8000-Addressing\7f551785
+Node: Z8000 Directives\7f552902
+Node: Z8000 Opcodes\7f554511
+Node: Vax-Dependent\7f564453
+Node: VAX-Opts\7f564970
+Node: VAX-float\7f568705
+Node: VAX-directives\7f569337
+Node: VAX-opcodes\7f570198
+Node: VAX-branch\7f570587
+Node: VAX-operands\7f573094
+Node: VAX-no\7f573857
+Node: V850-Dependent\7f574094
+Node: V850 Options\7f574492
+Node: V850 Syntax\7f576881
+Node: V850-Chars\7f577121
+Node: V850-Regs\7f577286
+Node: V850 Floating Point\7f578854
+Node: V850 Directives\7f579060
+Node: V850 Opcodes\7f580203
+Node: Xtensa-Dependent\7f586095
+Node: Xtensa Options\7f586824
+Node: Xtensa Syntax\7f589634
+Node: Xtensa Opcodes\7f591523
+Node: Xtensa Registers\7f593317
+Node: Xtensa Optimizations\7f593950
+Node: Density Instructions\7f594402
+Node: Xtensa Automatic Alignment\7f595504
+Node: Xtensa Relaxation\7f597951
+Node: Xtensa Branch Relaxation\7f598859
+Node: Xtensa Call Relaxation\7f600231
+Node: Xtensa Immediate Relaxation\7f602017
+Node: Xtensa Directives\7f604591
+Node: Schedule Directive\7f606300
+Node: Longcalls Directive\7f606640
+Node: Transform Directive\7f607184
+Node: Literal Directive\7f607926
+Ref: Literal Directive-Footnote-1\7f611465
+Node: Literal Position Directive\7f611607
+Node: Literal Prefix Directive\7f613306
+Node: Absolute Literals Directive\7f614204
+Node: Reporting Bugs\7f615511
+Node: Bug Criteria\7f616237
+Node: Bug Reporting\7f617004
+Node: Acknowledgements\7f623653
+Ref: Acknowledgements-Footnote-1\7f628551
+Node: GNU Free Documentation License\7f628577
+Node: AS Index\7f648307
 \1f
 End Tag Table
index 1a4e5c5..d898761 100644 (file)
@@ -1,5 +1,5 @@
 This is bfd.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/binutils-2.19/bfd/doc/bfd.texinfo.
+../../../../../android-toolchain/binutils-2.19/bfd/doc/bfd.texinfo.
 
 START-INFO-DIR-ENTRY
 * Bfd: (bfd).                   The Binary File Descriptor library.
@@ -10758,67 +10758,67 @@ BFD Index
 
 \1f
 Tag Table:
-Node: Top\7f1127
-Node: Overview\7f1466
-Node: History\7f2517
-Node: How It Works\7f3463
-Node: What BFD Version 2 Can Do\7f5006
-Node: BFD information loss\7f6321
-Node: Canonical format\7f8853
-Node: BFD front end\7f13225
-Node: Memory Usage\7f43732
-Node: Initialization\7f44960
-Node: Sections\7f45419
-Node: Section Input\7f45902
-Node: Section Output\7f47267
-Node: typedef asection\7f49753
-Node: section prototypes\7f74334
-Node: Symbols\7f84014
-Node: Reading Symbols\7f85609
-Node: Writing Symbols\7f86716
-Node: Mini Symbols\7f88425
-Node: typedef asymbol\7f89399
-Node: symbol handling functions\7f94764
-Node: Archives\7f100106
-Node: Formats\7f103832
-Node: Relocations\7f106780
-Node: typedef arelent\7f107507
-Node: howto manager\7f123318
-Node: Core Files\7f191114
-Node: Targets\7f192931
-Node: bfd_target\7f194901
-Node: Architectures\7f215206
-Node: Opening and Closing\7f237689
-Node: Internal\7f248953
-Node: File Caching\7f255286
-Node: Linker Functions\7f257200
-Node: Creating a Linker Hash Table\7f258873
-Node: Adding Symbols to the Hash Table\7f260611
-Node: Differing file formats\7f261511
-Node: Adding symbols from an object file\7f263236
-Node: Adding symbols from an archive\7f265387
-Node: Performing the Final Link\7f267801
-Node: Information provided by the linker\7f269043
-Node: Relocating the section contents\7f270197
-Node: Writing the symbol table\7f271948
-Node: Hash Tables\7f274990
-Node: Creating and Freeing a Hash Table\7f276188
-Node: Looking Up or Entering a String\7f277438
-Node: Traversing a Hash Table\7f278691
-Node: Deriving a New Hash Table Type\7f279480
-Node: Define the Derived Structures\7f280546
-Node: Write the Derived Creation Routine\7f281627
-Node: Write Other Derived Routines\7f284251
-Node: BFD back ends\7f285566
-Node: What to Put Where\7f285836
-Node: aout\7f286016
-Node: coff\7f292334
-Node: elf\7f317085
-Node: mmo\7f317948
-Node: File layout\7f318876
-Node: Symbol-table\7f324523
-Node: mmo section mapping\7f328292
-Node: GNU Free Documentation License\7f331944
-Node: BFD Index\7f351673
+Node: Top\7f1100
+Node: Overview\7f1439
+Node: History\7f2490
+Node: How It Works\7f3436
+Node: What BFD Version 2 Can Do\7f4979
+Node: BFD information loss\7f6294
+Node: Canonical format\7f8826
+Node: BFD front end\7f13198
+Node: Memory Usage\7f43705
+Node: Initialization\7f44933
+Node: Sections\7f45392
+Node: Section Input\7f45875
+Node: Section Output\7f47240
+Node: typedef asection\7f49726
+Node: section prototypes\7f74307
+Node: Symbols\7f83987
+Node: Reading Symbols\7f85582
+Node: Writing Symbols\7f86689
+Node: Mini Symbols\7f88398
+Node: typedef asymbol\7f89372
+Node: symbol handling functions\7f94737
+Node: Archives\7f100079
+Node: Formats\7f103805
+Node: Relocations\7f106753
+Node: typedef arelent\7f107480
+Node: howto manager\7f123291
+Node: Core Files\7f191087
+Node: Targets\7f192904
+Node: bfd_target\7f194874
+Node: Architectures\7f215179
+Node: Opening and Closing\7f237662
+Node: Internal\7f248926
+Node: File Caching\7f255259
+Node: Linker Functions\7f257173
+Node: Creating a Linker Hash Table\7f258846
+Node: Adding Symbols to the Hash Table\7f260584
+Node: Differing file formats\7f261484
+Node: Adding symbols from an object file\7f263209
+Node: Adding symbols from an archive\7f265360
+Node: Performing the Final Link\7f267774
+Node: Information provided by the linker\7f269016
+Node: Relocating the section contents\7f270170
+Node: Writing the symbol table\7f271921
+Node: Hash Tables\7f274963
+Node: Creating and Freeing a Hash Table\7f276161
+Node: Looking Up or Entering a String\7f277411
+Node: Traversing a Hash Table\7f278664
+Node: Deriving a New Hash Table Type\7f279453
+Node: Define the Derived Structures\7f280519
+Node: Write the Derived Creation Routine\7f281600
+Node: Write Other Derived Routines\7f284224
+Node: BFD back ends\7f285539
+Node: What to Put Where\7f285809
+Node: aout\7f285989
+Node: coff\7f292307
+Node: elf\7f317058
+Node: mmo\7f317921
+Node: File layout\7f318849
+Node: Symbol-table\7f324496
+Node: mmo section mapping\7f328265
+Node: GNU Free Documentation License\7f331917
+Node: BFD Index\7f351646
 \1f
 End Tag Table
index 6dda0ed..277f20d 100644 (file)
@@ -1,5 +1,5 @@
 This is binutils.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/binutils-2.19/binutils/doc/binutils.texi.
+../../../../../android-toolchain/binutils-2.19/binutils/doc/binutils.texi.
 
    Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
@@ -4230,34 +4230,34 @@ Binutils Index
 
 \1f
 Tag Table:
-Node: Top\7f2010
-Node: ar\7f3641
-Node: ar cmdline\7f6428
-Node: ar scripts\7f14808
-Node: nm\7f20496
-Node: objcopy\7f29001
-Node: objdump\7f54453
-Node: ranlib\7f72993
-Node: size\7f73814
-Node: strings\7f76819
-Node: strip\7f79271
-Node: c++filt\7f85222
-Ref: c++filt-Footnote-1\7f90169
-Node: addr2line\7f90275
-Node: nlmconv\7f93546
-Node: windmc\7f96152
-Node: windres\7f99799
-Node: dlltool\7f105826
-Node: def file format\7f116663
-Node: readelf\7f118401
-Node: Common Options\7f123955
-Node: Selecting the Target System\7f124995
-Node: Target Selection\7f125927
-Node: Architecture Selection\7f127909
-Node: Reporting Bugs\7f128737
-Node: Bug Criteria\7f129516
-Node: Bug Reporting\7f130069
-Node: GNU Free Documentation License\7f136939
-Node: Binutils Index\7f159383
+Node: Top\7f1983
+Node: ar\7f3614
+Node: ar cmdline\7f6401
+Node: ar scripts\7f14781
+Node: nm\7f20469
+Node: objcopy\7f28974
+Node: objdump\7f54426
+Node: ranlib\7f72966
+Node: size\7f73787
+Node: strings\7f76792
+Node: strip\7f79244
+Node: c++filt\7f85195
+Ref: c++filt-Footnote-1\7f90142
+Node: addr2line\7f90248
+Node: nlmconv\7f93519
+Node: windmc\7f96125
+Node: windres\7f99772
+Node: dlltool\7f105799
+Node: def file format\7f116636
+Node: readelf\7f118374
+Node: Common Options\7f123928
+Node: Selecting the Target System\7f124968
+Node: Target Selection\7f125900
+Node: Architecture Selection\7f127882
+Node: Reporting Bugs\7f128710
+Node: Bug Criteria\7f129489
+Node: Bug Reporting\7f130042
+Node: GNU Free Documentation License\7f136912
+Node: Binutils Index\7f159356
 \1f
 End Tag Table
index 643572e..7d7d232 100644 (file)
@@ -1,5 +1,5 @@
 This is configure.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/binutils-2.19/etc/configure.texi.
+../../../../android-toolchain/binutils-2.19/etc/configure.texi.
 
 INFO-DIR-SECTION GNU admin
 START-INFO-DIR-ENTRY
@@ -2710,64 +2710,64 @@ Index
 
 \1f
 Tag Table:
-Node: Top\7f1047
-Node: Introduction\7f1575
-Node: Goals\7f2657
-Node: Tools\7f3381
-Node: History\7f4375
-Node: Building\7f7373
-Node: Getting Started\7f10636
-Node: Write configure.in\7f11149
-Node: Write Makefile.am\7f18400
-Node: Write acconfig.h\7f21577
-Node: Generate files\7f23114
-Node: Getting Started Example\7f25080
-Node: Getting Started Example 1\7f25835
-Node: Getting Started Example 2\7f27756
-Node: Getting Started Example 3\7f30751
-Node: Generate Files in Example\7f33115
-Node: Files\7f34205
-Node: Developer Files\7f34816
-Node: Developer Files Picture\7f35196
-Node: Written Developer Files\7f36484
-Node: Generated Developer Files\7f39036
-Node: Build Files\7f42180
-Node: Build Files Picture\7f42841
-Node: Build Files Description\7f43605
-Node: Support Files\7f45611
-Node: Configuration Names\7f48493
-Node: Configuration Name Definition\7f48993
-Node: Using Configuration Names\7f51316
-Node: Cross Compilation Tools\7f53286
-Node: Cross Compilation Concepts\7f53977
-Node: Host and Target\7f54945
-Node: Using the Host Type\7f56446
-Node: Specifying the Target\7f57795
-Node: Using the Target Type\7f58584
-Node: Cross Tools in the Cygnus Tree\7f62015
-Node: Host and Target Libraries\7f63072
-Node: Target Library Configure Scripts\7f66821
-Node: Make Targets in Cygnus Tree\7f69913
-Node: Target libiberty\7f71261
-Node: Canadian Cross\7f72648
-Node: Canadian Cross Example\7f73489
-Node: Canadian Cross Concepts\7f74608
-Node: Build Cross Host Tools\7f76120
-Node: Build and Host Options\7f77072
-Node: CCross not in Cygnus Tree\7f78858
-Node: CCross in Cygnus Tree\7f79836
-Node: Standard Cygnus CCross\7f80257
-Node: Cross Cygnus CCross\7f81621
-Node: Supporting Canadian Cross\7f84421
-Node: CCross in Configure\7f85036
-Node: CCross in Make\7f88204
-Node: Cygnus Configure\7f89807
-Node: Cygnus Configure Basics\7f90642
-Node: Cygnus Configure in C++ Libraries\7f95320
-Node: Multilibs\7f96327
-Node: Multilibs in gcc\7f97372
-Node: Multilibs in Target Libraries\7f98450
-Node: FAQ\7f102641
-Node: Index\7f106741
+Node: Top\7f1017
+Node: Introduction\7f1545
+Node: Goals\7f2627
+Node: Tools\7f3351
+Node: History\7f4345
+Node: Building\7f7343
+Node: Getting Started\7f10606
+Node: Write configure.in\7f11119
+Node: Write Makefile.am\7f18370
+Node: Write acconfig.h\7f21547
+Node: Generate files\7f23084
+Node: Getting Started Example\7f25050
+Node: Getting Started Example 1\7f25805
+Node: Getting Started Example 2\7f27726
+Node: Getting Started Example 3\7f30721
+Node: Generate Files in Example\7f33085
+Node: Files\7f34175
+Node: Developer Files\7f34786
+Node: Developer Files Picture\7f35166
+Node: Written Developer Files\7f36454
+Node: Generated Developer Files\7f39006
+Node: Build Files\7f42150
+Node: Build Files Picture\7f42811
+Node: Build Files Description\7f43575
+Node: Support Files\7f45581
+Node: Configuration Names\7f48463
+Node: Configuration Name Definition\7f48963
+Node: Using Configuration Names\7f51286
+Node: Cross Compilation Tools\7f53256
+Node: Cross Compilation Concepts\7f53947
+Node: Host and Target\7f54915
+Node: Using the Host Type\7f56416
+Node: Specifying the Target\7f57765
+Node: Using the Target Type\7f58554
+Node: Cross Tools in the Cygnus Tree\7f61985
+Node: Host and Target Libraries\7f63042
+Node: Target Library Configure Scripts\7f66791
+Node: Make Targets in Cygnus Tree\7f69883
+Node: Target libiberty\7f71231
+Node: Canadian Cross\7f72618
+Node: Canadian Cross Example\7f73459
+Node: Canadian Cross Concepts\7f74578
+Node: Build Cross Host Tools\7f76090
+Node: Build and Host Options\7f77042
+Node: CCross not in Cygnus Tree\7f78828
+Node: CCross in Cygnus Tree\7f79806
+Node: Standard Cygnus CCross\7f80227
+Node: Cross Cygnus CCross\7f81591
+Node: Supporting Canadian Cross\7f84391
+Node: CCross in Configure\7f85006
+Node: CCross in Make\7f88174
+Node: Cygnus Configure\7f89777
+Node: Cygnus Configure Basics\7f90612
+Node: Cygnus Configure in C++ Libraries\7f95290
+Node: Multilibs\7f96297
+Node: Multilibs in gcc\7f97342
+Node: Multilibs in Target Libraries\7f98420
+Node: FAQ\7f102611
+Node: Index\7f106711
 \1f
 End Tag Table
index 58343a8..6908938 100644 (file)
@@ -1,5 +1,5 @@
 This is doc/cpp.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gcc-4.4.0/gcc/doc/cpp.texi.
+../../../../android-toolchain/gcc-4.4.0/gcc/doc/cpp.texi.
 
    Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
@@ -5273,79 +5273,79 @@ Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f1140
-Node: Overview\7f3854
-Node: Character sets\7f6675
-Ref: Character sets-Footnote-1\7f8858
-Node: Initial processing\7f9039
-Ref: trigraphs\7f10598
-Node: Tokenization\7f14800
-Ref: Tokenization-Footnote-1\7f21936
-Node: The preprocessing language\7f22047
-Node: Header Files\7f24925
-Node: Include Syntax\7f26841
-Node: Include Operation\7f28478
-Node: Search Path\7f30326
-Node: Once-Only Headers\7f33516
-Node: Alternatives to Wrapper #ifndef\7f35175
-Node: Computed Includes\7f36918
-Node: Wrapper Headers\7f40076
-Node: System Headers\7f42502
-Node: Macros\7f44552
-Node: Object-like Macros\7f45693
-Node: Function-like Macros\7f49283
-Node: Macro Arguments\7f50899
-Node: Stringification\7f55044
-Node: Concatenation\7f58250
-Node: Variadic Macros\7f61358
-Node: Predefined Macros\7f66145
-Node: Standard Predefined Macros\7f66733
-Node: Common Predefined Macros\7f72669
-Node: System-specific Predefined Macros\7f85579
-Node: C++ Named Operators\7f87600
-Node: Undefining and Redefining Macros\7f88564
-Node: Directives Within Macro Arguments\7f90668
-Node: Macro Pitfalls\7f92216
-Node: Misnesting\7f92749
-Node: Operator Precedence Problems\7f93861
-Node: Swallowing the Semicolon\7f95727
-Node: Duplication of Side Effects\7f97750
-Node: Self-Referential Macros\7f99933
-Node: Argument Prescan\7f102342
-Node: Newlines in Arguments\7f106096
-Node: Conditionals\7f107047
-Node: Conditional Uses\7f108877
-Node: Conditional Syntax\7f110235
-Node: Ifdef\7f110555
-Node: If\7f113716
-Node: Defined\7f116020
-Node: Else\7f117303
-Node: Elif\7f117873
-Node: Deleted Code\7f119162
-Node: Diagnostics\7f120409
-Node: Line Control\7f122026
-Node: Pragmas\7f125830
-Node: Other Directives\7f130100
-Node: Preprocessor Output\7f131207
-Node: Traditional Mode\7f134408
-Node: Traditional lexical analysis\7f135466
-Node: Traditional macros\7f137969
-Node: Traditional miscellany\7f141771
-Node: Traditional warnings\7f142768
-Node: Implementation Details\7f144965
-Node: Implementation-defined behavior\7f145586
-Ref: Identifier characters\7f146338
-Node: Implementation limits\7f149413
-Node: Obsolete Features\7f152087
-Node: Differences from previous versions\7f154924
-Node: Invocation\7f159132
-Ref: Wtrigraphs\7f163584
-Ref: dashMF\7f168359
-Ref: fdollars-in-identifiers\7f177742
-Node: Environment Variables\7f185905
-Node: GNU Free Documentation License\7f188871
-Node: Index of Directives\7f211304
-Node: Option Index\7f213238
-Node: Concept Index\7f219422
+Node: Top\7f1110
+Node: Overview\7f3824
+Node: Character sets\7f6645
+Ref: Character sets-Footnote-1\7f8828
+Node: Initial processing\7f9009
+Ref: trigraphs\7f10568
+Node: Tokenization\7f14770
+Ref: Tokenization-Footnote-1\7f21906
+Node: The preprocessing language\7f22017
+Node: Header Files\7f24895
+Node: Include Syntax\7f26811
+Node: Include Operation\7f28448
+Node: Search Path\7f30296
+Node: Once-Only Headers\7f33486
+Node: Alternatives to Wrapper #ifndef\7f35145
+Node: Computed Includes\7f36888
+Node: Wrapper Headers\7f40046
+Node: System Headers\7f42472
+Node: Macros\7f44522
+Node: Object-like Macros\7f45663
+Node: Function-like Macros\7f49253
+Node: Macro Arguments\7f50869
+Node: Stringification\7f55014
+Node: Concatenation\7f58220
+Node: Variadic Macros\7f61328
+Node: Predefined Macros\7f66115
+Node: Standard Predefined Macros\7f66703
+Node: Common Predefined Macros\7f72639
+Node: System-specific Predefined Macros\7f85549
+Node: C++ Named Operators\7f87570
+Node: Undefining and Redefining Macros\7f88534
+Node: Directives Within Macro Arguments\7f90638
+Node: Macro Pitfalls\7f92186
+Node: Misnesting\7f92719
+Node: Operator Precedence Problems\7f93831
+Node: Swallowing the Semicolon\7f95697
+Node: Duplication of Side Effects\7f97720
+Node: Self-Referential Macros\7f99903
+Node: Argument Prescan\7f102312
+Node: Newlines in Arguments\7f106066
+Node: Conditionals\7f107017
+Node: Conditional Uses\7f108847
+Node: Conditional Syntax\7f110205
+Node: Ifdef\7f110525
+Node: If\7f113686
+Node: Defined\7f115990
+Node: Else\7f117273
+Node: Elif\7f117843
+Node: Deleted Code\7f119132
+Node: Diagnostics\7f120379
+Node: Line Control\7f121996
+Node: Pragmas\7f125800
+Node: Other Directives\7f130070
+Node: Preprocessor Output\7f131177
+Node: Traditional Mode\7f134378
+Node: Traditional lexical analysis\7f135436
+Node: Traditional macros\7f137939
+Node: Traditional miscellany\7f141741
+Node: Traditional warnings\7f142738
+Node: Implementation Details\7f144935
+Node: Implementation-defined behavior\7f145556
+Ref: Identifier characters\7f146308
+Node: Implementation limits\7f149383
+Node: Obsolete Features\7f152057
+Node: Differences from previous versions\7f154894
+Node: Invocation\7f159102
+Ref: Wtrigraphs\7f163554
+Ref: dashMF\7f168329
+Ref: fdollars-in-identifiers\7f177712
+Node: Environment Variables\7f185875
+Node: GNU Free Documentation License\7f188841
+Node: Index of Directives\7f211274
+Node: Option Index\7f213208
+Node: Concept Index\7f219392
 \1f
 End Tag Table
index 6f5423c..36f43dc 100644 (file)
@@ -1,5 +1,5 @@
 This is doc/cppinternals.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gcc-4.4.0/gcc/doc/cppinternals.texi.
+../../../../android-toolchain/gcc-4.4.0/gcc/doc/cppinternals.texi.
 
 INFO-DIR-SECTION Software development
 START-INFO-DIR-ENTRY
@@ -1020,17 +1020,17 @@ Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f1017
-Node: Conventions\7f2702
-Node: Lexer\7f3644
-Ref: Invalid identifiers\7f11557
-Ref: Lexing a line\7f13506
-Node: Hash Nodes\7f18279
-Node: Macro Expansion\7f21158
-Node: Token Spacing\7f30105
-Node: Line Numbering\7f35965
-Node: Guard Macros\7f40050
-Node: Files\7f44841
-Node: Concept Index\7f48307
+Node: Top\7f987
+Node: Conventions\7f2672
+Node: Lexer\7f3614
+Ref: Invalid identifiers\7f11527
+Ref: Lexing a line\7f13476
+Node: Hash Nodes\7f18249
+Node: Macro Expansion\7f21128
+Node: Token Spacing\7f30075
+Node: Line Numbering\7f35935
+Node: Guard Macros\7f40020
+Node: Files\7f44811
+Node: Concept Index\7f48277
 \1f
 End Tag Table
index 5d235cd..e515585 100644 (file)
@@ -1,5 +1,5 @@
 This is doc/gcc.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gcc-4.4.0/gcc/doc/gcc.texi.
+../../../../android-toolchain/gcc-4.4.0/gcc/doc/gcc.texi.
 
  Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
@@ -398,7 +398,8 @@ in the following sections.
 
 _Overall Options_
      *Note Options Controlling the Kind of Output: Overall Options.
-          -c  -S  -E  -o FILE  -combine  -pipe  -pass-exit-codes
+          -c  -S  -E  -o FILE  -combine  -no-canonical-prefixes
+          -pipe  -pass-exit-codes
           -x LANGUAGE  -v  -###  --help[=CLASS[,...]]  --target-help
           --version -wrapper@FILE -fplugin=FILE -fplugin-arg-NAME=ARG
 
@@ -592,7 +593,7 @@ _Optimization Options_
           -freciprocal-math -fregmove -frename-registers -freorder-blocks
           -freorder-blocks-and-partition -freorder-functions
           -frerun-cse-after-loop -freschedule-modulo-scheduled-loops
-          -frounding-math -frtl-abstract-sequences -fsched2-use-superblocks
+          -frounding-math -fsched2-use-superblocks
           -fsched2-use-traces -fsched-spec-load -fsched-spec-load-dangerous
           -fsched-stalled-insns-dep[=N] -fsched-stalled-insns[=N]
           -fschedule-insns -fschedule-insns2 -fsection-anchors -fsee
@@ -1467,6 +1468,10 @@ do nothing at all.
           gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
           diff /tmp/O2-opts /tmp/O3-opts | grep enabled
 
+`-no-canonical-prefixes'
+     Do not expand any symbolic links, resolve references to `/../' or
+     `/./', or make the path absolute when generating a relative prefix.
+
 `--version'
      Display the version number and copyrights of the invoked GCC.
 
@@ -6412,13 +6417,6 @@ correctness.  All must be specifically enabled.
      using C99's `FENV_ACCESS' pragma.  This command line option will
      be used to specify the default state for `FENV_ACCESS'.
 
-`-frtl-abstract-sequences'
-     It is a size optimization method. This option is to find identical
-     sequences of code, which can be turned into pseudo-procedures  and
-     then  replace  all  occurrences with  calls to  the  newly created
-     subroutine. It is kind of an opposite of `-finline-functions'.
-     This optimization runs at RTL level.
-
 `-fsignaling-nans'
      Compile code assuming that IEEE signaling NaNs may generate
      user-visible traps during floating-point operations.  Setting this
@@ -40292,10 +40290,10 @@ look up both forms.
 * fasynchronous-unwind-tables:           Code Gen Options.   (line   64)
 * fauto-inc-dec:                         Optimize Options.   (line  455)
 * fbounds-check:                         Code Gen Options.   (line   15)
-* fbranch-probabilities:                 Optimize Options.   (line 1552)
-* fbranch-target-load-optimize:          Optimize Options.   (line 1660)
-* fbranch-target-load-optimize2:         Optimize Options.   (line 1666)
-* fbtr-bb-exclusive:                     Optimize Options.   (line 1670)
+* fbranch-probabilities:                 Optimize Options.   (line 1545)
+* fbranch-target-load-optimize:          Optimize Options.   (line 1653)
+* fbranch-target-load-optimize2:         Optimize Options.   (line 1659)
+* fbtr-bb-exclusive:                     Optimize Options.   (line 1663)
 * fcall-saved:                           Code Gen Options.   (line  262)
 * fcall-used:                            Code Gen Options.   (line  248)
 * fcaller-saves:                         Optimize Options.   (line  676)
@@ -40314,9 +40312,9 @@ look up both forms.
 * fcrossjumping:                         Optimize Options.   (line  448)
 * fcse-follow-jumps:                     Optimize Options.   (line  376)
 * fcse-skip-blocks:                      Optimize Options.   (line  385)
-* fcx-fortran-rules:                     Optimize Options.   (line 1538)
-* fcx-limited-range:                     Optimize Options.   (line 1526)
-* fdata-sections:                        Optimize Options.   (line 1641)
+* fcx-fortran-rules:                     Optimize Options.   (line 1531)
+* fcx-limited-range:                     Optimize Options.   (line 1519)
+* fdata-sections:                        Optimize Options.   (line 1634)
 * fdbg-cnt:                              Debugging Options.  (line  325)
 * fdbg-cnt-list:                         Debugging Options.  (line  322)
 * fdce:                                  Optimize Options.   (line  461)
@@ -40459,7 +40457,7 @@ look up both forms.
 * ffreestanding:                         Standards.          (line   84)
 * ffriend-injection:                     C++ Dialect Options.
                                                              (line   56)
-* ffunction-sections:                    Optimize Options.   (line 1641)
+* ffunction-sections:                    Optimize Options.   (line 1634)
 * fgcse:                                 Optimize Options.   (line  399)
 * fgcse-after-reload:                    Optimize Options.   (line  435)
 * fgcse-las:                             Optimize Options.   (line  428)
@@ -40511,7 +40509,7 @@ look up both forms.
                                                              (line   15)
 * fmodulo-sched:                         Optimize Options.   (line  293)
 * fmodulo-sched-allow-regmoves:          Optimize Options.   (line  298)
-* fmove-loop-invariants:                 Optimize Options.   (line 1631)
+* fmove-loop-invariants:                 Optimize Options.   (line 1624)
 * fms-extensions <1>:                    Unnamed Fields.     (line   37)
 * fms-extensions <2>:                    C++ Dialect Options.
                                                              (line  121)
@@ -40618,7 +40616,7 @@ look up both forms.
                                                              (line  281)
 * fpch-preprocess:                       Preprocessor Options.
                                                              (line  289)
-* fpeel-loops:                           Optimize Options.   (line 1623)
+* fpeel-loops:                           Optimize Options.   (line 1616)
 * fpermissive:                           C++ Dialect Options.
                                                              (line  140)
 * fPIC:                                  Code Gen Options.   (line  205)
@@ -40637,13 +40635,13 @@ look up both forms.
 * fprofile-dir:                          Optimize Options.   (line 1306)
 * fprofile-generate:                     Optimize Options.   (line 1316)
 * fprofile-use:                          Optimize Options.   (line 1329)
-* fprofile-values:                       Optimize Options.   (line 1571)
+* fprofile-values:                       Optimize Options.   (line 1564)
 * frandom-string:                        Debugging Options.  (line  833)
 * freciprocal-math:                      Optimize Options.   (line 1434)
 * frecord-gcc-switches:                  Code Gen Options.   (line  174)
 * freg-struct-return:                    Code Gen Options.   (line   88)
 * fregmove:                              Optimize Options.   (line  504)
-* frename-registers:                     Optimize Options.   (line 1590)
+* frename-registers:                     Optimize Options.   (line 1583)
 * freorder-blocks:                       Optimize Options.   (line 1073)
 * freorder-blocks-and-partition:         Optimize Options.   (line 1079)
 * freorder-functions:                    Optimize Options.   (line 1090)
@@ -40656,7 +40654,6 @@ look up both forms.
 * frerun-cse-after-loop:                 Optimize Options.   (line  393)
 * freschedule-modulo-scheduled-loops:    Optimize Options.   (line  652)
 * frounding-math:                        Optimize Options.   (line 1480)
-* frtl-abstract-sequences:               Optimize Options.   (line 1500)
 * fsched-spec-load:                      Optimize Options.   (line  593)
 * fsched-spec-load-dangerous:            Optimize Options.   (line  598)
 * fsched-stalled-insns:                  Optimize Options.   (line  604)
@@ -40666,7 +40663,7 @@ look up both forms.
 * fsched2-use-traces:                    Optimize Options.   (line  635)
 * fschedule-insns:                       Optimize Options.   (line  564)
 * fschedule-insns2:                      Optimize Options.   (line  574)
-* fsection-anchors:                      Optimize Options.   (line 1686)
+* fsection-anchors:                      Optimize Options.   (line 1679)
 * fsee:                                  Optimize Options.   (line  647)
 * fsel-sched-pipelining:                 Optimize Options.   (line  666)
 * fsel-sched-pipelining-outer-loops:     Optimize Options.   (line  671)
@@ -40679,20 +40676,20 @@ look up both forms.
                                                              (line   43)
 * fshort-enums:                          Code Gen Options.   (line  106)
 * fshort-wchar:                          Code Gen Options.   (line  125)
-* fsignaling-nans:                       Optimize Options.   (line 1507)
+* fsignaling-nans:                       Optimize Options.   (line 1500)
 * fsigned-bitfields <1>:                 Non-bugs.           (line   57)
 * fsigned-bitfields:                     C Dialect Options.  (line  296)
 * fsigned-char <1>:                      Characters implementation.
                                                              (line   31)
 * fsigned-char:                          C Dialect Options.  (line  286)
-* fsingle-precision-constant:            Optimize Options.   (line 1522)
+* fsingle-precision-constant:            Optimize Options.   (line 1515)
 * fsplit-ivs-in-unroller:                Optimize Options.   (line 1010)
 * fsplit-wide-types:                     Optimize Options.   (line  368)
 * fstack-check:                          Code Gen Options.   (line  357)
 * fstack-limit-register:                 Code Gen Options.   (line  396)
 * fstack-limit-symbol:                   Code Gen Options.   (line  396)
-* fstack-protector:                      Optimize Options.   (line 1674)
-* fstack-protector-all:                  Optimize Options.   (line 1683)
+* fstack-protector:                      Optimize Options.   (line 1667)
+* fstack-protector-all:                  Optimize Options.   (line 1676)
 * fstats:                                C++ Dialect Options.
                                                              (line  160)
 * fstrict-aliasing:                      Optimize Options.   (line 1103)
@@ -40743,7 +40740,7 @@ look up both forms.
 * funsigned-char <1>:                    Characters implementation.
                                                              (line   31)
 * funsigned-char:                        C Dialect Options.  (line  268)
-* funswitch-loops:                       Optimize Options.   (line 1635)
+* funswitch-loops:                       Optimize Options.   (line 1628)
 * funwind-tables:                        Code Gen Options.   (line   57)
 * fuse-cxa-atexit:                       C++ Dialect Options.
                                                              (line  178)
@@ -40756,7 +40753,7 @@ look up both forms.
                                                              (line  190)
 * fvisibility-ms-compat:                 C++ Dialect Options.
                                                              (line  218)
-* fvpt:                                  Optimize Options.   (line 1581)
+* fvpt:                                  Optimize Options.   (line 1574)
 * fweb:                                  Optimize Options.   (line 1266)
 * fwhole-program:                        Optimize Options.   (line 1277)
 * fwide-exec-charset:                    Preprocessor Options.
@@ -41928,6 +41925,7 @@ look up both forms.
                                                              (line   95)
 * mzda:                                  V850 Options.       (line   45)
 * mzero-extend:                          MMIX Options.       (line   27)
+* no-canonical-prefixes:                 Overall Options.    (line  348)
 * no-integrated-cpp:                     C Dialect Options.  (line  240)
 * no-lsim:                               MCore Options.      (line   46)
 * no-red-zone:                           i386 and x86-64 Options.
@@ -41963,7 +41961,7 @@ look up both forms.
                                                              (line  590)
 * p:                                     Debugging Options.  (line  227)
 * pagezero_size:                         Darwin Options.     (line  199)
-* param:                                 Optimize Options.   (line 1710)
+* param:                                 Optimize Options.   (line 1703)
 * pass-exit-codes:                       Overall Options.    (line  145)
 * pedantic <1>:                          Warnings and Errors.
                                                              (line   25)
@@ -42078,7 +42076,7 @@ look up both forms.
 * v:                                     Overall Options.    (line  198)
 * version <1>:                           Preprocessor Options.
                                                              (line  660)
-* version:                               Overall Options.    (line  348)
+* version:                               Overall Options.    (line  352)
 * W:                                     Incompatibilities.  (line   64)
 * w:                                     Preprocessor Options.
                                                              (line  158)
@@ -42346,7 +42344,7 @@ look up both forms.
 * Wpragmas:                              Warning Options.    (line  594)
 * Wprotocol:                             Objective-C and Objective-C++ Dialect Options.
                                                              (line  202)
-* wrapper:                               Overall Options.    (line  351)
+* wrapper:                               Overall Options.    (line  355)
 * Wredundant-decls:                      Warning Options.    (line 1181)
 * Wreorder:                              C++ Dialect Options.
                                                              (line  371)
@@ -43890,257 +43888,257 @@ Keyword Index
 
 \1f
 Tag Table:
-Node: Top\7f2109
-Node: G++ and GCC\7f3806
-Node: Standards\7f5871
-Node: Invoking GCC\7f14846
-Node: Option Summary\7f18675
-Node: Overall Options\7f51415
-Node: Invoking G++\7f65752
-Node: C Dialect Options\7f67275
-Node: C++ Dialect Options\7f81166
-Node: Objective-C and Objective-C++ Dialect Options\7f102156
-Node: Language Independent Options\7f113937
-Node: Warning Options\7f116707
-Node: Debugging Options\7f175054
-Node: Optimize Options\7f214676
-Ref: Type-punning\7f261478
-Node: Preprocessor Options\7f320702
-Ref: Wtrigraphs\7f324787
-Ref: dashMF\7f329535
-Ref: fdollars-in-identifiers\7f340054
-Node: Assembler Options\7f348615
-Node: Link Options\7f349320
-Ref: Link Options-Footnote-1\7f358790
-Node: Directory Options\7f359124
-Node: Spec Files\7f365186
-Node: Target Options\7f385525
-Node: Submodel Options\7f387043
-Node: ARC Options\7f388742
-Node: ARM Options\7f390229
-Node: AVR Options\7f403805
-Node: Blackfin Options\7f406023
-Node: CRIS Options\7f413915
-Node: CRX Options\7f417656
-Node: Darwin Options\7f418081
-Node: DEC Alpha Options\7f425574
-Node: DEC Alpha/VMS Options\7f437490
-Node: FR30 Options\7f437876
-Node: FRV Options\7f438451
-Node: GNU/Linux Options\7f445168
-Node: H8/300 Options\7f445626
-Node: HPPA Options\7f446693
-Node: i386 and x86-64 Options\7f456193
-Node: IA-64 Options\7f484367
-Node: M32C Options\7f491692
-Node: M32R/D Options\7f492983
-Node: M680x0 Options\7f496570
-Node: M68hc1x Options\7f510390
-Node: MCore Options\7f511958
-Node: MIPS Options\7f513466
-Node: MMIX Options\7f539501
-Node: MN10300 Options\7f541983
-Node: PDP-11 Options\7f543405
-Node: picoChip Options\7f545245
-Node: PowerPC Options\7f547444
-Node: RS/6000 and PowerPC Options\7f547680
-Node: S/390 and zSeries Options\7f578427
-Node: Score Options\7f586375
-Node: SH Options\7f587203
-Node: SPARC Options\7f597481
-Node: SPU Options\7f608454
-Node: System V Options\7f611742
-Node: V850 Options\7f612565
-Node: VAX Options\7f615705
-Node: VxWorks Options\7f616253
-Node: x86-64 Options\7f617408
-Node: i386 and x86-64 Windows Options\7f617626
-Node: Xstormy16 Options\7f619945
-Node: Xtensa Options\7f620234
-Node: zSeries Options\7f624381
-Node: Code Gen Options\7f624577
-Node: Environment Variables\7f649156
-Node: Precompiled Headers\7f657052
-Node: Running Protoize\7f663278
-Node: C Implementation\7f669615
-Node: Translation implementation\7f671278
-Node: Environment implementation\7f671852
-Node: Identifiers implementation\7f672402
-Node: Characters implementation\7f673456
-Node: Integers implementation\7f676262
-Node: Floating point implementation\7f678087
-Node: Arrays and pointers implementation\7f681016
-Ref: Arrays and pointers implementation-Footnote-1\7f682451
-Node: Hints implementation\7f682575
-Node: Structures unions enumerations and bit-fields implementation\7f684041
-Node: Qualifiers implementation\7f686027
-Node: Declarators implementation\7f687799
-Node: Statements implementation\7f688141
-Node: Preprocessing directives implementation\7f688468
-Node: Library functions implementation\7f690573
-Node: Architecture implementation\7f691213
-Node: Locale-specific behavior implementation\7f691916
-Node: C Extensions\7f692221
-Node: Statement Exprs\7f696832
-Node: Local Labels\7f701345
-Node: Labels as Values\7f704324
-Ref: Labels as Values-Footnote-1\7f706697
-Node: Nested Functions\7f706880
-Node: Constructing Calls\7f710774
-Node: Typeof\7f715497
-Node: Conditionals\7f718663
-Node: Long Long\7f719554
-Node: Complex\7f721055
-Node: Floating Types\7f723625
-Node: Decimal Float\7f724744
-Node: Hex Floats\7f726733
-Node: Fixed-Point\7f727774
-Node: Zero Length\7f731059
-Node: Empty Structures\7f734337
-Node: Variable Length\7f734753
-Node: Variadic Macros\7f737520
-Node: Escaped Newlines\7f739902
-Node: Subscripting\7f740741
-Node: Pointer Arith\7f741464
-Node: Initializers\7f742032
-Node: Compound Literals\7f742528
-Node: Designated Inits\7f744703
-Node: Case Ranges\7f748358
-Node: Cast to Union\7f749041
-Node: Mixed Declarations\7f750137
-Node: Function Attributes\7f750643
-Node: Attribute Syntax\7f813258
-Node: Function Prototypes\7f823528
-Node: C++ Comments\7f825309
-Node: Dollar Signs\7f825828
-Node: Character Escapes\7f826293
-Node: Alignment\7f826587
-Node: Variable Attributes\7f827961
-Ref: i386 Variable Attributes\7f842551
-Node: Type Attributes\7f848536
-Ref: i386 Type Attributes\7f862157
-Ref: PowerPC Type Attributes\7f862997
-Ref: SPU Type Attributes\7f863859
-Node: Inline\7f864150
-Node: Extended Asm\7f869097
-Ref: Example of asm with clobbered asm reg\7f875183
-Node: Constraints\7f889402
-Node: Simple Constraints\7f890252
-Node: Multi-Alternative\7f896923
-Node: Modifiers\7f898640
-Node: Machine Constraints\7f901534
-Node: Asm Labels\7f933747
-Node: Explicit Reg Vars\7f935423
-Node: Global Reg Vars\7f937031
-Node: Local Reg Vars\7f941581
-Node: Alternate Keywords\7f944022
-Node: Incomplete Enums\7f945450
-Node: Function Names\7f946207
-Node: Return Address\7f948369
-Node: Vector Extensions\7f951166
-Node: Offsetof\7f954668
-Node: Atomic Builtins\7f955482
-Node: Object Size Checking\7f960860
-Node: Other Builtins\7f966288
-Node: Target Builtins\7f991096
-Node: Alpha Built-in Functions\7f991990
-Node: ARM iWMMXt Built-in Functions\7f994989
-Node: ARM NEON Intrinsics\7f1001708
-Node: Blackfin Built-in Functions\7f1209546
-Node: FR-V Built-in Functions\7f1210160
-Node: Argument Types\7f1211019
-Node: Directly-mapped Integer Functions\7f1212775
-Node: Directly-mapped Media Functions\7f1213857
-Node: Raw read/write Functions\7f1220889
-Node: Other Built-in Functions\7f1221801
-Node: X86 Built-in Functions\7f1222990
-Node: MIPS DSP Built-in Functions\7f1267381
-Node: MIPS Paired-Single Support\7f1279828
-Node: MIPS Loongson Built-in Functions\7f1281329
-Node: Paired-Single Arithmetic\7f1287847
-Node: Paired-Single Built-in Functions\7f1288793
-Node: MIPS-3D Built-in Functions\7f1291463
-Node: picoChip Built-in Functions\7f1296838
-Node: Other MIPS Built-in Functions\7f1298200
-Node: PowerPC AltiVec Built-in Functions\7f1298724
-Node: SPARC VIS Built-in Functions\7f1400148
-Node: SPU Built-in Functions\7f1401840
-Node: Target Format Checks\7f1403622
-Node: Solaris Format Checks\7f1404029
-Node: Pragmas\7f1404426
-Node: ARM Pragmas\7f1405120
-Node: M32C Pragmas\7f1405723
-Node: RS/6000 and PowerPC Pragmas\7f1406299
-Node: Darwin Pragmas\7f1407041
-Node: Solaris Pragmas\7f1408108
-Node: Symbol-Renaming Pragmas\7f1409269
-Node: Structure-Packing Pragmas\7f1411891
-Node: Weak Pragmas\7f1413543
-Node: Diagnostic Pragmas\7f1414345
-Node: Visibility Pragmas\7f1416979
-Node: Push/Pop Macro Pragmas\7f1417731
-Node: Function Specific Option Pragmas\7f1418704
-Node: Unnamed Fields\7f1420919
-Node: Thread-Local\7f1422429
-Node: C99 Thread-Local Edits\7f1424538
-Node: C++98 Thread-Local Edits\7f1426550
-Node: Binary constants\7f1429995
-Node: C++ Extensions\7f1430666
-Node: Volatiles\7f1432308
-Node: Restricted Pointers\7f1434984
-Node: Vague Linkage\7f1436578
-Node: C++ Interface\7f1440234
-Ref: C++ Interface-Footnote-1\7f1444531
-Node: Template Instantiation\7f1444668
-Node: Bound member functions\7f1451680
-Node: C++ Attributes\7f1453223
-Node: Namespace Association\7f1454881
-Node: Type Traits\7f1456295
-Node: Java Exceptions\7f1461842
-Node: Deprecated Features\7f1463239
-Node: Backwards Compatibility\7f1466204
-Node: Objective-C\7f1467562
-Node: Executing code before main\7f1468143
-Node: What you can and what you cannot do in +load\7f1470749
-Node: Type encoding\7f1472916
-Node: Garbage Collection\7f1476303
-Node: Constant string objects\7f1478927
-Node: compatibility_alias\7f1481435
-Node: Compatibility\7f1482313
-Node: Gcov\7f1488880
-Node: Gcov Intro\7f1489411
-Node: Invoking Gcov\7f1492127
-Node: Gcov and Optimization\7f1504208
-Node: Gcov Data Files\7f1506861
-Node: Cross-profiling\7f1507999
-Node: Trouble\7f1509825
-Node: Actual Bugs\7f1511381
-Node: Cross-Compiler Problems\7f1512121
-Node: Interoperation\7f1512535
-Node: Incompatibilities\7f1519672
-Node: Fixed Headers\7f1527822
-Node: Standard Libraries\7f1529485
-Node: Disappointments\7f1530857
-Node: C++ Misunderstandings\7f1535215
-Node: Static Definitions\7f1536034
-Node: Name lookup\7f1537087
-Ref: Name lookup-Footnote-1\7f1541865
-Node: Temporaries\7f1542052
-Node: Copy Assignment\7f1544028
-Node: Protoize Caveats\7f1545835
-Node: Non-bugs\7f1549808
-Node: Warnings and Errors\7f1560312
-Node: Bugs\7f1562076
-Node: Bug Criteria\7f1562640
-Node: Bug Reporting\7f1564850
-Node: Service\7f1565071
-Node: Contributing\7f1565890
-Node: Funding\7f1566630
-Node: GNU Project\7f1569119
-Node: Copying\7f1569765
-Node: GNU Free Documentation License\7f1607293
-Node: Contributors\7f1629699
-Node: Option Index\7f1666026
-Node: Keyword Index\7f1825490
+Node: Top\7f2079
+Node: G++ and GCC\7f3776
+Node: Standards\7f5841
+Node: Invoking GCC\7f14816
+Node: Option Summary\7f18645
+Node: Overall Options\7f51393
+Node: Invoking G++\7f65900
+Node: C Dialect Options\7f67423
+Node: C++ Dialect Options\7f81314
+Node: Objective-C and Objective-C++ Dialect Options\7f102304
+Node: Language Independent Options\7f114085
+Node: Warning Options\7f116855
+Node: Debugging Options\7f175202
+Node: Optimize Options\7f214824
+Ref: Type-punning\7f261626
+Node: Preprocessor Options\7f320496
+Ref: Wtrigraphs\7f324581
+Ref: dashMF\7f329329
+Ref: fdollars-in-identifiers\7f339848
+Node: Assembler Options\7f348409
+Node: Link Options\7f349114
+Ref: Link Options-Footnote-1\7f358584
+Node: Directory Options\7f358918
+Node: Spec Files\7f364980
+Node: Target Options\7f385319
+Node: Submodel Options\7f386837
+Node: ARC Options\7f388536
+Node: ARM Options\7f390023
+Node: AVR Options\7f403599
+Node: Blackfin Options\7f405817
+Node: CRIS Options\7f413709
+Node: CRX Options\7f417450
+Node: Darwin Options\7f417875
+Node: DEC Alpha Options\7f425368
+Node: DEC Alpha/VMS Options\7f437284
+Node: FR30 Options\7f437670
+Node: FRV Options\7f438245
+Node: GNU/Linux Options\7f444962
+Node: H8/300 Options\7f445420
+Node: HPPA Options\7f446487
+Node: i386 and x86-64 Options\7f455987
+Node: IA-64 Options\7f484161
+Node: M32C Options\7f491486
+Node: M32R/D Options\7f492777
+Node: M680x0 Options\7f496364
+Node: M68hc1x Options\7f510184
+Node: MCore Options\7f511752
+Node: MIPS Options\7f513260
+Node: MMIX Options\7f539295
+Node: MN10300 Options\7f541777
+Node: PDP-11 Options\7f543199
+Node: picoChip Options\7f545039
+Node: PowerPC Options\7f547238
+Node: RS/6000 and PowerPC Options\7f547474
+Node: S/390 and zSeries Options\7f578221
+Node: Score Options\7f586169
+Node: SH Options\7f586997
+Node: SPARC Options\7f597275
+Node: SPU Options\7f608248
+Node: System V Options\7f611536
+Node: V850 Options\7f612359
+Node: VAX Options\7f615499
+Node: VxWorks Options\7f616047
+Node: x86-64 Options\7f617202
+Node: i386 and x86-64 Windows Options\7f617420
+Node: Xstormy16 Options\7f619739
+Node: Xtensa Options\7f620028
+Node: zSeries Options\7f624175
+Node: Code Gen Options\7f624371
+Node: Environment Variables\7f648950
+Node: Precompiled Headers\7f656846
+Node: Running Protoize\7f663072
+Node: C Implementation\7f669409
+Node: Translation implementation\7f671072
+Node: Environment implementation\7f671646
+Node: Identifiers implementation\7f672196
+Node: Characters implementation\7f673250
+Node: Integers implementation\7f676056
+Node: Floating point implementation\7f677881
+Node: Arrays and pointers implementation\7f680810
+Ref: Arrays and pointers implementation-Footnote-1\7f682245
+Node: Hints implementation\7f682369
+Node: Structures unions enumerations and bit-fields implementation\7f683835
+Node: Qualifiers implementation\7f685821
+Node: Declarators implementation\7f687593
+Node: Statements implementation\7f687935
+Node: Preprocessing directives implementation\7f688262
+Node: Library functions implementation\7f690367
+Node: Architecture implementation\7f691007
+Node: Locale-specific behavior implementation\7f691710
+Node: C Extensions\7f692015
+Node: Statement Exprs\7f696626
+Node: Local Labels\7f701139
+Node: Labels as Values\7f704118
+Ref: Labels as Values-Footnote-1\7f706491
+Node: Nested Functions\7f706674
+Node: Constructing Calls\7f710568
+Node: Typeof\7f715291
+Node: Conditionals\7f718457
+Node: Long Long\7f719348
+Node: Complex\7f720849
+Node: Floating Types\7f723419
+Node: Decimal Float\7f724538
+Node: Hex Floats\7f726527
+Node: Fixed-Point\7f727568
+Node: Zero Length\7f730853
+Node: Empty Structures\7f734131
+Node: Variable Length\7f734547
+Node: Variadic Macros\7f737314
+Node: Escaped Newlines\7f739696
+Node: Subscripting\7f740535
+Node: Pointer Arith\7f741258
+Node: Initializers\7f741826
+Node: Compound Literals\7f742322
+Node: Designated Inits\7f744497
+Node: Case Ranges\7f748152
+Node: Cast to Union\7f748835
+Node: Mixed Declarations\7f749931
+Node: Function Attributes\7f750437
+Node: Attribute Syntax\7f813052
+Node: Function Prototypes\7f823322
+Node: C++ Comments\7f825103
+Node: Dollar Signs\7f825622
+Node: Character Escapes\7f826087
+Node: Alignment\7f826381
+Node: Variable Attributes\7f827755
+Ref: i386 Variable Attributes\7f842345
+Node: Type Attributes\7f848330
+Ref: i386 Type Attributes\7f861951
+Ref: PowerPC Type Attributes\7f862791
+Ref: SPU Type Attributes\7f863653
+Node: Inline\7f863944
+Node: Extended Asm\7f868891
+Ref: Example of asm with clobbered asm reg\7f874977
+Node: Constraints\7f889196
+Node: Simple Constraints\7f890046
+Node: Multi-Alternative\7f896717
+Node: Modifiers\7f898434
+Node: Machine Constraints\7f901328
+Node: Asm Labels\7f933541
+Node: Explicit Reg Vars\7f935217
+Node: Global Reg Vars\7f936825
+Node: Local Reg Vars\7f941375
+Node: Alternate Keywords\7f943816
+Node: Incomplete Enums\7f945244
+Node: Function Names\7f946001
+Node: Return Address\7f948163
+Node: Vector Extensions\7f950960
+Node: Offsetof\7f954462
+Node: Atomic Builtins\7f955276
+Node: Object Size Checking\7f960654
+Node: Other Builtins\7f966082
+Node: Target Builtins\7f990890
+Node: Alpha Built-in Functions\7f991784
+Node: ARM iWMMXt Built-in Functions\7f994783
+Node: ARM NEON Intrinsics\7f1001502
+Node: Blackfin Built-in Functions\7f1209340
+Node: FR-V Built-in Functions\7f1209954
+Node: Argument Types\7f1210813
+Node: Directly-mapped Integer Functions\7f1212569
+Node: Directly-mapped Media Functions\7f1213651
+Node: Raw read/write Functions\7f1220683
+Node: Other Built-in Functions\7f1221595
+Node: X86 Built-in Functions\7f1222784
+Node: MIPS DSP Built-in Functions\7f1267175
+Node: MIPS Paired-Single Support\7f1279622
+Node: MIPS Loongson Built-in Functions\7f1281123
+Node: Paired-Single Arithmetic\7f1287641
+Node: Paired-Single Built-in Functions\7f1288587
+Node: MIPS-3D Built-in Functions\7f1291257
+Node: picoChip Built-in Functions\7f1296632
+Node: Other MIPS Built-in Functions\7f1297994
+Node: PowerPC AltiVec Built-in Functions\7f1298518
+Node: SPARC VIS Built-in Functions\7f1399942
+Node: SPU Built-in Functions\7f1401634
+Node: Target Format Checks\7f1403416
+Node: Solaris Format Checks\7f1403823
+Node: Pragmas\7f1404220
+Node: ARM Pragmas\7f1404914
+Node: M32C Pragmas\7f1405517
+Node: RS/6000 and PowerPC Pragmas\7f1406093
+Node: Darwin Pragmas\7f1406835
+Node: Solaris Pragmas\7f1407902
+Node: Symbol-Renaming Pragmas\7f1409063
+Node: Structure-Packing Pragmas\7f1411685
+Node: Weak Pragmas\7f1413337
+Node: Diagnostic Pragmas\7f1414139
+Node: Visibility Pragmas\7f1416773
+Node: Push/Pop Macro Pragmas\7f1417525
+Node: Function Specific Option Pragmas\7f1418498
+Node: Unnamed Fields\7f1420713
+Node: Thread-Local\7f1422223
+Node: C99 Thread-Local Edits\7f1424332
+Node: C++98 Thread-Local Edits\7f1426344
+Node: Binary constants\7f1429789
+Node: C++ Extensions\7f1430460
+Node: Volatiles\7f1432102
+Node: Restricted Pointers\7f1434778
+Node: Vague Linkage\7f1436372
+Node: C++ Interface\7f1440028
+Ref: C++ Interface-Footnote-1\7f1444325
+Node: Template Instantiation\7f1444462
+Node: Bound member functions\7f1451474
+Node: C++ Attributes\7f1453017
+Node: Namespace Association\7f1454675
+Node: Type Traits\7f1456089
+Node: Java Exceptions\7f1461636
+Node: Deprecated Features\7f1463033
+Node: Backwards Compatibility\7f1465998
+Node: Objective-C\7f1467356
+Node: Executing code before main\7f1467937
+Node: What you can and what you cannot do in +load\7f1470543
+Node: Type encoding\7f1472710
+Node: Garbage Collection\7f1476097
+Node: Constant string objects\7f1478721
+Node: compatibility_alias\7f1481229
+Node: Compatibility\7f1482107
+Node: Gcov\7f1488674
+Node: Gcov Intro\7f1489205
+Node: Invoking Gcov\7f1491921
+Node: Gcov and Optimization\7f1504002
+Node: Gcov Data Files\7f1506655
+Node: Cross-profiling\7f1507793
+Node: Trouble\7f1509619
+Node: Actual Bugs\7f1511175
+Node: Cross-Compiler Problems\7f1511915
+Node: Interoperation\7f1512329
+Node: Incompatibilities\7f1519466
+Node: Fixed Headers\7f1527616
+Node: Standard Libraries\7f1529279
+Node: Disappointments\7f1530651
+Node: C++ Misunderstandings\7f1535009
+Node: Static Definitions\7f1535828
+Node: Name lookup\7f1536881
+Ref: Name lookup-Footnote-1\7f1541659
+Node: Temporaries\7f1541846
+Node: Copy Assignment\7f1543822
+Node: Protoize Caveats\7f1545629
+Node: Non-bugs\7f1549602
+Node: Warnings and Errors\7f1560106
+Node: Bugs\7f1561870
+Node: Bug Criteria\7f1562434
+Node: Bug Reporting\7f1564644
+Node: Service\7f1564865
+Node: Contributing\7f1565684
+Node: Funding\7f1566424
+Node: GNU Project\7f1568913
+Node: Copying\7f1569559
+Node: GNU Free Documentation License\7f1607087
+Node: Contributors\7f1629493
+Node: Option Index\7f1665820
+Node: Keyword Index\7f1825284
 \1f
 End Tag Table
index 46c3558..fdb96dd 100644 (file)
@@ -1,5 +1,5 @@
 This is doc/gccinstall.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gcc-4.4.0/gcc/doc/install.texi.
+../../../../android-toolchain/gcc-4.4.0/gcc/doc/install.texi.
 
    Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
@@ -4183,84 +4183,84 @@ Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f1988
-Node: Installing GCC\7f2546
-Node: Prerequisites\7f4061
-Node: Downloading the source\7f13066
-Node: Configuration\7f14987
-Ref: with-gnu-as\7f29563
-Ref: with-as\7f30461
-Ref: with-gnu-ld\7f31874
-Node: Building\7f69427
-Node: Testing\7f81370
-Node: Final install\7f89150
-Node: Binaries\7f94380
-Node: Specific\7f96353
-Ref: alpha-x-x\7f96859
-Ref: alpha-dec-osf\7f97348
-Ref: arc-x-elf\7f100471
-Ref: arm-x-elf\7f100571
-Ref: arm-x-coff\7f100791
-Ref: arm-x-aout\7f100993
-Ref: avr\7f101115
-Ref: bfin\7f101799
-Ref: cris\7f102041
-Ref: crx\7f102857
-Ref: dos\7f103520
-Ref: x-x-freebsd\7f103843
-Ref: h8300-hms\7f106226
-Ref: hppa-hp-hpux\7f106578
-Ref: hppa-hp-hpux10\7f108949
-Ref: hppa-hp-hpux11\7f109582
-Ref: x-x-linux-gnu\7f115241
-Ref: ix86-x-linux\7f115434
-Ref: ix86-x-solaris210\7f115747
-Ref: ia64-x-linux\7f116133
-Ref: ia64-x-hpux\7f116903
-Ref: x-ibm-aix\7f117458
-Ref: iq2000-x-elf\7f123441
-Ref: m32c-x-elf\7f123581
-Ref: m32r-x-elf\7f123683
-Ref: m6811-elf\7f123785
-Ref: m6812-elf\7f123935
-Ref: m68k-x-x\7f124085
-Ref: m68k-x-uclinux\7f125090
-Ref: mips-x-x\7f125453
-Ref: mips-sgi-irix5\7f128130
-Ref: mips-sgi-irix6\7f129078
-Ref: powerpc-x-x\7f131885
-Ref: powerpc-x-darwin\7f132090
-Ref: powerpc-x-elf\7f132637
-Ref: powerpc-x-linux-gnu\7f132722
-Ref: powerpc-x-netbsd\7f132817
-Ref: powerpc-x-eabisim\7f132905
-Ref: powerpc-x-eabi\7f133031
-Ref: powerpcle-x-elf\7f133107
-Ref: powerpcle-x-eabisim\7f133199
-Ref: powerpcle-x-eabi\7f133332
-Ref: s390-x-linux\7f133415
-Ref: s390x-x-linux\7f133487
-Ref: s390x-ibm-tpf\7f133574
-Ref: x-x-solaris2\7f133705
-Ref: sparc-sun-solaris2\7f137582
-Ref: sparc-sun-solaris27\7f140303
-Ref: sparc-x-linux\7f142767
-Ref: sparc64-x-solaris2\7f142992
-Ref: sparcv9-x-solaris2\7f143637
-Ref: x-x-vxworks\7f143722
-Ref: x86-64-x-x\7f145244
-Ref: xtensa-x-elf\7f145572
-Ref: xtensa-x-linux\7f146243
-Ref: windows\7f146584
-Ref: x-x-cygwin\7f148539
-Ref: x-x-interix\7f148809
-Ref: x-x-mingw32\7f149175
-Ref: os2\7f149401
-Ref: older\7f149592
-Ref: elf\7f151709
-Node: Old\7f151967
-Node: Configurations\7f155104
-Node: GNU Free Documentation License\7f159086
-Node: Concept Index\7f181502
+Node: Top\7f1958
+Node: Installing GCC\7f2516
+Node: Prerequisites\7f4031
+Node: Downloading the source\7f13036
+Node: Configuration\7f14957
+Ref: with-gnu-as\7f29533
+Ref: with-as\7f30431
+Ref: with-gnu-ld\7f31844
+Node: Building\7f69397
+Node: Testing\7f81340
+Node: Final install\7f89120
+Node: Binaries\7f94350
+Node: Specific\7f96323
+Ref: alpha-x-x\7f96829
+Ref: alpha-dec-osf\7f97318
+Ref: arc-x-elf\7f100441
+Ref: arm-x-elf\7f100541
+Ref: arm-x-coff\7f100761
+Ref: arm-x-aout\7f100963
+Ref: avr\7f101085
+Ref: bfin\7f101769
+Ref: cris\7f102011
+Ref: crx\7f102827
+Ref: dos\7f103490
+Ref: x-x-freebsd\7f103813
+Ref: h8300-hms\7f106196
+Ref: hppa-hp-hpux\7f106548
+Ref: hppa-hp-hpux10\7f108919
+Ref: hppa-hp-hpux11\7f109552
+Ref: x-x-linux-gnu\7f115211
+Ref: ix86-x-linux\7f115404
+Ref: ix86-x-solaris210\7f115717
+Ref: ia64-x-linux\7f116103
+Ref: ia64-x-hpux\7f116873
+Ref: x-ibm-aix\7f117428
+Ref: iq2000-x-elf\7f123411
+Ref: m32c-x-elf\7f123551
+Ref: m32r-x-elf\7f123653
+Ref: m6811-elf\7f123755
+Ref: m6812-elf\7f123905
+Ref: m68k-x-x\7f124055
+Ref: m68k-x-uclinux\7f125060
+Ref: mips-x-x\7f125423
+Ref: mips-sgi-irix5\7f128100
+Ref: mips-sgi-irix6\7f129048
+Ref: powerpc-x-x\7f131855
+Ref: powerpc-x-darwin\7f132060
+Ref: powerpc-x-elf\7f132607
+Ref: powerpc-x-linux-gnu\7f132692
+Ref: powerpc-x-netbsd\7f132787
+Ref: powerpc-x-eabisim\7f132875
+Ref: powerpc-x-eabi\7f133001
+Ref: powerpcle-x-elf\7f133077
+Ref: powerpcle-x-eabisim\7f133169
+Ref: powerpcle-x-eabi\7f133302
+Ref: s390-x-linux\7f133385
+Ref: s390x-x-linux\7f133457
+Ref: s390x-ibm-tpf\7f133544
+Ref: x-x-solaris2\7f133675
+Ref: sparc-sun-solaris2\7f137552
+Ref: sparc-sun-solaris27\7f140273
+Ref: sparc-x-linux\7f142737
+Ref: sparc64-x-solaris2\7f142962
+Ref: sparcv9-x-solaris2\7f143607
+Ref: x-x-vxworks\7f143692
+Ref: x86-64-x-x\7f145214
+Ref: xtensa-x-elf\7f145542
+Ref: xtensa-x-linux\7f146213
+Ref: windows\7f146554
+Ref: x-x-cygwin\7f148509
+Ref: x-x-interix\7f148779
+Ref: x-x-mingw32\7f149145
+Ref: os2\7f149371
+Ref: older\7f149562
+Ref: elf\7f151679
+Node: Old\7f151937
+Node: Configurations\7f155074
+Node: GNU Free Documentation License\7f159056
+Node: Concept Index\7f181472
 \1f
 End Tag Table
index fae4b9b..a16cb5d 100644 (file)
@@ -1,5 +1,5 @@
 This is doc/gccint.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gcc-4.4.0/gcc/doc/gccint.texi.
+../../../../android-toolchain/gcc-4.4.0/gcc/doc/gccint.texi.
 
  Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
@@ -24843,6 +24843,13 @@ expressions that refer to static variables, such as the `target_flags'.
      One use of this macro is to increase alignment of medium-size data
      to make it all fit in fewer cache lines.
 
+ -- Macro: MINIMUM_ALIGNMENT (EXP, MODE, ALIGN)
+     If defined, a C expression to compute the minimum required
+     alignment for dynamic stack realignment purposes for EXP (a type
+     or decl), MODE, assuming normal alignment ALIGN.
+
+     If this macro is not defined, then ALIGN will be used.
+
  -- Macro: EMPTY_FIELD_BOUNDARY
      Alignment in bits to be given to a structure bit-field that
      follows an empty field such as `int : 0;'.
@@ -40774,7 +40781,7 @@ Concept Index
 * BIT_IOR_EXPR:                          Expression trees.   (line    6)
 * BIT_NOT_EXPR:                          Expression trees.   (line    6)
 * BIT_XOR_EXPR:                          Expression trees.   (line    6)
-* BITFIELD_NBYTES_LIMITED:               Storage Layout.     (line  375)
+* BITFIELD_NBYTES_LIMITED:               Storage Layout.     (line  382)
 * BITS_BIG_ENDIAN:                       Storage Layout.     (line   12)
 * BITS_BIG_ENDIAN, effect on sign_extract: Bit-Fields.       (line    8)
 * BITS_PER_UNIT:                         Storage Layout.     (line   52)
@@ -41358,7 +41365,7 @@ Concept Index
 * EMIT_MODE_SET:                         Mode Switching.     (line   74)
 * Empty Statements:                      Empty Statements.   (line    6)
 * EMPTY_CLASS_EXPR:                      Function Bodies.    (line    6)
-* EMPTY_FIELD_BOUNDARY:                  Storage Layout.     (line  288)
+* EMPTY_FIELD_BOUNDARY:                  Storage Layout.     (line  295)
 * Emulated TLS:                          Emulated TLS.       (line    6)
 * ENABLE_EXECUTE_STACK:                  Trampolines.        (line  110)
 * enabled:                               Disable Insn Alternatives.
@@ -42207,7 +42214,7 @@ Concept Index
 * language-independent intermediate representation: Parsing pass.
                                                              (line   14)
 * large return values:                   Aggregate Return.   (line    6)
-* LARGEST_EXPONENT_IS_NORMAL:            Storage Layout.     (line  462)
+* LARGEST_EXPONENT_IS_NORMAL:            Storage Layout.     (line  469)
 * LAST_STACK_REG:                        Stack Registers.    (line   27)
 * LAST_VIRTUAL_REGISTER:                 Regs and Memory.    (line   51)
 * lceilMN2:                              Standard Names.     (line  597)
@@ -42355,7 +42362,7 @@ Concept Index
 * matherr:                               Library Calls.      (line   58)
 * MAX_BITS_PER_WORD:                     Storage Layout.     (line   61)
 * MAX_CONDITIONAL_EXECUTE:               Misc.               (line  580)
-* MAX_FIXED_MODE_SIZE:                   Storage Layout.     (line  413)
+* MAX_FIXED_MODE_SIZE:                   Storage Layout.     (line  420)
 * MAX_MOVE_MAX:                          Misc.               (line  120)
 * MAX_OFILE_ALIGNMENT:                   Storage Layout.     (line  216)
 * MAX_REGS_PER_ADDRESS:                  Addressing Modes.   (line   42)
@@ -42392,7 +42399,7 @@ Concept Index
 * MEM_SCALAR_P:                          Flags.              (line   85)
 * MEM_SIZE:                              Special Accessors.  (line   31)
 * MEM_VOLATILE_P:                        Flags.              (line   94)
-* MEMBER_TYPE_FORCES_BLK:                Storage Layout.     (line  393)
+* MEMBER_TYPE_FORCES_BLK:                Storage Layout.     (line  400)
 * memory reference, nonoffsettable:      Simple Constraints. (line  246)
 * memory references in constraints:      Simple Constraints. (line   17)
 * memory_barrier instruction pattern:    Standard Names.     (line 1413)
@@ -42401,6 +42408,7 @@ Concept Index
                                                              (line   58)
 * METHOD_TYPE:                           Types.              (line    6)
 * MIN_UNITS_PER_WORD:                    Storage Layout.     (line   71)
+* MINIMUM_ALIGNMENT:                     Storage Layout.     (line  288)
 * MINIMUM_ATOMIC_ALIGNMENT:              Storage Layout.     (line  187)
 * minM3 instruction pattern:             Standard Names.     (line  234)
 * minus:                                 Arithmetic.         (line   36)
@@ -42644,7 +42652,7 @@ Concept Index
 * pc, RTL sharing:                       Sharing.            (line   25)
 * PC_REGNUM:                             Register Basics.    (line  112)
 * pc_rtx:                                Regs and Memory.    (line  366)
-* PCC_BITFIELD_TYPE_MATTERS:             Storage Layout.     (line  307)
+* PCC_BITFIELD_TYPE_MATTERS:             Storage Layout.     (line  314)
 * PCC_STATIC_STRUCT_RETURN:              Aggregate Return.   (line   64)
 * PDImode:                               Machine Modes.      (line   40)
 * peephole optimization, RTL representation: Side Effects.   (line  238)
@@ -42950,8 +42958,8 @@ Concept Index
 * rotrM3 instruction pattern:            Standard Names.     (line  441)
 * ROUND_DIV_EXPR:                        Expression trees.   (line    6)
 * ROUND_MOD_EXPR:                        Expression trees.   (line    6)
-* ROUND_TOWARDS_ZERO:                    Storage Layout.     (line  453)
-* ROUND_TYPE_ALIGN:                      Storage Layout.     (line  404)
+* ROUND_TOWARDS_ZERO:                    Storage Layout.     (line  460)
+* ROUND_TYPE_ALIGN:                      Storage Layout.     (line  411)
 * roundM2 instruction pattern:           Standard Names.     (line  548)
 * RSHIFT_EXPR:                           Expression trees.   (line    6)
 * RTL addition:                          Arithmetic.         (line   14)
@@ -43151,8 +43159,8 @@ Concept Index
 * stack_protect_test instruction pattern: Standard Names.    (line 1546)
 * STACK_PUSH_CODE:                       Frame Layout.       (line   17)
 * STACK_REGS:                            Stack Registers.    (line   20)
-* STACK_SAVEAREA_MODE:                   Storage Layout.     (line  420)
-* STACK_SIZE_MODE:                       Storage Layout.     (line  432)
+* STACK_SAVEAREA_MODE:                   Storage Layout.     (line  427)
+* STACK_SIZE_MODE:                       Storage Layout.     (line  439)
 * STACK_SLOT_ALIGNMENT:                  Storage Layout.     (line  265)
 * standard pattern names:                Standard Names.     (line    6)
 * STANDARD_INCLUDE_COMPONENT:            Driver.             (line  425)
@@ -43186,14 +43194,14 @@ Concept Index
 * STORE_FLAG_VALUE:                      Misc.               (line  216)
 * store_multiple instruction pattern:    Standard Names.     (line  160)
 * strcpy:                                Storage Layout.     (line  235)
-* STRICT_ALIGNMENT:                      Storage Layout.     (line  302)
+* STRICT_ALIGNMENT:                      Storage Layout.     (line  309)
 * strict_low_part:                       RTL Declarations.   (line    9)
 * strict_memory_address_p:               Addressing Modes.   (line  179)
 * STRING_CST:                            Expression trees.   (line    6)
 * STRING_POOL_ADDRESS_P:                 Flags.              (line  183)
 * strlenM instruction pattern:           Standard Names.     (line  778)
 * structure value address:               Aggregate Return.   (line    6)
-* STRUCTURE_SIZE_BOUNDARY:               Storage Layout.     (line  294)
+* STRUCTURE_SIZE_BOUNDARY:               Storage Layout.     (line  301)
 * structures, returning:                 Interface.          (line   10)
 * subM3 instruction pattern:             Standard Names.     (line  222)
 * SUBOBJECT:                             Function Bodies.    (line    6)
@@ -43292,7 +43300,7 @@ Concept Index
 * target makefile fragment:              Target Fragment.    (line    6)
 * target specifications:                 Run-time Target.    (line    6)
 * TARGET_ADDRESS_COST:                   Costs.              (line  236)
-* TARGET_ALIGN_ANON_BITFIELD:            Storage Layout.     (line  379)
+* TARGET_ALIGN_ANON_BITFIELD:            Storage Layout.     (line  386)
 * TARGET_ALLOCATE_INITIAL_VALUE:         Misc.               (line  720)
 * TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS:  Misc.               (line  953)
 * TARGET_ARG_PARTIAL_BYTES:              Register Arguments. (line   83)
@@ -43375,7 +43383,7 @@ Concept Index
 * TARGET_CXX_LIBRARY_RTTI_COMDAT:        C++ ABI.            (line   69)
 * TARGET_CXX_USE_AEABI_ATEXIT:           C++ ABI.            (line   74)
 * TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT:  C++ ABI.            (line   80)
-* TARGET_DECIMAL_FLOAT_SUPPORTED_P:      Storage Layout.     (line  506)
+* TARGET_DECIMAL_FLOAT_SUPPORTED_P:      Storage Layout.     (line  513)
 * TARGET_DECLSPEC:                       Target Attributes.  (line   64)
 * TARGET_DEFAULT_PACK_STRUCT:            Misc.               (line  482)
 * TARGET_DEFAULT_SHORT_ENUMS:            Type Layout.        (line  160)
@@ -43405,13 +43413,13 @@ Concept Index
 * TARGET_EXECUTABLE_SUFFIX:              Misc.               (line  769)
 * TARGET_EXPAND_BUILTIN:                 Misc.               (line  665)
 * TARGET_EXPAND_BUILTIN_SAVEREGS:        Varargs.            (line   92)
-* TARGET_EXPAND_TO_RTL_HOOK:             Storage Layout.     (line  512)
+* TARGET_EXPAND_TO_RTL_HOOK:             Storage Layout.     (line  519)
 * TARGET_EXPR:                           Expression trees.   (line    6)
 * TARGET_EXTRA_INCLUDES:                 Misc.               (line  841)
 * TARGET_EXTRA_LIVE_ON_ENTRY:            Tail Calls.         (line   21)
 * TARGET_EXTRA_PRE_INCLUDES:             Misc.               (line  848)
 * TARGET_FIXED_CONDITION_CODE_REGS:      Condition Code.     (line  142)
-* TARGET_FIXED_POINT_SUPPORTED_P:        Storage Layout.     (line  509)
+* TARGET_FIXED_POINT_SUPPORTED_P:        Storage Layout.     (line  516)
 * target_flags:                          Run-time Target.    (line   52)
 * TARGET_FLT_EVAL_METHOD:                Type Layout.        (line  141)
 * TARGET_FN_ABI_VA_LIST:                 Register Arguments. (line  268)
@@ -43438,18 +43446,18 @@ Concept Index
                                                              (line   99)
 * TARGET_INIT_LIBFUNCS:                  Library Calls.      (line   16)
 * TARGET_INSERT_ATTRIBUTES:              Target Attributes.  (line   73)
-* TARGET_INSTANTIATE_DECLS:              Storage Layout.     (line  520)
+* TARGET_INSTANTIATE_DECLS:              Storage Layout.     (line  527)
 * TARGET_INVALID_BINARY_OP:              Misc.               (line  921)
 * TARGET_INVALID_CONVERSION:             Misc.               (line  908)
 * TARGET_INVALID_UNARY_OP:               Misc.               (line  914)
 * TARGET_IRA_COVER_CLASSES:              Register Classes.   (line  496)
 * TARGET_LIB_INT_CMP_BIASED:             Library Calls.      (line   35)
-* TARGET_LIBGCC_CMP_RETURN_MODE:         Storage Layout.     (line  441)
+* TARGET_LIBGCC_CMP_RETURN_MODE:         Storage Layout.     (line  448)
 * TARGET_LIBGCC_SDATA_SECTION:           Sections.           (line  123)
-* TARGET_LIBGCC_SHIFT_COUNT_MODE:        Storage Layout.     (line  447)
+* TARGET_LIBGCC_SHIFT_COUNT_MODE:        Storage Layout.     (line  454)
 * TARGET_MACHINE_DEPENDENT_REORG:        Misc.               (line  632)
 * TARGET_MANGLE_DECL_ASSEMBLER_NAME:     Sections.           (line  225)
-* TARGET_MANGLE_TYPE:                    Storage Layout.     (line  524)
+* TARGET_MANGLE_TYPE:                    Storage Layout.     (line  531)
 * TARGET_MD_ASM_CLOBBERS:                Misc.               (line  548)
 * TARGET_MEM_CONSTRAINT:                 Addressing Modes.   (line  100)
 * TARGET_MEM_REF:                        Expression trees.   (line    6)
@@ -43457,12 +43465,12 @@ Concept Index
 * TARGET_MERGE_TYPE_ATTRIBUTES:          Target Attributes.  (line   31)
 * TARGET_MIN_DIVISIONS_FOR_RECIP_MUL:    Misc.               (line  106)
 * TARGET_MODE_REP_EXTENDED:              Misc.               (line  191)
-* TARGET_MS_BITFIELD_LAYOUT_P:           Storage Layout.     (line  479)
+* TARGET_MS_BITFIELD_LAYOUT_P:           Storage Layout.     (line  486)
 * TARGET_MUST_PASS_IN_STACK:             Register Arguments. (line   62)
 * TARGET_MUST_PASS_IN_STACK, and FUNCTION_ARG: Register Arguments.
                                                              (line   52)
 * TARGET_N_FORMAT_TYPES:                 Misc.               (line  873)
-* TARGET_NARROW_VOLATILE_BITFIELD:       Storage Layout.     (line  385)
+* TARGET_NARROW_VOLATILE_BITFIELD:       Storage Layout.     (line  392)
 * TARGET_OBJECT_SUFFIX:                  Misc.               (line  764)
 * TARGET_OBJFMT_CPP_BUILTINS:            Run-time Target.    (line   46)
 * TARGET_OPTF:                           Misc.               (line  855)
@@ -43550,7 +43558,7 @@ Concept Index
 * TARGET_VALID_OPTION_ATTRIBUTE_P:       Target Attributes.  (line   93)
 * TARGET_VALID_POINTER_MODE:             Register Arguments. (line  285)
 * TARGET_VECTOR_MODE_SUPPORTED_P:        Register Arguments. (line  303)
-* TARGET_VECTOR_OPAQUE_P:                Storage Layout.     (line  472)
+* TARGET_VECTOR_OPAQUE_P:                Storage Layout.     (line  479)
 * TARGET_VECTORIZE_BUILTIN_CONVERSION:   Addressing Modes.   (line  300)
 * TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD: Addressing Modes.  (line  249)
 * TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN: Addressing Modes. (line  275)
@@ -43938,317 +43946,317 @@ Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f2081
-Node: Contributing\7f5164
-Node: Portability\7f5905
-Node: Interface\7f7693
-Node: Libgcc\7f10733
-Node: Integer library routines\7f12574
-Node: Soft float library routines\7f19413
-Node: Decimal float library routines\7f31350
-Node: Fixed-point fractional library routines\7f47107
-Node: Exception handling routines\7f147505
-Node: Miscellaneous routines\7f148612
-Node: Languages\7f148995
-Node: Source Tree\7f150542
-Node: Configure Terms\7f151161
-Node: Top Level\7f154119
-Node: gcc Directory\7f156889
-Node: Subdirectories\7f157858
-Node: Configuration\7f159708
-Node: Config Fragments\7f160428
-Node: System Config\7f161657
-Node: Configuration Files\7f162593
-Node: Build\7f165168
-Node: Makefile\7f165580
-Ref: Makefile-Footnote-1\7f172298
-Ref: Makefile-Footnote-2\7f172443
-Node: Library Files\7f172515
-Node: Headers\7f173077
-Node: Documentation\7f175160
-Node: Texinfo Manuals\7f176019
-Node: Man Page Generation\7f178357
-Node: Miscellaneous Docs\7f180272
-Node: Front End\7f181571
-Node: Front End Directory\7f185272
-Node: Front End Config\7f190462
-Node: Back End\7f193376
-Node: Testsuites\7f197053
-Node: Test Idioms\7f197917
-Node: Test Directives\7f201318
-Node: Ada Tests\7f213382
-Node: C Tests\7f214674
-Node: libgcj Tests\7f219029
-Node: gcov Testing\7f220161
-Node: profopt Testing\7f223145
-Node: compat Testing\7f224588
-Node: Torture Tests\7f228832
-Node: Options\7f230464
-Node: Option file format\7f230905
-Node: Option properties\7f233654
-Node: Passes\7f239710
-Node: Parsing pass\7f240452
-Node: Gimplification pass\7f243980
-Node: Pass manager\7f245807
-Node: Tree-SSA passes\7f247290
-Node: RTL passes\7f269121
-Node: Trees\7f281706
-Node: Deficiencies\7f284432
-Node: Tree overview\7f284669
-Node: Macros and Functions\7f288792
-Node: Identifiers\7f288938
-Node: Containers\7f290463
-Node: Types\7f291618
-Node: Scopes\7f307321
-Node: Namespaces\7f308083
-Node: Classes\7f310895
-Node: Declarations\7f315652
-Node: Working with declarations\7f316147
-Node: Internal structure\7f322604
-Node: Current structure hierarchy\7f322986
-Node: Adding new DECL node types\7f325078
-Node: Functions\7f329149
-Node: Function Basics\7f331552
-Node: Function Bodies\7f339282
-Node: Attributes\7f350524
-Node: Expression trees\7f351765
-Node: RTL\7f394374
-Node: RTL Objects\7f396473
-Node: RTL Classes\7f400347
-Node: Accessors\7f405299
-Node: Special Accessors\7f407693
-Node: Flags\7f412911
-Node: Machine Modes\7f428779
-Node: Constants\7f441095
-Node: Regs and Memory\7f447124
-Node: Arithmetic\7f465025
-Node: Comparisons\7f474545
-Node: Bit-Fields\7f478837
-Node: Vector Operations\7f480389
-Node: Conversions\7f482015
-Node: RTL Declarations\7f486513
-Node: Side Effects\7f487334
-Node: Incdec\7f503657
-Node: Assembler\7f506992
-Node: Insns\7f508524
-Node: Calls\7f532413
-Node: Sharing\7f535006
-Node: Reading RTL\7f538116
-Node: GENERIC\7f539106
-Node: Statements\7f540743
-Node: Blocks\7f541188
-Node: Statement Sequences\7f542441
-Node: Empty Statements\7f542774
-Node: Jumps\7f543348
-Node: Cleanups\7f544001
-Node: GIMPLE\7f545754
-Node: Tuple representation\7f549375
-Node: GIMPLE instruction set\7f558030
-Node: GIMPLE Exception Handling\7f559698
-Node: Temporaries\7f561613
-Ref: Temporaries-Footnote-1\7f562932
-Node: Operands\7f562995
-Node: Compound Expressions\7f563769
-Node: Compound Lvalues\7f564003
-Node: Conditional Expressions\7f564769
-Node: Logical Operators\7f565439
-Node: Manipulating GIMPLE statements\7f571530
-Node: Tuple specific accessors\7f577458
-Node: `GIMPLE_ASM'\7f578291
-Node: `GIMPLE_ASSIGN'\7f580896
-Node: `GIMPLE_BIND'\7f584842
-Node: `GIMPLE_CALL'\7f586649
-Node: `GIMPLE_CATCH'\7f590908
-Node: `GIMPLE_CHANGE_DYNAMIC_TYPE'\7f592066
-Node: `GIMPLE_COND'\7f593399
-Node: `GIMPLE_EH_FILTER'\7f596205
-Node: `GIMPLE_LABEL'\7f597691
-Node: `GIMPLE_NOP'\7f598666
-Node: `GIMPLE_OMP_ATOMIC_LOAD'\7f599035
-Node: `GIMPLE_OMP_ATOMIC_STORE'\7f599945
-Node: `GIMPLE_OMP_CONTINUE'\7f600584
-Node: `GIMPLE_OMP_CRITICAL'\7f601934
-Node: `GIMPLE_OMP_FOR'\7f602870
-Node: `GIMPLE_OMP_MASTER'\7f606380
-Node: `GIMPLE_OMP_ORDERED'\7f606763
-Node: `GIMPLE_OMP_PARALLEL'\7f607163
-Node: `GIMPLE_OMP_RETURN'\7f609932
-Node: `GIMPLE_OMP_SECTION'\7f610582
-Node: `GIMPLE_OMP_SECTIONS'\7f611248
-Node: `GIMPLE_OMP_SINGLE'\7f612852
-Node: `GIMPLE_PHI'\7f613788
-Node: `GIMPLE_RESX'\7f615201
-Node: `GIMPLE_RETURN'\7f615920
-Node: `GIMPLE_SWITCH'\7f616488
-Node: `GIMPLE_TRY'\7f618618
-Node: `GIMPLE_WITH_CLEANUP_EXPR'\7f620408
-Node: GIMPLE sequences\7f621291
-Node: Sequence iterators\7f624497
-Node: Adding a new GIMPLE statement code\7f632952
-Node: Statement and operand traversals\7f634232
-Node: Tree SSA\7f636842
-Node: Annotations\7f638571
-Node: SSA Operands\7f639097
-Node: SSA\7f653628
-Node: Alias analysis\7f665919
-Node: Loop Analysis and Representation\7f673375
-Node: Loop representation\7f674556
-Node: Loop querying\7f681476
-Node: Loop manipulation\7f684309
-Node: LCSSA\7f686677
-Node: Scalar evolutions\7f688749
-Node: loop-iv\7f691993
-Node: Number of iterations\7f693919
-Node: Dependency analysis\7f696728
-Node: Lambda\7f703096
-Node: Omega\7f704766
-Node: Control Flow\7f706331
-Node: Basic Blocks\7f707331
-Node: Edges\7f711899
-Node: Profile information\7f720461
-Node: Maintaining the CFG\7f725147
-Node: Liveness information\7f732029
-Node: Machine Desc\7f734156
-Node: Overview\7f736624
-Node: Patterns\7f738665
-Node: Example\7f742103
-Node: RTL Template\7f743538
-Node: Output Template\7f754193
-Node: Output Statement\7f758159
-Node: Predicates\7f762121
-Node: Machine-Independent Predicates\7f765039
-Node: Defining Predicates\7f769671
-Node: Constraints\7f775636
-Node: Simple Constraints\7f776884
-Node: Multi-Alternative\7f789090
-Node: Class Preferences\7f791931
-Node: Modifiers\7f792823
-Node: Machine Constraints\7f796955
-Node: Disable Insn Alternatives\7f829678
-Node: Define Constraints\7f832571
-Node: C Constraint Interface\7f839351
-Node: Standard Names\7f842992
-Ref: shift patterns\7f861920
-Ref: prologue instruction pattern\7f902938
-Ref: epilogue instruction pattern\7f903431
-Node: Pattern Ordering\7f912974
-Node: Dependent Patterns\7f914210
-Node: Jump Patterns\7f917024
-Node: Looping Patterns\7f922720
-Node: Insn Canonicalizations\7f927448
-Node: Expander Definitions\7f931832
-Node: Insn Splitting\7f939950
-Node: Including Patterns\7f949553
-Node: Peephole Definitions\7f951333
-Node: define_peephole\7f952586
-Node: define_peephole2\7f958917
-Node: Insn Attributes\7f961984
-Node: Defining Attributes\7f963090
-Node: Expressions\7f965610
-Node: Tagging Insns\7f972212
-Node: Attr Example\7f976565
-Node: Insn Lengths\7f978939
-Node: Constant Attributes\7f981998
-Node: Delay Slots\7f983167
-Node: Processor pipeline description\7f986391
-Ref: Processor pipeline description-Footnote-1\7f1003757
-Node: Conditional Execution\7f1004079
-Node: Constant Definitions\7f1006932
-Node: Iterators\7f1008527
-Node: Mode Iterators\7f1008974
-Node: Defining Mode Iterators\7f1009952
-Node: Substitutions\7f1011446
-Node: Examples\7f1013687
-Node: Code Iterators\7f1015135
-Node: Target Macros\7f1017392
-Node: Target Structure\7f1020415
-Node: Driver\7f1021684
-Node: Run-time Target\7f1045365
-Node: Per-Function Data\7f1052489
-Node: Storage Layout\7f1055252
-Node: Type Layout\7f1080368
-Node: Registers\7f1093325
-Node: Register Basics\7f1094299
-Node: Allocation Order\7f1099866
-Node: Values in Registers\7f1101887
-Node: Leaf Functions\7f1109376
-Node: Stack Registers\7f1112234
-Node: Register Classes\7f1113350
-Node: Old Constraints\7f1140062
-Node: Stack and Calling\7f1147213
-Node: Frame Layout\7f1147747
-Node: Exception Handling\7f1158593
-Node: Stack Checking\7f1164971
-Node: Frame Registers\7f1169358
-Node: Elimination\7f1175964
-Node: Stack Arguments\7f1179995
-Node: Register Arguments\7f1186798
-Node: Scalar Return\7f1202251
-Node: Aggregate Return\7f1207797
-Node: Caller Saves\7f1211456
-Node: Function Entry\7f1212634
-Node: Profiling\7f1225249
-Node: Tail Calls\7f1226948
-Node: Stack Smashing Protection\7f1228315
-Node: Varargs\7f1229427
-Node: Trampolines\7f1237387
-Node: Library Calls\7f1244053
-Node: Addressing Modes\7f1248903
-Node: Anchored Addresses\7f1264821
-Node: Condition Code\7f1267482
-Node: Costs\7f1275771
-Node: Scheduling\7f1288870
-Node: Sections\7f1307431
-Node: PIC\7f1322081
-Node: Assembler Format\7f1324071
-Node: File Framework\7f1325209
-Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS\7f1330115
-Node: Data Output\7f1333381
-Node: Uninitialized Data\7f1341140
-Node: Label Output\7f1346211
-Node: Initialization\7f1367878
-Node: Macros for Initialization\7f1373840
-Node: Instruction Output\7f1380292
-Node: Dispatch Tables\7f1389286
-Node: Exception Region Output\7f1393081
-Node: Alignment Output\7f1398841
-Node: Debugging Info\7f1403004
-Node: All Debuggers\7f1403674
-Node: DBX Options\7f1406529
-Node: DBX Hooks\7f1411978
-Node: File Names and DBX\7f1413904
-Node: SDB and DWARF\7f1416015
-Node: VMS Debug\7f1420007
-Node: Floating Point\7f1420577
-Node: Mode Switching\7f1425400
-Node: Target Attributes\7f1429326
-Node: Emulated TLS\7f1436090
-Node: MIPS Coprocessors\7f1439480
-Node: PCH Target\7f1441049
-Node: C++ ABI\7f1442570
-Node: Misc\7f1447189
-Ref: TARGET_SHIFT_TRUNCATION_MASK\7f1454560
-Node: Host Config\7f1495505
-Node: Host Common\7f1496573
-Node: Filesystem\7f1498952
-Node: Host Misc\7f1503067
-Node: Fragments\7f1505206
-Node: Target Fragment\7f1506401
-Node: Host Fragment\7f1512291
-Node: Collect2\7f1512531
-Node: Header Dirs\7f1515074
-Node: Type Information\7f1516497
-Node: GTY Options\7f1518788
-Node: GGC Roots\7f1529468
-Node: Files\7f1530188
-Node: Invoking the garbage collector\7f1532938
-Node: Plugins\7f1533991
-Node: Funding\7f1544356
-Node: GNU Project\7f1546843
-Node: Copying\7f1547492
-Node: GNU Free Documentation License\7f1585023
-Node: Contributors\7f1607432
-Node: Option Index\7f1643762
-Node: Concept Index\7f1644347
+Node: Top\7f2051
+Node: Contributing\7f5134
+Node: Portability\7f5875
+Node: Interface\7f7663
+Node: Libgcc\7f10703
+Node: Integer library routines\7f12544
+Node: Soft float library routines\7f19383
+Node: Decimal float library routines\7f31320
+Node: Fixed-point fractional library routines\7f47077
+Node: Exception handling routines\7f147475
+Node: Miscellaneous routines\7f148582
+Node: Languages\7f148965
+Node: Source Tree\7f150512
+Node: Configure Terms\7f151131
+Node: Top Level\7f154089
+Node: gcc Directory\7f156859
+Node: Subdirectories\7f157828
+Node: Configuration\7f159678
+Node: Config Fragments\7f160398
+Node: System Config\7f161627
+Node: Configuration Files\7f162563
+Node: Build\7f165138
+Node: Makefile\7f165550
+Ref: Makefile-Footnote-1\7f172268
+Ref: Makefile-Footnote-2\7f172413
+Node: Library Files\7f172485
+Node: Headers\7f173047
+Node: Documentation\7f175130
+Node: Texinfo Manuals\7f175989
+Node: Man Page Generation\7f178327
+Node: Miscellaneous Docs\7f180242
+Node: Front End\7f181541
+Node: Front End Directory\7f185242
+Node: Front End Config\7f190432
+Node: Back End\7f193346
+Node: Testsuites\7f197023
+Node: Test Idioms\7f197887
+Node: Test Directives\7f201288
+Node: Ada Tests\7f213352
+Node: C Tests\7f214644
+Node: libgcj Tests\7f218999
+Node: gcov Testing\7f220131
+Node: profopt Testing\7f223115
+Node: compat Testing\7f224558
+Node: Torture Tests\7f228802
+Node: Options\7f230434
+Node: Option file format\7f230875
+Node: Option properties\7f233624
+Node: Passes\7f239680
+Node: Parsing pass\7f240422
+Node: Gimplification pass\7f243950
+Node: Pass manager\7f245777
+Node: Tree-SSA passes\7f247260
+Node: RTL passes\7f269091
+Node: Trees\7f281676
+Node: Deficiencies\7f284402
+Node: Tree overview\7f284639
+Node: Macros and Functions\7f288762
+Node: Identifiers\7f288908
+Node: Containers\7f290433
+Node: Types\7f291588
+Node: Scopes\7f307291
+Node: Namespaces\7f308053
+Node: Classes\7f310865
+Node: Declarations\7f315622
+Node: Working with declarations\7f316117
+Node: Internal structure\7f322574
+Node: Current structure hierarchy\7f322956
+Node: Adding new DECL node types\7f325048
+Node: Functions\7f329119
+Node: Function Basics\7f331522
+Node: Function Bodies\7f339252
+Node: Attributes\7f350494
+Node: Expression trees\7f351735
+Node: RTL\7f394344
+Node: RTL Objects\7f396443
+Node: RTL Classes\7f400317
+Node: Accessors\7f405269
+Node: Special Accessors\7f407663
+Node: Flags\7f412881
+Node: Machine Modes\7f428749
+Node: Constants\7f441065
+Node: Regs and Memory\7f447094
+Node: Arithmetic\7f464995
+Node: Comparisons\7f474515
+Node: Bit-Fields\7f478807
+Node: Vector Operations\7f480359
+Node: Conversions\7f481985
+Node: RTL Declarations\7f486483
+Node: Side Effects\7f487304
+Node: Incdec\7f503627
+Node: Assembler\7f506962
+Node: Insns\7f508494
+Node: Calls\7f532383
+Node: Sharing\7f534976
+Node: Reading RTL\7f538086
+Node: GENERIC\7f539076
+Node: Statements\7f540713
+Node: Blocks\7f541158
+Node: Statement Sequences\7f542411
+Node: Empty Statements\7f542744
+Node: Jumps\7f543318
+Node: Cleanups\7f543971
+Node: GIMPLE\7f545724
+Node: Tuple representation\7f549345
+Node: GIMPLE instruction set\7f558000
+Node: GIMPLE Exception Handling\7f559668
+Node: Temporaries\7f561583
+Ref: Temporaries-Footnote-1\7f562902
+Node: Operands\7f562965
+Node: Compound Expressions\7f563739
+Node: Compound Lvalues\7f563973
+Node: Conditional Expressions\7f564739
+Node: Logical Operators\7f565409
+Node: Manipulating GIMPLE statements\7f571500
+Node: Tuple specific accessors\7f577428
+Node: `GIMPLE_ASM'\7f578261
+Node: `GIMPLE_ASSIGN'\7f580866
+Node: `GIMPLE_BIND'\7f584812
+Node: `GIMPLE_CALL'\7f586619
+Node: `GIMPLE_CATCH'\7f590878
+Node: `GIMPLE_CHANGE_DYNAMIC_TYPE'\7f592036
+Node: `GIMPLE_COND'\7f593369
+Node: `GIMPLE_EH_FILTER'\7f596175
+Node: `GIMPLE_LABEL'\7f597661
+Node: `GIMPLE_NOP'\7f598636
+Node: `GIMPLE_OMP_ATOMIC_LOAD'\7f599005
+Node: `GIMPLE_OMP_ATOMIC_STORE'\7f599915
+Node: `GIMPLE_OMP_CONTINUE'\7f600554
+Node: `GIMPLE_OMP_CRITICAL'\7f601904
+Node: `GIMPLE_OMP_FOR'\7f602840
+Node: `GIMPLE_OMP_MASTER'\7f606350
+Node: `GIMPLE_OMP_ORDERED'\7f606733
+Node: `GIMPLE_OMP_PARALLEL'\7f607133
+Node: `GIMPLE_OMP_RETURN'\7f609902
+Node: `GIMPLE_OMP_SECTION'\7f610552
+Node: `GIMPLE_OMP_SECTIONS'\7f611218
+Node: `GIMPLE_OMP_SINGLE'\7f612822
+Node: `GIMPLE_PHI'\7f613758
+Node: `GIMPLE_RESX'\7f615171
+Node: `GIMPLE_RETURN'\7f615890
+Node: `GIMPLE_SWITCH'\7f616458
+Node: `GIMPLE_TRY'\7f618588
+Node: `GIMPLE_WITH_CLEANUP_EXPR'\7f620378
+Node: GIMPLE sequences\7f621261
+Node: Sequence iterators\7f624467
+Node: Adding a new GIMPLE statement code\7f632922
+Node: Statement and operand traversals\7f634202
+Node: Tree SSA\7f636812
+Node: Annotations\7f638541
+Node: SSA Operands\7f639067
+Node: SSA\7f653598
+Node: Alias analysis\7f665889
+Node: Loop Analysis and Representation\7f673345
+Node: Loop representation\7f674526
+Node: Loop querying\7f681446
+Node: Loop manipulation\7f684279
+Node: LCSSA\7f686647
+Node: Scalar evolutions\7f688719
+Node: loop-iv\7f691963
+Node: Number of iterations\7f693889
+Node: Dependency analysis\7f696698
+Node: Lambda\7f703066
+Node: Omega\7f704736
+Node: Control Flow\7f706301
+Node: Basic Blocks\7f707301
+Node: Edges\7f711869
+Node: Profile information\7f720431
+Node: Maintaining the CFG\7f725117
+Node: Liveness information\7f731999
+Node: Machine Desc\7f734126
+Node: Overview\7f736594
+Node: Patterns\7f738635
+Node: Example\7f742073
+Node: RTL Template\7f743508
+Node: Output Template\7f754163
+Node: Output Statement\7f758129
+Node: Predicates\7f762091
+Node: Machine-Independent Predicates\7f765009
+Node: Defining Predicates\7f769641
+Node: Constraints\7f775606
+Node: Simple Constraints\7f776854
+Node: Multi-Alternative\7f789060
+Node: Class Preferences\7f791901
+Node: Modifiers\7f792793
+Node: Machine Constraints\7f796925
+Node: Disable Insn Alternatives\7f829648
+Node: Define Constraints\7f832541
+Node: C Constraint Interface\7f839321
+Node: Standard Names\7f842962
+Ref: shift patterns\7f861890
+Ref: prologue instruction pattern\7f902908
+Ref: epilogue instruction pattern\7f903401
+Node: Pattern Ordering\7f912944
+Node: Dependent Patterns\7f914180
+Node: Jump Patterns\7f916994
+Node: Looping Patterns\7f922690
+Node: Insn Canonicalizations\7f927418
+Node: Expander Definitions\7f931802
+Node: Insn Splitting\7f939920
+Node: Including Patterns\7f949523
+Node: Peephole Definitions\7f951303
+Node: define_peephole\7f952556
+Node: define_peephole2\7f958887
+Node: Insn Attributes\7f961954
+Node: Defining Attributes\7f963060
+Node: Expressions\7f965580
+Node: Tagging Insns\7f972182
+Node: Attr Example\7f976535
+Node: Insn Lengths\7f978909
+Node: Constant Attributes\7f981968
+Node: Delay Slots\7f983137
+Node: Processor pipeline description\7f986361
+Ref: Processor pipeline description-Footnote-1\7f1003727
+Node: Conditional Execution\7f1004049
+Node: Constant Definitions\7f1006902
+Node: Iterators\7f1008497
+Node: Mode Iterators\7f1008944
+Node: Defining Mode Iterators\7f1009922
+Node: Substitutions\7f1011416
+Node: Examples\7f1013657
+Node: Code Iterators\7f1015105
+Node: Target Macros\7f1017362
+Node: Target Structure\7f1020385
+Node: Driver\7f1021654
+Node: Run-time Target\7f1045335
+Node: Per-Function Data\7f1052459
+Node: Storage Layout\7f1055222
+Node: Type Layout\7f1080636
+Node: Registers\7f1093593
+Node: Register Basics\7f1094567
+Node: Allocation Order\7f1100134
+Node: Values in Registers\7f1102155
+Node: Leaf Functions\7f1109644
+Node: Stack Registers\7f1112502
+Node: Register Classes\7f1113618
+Node: Old Constraints\7f1140330
+Node: Stack and Calling\7f1147481
+Node: Frame Layout\7f1148015
+Node: Exception Handling\7f1158861
+Node: Stack Checking\7f1165239
+Node: Frame Registers\7f1169626
+Node: Elimination\7f1176232
+Node: Stack Arguments\7f1180263
+Node: Register Arguments\7f1187066
+Node: Scalar Return\7f1202519
+Node: Aggregate Return\7f1208065
+Node: Caller Saves\7f1211724
+Node: Function Entry\7f1212902
+Node: Profiling\7f1225517
+Node: Tail Calls\7f1227216
+Node: Stack Smashing Protection\7f1228583
+Node: Varargs\7f1229695
+Node: Trampolines\7f1237655
+Node: Library Calls\7f1244321
+Node: Addressing Modes\7f1249171
+Node: Anchored Addresses\7f1265089
+Node: Condition Code\7f1267750
+Node: Costs\7f1276039
+Node: Scheduling\7f1289138
+Node: Sections\7f1307699
+Node: PIC\7f1322349
+Node: Assembler Format\7f1324339
+Node: File Framework\7f1325477
+Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS\7f1330383
+Node: Data Output\7f1333649
+Node: Uninitialized Data\7f1341408
+Node: Label Output\7f1346479
+Node: Initialization\7f1368146
+Node: Macros for Initialization\7f1374108
+Node: Instruction Output\7f1380560
+Node: Dispatch Tables\7f1389554
+Node: Exception Region Output\7f1393349
+Node: Alignment Output\7f1399109
+Node: Debugging Info\7f1403272
+Node: All Debuggers\7f1403942
+Node: DBX Options\7f1406797
+Node: DBX Hooks\7f1412246
+Node: File Names and DBX\7f1414172
+Node: SDB and DWARF\7f1416283
+Node: VMS Debug\7f1420275
+Node: Floating Point\7f1420845
+Node: Mode Switching\7f1425668
+Node: Target Attributes\7f1429594
+Node: Emulated TLS\7f1436358
+Node: MIPS Coprocessors\7f1439748
+Node: PCH Target\7f1441317
+Node: C++ ABI\7f1442838
+Node: Misc\7f1447457
+Ref: TARGET_SHIFT_TRUNCATION_MASK\7f1454828
+Node: Host Config\7f1495773
+Node: Host Common\7f1496841
+Node: Filesystem\7f1499220
+Node: Host Misc\7f1503335
+Node: Fragments\7f1505474
+Node: Target Fragment\7f1506669
+Node: Host Fragment\7f1512559
+Node: Collect2\7f1512799
+Node: Header Dirs\7f1515342
+Node: Type Information\7f1516765
+Node: GTY Options\7f1519056
+Node: GGC Roots\7f1529736
+Node: Files\7f1530456
+Node: Invoking the garbage collector\7f1533206
+Node: Plugins\7f1534259
+Node: Funding\7f1544624
+Node: GNU Project\7f1547111
+Node: Copying\7f1547760
+Node: GNU Free Documentation License\7f1585291
+Node: Contributors\7f1607700
+Node: Option Index\7f1644030
+Node: Concept Index\7f1644615
 \1f
 End Tag Table
index 8ab460d..e84616d 100644 (file)
@@ -1,5 +1,5 @@
 This is gprof.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/binutils-2.19/gprof/gprof.texi.
+../../../../android-toolchain/binutils-2.19/gprof/gprof.texi.
 
 START-INFO-DIR-ENTRY
 * gprof: (gprof).                Profiling your program's execution
@@ -2307,35 +2307,35 @@ permit their use in free software.
 
 \1f
 Tag Table:
-Node: Top\7f799
-Node: Introduction\7f2110
-Node: Compiling\7f4602
-Node: Executing\7f8073
-Node: Invoking\7f10861
-Node: Output Options\7f12276
-Node: Analysis Options\7f19365
-Node: Miscellaneous Options\7f22766
-Node: Deprecated Options\7f24021
-Node: Symspecs\7f26100
-Node: Output\7f27926
-Node: Flat Profile\7f28966
-Node: Call Graph\7f33919
-Node: Primary\7f37151
-Node: Callers\7f39739
-Node: Subroutines\7f41856
-Node: Cycles\7f43697
-Node: Line-by-line\7f50474
-Node: Annotated Source\7f54547
-Node: Inaccuracy\7f57546
-Node: Sampling Error\7f57804
-Node: Assumptions\7f60374
-Node: How do I?\7f61844
-Node: Incompatibilities\7f63398
-Node: Details\7f64892
-Node: Implementation\7f65285
-Node: File Format\7f71182
-Node: Internals\7f75472
-Node: Debugging\7f83967
-Node: GNU Free Documentation License\7f85568
+Node: Top\7f769
+Node: Introduction\7f2080
+Node: Compiling\7f4572
+Node: Executing\7f8043
+Node: Invoking\7f10831
+Node: Output Options\7f12246
+Node: Analysis Options\7f19335
+Node: Miscellaneous Options\7f22736
+Node: Deprecated Options\7f23991
+Node: Symspecs\7f26070
+Node: Output\7f27896
+Node: Flat Profile\7f28936
+Node: Call Graph\7f33889
+Node: Primary\7f37121
+Node: Callers\7f39709
+Node: Subroutines\7f41826
+Node: Cycles\7f43667
+Node: Line-by-line\7f50444
+Node: Annotated Source\7f54517
+Node: Inaccuracy\7f57516
+Node: Sampling Error\7f57774
+Node: Assumptions\7f60344
+Node: How do I?\7f61814
+Node: Incompatibilities\7f63368
+Node: Details\7f64862
+Node: Implementation\7f65255
+Node: File Format\7f71152
+Node: Internals\7f75442
+Node: Debugging\7f83937
+Node: GNU Free Documentation License\7f85538
 \1f
 End Tag Table
index 209955c..0b5c9f4 100644 (file)
@@ -1,5 +1,5 @@
 This is ld.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/binutils-2.19/ld/ld.texinfo.
+../../../../android-toolchain/binutils-2.19/ld/ld.texinfo.
 
 START-INFO-DIR-ENTRY
 * Ld: (ld).                       The GNU linker.
@@ -7147,84 +7147,84 @@ LD Index
 
 \1f
 Tag Table:
-Node: Top\7f824
-Node: Overview\7f1595
-Node: Invocation\7f2709
-Node: Options\7f3117
-Node: Environment\7f85582
-Node: Scripts\7f87342
-Node: Basic Script Concepts\7f89076
-Node: Script Format\7f91783
-Node: Simple Example\7f92646
-Node: Simple Commands\7f95742
-Node: Entry Point\7f96193
-Node: File Commands\7f96952
-Node: Format Commands\7f100953
-Node: Miscellaneous Commands\7f102919
-Node: Assignments\7f106298
-Node: Simple Assignments\7f106789
-Node: PROVIDE\7f108525
-Node: PROVIDE_HIDDEN\7f109730
-Node: Source Code Reference\7f109974
-Node: SECTIONS\7f113554
-Node: Output Section Description\7f115445
-Node: Output Section Name\7f116498
-Node: Output Section Address\7f117374
-Node: Input Section\7f119023
-Node: Input Section Basics\7f119824
-Node: Input Section Wildcards\7f123042
-Node: Input Section Common\7f127775
-Node: Input Section Keep\7f129257
-Node: Input Section Example\7f129747
-Node: Output Section Data\7f130715
-Node: Output Section Keywords\7f133492
-Node: Output Section Discarding\7f137061
-Node: Output Section Attributes\7f138242
-Node: Output Section Type\7f139246
-Node: Output Section LMA\7f140400
-Node: Forced Output Alignment\7f142913
-Node: Forced Input Alignment\7f143181
-Node: Output Section Region\7f143566
-Node: Output Section Phdr\7f143996
-Node: Output Section Fill\7f144660
-Node: Overlay Description\7f145802
-Node: MEMORY\7f150105
-Node: PHDRS\7f154305
-Node: VERSION\7f159344
-Node: Expressions\7f167136
-Node: Constants\7f168014
-Node: Symbols\7f168575
-Node: Orphan Sections\7f169313
-Node: Location Counter\7f170477
-Node: Operators\7f174913
-Node: Evaluation\7f175835
-Node: Expression Section\7f177199
-Node: Builtin Functions\7f178688
-Node: Implicit Linker Scripts\7f186655
-Node: Machine Dependent\7f187430
-Node: H8/300\7f188446
-Node: i960\7f190071
-Node: M68HC11/68HC12\7f192172
-Node: ARM\7f193626
-Node: HPPA ELF32\7f200875
-Node: M68K\7f202498
-Node: MMIX\7f203407
-Node: MSP430\7f204572
-Node: PowerPC ELF32\7f205621
-Node: PowerPC64 ELF64\7f208235
-Node: SPU ELF\7f212651
-Node: TI COFF\7f215283
-Node: WIN32\7f215809
-Node: Xtensa\7f234166
-Node: BFD\7f237288
-Node: BFD outline\7f238743
-Node: BFD information loss\7f240029
-Node: Canonical format\7f242546
-Node: Reporting Bugs\7f246903
-Node: Bug Criteria\7f247597
-Node: Bug Reporting\7f248296
-Node: MRI\7f255335
-Node: GNU Free Documentation License\7f259978
-Node: LD Index\7f279695
+Node: Top\7f794
+Node: Overview\7f1565
+Node: Invocation\7f2679
+Node: Options\7f3087
+Node: Environment\7f85552
+Node: Scripts\7f87312
+Node: Basic Script Concepts\7f89046
+Node: Script Format\7f91753
+Node: Simple Example\7f92616
+Node: Simple Commands\7f95712
+Node: Entry Point\7f96163
+Node: File Commands\7f96922
+Node: Format Commands\7f100923
+Node: Miscellaneous Commands\7f102889
+Node: Assignments\7f106268
+Node: Simple Assignments\7f106759
+Node: PROVIDE\7f108495
+Node: PROVIDE_HIDDEN\7f109700
+Node: Source Code Reference\7f109944
+Node: SECTIONS\7f113524
+Node: Output Section Description\7f115415
+Node: Output Section Name\7f116468
+Node: Output Section Address\7f117344
+Node: Input Section\7f118993
+Node: Input Section Basics\7f119794
+Node: Input Section Wildcards\7f123012
+Node: Input Section Common\7f127745
+Node: Input Section Keep\7f129227
+Node: Input Section Example\7f129717
+Node: Output Section Data\7f130685
+Node: Output Section Keywords\7f133462
+Node: Output Section Discarding\7f137031
+Node: Output Section Attributes\7f138212
+Node: Output Section Type\7f139216
+Node: Output Section LMA\7f140370
+Node: Forced Output Alignment\7f142883
+Node: Forced Input Alignment\7f143151
+Node: Output Section Region\7f143536
+Node: Output Section Phdr\7f143966
+Node: Output Section Fill\7f144630
+Node: Overlay Description\7f145772
+Node: MEMORY\7f150075
+Node: PHDRS\7f154275
+Node: VERSION\7f159314
+Node: Expressions\7f167106
+Node: Constants\7f167984
+Node: Symbols\7f168545
+Node: Orphan Sections\7f169283
+Node: Location Counter\7f170447
+Node: Operators\7f174883
+Node: Evaluation\7f175805
+Node: Expression Section\7f177169
+Node: Builtin Functions\7f178658
+Node: Implicit Linker Scripts\7f186625
+Node: Machine Dependent\7f187400
+Node: H8/300\7f188416
+Node: i960\7f190041
+Node: M68HC11/68HC12\7f192142
+Node: ARM\7f193596
+Node: HPPA ELF32\7f200845
+Node: M68K\7f202468
+Node: MMIX\7f203377
+Node: MSP430\7f204542
+Node: PowerPC ELF32\7f205591
+Node: PowerPC64 ELF64\7f208205
+Node: SPU ELF\7f212621
+Node: TI COFF\7f215253
+Node: WIN32\7f215779
+Node: Xtensa\7f234136
+Node: BFD\7f237258
+Node: BFD outline\7f238713
+Node: BFD information loss\7f239999
+Node: Canonical format\7f242516
+Node: Reporting Bugs\7f246873
+Node: Bug Criteria\7f247567
+Node: Bug Reporting\7f248266
+Node: MRI\7f255305
+Node: GNU Free Documentation License\7f259948
+Node: LD Index\7f279665
 \1f
 End Tag Table
index 47aeec9..56f2454 100644 (file)
@@ -1,5 +1,5 @@
 This is standards.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/binutils-2.19/etc/standards.texi.
+../../../../android-toolchain/binutils-2.19/etc/standards.texi.
 
 INFO-DIR-SECTION GNU organization
 START-INFO-DIR-ENTRY
@@ -5504,73 +5504,73 @@ Index
 
 \1f
 Tag Table:
-Node: Top\7f873
-Node: Preface\7f2129
-Node: Legal Issues\7f4244
-Node: Reading Non-Free Code\7f4714
-Node: Contributions\7f6444
-Node: Trademarks\7f8682
-Node: Design Advice\7f10317
-Node: Source Language\7f10909
-Node: Compatibility\7f12921
-Node: Using Extensions\7f14549
-Node: Standard C\7f16125
-Node: Conditional Compilation\7f18528
-Node: Program Behavior\7f19926
-Node: Non-GNU Standards\7f20982
-Node: Semantics\7f23263
-Node: Libraries\7f27982
-Node: Errors\7f29227
-Node: User Interfaces\7f31720
-Node: Graphical Interfaces\7f33325
-Node: Command-Line Interfaces\7f34361
-Node: --version\7f36393
-Node: --help\7f42286
-Node: Option Table\7f42840
-Node: Memory Usage\7f57781
-Node: File Usage\7f58812
-Node: Writing C\7f59562
-Node: Formatting\7f60534
-Node: Comments\7f64823
-Node: Syntactic Conventions\7f68375
-Node: Names\7f71837
-Node: System Portability\7f74049
-Node: CPU Portability\7f76939
-Node: System Functions\7f80851
-Node: Internationalization\7f86048
-Node: Character Set\7f90042
-Node: Quote Characters\7f90855
-Node: Mmap\7f92375
-Node: Documentation\7f93083
-Node: GNU Manuals\7f94189
-Node: Doc Strings and Manuals\7f99927
-Node: Manual Structure Details\7f101480
-Node: License for Manuals\7f102898
-Node: Manual Credits\7f103872
-Node: Printed Manuals\7f104265
-Node: NEWS File\7f104951
-Node: Change Logs\7f105629
-Node: Change Log Concepts\7f106383
-Node: Style of Change Logs\7f108472
-Node: Simple Changes\7f110972
-Node: Conditional Changes\7f112414
-Node: Indicating the Part Changed\7f113836
-Node: Man Pages\7f114363
-Node: Reading other Manuals\7f116675
-Node: Managing Releases\7f117466
-Node: Configuration\7f118247
-Node: Makefile Conventions\7f125967
-Node: Makefile Basics\7f126849
-Node: Utilities in Makefiles\7f130023
-Node: Command Variables\7f132168
-Node: DESTDIR\7f135390
-Node: Directory Variables\7f137539
-Node: Standard Targets\7f152032
-Ref: Standard Targets-Footnote-1\7f165547
-Node: Install Command Categories\7f165647
-Node: Releases\7f170180
-Node: References\7f174107
-Node: GNU Free Documentation License\7f179602
-Node: Index\7f202034
+Node: Top\7f843
+Node: Preface\7f2099
+Node: Legal Issues\7f4214
+Node: Reading Non-Free Code\7f4684
+Node: Contributions\7f6414
+Node: Trademarks\7f8652
+Node: Design Advice\7f10287
+Node: Source Language\7f10879
+Node: Compatibility\7f12891
+Node: Using Extensions\7f14519
+Node: Standard C\7f16095
+Node: Conditional Compilation\7f18498
+Node: Program Behavior\7f19896
+Node: Non-GNU Standards\7f20952
+Node: Semantics\7f23233
+Node: Libraries\7f27952
+Node: Errors\7f29197
+Node: User Interfaces\7f31690
+Node: Graphical Interfaces\7f33295
+Node: Command-Line Interfaces\7f34331
+Node: --version\7f36363
+Node: --help\7f42256
+Node: Option Table\7f42810
+Node: Memory Usage\7f57751
+Node: File Usage\7f58782
+Node: Writing C\7f59532
+Node: Formatting\7f60504
+Node: Comments\7f64793
+Node: Syntactic Conventions\7f68345
+Node: Names\7f71807
+Node: System Portability\7f74019
+Node: CPU Portability\7f76909
+Node: System Functions\7f80821
+Node: Internationalization\7f86018
+Node: Character Set\7f90012
+Node: Quote Characters\7f90825
+Node: Mmap\7f92345
+Node: Documentation\7f93053
+Node: GNU Manuals\7f94159
+Node: Doc Strings and Manuals\7f99897
+Node: Manual Structure Details\7f101450
+Node: License for Manuals\7f102868
+Node: Manual Credits\7f103842
+Node: Printed Manuals\7f104235
+Node: NEWS File\7f104921
+Node: Change Logs\7f105599
+Node: Change Log Concepts\7f106353
+Node: Style of Change Logs\7f108442
+Node: Simple Changes\7f110942
+Node: Conditional Changes\7f112384
+Node: Indicating the Part Changed\7f113806
+Node: Man Pages\7f114333
+Node: Reading other Manuals\7f116645
+Node: Managing Releases\7f117436
+Node: Configuration\7f118217
+Node: Makefile Conventions\7f125937
+Node: Makefile Basics\7f126819
+Node: Utilities in Makefiles\7f129993
+Node: Command Variables\7f132138
+Node: DESTDIR\7f135360
+Node: Directory Variables\7f137509
+Node: Standard Targets\7f152002
+Ref: Standard Targets-Footnote-1\7f165517
+Node: Install Command Categories\7f165617
+Node: Releases\7f170150
+Node: References\7f174077
+Node: GNU Free Documentation License\7f179572
+Node: Index\7f202004
 \1f
 End Tag Table
index 0bb7ef5..061890e 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtbegin.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/crtbegin.o differ
index 0ef0f03..4458333 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcc.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcc.a differ
index c9e40e2..caefafc 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcov.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/android/libgcov.a differ
index 5d40406..e017aa2 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtbegin.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtbegin.o differ
index 678b4b7..59eb972 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtend.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtend.o differ
index 5dffc10..3cdd491 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crti.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crti.o differ
index 1f17fd9..ec1c99a 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtn.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/crtn.o differ
index b5ecb74..ae09abe 100644 (file)
@@ -1,4 +1,4 @@
-SYSTEM_HEADER_DIR="/g/users/dougkwan/toolbuild/arm-eabi-4.4.0/sysroot${sysroot_headers_suffix}/usr/include"
+SYSTEM_HEADER_DIR="/g/users/jingyu/toolchain/cupcake_rel_root${sysroot_headers_suffix}/usr/include"
 OTHER_FIXINCLUDES_DIRS=""
 FIXPROTO_DEFINES=""
 STMP_FIXPROTO=""
index 523ee3c..e017aa2 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtbegin.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtbegin.o differ
index 678b4b7..59eb972 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtend.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/crtend.o differ
index e55f899..857bf29 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a differ
index 99f0692..91056ef 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcov.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/interwork/libgcov.a differ
index 484829d..b3a52a0 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcc.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcc.a differ
index db5fc02..fdd3843 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcov.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcov.a differ
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/c-common.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/c-common.h
new file mode 100644 (file)
index 0000000..475c333
--- /dev/null
@@ -0,0 +1,1045 @@
+/* Definitions for c-common.c.
+   Copyright (C) 1987, 1993, 1994, 1995, 1997, 1998,
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_C_COMMON_H
+#define GCC_C_COMMON_H
+
+#include "splay-tree.h"
+#include "cpplib.h"
+#include "ggc.h"
+
+/* Usage of TREE_LANG_FLAG_?:
+   0: TREE_NEGATED_INT (in INTEGER_CST).
+      IDENTIFIER_MARKED (used by search routines).
+      DECL_PRETTY_FUNCTION_P (in VAR_DECL)
+   1: C_DECLARED_LABEL_FLAG (in LABEL_DECL)
+      STATEMENT_LIST_STMT_EXPR (in STATEMENT_LIST)
+   2: unused
+   3: STATEMENT_LIST_HAS_LABEL (in STATEMENT_LIST)
+   4: unused
+*/
+
+/* Reserved identifiers.  This is the union of all the keywords for C,
+   C++, and Objective-C.  All the type modifiers have to be in one
+   block at the beginning, because they are used as mask bits.  There
+   are 27 type modifiers; if we add many more we will have to redesign
+   the mask mechanism.  */
+
+enum rid
+{
+  /* Modifiers: */
+  /* C, in empirical order of frequency.  */
+  RID_STATIC = 0,
+  RID_UNSIGNED, RID_LONG,    RID_CONST, RID_EXTERN,
+  RID_REGISTER, RID_TYPEDEF, RID_SHORT, RID_INLINE,
+  RID_VOLATILE, RID_SIGNED,  RID_AUTO,  RID_RESTRICT,
+
+  /* C extensions */
+  RID_COMPLEX, RID_THREAD, RID_SAT,
+
+  /* C++ */
+  RID_FRIEND, RID_VIRTUAL, RID_EXPLICIT, RID_EXPORT, RID_MUTABLE,
+
+  /* ObjC */
+  RID_IN, RID_OUT, RID_INOUT, RID_BYCOPY, RID_BYREF, RID_ONEWAY,
+
+  /* C */
+  RID_INT,     RID_CHAR,   RID_FLOAT,    RID_DOUBLE, RID_VOID,
+  RID_ENUM,    RID_STRUCT, RID_UNION,    RID_IF,     RID_ELSE,
+  RID_WHILE,   RID_DO,     RID_FOR,      RID_SWITCH, RID_CASE,
+  RID_DEFAULT, RID_BREAK,  RID_CONTINUE, RID_RETURN, RID_GOTO,
+  RID_SIZEOF,
+
+  /* C extensions */
+  RID_ASM,       RID_TYPEOF,   RID_ALIGNOF,  RID_ATTRIBUTE,  RID_VA_ARG,
+  RID_EXTENSION, RID_IMAGPART, RID_REALPART, RID_LABEL,      RID_CHOOSE_EXPR,
+  RID_TYPES_COMPATIBLE_P,
+  RID_DFLOAT32, RID_DFLOAT64, RID_DFLOAT128,
+  RID_FRACT, RID_ACCUM,
+
+  /* This means to warn that this is a C++ keyword, and then treat it
+     as a normal identifier.  */
+  RID_CXX_COMPAT_WARN,
+
+  /* Too many ways of getting the name of a function as a string */
+  RID_FUNCTION_NAME, RID_PRETTY_FUNCTION_NAME, RID_C99_FUNCTION_NAME,
+
+  /* C++ */
+  RID_BOOL,     RID_WCHAR,    RID_CLASS,
+  RID_PUBLIC,   RID_PRIVATE,  RID_PROTECTED,
+  RID_TEMPLATE, RID_NULL,     RID_CATCH,
+  RID_DELETE,   RID_FALSE,    RID_NAMESPACE,
+  RID_NEW,      RID_OFFSETOF, RID_OPERATOR,
+  RID_THIS,     RID_THROW,    RID_TRUE,
+  RID_TRY,      RID_TYPENAME, RID_TYPEID,
+  RID_USING,    RID_CHAR16,   RID_CHAR32,
+
+  /* casts */
+  RID_CONSTCAST, RID_DYNCAST, RID_REINTCAST, RID_STATCAST,
+
+  /* C++ extensions */
+  RID_HAS_NOTHROW_ASSIGN,      RID_HAS_NOTHROW_CONSTRUCTOR,
+  RID_HAS_NOTHROW_COPY,        RID_HAS_TRIVIAL_ASSIGN,
+  RID_HAS_TRIVIAL_CONSTRUCTOR, RID_HAS_TRIVIAL_COPY,
+  RID_HAS_TRIVIAL_DESTRUCTOR,  RID_HAS_VIRTUAL_DESTRUCTOR,
+  RID_IS_ABSTRACT,             RID_IS_BASE_OF,
+  RID_IS_CONVERTIBLE_TO,       RID_IS_CLASS,
+  RID_IS_EMPTY,                RID_IS_ENUM,
+  RID_IS_POD,                  RID_IS_POLYMORPHIC,
+  RID_IS_UNION,
+
+  /* C++0x */
+  RID_STATIC_ASSERT, RID_DECLTYPE,
+
+  /* Objective-C */
+  RID_AT_ENCODE,   RID_AT_END,
+  RID_AT_CLASS,    RID_AT_ALIAS,     RID_AT_DEFS,
+  RID_AT_PRIVATE,  RID_AT_PROTECTED, RID_AT_PUBLIC,
+  RID_AT_PROTOCOL, RID_AT_SELECTOR,
+  RID_AT_THROW,           RID_AT_TRY,       RID_AT_CATCH,
+  RID_AT_FINALLY,  RID_AT_SYNCHRONIZED,
+  RID_AT_INTERFACE,
+  RID_AT_IMPLEMENTATION,
+
+  RID_MAX,
+
+  RID_FIRST_MODIFIER = RID_STATIC,
+  RID_LAST_MODIFIER = RID_ONEWAY,
+
+  RID_FIRST_CXX0X = RID_STATIC_ASSERT,
+  RID_LAST_CXX0X = RID_DECLTYPE,
+  RID_FIRST_AT = RID_AT_ENCODE,
+  RID_LAST_AT = RID_AT_IMPLEMENTATION,
+  RID_FIRST_PQ = RID_IN,
+  RID_LAST_PQ = RID_ONEWAY
+};
+
+#define OBJC_IS_AT_KEYWORD(rid) \
+  ((unsigned int) (rid) >= (unsigned int) RID_FIRST_AT && \
+   (unsigned int) (rid) <= (unsigned int) RID_LAST_AT)
+
+#define OBJC_IS_PQ_KEYWORD(rid) \
+  ((unsigned int) (rid) >= (unsigned int) RID_FIRST_PQ && \
+   (unsigned int) (rid) <= (unsigned int) RID_LAST_PQ)
+
+/* The elements of `ridpointers' are identifier nodes for the reserved
+   type names and storage classes.  It is indexed by a RID_... value.  */
+extern GTY ((length ("(int) RID_MAX"))) tree *ridpointers;
+
+/* Standard named or nameless data types of the C compiler.  */
+
+enum c_tree_index
+{
+    CTI_CHAR16_TYPE,
+    CTI_CHAR32_TYPE,
+    CTI_WCHAR_TYPE,
+    CTI_SIGNED_WCHAR_TYPE,
+    CTI_UNSIGNED_WCHAR_TYPE,
+    CTI_WINT_TYPE,
+    CTI_SIGNED_SIZE_TYPE, /* For format checking only.  */
+    CTI_UNSIGNED_PTRDIFF_TYPE, /* For format checking only.  */
+    CTI_INTMAX_TYPE,
+    CTI_UINTMAX_TYPE,
+    CTI_WIDEST_INT_LIT_TYPE,
+    CTI_WIDEST_UINT_LIT_TYPE,
+
+    CTI_CHAR_ARRAY_TYPE,
+    CTI_CHAR16_ARRAY_TYPE,
+    CTI_CHAR32_ARRAY_TYPE,
+    CTI_WCHAR_ARRAY_TYPE,
+    CTI_INT_ARRAY_TYPE,
+    CTI_STRING_TYPE,
+    CTI_CONST_STRING_TYPE,
+
+    /* Type for boolean expressions (bool in C++, int in C).  */
+    CTI_TRUTHVALUE_TYPE,
+    CTI_TRUTHVALUE_TRUE,
+    CTI_TRUTHVALUE_FALSE,
+
+    CTI_DEFAULT_FUNCTION_TYPE,
+
+    /* These are not types, but we have to look them up all the time.  */
+    CTI_FUNCTION_NAME_DECL,
+    CTI_PRETTY_FUNCTION_NAME_DECL,
+    CTI_C99_FUNCTION_NAME_DECL,
+    CTI_SAVED_FUNCTION_NAME_DECLS,
+
+    CTI_VOID_ZERO,
+
+    CTI_NULL,
+
+    CTI_MAX
+};
+
+#define C_CPP_HASHNODE(id) \
+  (&(((struct c_common_identifier *) (id))->node))
+#define C_RID_CODE(id) \
+  ((enum rid) (((struct c_common_identifier *) (id))->node.rid_code))
+#define C_SET_RID_CODE(id, code) \
+  (((struct c_common_identifier *) (id))->node.rid_code = (unsigned char) code)
+
+/* Identifier part common to the C front ends.  Inherits from
+   tree_identifier, despite appearances.  */
+struct c_common_identifier GTY(())
+{
+  struct tree_common common;
+  struct cpp_hashnode node;
+};
+
+/* An entry in the reserved keyword table.  */
+
+struct c_common_resword
+{
+  const char *const word;
+  ENUM_BITFIELD(rid) const rid : 16;
+  const unsigned int disable   : 16;
+};
+
+/* Disable mask.  Keywords are disabled if (reswords[i].disable &
+   mask) is _true_.  Thus for keywords which are present in all
+   languages the disable field is zero.  */
+
+#define D_CONLY                0x001   /* C only (not in C++).  */
+#define D_CXXONLY      0x002   /* C++ only (not in C).  */
+#define D_C99          0x004   /* In C, C99 only.  */
+#define D_CXX0X         0x008  /* In C++, C++0X only.  */
+#define D_EXT          0x010   /* GCC extension.  */
+#define D_EXT89                0x020   /* GCC extension incorporated in C99.  */
+#define D_ASM          0x040   /* Disabled by -fno-asm.  */
+#define D_OBJC         0x080   /* In Objective C and neither C nor C++.  */
+#define D_CXX_OBJC     0x100   /* In Objective C, and C++, but not C.  */
+#define D_CXXWARN      0x200   /* In C warn with -Wcxx-compat.  */
+
+/* The reserved keyword table.  */
+extern const struct c_common_resword c_common_reswords[];
+
+/* The number of items in the reserved keyword table.  */
+extern const unsigned int num_c_common_reswords;
+
+#define char16_type_node               c_global_trees[CTI_CHAR16_TYPE]
+#define char32_type_node               c_global_trees[CTI_CHAR32_TYPE]
+#define wchar_type_node                        c_global_trees[CTI_WCHAR_TYPE]
+#define signed_wchar_type_node         c_global_trees[CTI_SIGNED_WCHAR_TYPE]
+#define unsigned_wchar_type_node       c_global_trees[CTI_UNSIGNED_WCHAR_TYPE]
+#define wint_type_node                 c_global_trees[CTI_WINT_TYPE]
+#define signed_size_type_node          c_global_trees[CTI_SIGNED_SIZE_TYPE]
+#define unsigned_ptrdiff_type_node     c_global_trees[CTI_UNSIGNED_PTRDIFF_TYPE]
+#define intmax_type_node               c_global_trees[CTI_INTMAX_TYPE]
+#define uintmax_type_node              c_global_trees[CTI_UINTMAX_TYPE]
+#define widest_integer_literal_type_node c_global_trees[CTI_WIDEST_INT_LIT_TYPE]
+#define widest_unsigned_literal_type_node c_global_trees[CTI_WIDEST_UINT_LIT_TYPE]
+
+#define truthvalue_type_node           c_global_trees[CTI_TRUTHVALUE_TYPE]
+#define truthvalue_true_node           c_global_trees[CTI_TRUTHVALUE_TRUE]
+#define truthvalue_false_node          c_global_trees[CTI_TRUTHVALUE_FALSE]
+
+#define char_array_type_node           c_global_trees[CTI_CHAR_ARRAY_TYPE]
+#define char16_array_type_node         c_global_trees[CTI_CHAR16_ARRAY_TYPE]
+#define char32_array_type_node         c_global_trees[CTI_CHAR32_ARRAY_TYPE]
+#define wchar_array_type_node          c_global_trees[CTI_WCHAR_ARRAY_TYPE]
+#define int_array_type_node            c_global_trees[CTI_INT_ARRAY_TYPE]
+#define string_type_node               c_global_trees[CTI_STRING_TYPE]
+#define const_string_type_node         c_global_trees[CTI_CONST_STRING_TYPE]
+
+#define default_function_type          c_global_trees[CTI_DEFAULT_FUNCTION_TYPE]
+
+#define function_name_decl_node                c_global_trees[CTI_FUNCTION_NAME_DECL]
+#define pretty_function_name_decl_node c_global_trees[CTI_PRETTY_FUNCTION_NAME_DECL]
+#define c99_function_name_decl_node            c_global_trees[CTI_C99_FUNCTION_NAME_DECL]
+#define saved_function_name_decls      c_global_trees[CTI_SAVED_FUNCTION_NAME_DECLS]
+
+/* A node for `((void) 0)'.  */
+#define void_zero_node                  c_global_trees[CTI_VOID_ZERO]
+
+/* The node for C++ `__null'.  */
+#define null_node                       c_global_trees[CTI_NULL]
+
+extern GTY(()) tree c_global_trees[CTI_MAX];
+
+/* In a RECORD_TYPE, a sorted array of the fields of the type, not a
+   tree for size reasons.  */
+struct sorted_fields_type GTY(())
+{
+  int len;
+  tree GTY((length ("%h.len"))) elts[1];
+};
+
+/* Mark which labels are explicitly declared.
+   These may be shadowed, and may be referenced from nested functions.  */
+#define C_DECLARED_LABEL_FLAG(label) TREE_LANG_FLAG_1 (label)
+
+typedef enum c_language_kind
+{
+  clk_c                = 0,            /* C90, C94 or C99 */
+  clk_objc     = 1,            /* clk_c with ObjC features.  */
+  clk_cxx      = 2,            /* ANSI/ISO C++ */
+  clk_objcxx   = 3             /* clk_cxx with ObjC features.  */
+}
+c_language_kind;
+
+/* To test for a specific language use c_language, defined by each
+   front end.  For "ObjC features" or "not C++" use the macros.  */
+extern c_language_kind c_language;
+
+#define c_dialect_cxx()                (c_language & clk_cxx)
+#define c_dialect_objc()       (c_language & clk_objc)
+
+/* Information about a statement tree.  */
+
+struct stmt_tree_s GTY(()) {
+  /* The current statement list being collected.  */
+  tree x_cur_stmt_list;
+
+  /* In C++, Nonzero if we should treat statements as full
+     expressions.  In particular, this variable is no-zero if at the
+     end of a statement we should destroy any temporaries created
+     during that statement.  Similarly, if, at the end of a block, we
+     should destroy any local variables in this block.  Normally, this
+     variable is nonzero, since those are the normal semantics of
+     C++.
+
+     However, in order to represent aggregate initialization code as
+     tree structure, we use statement-expressions.  The statements
+     within the statement expression should not result in cleanups
+     being run until the entire enclosing statement is complete.
+
+     This flag has no effect in C.  */
+  int stmts_are_full_exprs_p;
+};
+
+typedef struct stmt_tree_s *stmt_tree;
+
+/* Global state pertinent to the current function.  Some C dialects
+   extend this structure with additional fields.  */
+
+struct c_language_function GTY(()) {
+  /* While we are parsing the function, this contains information
+     about the statement-tree that we are building.  */
+  struct stmt_tree_s x_stmt_tree;
+};
+
+/* When building a statement-tree, this is the current statement list
+   being collected.  It's TREE_CHAIN is a back-pointer to the previous
+   statement list.  */
+
+#define cur_stmt_list (current_stmt_tree ()->x_cur_stmt_list)
+
+/* Language-specific hooks.  */
+
+/* If non-NULL, this function is called after a precompile header file
+   is loaded.  */
+extern void (*lang_post_pch_load) (void);
+
+extern void push_file_scope (void);
+extern void pop_file_scope (void);
+extern stmt_tree current_stmt_tree (void);
+extern tree push_stmt_list (void);
+extern tree pop_stmt_list (tree);
+extern tree add_stmt (tree);
+extern void push_cleanup (tree, tree, bool);
+extern tree pushdecl_top_level (tree);
+extern tree pushdecl (tree);
+extern tree build_modify_expr (location_t, tree, enum tree_code, tree);
+extern tree build_indirect_ref (location_t, tree, const char *);
+
+extern int c_expand_decl (tree);
+
+extern int field_decl_cmp (const void *, const void *);
+extern void resort_sorted_fields (void *, void *, gt_pointer_operator,
+                                 void *);
+extern bool has_c_linkage (const_tree decl);
+\f
+/* Switches common to the C front ends.  */
+
+/* Nonzero if prepreprocessing only.  */
+
+extern int flag_preprocess_only;
+
+/* Zero means that faster, ...NonNil variants of objc_msgSend...
+   calls will be used in ObjC; passing nil receivers to such calls
+   will most likely result in crashes.  */
+extern int flag_nil_receivers;
+
+/* Nonzero means that we will allow new ObjC exception syntax (@throw,
+   @try, etc.) in source code.  */
+extern int flag_objc_exceptions;
+
+/* Nonzero means that we generate NeXT setjmp based exceptions.  */
+extern int flag_objc_sjlj_exceptions;
+
+/* Nonzero means that code generation will be altered to support
+   "zero-link" execution.  This currently affects ObjC only, but may
+   affect other languages in the future.  */
+extern int flag_zero_link;
+
+/* Nonzero means emit an '__OBJC, __image_info' for the current translation
+   unit.  It will inform the ObjC runtime that class definition(s) herein
+   contained are to replace one(s) previously loaded.  */
+extern int flag_replace_objc_classes;
+
+/* Nonzero means don't output line number information.  */
+
+extern char flag_no_line_commands;
+
+/* Nonzero causes -E output not to be done, but directives such as
+   #define that have side effects are still obeyed.  */
+
+extern char flag_no_output;
+
+/* Nonzero means dump macros in some fashion; contains the 'D', 'M',
+   'N' or 'U' of the command line switch.  */
+
+extern char flag_dump_macros;
+
+/* Nonzero means pass #include lines through to the output.  */
+
+extern char flag_dump_includes;
+
+/* Nonzero means process PCH files while preprocessing.  */
+
+extern bool flag_pch_preprocess;
+
+/* The file name to which we should write a precompiled header, or
+   NULL if no header will be written in this compile.  */
+
+extern const char *pch_file;
+
+/* Nonzero if an ISO standard was selected.  It rejects macros in the
+   user's namespace.  */
+
+extern int flag_iso;
+
+/* Nonzero if -undef was given.  It suppresses target built-in macros
+   and assertions.  */
+
+extern int flag_undef;
+
+/* Nonzero means don't recognize the non-ANSI builtin functions.  */
+
+extern int flag_no_builtin;
+
+/* Nonzero means don't recognize the non-ANSI builtin functions.
+   -ansi sets this.  */
+
+extern int flag_no_nonansi_builtin;
+
+/* Nonzero means give `double' the same size as `float'.  */
+
+extern int flag_short_double;
+
+/* Nonzero means give `wchar_t' the same size as `short'.  */
+
+extern int flag_short_wchar;
+
+/* Nonzero means allow implicit conversions between vectors with
+   differing numbers of subparts and/or differing element types.  */
+extern int flag_lax_vector_conversions;
+
+/* Nonzero means allow Microsoft extensions without warnings or errors.  */
+extern int flag_ms_extensions;
+
+/* Nonzero means don't recognize the keyword `asm'.  */
+
+extern int flag_no_asm;
+
+/* Nonzero means give string constants the type `const char *', as mandated
+   by the standard.  */
+
+extern int flag_const_strings;
+
+/* Nonzero means to treat bitfields as signed unless they say `unsigned'.  */
+
+extern int flag_signed_bitfields;
+
+/* Warn about #pragma directives that are not recognized.  */
+
+extern int warn_unknown_pragmas; /* Tri state variable.  */
+
+/* Warn about format/argument anomalies in calls to formatted I/O functions
+   (*printf, *scanf, strftime, strfmon, etc.).  */
+
+extern int warn_format;
+
+
+/* C/ObjC language option variables.  */
+
+
+/* Nonzero means allow type mismatches in conditional expressions;
+   just make their values `void'.  */
+
+extern int flag_cond_mismatch;
+
+/* Nonzero means enable C89 Amendment 1 features.  */
+
+extern int flag_isoc94;
+
+/* Nonzero means use the ISO C99 dialect of C.  */
+
+extern int flag_isoc99;
+
+/* Nonzero means that we have builtin functions, and main is an int.  */
+
+extern int flag_hosted;
+
+/* ObjC language option variables.  */
+
+
+/* Open and close the file for outputting class declarations, if
+   requested (ObjC).  */
+
+extern int flag_gen_declaration;
+
+/* Tells the compiler that this is a special run.  Do not perform any
+   compiling, instead we are to test some platform dependent features
+   and output a C header file with appropriate definitions.  */
+
+extern int print_struct_values;
+
+/* ???.  Undocumented.  */
+
+extern const char *constant_string_class_name;
+
+
+/* C++ language option variables.  */
+
+
+/* Nonzero means don't recognize any extension keywords.  */
+
+extern int flag_no_gnu_keywords;
+
+/* Nonzero means do emit exported implementations of functions even if
+   they can be inlined.  */
+
+extern int flag_implement_inlines;
+
+/* Nonzero means that implicit instantiations will be emitted if needed.  */
+
+extern int flag_implicit_templates;
+
+/* Nonzero means that implicit instantiations of inline templates will be
+   emitted if needed, even if instantiations of non-inline templates
+   aren't.  */
+
+extern int flag_implicit_inline_templates;
+
+/* Nonzero means generate separate instantiation control files and
+   juggle them at link time.  */
+
+extern int flag_use_repository;
+
+/* Nonzero if we want to issue diagnostics that the standard says are not
+   required.  */
+
+extern int flag_optional_diags;
+
+/* Nonzero means we should attempt to elide constructors when possible.  */
+
+extern int flag_elide_constructors;
+
+/* Nonzero means that member functions defined in class scope are
+   inline by default.  */
+
+extern int flag_default_inline;
+
+/* Controls whether compiler generates 'type descriptor' that give
+   run-time type information.  */
+
+extern int flag_rtti;
+
+/* Nonzero if we want to conserve space in the .o files.  We do this
+   by putting uninitialized data and runtime initialized data into
+   .common instead of .data at the expense of not flagging multiple
+   definitions.  */
+
+extern int flag_conserve_space;
+
+/* Nonzero if we want to obey access control semantics.  */
+
+extern int flag_access_control;
+
+/* Nonzero if we want to check the return value of new and avoid calling
+   constructors if it is a null pointer.  */
+
+extern int flag_check_new;
+
+/* The supported C++ dialects.  */
+
+enum cxx_dialect {
+  /* C++98  */
+  cxx98,
+  /* Experimental features that are likely to become part of
+     C++0x.  */
+  cxx0x
+};
+
+/* The C++ dialect being used. C++98 is the default.  */
+extern enum cxx_dialect cxx_dialect;
+
+/* Nonzero if we want the new ISO rules for pushing a new scope for `for'
+   initialization variables.
+   0: Old rules, set by -fno-for-scope.
+   2: New ISO rules, set by -ffor-scope.
+   1: Try to implement new ISO rules, but with backup compatibility
+   (and warnings).  This is the default, for now.  */
+
+extern int flag_new_for_scope;
+
+/* Nonzero if we want to emit defined symbols with common-like linkage as
+   weak symbols where possible, in order to conform to C++ semantics.
+   Otherwise, emit them as local symbols.  */
+
+extern int flag_weak;
+
+/* 0 means we want the preprocessor to not emit line directives for
+   the current working directory.  1 means we want it to do it.  -1
+   means we should decide depending on whether debugging information
+   is being emitted or not.  */
+
+extern int flag_working_directory;
+
+/* Nonzero to use __cxa_atexit, rather than atexit, to register
+   destructors for local statics and global objects.  */
+
+extern int flag_use_cxa_atexit;
+
+/* Nonzero to use __cxa_get_exception_ptr in the C++ exception-handling
+   logic.  */
+
+extern int flag_use_cxa_get_exception_ptr;
+
+/* Nonzero means to implement standard semantics for exception
+   specifications, calling unexpected if an exception is thrown that
+   doesn't match the specification.  Zero means to treat them as
+   assertions and optimize accordingly, but not check them.  */
+
+extern int flag_enforce_eh_specs;
+
+/* Nonzero (the default) means to generate thread-safe code for
+   initializing local statics.  */
+
+extern int flag_threadsafe_statics;
+
+/* Nonzero means warn about implicit declarations.  */
+
+extern int warn_implicit;
+
+/* Warn about using __null (as NULL in C++) as sentinel.  For code compiled
+   with GCC this doesn't matter as __null is guaranteed to have the right
+   size.  */
+
+extern int warn_strict_null_sentinel;
+
+/* Maximum template instantiation depth.  This limit is rather
+   arbitrary, but it exists to limit the time it takes to notice
+   infinite template instantiations.  */
+
+extern int max_tinst_depth;
+
+/* Nonzero means the expression being parsed will never be evaluated.
+   This is a count, since unevaluated expressions can nest.  */
+
+extern int skip_evaluation;
+
+/* C types are partitioned into three subsets: object, function, and
+   incomplete types.  */
+#define C_TYPE_OBJECT_P(type) \
+  (TREE_CODE (type) != FUNCTION_TYPE && TYPE_SIZE (type))
+
+#define C_TYPE_INCOMPLETE_P(type) \
+  (TREE_CODE (type) != FUNCTION_TYPE && TYPE_SIZE (type) == 0)
+
+#define C_TYPE_FUNCTION_P(type) \
+  (TREE_CODE (type) == FUNCTION_TYPE)
+
+/* For convenience we define a single macro to identify the class of
+   object or incomplete types.  */
+#define C_TYPE_OBJECT_OR_INCOMPLETE_P(type) \
+  (!C_TYPE_FUNCTION_P (type))
+
+/* Attribute table common to the C front ends.  */
+extern const struct attribute_spec c_common_attribute_table[];
+extern const struct attribute_spec c_common_format_attribute_table[];
+
+/* Pointer to function to lazily generate the VAR_DECL for __FUNCTION__ etc.
+   ID is the identifier to use, NAME is the string.
+   TYPE_DEP indicates whether it depends on type of the function or not
+   (i.e. __PRETTY_FUNCTION__).  */
+
+extern tree (*make_fname_decl) (tree, int);
+
+extern tree identifier_global_value (tree);
+extern void record_builtin_type (enum rid, const char *, tree);
+extern tree build_void_list_node (void);
+extern void start_fname_decls (void);
+extern void finish_fname_decls (void);
+extern const char *fname_as_string (int);
+extern tree fname_decl (location_t, unsigned, tree);
+
+extern void check_function_arguments (tree, int, tree *, tree);
+extern void check_function_arguments_recurse (void (*)
+                                             (void *, tree,
+                                              unsigned HOST_WIDE_INT),
+                                             void *, tree,
+                                             unsigned HOST_WIDE_INT);
+extern bool check_builtin_function_arguments (tree, int, tree *);
+extern void check_function_format (tree, int, tree *);
+extern void set_Wformat (int);
+extern tree handle_format_attribute (tree *, tree, tree, int, bool *);
+extern tree handle_format_arg_attribute (tree *, tree, tree, int, bool *);
+extern int c_common_handle_option (size_t code, const char *arg, int value);
+extern bool c_common_missing_argument (const char *opt, size_t code);
+extern tree c_common_type_for_mode (enum machine_mode, int);
+extern tree c_common_type_for_size (unsigned int, int);
+extern tree c_common_fixed_point_type_for_size (unsigned int, unsigned int,
+                                               int, int);
+extern tree c_common_unsigned_type (tree);
+extern tree c_common_signed_type (tree);
+extern tree c_common_signed_or_unsigned_type (int, tree);
+extern tree c_build_bitfield_integer_type (unsigned HOST_WIDE_INT, int);
+extern bool decl_with_nonnull_addr_p (const_tree);
+extern tree c_common_truthvalue_conversion (location_t, tree);
+extern void c_apply_type_quals_to_decl (int, tree);
+extern tree c_sizeof_or_alignof_type (tree, bool, int);
+extern tree c_alignof_expr (tree);
+/* Print an error message for invalid operands to arith operation CODE.
+   NOP_EXPR is used as a special case (see truthvalue_conversion).  */
+extern void binary_op_error (location_t, enum tree_code, tree, tree);
+extern tree fix_string_type (tree);
+struct varray_head_tag;
+extern void constant_expression_warning (tree);
+extern void constant_expression_error (tree);
+extern bool strict_aliasing_warning (tree, tree, tree);
+extern void warnings_for_convert_and_check (tree, tree, tree);
+extern tree convert_and_check (tree, tree);
+extern void overflow_warning (tree);
+extern void warn_logical_operator (enum tree_code, tree, tree);
+extern void check_main_parameter_types (tree decl);
+extern bool c_determine_visibility (tree);
+extern bool same_scalar_type_ignoring_signedness (tree, tree);
+
+#define c_sizeof(T)  c_sizeof_or_alignof_type (T, true, 1)
+#define c_alignof(T) c_sizeof_or_alignof_type (T, false, 1)
+
+/* Subroutine of build_binary_op, used for certain operations.  */
+extern tree shorten_binary_op (tree result_type, tree op0, tree op1, bool bitwise);
+
+/* Subroutine of build_binary_op, used for comparison operations.
+   See if the operands have both been converted from subword integer types
+   and, if so, perhaps change them both back to their original type.  */
+extern tree shorten_compare (tree *, tree *, tree *, enum tree_code *);
+
+extern tree pointer_int_sum (enum tree_code, tree, tree);
+
+/* Add qualifiers to a type, in the fashion for C.  */
+extern tree c_build_qualified_type (tree, int);
+
+/* Build tree nodes and builtin functions common to both C and C++ language
+   frontends.  */
+extern void c_common_nodes_and_builtins (void);
+
+extern void set_builtin_user_assembler_name (tree decl, const char *asmspec);
+
+extern void disable_builtin_function (const char *);
+
+extern void set_compound_literal_name (tree decl);
+
+extern tree build_va_arg (tree, tree);
+
+extern unsigned int c_common_init_options (unsigned int, const char **);
+extern bool c_common_post_options (const char **);
+extern bool c_common_init (void);
+extern void c_common_finish (void);
+extern void c_common_parse_file (int);
+extern alias_set_type c_common_get_alias_set (tree);
+extern void c_register_builtin_type (tree, const char*);
+extern bool c_promoting_integer_type_p (const_tree);
+extern int self_promoting_args_p (const_tree);
+extern tree strip_pointer_operator (tree);
+extern tree strip_pointer_or_array_types (tree);
+extern HOST_WIDE_INT c_common_to_target_charset (HOST_WIDE_INT);
+
+/* This is the basic parsing function.  */
+extern void c_parse_file (void);
+/* This is misnamed, it actually performs end-of-compilation processing.  */
+extern void finish_file        (void);
+
+
+/* These macros provide convenient access to the various _STMT nodes.  */
+
+/* Nonzero if a given STATEMENT_LIST represents the outermost binding
+   if a statement expression.  */
+#define STATEMENT_LIST_STMT_EXPR(NODE) \
+  TREE_LANG_FLAG_1 (STATEMENT_LIST_CHECK (NODE))
+
+/* Nonzero if a label has been added to the statement list.  */
+#define STATEMENT_LIST_HAS_LABEL(NODE) \
+  TREE_LANG_FLAG_3 (STATEMENT_LIST_CHECK (NODE))
+
+/* COMPOUND_LITERAL_EXPR accessors.  */
+#define COMPOUND_LITERAL_EXPR_DECL_STMT(NODE)          \
+  TREE_OPERAND (COMPOUND_LITERAL_EXPR_CHECK (NODE), 0)
+#define COMPOUND_LITERAL_EXPR_DECL(NODE)                       \
+  DECL_EXPR_DECL (COMPOUND_LITERAL_EXPR_DECL_STMT (NODE))
+
+/* In a FIELD_DECL, nonzero if the decl was originally a bitfield.  */
+#define DECL_C_BIT_FIELD(NODE) \
+  (DECL_LANG_FLAG_4 (FIELD_DECL_CHECK (NODE)) == 1)
+#define SET_DECL_C_BIT_FIELD(NODE) \
+  (DECL_LANG_FLAG_4 (FIELD_DECL_CHECK (NODE)) = 1)
+#define CLEAR_DECL_C_BIT_FIELD(NODE) \
+  (DECL_LANG_FLAG_4 (FIELD_DECL_CHECK (NODE)) = 0)
+
+extern void emit_local_var (tree);
+extern tree do_case (tree, tree);
+extern tree build_stmt (enum tree_code, ...);
+extern tree build_case_label (tree, tree, tree);
+
+/* These functions must be defined by each front-end which implements
+   a variant of the C language.  They are used in c-common.c.  */
+
+extern tree build_unary_op (location_t, enum tree_code, tree, int);
+extern tree build_binary_op (location_t, enum tree_code, tree, tree, int);
+extern tree perform_integral_promotions (tree);
+
+/* These functions must be defined by each front-end which implements
+   a variant of the C language.  They are used by port files.  */
+
+extern tree default_conversion (tree);
+
+/* Given two integer or real types, return the type for their sum.
+   Given two compatible ANSI C types, returns the merged type.  */
+
+extern tree common_type (tree, tree);
+
+extern tree decl_constant_value (tree);
+
+/* Handle increment and decrement of boolean types.  */
+extern tree boolean_increment (enum tree_code, tree);
+
+extern int case_compare (splay_tree_key, splay_tree_key);
+
+extern tree c_add_case_label (splay_tree, tree, tree, tree, tree);
+
+extern void c_do_switch_warnings (splay_tree, location_t, tree, tree);
+
+extern tree build_function_call (tree, tree);
+
+extern tree resolve_overloaded_builtin (tree, tree);
+
+extern tree finish_label_address_expr (tree, location_t);
+
+/* Same function prototype, but the C and C++ front ends have
+   different implementations.  Used in c-common.c.  */
+extern tree lookup_label (tree);
+extern tree lookup_name (tree);
+
+extern bool vector_targets_convertible_p (const_tree t1, const_tree t2);
+extern bool vector_types_convertible_p (const_tree t1, const_tree t2, bool emit_lax_note);
+
+extern rtx c_expand_expr (tree, rtx, enum machine_mode, int, rtx *);
+
+extern tree c_staticp (tree);
+
+extern void init_c_lex (void);
+
+extern void c_cpp_builtins (cpp_reader *);
+extern void c_cpp_builtins_optimize_pragma (cpp_reader *, tree, tree);
+
+/* Positive if an implicit `extern "C"' scope has just been entered;
+   negative if such a scope has just been exited.  */
+extern GTY(()) int pending_lang_change;
+
+/* Information recorded about each file examined during compilation.  */
+
+struct c_fileinfo
+{
+  int time;    /* Time spent in the file.  */
+
+  /* Flags used only by C++.
+     INTERFACE_ONLY nonzero means that we are in an "interface" section
+     of the compiler.  INTERFACE_UNKNOWN nonzero means we cannot trust
+     the value of INTERFACE_ONLY.  If INTERFACE_UNKNOWN is zero and
+     INTERFACE_ONLY is zero, it means that we are responsible for
+     exporting definitions that others might need.  */
+  short interface_only;
+  short interface_unknown;
+};
+
+struct c_fileinfo *get_fileinfo (const char *);
+extern void dump_time_statistics (void);
+
+extern bool c_dump_tree (void *, tree);
+
+extern void c_warn_unused_result (gimple_seq);
+
+extern void verify_sequence_points (tree);
+
+extern tree fold_offsetof (tree, tree);
+
+/* Places where an lvalue, or modifiable lvalue, may be required.
+   Used to select diagnostic messages in lvalue_error and
+   readonly_error.  */
+enum lvalue_use {
+  lv_assign,
+  lv_increment,
+  lv_decrement,
+  lv_addressof,
+  lv_asm
+};
+
+extern void lvalue_error (enum lvalue_use);
+
+extern int complete_array_type (tree *, tree, bool);
+
+extern tree builtin_type_for_size (int, bool);
+
+extern void warn_array_subscript_with_type_char (tree);
+extern void warn_about_parentheses (enum tree_code,
+                                   enum tree_code, tree,
+                                   enum tree_code, tree);
+extern void warn_for_unused_label (tree label);
+extern void warn_for_div_by_zero (location_t, tree divisor);
+extern void warn_for_sign_compare (location_t,
+                                  tree orig_op0, tree orig_op1, 
+                                  tree op0, tree op1, 
+                                  tree result_type, 
+                                  enum tree_code resultcode);
+
+/* In c-gimplify.c  */
+extern void c_genericize (tree);
+extern int c_gimplify_expr (tree *, gimple_seq *, gimple_seq *);
+extern tree c_build_bind_expr (tree, tree);
+
+/* In c-pch.c  */
+extern void pch_init (void);
+extern int c_common_valid_pch (cpp_reader *pfile, const char *name, int fd);
+extern void c_common_read_pch (cpp_reader *pfile, const char *name, int fd,
+                              const char *orig);
+extern void c_common_write_pch (void);
+extern void c_common_no_more_pch (void);
+extern void c_common_pch_pragma (cpp_reader *pfile, const char *);
+extern void c_common_print_pch_checksum (FILE *f);
+
+/* In *-checksum.c */
+extern const unsigned char executable_checksum[16];
+
+/* In c-cppbuiltin.c  */
+extern void builtin_define_std (const char *macro);
+extern void builtin_define_with_value (const char *, const char *, int);
+extern void c_stddef_cpp_builtins (void);
+extern void fe_file_change (const struct line_map *);
+extern void c_parse_error (const char *, enum cpp_ttype, tree);
+
+/* Objective-C / Objective-C++ entry points.  */
+
+/* The following ObjC/ObjC++ functions are called by the C and/or C++
+   front-ends; they all must have corresponding stubs in stub-objc.c.  */
+extern tree objc_is_class_name (tree);
+extern tree objc_is_object_ptr (tree);
+extern void objc_check_decl (tree);
+extern int objc_is_reserved_word (tree);
+extern bool objc_compare_types (tree, tree, int, tree);
+extern void objc_volatilize_decl (tree);
+extern bool objc_type_quals_match (tree, tree);
+extern tree objc_rewrite_function_call (tree, tree);
+extern tree objc_message_selector (void);
+extern tree objc_lookup_ivar (tree, tree);
+extern void objc_clear_super_receiver (void);
+extern int objc_is_public (tree, tree);
+extern tree objc_is_id (tree);
+extern void objc_declare_alias (tree, tree);
+extern void objc_declare_class (tree);
+extern void objc_declare_protocols (tree);
+extern tree objc_build_message_expr (tree);
+extern tree objc_finish_message_expr (tree, tree, tree);
+extern tree objc_build_selector_expr (tree);
+extern tree objc_build_protocol_expr (tree);
+extern tree objc_build_encode_expr (tree);
+extern tree objc_build_string_object (tree);
+extern tree objc_get_protocol_qualified_type (tree, tree);
+extern tree objc_get_class_reference (tree);
+extern tree objc_get_class_ivars (tree);
+extern void objc_start_class_interface (tree, tree, tree);
+extern void objc_start_category_interface (tree, tree, tree);
+extern void objc_start_protocol (tree, tree);
+extern void objc_continue_interface (void);
+extern void objc_finish_interface (void);
+extern void objc_start_class_implementation (tree, tree);
+extern void objc_start_category_implementation (tree, tree);
+extern void objc_continue_implementation (void);
+extern void objc_finish_implementation (void);
+extern void objc_set_visibility (int);
+extern void objc_set_method_type (enum tree_code);
+extern tree objc_build_method_signature (tree, tree, tree, bool);
+extern void objc_add_method_declaration (tree);
+extern void objc_start_method_definition (tree);
+extern void objc_finish_method_definition (tree);
+extern void objc_add_instance_variable (tree);
+extern tree objc_build_keyword_decl (tree, tree, tree);
+extern tree objc_build_throw_stmt (tree);
+extern void objc_begin_try_stmt (location_t, tree);
+extern tree objc_finish_try_stmt (void);
+extern void objc_begin_catch_clause (tree);
+extern void objc_finish_catch_clause (void);
+extern void objc_build_finally_clause (location_t, tree);
+extern tree objc_build_synchronized (location_t, tree, tree);
+extern int objc_static_init_needed_p (void);
+extern tree objc_generate_static_init_call (tree);
+extern tree objc_generate_write_barrier (tree, enum tree_code, tree);
+
+/* The following are provided by the C and C++ front-ends, and called by
+   ObjC/ObjC++.  */
+extern void *objc_get_current_scope (void);
+extern void objc_mark_locals_volatile (void *);
+
+/* In c-ppoutput.c  */
+extern void init_pp_output (FILE *);
+extern void preprocess_file (cpp_reader *);
+extern void pp_file_change (const struct line_map *);
+extern void pp_dir_change (cpp_reader *, const char *);
+extern bool check_missing_format_attribute (tree, tree);
+
+/* In c-omp.c  */
+extern tree c_finish_omp_master (tree);
+extern tree c_finish_omp_critical (tree, tree);
+extern tree c_finish_omp_ordered (tree);
+extern void c_finish_omp_barrier (void);
+extern tree c_finish_omp_atomic (enum tree_code, tree, tree);
+extern void c_finish_omp_flush (void);
+extern void c_finish_omp_taskwait (void);
+extern tree c_finish_omp_for (location_t, tree, tree, tree, tree, tree, tree);
+extern void c_split_parallel_clauses (tree, tree *, tree *);
+extern enum omp_clause_default_kind c_omp_predetermined_sharing (tree);
+
+/* Not in c-omp.c; provided by the front end.  */
+extern bool c_omp_sharing_predetermined (tree);
+extern tree c_omp_remap_decl (tree, bool);
+
+/* In order for the format checking to accept the C frontend
+   diagnostic framework extensions, you must include this file before
+   toplev.h, not after.  The C front end formats are a subset of those
+   for C++, so they are the appropriate set to use in common code;
+   cp-tree.h overrides this for C++.  */
+#ifndef GCC_DIAG_STYLE
+#define GCC_DIAG_STYLE __gcc_cdiag__
+#endif
+
+#endif /* ! GCC_C_COMMON_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/c-pretty-print.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/c-pretty-print.h
new file mode 100644 (file)
index 0000000..75f31ca
--- /dev/null
@@ -0,0 +1,211 @@
+/* Various declarations for the C and C++ pretty-printers.
+   Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
+   Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_C_PRETTY_PRINTER
+#define GCC_C_PRETTY_PRINTER
+
+#include "tree.h"
+#include "c-common.h"
+#include "pretty-print.h"
+
+
+typedef enum
+  {
+     pp_c_flag_abstract = 1 << 1,
+     pp_c_flag_last_bit = 2
+  } pp_c_pretty_print_flags;
+
+
+/* The data type used to bundle information necessary for pretty-printing
+   a C or C++ entity.  */
+typedef struct c_pretty_print_info c_pretty_printer;
+
+/* The type of a C pretty-printer 'member' function.  */
+typedef void (*c_pretty_print_fn) (c_pretty_printer *, tree);
+
+/* The datatype that contains information necessary for pretty-printing
+   a tree that represents a C construct.  Any pretty-printer for a
+   language using C/c++ syntax can derive from this datatype and reuse
+   facilities provided here.  It can do so by having a subobject of type
+   c_pretty_printer and override the macro pp_c_base to return a pointer
+   to that subobject.  Such a pretty-printer has the responsibility to
+   initialize the pp_base() part, then call pp_c_pretty_printer_init
+   to set up the components that are specific to the C pretty-printer.
+   A derived pretty-printer can override any function listed in the
+   vtable below.  See cp/cxx-pretty-print.h and cp/cxx-pretty-print.c
+   for an example of derivation.  */
+struct c_pretty_print_info
+{
+  pretty_printer base;
+  /* Points to the first element of an array of offset-list.
+     Not used yet.  */
+  int *offset_list;
+
+  pp_flags flags;
+
+  /* These must be overridden by each of the C and C++ front-end to
+     reflect their understanding of syntactic productions when they differ.  */
+  c_pretty_print_fn declaration;
+  c_pretty_print_fn declaration_specifiers;
+  c_pretty_print_fn declarator;
+  c_pretty_print_fn abstract_declarator;
+  c_pretty_print_fn direct_abstract_declarator;
+  c_pretty_print_fn type_specifier_seq;
+  c_pretty_print_fn direct_declarator;
+  c_pretty_print_fn ptr_operator;
+  c_pretty_print_fn parameter_list;
+  c_pretty_print_fn type_id;
+  c_pretty_print_fn simple_type_specifier;
+  c_pretty_print_fn function_specifier;
+  c_pretty_print_fn storage_class_specifier;
+  c_pretty_print_fn initializer;
+
+  c_pretty_print_fn statement;
+
+  c_pretty_print_fn constant;
+  c_pretty_print_fn id_expression;
+  c_pretty_print_fn primary_expression;
+  c_pretty_print_fn postfix_expression;
+  c_pretty_print_fn unary_expression;
+  c_pretty_print_fn multiplicative_expression;
+  c_pretty_print_fn conditional_expression;
+  c_pretty_print_fn assignment_expression;
+  c_pretty_print_fn expression;
+};
+
+/* Override the pp_base macro.  Derived pretty-printers should not
+   touch this macro.  Instead they should override pp_c_base instead.  */
+#undef pp_base
+#define pp_base(PP)  (&pp_c_base (PP)->base)
+
+
+#define pp_c_tree_identifier(PPI, ID)              \
+   pp_c_identifier (PPI, IDENTIFIER_POINTER (ID))
+
+#define pp_declaration(PPI, T)                    \
+   pp_c_base (PPI)->declaration (pp_c_base (PPI), T)
+#define pp_declaration_specifiers(PPI, D)         \
+   pp_c_base (PPI)->declaration_specifiers (pp_c_base (PPI), D)
+#define pp_abstract_declarator(PP, D)             \
+   pp_c_base (PP)->abstract_declarator (pp_c_base (PP), D)
+#define pp_type_specifier_seq(PPI, D)             \
+   pp_c_base (PPI)->type_specifier_seq (pp_c_base (PPI), D)
+#define pp_declarator(PPI, D)                     \
+   pp_c_base (PPI)->declarator (pp_c_base (PPI), D)
+#define pp_direct_declarator(PPI, D)              \
+   pp_c_base (PPI)->direct_declarator (pp_c_base (PPI), D)
+#define pp_direct_abstract_declarator(PP, D)      \
+   pp_c_base (PP)->direct_abstract_declarator (pp_c_base (PP), D)
+#define pp_ptr_operator(PP, D)                    \
+   pp_c_base (PP)->ptr_operator (pp_c_base (PP), D)
+#define pp_parameter_list(PPI, T)                 \
+  pp_c_base (PPI)->parameter_list (pp_c_base (PPI), T)
+#define pp_type_id(PPI, D)                        \
+  pp_c_base (PPI)->type_id (pp_c_base (PPI), D)
+#define pp_simple_type_specifier(PP, T)           \
+  pp_c_base (PP)->simple_type_specifier (pp_c_base (PP), T)
+#define pp_function_specifier(PP, D)              \
+  pp_c_base (PP)->function_specifier (pp_c_base (PP), D)
+#define pp_storage_class_specifier(PP, D)         \
+  pp_c_base (PP)->storage_class_specifier (pp_c_base (PP), D);
+
+#define pp_statement(PPI, S)                      \
+  pp_c_base (PPI)->statement (pp_c_base (PPI), S)
+
+#define pp_constant(PP, E) \
+  pp_c_base (PP)->constant (pp_c_base (PP), E)
+#define pp_id_expression(PP, E)  \
+  pp_c_base (PP)->id_expression (pp_c_base (PP), E)
+#define pp_primary_expression(PPI, E)             \
+  pp_c_base (PPI)->primary_expression (pp_c_base (PPI), E)
+#define pp_postfix_expression(PPI, E)             \
+  pp_c_base (PPI)->postfix_expression (pp_c_base (PPI), E)
+#define pp_unary_expression(PPI, E)               \
+  pp_c_base (PPI)->unary_expression (pp_c_base (PPI), E)
+#define pp_initializer(PPI, E)                    \
+  pp_c_base (PPI)->initializer (pp_c_base (PPI), E)
+#define pp_multiplicative_expression(PPI, E)      \
+  pp_c_base (PPI)->multiplicative_expression (pp_c_base (PPI), E)
+#define pp_conditional_expression(PPI, E)         \
+  pp_c_base (PPI)->conditional_expression (pp_c_base (PPI), E)
+#define pp_assignment_expression(PPI, E)          \
+   pp_c_base (PPI)->assignment_expression (pp_c_base (PPI), E)
+#define pp_expression(PP, E)                      \
+   pp_c_base (PP)->expression (pp_c_base (PP), E)
+
+
+/* Returns the c_pretty_printer base object of PRETTY-PRINTER.  This
+   macro must be overridden by any subclass of c_pretty_print_info.  */
+#define pp_c_base(PP)  (PP)
+
+extern void pp_c_pretty_printer_init (c_pretty_printer *);
+void pp_c_whitespace (c_pretty_printer *);
+void pp_c_left_paren (c_pretty_printer *);
+void pp_c_right_paren (c_pretty_printer *);
+void pp_c_left_brace (c_pretty_printer *);
+void pp_c_right_brace (c_pretty_printer *);
+void pp_c_left_bracket (c_pretty_printer *);
+void pp_c_right_bracket (c_pretty_printer *);
+void pp_c_dot (c_pretty_printer *);
+void pp_c_ampersand (c_pretty_printer *);
+void pp_c_star (c_pretty_printer *);
+void pp_c_arrow (c_pretty_printer *);
+void pp_c_semicolon (c_pretty_printer *);
+void pp_c_complement (c_pretty_printer *);
+void pp_c_exclamation (c_pretty_printer *);
+void pp_c_space_for_pointer_operator (c_pretty_printer *, tree);
+
+/* Declarations.  */
+void pp_c_tree_decl_identifier (c_pretty_printer *, tree);
+void pp_c_function_definition (c_pretty_printer *, tree);
+void pp_c_attributes (c_pretty_printer *, tree);
+void pp_c_type_qualifier_list (c_pretty_printer *, tree);
+void pp_c_parameter_type_list (c_pretty_printer *, tree);
+void pp_c_declaration (c_pretty_printer *, tree);
+void pp_c_declaration_specifiers (c_pretty_printer *, tree);
+void pp_c_declarator (c_pretty_printer *, tree);
+void pp_c_direct_declarator (c_pretty_printer *, tree);
+void pp_c_specifier_qualifier_list (c_pretty_printer *, tree);
+void pp_c_function_specifier (c_pretty_printer *, tree);
+void pp_c_type_id (c_pretty_printer *, tree);
+void pp_c_direct_abstract_declarator (c_pretty_printer *, tree);
+void pp_c_type_specifier (c_pretty_printer *, tree);
+void pp_c_storage_class_specifier (c_pretty_printer *, tree);
+/* Statements.  */
+void pp_c_statement (c_pretty_printer *, tree);
+/* Expressions.  */
+void pp_c_expression (c_pretty_printer *, tree);
+void pp_c_logical_or_expression (c_pretty_printer *, tree);
+void pp_c_expression_list (c_pretty_printer *, tree);
+void pp_c_constructor_elts (c_pretty_printer *, VEC(constructor_elt,gc) *);
+void pp_c_call_argument_list (c_pretty_printer *, tree);
+void pp_c_unary_expression (c_pretty_printer *, tree);
+void pp_c_cast_expression (c_pretty_printer *, tree);
+void pp_c_postfix_expression (c_pretty_printer *, tree);
+void pp_c_primary_expression (c_pretty_printer *, tree);
+void pp_c_init_declarator (c_pretty_printer *, tree);
+void pp_c_constant (c_pretty_printer *, tree);
+void pp_c_id_expression (c_pretty_printer *, tree);
+void pp_c_identifier (c_pretty_printer *, const char *);
+void pp_c_string_literal (c_pretty_printer *, tree);
+
+void print_c_tree (FILE *file, tree t);
+
+#endif /* GCC_C_PRETTY_PRINTER */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cgraph.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cgraph.h
new file mode 100644 (file)
index 0000000..f344528
--- /dev/null
@@ -0,0 +1,519 @@
+/* Callgraph handling code.
+   Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+   Free Software Foundation, Inc.
+   Contributed by Jan Hubicka
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_CGRAPH_H
+#define GCC_CGRAPH_H
+#include "tree.h"
+#include "basic-block.h"
+
+enum availability
+{
+  /* Not yet set by cgraph_function_body_availability.  */
+  AVAIL_UNSET,
+  /* Function body/variable initializer is unknown.  */
+  AVAIL_NOT_AVAILABLE,
+  /* Function body/variable initializer is known but might be replaced
+     by a different one from other compilation unit and thus needs to
+     be dealt with a care.  Like AVAIL_NOT_AVAILABLE it can have
+     arbitrary side effects on escaping variables and functions, while
+     like AVAILABLE it might access static variables.  */
+  AVAIL_OVERWRITABLE,
+  /* Function body/variable initializer is known and will be used in final
+     program.  */
+  AVAIL_AVAILABLE,
+  /* Function body/variable initializer is known and all it's uses are explicitly
+     visible within current unit (ie it's address is never taken and it is not
+     exported to other units).
+     Currently used only for functions.  */
+  AVAIL_LOCAL
+};
+
+extern const char * const cgraph_availability_names[];
+
+/* Information about the function collected locally.
+   Available after function is analyzed.  */
+
+struct cgraph_local_info GTY(())
+{
+  struct inline_summary {
+    /* Estimated stack frame consumption by the function.  */
+    HOST_WIDE_INT estimated_self_stack_size;
+
+    /* Size of the function before inlining.  */
+    int self_insns;
+    /* Size of the hot regions of the function before inlining.  */
+    int self_hot_insns;
+  } inline_summary;
+
+  /* Set when function function is visible in current compilation unit only
+     and its address is never taken.  */
+  unsigned local : 1;
+
+  /* Set when function is visible by other units.  */
+  unsigned externally_visible : 1;
+
+  /* Set once it has been finalized so we consider it to be output.  */
+  unsigned finalized : 1;
+
+  /* False when there something makes inlining impossible (such as va_arg).  */
+  unsigned inlinable : 1;
+
+  /* True when function should be inlined independently on its size.  */
+  unsigned disregard_inline_limits : 1;
+
+  /* True when the function has been originally extern inline, but it is
+     redefined now.  */
+  unsigned redefined_extern_inline : 1;
+
+  /* True if statics_read_for_function and
+     statics_written_for_function contain valid data.  */
+  unsigned for_functions_valid : 1;
+
+  /* True if the function is going to be emitted in some other translation
+     unit, referenced from vtable.  */
+  unsigned vtable_method : 1;
+};
+
+/* Information about the function that needs to be computed globally
+   once compilation is finished.  Available only with -funit-at-a-time.  */
+
+struct cgraph_global_info GTY(())
+{
+  /* Estimated stack frame consumption by the function.  */
+  HOST_WIDE_INT estimated_stack_size;
+  HOST_WIDE_INT estimated_stack_size_pessimistic;
+
+  /* Expected offset of the stack frame of inlined function.  */
+  HOST_WIDE_INT stack_frame_offset;
+
+  /* For inline clones this points to the function they will be
+     inlined into.  */
+  struct cgraph_node *inlined_to;
+
+  /* Estimated size of the function after inlining.  */
+  int insns;
+
+  /* Estimated growth after inlining.  INT_MIN if not computed.  */
+  int estimated_growth;
+
+  /* Set iff the function has been inlined at least once.  */
+  bool inlined;
+};
+
+/* Information about the function that is propagated by the RTL backend.
+   Available only for functions that has been already assembled.  */
+
+struct cgraph_rtl_info GTY(())
+{
+   unsigned int preferred_incoming_stack_boundary;
+};
+
+/* The cgraph data structure.
+   Each function decl has assigned cgraph_node listing callees and callers.  */
+
+struct cgraph_node GTY((chain_next ("%h.next"), chain_prev ("%h.previous")))
+{
+  tree decl;
+  struct cgraph_edge *callees;
+  struct cgraph_edge *callers;
+  struct cgraph_node *next;
+  struct cgraph_node *previous;
+  /* For nested functions points to function the node is nested in.  */
+  struct cgraph_node *origin;
+  /* Points to first nested function, if any.  */
+  struct cgraph_node *nested;
+  /* Pointer to the next function with same origin, if any.  */
+  struct cgraph_node *next_nested;
+  /* Pointer to the next function in cgraph_nodes_queue.  */
+  struct cgraph_node *next_needed;
+  /* Pointer to the next clone.  */
+  struct cgraph_node *next_clone;
+  struct cgraph_node *prev_clone;
+  /* Pointer to a single unique cgraph node for this function.  If the
+     function is to be output, this is the copy that will survive.  */
+  struct cgraph_node *master_clone;
+  /* For functions with many calls sites it holds map from call expression
+     to the edge to speed up cgraph_edge function.  */
+  htab_t GTY((param_is (struct cgraph_edge))) call_site_hash;
+
+  PTR GTY ((skip)) aux;
+
+  struct cgraph_local_info local;
+  struct cgraph_global_info global;
+  struct cgraph_rtl_info rtl;
+
+  /* Expected number of executions: calculated in profile.c.  */
+  gcov_type count;
+  /* Unique id of the node.  */
+  int uid;
+  /* Ordering of all cgraph nodes.  */
+  int order;
+
+  /* unique id for profiling. pid is not suitable because of different
+     number of cfg nodes with -fprofile-generate and -fprofile-use */
+  int pid;
+
+  /* Set when function must be output - it is externally visible
+     or its address is taken.  */
+  unsigned needed : 1;
+  /* Set when decl is an abstract function pointed to by the
+     ABSTRACT_DECL_ORIGIN of a reachable function.  */
+  unsigned abstract_and_needed : 1;
+  /* Set when function is reachable by call from other function
+     that is either reachable or needed.  */
+  unsigned reachable : 1;
+  /* Set once the function is lowered (i.e. its CFG is built).  */
+  unsigned lowered : 1;
+  /* Set once the function has been instantiated and its callee
+     lists created.  */
+  unsigned analyzed : 1;
+  /* Set when function is scheduled to be assembled.  */
+  unsigned output : 1;
+  /* Set for aliases once they got through assemble_alias.  */
+  unsigned alias : 1;
+
+  /* Is this function cloned during versioning ?  */
+  unsigned is_versioned_clone : 1;
+
+  /* In non-unit-at-a-time mode the function body of inline candidates is saved
+     into clone before compiling so the function in original form can be
+     inlined later.  This pointer points to the clone.  */
+  tree inline_decl;
+};
+
+struct cgraph_edge GTY((chain_next ("%h.next_caller"), chain_prev ("%h.prev_caller")))
+{
+  struct cgraph_node *caller;
+  struct cgraph_node *callee;
+  struct cgraph_edge *prev_caller;
+  struct cgraph_edge *next_caller;
+  struct cgraph_edge *prev_callee;
+  struct cgraph_edge *next_callee;
+  gimple call_stmt;
+  PTR GTY ((skip (""))) aux;
+  /* When NULL, inline this call.  When non-NULL, points to the explanation
+     why function was not inlined.  */
+  const char *inline_failed;
+  /* Expected number of executions: calculated in profile.c.  */
+  gcov_type count;
+  /* Expected frequency of executions within the function. 
+     When set to CGRAPH_FREQ_BASE, the edge is expected to be called once
+     per function call.  The range is 0 to CGRAPH_FREQ_MAX.  */
+  int frequency;
+  /* Depth of loop nest, 1 means no loop nest.  */
+  unsigned int loop_nest : 31;
+  /* Whether this edge describes a call that was originally indirect.  */
+  unsigned int indirect_call : 1;
+  /* Unique id of the edge.  */
+  int uid;
+};
+
+#define CGRAPH_FREQ_BASE 1000
+#define CGRAPH_FREQ_MAX 100000
+
+typedef struct cgraph_edge *cgraph_edge_p;
+
+DEF_VEC_P(cgraph_edge_p);
+DEF_VEC_ALLOC_P(cgraph_edge_p,heap);
+
+/* The varpool data structure.
+   Each static variable decl has assigned varpool_node.  */
+
+struct varpool_node GTY((chain_next ("%h.next")))
+{
+  tree decl;
+  /* Pointer to the next function in varpool_nodes.  */
+  struct varpool_node *next;
+  /* Pointer to the next function in varpool_nodes_queue.  */
+  struct varpool_node *next_needed;
+  /* Ordering of all cgraph nodes.  */
+  int order;
+
+  /* The module in which it is first declared.  */
+  unsigned module_id;
+  /* Set when function must be output - it is externally visible
+     or its address is taken.  */
+  unsigned needed : 1;
+  /* Needed variables might become dead by optimization.  This flag
+     forces the variable to be output even if it appears dead otherwise.  */
+  unsigned force_output : 1;
+  /* Set once the variable has been instantiated and its callee
+     lists created.  */
+  unsigned analyzed : 1;
+  /* Set once it has been finalized so we consider it to be output.  */
+  unsigned finalized : 1;
+  /* Set when variable is scheduled to be assembled.  */
+  unsigned output : 1;
+  /* Set when function is visible by other units.  */
+  unsigned externally_visible : 1;
+  /* Set for aliases once they got through assemble_alias.  */
+  unsigned alias : 1;
+};
+
+/* Every top level asm statement is put into a cgraph_asm_node.  */
+
+struct cgraph_asm_node GTY(())
+{
+  /* Next asm node.  */
+  struct cgraph_asm_node *next;
+  /* String for this asm node.  */
+  tree asm_str;
+  /* Ordering of all cgraph nodes.  */
+  int order;
+};
+
+extern GTY(()) struct cgraph_node *cgraph_nodes;
+extern GTY(()) int cgraph_n_nodes;
+extern GTY(()) int cgraph_max_uid;
+extern GTY(()) int cgraph_edge_max_uid;
+extern GTY(()) int cgraph_max_pid;
+extern bool cgraph_global_info_ready;
+enum cgraph_state
+{
+  /* Callgraph is being constructed.  It is safe to add new functions.  */
+  CGRAPH_STATE_CONSTRUCTION,
+  /* Callgraph is built and IPA passes are being run.  */
+  CGRAPH_STATE_IPA,
+  /* Callgraph is built and all functions are transformed to SSA form.  */
+  CGRAPH_STATE_IPA_SSA,
+  /* Functions are now ordered and being passed to RTL expanders.  */
+  CGRAPH_STATE_EXPANSION,
+  /* All cgraph expansion is done.  */
+  CGRAPH_STATE_FINISHED
+};
+extern enum cgraph_state cgraph_state;
+extern bool cgraph_function_flags_ready;
+extern GTY(()) struct cgraph_node *cgraph_nodes_queue;
+extern GTY(()) struct cgraph_node *cgraph_new_nodes;
+
+extern GTY(()) struct cgraph_asm_node *cgraph_asm_nodes;
+extern GTY(()) int cgraph_order;
+
+/* In cgraph.c  */
+void dump_cgraph (FILE *);
+void debug_cgraph (void);
+void dump_cgraph_node (FILE *, struct cgraph_node *);
+void debug_cgraph_node (struct cgraph_node *);
+void cgraph_insert_node_to_hashtable (struct cgraph_node *node);
+void cgraph_remove_edge (struct cgraph_edge *);
+void cgraph_remove_node (struct cgraph_node *);
+void cgraph_add_assembler_hash_node (struct cgraph_node *);
+void cgraph_remove_assembler_hash_node (struct cgraph_node *);
+void cgraph_remove_fake_indirect_call_in_edges (struct cgraph_node *);
+extern bool cgraph_need_artificial_indirect_call_edges;
+extern bool cgraph_is_fake_indirect_call_edge (struct cgraph_edge *e);
+
+void cgraph_release_function_body (struct cgraph_node *);
+void cgraph_node_remove_callees (struct cgraph_node *node);
+struct cgraph_edge *cgraph_create_edge (struct cgraph_node *,
+                                       struct cgraph_node *,
+                                       gimple, gcov_type, int, int);
+struct cgraph_node *cgraph_node (tree);
+struct cgraph_node *cgraph_node_for_asm (tree asmname);
+struct cgraph_edge *cgraph_edge (struct cgraph_node *, gimple);
+void cgraph_set_call_stmt (struct cgraph_edge *, gimple);
+void cgraph_update_edges_for_call_stmt (gimple, gimple);
+struct cgraph_local_info *cgraph_local_info (tree);
+struct cgraph_global_info *cgraph_global_info (tree);
+struct cgraph_rtl_info *cgraph_rtl_info (tree);
+const char * cgraph_node_name (struct cgraph_node *);
+struct cgraph_edge * cgraph_clone_edge (struct cgraph_edge *,
+                                       struct cgraph_node *,
+                                       gimple, gcov_type, int, int, bool);
+struct cgraph_node * cgraph_clone_node (struct cgraph_node *, gcov_type, int,
+                                       int, bool);
+
+void cgraph_redirect_edge_callee (struct cgraph_edge *, struct cgraph_node *);
+
+struct cgraph_asm_node *cgraph_add_asm_node (tree);
+
+bool cgraph_function_possibly_inlined_p (tree);
+void cgraph_unnest_node (struct cgraph_node *);
+
+enum availability cgraph_function_body_availability (struct cgraph_node *);
+bool cgraph_is_master_clone (struct cgraph_node *);
+struct cgraph_node *cgraph_master_clone (struct cgraph_node *);
+void cgraph_add_new_function (tree, bool);
+
+/* In cgraphunit.c  */
+void cgraph_finalize_function (tree, bool);
+void cgraph_mark_if_needed (tree);
+void cgraph_finalize_compilation_unit (void);
+void cgraph_optimize (void);
+void cgraph_mark_needed_node (struct cgraph_node *);
+void cgraph_mark_reachable_node (struct cgraph_node *);
+bool cgraph_inline_p (struct cgraph_edge *, const char **reason);
+bool cgraph_preserve_function_body_p (tree);
+void verify_cgraph (void);
+void verify_cgraph_node (struct cgraph_node *);
+void cgraph_build_static_cdtor (char which, tree body, int priority);
+void cgraph_reset_static_var_maps (void);
+void init_cgraph (void);
+struct cgraph_node *cgraph_function_versioning (struct cgraph_node *,
+                                               VEC(cgraph_edge_p,heap)*,
+                                               varray_type,
+                                               bitmap);
+void cgraph_analyze_function (struct cgraph_node *);
+struct cgraph_node *save_inline_function_body (struct cgraph_node *);
+void record_references_in_initializer (tree);
+bool cgraph_process_new_functions (void);
+
+/* Module info structure.  */ 
+struct cgraph_mod_info GTY (())
+{
+  unsigned module_id;
+};
+
+/* LIPO linker symbol table entry for functions.  */
+
+struct cgraph_sym GTY(())
+{
+  tree assembler_name;
+  struct cgraph_node *rep_node;
+  tree rep_decl;
+  htab_t GTY ((param_is (struct cgraph_mod_info))) def_module_hash;
+  bool is_promoted_static;
+};
+
+void cgraph_init_gid_map (void);
+void cgraph_add_fake_indirect_call_edges (void);
+void cgraph_do_link (void);
+struct cgraph_sym *cgraph_link_node (struct cgraph_node *);
+tree cgraph_find_decl (tree asm_name);
+void cgraph_remove_link_node (struct cgraph_node *node);
+struct cgraph_node *cgraph_real_node (tree decl);
+struct cgraph_node *cgraph_real_node_1 (tree decl, bool);
+unsigned  cgraph_get_module_id (tree fndecl);
+bool cgraph_is_auxiliary (tree fndecl);
+void cgraph_process_module_scope_statics (void);
+bool cgraph_is_promoted_static_func (tree fndecl);
+bool cgraph_is_inline_body_available_in_module (tree fndecl, unsigned module_id);
+bool cgraph_is_decl_external (struct cgraph_node *);
+void cgraph_unify_type_alias_sets (void);
+void varpool_do_link (void);
+void varpool_link_node (struct varpool_node *);
+void varpool_remove_link_node (struct varpool_node *node);
+struct varpool_node *real_varpool_node (tree decl);
+bool varpool_is_auxiliary (struct varpool_node *node);
+void varpool_get_referenced_asm_ids (VEC(tree, gc) **);
+void varpool_clear_asm_id_reference_bit (void);
+
+typedef void (*cgraph_edge_hook)(struct cgraph_edge *, void *);
+typedef void (*cgraph_node_hook)(struct cgraph_node *, void *);
+typedef void (*cgraph_2edge_hook)(struct cgraph_edge *, struct cgraph_edge *,
+                                 void *);
+typedef void (*cgraph_2node_hook)(struct cgraph_node *, struct cgraph_node *,
+                                 void *);
+struct cgraph_edge_hook_list;
+struct cgraph_node_hook_list;
+struct cgraph_2edge_hook_list;
+struct cgraph_2node_hook_list;
+struct cgraph_edge_hook_list *cgraph_add_edge_removal_hook (cgraph_edge_hook, void *);
+void cgraph_remove_edge_removal_hook (struct cgraph_edge_hook_list *);
+struct cgraph_node_hook_list *cgraph_add_node_removal_hook (cgraph_node_hook,
+                                                           void *);
+void cgraph_remove_node_removal_hook (struct cgraph_node_hook_list *);
+struct cgraph_node_hook_list *cgraph_add_function_insertion_hook (cgraph_node_hook,
+                                                                 void *);
+void cgraph_remove_function_insertion_hook (struct cgraph_node_hook_list *);
+void cgraph_call_function_insertion_hooks (struct cgraph_node *node);
+struct cgraph_2edge_hook_list *cgraph_add_edge_duplication_hook (cgraph_2edge_hook, void *);
+void cgraph_remove_edge_duplication_hook (struct cgraph_2edge_hook_list *);
+struct cgraph_2node_hook_list *cgraph_add_node_duplication_hook (cgraph_2node_hook, void *);
+void cgraph_remove_node_duplication_hook (struct cgraph_2node_hook_list *);
+
+/* In cgraphbuild.c  */
+unsigned int rebuild_cgraph_edges (void);
+int compute_call_stmt_bb_frequency (basic_block bb);
+
+/* In ipa.c  */
+bool cgraph_remove_unreachable_nodes (bool, FILE *);
+int cgraph_postorder (struct cgraph_node **);
+
+bool cgraph_maybe_hot_edge_p (struct cgraph_edge *e);
+
+/* In varpool.c  */
+
+extern GTY(()) struct varpool_node *varpool_nodes_queue;
+extern GTY(()) struct varpool_node *varpool_nodes;
+
+struct varpool_node *varpool_node (tree);
+struct varpool_node *varpool_node_for_asm (tree asmname);
+void varpool_mark_needed_node (struct varpool_node *);
+void dump_varpool (FILE *);
+void dump_varpool_node (FILE *, struct varpool_node *);
+
+void varpool_finalize_decl (tree);
+bool decide_is_variable_needed (struct varpool_node *, tree);
+enum availability cgraph_variable_initializer_availability (struct varpool_node *);
+
+bool varpool_assemble_pending_decls (void);
+bool varpool_assemble_decl (struct varpool_node *node);
+bool varpool_analyze_pending_decls (void);
+void varpool_remove_unreferenced_decls (void);
+void varpool_empty_needed_queue (void);
+
+/* Walk all reachable static variables.  */
+#define FOR_EACH_STATIC_VARIABLE(node) \
+   for ((node) = varpool_nodes_queue; (node); (node) = (node)->next_needed)
+
+/* Return first reachable static variable with initializer.  */
+static inline struct varpool_node *
+varpool_first_static_initializer (void)
+{
+  struct varpool_node *node;
+  for (node = varpool_nodes_queue; node; node = node->next_needed)
+    {
+      gcc_assert (TREE_CODE (node->decl) == VAR_DECL);
+      if (DECL_INITIAL (node->decl))
+       return node;
+    }
+  return NULL;
+}
+
+/* Return next reachable static variable with initializer after NODE.  */
+static inline struct varpool_node *
+varpool_next_static_initializer (struct varpool_node *node)
+{
+  for (node = node->next_needed; node; node = node->next_needed)
+    {
+      gcc_assert (TREE_CODE (node->decl) == VAR_DECL);
+      if (DECL_INITIAL (node->decl))
+       return node;
+    }
+  return NULL;
+}
+
+/* Walk all static variables with initializer set.  */
+#define FOR_EACH_STATIC_INITIALIZER(node) \
+   for ((node) = varpool_first_static_initializer (); (node); \
+        (node) = varpool_next_static_initializer (node))
+
+/* In ipa-inline.c  */
+void cgraph_clone_inlined_nodes (struct cgraph_edge *, bool, bool);
+bool cgraph_default_inline_p (struct cgraph_node *, const char **);
+unsigned int compute_inline_parameters (struct cgraph_node *);
+
+
+/* Create a new static variable of type TYPE.  */
+tree add_new_static_var (tree type);
+
+#endif  /* GCC_CGRAPH_H  */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/arm-protos.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/config/arm/arm-protos.h
new file mode 100644 (file)
index 0000000..8d03141
--- /dev/null
@@ -0,0 +1,215 @@
+/* Prototypes for exported functions defined in arm.c and pe.c
+   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+   Free Software Foundation, Inc.
+   Contributed by Richard Earnshaw (rearnsha@arm.com)
+   Minor hacks by Nick Clifton (nickc@cygnus.com)
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_ARM_PROTOS_H
+#define GCC_ARM_PROTOS_H
+
+extern void arm_override_options (void);
+extern void arm_optimization_options (int, int);
+extern int use_return_insn (int, rtx);
+extern int arm_regno_class (int);
+extern void arm_load_pic_register (unsigned long);
+extern int arm_volatile_func (void);
+extern const char *arm_output_epilogue (rtx);
+extern void arm_expand_prologue (void);
+extern const char *arm_strip_name_encoding (const char *);
+extern void arm_asm_output_labelref (FILE *, const char *);
+extern void thumb2_asm_output_opcode (FILE *);
+extern unsigned long arm_current_func_type (void);
+extern HOST_WIDE_INT arm_compute_initial_elimination_offset (unsigned int,
+                                                            unsigned int);
+extern HOST_WIDE_INT thumb_compute_initial_elimination_offset (unsigned int,
+                                                              unsigned int);
+extern unsigned int arm_dbx_register_number (unsigned int);
+extern void arm_output_fn_unwind (FILE *, bool);
+  
+
+#ifdef RTX_CODE
+extern bool arm_vector_mode_supported_p (enum machine_mode);
+extern int arm_hard_regno_mode_ok (unsigned int, enum machine_mode);
+extern int const_ok_for_arm (HOST_WIDE_INT);
+extern int arm_split_constant (RTX_CODE, enum machine_mode, rtx,
+                              HOST_WIDE_INT, rtx, rtx, int);
+extern RTX_CODE arm_canonicalize_comparison (RTX_CODE, enum machine_mode,
+                                            rtx *);
+extern int legitimate_pic_operand_p (rtx);
+extern rtx legitimize_pic_address (rtx, enum machine_mode, rtx);
+extern rtx legitimize_tls_address (rtx, rtx);
+extern int arm_legitimate_address_p  (enum machine_mode, rtx, RTX_CODE, int);
+extern int thumb1_legitimate_address_p (enum machine_mode, rtx, int);
+extern int thumb2_legitimate_address_p  (enum machine_mode, rtx, int);
+extern int thumb_legitimate_offset_p (enum machine_mode, HOST_WIDE_INT);
+extern rtx arm_legitimize_address (rtx, rtx, enum machine_mode);
+extern rtx thumb_legitimize_address (rtx, rtx, enum machine_mode);
+extern rtx thumb_legitimize_reload_address (rtx *, enum machine_mode, int, int,
+                                           int);
+extern int arm_const_double_rtx (rtx);
+extern int neg_const_double_rtx_ok_for_fpa (rtx);
+extern int vfp3_const_double_rtx (rtx);
+extern int neon_immediate_valid_for_move (rtx, enum machine_mode, rtx *, int *);
+extern int neon_immediate_valid_for_logic (rtx, enum machine_mode, int, rtx *,
+                                          int *);
+extern char *neon_output_logic_immediate (const char *, rtx *,
+                                         enum machine_mode, int, int);
+extern void neon_pairwise_reduce (rtx, rtx, enum machine_mode,
+                                 rtx (*) (rtx, rtx, rtx));
+extern void neon_expand_vector_init (rtx, rtx);
+extern void neon_lane_bounds (rtx, HOST_WIDE_INT, HOST_WIDE_INT);
+extern void neon_const_bounds (rtx, HOST_WIDE_INT, HOST_WIDE_INT);
+extern HOST_WIDE_INT neon_element_bits (enum machine_mode);
+extern void neon_reinterpret (rtx, rtx);
+extern void neon_emit_pair_result_insn (enum machine_mode,
+                                       rtx (*) (rtx, rtx, rtx, rtx),
+                                       rtx, rtx, rtx);
+extern void neon_disambiguate_copy (rtx *, rtx *, rtx *, unsigned int);
+extern enum reg_class coproc_secondary_reload_class (enum machine_mode, rtx,
+                                                    bool);
+extern bool arm_tls_referenced_p (rtx);
+extern bool arm_cannot_force_const_mem (rtx);
+
+extern int cirrus_memory_offset (rtx);
+extern int arm_coproc_mem_operand (rtx, bool);
+extern int neon_vector_mem_operand (rtx, bool);
+extern int neon_struct_mem_operand (rtx);
+extern int arm_no_early_store_addr_dep (rtx, rtx);
+extern int arm_no_early_alu_shift_dep (rtx, rtx);
+extern int arm_no_early_alu_shift_value_dep (rtx, rtx);
+extern int arm_no_early_mul_dep (rtx, rtx);
+extern int arm_mac_accumulator_is_mul_result (rtx, rtx);
+
+extern int tls_mentioned_p (rtx);
+extern int symbol_mentioned_p (rtx);
+extern int label_mentioned_p (rtx);
+extern RTX_CODE minmax_code (rtx);
+extern int adjacent_mem_locations (rtx, rtx);
+extern int load_multiple_sequence (rtx *, int, int *, int *, HOST_WIDE_INT *);
+extern const char *emit_ldm_seq (rtx *, int);
+extern int store_multiple_sequence (rtx *, int, int *, int *, HOST_WIDE_INT *);
+extern const char * emit_stm_seq (rtx *, int);
+extern rtx arm_gen_load_multiple (int, int, rtx, int, int,
+                                 rtx, HOST_WIDE_INT *);
+extern rtx arm_gen_store_multiple (int, int, rtx, int, int,
+                                  rtx, HOST_WIDE_INT *);
+extern int arm_gen_movmemqi (rtx *);
+extern enum machine_mode arm_select_cc_mode (RTX_CODE, rtx, rtx);
+extern enum machine_mode arm_select_dominance_cc_mode (rtx, rtx,
+                                                      HOST_WIDE_INT);
+extern rtx arm_gen_compare_reg (RTX_CODE, rtx, rtx);
+extern rtx arm_gen_return_addr_mask (void);
+extern void arm_reload_in_hi (rtx *);
+extern void arm_reload_out_hi (rtx *);
+extern int arm_const_double_inline_cost (rtx);
+extern bool arm_const_double_by_parts (rtx);
+extern const char *fp_immediate_constant (rtx);
+extern void arm_emit_call_insn (rtx, rtx);
+extern const char *output_call (rtx *);
+extern const char *output_call_mem (rtx *);
+void arm_emit_movpair (rtx, rtx);
+extern const char *output_mov_long_double_fpa_from_arm (rtx *);
+extern const char *output_mov_long_double_arm_from_fpa (rtx *);
+extern const char *output_mov_long_double_arm_from_arm (rtx *);
+extern const char *output_mov_double_fpa_from_arm (rtx *);
+extern const char *output_mov_double_arm_from_fpa (rtx *);
+extern const char *output_move_double (rtx *);
+extern const char *output_move_quad (rtx *);
+extern const char *output_move_vfp (rtx *operands);
+extern const char *output_move_neon (rtx *operands);
+extern const char *output_add_immediate (rtx *);
+extern const char *arithmetic_instr (rtx, int);
+extern void output_ascii_pseudo_op (FILE *, const unsigned char *, int);
+extern const char *output_return_instruction (rtx, int, int);
+extern void arm_poke_function_name (FILE *, const char *);
+extern void arm_print_operand (FILE *, rtx, int);
+extern void arm_print_operand_address (FILE *, rtx);
+extern void arm_final_prescan_insn (rtx);
+extern int arm_debugger_arg_offset (int, rtx);
+extern bool arm_is_long_call_p (tree);
+extern int    arm_emit_vector_const (FILE *, rtx);
+extern const char * arm_output_load_gr (rtx *);
+extern const char *vfp_output_fstmd (rtx *);
+extern void arm_set_return_address (rtx, rtx);
+extern int arm_eliminable_register (rtx);
+extern const char *arm_output_shift(rtx *, int);
+
+extern bool arm_output_addr_const_extra (FILE *, rtx);
+
+#if defined TREE_CODE
+extern rtx arm_function_arg (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
+extern void arm_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree);
+extern bool arm_pad_arg_upward (enum machine_mode, const_tree);
+extern bool arm_pad_reg_upward (enum machine_mode, tree, int);
+extern bool arm_needs_doubleword_align (enum machine_mode, tree);
+extern rtx arm_function_value(const_tree, const_tree);
+#endif
+extern int arm_apply_result_size (void);
+
+#endif /* RTX_CODE */
+
+extern int arm_float_words_big_endian (void);
+
+/* Thumb functions.  */
+extern void arm_init_expanders (void);
+extern const char *thumb_unexpanded_epilogue (void);
+extern void thumb1_expand_prologue (void);
+extern void thumb1_expand_epilogue (void);
+#ifdef TREE_CODE
+extern int is_called_in_ARM_mode (tree);
+#endif
+extern int thumb_shiftable_const (unsigned HOST_WIDE_INT);
+#ifdef RTX_CODE
+extern void thumb1_final_prescan_insn (rtx);
+extern void thumb2_final_prescan_insn (rtx);
+extern const char *thumb_load_double_from_address (rtx *);
+extern const char *thumb_output_move_mem_multiple (int, rtx *);
+extern const char *thumb_call_via_reg (rtx);
+extern void thumb_expand_movmemqi (rtx *);
+extern rtx arm_return_addr (int, rtx);
+extern void thumb_reload_out_hi (rtx *);
+extern void thumb_reload_in_hi (rtx *);
+extern void thumb_set_return_address (rtx, rtx);
+extern const char *thumb2_output_casesi(rtx *);
+#endif
+
+/* Defined in pe.c.  */
+extern int arm_dllexport_name_p (const char *);
+extern int arm_dllimport_name_p (const char *);
+
+#ifdef TREE_CODE
+extern void arm_pe_unique_section (tree, int);
+extern void arm_pe_encode_section_info (tree, rtx, int);
+extern int arm_dllexport_p (tree);
+extern int arm_dllimport_p (tree);
+extern void arm_mark_dllexport (tree);
+extern void arm_mark_dllimport (tree);
+#endif
+
+extern void arm_pr_long_calls (struct cpp_reader *);
+extern void arm_pr_no_long_calls (struct cpp_reader *);
+extern void arm_pr_long_calls_off (struct cpp_reader *);
+
+extern void arm_lang_object_attributes_init(void);
+
+extern const char *arm_mangle_type (const_tree);
+
+extern void arm_order_regs_for_local_alloc (void);
+
+#endif /* ! GCC_ARM_PROTOS_H */
index 5500839..1ed500c 100644 (file)
@@ -1,5 +1,5 @@
 /* Generated automatically. */
-static const char configuration_arguments[] = "/home/dougkwan/android-tool-src/toolchain/android-toolchain/gcc-4.4.0/configure --prefix=/g/users/dougkwan/toolbuild/arm-eabi-4.4.0 --target=arm-eabi --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --enable-languages=c,c++ --with-gmp=/g/users/dougkwan/toolbuild/obj/temp-install --with-mpfr=/g/users/dougkwan/toolbuild/obj/temp-install --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs --with-gcc-version=4.4.0 --with-binutils-version=2.19 --with-arch=armv5te --prefix=/g/users/dougkwan/toolbuild/arm-eabi-4.4.0 --with-sysroot=/g/users/dougkwan/toolbuild/arm-eabi-4.4.0/sysroot --with-gdb-version=6.6 --with-gmp-version=4.2.4 --with-mpfr-version=2.4.1 --program-transform-name='s,^,arm-eabi-,'";
+static const char configuration_arguments[] = "../../../android-toolchain/gcc-4.4.0/configure --prefix=/usr/local --target=arm-eabi --host=i686-unknown-linux-gnu --build=i686-unknown-linux-gnu --enable-languages=c,c++ --with-gmp=/home/jingyu/projects/gcc/toolchain_build/obj_bcpl/temp-install --with-mpfr=/home/jingyu/projects/gcc/toolchain_build/obj_bcpl/temp-install --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs --with-gcc-version=4.4.0 --with-binutils-version=2.19 --with-arch=armv5te --with-sysroot=/g/users/jingyu/toolchain/cupcake_rel_root --with-gmp-version=4.2.4 --with-mpfr-version=2.4.1 --with-gdb-version=6.6 --with-multilib-list=mthumb-interwork,mandroid --program-transform-name='s,^,arm-eabi-,'";
 static const char thread_model[] = "single";
 
 static const struct {
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cp/cp-tree.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cp/cp-tree.h
new file mode 100644 (file)
index 0000000..a2d428c
--- /dev/null
@@ -0,0 +1,5086 @@
+/* Definitions for C++ parsing and type checking.
+   Copyright (C) 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+   Contributed by Michael Tiemann (tiemann@cygnus.com)
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_CP_TREE_H
+#define GCC_CP_TREE_H
+
+#include "ggc.h"
+#include "function.h"
+#include "hashtab.h"
+#include "splay-tree.h"
+#include "vec.h"
+#include "varray.h"
+#include "c-common.h"
+#include "name-lookup.h"
+#include "l-ipo.h"
+
+/* In order for the format checking to accept the C++ front end
+   diagnostic framework extensions, you must include this file before
+   toplev.h, not after.  We override the definition of GCC_DIAG_STYLE
+   in c-common.h.  */
+#undef GCC_DIAG_STYLE
+#define GCC_DIAG_STYLE __gcc_cxxdiag__
+#if GCC_VERSION >= 4001
+#define ATTRIBUTE_GCC_CXXDIAG(m, n) __attribute__ ((__format__ (GCC_DIAG_STYLE, m, n))) ATTRIBUTE_NONNULL(m)
+#else
+#define ATTRIBUTE_GCC_CXXDIAG(m, n) ATTRIBUTE_NONNULL(m)
+#endif
+extern void cp_cpp_error                       (cpp_reader *, int,
+                                                const char *, va_list *)
+     ATTRIBUTE_GCC_CXXDIAG(3,0);
+#ifdef GCC_TOPLEV_H
+#error \
+In order for the format checking to accept the C++ front end diagnostic \
+framework extensions, you must include this file before toplev.h, not after.
+#endif
+#include "toplev.h"
+#include "diagnostic.h"
+
+/* Usage of TREE_LANG_FLAG_?:
+   0: IDENTIFIER_MARKED (IDENTIFIER_NODEs)
+      NEW_EXPR_USE_GLOBAL (in NEW_EXPR).
+      DELETE_EXPR_USE_GLOBAL (in DELETE_EXPR).
+      COMPOUND_EXPR_OVERLOADED (in COMPOUND_EXPR).
+      TREE_INDIRECT_USING (in NAMESPACE_DECL).
+      CLEANUP_P (in TRY_BLOCK)
+      AGGR_INIT_VIA_CTOR_P (in AGGR_INIT_EXPR)
+      PTRMEM_OK_P (in ADDR_EXPR, OFFSET_REF)
+      PAREN_STRING_LITERAL (in STRING_CST)
+      DECL_PRETTY_FUNCTION_P (in VAR_DECL)
+      KOENIG_LOOKUP_P (in CALL_EXPR)
+      STATEMENT_LIST_NO_SCOPE (in STATEMENT_LIST).
+      EXPR_STMT_STMT_EXPR_RESULT (in EXPR_STMT)
+      STMT_EXPR_NO_SCOPE (in STMT_EXPR)
+      BIND_EXPR_TRY_BLOCK (in BIND_EXPR)
+      TYPENAME_IS_ENUM_P (in TYPENAME_TYPE)
+      REFERENCE_REF_P (in INDIRECT_EXPR)
+      QUALIFIED_NAME_IS_TEMPLATE (in SCOPE_REF)
+      OMP_FOR_GIMPLIFYING_P (in OMP_FOR)
+      BASELINK_QUALIFIED_P (in BASELINK)
+      TARGET_EXPR_IMPLICIT_P (in TARGET_EXPR)
+      TEMPLATE_PARM_PARAMETER_PACK (in TEMPLATE_PARM_INDEX)
+      TYPE_REF_IS_RVALUE (in REFERENCE_TYPE)
+      ATTR_IS_DEPENDENT (in the TREE_LIST for an attribute)
+      CONSTRUCTOR_IS_DIRECT_INIT (in CONSTRUCTOR)
+   1: IDENTIFIER_VIRTUAL_P (in IDENTIFIER_NODE)
+      TI_PENDING_TEMPLATE_FLAG.
+      TEMPLATE_PARMS_FOR_INLINE.
+      DELETE_EXPR_USE_VEC (in DELETE_EXPR).
+      (TREE_CALLS_NEW) (in _EXPR or _REF) (commented-out).
+      ICS_ELLIPSIS_FLAG (in _CONV)
+      DECL_INITIALIZED_P (in VAR_DECL)
+      TYPENAME_IS_CLASS_P (in TYPENAME_TYPE)
+      STMT_IS_FULL_EXPR_P (in _STMT)
+      TARGET_EXPR_LIST_INIT_P (in TARGET_EXPR)
+   2: IDENTIFIER_OPNAME_P (in IDENTIFIER_NODE)
+      ICS_THIS_FLAG (in _CONV)
+      DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (in VAR_DECL)
+      STATEMENT_LIST_TRY_BLOCK (in STATEMENT_LIST)
+      TYPENAME_IS_RESOLVING_P (in TYPE_NAME_TYPE)
+   3: (TREE_REFERENCE_EXPR) (in NON_LVALUE_EXPR) (commented-out).
+      ICS_BAD_FLAG (in _CONV)
+      FN_TRY_BLOCK_P (in TRY_BLOCK)
+      IDENTIFIER_CTOR_OR_DTOR_P (in IDENTIFIER_NODE)
+      BIND_EXPR_BODY_BLOCK (in BIND_EXPR)
+      DECL_NON_TRIVIALLY_INITIALIZED_P (in VAR_DECL)
+   4: TREE_HAS_CONSTRUCTOR (in INDIRECT_REF, SAVE_EXPR, CONSTRUCTOR,
+         or FIELD_DECL).
+      IDENTIFIER_TYPENAME_P (in IDENTIFIER_NODE)
+      DECL_TINFO_P (in VAR_DECL)
+   5: C_IS_RESERVED_WORD (in IDENTIFIER_NODE)
+      DECL_VTABLE_OR_VTT_P (in VAR_DECL)
+   6: IDENTIFIER_REPO_CHOSEN (in IDENTIFIER_NODE)
+      DECL_CONSTRUCTION_VTABLE_P (in VAR_DECL)
+      TYPE_MARKED_P (in _TYPE)
+
+   Usage of TYPE_LANG_FLAG_?:
+   0: TYPE_DEPENDENT_P
+   1: TYPE_HAS_USER_CONSTRUCTOR.
+   2: Unused
+   3: TYPE_FOR_JAVA.
+   4: TYPE_HAS_NONTRIVIAL_DESTRUCTOR
+   5: CLASS_TYPE_P (in RECORD_TYPE and UNION_TYPE)
+      SCOPED_ENUM_P (in ENUMERAL_TYPE)
+   6: TYPE_DEPENDENT_P_VALID
+
+   Usage of DECL_LANG_FLAG_?:
+   0: DECL_ERROR_REPORTED (in VAR_DECL).
+      DECL_TEMPLATE_PARM_P (in PARM_DECL, CONST_DECL, TYPE_DECL, or TEMPLATE_DECL)
+      DECL_LOCAL_FUNCTION_P (in FUNCTION_DECL)
+      DECL_MUTABLE_P (in FIELD_DECL)
+      DECL_DEPENDENT_P (in USING_DECL)
+   1: C_TYPEDEF_EXPLICITLY_SIGNED (in TYPE_DECL).
+      DECL_TEMPLATE_INSTANTIATED (in a VAR_DECL or a FUNCTION_DECL)
+      DECL_MEMBER_TEMPLATE_P (in TEMPLATE_DECL)
+      FUNCTION_PARAMETER_PACK_P (in PARM_DECL)
+   2: DECL_THIS_EXTERN (in VAR_DECL or FUNCTION_DECL).
+      DECL_IMPLICIT_TYPEDEF_P (in a TYPE_DECL)
+   3: DECL_IN_AGGR_P.
+   4: DECL_C_BIT_FIELD (in a FIELD_DECL)
+      DECL_ANON_UNION_VAR_P (in a VAR_DECL)
+      DECL_SELF_REFERENCE_P (in a TYPE_DECL)
+      DECL_INVALID_OVERRIDER_P (in a FUNCTION_DECL)
+   5: DECL_INTERFACE_KNOWN.
+   6: DECL_THIS_STATIC (in VAR_DECL or FUNCTION_DECL).
+      DECL_FIELD_IS_BASE (in FIELD_DECL)
+   7: DECL_DEAD_FOR_LOCAL (in VAR_DECL).
+      DECL_THUNK_P (in a member FUNCTION_DECL)
+
+   Usage of language-independent fields in a language-dependent manner:
+
+   TYPE_ALIAS_SET
+     This field is used by TYPENAME_TYPEs, TEMPLATE_TYPE_PARMs, and so
+     forth as a substitute for the mark bits provided in `lang_type'.
+     At present, only the six low-order bits are used.
+
+   TYPE_LANG_SLOT_1
+     For an ENUMERAL_TYPE, this is ENUM_TEMPLATE_INFO.
+     For a FUNCTION_TYPE or METHOD_TYPE, this is TYPE_RAISES_EXCEPTIONS
+
+  BINFO_VIRTUALS
+     For a binfo, this is a TREE_LIST.  There is an entry for each
+     virtual function declared either in BINFO or its direct and
+     indirect primary bases.
+
+     The BV_DELTA of each node gives the amount by which to adjust the
+     `this' pointer when calling the function.  If the method is an
+     overridden version of a base class method, then it is assumed
+     that, prior to adjustment, the this pointer points to an object
+     of the base class.
+
+     The BV_VCALL_INDEX of each node, if non-NULL, gives the vtable
+     index of the vcall offset for this entry.
+
+     The BV_FN is the declaration for the virtual function itself.
+
+   BINFO_VTABLE
+     This is an expression with POINTER_TYPE that gives the value
+     to which the vptr should be initialized.  Use get_vtbl_decl_for_binfo
+     to extract the VAR_DECL for the complete vtable.
+
+   DECL_VINDEX
+     This field is NULL for a non-virtual function.  For a virtual
+     function, it is eventually set to an INTEGER_CST indicating the
+     index in the vtable at which this function can be found.  When
+     a virtual function is declared, but before it is known what
+     function is overridden, this field is the error_mark_node.
+
+     Temporarily, it may be set to a TREE_LIST whose TREE_VALUE is
+     the virtual function this one overrides, and whose TREE_CHAIN is
+     the old DECL_VINDEX.  */
+
+/* Language-specific tree checkers.  */
+
+#define VAR_OR_FUNCTION_DECL_CHECK(NODE) \
+  TREE_CHECK2(NODE,VAR_DECL,FUNCTION_DECL)
+
+#define VAR_FUNCTION_OR_PARM_DECL_CHECK(NODE) \
+  TREE_CHECK3(NODE,VAR_DECL,FUNCTION_DECL,PARM_DECL)
+
+#define VAR_TEMPL_TYPE_OR_FUNCTION_DECL_CHECK(NODE) \
+  TREE_CHECK4(NODE,VAR_DECL,FUNCTION_DECL,TYPE_DECL,TEMPLATE_DECL)
+
+#define BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK(NODE) \
+  TREE_CHECK(NODE,BOUND_TEMPLATE_TEMPLATE_PARM)
+
+#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+#define NON_THUNK_FUNCTION_CHECK(NODE) __extension__                   \
+({  __typeof(NODE) const __t = (NODE);                                 \
+    if (TREE_CODE (__t) != FUNCTION_DECL &&                            \
+       TREE_CODE (__t) != TEMPLATE_DECL && __t->decl_common.lang_specific      \
+       && __t->decl_common.lang_specific->decl_flags.thunk_p)                  \
+      tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, 0);    \
+    __t; })
+#define THUNK_FUNCTION_CHECK(NODE) __extension__                       \
+({  __typeof (NODE) const __t = (NODE);                                        \
+    if (TREE_CODE (__t) != FUNCTION_DECL || !__t->decl_common.lang_specific    \
+       || !__t->decl_common.lang_specific->decl_flags.thunk_p)         \
+      tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, 0);    \
+     __t; })
+#else
+#define NON_THUNK_FUNCTION_CHECK(NODE) (NODE)
+#define THUNK_FUNCTION_CHECK(NODE) (NODE)
+#endif
+\f
+/* Language-dependent contents of an identifier.  */
+
+struct lang_identifier GTY(())
+{
+  struct c_common_identifier c_common;
+  cxx_binding *namespace_bindings;
+  cxx_binding *bindings;
+  tree class_template_info;
+  tree label_value;
+};
+
+/* In an IDENTIFIER_NODE, nonzero if this identifier is actually a
+   keyword.  C_RID_CODE (node) is then the RID_* value of the keyword,
+   and C_RID_YYCODE is the token number wanted by Yacc.  */
+
+#define C_IS_RESERVED_WORD(ID) TREE_LANG_FLAG_5 (ID)
+
+#define LANG_IDENTIFIER_CAST(NODE) \
+       ((struct lang_identifier*)IDENTIFIER_NODE_CHECK (NODE))
+
+struct template_parm_index_s GTY(())
+{
+  struct tree_common common;
+  int index;
+  int level;
+  int orig_level;
+  tree decl;
+};
+typedef struct template_parm_index_s template_parm_index;
+
+struct ptrmem_cst GTY(())
+{
+  struct tree_common common;
+  /* This isn't used, but the middle-end expects all constants to have
+     this field.  */
+  rtx rtl;
+  tree member;
+};
+typedef struct ptrmem_cst * ptrmem_cst_t;
+
+#define IDENTIFIER_GLOBAL_VALUE(NODE) \
+  namespace_binding ((NODE), global_namespace)
+#define SET_IDENTIFIER_GLOBAL_VALUE(NODE, VAL) \
+  set_namespace_binding ((NODE), global_namespace, (VAL))
+#define IDENTIFIER_NAMESPACE_VALUE(NODE) \
+  namespace_binding ((NODE), current_namespace)
+#define SET_IDENTIFIER_NAMESPACE_VALUE(NODE, VAL) \
+  set_namespace_binding ((NODE), current_namespace, (VAL))
+
+#define CLEANUP_P(NODE)                TREE_LANG_FLAG_0 (TRY_BLOCK_CHECK (NODE))
+
+#define BIND_EXPR_TRY_BLOCK(NODE) \
+  TREE_LANG_FLAG_0 (BIND_EXPR_CHECK (NODE))
+
+/* Used to mark the block around the member initializers and cleanups.  */
+#define BIND_EXPR_BODY_BLOCK(NODE) \
+  TREE_LANG_FLAG_3 (BIND_EXPR_CHECK (NODE))
+#define FUNCTION_NEEDS_BODY_BLOCK(NODE) \
+  (DECL_CONSTRUCTOR_P (NODE) || DECL_DESTRUCTOR_P (NODE))
+
+#define STATEMENT_LIST_NO_SCOPE(NODE) \
+  TREE_LANG_FLAG_0 (STATEMENT_LIST_CHECK (NODE))
+#define STATEMENT_LIST_TRY_BLOCK(NODE) \
+  TREE_LANG_FLAG_2 (STATEMENT_LIST_CHECK (NODE))
+
+/* Nonzero if this statement should be considered a full-expression,
+   i.e., if temporaries created during this statement should have
+   their destructors run at the end of this statement.  */
+#define STMT_IS_FULL_EXPR_P(NODE) TREE_LANG_FLAG_1 ((NODE))
+
+/* Marks the result of a statement expression.  */
+#define EXPR_STMT_STMT_EXPR_RESULT(NODE) \
+  TREE_LANG_FLAG_0 (EXPR_STMT_CHECK (NODE))
+
+/* Nonzero if this statement-expression does not have an associated scope.  */
+#define STMT_EXPR_NO_SCOPE(NODE) \
+   TREE_LANG_FLAG_0 (STMT_EXPR_CHECK (NODE))
+
+/* Returns nonzero iff TYPE1 and TYPE2 are the same type, in the usual
+   sense of `same'.  */
+#define same_type_p(TYPE1, TYPE2) \
+  comptypes ((TYPE1), (TYPE2), COMPARE_STRICT)
+
+/* Returns nonzero iff TYPE1 and TYPE2 are the same type, ignoring
+   top-level qualifiers.  */
+#define same_type_ignoring_top_level_qualifiers_p(TYPE1, TYPE2) \
+  same_type_p (TYPE_MAIN_VARIANT (TYPE1), TYPE_MAIN_VARIANT (TYPE2))
+
+/* Nonzero if we are presently building a statement tree, rather
+   than expanding each statement as we encounter it.  */
+#define building_stmt_tree()  (cur_stmt_list != NULL_TREE)
+
+/* Returns nonzero iff NODE is a declaration for the global function
+   `main'.  */
+#define DECL_MAIN_P(NODE)                              \
+   (DECL_EXTERN_C_FUNCTION_P (NODE)                    \
+    && DECL_NAME (NODE) != NULL_TREE                   \
+    && MAIN_NAME_P (DECL_NAME (NODE))                  \
+    && flag_hosted)
+
+/* The overloaded FUNCTION_DECL.  */
+#define OVL_FUNCTION(NODE) \
+  (((struct tree_overload*)OVERLOAD_CHECK (NODE))->function)
+#define OVL_CHAIN(NODE)      TREE_CHAIN (NODE)
+/* Polymorphic access to FUNCTION and CHAIN.  */
+#define OVL_CURRENT(NODE)      \
+  ((TREE_CODE (NODE) == OVERLOAD) ? OVL_FUNCTION (NODE) : (NODE))
+#define OVL_NEXT(NODE)         \
+  ((TREE_CODE (NODE) == OVERLOAD) ? TREE_CHAIN (NODE) : NULL_TREE)
+/* If set, this was imported in a using declaration.
+   This is not to confuse with being used somewhere, which
+   is not important for this node.  */
+#define OVL_USED(NODE)         TREE_USED (NODE)
+
+struct tree_overload GTY(())
+{
+  struct tree_common common;
+  tree function;
+};
+
+/* Returns true iff NODE is a BASELINK.  */
+#define BASELINK_P(NODE) \
+  (TREE_CODE (NODE) == BASELINK)
+/* The BINFO indicating the base from which the BASELINK_FUNCTIONS came.  */
+#define BASELINK_BINFO(NODE) \
+  (((struct tree_baselink*) BASELINK_CHECK (NODE))->binfo)
+/* The functions referred to by the BASELINK; either a FUNCTION_DECL,
+   a TEMPLATE_DECL, an OVERLOAD, or a TEMPLATE_ID_EXPR.  */
+#define BASELINK_FUNCTIONS(NODE) \
+  (((struct tree_baselink*) BASELINK_CHECK (NODE))->functions)
+/* The BINFO in which the search for the functions indicated by this baselink
+   began.  This base is used to determine the accessibility of functions
+   selected by overload resolution.  */
+#define BASELINK_ACCESS_BINFO(NODE) \
+  (((struct tree_baselink*) BASELINK_CHECK (NODE))->access_binfo)
+/* For a type-conversion operator, the BASELINK_OPTYPE indicates the type
+   to which the conversion should occur.  This value is important if
+   the BASELINK_FUNCTIONS include a template conversion operator --
+   the BASELINK_OPTYPE can be used to determine what type the user
+   requested.  */
+#define BASELINK_OPTYPE(NODE) \
+  (TREE_CHAIN (BASELINK_CHECK (NODE)))
+/* Nonzero if this baselink was from a qualified lookup.  */
+#define BASELINK_QUALIFIED_P(NODE) \
+  TREE_LANG_FLAG_0 (BASELINK_CHECK (NODE))
+
+struct tree_baselink GTY(())
+{
+  struct tree_common common;
+  tree binfo;
+  tree functions;
+  tree access_binfo;
+};
+
+/* The different kinds of ids that we encounter.  */
+
+typedef enum cp_id_kind
+{
+  /* Not an id at all.  */
+  CP_ID_KIND_NONE,
+  /* An unqualified-id that is not a template-id.  */
+  CP_ID_KIND_UNQUALIFIED,
+  /* An unqualified-id that is a dependent name.  */
+  CP_ID_KIND_UNQUALIFIED_DEPENDENT,
+  /* An unqualified template-id.  */
+  CP_ID_KIND_TEMPLATE_ID,
+  /* A qualified-id.  */
+  CP_ID_KIND_QUALIFIED
+} cp_id_kind;
+
+/* Macros for access to language-specific slots in an identifier.  */
+
+#define IDENTIFIER_NAMESPACE_BINDINGS(NODE)    \
+  (LANG_IDENTIFIER_CAST (NODE)->namespace_bindings)
+#define IDENTIFIER_TEMPLATE(NODE)      \
+  (LANG_IDENTIFIER_CAST (NODE)->class_template_info)
+
+/* The IDENTIFIER_BINDING is the innermost cxx_binding for the
+    identifier.  It's PREVIOUS is the next outermost binding.  Each
+    VALUE field is a DECL for the associated declaration.  Thus,
+    name lookup consists simply of pulling off the node at the front
+    of the list (modulo oddities for looking up the names of types,
+    and such.)  You can use SCOPE field to determine the scope
+    that bound the name.  */
+#define IDENTIFIER_BINDING(NODE) \
+  (LANG_IDENTIFIER_CAST (NODE)->bindings)
+
+/* TREE_TYPE only indicates on local and class scope the current
+   type. For namespace scope, the presence of a type in any namespace
+   is indicated with global_type_node, and the real type behind must
+   be found through lookup.  */
+#define IDENTIFIER_TYPE_VALUE(NODE) identifier_type_value (NODE)
+#define REAL_IDENTIFIER_TYPE_VALUE(NODE) TREE_TYPE (NODE)
+#define SET_IDENTIFIER_TYPE_VALUE(NODE,TYPE) (TREE_TYPE (NODE) = (TYPE))
+#define IDENTIFIER_HAS_TYPE_VALUE(NODE) (IDENTIFIER_TYPE_VALUE (NODE) ? 1 : 0)
+
+#define IDENTIFIER_LABEL_VALUE(NODE) \
+  (LANG_IDENTIFIER_CAST (NODE)->label_value)
+#define SET_IDENTIFIER_LABEL_VALUE(NODE, VALUE)   \
+  IDENTIFIER_LABEL_VALUE (NODE) = (VALUE)
+
+/* Nonzero if this identifier is used as a virtual function name somewhere
+   (optimizes searches).  */
+#define IDENTIFIER_VIRTUAL_P(NODE) TREE_LANG_FLAG_1 (NODE)
+
+/* Nonzero if this identifier is the prefix for a mangled C++ operator
+   name.  */
+#define IDENTIFIER_OPNAME_P(NODE) TREE_LANG_FLAG_2 (NODE)
+
+/* Nonzero if this identifier is the name of a type-conversion
+   operator.  */
+#define IDENTIFIER_TYPENAME_P(NODE) \
+  TREE_LANG_FLAG_4 (NODE)
+
+/* Nonzero if this identifier is the name of a constructor or
+   destructor.  */
+#define IDENTIFIER_CTOR_OR_DTOR_P(NODE) \
+  TREE_LANG_FLAG_3 (NODE)
+
+/* True iff NAME is the DECL_ASSEMBLER_NAME for an entity with vague
+   linkage which the prelinker has assigned to this translation
+   unit.  */
+#define IDENTIFIER_REPO_CHOSEN(NAME) \
+  (TREE_LANG_FLAG_6 (NAME))
+
+/* In a RECORD_TYPE or UNION_TYPE, nonzero if any component is read-only.  */
+#define C_TYPE_FIELDS_READONLY(TYPE) \
+  (LANG_TYPE_CLASS_CHECK (TYPE)->fields_readonly)
+
+/* The tokens stored in the default argument.  */
+
+#define DEFARG_TOKENS(NODE) \
+  (((struct tree_default_arg *)DEFAULT_ARG_CHECK (NODE))->tokens)
+#define DEFARG_INSTANTIATIONS(NODE) \
+  (((struct tree_default_arg *)DEFAULT_ARG_CHECK (NODE))->instantiations)
+
+struct tree_default_arg GTY (())
+{
+  struct tree_common common;
+  struct cp_token_cache *tokens;
+  VEC(tree,gc) *instantiations;
+};
+
+/* The condition associated with the static assertion.  This must be
+   an integral constant expression.  */
+#define STATIC_ASSERT_CONDITION(NODE) \
+  (((struct tree_static_assert *)STATIC_ASSERT_CHECK (NODE))->condition)
+
+/* The message associated with the static assertion.  This must be a
+   string constant, which will be emitted as an error message when the
+   static assert condition is false.  */
+#define STATIC_ASSERT_MESSAGE(NODE) \
+  (((struct tree_static_assert *)STATIC_ASSERT_CHECK (NODE))->message)
+
+/* Source location information for a static assertion.  */
+#define STATIC_ASSERT_SOURCE_LOCATION(NODE) \
+  (((struct tree_static_assert *)STATIC_ASSERT_CHECK (NODE))->location)
+
+struct tree_static_assert GTY (())
+{
+  struct tree_common common;
+  tree condition;
+  tree message;
+  location_t location;
+};
+
+struct tree_argument_pack_select GTY (())
+{
+  struct tree_common common;
+  tree argument_pack;
+  int index;
+};
+
+/* The different kinds of traits that we encounter.  */
+
+typedef enum cp_trait_kind
+{
+  CPTK_HAS_NOTHROW_ASSIGN,
+  CPTK_HAS_NOTHROW_CONSTRUCTOR,
+  CPTK_HAS_NOTHROW_COPY,
+  CPTK_HAS_TRIVIAL_ASSIGN,
+  CPTK_HAS_TRIVIAL_CONSTRUCTOR,
+  CPTK_HAS_TRIVIAL_COPY,
+  CPTK_HAS_TRIVIAL_DESTRUCTOR,
+  CPTK_HAS_VIRTUAL_DESTRUCTOR,
+  CPTK_IS_ABSTRACT,
+  CPTK_IS_BASE_OF,
+  CPTK_IS_CLASS,
+  CPTK_IS_CONVERTIBLE_TO,
+  CPTK_IS_EMPTY,
+  CPTK_IS_ENUM,
+  CPTK_IS_POD,
+  CPTK_IS_POLYMORPHIC,
+  CPTK_IS_UNION
+} cp_trait_kind;
+
+/* The types that we are processing.  */
+#define TRAIT_EXPR_TYPE1(NODE) \
+  (((struct tree_trait_expr *)TRAIT_EXPR_CHECK (NODE))->type1)
+
+#define TRAIT_EXPR_TYPE2(NODE) \
+  (((struct tree_trait_expr *)TRAIT_EXPR_CHECK (NODE))->type2)
+
+/* The specific trait that we are processing.  */
+#define TRAIT_EXPR_KIND(NODE) \
+  (((struct tree_trait_expr *)TRAIT_EXPR_CHECK (NODE))->kind)
+
+struct tree_trait_expr GTY (())
+{
+  struct tree_common common;
+  tree type1;
+  tree type2;  
+  enum cp_trait_kind kind;
+};
+
+enum cp_tree_node_structure_enum {
+  TS_CP_GENERIC,
+  TS_CP_IDENTIFIER,
+  TS_CP_TPI,
+  TS_CP_PTRMEM,
+  TS_CP_BINDING,
+  TS_CP_OVERLOAD,
+  TS_CP_BASELINK,
+  TS_CP_WRAPPER,
+  TS_CP_DEFAULT_ARG,
+  TS_CP_STATIC_ASSERT,
+  TS_CP_ARGUMENT_PACK_SELECT,
+  TS_CP_TRAIT_EXPR,
+  LAST_TS_CP_ENUM
+};
+
+/* The resulting tree type.  */
+union lang_tree_node GTY((desc ("cp_tree_node_structure (&%h)"),
+       chain_next ("(union lang_tree_node *)TREE_CHAIN (&%h.generic)")))
+{
+  union tree_node GTY ((tag ("TS_CP_GENERIC"),
+                       desc ("tree_node_structure (&%h)"))) generic;
+  struct template_parm_index_s GTY ((tag ("TS_CP_TPI"))) tpi;
+  struct ptrmem_cst GTY ((tag ("TS_CP_PTRMEM"))) ptrmem;
+  struct tree_overload GTY ((tag ("TS_CP_OVERLOAD"))) overload;
+  struct tree_baselink GTY ((tag ("TS_CP_BASELINK"))) baselink;
+  struct tree_default_arg GTY ((tag ("TS_CP_DEFAULT_ARG"))) default_arg;
+  struct lang_identifier GTY ((tag ("TS_CP_IDENTIFIER"))) identifier;
+  struct tree_static_assert GTY ((tag ("TS_CP_STATIC_ASSERT"))) 
+    static_assertion;
+  struct tree_argument_pack_select GTY ((tag ("TS_CP_ARGUMENT_PACK_SELECT")))
+    argument_pack_select;
+  struct tree_trait_expr GTY ((tag ("TS_CP_TRAIT_EXPR")))
+    trait_expression;
+};
+
+\f
+enum cp_tree_index
+{
+    CPTI_JAVA_BYTE_TYPE,
+    CPTI_JAVA_SHORT_TYPE,
+    CPTI_JAVA_INT_TYPE,
+    CPTI_JAVA_LONG_TYPE,
+    CPTI_JAVA_FLOAT_TYPE,
+    CPTI_JAVA_DOUBLE_TYPE,
+    CPTI_JAVA_CHAR_TYPE,
+    CPTI_JAVA_BOOLEAN_TYPE,
+
+    CPTI_WCHAR_DECL,
+    CPTI_VTABLE_ENTRY_TYPE,
+    CPTI_DELTA_TYPE,
+    CPTI_VTABLE_INDEX_TYPE,
+    CPTI_CLEANUP_TYPE,
+    CPTI_VTT_PARM_TYPE,
+
+    CPTI_CLASS_TYPE,
+    CPTI_UNKNOWN_TYPE,
+    CPTI_INIT_LIST_TYPE,
+    CPTI_VTBL_TYPE,
+    CPTI_VTBL_PTR_TYPE,
+    CPTI_STD,
+    CPTI_ABI,
+    CPTI_CONST_TYPE_INFO_TYPE,
+    CPTI_TYPE_INFO_PTR_TYPE,
+    CPTI_ABORT_FNDECL,
+    CPTI_GLOBAL_DELETE_FNDECL,
+    CPTI_AGGR_TAG,
+
+    CPTI_CTOR_IDENTIFIER,
+    CPTI_COMPLETE_CTOR_IDENTIFIER,
+    CPTI_BASE_CTOR_IDENTIFIER,
+    CPTI_DTOR_IDENTIFIER,
+    CPTI_COMPLETE_DTOR_IDENTIFIER,
+    CPTI_BASE_DTOR_IDENTIFIER,
+    CPTI_DELETING_DTOR_IDENTIFIER,
+    CPTI_DELTA_IDENTIFIER,
+    CPTI_IN_CHARGE_IDENTIFIER,
+    CPTI_VTT_PARM_IDENTIFIER,
+    CPTI_NELTS_IDENTIFIER,
+    CPTI_THIS_IDENTIFIER,
+    CPTI_PFN_IDENTIFIER,
+    CPTI_VPTR_IDENTIFIER,
+    CPTI_STD_IDENTIFIER,
+
+    CPTI_LANG_NAME_C,
+    CPTI_LANG_NAME_CPLUSPLUS,
+    CPTI_LANG_NAME_JAVA,
+
+    CPTI_EMPTY_EXCEPT_SPEC,
+    CPTI_JCLASS,
+    CPTI_TERMINATE,
+    CPTI_CALL_UNEXPECTED,
+    CPTI_ATEXIT_FN_PTR_TYPE,
+    CPTI_ATEXIT,
+    CPTI_DSO_HANDLE,
+    CPTI_DCAST,
+
+    CPTI_KEYED_CLASSES,
+
+    CPTI_MAX
+};
+
+extern GTY(()) tree cp_global_trees[CPTI_MAX];
+
+#define java_byte_type_node            cp_global_trees[CPTI_JAVA_BYTE_TYPE]
+#define java_short_type_node           cp_global_trees[CPTI_JAVA_SHORT_TYPE]
+#define java_int_type_node             cp_global_trees[CPTI_JAVA_INT_TYPE]
+#define java_long_type_node            cp_global_trees[CPTI_JAVA_LONG_TYPE]
+#define java_float_type_node           cp_global_trees[CPTI_JAVA_FLOAT_TYPE]
+#define java_double_type_node          cp_global_trees[CPTI_JAVA_DOUBLE_TYPE]
+#define java_char_type_node            cp_global_trees[CPTI_JAVA_CHAR_TYPE]
+#define java_boolean_type_node         cp_global_trees[CPTI_JAVA_BOOLEAN_TYPE]
+
+#define wchar_decl_node                        cp_global_trees[CPTI_WCHAR_DECL]
+#define vtable_entry_type              cp_global_trees[CPTI_VTABLE_ENTRY_TYPE]
+/* The type used to represent an offset by which to adjust the `this'
+   pointer in pointer-to-member types.  */
+#define delta_type_node                        cp_global_trees[CPTI_DELTA_TYPE]
+/* The type used to represent an index into the vtable.  */
+#define vtable_index_type              cp_global_trees[CPTI_VTABLE_INDEX_TYPE]
+
+#define class_type_node                        cp_global_trees[CPTI_CLASS_TYPE]
+#define unknown_type_node              cp_global_trees[CPTI_UNKNOWN_TYPE]
+#define init_list_type_node            cp_global_trees[CPTI_INIT_LIST_TYPE]
+#define vtbl_type_node                 cp_global_trees[CPTI_VTBL_TYPE]
+#define vtbl_ptr_type_node             cp_global_trees[CPTI_VTBL_PTR_TYPE]
+#define std_node                       cp_global_trees[CPTI_STD]
+#define abi_node                       cp_global_trees[CPTI_ABI]
+#define const_type_info_type_node      cp_global_trees[CPTI_CONST_TYPE_INFO_TYPE]
+#define type_info_ptr_type             cp_global_trees[CPTI_TYPE_INFO_PTR_TYPE]
+#define abort_fndecl                   cp_global_trees[CPTI_ABORT_FNDECL]
+#define global_delete_fndecl           cp_global_trees[CPTI_GLOBAL_DELETE_FNDECL]
+#define current_aggr                   cp_global_trees[CPTI_AGGR_TAG]
+
+/* We cache these tree nodes so as to call get_identifier less
+   frequently.  */
+
+/* The name of a constructor that takes an in-charge parameter to
+   decide whether or not to construct virtual base classes.  */
+#define ctor_identifier                        cp_global_trees[CPTI_CTOR_IDENTIFIER]
+/* The name of a constructor that constructs virtual base classes.  */
+#define complete_ctor_identifier       cp_global_trees[CPTI_COMPLETE_CTOR_IDENTIFIER]
+/* The name of a constructor that does not construct virtual base classes.  */
+#define base_ctor_identifier           cp_global_trees[CPTI_BASE_CTOR_IDENTIFIER]
+/* The name of a destructor that takes an in-charge parameter to
+   decide whether or not to destroy virtual base classes and whether
+   or not to delete the object.  */
+#define dtor_identifier                        cp_global_trees[CPTI_DTOR_IDENTIFIER]
+/* The name of a destructor that destroys virtual base classes.  */
+#define complete_dtor_identifier       cp_global_trees[CPTI_COMPLETE_DTOR_IDENTIFIER]
+/* The name of a destructor that does not destroy virtual base
+   classes.  */
+#define base_dtor_identifier           cp_global_trees[CPTI_BASE_DTOR_IDENTIFIER]
+/* The name of a destructor that destroys virtual base classes, and
+   then deletes the entire object.  */
+#define deleting_dtor_identifier       cp_global_trees[CPTI_DELETING_DTOR_IDENTIFIER]
+#define delta_identifier               cp_global_trees[CPTI_DELTA_IDENTIFIER]
+#define in_charge_identifier           cp_global_trees[CPTI_IN_CHARGE_IDENTIFIER]
+/* The name of the parameter that contains a pointer to the VTT to use
+   for this subobject constructor or destructor.  */
+#define vtt_parm_identifier            cp_global_trees[CPTI_VTT_PARM_IDENTIFIER]
+#define nelts_identifier               cp_global_trees[CPTI_NELTS_IDENTIFIER]
+#define this_identifier                        cp_global_trees[CPTI_THIS_IDENTIFIER]
+#define pfn_identifier                 cp_global_trees[CPTI_PFN_IDENTIFIER]
+#define vptr_identifier                        cp_global_trees[CPTI_VPTR_IDENTIFIER]
+/* The name of the std namespace.  */
+#define std_identifier                 cp_global_trees[CPTI_STD_IDENTIFIER]
+#define lang_name_c                    cp_global_trees[CPTI_LANG_NAME_C]
+#define lang_name_cplusplus            cp_global_trees[CPTI_LANG_NAME_CPLUSPLUS]
+#define lang_name_java                 cp_global_trees[CPTI_LANG_NAME_JAVA]
+
+/* Exception specifier used for throw().  */
+#define empty_except_spec              cp_global_trees[CPTI_EMPTY_EXCEPT_SPEC]
+
+/* If non-NULL, a POINTER_TYPE equivalent to (java::lang::Class*).  */
+#define jclass_node                    cp_global_trees[CPTI_JCLASS]
+
+/* The declaration for `std::terminate'.  */
+#define terminate_node                 cp_global_trees[CPTI_TERMINATE]
+
+/* The declaration for "__cxa_call_unexpected".  */
+#define call_unexpected_node           cp_global_trees[CPTI_CALL_UNEXPECTED]
+
+/* The type of the function-pointer argument to "__cxa_atexit" (or
+   "std::atexit", if "__cxa_atexit" is not being used).  */
+#define atexit_fn_ptr_type_node         cp_global_trees[CPTI_ATEXIT_FN_PTR_TYPE]
+
+/* A pointer to `std::atexit'.  */
+#define atexit_node                    cp_global_trees[CPTI_ATEXIT]
+
+/* A pointer to `__dso_handle'.  */
+#define dso_handle_node                        cp_global_trees[CPTI_DSO_HANDLE]
+
+/* The declaration of the dynamic_cast runtime.  */
+#define dynamic_cast_node              cp_global_trees[CPTI_DCAST]
+
+/* The type of a destructor.  */
+#define cleanup_type                   cp_global_trees[CPTI_CLEANUP_TYPE]
+
+/* The type of the vtt parameter passed to subobject constructors and
+   destructors.  */
+#define vtt_parm_type                  cp_global_trees[CPTI_VTT_PARM_TYPE]
+
+/* A TREE_LIST of the dynamic classes whose vtables may have to be
+   emitted in this translation unit.  */
+
+#define keyed_classes                  cp_global_trees[CPTI_KEYED_CLASSES]
+
+/* Node to indicate default access. This must be distinct from the
+   access nodes in tree.h.  */
+
+#define access_default_node            null_node
+
+/* Global state.  */
+
+struct saved_scope GTY(())
+{
+  VEC(cxx_saved_binding,gc) *old_bindings;
+  tree old_namespace;
+  tree decl_ns_list;
+  tree class_name;
+  tree class_type;
+  tree access_specifier;
+  tree function_decl;
+  VEC(tree,gc) *lang_base;
+  tree lang_name;
+  tree template_parms;
+  struct cp_binding_level *x_previous_class_level;
+  tree x_saved_tree;
+
+  int x_processing_template_decl;
+  int x_processing_specialization;
+  BOOL_BITFIELD x_processing_explicit_instantiation : 1;
+  BOOL_BITFIELD need_pop_function_context : 1;
+  BOOL_BITFIELD skip_evaluation : 1;
+
+  struct stmt_tree_s x_stmt_tree;
+
+  struct cp_binding_level *class_bindings;
+  struct cp_binding_level *bindings;
+
+  struct saved_scope *prev;
+};
+
+/* The current open namespace.  */
+
+#define current_namespace scope_chain->old_namespace
+
+/* The stack for namespaces of current declarations.  */
+
+#define decl_namespace_list scope_chain->decl_ns_list
+
+/* IDENTIFIER_NODE: name of current class */
+
+#define current_class_name scope_chain->class_name
+
+/* _TYPE: the type of the current class */
+
+#define current_class_type scope_chain->class_type
+
+/* When parsing a class definition, the access specifier most recently
+   given by the user, or, if no access specifier was given, the
+   default value appropriate for the kind of class (i.e., struct,
+   class, or union).  */
+
+#define current_access_specifier scope_chain->access_specifier
+
+/* Pointer to the top of the language name stack.  */
+
+#define current_lang_base scope_chain->lang_base
+#define current_lang_name scope_chain->lang_name
+
+/* When parsing a template declaration, a TREE_LIST represents the
+   active template parameters.  Each node in the list represents one
+   level of template parameters.  The innermost level is first in the
+   list.  The depth of each level is stored as an INTEGER_CST in the
+   TREE_PURPOSE of each node.  The parameters for that level are
+   stored in the TREE_VALUE.  */
+
+#define current_template_parms scope_chain->template_parms
+
+#define processing_template_decl scope_chain->x_processing_template_decl
+#define processing_specialization scope_chain->x_processing_specialization
+#define processing_explicit_instantiation scope_chain->x_processing_explicit_instantiation
+
+/* The cached class binding level, from the most recently exited
+   class, or NULL if none.  */
+
+#define previous_class_level scope_chain->x_previous_class_level
+
+/* A list of private types mentioned, for deferred access checking.  */
+
+extern GTY(()) struct saved_scope *scope_chain;
+
+struct cxx_int_tree_map GTY(())
+{
+  unsigned int uid;
+  tree to;
+};
+
+extern unsigned int cxx_int_tree_map_hash (const void *);
+extern int cxx_int_tree_map_eq (const void *, const void *);
+
+/* Global state pertinent to the current function.  */
+
+struct language_function GTY(())
+{
+  struct c_language_function base;
+
+  tree x_cdtor_label;
+  tree x_current_class_ptr;
+  tree x_current_class_ref;
+  tree x_eh_spec_block;
+  tree x_in_charge_parm;
+  tree x_vtt_parm;
+  tree x_return_value;
+
+  BOOL_BITFIELD returns_value : 1;
+  BOOL_BITFIELD returns_null : 1;
+  BOOL_BITFIELD returns_abnormally : 1;
+  BOOL_BITFIELD in_function_try_handler : 1;
+  BOOL_BITFIELD in_base_initializer : 1;
+
+  /* True if this function can throw an exception.  */
+  BOOL_BITFIELD can_throw : 1;
+
+  htab_t GTY((param_is(struct named_label_entry))) x_named_labels;
+  struct cp_binding_level *bindings;
+  VEC(tree,gc) *x_local_names;
+  htab_t GTY((param_is (struct cxx_int_tree_map))) extern_decl_map;
+};
+
+/* The current C++-specific per-function global variables.  */
+
+#define cp_function_chain (cfun->language)
+
+/* In a constructor destructor, the point at which all derived class
+   destroying/construction has been done.  I.e., just before a
+   constructor returns, or before any base class destroying will be done
+   in a destructor.  */
+
+#define cdtor_label cp_function_chain->x_cdtor_label
+
+/* When we're processing a member function, current_class_ptr is the
+   PARM_DECL for the `this' pointer.  The current_class_ref is an
+   expression for `*this'.  */
+
+#define current_class_ptr \
+  (cfun ? cp_function_chain->x_current_class_ptr : NULL_TREE)
+#define current_class_ref \
+  (cfun ? cp_function_chain->x_current_class_ref : NULL_TREE)
+
+/* The EH_SPEC_BLOCK for the exception-specifiers for the current
+   function, if any.  */
+
+#define current_eh_spec_block cp_function_chain->x_eh_spec_block
+
+/* The `__in_chrg' parameter for the current function.  Only used for
+   constructors and destructors.  */
+
+#define current_in_charge_parm cp_function_chain->x_in_charge_parm
+
+/* The `__vtt_parm' parameter for the current function.  Only used for
+   constructors and destructors.  */
+
+#define current_vtt_parm cp_function_chain->x_vtt_parm
+
+/* Set to 0 at beginning of a function definition, set to 1 if
+   a return statement that specifies a return value is seen.  */
+
+#define current_function_returns_value cp_function_chain->returns_value
+
+/* Set to 0 at beginning of a function definition, set to 1 if
+   a return statement with no argument is seen.  */
+
+#define current_function_returns_null cp_function_chain->returns_null
+
+/* Set to 0 at beginning of a function definition, set to 1 if
+   a call to a noreturn function is seen.  */
+
+#define current_function_returns_abnormally \
+  cp_function_chain->returns_abnormally
+
+/* Nonzero if we are processing a base initializer.  Zero elsewhere.  */
+#define in_base_initializer cp_function_chain->in_base_initializer
+
+#define in_function_try_handler cp_function_chain->in_function_try_handler
+
+/* Expression always returned from function, or error_mark_node
+   otherwise, for use by the automatic named return value optimization.  */
+
+#define current_function_return_value \
+  (cp_function_chain->x_return_value)
+
+/* True if NAME is the IDENTIFIER_NODE for an overloaded "operator
+   new" or "operator delete".  */
+#define NEW_DELETE_OPNAME_P(NAME)              \
+  ((NAME) == ansi_opname (NEW_EXPR)            \
+   || (NAME) == ansi_opname (VEC_NEW_EXPR)     \
+   || (NAME) == ansi_opname (DELETE_EXPR)      \
+   || (NAME) == ansi_opname (VEC_DELETE_EXPR))
+
+#define ansi_opname(CODE) \
+  (operator_name_info[(int) (CODE)].identifier)
+#define ansi_assopname(CODE) \
+  (assignment_operator_name_info[(int) (CODE)].identifier)
+
+/* True if NODE is an erroneous expression.  */
+
+#define error_operand_p(NODE)                                  \
+  ((NODE) == error_mark_node                                   \
+   || ((NODE) && TREE_TYPE ((NODE)) == error_mark_node))
+\f
+/* TRUE if a tree code represents a statement.  */
+extern bool statement_code_p[MAX_TREE_CODES];
+
+#define STATEMENT_CODE_P(CODE) statement_code_p[(int) (CODE)]
+
+enum languages { lang_c, lang_cplusplus, lang_java };
+
+/* Macros to make error reporting functions' lives easier.  */
+#define TYPE_IDENTIFIER(NODE) (DECL_NAME (TYPE_NAME (NODE)))
+#define TYPE_LINKAGE_IDENTIFIER(NODE) \
+  (TYPE_IDENTIFIER (TYPE_MAIN_VARIANT (NODE)))
+#define TYPE_NAME_STRING(NODE) (IDENTIFIER_POINTER (TYPE_IDENTIFIER (NODE)))
+#define TYPE_NAME_LENGTH(NODE) (IDENTIFIER_LENGTH (TYPE_IDENTIFIER (NODE)))
+
+/* Nonzero if NODE has no name for linkage purposes.  */
+#define TYPE_ANONYMOUS_P(NODE) \
+  (TAGGED_TYPE_P (NODE) && ANON_AGGRNAME_P (TYPE_LINKAGE_IDENTIFIER (NODE)))
+
+/* The _DECL for this _TYPE.  */
+#define TYPE_MAIN_DECL(NODE) (TYPE_STUB_DECL (TYPE_MAIN_VARIANT (NODE)))
+
+/* Nonzero if T is a class (or struct or union) type.  Also nonzero
+   for template type parameters, typename types, and instantiated
+   template template parameters.  Keep these checks in ascending code
+   order.  */
+#define MAYBE_CLASS_TYPE_P(T)                                  \
+  (TREE_CODE (T) == TEMPLATE_TYPE_PARM                 \
+   || TREE_CODE (T) == TYPENAME_TYPE                   \
+   || TREE_CODE (T) == TYPEOF_TYPE                     \
+   || TREE_CODE (T) == BOUND_TEMPLATE_TEMPLATE_PARM    \
+   || TREE_CODE (T) == DECLTYPE_TYPE                   \
+   || CLASS_TYPE_P (T))
+
+/* Set CLASS_TYPE_P for T to VAL.  T must be a class, struct, or
+   union type.  */
+#define SET_CLASS_TYPE_P(T, VAL) \
+  (TYPE_LANG_FLAG_5 (T) = (VAL))
+
+/* Nonzero if T is a class type.  Zero for template type parameters,
+   typename types, and so forth.  */
+#define CLASS_TYPE_P(T) \
+  (RECORD_OR_UNION_CODE_P (TREE_CODE (T)) && TYPE_LANG_FLAG_5 (T))
+
+/* Nonzero if T is a class type but not an union.  */
+#define NON_UNION_CLASS_TYPE_P(T) \
+  (CLASS_TYPE_P (T) && TREE_CODE (T) != UNION_TYPE)
+
+/* Keep these checks in ascending code order.  */
+#define RECORD_OR_UNION_CODE_P(T)      \
+  ((T) == RECORD_TYPE || (T) == UNION_TYPE)
+#define TAGGED_TYPE_P(T) \
+  (CLASS_TYPE_P (T) || TREE_CODE (T) == ENUMERAL_TYPE)
+#define IS_OVERLOAD_TYPE(T) TAGGED_TYPE_P (T)
+
+/* True if this a "Java" type, defined in 'extern "Java"'.  */
+#define TYPE_FOR_JAVA(NODE) TYPE_LANG_FLAG_3 (NODE)
+
+/* True if this type is dependent.  This predicate is only valid if
+   TYPE_DEPENDENT_P_VALID is true.  */
+#define TYPE_DEPENDENT_P(NODE) TYPE_LANG_FLAG_0 (NODE)
+
+/* True if dependent_type_p has been called for this type, with the
+   result that TYPE_DEPENDENT_P is valid.  */
+#define TYPE_DEPENDENT_P_VALID(NODE) TYPE_LANG_FLAG_6(NODE)
+
+/* Nonzero if this type is const-qualified.  */
+#define CP_TYPE_CONST_P(NODE)                          \
+  ((cp_type_quals (NODE) & TYPE_QUAL_CONST) != 0)
+
+/* Nonzero if this type is volatile-qualified.  */
+#define CP_TYPE_VOLATILE_P(NODE)                       \
+  ((cp_type_quals (NODE) & TYPE_QUAL_VOLATILE) != 0)
+
+/* Nonzero if this type is restrict-qualified.  */
+#define CP_TYPE_RESTRICT_P(NODE)                       \
+  ((cp_type_quals (NODE) & TYPE_QUAL_RESTRICT) != 0)
+
+/* Nonzero if this type is const-qualified, but not
+   volatile-qualified.  Other qualifiers are ignored.  This macro is
+   used to test whether or not it is OK to bind an rvalue to a
+   reference.  */
+#define CP_TYPE_CONST_NON_VOLATILE_P(NODE)                             \
+  ((cp_type_quals (NODE) & (TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE))     \
+   == TYPE_QUAL_CONST)
+
+#define FUNCTION_ARG_CHAIN(NODE) \
+  TREE_CHAIN (TYPE_ARG_TYPES (TREE_TYPE (NODE)))
+
+/* Given a FUNCTION_DECL, returns the first TREE_LIST out of TYPE_ARG_TYPES
+   which refers to a user-written parameter.  */
+#define FUNCTION_FIRST_USER_PARMTYPE(NODE) \
+  skip_artificial_parms_for ((NODE), TYPE_ARG_TYPES (TREE_TYPE (NODE)))
+
+/* Similarly, but for DECL_ARGUMENTS.  */
+#define FUNCTION_FIRST_USER_PARM(NODE) \
+  skip_artificial_parms_for ((NODE), DECL_ARGUMENTS (NODE))
+
+/* Nonzero iff TYPE is derived from PARENT. Ignores accessibility and
+   ambiguity issues.  */
+#define DERIVED_FROM_P(PARENT, TYPE) \
+  (lookup_base ((TYPE), (PARENT), ba_any, NULL) != NULL_TREE)
+/* Nonzero iff TYPE is uniquely derived from PARENT. Ignores
+   accessibility.  */
+#define UNIQUELY_DERIVED_FROM_P(PARENT, TYPE) \
+  (lookup_base ((TYPE), (PARENT), ba_unique | ba_quiet, NULL) != NULL_TREE)
+/* Nonzero iff TYPE is publicly & uniquely derived from PARENT.  */
+#define PUBLICLY_UNIQUELY_DERIVED_P(PARENT, TYPE) \
+  (lookup_base ((TYPE), (PARENT), ba_ignore_scope | ba_check | ba_quiet, \
+               NULL) != NULL_TREE)
+
+/* Gives the visibility specification for a class type.  */
+#define CLASSTYPE_VISIBILITY(TYPE)             \
+       DECL_VISIBILITY (TYPE_NAME (TYPE))
+#define CLASSTYPE_VISIBILITY_SPECIFIED(TYPE)   \
+       DECL_VISIBILITY_SPECIFIED (TYPE_NAME (TYPE))
+
+typedef struct tree_pair_s GTY (())
+{
+  tree purpose;
+  tree value;
+} tree_pair_s;
+typedef tree_pair_s *tree_pair_p;
+DEF_VEC_O (tree_pair_s);
+DEF_VEC_ALLOC_O (tree_pair_s,gc);
+
+/* This is a few header flags for 'struct lang_type'.  Actually,
+   all but the first are used only for lang_type_class; they
+   are put in this structure to save space.  */
+struct lang_type_header GTY(())
+{
+  BOOL_BITFIELD is_lang_type_class : 1;
+
+  BOOL_BITFIELD has_type_conversion : 1;
+  BOOL_BITFIELD has_init_ref : 1;
+  BOOL_BITFIELD has_default_ctor : 1;
+  BOOL_BITFIELD const_needs_init : 1;
+  BOOL_BITFIELD ref_needs_init : 1;
+  BOOL_BITFIELD has_const_assign_ref : 1;
+
+  BOOL_BITFIELD spare : 1;
+};
+
+/* This structure provides additional information above and beyond
+   what is provide in the ordinary tree_type.  In the past, we used it
+   for the types of class types, template parameters types, typename
+   types, and so forth.  However, there can be many (tens to hundreds
+   of thousands) of template parameter types in a compilation, and
+   there's no need for this additional information in that case.
+   Therefore, we now use this data structure only for class types.
+
+   In the past, it was thought that there would be relatively few
+   class types.  However, in the presence of heavy use of templates,
+   many (i.e., thousands) of classes can easily be generated.
+   Therefore, we should endeavor to keep the size of this structure to
+   a minimum.  */
+struct lang_type_class GTY(())
+{
+  struct lang_type_header h;
+
+  unsigned char align;
+
+  unsigned has_mutable : 1;
+  unsigned com_interface : 1;
+  unsigned non_pod_class : 1;
+  unsigned nearly_empty_p : 1;
+  unsigned user_align : 1;
+  unsigned has_assign_ref : 1;
+  unsigned has_new : 1;
+  unsigned has_array_new : 1;
+
+  unsigned gets_delete : 2;
+  unsigned interface_only : 1;
+  unsigned interface_unknown : 1;
+  unsigned contains_empty_class_p : 1;
+  unsigned anon_aggr : 1;
+  unsigned non_zero_init : 1;
+  unsigned empty_p : 1;
+
+  unsigned vec_new_uses_cookie : 1;
+  unsigned declared_class : 1;
+  unsigned diamond_shaped : 1;
+  unsigned repeated_base : 1;
+  unsigned being_defined : 1;
+  unsigned java_interface : 1;
+  unsigned debug_requested : 1;
+  unsigned fields_readonly : 1;
+
+  unsigned use_template : 2;
+  unsigned ptrmemfunc_flag : 1;
+  unsigned was_anonymous : 1;
+  unsigned lazy_default_ctor : 1;
+  unsigned lazy_copy_ctor : 1;
+  unsigned lazy_assignment_op : 1;
+  unsigned lazy_destructor : 1;
+
+  unsigned has_const_init_ref : 1;
+  unsigned has_complex_init_ref : 1;
+  unsigned has_complex_assign_ref : 1;
+  unsigned non_aggregate : 1;
+  unsigned has_complex_dflt : 1;
+  unsigned has_list_ctor : 1;
+
+  /* When adding a flag here, consider whether or not it ought to
+     apply to a template instance if it applies to the template.  If
+     so, make sure to copy it in instantiate_class_template!  */
+
+  /* There are some bits left to fill out a 32-bit word.  Keep track
+     of this by updating the size of this bitfield whenever you add or
+     remove a flag.  */
+  unsigned dummy : 10;
+
+  tree primary_base;
+  VEC(tree_pair_s,gc) *vcall_indices;
+  tree vtables;
+  tree typeinfo_var;
+  VEC(tree,gc) *vbases;
+  binding_table nested_udts;
+  tree as_base;
+  VEC(tree,gc) *pure_virtuals;
+  tree friend_classes;
+  VEC(tree,gc) * GTY((reorder ("resort_type_method_vec"))) methods;
+  tree key_method;
+  tree decl_list;
+  tree template_info;
+  tree befriending_classes;
+  /* In a RECORD_TYPE, information specific to Objective-C++, such
+     as a list of adopted protocols or a pointer to a corresponding
+     @interface.  See objc/objc-act.h for details.  */
+  tree objc_info;
+};
+
+struct lang_type_ptrmem GTY(())
+{
+  struct lang_type_header h;
+  tree record;
+};
+
+struct lang_type GTY(())
+{
+  union lang_type_u
+  {
+    struct lang_type_header GTY((skip (""))) h;
+    struct lang_type_class  GTY((tag ("1"))) c;
+    struct lang_type_ptrmem GTY((tag ("0"))) ptrmem;
+  } GTY((desc ("%h.h.is_lang_type_class"))) u;
+};
+
+#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+
+#define LANG_TYPE_CLASS_CHECK(NODE) __extension__              \
+({  struct lang_type *lt = TYPE_LANG_SPECIFIC (NODE);          \
+    if (! lt->u.h.is_lang_type_class)                          \
+      lang_check_failed (__FILE__, __LINE__, __FUNCTION__);    \
+    &lt->u.c; })
+
+#define LANG_TYPE_PTRMEM_CHECK(NODE) __extension__             \
+({  struct lang_type *lt = TYPE_LANG_SPECIFIC (NODE);          \
+    if (lt->u.h.is_lang_type_class)                            \
+      lang_check_failed (__FILE__, __LINE__, __FUNCTION__);    \
+    &lt->u.ptrmem; })
+
+#else
+
+#define LANG_TYPE_CLASS_CHECK(NODE) (&TYPE_LANG_SPECIFIC (NODE)->u.c)
+#define LANG_TYPE_PTRMEM_CHECK(NODE) (&TYPE_LANG_SPECIFIC (NODE)->u.ptrmem)
+
+#endif /* ENABLE_TREE_CHECKING */
+
+/* Fields used for storing information before the class is defined.
+   After the class is defined, these fields hold other information.  */
+
+/* VEC(tree) of friends which were defined inline in this class
+   definition.  */
+#define CLASSTYPE_INLINE_FRIENDS(NODE) CLASSTYPE_PURE_VIRTUALS (NODE)
+
+/* Nonzero for _CLASSTYPE means that operator delete is defined.  */
+#define TYPE_GETS_DELETE(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->gets_delete)
+#define TYPE_GETS_REG_DELETE(NODE) (TYPE_GETS_DELETE (NODE) & 1)
+
+/* Nonzero if `new NODE[x]' should cause the allocation of extra
+   storage to indicate how many array elements are in use.  */
+#define TYPE_VEC_NEW_USES_COOKIE(NODE)                 \
+  (CLASS_TYPE_P (NODE)                                 \
+   && LANG_TYPE_CLASS_CHECK (NODE)->vec_new_uses_cookie)
+
+/* Nonzero means that this _CLASSTYPE node defines ways of converting
+   itself to other types.  */
+#define TYPE_HAS_CONVERSION(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->h.has_type_conversion)
+
+/* Nonzero means that NODE (a class type) has a default constructor --
+   but that it has not yet been declared.  */
+#define CLASSTYPE_LAZY_DEFAULT_CTOR(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->lazy_default_ctor)
+
+/* Nonzero means that NODE (a class type) has a copy constructor --
+   but that it has not yet been declared.  */
+#define CLASSTYPE_LAZY_COPY_CTOR(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->lazy_copy_ctor)
+
+/* Nonzero means that NODE (a class type) has an assignment operator
+   -- but that it has not yet been declared.  */
+#define CLASSTYPE_LAZY_ASSIGNMENT_OP(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->lazy_assignment_op)
+
+/* Nonzero means that NODE (a class type) has a destructor -- but that
+   it has not yet been declared.  */
+#define CLASSTYPE_LAZY_DESTRUCTOR(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->lazy_destructor)
+
+/* Nonzero means that this _CLASSTYPE node overloads operator=(X&).  */
+#define TYPE_HAS_ASSIGN_REF(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->has_assign_ref)
+
+/* True iff the class type NODE has an "operator =" whose parameter
+   has a parameter of type "const X&".  */
+#define TYPE_HAS_CONST_ASSIGN_REF(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->h.has_const_assign_ref)
+
+/* Nonzero means that this _CLASSTYPE node has an X(X&) constructor.  */
+#define TYPE_HAS_INIT_REF(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->h.has_init_ref)
+#define TYPE_HAS_CONST_INIT_REF(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->has_const_init_ref)
+
+/* Nonzero if this class has an X(initializer_list<T>) constructor.  */
+#define TYPE_HAS_LIST_CTOR(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->has_list_ctor)
+
+/* Nonzero if this class defines an overloaded operator new.  (An
+   operator new [] doesn't count.)  */
+#define TYPE_HAS_NEW_OPERATOR(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->has_new)
+
+/* Nonzero if this class defines an overloaded operator new[].  */
+#define TYPE_HAS_ARRAY_NEW_OPERATOR(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->has_array_new)
+
+/* Nonzero means that this type is being defined.  I.e., the left brace
+   starting the definition of this type has been seen.  */
+#define TYPE_BEING_DEFINED(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->being_defined)
+
+/* Mark bits for repeated base checks.  */
+#define TYPE_MARKED_P(NODE) TREE_LANG_FLAG_6 (TYPE_CHECK (NODE))
+
+/* Nonzero if the class NODE has multiple paths to the same (virtual)
+   base object.  */
+#define CLASSTYPE_DIAMOND_SHAPED_P(NODE) \
+  (LANG_TYPE_CLASS_CHECK(NODE)->diamond_shaped)
+
+/* Nonzero if the class NODE has multiple instances of the same base
+   type.  */
+#define CLASSTYPE_REPEATED_BASE_P(NODE) \
+  (LANG_TYPE_CLASS_CHECK(NODE)->repeated_base)
+
+/* The member function with which the vtable will be emitted:
+   the first noninline non-pure-virtual member function.  NULL_TREE
+   if there is no key function or if this is a class template */
+#define CLASSTYPE_KEY_METHOD(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->key_method)
+
+/* Vector member functions defined in this class.  Each element is
+   either a FUNCTION_DECL, a TEMPLATE_DECL, or an OVERLOAD.  All
+   functions with the same name end up in the same slot.  The first
+   two elements are for constructors, and destructors, respectively.
+   All template conversion operators to innermost template dependent
+   types are overloaded on the next slot, if they exist.  Note, the
+   names for these functions will not all be the same.  The
+   non-template conversion operators & templated conversions to
+   non-innermost template types are next, followed by ordinary member
+   functions.  There may be empty entries at the end of the vector.
+   The conversion operators are unsorted. The ordinary member
+   functions are sorted, once the class is complete.  */
+#define CLASSTYPE_METHOD_VEC(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->methods)
+
+/* For class templates, this is a TREE_LIST of all member data,
+   functions, types, and friends in the order of declaration.
+   The TREE_PURPOSE of each TREE_LIST is NULL_TREE for a friend,
+   and the RECORD_TYPE for the class template otherwise.  */
+#define CLASSTYPE_DECL_LIST(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->decl_list)
+
+/* The slot in the CLASSTYPE_METHOD_VEC where constructors go.  */
+#define CLASSTYPE_CONSTRUCTOR_SLOT 0
+
+/* The slot in the CLASSTYPE_METHOD_VEC where destructors go.  */
+#define CLASSTYPE_DESTRUCTOR_SLOT 1
+
+/* The first slot in the CLASSTYPE_METHOD_VEC where conversion
+   operators can appear.  */
+#define CLASSTYPE_FIRST_CONVERSION_SLOT 2
+
+/* A FUNCTION_DECL or OVERLOAD for the constructors for NODE.  These
+   are the constructors that take an in-charge parameter.  */
+#define CLASSTYPE_CONSTRUCTORS(NODE) \
+  (VEC_index (tree, CLASSTYPE_METHOD_VEC (NODE), CLASSTYPE_CONSTRUCTOR_SLOT))
+
+/* A FUNCTION_DECL for the destructor for NODE.  These are the
+   destructors that take an in-charge parameter.  If
+   CLASSTYPE_LAZY_DESTRUCTOR is true, then this entry will be NULL
+   until the destructor is created with lazily_declare_fn.  */
+#define CLASSTYPE_DESTRUCTORS(NODE) \
+  (CLASSTYPE_METHOD_VEC (NODE)                                               \
+   ? VEC_index (tree, CLASSTYPE_METHOD_VEC (NODE), CLASSTYPE_DESTRUCTOR_SLOT) \
+   : NULL_TREE)
+
+/* A dictionary of the nested user-defined-types (class-types, or enums)
+   found within this class.  This table includes nested member class
+   templates.  */
+#define CLASSTYPE_NESTED_UTDS(NODE) \
+   (LANG_TYPE_CLASS_CHECK (NODE)->nested_udts)
+
+/* Nonzero if NODE has a primary base class, i.e., a base class with
+   which it shares the virtual function table pointer.  */
+#define CLASSTYPE_HAS_PRIMARY_BASE_P(NODE) \
+  (CLASSTYPE_PRIMARY_BINFO (NODE) != NULL_TREE)
+
+/* If non-NULL, this is the binfo for the primary base class, i.e.,
+   the base class which contains the virtual function table pointer
+   for this class.  */
+#define CLASSTYPE_PRIMARY_BINFO(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->primary_base)
+
+/* A vector of BINFOs for the direct and indirect virtual base classes
+   that this type uses in a post-order depth-first left-to-right
+   order.  (In other words, these bases appear in the order that they
+   should be initialized.)  */
+#define CLASSTYPE_VBASECLASSES(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->vbases)
+
+/* The type corresponding to NODE when NODE is used as a base class,
+   i.e., NODE without virtual base classes.  */
+
+#define CLASSTYPE_AS_BASE(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->as_base)
+
+/* True iff NODE is the CLASSTYPE_AS_BASE version of some type.  */
+
+#define IS_FAKE_BASE_TYPE(NODE)                                        \
+  (TREE_CODE (NODE) == RECORD_TYPE                             \
+   && TYPE_CONTEXT (NODE) && CLASS_TYPE_P (TYPE_CONTEXT (NODE))        \
+   && CLASSTYPE_AS_BASE (TYPE_CONTEXT (NODE)) == (NODE))
+
+/* These are the size and alignment of the type without its virtual
+   base classes, for when we use this type as a base itself.  */
+#define CLASSTYPE_SIZE(NODE) TYPE_SIZE (CLASSTYPE_AS_BASE (NODE))
+#define CLASSTYPE_SIZE_UNIT(NODE) TYPE_SIZE_UNIT (CLASSTYPE_AS_BASE (NODE))
+#define CLASSTYPE_ALIGN(NODE) TYPE_ALIGN (CLASSTYPE_AS_BASE (NODE))
+#define CLASSTYPE_USER_ALIGN(NODE) TYPE_USER_ALIGN (CLASSTYPE_AS_BASE (NODE))
+
+/* The alignment of NODE, without its virtual bases, in bytes.  */
+#define CLASSTYPE_ALIGN_UNIT(NODE) \
+  (CLASSTYPE_ALIGN (NODE) / BITS_PER_UNIT)
+
+/* True if this a Java interface type, declared with
+   '__attribute__ ((java_interface))'.  */
+#define TYPE_JAVA_INTERFACE(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->java_interface)
+
+/* A VEC(tree) of virtual functions which cannot be inherited by
+   derived classes.  When deriving from this type, the derived
+   class must provide its own definition for each of these functions.  */
+#define CLASSTYPE_PURE_VIRTUALS(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->pure_virtuals)
+
+/* Nonzero means that this type has an X() constructor.  */
+#define TYPE_HAS_DEFAULT_CONSTRUCTOR(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->h.has_default_ctor)
+
+/* Nonzero means that this type contains a mutable member.  */
+#define CLASSTYPE_HAS_MUTABLE(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->has_mutable)
+#define TYPE_HAS_MUTABLE_P(NODE) (cp_has_mutable_p (NODE))
+
+/* Nonzero means that this class type is a non-POD class.  */
+#define CLASSTYPE_NON_POD_P(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->non_pod_class)
+
+/* Nonzero means that this class contains pod types whose default
+   initialization is not a zero initialization (namely, pointers to
+   data members).  */
+#define CLASSTYPE_NON_ZERO_INIT_P(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->non_zero_init)
+
+/* Nonzero if this class is "empty" in the sense of the C++ ABI.  */
+#define CLASSTYPE_EMPTY_P(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->empty_p)
+
+/* Nonzero if this class is "nearly empty", i.e., contains only a
+   virtual function table pointer.  */
+#define CLASSTYPE_NEARLY_EMPTY_P(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->nearly_empty_p)
+
+/* Nonzero if this class contains an empty subobject.  */
+#define CLASSTYPE_CONTAINS_EMPTY_CLASS_P(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->contains_empty_class_p)
+
+/* A list of class types of which this type is a friend.  The
+   TREE_VALUE is normally a TYPE, but will be a TEMPLATE_DECL in the
+   case of a template friend.  */
+#define CLASSTYPE_FRIEND_CLASSES(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->friend_classes)
+
+/* A list of the classes which grant friendship to this class.  */
+#define CLASSTYPE_BEFRIENDING_CLASSES(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->befriending_classes)
+
+/* Say whether this node was declared as a "class" or a "struct".  */
+#define CLASSTYPE_DECLARED_CLASS(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->declared_class)
+
+/* Nonzero if this class has const members
+   which have no specified initialization.  */
+#define CLASSTYPE_READONLY_FIELDS_NEED_INIT(NODE)      \
+  (TYPE_LANG_SPECIFIC (NODE)                           \
+   ? LANG_TYPE_CLASS_CHECK (NODE)->h.const_needs_init : 0)
+#define SET_CLASSTYPE_READONLY_FIELDS_NEED_INIT(NODE, VALUE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->h.const_needs_init = (VALUE))
+
+/* Nonzero if this class has ref members
+   which have no specified initialization.  */
+#define CLASSTYPE_REF_FIELDS_NEED_INIT(NODE)           \
+  (TYPE_LANG_SPECIFIC (NODE)                           \
+   ? LANG_TYPE_CLASS_CHECK (NODE)->h.ref_needs_init : 0)
+#define SET_CLASSTYPE_REF_FIELDS_NEED_INIT(NODE, VALUE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->h.ref_needs_init = (VALUE))
+
+/* Nonzero if this class is included from a header file which employs
+   `#pragma interface', and it is not included in its implementation file.  */
+#define CLASSTYPE_INTERFACE_ONLY(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->interface_only)
+
+/* True if we have already determined whether or not vtables, VTTs,
+   typeinfo, and other similar per-class data should be emitted in
+   this translation unit.  This flag does not indicate whether or not
+   these items should be emitted; it only indicates that we know one
+   way or the other.  */
+#define CLASSTYPE_INTERFACE_KNOWN(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->interface_unknown == 0)
+/* The opposite of CLASSTYPE_INTERFACE_KNOWN.  */
+#define CLASSTYPE_INTERFACE_UNKNOWN(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->interface_unknown)
+
+#define SET_CLASSTYPE_INTERFACE_UNKNOWN_X(NODE,X) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->interface_unknown = !!(X))
+#define SET_CLASSTYPE_INTERFACE_UNKNOWN(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->interface_unknown = 1)
+#define SET_CLASSTYPE_INTERFACE_KNOWN(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->interface_unknown = 0)
+
+/* Nonzero if a _DECL node requires us to output debug info for this class.  */
+#define CLASSTYPE_DEBUG_REQUESTED(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->debug_requested)
+\f
+/* Additional macros for inheritance information.  */
+
+/* Nonzero means that this class is on a path leading to a new vtable.  */
+#define BINFO_VTABLE_PATH_MARKED(NODE) BINFO_FLAG_1 (NODE)
+
+/* Nonzero means B (a BINFO) has its own vtable.  Any copies will not
+   have this flag set.  */
+#define BINFO_NEW_VTABLE_MARKED(B) (BINFO_FLAG_2 (B))
+
+/* Compare a BINFO_TYPE with another type for equality.  For a binfo,
+   this is functionally equivalent to using same_type_p, but
+   measurably faster.  At least one of the arguments must be a
+   BINFO_TYPE.  The other can be a BINFO_TYPE or a regular type.  If
+   BINFO_TYPE(T) ever stops being the main variant of the class the
+   binfo is for, this macro must change.  */
+#define SAME_BINFO_TYPE_P(A, B) ((A) == (B))
+
+/* Any subobject that needs a new vtable must have a vptr and must not
+   be a non-virtual primary base (since it would then use the vtable from a
+   derived class and never become non-primary.)  */
+#define SET_BINFO_NEW_VTABLE_MARKED(B)                                  \
+  (BINFO_NEW_VTABLE_MARKED (B) = 1,                                     \
+   gcc_assert (!BINFO_PRIMARY_P (B) || BINFO_VIRTUAL_P (B)),            \
+   gcc_assert (TYPE_VFIELD (BINFO_TYPE (B))))
+
+/* Nonzero if this binfo is for a dependent base - one that should not
+   be searched.  */
+#define BINFO_DEPENDENT_BASE_P(NODE) BINFO_FLAG_3 (NODE)
+
+/* Nonzero if this binfo has lost its primary base binfo (because that
+   is a nearly-empty virtual base that has been taken by some other
+   base in the complete hierarchy.  */
+#define BINFO_LOST_PRIMARY_P(NODE) BINFO_FLAG_4 (NODE)
+
+/* Nonzero if this BINFO is a primary base class.  */
+#define BINFO_PRIMARY_P(NODE) BINFO_FLAG_5(NODE)
+
+/* Used by various search routines.  */
+#define IDENTIFIER_MARKED(NODE) TREE_LANG_FLAG_0 (NODE)
+\f
+/* A VEC(tree_pair_s) of the vcall indices associated with the class
+   NODE.  The PURPOSE of each element is a FUNCTION_DECL for a virtual
+   function.  The VALUE is the index into the virtual table where the
+   vcall offset for that function is stored, when NODE is a virtual
+   base.  */
+#define CLASSTYPE_VCALL_INDICES(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->vcall_indices)
+
+/* The various vtables for the class NODE.  The primary vtable will be
+   first, followed by the construction vtables and VTT, if any.  */
+#define CLASSTYPE_VTABLES(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->vtables)
+
+/* The std::type_info variable representing this class, or NULL if no
+   such variable has been created.  This field is only set for the
+   TYPE_MAIN_VARIANT of the class.  */
+#define CLASSTYPE_TYPEINFO_VAR(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->typeinfo_var)
+
+/* Accessor macros for the BINFO_VIRTUALS list.  */
+
+/* The number of bytes by which to adjust the `this' pointer when
+   calling this virtual function.  Subtract this value from the this
+   pointer. Always non-NULL, might be constant zero though.  */
+#define BV_DELTA(NODE) (TREE_PURPOSE (NODE))
+
+/* If non-NULL, the vtable index at which to find the vcall offset
+   when calling this virtual function.  Add the value at that vtable
+   index to the this pointer.  */
+#define BV_VCALL_INDEX(NODE) (TREE_TYPE (NODE))
+
+/* The function to call.  */
+#define BV_FN(NODE) (TREE_VALUE (NODE))
+
+\f
+/* For FUNCTION_TYPE or METHOD_TYPE, a list of the exceptions that
+   this type can raise.  Each TREE_VALUE is a _TYPE.  The TREE_VALUE
+   will be NULL_TREE to indicate a throw specification of `()', or
+   no exceptions allowed.  */
+#define TYPE_RAISES_EXCEPTIONS(NODE) TYPE_LANG_SLOT_1 (NODE)
+
+/* For FUNCTION_TYPE or METHOD_TYPE, return 1 iff it is declared `throw()'.  */
+#define TYPE_NOTHROW_P(NODE) \
+  (TYPE_RAISES_EXCEPTIONS (NODE) \
+   && TREE_VALUE (TYPE_RAISES_EXCEPTIONS (NODE)) == NULL_TREE)
+
+/* The binding level associated with the namespace.  */
+#define NAMESPACE_LEVEL(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.u.level)
+\f
+
+/* If a DECL has DECL_LANG_SPECIFIC, it is either a lang_decl_flags or
+   a lang_decl (which has lang_decl_flags as its initial prefix).
+   This macro is nonzero for tree nodes whose DECL_LANG_SPECIFIC is
+   the full lang_decl, and not just lang_decl_flags.  Keep these
+   checks in ascending code order.  */
+#define CAN_HAVE_FULL_LANG_DECL_P(NODE)                        \
+  (!(TREE_CODE (NODE) == FIELD_DECL                    \
+     || TREE_CODE (NODE) == VAR_DECL                   \
+     || TREE_CODE (NODE) == CONST_DECL                 \
+     || TREE_CODE (NODE) == USING_DECL))
+
+struct lang_decl_flags GTY(())
+{
+  ENUM_BITFIELD(languages) language : 4;
+  unsigned global_ctor_p : 1;
+  unsigned global_dtor_p : 1;
+  unsigned anticipated_p : 1;
+  unsigned template_conv_p : 1;
+
+  unsigned operator_attr : 1;
+  unsigned constructor_attr : 1;
+  unsigned destructor_attr : 1;
+  unsigned friend_attr : 1;
+  unsigned static_function : 1;
+  unsigned pure_virtual : 1;
+  unsigned has_in_charge_parm_p : 1;
+  unsigned has_vtt_parm_p : 1;
+
+  unsigned deferred : 1;
+  unsigned use_template : 2;
+  unsigned nonconverting : 1;
+  unsigned not_really_extern : 1;
+  unsigned initialized_in_class : 1;
+  unsigned assignment_operator_p : 1;
+  unsigned u1sel : 1;
+
+  unsigned u2sel : 1;
+  unsigned can_be_full : 1;
+  unsigned thunk_p : 1;
+  unsigned this_thunk_p : 1;
+  unsigned repo_available_p : 1;
+  unsigned hidden_friend_p : 1;
+  unsigned threadprivate_or_deleted_p : 1;
+  unsigned defaulted_p : 1;
+
+  union lang_decl_u {
+    /* In a FUNCTION_DECL for which DECL_THUNK_P holds, this is
+       THUNK_ALIAS.
+       In a FUNCTION_DECL for which DECL_THUNK_P does not hold,
+       VAR_DECL, TYPE_DECL, or TEMPLATE_DECL, this is
+       DECL_TEMPLATE_INFO.  */
+    tree GTY ((tag ("0"))) template_info;
+
+    /* In a NAMESPACE_DECL, this is NAMESPACE_LEVEL.  */
+    struct cp_binding_level * GTY ((tag ("1"))) level;
+  } GTY ((desc ("%1.u1sel"))) u;
+
+  union lang_decl_u2 {
+    /* In a FUNCTION_DECL for which DECL_THUNK_P holds, this is
+       THUNK_VIRTUAL_OFFSET.
+       Otherwise this is DECL_ACCESS.  */
+    tree GTY ((tag ("0"))) access;
+
+    /* For VAR_DECL in function, this is DECL_DISCRIMINATOR.  */
+    int GTY ((tag ("1"))) discriminator;
+  } GTY ((desc ("%1.u2sel"))) u2;
+};
+
+/* sorted_fields is sorted based on a pointer, so we need to be able
+   to resort it if pointers get rearranged.  */
+
+struct lang_decl GTY(())
+{
+  struct lang_decl_flags decl_flags;
+
+  union lang_decl_u4
+    {
+      struct full_lang_decl
+      {
+       /* In an overloaded operator, this is the value of
+          DECL_OVERLOADED_OPERATOR_P.  */
+       ENUM_BITFIELD (tree_code) operator_code : 16;
+
+       unsigned u3sel : 1;
+       unsigned pending_inline_p : 1;
+       unsigned spare : 14;
+
+       /* For a non-thunk function decl, this is a tree list of
+          friendly classes. For a thunk function decl, it is the
+          thunked to function decl.  */
+       tree befriending_classes;
+
+       /* For a non-virtual FUNCTION_DECL, this is
+          DECL_FRIEND_CONTEXT.  For a virtual FUNCTION_DECL for which
+          DECL_THIS_THUNK_P does not hold, this is DECL_THUNKS. Both
+          this pointer and result pointer adjusting thunks are
+          chained here.  This pointer thunks to return pointer thunks
+          will be chained on the return pointer thunk.  */
+       tree context;
+
+       union lang_decl_u5
+       {
+         /* In a non-thunk FUNCTION_DECL or TEMPLATE_DECL, this is
+            DECL_CLONED_FUNCTION.  */
+         tree GTY ((tag ("0"))) cloned_function;
+
+         /* In a FUNCTION_DECL for which THUNK_P holds this is the
+            THUNK_FIXED_OFFSET.  */
+         HOST_WIDE_INT GTY ((tag ("1"))) fixed_offset;
+       } GTY ((desc ("%0.decl_flags.thunk_p"))) u5;
+
+       union lang_decl_u3
+       {
+         struct sorted_fields_type * GTY ((tag ("0"), reorder ("resort_sorted_fields")))
+              sorted_fields;
+         struct cp_token_cache * GTY ((tag ("2"))) pending_inline_info;
+         struct language_function * GTY ((tag ("1")))
+              saved_language_function;
+       } GTY ((desc ("%1.u3sel + %1.pending_inline_p"))) u;
+      } GTY ((tag ("1"))) f;
+  } GTY ((desc ("%1.decl_flags.can_be_full"))) u;
+};
+
+#if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+
+#define LANG_DECL_U2_CHECK(NODE, TF) __extension__             \
+({  struct lang_decl *lt = DECL_LANG_SPECIFIC (NODE);          \
+    if (lt->decl_flags.u2sel != TF)                            \
+      lang_check_failed (__FILE__, __LINE__, __FUNCTION__);    \
+    &lt->decl_flags.u2; })
+
+#else
+
+#define LANG_DECL_U2_CHECK(NODE, TF) \
+  (&DECL_LANG_SPECIFIC (NODE)->decl_flags.u2)
+
+#endif /* ENABLE_TREE_CHECKING */
+
+/* For a FUNCTION_DECL or a VAR_DECL, the language linkage for the
+   declaration.  Some entities (like a member function in a local
+   class, or a local variable) do not have linkage at all, and this
+   macro should not be used in those cases.
+
+   Implementation note: A FUNCTION_DECL without DECL_LANG_SPECIFIC was
+   created by language-independent code, and has C linkage.  Most
+   VAR_DECLs have C++ linkage, and do not have DECL_LANG_SPECIFIC, but
+   we do create DECL_LANG_SPECIFIC for variables with non-C++ linkage.  */
+#define DECL_LANGUAGE(NODE)                            \
+  (DECL_LANG_SPECIFIC (NODE)                           \
+   ? DECL_LANG_SPECIFIC (NODE)->decl_flags.language    \
+   : (TREE_CODE (NODE) == FUNCTION_DECL                        \
+      ? lang_c : lang_cplusplus))
+
+/* Set the language linkage for NODE to LANGUAGE.  */
+#define SET_DECL_LANGUAGE(NODE, LANGUAGE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.language = (LANGUAGE))
+
+/* For FUNCTION_DECLs: nonzero means that this function is a constructor.  */
+#define DECL_CONSTRUCTOR_P(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.constructor_attr)
+
+/* Nonzero if NODE (a FUNCTION_DECL) is a constructor for a complete
+   object.  */
+#define DECL_COMPLETE_CONSTRUCTOR_P(NODE)              \
+  (DECL_CONSTRUCTOR_P (NODE)                           \
+   && DECL_NAME (NODE) == complete_ctor_identifier)
+
+/* Nonzero if NODE (a FUNCTION_DECL) is a constructor for a base
+   object.  */
+#define DECL_BASE_CONSTRUCTOR_P(NODE)          \
+  (DECL_CONSTRUCTOR_P (NODE)                   \
+   && DECL_NAME (NODE) == base_ctor_identifier)
+
+/* Nonzero if NODE (a FUNCTION_DECL) is a constructor, but not either the
+   specialized in-charge constructor or the specialized not-in-charge
+   constructor.  */
+#define DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P(NODE)               \
+  (DECL_CONSTRUCTOR_P (NODE) && !DECL_CLONED_FUNCTION_P (NODE))
+
+/* Nonzero if NODE (a FUNCTION_DECL) is a copy constructor.  */
+#define DECL_COPY_CONSTRUCTOR_P(NODE) \
+  (DECL_CONSTRUCTOR_P (NODE) && copy_fn_p (NODE) > 0)
+
+/* Nonzero if NODE (a FUNCTION_DECL) is a move constructor.  */
+#define DECL_MOVE_CONSTRUCTOR_P(NODE) \
+  (DECL_CONSTRUCTOR_P (NODE) && move_fn_p (NODE))
+
+/* Nonzero if NODE is a destructor.  */
+#define DECL_DESTRUCTOR_P(NODE)                                \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.destructor_attr)
+
+/* Nonzero if NODE (a FUNCTION_DECL) is a destructor, but not the
+   specialized in-charge constructor, in-charge deleting constructor,
+   or the base destructor.  */
+#define DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P(NODE)                        \
+  (DECL_DESTRUCTOR_P (NODE) && !DECL_CLONED_FUNCTION_P (NODE))
+
+/* Nonzero if NODE (a FUNCTION_DECL) is a destructor for a complete
+   object.  */
+#define DECL_COMPLETE_DESTRUCTOR_P(NODE)               \
+  (DECL_DESTRUCTOR_P (NODE)                            \
+   && DECL_NAME (NODE) == complete_dtor_identifier)
+
+/* Nonzero if NODE (a FUNCTION_DECL) is a destructor for a base
+   object.  */
+#define DECL_BASE_DESTRUCTOR_P(NODE)           \
+  (DECL_DESTRUCTOR_P (NODE)                    \
+   && DECL_NAME (NODE) == base_dtor_identifier)
+
+/* Nonzero if NODE (a FUNCTION_DECL) is a destructor for a complete
+   object that deletes the object after it has been destroyed.  */
+#define DECL_DELETING_DESTRUCTOR_P(NODE)               \
+  (DECL_DESTRUCTOR_P (NODE)                            \
+   && DECL_NAME (NODE) == deleting_dtor_identifier)
+
+/* Nonzero if NODE (a FUNCTION_DECL) is a cloned constructor or
+   destructor.  */
+#define DECL_CLONED_FUNCTION_P(NODE)                   \
+  ((TREE_CODE (NODE) == FUNCTION_DECL                  \
+    || TREE_CODE (NODE) == TEMPLATE_DECL)              \
+   && DECL_LANG_SPECIFIC (NODE)                                \
+   && !DECL_LANG_SPECIFIC (NODE)->decl_flags.thunk_p   \
+   && DECL_CLONED_FUNCTION (NODE) != NULL_TREE)
+
+/* If DECL_CLONED_FUNCTION_P holds, this is the function that was
+   cloned.  */
+#define DECL_CLONED_FUNCTION(NODE) \
+  (DECL_LANG_SPECIFIC (NON_THUNK_FUNCTION_CHECK(NODE))->u.f.u5.cloned_function)
+
+/* Perform an action for each clone of FN, if FN is a function with
+   clones.  This macro should be used like:
+
+      FOR_EACH_CLONE (clone, fn)
+       { ... }
+
+  */
+#define FOR_EACH_CLONE(CLONE, FN)                      \
+  if (TREE_CODE (FN) == FUNCTION_DECL                  \
+      && (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (FN)      \
+         || DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (FN)))   \
+     for (CLONE = TREE_CHAIN (FN);                     \
+         CLONE && DECL_CLONED_FUNCTION_P (CLONE);      \
+         CLONE = TREE_CHAIN (CLONE))
+
+/* Nonzero if NODE has DECL_DISCRIMINATOR and not DECL_ACCESS.  */
+#define DECL_DISCRIMINATOR_P(NODE)     \
+  (TREE_CODE (NODE) == VAR_DECL                \
+   && DECL_FUNCTION_SCOPE_P (NODE))
+
+/* Discriminator for name mangling.  */
+#define DECL_DISCRIMINATOR(NODE) (LANG_DECL_U2_CHECK (NODE, 1)->discriminator)
+
+/* Nonzero if the VTT parm has been added to NODE.  */
+#define DECL_HAS_VTT_PARM_P(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.has_vtt_parm_p)
+
+/* Nonzero if NODE is a FUNCTION_DECL for which a VTT parameter is
+   required.  */
+#define DECL_NEEDS_VTT_PARM_P(NODE)                    \
+  (CLASSTYPE_VBASECLASSES (DECL_CONTEXT (NODE))                \
+   && (DECL_BASE_CONSTRUCTOR_P (NODE)                  \
+       || DECL_BASE_DESTRUCTOR_P (NODE)))
+
+/* Nonzero if NODE is a user-defined conversion operator.  */
+#define DECL_CONV_FN_P(NODE) \
+  (DECL_NAME (NODE) && IDENTIFIER_TYPENAME_P (DECL_NAME (NODE)))
+
+/* If FN is a conversion operator, the type to which it converts.
+   Otherwise, NULL_TREE.  */
+#define DECL_CONV_FN_TYPE(FN) \
+  (DECL_CONV_FN_P (FN) ? TREE_TYPE (DECL_NAME (FN)) : NULL_TREE)
+
+/* Nonzero if NODE, which is a TEMPLATE_DECL, is a template
+   conversion operator to a type dependent on the innermost template
+   args.  */
+#define DECL_TEMPLATE_CONV_FN_P(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.template_conv_p)
+
+/* Set the overloaded operator code for NODE to CODE.  */
+#define SET_OVERLOADED_OPERATOR_CODE(NODE, CODE) \
+  (DECL_LANG_SPECIFIC (NODE)->u.f.operator_code = (CODE))
+
+/* If NODE is an overloaded operator, then this returns the TREE_CODE
+   associated with the overloaded operator.
+   DECL_ASSIGNMENT_OPERATOR_P must also be checked to determine
+   whether or not NODE is an assignment operator.  If NODE is not an
+   overloaded operator, ERROR_MARK is returned.  Since the numerical
+   value of ERROR_MARK is zero, this macro can be used as a predicate
+   to test whether or not NODE is an overloaded operator.  */
+#define DECL_OVERLOADED_OPERATOR_P(NODE)               \
+  (IDENTIFIER_OPNAME_P (DECL_NAME (NODE))              \
+   ? DECL_LANG_SPECIFIC (NODE)->u.f.operator_code : ERROR_MARK)
+
+/* Nonzero if NODE is an assignment operator (including += and such).  */
+#define DECL_ASSIGNMENT_OPERATOR_P(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.assignment_operator_p)
+
+/* For FUNCTION_DECLs: nonzero means that this function is a
+   constructor or a destructor with an extra in-charge parameter to
+   control whether or not virtual bases are constructed.  */
+#define DECL_HAS_IN_CHARGE_PARM_P(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.has_in_charge_parm_p)
+
+/* Nonzero if DECL is a declaration of __builtin_constant_p.  */
+#define DECL_IS_BUILTIN_CONSTANT_P(NODE)               \
+ (TREE_CODE (NODE) == FUNCTION_DECL                    \
+  && DECL_BUILT_IN_CLASS (NODE) == BUILT_IN_NORMAL     \
+  && DECL_FUNCTION_CODE (NODE) == BUILT_IN_CONSTANT_P)
+
+/* Nonzero for _DECL means that this decl appears in (or will appear
+   in) as a member in a RECORD_TYPE or UNION_TYPE node.  It is also for
+   detecting circularity in case members are multiply defined.  In the
+   case of a VAR_DECL, it is also used to determine how program storage
+   should be allocated.  */
+#define DECL_IN_AGGR_P(NODE) (DECL_LANG_FLAG_3 (NODE))
+
+/* Nonzero for a VAR_DECL means that the variable's initialization (if
+   any) has been processed.  (In general, DECL_INITIALIZED_P is
+   !DECL_EXTERN, but static data members may be initialized even if
+   not defined.)  */
+#define DECL_INITIALIZED_P(NODE) \
+   (TREE_LANG_FLAG_1 (VAR_DECL_CHECK (NODE)))
+
+/* Nonzero for a VAR_DECL iff an explicit initializer was provided.  */
+#define DECL_NONTRIVIALLY_INITIALIZED_P(NODE)  \
+   (TREE_LANG_FLAG_3 (VAR_DECL_CHECK (NODE)))
+
+/* Nonzero for a VAR_DECL that was initialized with a
+   constant-expression.  */
+#define DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P(NODE) \
+  (TREE_LANG_FLAG_2 (VAR_DECL_CHECK (NODE)))
+
+/* Nonzero for a VAR_DECL that can be used in an integral constant
+   expression.
+
+      [expr.const]
+
+      An integral constant-expression can only involve ... const
+      variables of static or enumeration types initialized with
+      constant expressions ...
+
+   The standard does not require that the expression be non-volatile.
+   G++ implements the proposed correction in DR 457.  */
+#define DECL_INTEGRAL_CONSTANT_VAR_P(NODE)             \
+  (TREE_CODE (NODE) == VAR_DECL                                \
+   && CP_TYPE_CONST_NON_VOLATILE_P (TREE_TYPE (NODE))  \
+   && INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (NODE))        \
+   && DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (NODE))
+
+/* Nonzero if the DECL was initialized in the class definition itself,
+   rather than outside the class.  This is used for both static member
+   VAR_DECLS, and FUNCTION_DECLS that are defined in the class.  */
+#define DECL_INITIALIZED_IN_CLASS_P(DECL) \
+ (DECL_LANG_SPECIFIC (DECL)->decl_flags.initialized_in_class)
+
+/* Nonzero for DECL means that this decl is just a friend declaration,
+   and should not be added to the list of members for this class.  */
+#define DECL_FRIEND_P(NODE) (DECL_LANG_SPECIFIC (NODE)->decl_flags.friend_attr)
+
+/* A TREE_LIST of the types which have befriended this FUNCTION_DECL.  */
+#define DECL_BEFRIENDING_CLASSES(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->u.f.befriending_classes)
+
+/* Nonzero for FUNCTION_DECL means that this decl is a static
+   member function.  */
+#define DECL_STATIC_FUNCTION_P(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.static_function)
+
+/* Nonzero for FUNCTION_DECL means that this decl is a non-static
+   member function.  */
+#define DECL_NONSTATIC_MEMBER_FUNCTION_P(NODE) \
+  (TREE_CODE (TREE_TYPE (NODE)) == METHOD_TYPE)
+
+/* Nonzero for FUNCTION_DECL means that this decl is a member function
+   (static or non-static).  */
+#define DECL_FUNCTION_MEMBER_P(NODE) \
+ (DECL_NONSTATIC_MEMBER_FUNCTION_P (NODE) || DECL_STATIC_FUNCTION_P (NODE))
+
+/* Nonzero for FUNCTION_DECL means that this member function
+   has `this' as const X *const.  */
+#define DECL_CONST_MEMFUNC_P(NODE)                                      \
+  (DECL_NONSTATIC_MEMBER_FUNCTION_P (NODE)                              \
+   && CP_TYPE_CONST_P (TREE_TYPE (TREE_VALUE                            \
+                                 (TYPE_ARG_TYPES (TREE_TYPE (NODE))))))
+
+/* Nonzero for FUNCTION_DECL means that this member function
+   has `this' as volatile X *const.  */
+#define DECL_VOLATILE_MEMFUNC_P(NODE)                                   \
+  (DECL_NONSTATIC_MEMBER_FUNCTION_P (NODE)                              \
+   && CP_TYPE_VOLATILE_P (TREE_TYPE (TREE_VALUE                                 \
+                                 (TYPE_ARG_TYPES (TREE_TYPE (NODE))))))
+
+/* Nonzero for a DECL means that this member is a non-static member.  */
+#define DECL_NONSTATIC_MEMBER_P(NODE)          \
+  (DECL_NONSTATIC_MEMBER_FUNCTION_P (NODE)     \
+   || TREE_CODE (NODE) == FIELD_DECL)
+
+/* Nonzero for _DECL means that this member object type
+   is mutable.  */
+#define DECL_MUTABLE_P(NODE) (DECL_LANG_FLAG_0 (NODE))
+
+/* Nonzero for _DECL means that this constructor is a non-converting
+   constructor.  */
+#define DECL_NONCONVERTING_P(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.nonconverting)
+
+/* Nonzero for FUNCTION_DECL means that this member function is a pure
+   virtual function.  */
+#define DECL_PURE_VIRTUAL_P(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.pure_virtual)
+
+/* True (in a FUNCTION_DECL) if NODE is a virtual function that is an
+   invalid overrider for a function from a base class.  Once we have
+   complained about an invalid overrider we avoid complaining about it
+   again.  */
+#define DECL_INVALID_OVERRIDER_P(NODE) \
+  (DECL_LANG_FLAG_4 (NODE))
+
+/* The thunks associated with NODE, a FUNCTION_DECL.  */
+#define DECL_THUNKS(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->u.f.context)
+
+/* Nonzero if NODE is a thunk, rather than an ordinary function.  */
+#define DECL_THUNK_P(NODE)                     \
+  (TREE_CODE (NODE) == FUNCTION_DECL           \
+   && DECL_LANG_SPECIFIC (NODE)                        \
+   && DECL_LANG_SPECIFIC (NODE)->decl_flags.thunk_p)
+
+/* Set DECL_THUNK_P for node.  */
+#define SET_DECL_THUNK_P(NODE, THIS_ADJUSTING)                 \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.thunk_p = 1,          \
+   DECL_LANG_SPECIFIC (NODE)->u.f.u3sel = 1,                   \
+   DECL_LANG_SPECIFIC (NODE)->decl_flags.this_thunk_p = (THIS_ADJUSTING))
+
+/* Nonzero if NODE is a this pointer adjusting thunk.  */
+#define DECL_THIS_THUNK_P(NODE)                        \
+  (DECL_THUNK_P (NODE) && DECL_LANG_SPECIFIC (NODE)->decl_flags.this_thunk_p)
+
+/* Nonzero if NODE is a result pointer adjusting thunk.  */
+#define DECL_RESULT_THUNK_P(NODE)                      \
+  (DECL_THUNK_P (NODE) && !DECL_LANG_SPECIFIC (NODE)->decl_flags.this_thunk_p)
+
+/* Nonzero if NODE is a FUNCTION_DECL, but not a thunk.  */
+#define DECL_NON_THUNK_FUNCTION_P(NODE)                                \
+  (TREE_CODE (NODE) == FUNCTION_DECL && !DECL_THUNK_P (NODE))
+
+/* Nonzero if NODE is `extern "C"'.  */
+#define DECL_EXTERN_C_P(NODE) \
+  (DECL_LANGUAGE (NODE) == lang_c)
+
+/* Nonzero if NODE is an `extern "C"' function.  */
+#define DECL_EXTERN_C_FUNCTION_P(NODE) \
+  (DECL_NON_THUNK_FUNCTION_P (NODE) && DECL_EXTERN_C_P (NODE))
+
+/* True iff DECL is an entity with vague linkage whose definition is
+   available in this translation unit.  */
+#define DECL_REPO_AVAILABLE_P(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.repo_available_p)
+
+/* Nonzero if this DECL is the __PRETTY_FUNCTION__ variable in a
+   template function.  */
+#define DECL_PRETTY_FUNCTION_P(NODE) \
+  (TREE_LANG_FLAG_0 (VAR_DECL_CHECK (NODE)))
+
+/* The _TYPE context in which this _DECL appears.  This field holds the
+   class where a virtual function instance is actually defined.  */
+#define DECL_CLASS_CONTEXT(NODE) \
+  (DECL_CLASS_SCOPE_P (NODE) ? DECL_CONTEXT (NODE) : NULL_TREE)
+
+/* For a non-member friend function, the class (if any) in which this
+   friend was defined.  For example, given:
+
+     struct S { friend void f (); };
+
+   the DECL_FRIEND_CONTEXT for `f' will be `S'.  */
+#define DECL_FRIEND_CONTEXT(NODE)                              \
+  ((DECL_FRIEND_P (NODE) && !DECL_FUNCTION_MEMBER_P (NODE))    \
+   ? DECL_LANG_SPECIFIC (NODE)->u.f.context                    \
+   : NULL_TREE)
+
+/* Set the DECL_FRIEND_CONTEXT for NODE to CONTEXT.  */
+#define SET_DECL_FRIEND_CONTEXT(NODE, CONTEXT) \
+  (DECL_LANG_SPECIFIC (NODE)->u.f.context = (CONTEXT))
+
+/* NULL_TREE in DECL_CONTEXT represents the global namespace.  */
+#define CP_DECL_CONTEXT(NODE) \
+  (DECL_CONTEXT (NODE) ? DECL_CONTEXT (NODE) : global_namespace)
+#define CP_TYPE_CONTEXT(NODE) \
+  (TYPE_CONTEXT (NODE) ? TYPE_CONTEXT (NODE) : global_namespace)
+#define FROB_CONTEXT(NODE)   ((NODE) == global_namespace ? NULL_TREE : (NODE))
+
+/* 1 iff NODE has namespace scope, including the global namespace.  */
+#define DECL_NAMESPACE_SCOPE_P(NODE)                           \
+  (!DECL_TEMPLATE_PARM_P (NODE)                                        \
+   && TREE_CODE (CP_DECL_CONTEXT (NODE)) == NAMESPACE_DECL)
+
+/* 1 iff NODE is a class member.  */
+#define DECL_CLASS_SCOPE_P(NODE) \
+  (DECL_CONTEXT (NODE) && TYPE_P (DECL_CONTEXT (NODE)))
+
+#define TYPE_CLASS_SCOPE_P(NODE) \
+  (TYPE_CONTEXT (NODE) && TYPE_P (TYPE_CONTEXT (NODE)))
+
+/* 1 iff NODE is function-local.  */
+#define DECL_FUNCTION_SCOPE_P(NODE) \
+  (DECL_CONTEXT (NODE) \
+   && TREE_CODE (DECL_CONTEXT (NODE)) == FUNCTION_DECL)
+
+/* 1 iff VAR_DECL node NODE is a type-info decl.  This flag is set for
+   both the primary typeinfo object and the associated NTBS name.  */
+#define DECL_TINFO_P(NODE) TREE_LANG_FLAG_4 (VAR_DECL_CHECK (NODE))
+
+/* 1 iff VAR_DECL node NODE is virtual table or VTT.  */
+#define DECL_VTABLE_OR_VTT_P(NODE) TREE_LANG_FLAG_5 (VAR_DECL_CHECK (NODE))
+
+/* Returns 1 iff VAR_DECL is a construction virtual table.
+   DECL_VTABLE_OR_VTT_P will be true in this case and must be checked
+   before using this macro.  */
+#define DECL_CONSTRUCTION_VTABLE_P(NODE) \
+  TREE_LANG_FLAG_6 (VAR_DECL_CHECK (NODE))
+
+/* 1 iff NODE is function-local, but for types.  */
+#define LOCAL_CLASS_P(NODE)                            \
+  (decl_function_context (TYPE_MAIN_DECL (NODE)) != NULL_TREE)
+
+/* For a NAMESPACE_DECL: the list of using namespace directives
+   The PURPOSE is the used namespace, the value is the namespace
+   that is the common ancestor.  */
+#define DECL_NAMESPACE_USING(NODE) DECL_VINDEX (NAMESPACE_DECL_CHECK (NODE))
+
+/* In a NAMESPACE_DECL, the DECL_INITIAL is used to record all users
+   of a namespace, to record the transitive closure of using namespace.  */
+#define DECL_NAMESPACE_USERS(NODE) DECL_INITIAL (NAMESPACE_DECL_CHECK (NODE))
+
+/* In a NAMESPACE_DECL, the list of namespaces which have associated
+   themselves with this one.  */
+#define DECL_NAMESPACE_ASSOCIATIONS(NODE) \
+  (NAMESPACE_DECL_CHECK (NODE)->decl_non_common.saved_tree)
+
+/* In a NAMESPACE_DECL, points to the original namespace if this is
+   a namespace alias.  */
+#define DECL_NAMESPACE_ALIAS(NODE) \
+       DECL_ABSTRACT_ORIGIN (NAMESPACE_DECL_CHECK (NODE))
+#define ORIGINAL_NAMESPACE(NODE)  \
+  (DECL_NAMESPACE_ALIAS (NODE) ? DECL_NAMESPACE_ALIAS (NODE) : (NODE))
+
+/* Nonzero if NODE is the std namespace.  */
+#define DECL_NAMESPACE_STD_P(NODE)                     \
+  (TREE_CODE (NODE) == NAMESPACE_DECL                  \
+   && CP_DECL_CONTEXT (NODE) == global_namespace       \
+   && DECL_NAME (NODE) == std_identifier)
+
+/* In a TREE_LIST concatenating using directives, indicate indirect
+   directives  */
+#define TREE_INDIRECT_USING(NODE) (TREE_LIST_CHECK (NODE)->base.lang_flag_0)
+
+/* In a TREE_LIST in an attribute list, indicates that the attribute
+   must be applied at instantiation time.  */
+#define ATTR_IS_DEPENDENT(NODE) (TREE_LIST_CHECK (NODE)->base.lang_flag_0)
+
+extern tree decl_shadowed_for_var_lookup (tree);
+extern void decl_shadowed_for_var_insert (tree, tree);
+
+/* Non zero if this is a using decl for a dependent scope. */
+#define DECL_DEPENDENT_P(NODE) DECL_LANG_FLAG_0 (USING_DECL_CHECK (NODE))
+
+/* The scope named in a using decl.  */
+#define USING_DECL_SCOPE(NODE) TREE_TYPE (USING_DECL_CHECK (NODE))
+
+/* The decls named by a using decl.  */
+#define USING_DECL_DECLS(NODE) DECL_INITIAL (USING_DECL_CHECK (NODE))
+
+/* In a VAR_DECL, true if we have a shadowed local variable
+   in the shadowed var table for this VAR_DECL.  */
+#define DECL_HAS_SHADOWED_FOR_VAR_P(NODE) \
+  (VAR_DECL_CHECK (NODE)->decl_with_vis.shadowed_for_var_p)
+
+/* In a VAR_DECL for a variable declared in a for statement,
+   this is the shadowed (local) variable.  */
+#define DECL_SHADOWED_FOR_VAR(NODE) \
+  (DECL_HAS_SHADOWED_FOR_VAR_P(NODE) ? decl_shadowed_for_var_lookup (NODE) : NULL)
+
+#define SET_DECL_SHADOWED_FOR_VAR(NODE, VAL) \
+  (decl_shadowed_for_var_insert (NODE, VAL))
+
+/* In a FUNCTION_DECL, this is nonzero if this function was defined in
+   the class definition.  We have saved away the text of the function,
+   but have not yet processed it.  */
+#define DECL_PENDING_INLINE_P(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->u.f.pending_inline_p)
+
+/* If DECL_PENDING_INLINE_P holds, this is the saved text of the
+   function.  */
+#define DECL_PENDING_INLINE_INFO(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->u.f.u.pending_inline_info)
+
+/* For a TYPE_DECL: if this structure has many fields, we'll sort them
+   and put them into a TREE_VEC.  */
+#define DECL_SORTED_FIELDS(NODE) \
+  (DECL_LANG_SPECIFIC (TYPE_DECL_CHECK (NODE))->u.f.u.sorted_fields)
+
+/* True if on the deferred_fns (see decl2.c) list.  */
+#define DECL_DEFERRED_FN(DECL) \
+  (DECL_LANG_SPECIFIC (DECL)->decl_flags.deferred)
+
+/* If non-NULL for a VAR_DECL, FUNCTION_DECL, TYPE_DECL or
+   TEMPLATE_DECL, the entity is either a template specialization (if
+   DECL_USE_TEMPLATE is nonzero) or the abstract instance of the
+   template itself.
+
+   In either case, DECL_TEMPLATE_INFO is a TREE_LIST, whose
+   TREE_PURPOSE is the TEMPLATE_DECL of which this entity is a
+   specialization or abstract instance.  The TREE_VALUE is the
+   template arguments used to specialize the template.
+   
+   Consider:
+
+      template <typename T> struct S { friend void f(T) {} };
+
+   In this case, S<int>::f is, from the point of view of the compiler,
+   an instantiation of a template -- but, from the point of view of
+   the language, each instantiation of S results in a wholly unrelated
+   global function f.  In this case, DECL_TEMPLATE_INFO for S<int>::f
+   will be non-NULL, but DECL_USE_TEMPLATE will be zero.  */
+#define DECL_TEMPLATE_INFO(NODE) \
+  (DECL_LANG_SPECIFIC (VAR_TEMPL_TYPE_OR_FUNCTION_DECL_CHECK (NODE)) \
+   ->decl_flags.u.template_info)
+
+/* For a VAR_DECL, indicates that the variable is actually a
+   non-static data member of anonymous union that has been promoted to
+   variable status.  */
+#define DECL_ANON_UNION_VAR_P(NODE) \
+  (DECL_LANG_FLAG_4 (VAR_DECL_CHECK (NODE)))
+
+/* Template information for a RECORD_TYPE or UNION_TYPE.  */
+#define CLASSTYPE_TEMPLATE_INFO(NODE) \
+  (LANG_TYPE_CLASS_CHECK (RECORD_OR_UNION_CHECK (NODE))->template_info)
+
+/* Template information for an ENUMERAL_TYPE.  Although an enumeration may
+   not be a primary template, it may be declared within the scope of a
+   primary template and the enumeration constants may depend on
+   non-type template parameters.  */
+#define ENUM_TEMPLATE_INFO(NODE) \
+  (TYPE_LANG_SLOT_1 (ENUMERAL_TYPE_CHECK (NODE)))
+
+/* Template information for a template template parameter.  */
+#define TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO(NODE) \
+  (LANG_TYPE_CLASS_CHECK (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK (NODE)) \
+   ->template_info)
+
+/* Template information for an ENUMERAL_, RECORD_, or UNION_TYPE.  */
+#define TYPE_TEMPLATE_INFO(NODE)                       \
+  (TREE_CODE (NODE) == ENUMERAL_TYPE                   \
+   ? ENUM_TEMPLATE_INFO (NODE) :                       \
+   (TREE_CODE (NODE) == BOUND_TEMPLATE_TEMPLATE_PARM   \
+    ? TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO (NODE) :    \
+    (TYPE_LANG_SPECIFIC (NODE)                         \
+     ? CLASSTYPE_TEMPLATE_INFO (NODE)                  \
+     : NULL_TREE)))
+
+/* Set the template information for an ENUMERAL_, RECORD_, or
+   UNION_TYPE to VAL.  */
+#define SET_TYPE_TEMPLATE_INFO(NODE, VAL)      \
+  (TREE_CODE (NODE) == ENUMERAL_TYPE           \
+   ? (ENUM_TEMPLATE_INFO (NODE) = (VAL))       \
+   : (CLASSTYPE_TEMPLATE_INFO (NODE) = (VAL)))
+
+#define TI_TEMPLATE(NODE) (TREE_PURPOSE (NODE))
+#define TI_ARGS(NODE) (TREE_VALUE (NODE))
+#define TI_PENDING_TEMPLATE_FLAG(NODE) TREE_LANG_FLAG_1 (NODE)
+
+/* We use TREE_VECs to hold template arguments.  If there is only one
+   level of template arguments, then the TREE_VEC contains the
+   arguments directly.  If there is more than one level of template
+   arguments, then each entry in the TREE_VEC is itself a TREE_VEC,
+   containing the template arguments for a single level.  The first
+   entry in the outer TREE_VEC is the outermost level of template
+   parameters; the last is the innermost.
+
+   It is incorrect to ever form a template argument vector containing
+   only one level of arguments, but which is a TREE_VEC containing as
+   its only entry the TREE_VEC for that level.  */
+
+/* Nonzero if the template arguments is actually a vector of vectors,
+   rather than just a vector.  */
+#define TMPL_ARGS_HAVE_MULTIPLE_LEVELS(NODE)                \
+  (NODE && TREE_VEC_LENGTH (NODE) && TREE_VEC_ELT (NODE, 0)  \
+   && TREE_CODE (TREE_VEC_ELT (NODE, 0)) == TREE_VEC)
+
+/* The depth of a template argument vector.  When called directly by
+   the parser, we use a TREE_LIST rather than a TREE_VEC to represent
+   template arguments.  In fact, we may even see NULL_TREE if there
+   are no template arguments.  In both of those cases, there is only
+   one level of template arguments.  */
+#define TMPL_ARGS_DEPTH(NODE)                                  \
+  (TMPL_ARGS_HAVE_MULTIPLE_LEVELS (NODE) ? TREE_VEC_LENGTH (NODE) : 1)
+
+/* The LEVELth level of the template ARGS.  The outermost level of
+   args is level 1, not level 0.  */
+#define TMPL_ARGS_LEVEL(ARGS, LEVEL)           \
+  (TMPL_ARGS_HAVE_MULTIPLE_LEVELS (ARGS)       \
+   ? TREE_VEC_ELT (ARGS, (LEVEL) - 1) : (ARGS))
+
+/* Set the LEVELth level of the template ARGS to VAL.  This macro does
+   not work with single-level argument vectors.  */
+#define SET_TMPL_ARGS_LEVEL(ARGS, LEVEL, VAL)  \
+  (TREE_VEC_ELT (ARGS, (LEVEL) - 1) = (VAL))
+
+/* Accesses the IDXth parameter in the LEVELth level of the ARGS.  */
+#define TMPL_ARG(ARGS, LEVEL, IDX)                             \
+  (TREE_VEC_ELT (TMPL_ARGS_LEVEL (ARGS, LEVEL), IDX))
+
+/* Given a single level of template arguments in NODE, return the
+   number of arguments.  */
+#define NUM_TMPL_ARGS(NODE)                            \
+  (TREE_VEC_LENGTH (NODE))
+
+/* Returns the innermost level of template arguments in ARGS.  */
+#define INNERMOST_TEMPLATE_ARGS(NODE) \
+  (get_innermost_template_args ((NODE), 1))
+
+/* The number of levels of template parameters given by NODE.  */
+#define TMPL_PARMS_DEPTH(NODE) \
+  ((HOST_WIDE_INT) TREE_INT_CST_LOW (TREE_PURPOSE (NODE)))
+
+/* The TEMPLATE_DECL instantiated or specialized by NODE.  This
+   TEMPLATE_DECL will be the immediate parent, not the most general
+   template.  For example, in:
+
+      template <class T> struct S { template <class U> void f(U); }
+
+   the FUNCTION_DECL for S<int>::f<double> will have, as its
+   DECL_TI_TEMPLATE, `template <class U> S<int>::f<U>'.
+
+   As a special case, for a member friend template of a template
+   class, this value will not be a TEMPLATE_DECL, but rather an
+   IDENTIFIER_NODE or OVERLOAD indicating the name of the template and
+   any explicit template arguments provided.  For example, in:
+
+     template <class T> struct S { friend void f<int>(int, double); }
+
+   the DECL_TI_TEMPLATE will be an IDENTIFIER_NODE for `f' and the
+   DECL_TI_ARGS will be {int}.  */
+#define DECL_TI_TEMPLATE(NODE)      TI_TEMPLATE (DECL_TEMPLATE_INFO (NODE))
+
+/* The template arguments used to obtain this decl from the most
+   general form of DECL_TI_TEMPLATE.  For the example given for
+   DECL_TI_TEMPLATE, the DECL_TI_ARGS will be {int, double}.  These
+   are always the full set of arguments required to instantiate this
+   declaration from the most general template specialized here.  */
+#define DECL_TI_ARGS(NODE)         TI_ARGS (DECL_TEMPLATE_INFO (NODE))
+
+/* The TEMPLATE_DECL associated with NODE, a class type.  Even if NODE
+   will be generated from a partial specialization, the TEMPLATE_DECL
+   referred to here will be the original template.  For example,
+   given:
+
+      template <typename T> struct S {};
+      template <typename T> struct S<T*> {};
+      
+   the CLASSTPYE_TI_TEMPLATE for S<int*> will be S, not the S<T*>.  */
+#define CLASSTYPE_TI_TEMPLATE(NODE) TI_TEMPLATE (CLASSTYPE_TEMPLATE_INFO (NODE))
+#define CLASSTYPE_TI_ARGS(NODE)     TI_ARGS (CLASSTYPE_TEMPLATE_INFO (NODE))
+
+/* For a template instantiation TYPE, returns the TYPE corresponding
+   to the primary template.  Otherwise returns TYPE itself.  */
+#define CLASSTYPE_PRIMARY_TEMPLATE_TYPE(TYPE)                          \
+  ((CLASSTYPE_USE_TEMPLATE ((TYPE))                                    \
+    && !CLASSTYPE_TEMPLATE_SPECIALIZATION ((TYPE)))                    \
+   ? TREE_TYPE (DECL_TEMPLATE_RESULT (DECL_PRIMARY_TEMPLATE            \
+                                     (CLASSTYPE_TI_TEMPLATE ((TYPE))))) \
+   : (TYPE))
+
+/* Like CLASS_TI_TEMPLATE, but also works for ENUMERAL_TYPEs.  */
+#define TYPE_TI_TEMPLATE(NODE)                 \
+  (TI_TEMPLATE (TYPE_TEMPLATE_INFO (NODE)))
+
+/* Like DECL_TI_ARGS, but for an ENUMERAL_, RECORD_, or UNION_TYPE.  */
+#define TYPE_TI_ARGS(NODE)                     \
+  (TI_ARGS (TYPE_TEMPLATE_INFO (NODE)))
+
+#define INNERMOST_TEMPLATE_PARMS(NODE)  TREE_VALUE (NODE)
+
+/* Nonzero if NODE (a TEMPLATE_DECL) is a member template, in the
+   sense of [temp.mem].  */
+#define DECL_MEMBER_TEMPLATE_P(NODE) \
+  (DECL_LANG_FLAG_1 (TEMPLATE_DECL_CHECK (NODE)))
+
+/* Nonzero if the NODE corresponds to the template parameters for a
+   member template, whose inline definition is being processed after
+   the class definition is complete.  */
+#define TEMPLATE_PARMS_FOR_INLINE(NODE) TREE_LANG_FLAG_1 (NODE)
+
+/* Determine if a parameter (i.e., a PARM_DECL) is a function
+   parameter pack.  */
+#define FUNCTION_PARAMETER_PACK_P(NODE) \
+  (DECL_LANG_FLAG_1 (PARM_DECL_CHECK (NODE)))
+
+/* Determines if NODE is an expansion of one or more parameter packs,
+   e.g., a TYPE_PACK_EXPANSION or EXPR_PACK_EXPANSION.  */
+#define PACK_EXPANSION_P(NODE)                 \
+  (TREE_CODE (NODE) == TYPE_PACK_EXPANSION     \
+   || TREE_CODE (NODE) == EXPR_PACK_EXPANSION)
+
+/* Extracts the type or expression pattern from a TYPE_PACK_EXPANSION or
+   EXPR_PACK_EXPANSION.  */
+#define PACK_EXPANSION_PATTERN(NODE)                            \
+  (TREE_CODE (NODE) == TYPE_PACK_EXPANSION? TREE_TYPE (NODE)    \
+   : TREE_OPERAND (NODE, 0))
+
+/* Sets the type or expression pattern for a TYPE_PACK_EXPANSION or
+   EXPR_PACK_EXPANSION.  */
+#define SET_PACK_EXPANSION_PATTERN(NODE,VALUE)  \
+  if (TREE_CODE (NODE) == TYPE_PACK_EXPANSION)  \
+    TREE_TYPE (NODE) = VALUE;                   \
+  else                                          \
+    TREE_OPERAND (NODE, 0) = VALUE
+
+/* The list of parameter packs used in the PACK_EXPANSION_* node. The
+   TREE_VALUE of each TREE_LIST contains the parameter packs.  */
+#define PACK_EXPANSION_PARAMETER_PACKS(NODE) TREE_CHAIN (NODE)
+
+/* Determine if this is an argument pack.  */
+#define ARGUMENT_PACK_P(NODE)                          \
+  (TREE_CODE (NODE) == TYPE_ARGUMENT_PACK              \
+   || TREE_CODE (NODE) == NONTYPE_ARGUMENT_PACK)
+
+/* The arguments stored in an argument pack. Arguments are stored in a
+   TREE_VEC, which may have length zero.  */
+#define ARGUMENT_PACK_ARGS(NODE)                               \
+  (TREE_CODE (NODE) == TYPE_ARGUMENT_PACK? TREE_TYPE (NODE)    \
+   : TREE_OPERAND (NODE, 0))
+
+/* Set the arguments stored in an argument pack. VALUE must be a
+   TREE_VEC.  */
+#define SET_ARGUMENT_PACK_ARGS(NODE,VALUE)     \
+  if (TREE_CODE (NODE) == TYPE_ARGUMENT_PACK)  \
+    TREE_TYPE (NODE) = VALUE;                           \
+  else                                                  \
+    TREE_OPERAND (NODE, 0) = VALUE
+
+/* Whether the argument pack is "incomplete", meaning that more
+   arguments can still be deduced. Incomplete argument packs are only
+   used when the user has provided an explicit template argument list
+   for a variadic function template. Some of the explicit template
+   arguments will be placed into the beginning of the argument pack,
+   but additional arguments might still be deduced.  */
+#define ARGUMENT_PACK_INCOMPLETE_P(NODE)        \
+  TREE_LANG_FLAG_0 (ARGUMENT_PACK_ARGS (NODE))
+
+/* When ARGUMENT_PACK_INCOMPLETE_P, stores the explicit template
+   arguments used to fill this pack.  */
+#define ARGUMENT_PACK_EXPLICIT_ARGS(NODE)       \
+  TREE_TYPE (ARGUMENT_PACK_ARGS (NODE))
+
+/* In an ARGUMENT_PACK_SELECT, the argument pack from which an
+   argument will be selected.  */
+#define ARGUMENT_PACK_SELECT_FROM_PACK(NODE)                           \
+  (((struct tree_argument_pack_select *)ARGUMENT_PACK_SELECT_CHECK (NODE))->argument_pack)
+
+/* In an ARGUMENT_PACK_SELECT, the index of the argument we want to
+   select.  */
+#define ARGUMENT_PACK_SELECT_INDEX(NODE)                               \
+  (((struct tree_argument_pack_select *)ARGUMENT_PACK_SELECT_CHECK (NODE))->index)
+  
+/* In an ARGUMENT_PACK_SELECT, the actual underlying argument that the
+   ARGUMENT_PACK_SELECT represents. */
+#define ARGUMENT_PACK_SELECT_ARG(NODE)                                 \
+  TREE_VEC_ELT (ARGUMENT_PACK_ARGS (ARGUMENT_PACK_SELECT_FROM_PACK (NODE)), \
+               ARGUMENT_PACK_SELECT_INDEX (NODE));
+
+/* In a FUNCTION_DECL, the saved language-specific per-function data.  */
+#define DECL_SAVED_FUNCTION_DATA(NODE)                 \
+  (DECL_LANG_SPECIFIC (FUNCTION_DECL_CHECK (NODE))     \
+   ->u.f.u.saved_language_function)
+
+/* Indicates an indirect_expr is for converting a reference.  */
+#define REFERENCE_REF_P(NODE) \
+  TREE_LANG_FLAG_0 (INDIRECT_REF_CHECK (NODE))
+
+#define NEW_EXPR_USE_GLOBAL(NODE) \
+  TREE_LANG_FLAG_0 (NEW_EXPR_CHECK (NODE))
+#define DELETE_EXPR_USE_GLOBAL(NODE) \
+  TREE_LANG_FLAG_0 (DELETE_EXPR_CHECK (NODE))
+#define DELETE_EXPR_USE_VEC(NODE) \
+  TREE_LANG_FLAG_1 (DELETE_EXPR_CHECK (NODE))
+
+/* Indicates that this is a non-dependent COMPOUND_EXPR which will
+   resolve to a function call.  */
+#define COMPOUND_EXPR_OVERLOADED(NODE) \
+  TREE_LANG_FLAG_0 (COMPOUND_EXPR_CHECK (NODE))
+
+/* In a CALL_EXPR appearing in a template, true if Koenig lookup
+   should be performed at instantiation time.  */
+#define KOENIG_LOOKUP_P(NODE) TREE_LANG_FLAG_0 (CALL_EXPR_CHECK (NODE))
+
+/* Indicates whether a string literal has been parenthesized. Such
+   usages are disallowed in certain circumstances.  */
+
+#define PAREN_STRING_LITERAL_P(NODE) \
+  TREE_LANG_FLAG_0 (STRING_CST_CHECK (NODE))
+
+/* Nonzero if this AGGR_INIT_EXPR provides for initialization via a
+   constructor call, rather than an ordinary function call.  */
+#define AGGR_INIT_VIA_CTOR_P(NODE) \
+  TREE_LANG_FLAG_0 (AGGR_INIT_EXPR_CHECK (NODE))
+
+/* Nonzero if expanding this AGGR_INIT_EXPR should first zero-initialize
+   the object.  */
+#define AGGR_INIT_ZERO_FIRST(NODE) \
+  TREE_LANG_FLAG_2 (AGGR_INIT_EXPR_CHECK (NODE))
+
+/* AGGR_INIT_EXPR accessors.  These are equivalent to the CALL_EXPR
+   accessors, except for AGGR_INIT_EXPR_SLOT (which takes the place of
+   CALL_EXPR_STATIC_CHAIN).  */
+
+#define AGGR_INIT_EXPR_FN(NODE) TREE_OPERAND (AGGR_INIT_EXPR_CHECK (NODE), 1)
+#define AGGR_INIT_EXPR_SLOT(NODE) \
+  TREE_OPERAND (AGGR_INIT_EXPR_CHECK (NODE), 2)
+#define AGGR_INIT_EXPR_ARG(NODE, I) \
+  TREE_OPERAND (AGGR_INIT_EXPR_CHECK (NODE), (I) + 3)
+#define aggr_init_expr_nargs(NODE) (VL_EXP_OPERAND_LENGTH(NODE) - 3)
+
+/* AGGR_INIT_EXPR_ARGP returns a pointer to the argument vector for NODE.
+   We can't use &AGGR_INIT_EXPR_ARG (NODE, 0) because that will complain if
+   the argument count is zero when checking is enabled.  Instead, do
+   the pointer arithmetic to advance past the 3 fixed operands in a
+   AGGR_INIT_EXPR.  That produces a valid pointer to just past the end of
+   the operand array, even if it's not valid to dereference it.  */
+#define AGGR_INIT_EXPR_ARGP(NODE) \
+  (&(TREE_OPERAND (AGGR_INIT_EXPR_CHECK (NODE), 0)) + 3)
+
+/* Abstract iterators for AGGR_INIT_EXPRs.  */
+
+/* Structure containing iterator state.  */
+typedef struct aggr_init_expr_arg_iterator_d GTY (())
+{
+  tree t;      /* the aggr_init_expr */
+  int n;       /* argument count */
+  int i;       /* next argument index */
+} aggr_init_expr_arg_iterator;
+
+/* Initialize the abstract argument list iterator object ITER with the
+   arguments from AGGR_INIT_EXPR node EXP.  */
+static inline void
+init_aggr_init_expr_arg_iterator (tree exp,
+                                      aggr_init_expr_arg_iterator *iter)
+{
+  iter->t = exp;
+  iter->n = aggr_init_expr_nargs (exp);
+  iter->i = 0;
+}
+
+/* Return the next argument from abstract argument list iterator object ITER,
+   and advance its state.  Return NULL_TREE if there are no more arguments.  */
+static inline tree
+next_aggr_init_expr_arg (aggr_init_expr_arg_iterator *iter)
+{
+  tree result;
+  if (iter->i >= iter->n)
+    return NULL_TREE;
+  result = AGGR_INIT_EXPR_ARG (iter->t, iter->i);
+  iter->i++;
+  return result;
+}
+
+/* Initialize the abstract argument list iterator object ITER, then advance
+   past and return the first argument.  Useful in for expressions, e.g.
+     for (arg = first_aggr_init_expr_arg (exp, &iter); arg;
+          arg = next_aggr_init_expr_arg (&iter))   */
+static inline tree
+first_aggr_init_expr_arg (tree exp, aggr_init_expr_arg_iterator *iter)
+{
+  init_aggr_init_expr_arg_iterator (exp, iter);
+  return next_aggr_init_expr_arg (iter);
+}
+
+/* Test whether there are more arguments in abstract argument list iterator
+   ITER, without changing its state.  */
+static inline bool
+more_aggr_init_expr_args_p (const aggr_init_expr_arg_iterator *iter)
+{
+  return (iter->i < iter->n);
+}
+
+/* Iterate through each argument ARG of AGGR_INIT_EXPR CALL, using variable
+   ITER (of type aggr_init_expr_arg_iterator) to hold the iteration state.  */
+#define FOR_EACH_AGGR_INIT_EXPR_ARG(arg, iter, call)                   \
+  for ((arg) = first_aggr_init_expr_arg ((call), &(iter)); (arg);      \
+       (arg) = next_aggr_init_expr_arg (&(iter)))
+
+/* The TYPE_MAIN_DECL for a class template type is a TYPE_DECL, not a
+   TEMPLATE_DECL.  This macro determines whether or not a given class
+   type is really a template type, as opposed to an instantiation or
+   specialization of one.  */
+#define CLASSTYPE_IS_TEMPLATE(NODE)  \
+  (CLASSTYPE_TEMPLATE_INFO (NODE)    \
+   && !CLASSTYPE_USE_TEMPLATE (NODE) \
+   && PRIMARY_TEMPLATE_P (CLASSTYPE_TI_TEMPLATE (NODE)))
+
+/* The name used by the user to name the typename type.  Typically,
+   this is an IDENTIFIER_NODE, and the same as the DECL_NAME on the
+   corresponding TYPE_DECL.  However, this may also be a
+   TEMPLATE_ID_EXPR if we had something like `typename X::Y<T>'.  */
+#define TYPENAME_TYPE_FULLNAME(NODE) (TYPENAME_TYPE_CHECK (NODE))->type.values
+
+/* True if a TYPENAME_TYPE was declared as an "enum".  */
+#define TYPENAME_IS_ENUM_P(NODE) \
+  (TREE_LANG_FLAG_0 (TYPENAME_TYPE_CHECK (NODE)))
+
+/* True if a TYPENAME_TYPE was declared as a "class", "struct", or
+   "union".  */
+#define TYPENAME_IS_CLASS_P(NODE) \
+  (TREE_LANG_FLAG_1 (TYPENAME_TYPE_CHECK (NODE)))
+
+/* True if a TYPENAME_TYPE is in the process of being resolved.  */
+#define TYPENAME_IS_RESOLVING_P(NODE) \
+  (TREE_LANG_FLAG_2 (TYPENAME_TYPE_CHECK (NODE)))
+
+/* Nonzero in INTEGER_CST means that this int is negative by dint of
+   using a twos-complement negated operand.  */
+#define TREE_NEGATED_INT(NODE) TREE_LANG_FLAG_0 (INTEGER_CST_CHECK (NODE))
+
+/* [class.virtual]
+
+   A class that declares or inherits a virtual function is called a
+   polymorphic class.  */
+#define TYPE_POLYMORPHIC_P(NODE) (TREE_LANG_FLAG_2 (NODE))
+
+/* Nonzero if this class has a virtual function table pointer.  */
+#define TYPE_CONTAINS_VPTR_P(NODE)             \
+  (TYPE_POLYMORPHIC_P (NODE) || CLASSTYPE_VBASECLASSES (NODE))
+
+/* This flag is true of a local VAR_DECL if it was declared in a for
+   statement, but we are no longer in the scope of the for.  */
+#define DECL_DEAD_FOR_LOCAL(NODE) DECL_LANG_FLAG_7 (VAR_DECL_CHECK (NODE))
+
+/* This flag is set on a VAR_DECL that is a DECL_DEAD_FOR_LOCAL
+   if we already emitted a warning about using it.  */
+#define DECL_ERROR_REPORTED(NODE) DECL_LANG_FLAG_0 (VAR_DECL_CHECK (NODE))
+
+/* Nonzero if NODE is a FUNCTION_DECL (for a function with global
+   scope) declared in a local scope.  */
+#define DECL_LOCAL_FUNCTION_P(NODE) \
+  DECL_LANG_FLAG_0 (FUNCTION_DECL_CHECK (NODE))
+
+/* Nonzero if NODE is a DECL which we know about but which has not
+   been explicitly declared, such as a built-in function or a friend
+   declared inside a class.  In the latter case DECL_HIDDEN_FRIEND_P
+   will be set.  */
+#define DECL_ANTICIPATED(NODE) \
+  (DECL_LANG_SPECIFIC (DECL_COMMON_CHECK (NODE))->decl_flags.anticipated_p)
+
+/* Nonzero if NODE is a FUNCTION_DECL which was declared as a friend
+   within a class but has not been declared in the surrounding scope.
+   The function is invisible except via argument dependent lookup.  */
+#define DECL_HIDDEN_FRIEND_P(NODE) \
+  (DECL_LANG_SPECIFIC (DECL_COMMON_CHECK (NODE))->decl_flags.hidden_friend_p)
+
+/* Nonzero if DECL has been declared threadprivate by
+   #pragma omp threadprivate.  */
+#define CP_DECL_THREADPRIVATE_P(DECL) \
+  (DECL_LANG_SPECIFIC (VAR_DECL_CHECK (DECL))->decl_flags.threadprivate_or_deleted_p)
+
+/* Nonzero if DECL was declared with '= delete'.  */
+#define DECL_DELETED_FN(DECL) \
+  (DECL_LANG_SPECIFIC (FUNCTION_DECL_CHECK (DECL))->decl_flags.threadprivate_or_deleted_p)
+
+/* Nonzero if DECL was declared with '= default'.  */
+#define DECL_DEFAULTED_FN(DECL) \
+  (DECL_LANG_SPECIFIC (FUNCTION_DECL_CHECK (DECL))->decl_flags.defaulted_p)
+
+/* Record whether a typedef for type `int' was actually `signed int'.  */
+#define C_TYPEDEF_EXPLICITLY_SIGNED(EXP) DECL_LANG_FLAG_1 (EXP)
+
+/* Returns nonzero if DECL has external linkage, as specified by the
+   language standard.  (This predicate may hold even when the
+   corresponding entity is not actually given external linkage in the
+   object file; see decl_linkage for details.)  */
+#define DECL_EXTERNAL_LINKAGE_P(DECL) \
+  (decl_linkage (DECL) == lk_external)
+
+/* Keep these codes in ascending code order.  */
+
+#define INTEGRAL_CODE_P(CODE)  \
+  ((CODE) == ENUMERAL_TYPE     \
+   || (CODE) == BOOLEAN_TYPE   \
+   || (CODE) == INTEGER_TYPE)
+
+/* [basic.fundamental]
+
+   Types  bool, char, wchar_t, and the signed and unsigned integer types
+   are collectively called integral types.
+
+   Note that INTEGRAL_TYPE_P, as defined in tree.h, allows enumeration
+   types as well, which is incorrect in C++.  Keep these checks in
+   ascending code order.  */
+#define CP_INTEGRAL_TYPE_P(TYPE)               \
+  (TREE_CODE (TYPE) == BOOLEAN_TYPE            \
+   || TREE_CODE (TYPE) == INTEGER_TYPE)
+
+/* Returns true if TYPE is an integral or enumeration name.  Keep
+   these checks in ascending code order.  */
+#define INTEGRAL_OR_ENUMERATION_TYPE_P(TYPE) \
+   (TREE_CODE (TYPE) == ENUMERAL_TYPE || CP_INTEGRAL_TYPE_P (TYPE))
+
+/* Returns true if TYPE is an integral or unscoped enumeration type.  */
+#define INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P(TYPE) \
+   (UNSCOPED_ENUM_P (TYPE) || CP_INTEGRAL_TYPE_P (TYPE))
+
+/* [basic.fundamental]
+
+   Integral and floating types are collectively called arithmetic
+   types.  
+
+   As a GNU extension, we also accept complex types.
+
+   Keep these checks in ascending code order.  */
+#define ARITHMETIC_TYPE_P(TYPE) \
+  (CP_INTEGRAL_TYPE_P (TYPE) \
+   || TREE_CODE (TYPE) == REAL_TYPE \
+   || TREE_CODE (TYPE) == COMPLEX_TYPE)
+
+/* [basic.types]
+
+   Arithmetic types, enumeration types, pointer types, and
+   pointer-to-member types, are collectively called scalar types.
+   
+   Keep these checks in ascending code order.  */
+#define SCALAR_TYPE_P(TYPE)                    \
+  (TYPE_PTRMEM_P (TYPE)                                \
+   || TREE_CODE (TYPE) == ENUMERAL_TYPE                \
+   || ARITHMETIC_TYPE_P (TYPE)                 \
+   || TYPE_PTR_P (TYPE)                                \
+   || TYPE_PTRMEMFUNC_P (TYPE))
+
+/* Determines whether this type is a C++0x scoped enumeration
+   type. Scoped enumerations types are introduced via "enum class" or
+   "enum struct", e.g.,
+
+     enum class Color {
+       Red, Green, Blue
+     };
+
+   Scoped enumeration types are different from normal (unscoped)
+   enumeration types in several ways:
+   
+     - The enumerators of a scoped enumeration type are only available
+       within the scope of the enumeration type and not in the
+       enclosing scope. For example, the Red color can be referred to
+       with "Color::Red" but not "Red".
+
+     - Scoped enumerators and enumerations do not implicitly convert
+       to integers or 'bool'.
+
+     - The underlying type of the enum is well-defined.  */
+#define SCOPED_ENUM_P(TYPE)                                             \
+  (TREE_CODE (TYPE) == ENUMERAL_TYPE && TYPE_LANG_FLAG_5 (TYPE))
+
+/* Determine whether this is an unscoped enumeration type.  */
+#define UNSCOPED_ENUM_P(TYPE)                                           \
+  (TREE_CODE (TYPE) == ENUMERAL_TYPE && !TYPE_LANG_FLAG_5 (TYPE))
+
+/* Set the flag indicating whether an ENUMERAL_TYPE is a C++0x scoped
+   enumeration type (1) or a normal (unscoped) enumeration type
+   (0).  */
+#define SET_SCOPED_ENUM_P(TYPE, VAL)                    \
+  (TYPE_LANG_FLAG_5 (ENUMERAL_TYPE_CHECK (TYPE)) = (VAL))
+
+/* Returns the underlying type of the given enumeration type. The
+   underlying type is determined in different ways, depending on the
+   properties of the enum:
+
+     - In C++0x, the underlying type can be explicitly specified, e.g.,
+
+         enum E1 : char { ... } // underlying type is char
+
+     - In a C++0x scoped enumeration, the underlying type is int
+       unless otherwises specified:
+
+         enum class E2 { ... } // underlying type is int
+
+     - Otherwise, the underlying type is determined based on the
+       values of the enumerators. In this case, the
+       ENUM_UNDERLYING_TYPE will not be set until after the definition
+       of the enumeration is completed by finish_enum.  */
+#define ENUM_UNDERLYING_TYPE(TYPE) \
+  TREE_TYPE (ENUMERAL_TYPE_CHECK (TYPE))
+
+/* [dcl.init.aggr]
+
+   An aggregate is an array or a class with no user-declared
+   constructors, no private or protected non-static data members, no
+   base classes, and no virtual functions.
+
+   As an extension, we also treat vectors as aggregates.  Keep these
+   checks in ascending code order.  */
+#define CP_AGGREGATE_TYPE_P(TYPE)                              \
+  (TREE_CODE (TYPE) == VECTOR_TYPE                             \
+   ||TREE_CODE (TYPE) == ARRAY_TYPE                            \
+   || (CLASS_TYPE_P (TYPE) && !CLASSTYPE_NON_AGGREGATE (TYPE)))
+
+/* Nonzero for a class type means that the class type has a
+   user-declared constructor.  */
+#define TYPE_HAS_USER_CONSTRUCTOR(NODE) (TYPE_LANG_FLAG_1 (NODE))
+
+/* When appearing in an INDIRECT_REF, it means that the tree structure
+   underneath is actually a call to a constructor.  This is needed
+   when the constructor must initialize local storage (which can
+   be automatically destroyed), rather than allowing it to allocate
+   space from the heap.
+
+   When appearing in a SAVE_EXPR, it means that underneath
+   is a call to a constructor.
+
+   When appearing in a CONSTRUCTOR, the expression is a
+   compound literal.
+
+   When appearing in a FIELD_DECL, it means that this field
+   has been duly initialized in its constructor.  */
+#define TREE_HAS_CONSTRUCTOR(NODE) (TREE_LANG_FLAG_4 (NODE))
+
+/* True if NODE is a brace-enclosed initializer.  */
+#define BRACE_ENCLOSED_INITIALIZER_P(NODE) \
+  (TREE_CODE (NODE) == CONSTRUCTOR && TREE_TYPE (NODE) == init_list_type_node)
+
+/* True if NODE is a compound-literal, i.e., a brace-enclosed
+   initializer cast to a particular type.  */
+#define COMPOUND_LITERAL_P(NODE) \
+  (TREE_CODE (NODE) == CONSTRUCTOR && TREE_HAS_CONSTRUCTOR (NODE))
+
+#define EMPTY_CONSTRUCTOR_P(NODE) (TREE_CODE (NODE) == CONSTRUCTOR \
+                                  && VEC_empty (constructor_elt, \
+                                                CONSTRUCTOR_ELTS (NODE)) \
+                                  && !TREE_HAS_CONSTRUCTOR (NODE))
+
+/* True if NODE is a init-list used as a direct-initializer, i.e.
+   B b{1,2}, not B b({1,2}) or B b = {1,2}.  */
+#define CONSTRUCTOR_IS_DIRECT_INIT(NODE) (TREE_LANG_FLAG_0 (CONSTRUCTOR_CHECK (NODE)))
+
+/* Nonzero means that an object of this type can not be initialized using
+   an initializer list.  */
+#define CLASSTYPE_NON_AGGREGATE(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->non_aggregate)
+#define TYPE_NON_AGGREGATE_CLASS(NODE) \
+  (CLASS_TYPE_P (NODE) && CLASSTYPE_NON_AGGREGATE (NODE))
+
+/* Nonzero if there is a user-defined X::op=(x&) for this class.  */
+#define TYPE_HAS_COMPLEX_ASSIGN_REF(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->has_complex_assign_ref)
+
+/* Nonzero if there is a user-defined X::X(x&) for this class.  */
+#define TYPE_HAS_COMPLEX_INIT_REF(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->has_complex_init_ref)
+
+/* Nonzero if there is a user-defined default constructor for this class.  */
+#define TYPE_HAS_COMPLEX_DFLT(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->has_complex_dflt)
+
+/* Nonzero if TYPE has a trivial destructor.  From [class.dtor]:
+
+     A destructor is trivial if it is an implicitly declared
+     destructor and if:
+
+       - all of the direct base classes of its class have trivial
+        destructors,
+
+       - for all of the non-static data members of its class that are
+        of class type (or array thereof), each such class has a
+        trivial destructor.  */
+#define TYPE_HAS_TRIVIAL_DESTRUCTOR(NODE) \
+  (!TYPE_HAS_NONTRIVIAL_DESTRUCTOR (NODE))
+
+/* Nonzero for _TYPE node means that this type does not have a trivial
+   destructor.  Therefore, destroying an object of this type will
+   involve a call to a destructor.  This can apply to objects of
+   ARRAY_TYPE is the type of the elements needs a destructor.  */
+#define TYPE_HAS_NONTRIVIAL_DESTRUCTOR(NODE) \
+  (TYPE_LANG_FLAG_4 (NODE))
+
+/* Nonzero for class type means that the default constructor is trivial.  */
+#define TYPE_HAS_TRIVIAL_DFLT(NODE) \
+  (TYPE_HAS_DEFAULT_CONSTRUCTOR (NODE) && ! TYPE_HAS_COMPLEX_DFLT (NODE))
+
+/* Nonzero for class type means that copy initialization of this type can use
+   a bitwise copy.  */
+#define TYPE_HAS_TRIVIAL_INIT_REF(NODE) \
+  (TYPE_HAS_INIT_REF (NODE) && ! TYPE_HAS_COMPLEX_INIT_REF (NODE))
+
+/* Nonzero for class type means that assignment of this type can use
+   a bitwise copy.  */
+#define TYPE_HAS_TRIVIAL_ASSIGN_REF(NODE) \
+  (TYPE_HAS_ASSIGN_REF (NODE) && ! TYPE_HAS_COMPLEX_ASSIGN_REF (NODE))
+
+/* Returns true if NODE is a pointer-to-data-member.  */
+#define TYPE_PTRMEM_P(NODE)                    \
+  (TREE_CODE (NODE) == OFFSET_TYPE)
+/* Returns true if NODE is a pointer.  */
+#define TYPE_PTR_P(NODE)                       \
+  (TREE_CODE (NODE) == POINTER_TYPE)
+
+/* Returns true if NODE is an object type:
+
+     [basic.types]
+
+     An object type is a (possibly cv-qualified) type that is not a
+     function type, not a reference type, and not a void type.
+
+   Keep these checks in ascending order, for speed.  */
+#define TYPE_OBJ_P(NODE)                       \
+  (TREE_CODE (NODE) != REFERENCE_TYPE          \
+   && TREE_CODE (NODE) != VOID_TYPE            \
+   && TREE_CODE (NODE) != FUNCTION_TYPE                \
+   && TREE_CODE (NODE) != METHOD_TYPE)
+
+/* Returns true if NODE is a pointer to an object.  Keep these checks
+   in ascending tree code order.  */
+#define TYPE_PTROB_P(NODE)                                     \
+  (TYPE_PTR_P (NODE) && TYPE_OBJ_P (TREE_TYPE (NODE)))
+
+/* Returns true if NODE is a reference to an object.  Keep these checks
+   in ascending tree code order.  */
+#define TYPE_REF_OBJ_P(NODE)                                   \
+  (TREE_CODE (NODE) == REFERENCE_TYPE && TYPE_OBJ_P (TREE_TYPE (NODE)))
+
+/* True if reference type NODE is an rvalue reference */
+#define TYPE_REF_IS_RVALUE(NODE) \
+  TREE_LANG_FLAG_0 (REFERENCE_TYPE_CHECK (NODE))
+
+/* Returns true if NODE is a pointer to an object, or a pointer to
+   void.  Keep these checks in ascending tree code order.  */
+#define TYPE_PTROBV_P(NODE)                                    \
+  (TYPE_PTR_P (NODE)                                           \
+   && !(TREE_CODE (TREE_TYPE (NODE)) == FUNCTION_TYPE          \
+       || TREE_CODE (TREE_TYPE (NODE)) == METHOD_TYPE))
+
+/* Returns true if NODE is a pointer to function.  */
+#define TYPE_PTRFN_P(NODE)                             \
+  (TREE_CODE (NODE) == POINTER_TYPE                    \
+   && TREE_CODE (TREE_TYPE (NODE)) == FUNCTION_TYPE)
+
+/* Returns true if NODE is a reference to function.  */
+#define TYPE_REFFN_P(NODE)                             \
+  (TREE_CODE (NODE) == REFERENCE_TYPE                  \
+   && TREE_CODE (TREE_TYPE (NODE)) == FUNCTION_TYPE)
+
+/* Nonzero for _TYPE node means that this type is a pointer to member
+   function type.  */
+#define TYPE_PTRMEMFUNC_P(NODE)                \
+  (TREE_CODE (NODE) == RECORD_TYPE     \
+   && TYPE_LANG_SPECIFIC (NODE)                \
+   && TYPE_PTRMEMFUNC_FLAG (NODE))
+
+#define TYPE_PTRMEMFUNC_FLAG(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->ptrmemfunc_flag)
+
+/* Returns true if NODE is a pointer-to-member.  */
+#define TYPE_PTR_TO_MEMBER_P(NODE) \
+  (TYPE_PTRMEM_P (NODE) || TYPE_PTRMEMFUNC_P (NODE))
+
+/* Indicates when overload resolution may resolve to a pointer to
+   member function. [expr.unary.op]/3 */
+#define PTRMEM_OK_P(NODE) \
+  TREE_LANG_FLAG_0 (TREE_CHECK2 ((NODE), ADDR_EXPR, OFFSET_REF))
+
+/* Get the POINTER_TYPE to the METHOD_TYPE associated with this
+   pointer to member function.  TYPE_PTRMEMFUNC_P _must_ be true,
+   before using this macro.  */
+#define TYPE_PTRMEMFUNC_FN_TYPE(NODE) \
+  (TREE_TYPE (TYPE_FIELDS (NODE)))
+
+/* Returns `A' for a type like `int (A::*)(double)' */
+#define TYPE_PTRMEMFUNC_OBJECT_TYPE(NODE) \
+  TYPE_METHOD_BASETYPE (TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (NODE)))
+
+/* These are use to manipulate the canonical RECORD_TYPE from the
+   hashed POINTER_TYPE, and can only be used on the POINTER_TYPE.  */
+#define TYPE_GET_PTRMEMFUNC_TYPE(NODE) \
+  (TYPE_LANG_SPECIFIC (NODE) ? LANG_TYPE_PTRMEM_CHECK (NODE)->record : NULL)
+#define TYPE_SET_PTRMEMFUNC_TYPE(NODE, VALUE)                          \
+  do {                                                                 \
+    if (TYPE_LANG_SPECIFIC (NODE) == NULL)                             \
+      {                                                                        \
+       TYPE_LANG_SPECIFIC (NODE) = GGC_CNEWVAR                         \
+        (struct lang_type, sizeof (struct lang_type_ptrmem));          \
+       TYPE_LANG_SPECIFIC (NODE)->u.ptrmem.h.is_lang_type_class = 0;   \
+      }                                                                        \
+    TYPE_LANG_SPECIFIC (NODE)->u.ptrmem.record = (VALUE);              \
+  } while (0)
+
+/* For a pointer-to-member type of the form `T X::*', this is `X'.
+   For a type like `void (X::*)() const', this type is `X', not `const
+   X'.  To get at the `const X' you have to look at the
+   TYPE_PTRMEM_POINTED_TO_TYPE; there, the first parameter will have
+   type `const X*'.  */
+#define TYPE_PTRMEM_CLASS_TYPE(NODE)                   \
+  (TYPE_PTRMEM_P (NODE)                                        \
+   ? TYPE_OFFSET_BASETYPE (NODE)               \
+   : TYPE_PTRMEMFUNC_OBJECT_TYPE (NODE))
+
+/* For a pointer-to-member type of the form `T X::*', this is `T'.  */
+#define TYPE_PTRMEM_POINTED_TO_TYPE(NODE)              \
+   (TYPE_PTRMEM_P (NODE)                               \
+    ? TREE_TYPE (NODE)                                 \
+    : TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (NODE)))
+
+/* For a pointer-to-member constant `X::Y' this is the RECORD_TYPE for
+   `X'.  */
+#define PTRMEM_CST_CLASS(NODE) \
+  TYPE_PTRMEM_CLASS_TYPE (TREE_TYPE (PTRMEM_CST_CHECK (NODE)))
+
+/* For a pointer-to-member constant `X::Y' this is the _DECL for
+   `Y'.  */
+#define PTRMEM_CST_MEMBER(NODE) (((ptrmem_cst_t)PTRMEM_CST_CHECK (NODE))->member)
+
+/* The expression in question for a TYPEOF_TYPE.  */
+#define TYPEOF_TYPE_EXPR(NODE) (TYPEOF_TYPE_CHECK (NODE))->type.values
+
+/* The expression in question for a DECLTYPE_TYPE.  */
+#define DECLTYPE_TYPE_EXPR(NODE) (DECLTYPE_TYPE_CHECK (NODE))->type.values
+
+/* Whether the DECLTYPE_TYPE_EXPR of NODE was originally parsed as an
+   id-expression or a member-access expression. When false, it was
+   parsed as a full expression.  */
+#define DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P(NODE) \
+  (DECLTYPE_TYPE_CHECK (NODE))->type.string_flag
+
+/* Nonzero for VAR_DECL and FUNCTION_DECL node means that `extern' was
+   specified in its declaration.  This can also be set for an
+   erroneously declared PARM_DECL.  */
+#define DECL_THIS_EXTERN(NODE) \
+  DECL_LANG_FLAG_2 (VAR_FUNCTION_OR_PARM_DECL_CHECK (NODE))
+
+/* Nonzero for VAR_DECL and FUNCTION_DECL node means that `static' was
+   specified in its declaration.  This can also be set for an
+   erroneously declared PARM_DECL.  */
+#define DECL_THIS_STATIC(NODE) \
+  DECL_LANG_FLAG_6 (VAR_FUNCTION_OR_PARM_DECL_CHECK (NODE))
+
+/* Nonzero for FIELD_DECL node means that this field is a base class
+   of the parent object, as opposed to a member field.  */
+#define DECL_FIELD_IS_BASE(NODE) \
+  DECL_LANG_FLAG_6 (FIELD_DECL_CHECK (NODE))
+
+/* Nonzero if TYPE is an anonymous union or struct type.  We have to use a
+   flag for this because "A union for which objects or pointers are
+   declared is not an anonymous union" [class.union].  */
+#define ANON_AGGR_TYPE_P(NODE)                         \
+  (CLASS_TYPE_P (NODE) && LANG_TYPE_CLASS_CHECK (NODE)->anon_aggr)
+#define SET_ANON_AGGR_TYPE_P(NODE)                     \
+  (LANG_TYPE_CLASS_CHECK (NODE)->anon_aggr = 1)
+
+/* Nonzero if TYPE is an anonymous union type.  */
+#define ANON_UNION_TYPE_P(NODE) \
+  (TREE_CODE (NODE) == UNION_TYPE && ANON_AGGR_TYPE_P (NODE))
+
+#define UNKNOWN_TYPE LANG_TYPE
+
+/* Define fields and accessors for nodes representing declared names.  */
+
+#define TYPE_WAS_ANONYMOUS(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->was_anonymous)
+
+/* C++: all of these are overloaded!  These apply only to TYPE_DECLs.  */
+
+/* The format of each node in the DECL_FRIENDLIST is as follows:
+
+   The TREE_PURPOSE will be the name of a function, i.e., an
+   IDENTIFIER_NODE.  The TREE_VALUE will be itself a TREE_LIST, whose
+   TREE_VALUEs are friends with the given name.  */
+#define DECL_FRIENDLIST(NODE)          (DECL_INITIAL (NODE))
+#define FRIEND_NAME(LIST) (TREE_PURPOSE (LIST))
+#define FRIEND_DECLS(LIST) (TREE_VALUE (LIST))
+
+/* The DECL_ACCESS, if non-NULL, is a TREE_LIST.  The TREE_PURPOSE of
+   each node is a type; the TREE_VALUE is the access granted for this
+   DECL in that type.  The DECL_ACCESS is set by access declarations.
+   For example, if a member that would normally be public in a
+   derived class is made protected, then the derived class and the
+   protected_access_node will appear in the DECL_ACCESS for the node.  */
+#define DECL_ACCESS(NODE) (LANG_DECL_U2_CHECK (NODE, 0)->access)
+
+/* Nonzero if the FUNCTION_DECL is a global constructor.  */
+#define DECL_GLOBAL_CTOR_P(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.global_ctor_p)
+
+/* Nonzero if the FUNCTION_DECL is a global destructor.  */
+#define DECL_GLOBAL_DTOR_P(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.global_dtor_p)
+
+/* Accessor macros for C++ template decl nodes.  */
+
+/* The DECL_TEMPLATE_PARMS are a list.  The TREE_PURPOSE of each node
+   is a INT_CST whose TREE_INT_CST_LOW indicates the level of the
+   template parameters, with 1 being the outermost set of template
+   parameters.  The TREE_VALUE is a vector, whose elements are the
+   template parameters at each level.  Each element in the vector is a
+   TREE_LIST, whose TREE_VALUE is a PARM_DECL (if the parameter is a
+   non-type parameter), or a TYPE_DECL (if the parameter is a type
+   parameter).  The TREE_PURPOSE is the default value, if any.  The
+   TEMPLATE_PARM_INDEX for the parameter is available as the
+   DECL_INITIAL (for a PARM_DECL) or as the TREE_TYPE (for a
+   TYPE_DECL).  */
+#define DECL_TEMPLATE_PARMS(NODE)       DECL_NON_COMMON_CHECK (NODE)->decl_non_common.arguments
+#define DECL_INNERMOST_TEMPLATE_PARMS(NODE) \
+   INNERMOST_TEMPLATE_PARMS (DECL_TEMPLATE_PARMS (NODE))
+#define DECL_NTPARMS(NODE) \
+   TREE_VEC_LENGTH (DECL_INNERMOST_TEMPLATE_PARMS (NODE))
+/* For function, method, class-data templates.  */
+#define DECL_TEMPLATE_RESULT(NODE)      DECL_RESULT_FLD (NODE)
+/* For a static member variable template, the
+   DECL_TEMPLATE_INSTANTIATIONS list contains the explicitly and
+   implicitly generated instantiations of the variable.  There are no
+   partial instantiations of static member variables, so all of these
+   will be full instantiations.
+
+   For a class template the DECL_TEMPLATE_INSTANTIATIONS lists holds
+   all instantiations and specializations of the class type, including
+   partial instantiations and partial specializations.
+
+   In both cases, the TREE_PURPOSE of each node contains the arguments
+   used; the TREE_VALUE contains the generated variable.  The template
+   arguments are always complete.  For example, given:
+
+      template <class T> struct S1 {
+       template <class U> struct S2 {};
+       template <class U> struct S2<U*> {};
+      };
+
+   the record for the partial specialization will contain, as its
+   argument list, { {T}, {U*} }, and will be on the
+   DECL_TEMPLATE_INSTANTIATIONS list for `template <class T> template
+   <class U> struct S1<T>::S2'.
+
+   This list is not used for function templates.  */
+#define DECL_TEMPLATE_INSTANTIATIONS(NODE) DECL_VINDEX (NODE)
+/* For a function template, the DECL_TEMPLATE_SPECIALIZATIONS lists
+   contains all instantiations and specializations of the function,
+   including partial instantiations.  For a partial instantiation
+   which is a specialization, this list holds only full
+   specializations of the template that are instantiations of the
+   partial instantiation.  For example, given:
+
+      template <class T> struct S {
+       template <class U> void f(U);
+       template <> void f(T);
+      };
+
+   the `S<int>::f<int>(int)' function will appear on the
+   DECL_TEMPLATE_SPECIALIZATIONS list for both `template <class T>
+   template <class U> void S<T>::f(U)' and `template <class T> void
+   S<int>::f(T)'.  In the latter case, however, it will have only the
+   innermost set of arguments (T, in this case).  The DECL_TI_TEMPLATE
+   for the function declaration will point at the specialization, not
+   the fully general template.
+
+   For a class template, this list contains the partial
+   specializations of this template.  (Full specializations are not
+   recorded on this list.)  The TREE_PURPOSE holds the arguments used
+   in the partial specialization (e.g., for `template <class T> struct
+   S<T*, int>' this will be `T*'.)  The arguments will also include
+   any outer template arguments.  The TREE_VALUE holds the innermost
+   template parameters for the specialization (e.g., `T' in the
+   example above.)  The TREE_TYPE is the _TYPE node for the partial
+   specialization.
+
+   This list is not used for static variable templates.  */
+#define DECL_TEMPLATE_SPECIALIZATIONS(NODE)     DECL_SIZE (NODE)
+
+/* Nonzero for a DECL which is actually a template parameter.  Keep
+   these checks in ascending tree code order.   */
+#define DECL_TEMPLATE_PARM_P(NODE)             \
+  (DECL_LANG_FLAG_0 (NODE)                     \
+   && (TREE_CODE (NODE) == CONST_DECL          \
+       || TREE_CODE (NODE) == PARM_DECL                \
+       || TREE_CODE (NODE) == TYPE_DECL                \
+       || TREE_CODE (NODE) == TEMPLATE_DECL))
+
+/* Mark NODE as a template parameter.  */
+#define SET_DECL_TEMPLATE_PARM_P(NODE) \
+  (DECL_LANG_FLAG_0 (NODE) = 1)
+
+/* Nonzero if NODE is a template template parameter.  */
+#define DECL_TEMPLATE_TEMPLATE_PARM_P(NODE) \
+  (TREE_CODE (NODE) == TEMPLATE_DECL && DECL_TEMPLATE_PARM_P (NODE))
+
+/* Nonzero if NODE is a TEMPLATE_DECL representing an
+   UNBOUND_CLASS_TEMPLATE tree node.  */
+#define DECL_UNBOUND_CLASS_TEMPLATE_P(NODE) \
+  (TREE_CODE (NODE) == TEMPLATE_DECL && !DECL_TEMPLATE_RESULT (NODE))
+
+#define DECL_FUNCTION_TEMPLATE_P(NODE)  \
+  (TREE_CODE (NODE) == TEMPLATE_DECL \
+   && !DECL_UNBOUND_CLASS_TEMPLATE_P (NODE) \
+   && TREE_CODE (DECL_TEMPLATE_RESULT (NODE)) == FUNCTION_DECL)
+
+/* Nonzero for a DECL that represents a template class.  */
+#define DECL_CLASS_TEMPLATE_P(NODE) \
+  (TREE_CODE (NODE) == TEMPLATE_DECL \
+   && !DECL_UNBOUND_CLASS_TEMPLATE_P (NODE) \
+   && TREE_CODE (DECL_TEMPLATE_RESULT (NODE)) == TYPE_DECL \
+   && !DECL_TEMPLATE_TEMPLATE_PARM_P (NODE))
+
+/* Nonzero if NODE which declares a type.  */
+#define DECL_DECLARES_TYPE_P(NODE) \
+  (TREE_CODE (NODE) == TYPE_DECL || DECL_CLASS_TEMPLATE_P (NODE))
+
+/* Nonzero if NODE is the typedef implicitly generated for a type when
+   the type is declared.  In C++, `struct S {};' is roughly
+   equivalent to `struct S {}; typedef struct S S;' in C.
+   DECL_IMPLICIT_TYPEDEF_P will hold for the typedef indicated in this
+   example.  In C++, there is a second implicit typedef for each
+   class, in the scope of `S' itself, so that you can say `S::S'.
+   DECL_SELF_REFERENCE_P will hold for that second typedef.  */
+#define DECL_IMPLICIT_TYPEDEF_P(NODE) \
+  (TREE_CODE (NODE) == TYPE_DECL && DECL_LANG_FLAG_2 (NODE))
+#define SET_DECL_IMPLICIT_TYPEDEF_P(NODE) \
+  (DECL_LANG_FLAG_2 (NODE) = 1)
+#define DECL_SELF_REFERENCE_P(NODE) \
+  (TREE_CODE (NODE) == TYPE_DECL && DECL_LANG_FLAG_4 (NODE))
+#define SET_DECL_SELF_REFERENCE_P(NODE) \
+  (DECL_LANG_FLAG_4 (NODE) = 1)
+
+/* A `primary' template is one that has its own template header.  A
+   member function of a class template is a template, but not primary.
+   A member template is primary.  Friend templates are primary, too.  */
+
+/* Returns the primary template corresponding to these parameters.  */
+#define DECL_PRIMARY_TEMPLATE(NODE) \
+  (TREE_TYPE (DECL_INNERMOST_TEMPLATE_PARMS (NODE)))
+
+/* Returns nonzero if NODE is a primary template.  */
+#define PRIMARY_TEMPLATE_P(NODE) (DECL_PRIMARY_TEMPLATE (NODE) == (NODE))
+
+/* Nonzero iff NODE is a specialization of a template.  The value
+   indicates the type of specializations:
+
+     1=implicit instantiation
+
+     2=partial or explicit specialization, e.g.:
+
+        template <> int min<int> (int, int),
+
+     3=explicit instantiation, e.g.:
+  
+        template int min<int> (int, int);
+
+   Note that NODE will be marked as a specialization even if the
+   template it is instantiating is not a primary template.  For
+   example, given:
+
+     template <typename T> struct O { 
+       void f();
+       struct I {}; 
+     };
+    
+   both O<int>::f and O<int>::I will be marked as instantiations.
+
+   If DECL_USE_TEMPLATE is nonzero, then DECL_TEMPLATE_INFO will also
+   be non-NULL.  */
+#define DECL_USE_TEMPLATE(NODE) (DECL_LANG_SPECIFIC (NODE)->decl_flags.use_template)
+
+/* Like DECL_USE_TEMPLATE, but for class types.  */
+#define CLASSTYPE_USE_TEMPLATE(NODE) \
+  (LANG_TYPE_CLASS_CHECK (NODE)->use_template)
+
+/* True if NODE is a specialization of a primary template.  */
+#define CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P(NODE)   \
+  (CLASS_TYPE_P (NODE)                                         \
+   && CLASSTYPE_USE_TEMPLATE (NODE)                            \
+   && PRIMARY_TEMPLATE_P (CLASSTYPE_TI_TEMPLATE (arg)))  
+
+#define DECL_TEMPLATE_INSTANTIATION(NODE) (DECL_USE_TEMPLATE (NODE) & 1)
+#define CLASSTYPE_TEMPLATE_INSTANTIATION(NODE) \
+  (CLASSTYPE_USE_TEMPLATE (NODE) & 1)
+
+#define DECL_TEMPLATE_SPECIALIZATION(NODE) (DECL_USE_TEMPLATE (NODE) == 2)
+#define SET_DECL_TEMPLATE_SPECIALIZATION(NODE) (DECL_USE_TEMPLATE (NODE) = 2)
+
+/* Returns true for an explicit or partial specialization of a class
+   template.  */
+#define CLASSTYPE_TEMPLATE_SPECIALIZATION(NODE) \
+  (CLASSTYPE_USE_TEMPLATE (NODE) == 2)
+#define SET_CLASSTYPE_TEMPLATE_SPECIALIZATION(NODE) \
+  (CLASSTYPE_USE_TEMPLATE (NODE) = 2)
+
+#define DECL_IMPLICIT_INSTANTIATION(NODE) (DECL_USE_TEMPLATE (NODE) == 1)
+#define SET_DECL_IMPLICIT_INSTANTIATION(NODE) (DECL_USE_TEMPLATE (NODE) = 1)
+#define CLASSTYPE_IMPLICIT_INSTANTIATION(NODE) \
+  (CLASSTYPE_USE_TEMPLATE (NODE) == 1)
+#define SET_CLASSTYPE_IMPLICIT_INSTANTIATION(NODE) \
+  (CLASSTYPE_USE_TEMPLATE (NODE) = 1)
+
+#define DECL_EXPLICIT_INSTANTIATION(NODE) (DECL_USE_TEMPLATE (NODE) == 3)
+#define SET_DECL_EXPLICIT_INSTANTIATION(NODE) (DECL_USE_TEMPLATE (NODE) = 3)
+#define CLASSTYPE_EXPLICIT_INSTANTIATION(NODE) \
+  (CLASSTYPE_USE_TEMPLATE (NODE) == 3)
+#define SET_CLASSTYPE_EXPLICIT_INSTANTIATION(NODE) \
+  (CLASSTYPE_USE_TEMPLATE (NODE) = 3)
+
+/* Nonzero if DECL is a friend function which is an instantiation
+   from the point of view of the compiler, but not from the point of
+   view of the language.  For example given:
+      template <class T> struct S { friend void f(T) {}; };
+   the declaration of `void f(int)' generated when S<int> is
+   instantiated will not be a DECL_TEMPLATE_INSTANTIATION, but will be
+   a DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION.  */
+#define DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION(DECL) \
+  (DECL_TEMPLATE_INFO (DECL) && !DECL_USE_TEMPLATE (DECL))
+
+/* Nonzero iff we are currently processing a declaration for an
+   entity with its own template parameter list, and which is not a
+   full specialization.  */
+#define PROCESSING_REAL_TEMPLATE_DECL_P() \
+  (processing_template_decl > template_class_depth (current_scope ()))
+
+/* Nonzero if this VAR_DECL or FUNCTION_DECL has already been
+   instantiated, i.e. its definition has been generated from the
+   pattern given in the template.  */
+#define DECL_TEMPLATE_INSTANTIATED(NODE) \
+  DECL_LANG_FLAG_1 (VAR_OR_FUNCTION_DECL_CHECK (NODE))
+
+/* We know what we're doing with this decl now.  */
+#define DECL_INTERFACE_KNOWN(NODE) DECL_LANG_FLAG_5 (NODE)
+
+/* DECL_EXTERNAL must be set on a decl until the decl is actually emitted,
+   so that assemble_external will work properly.  So we have this flag to
+   tell us whether the decl is really not external.
+
+   This flag does not indicate whether or not the decl is defined in the
+   current translation unit; it indicates whether or not we should emit the
+   decl at the end of compilation if it is defined and needed.  */
+#define DECL_NOT_REALLY_EXTERN(NODE) \
+  (DECL_LANG_SPECIFIC (NODE)->decl_flags.not_really_extern)
+
+#define DECL_REALLY_EXTERN(NODE) \
+  (DECL_EXTERNAL (NODE) && ! DECL_NOT_REALLY_EXTERN (NODE))
+
+/* A thunk is a stub function.
+
+   A thunk is an alternate entry point for an ordinary FUNCTION_DECL.
+   The address of the ordinary FUNCTION_DECL is given by the
+   DECL_INITIAL, which is always an ADDR_EXPR whose operand is a
+   FUNCTION_DECL.  The job of the thunk is to either adjust the this
+   pointer before transferring control to the FUNCTION_DECL, or call
+   FUNCTION_DECL and then adjust the result value. Note, the result
+   pointer adjusting thunk must perform a call to the thunked
+   function, (or be implemented via passing some invisible parameter
+   to the thunked function, which is modified to perform the
+   adjustment just before returning).
+
+   A thunk may perform either, or both, of the following operations:
+
+   o Adjust the this or result pointer by a constant offset.
+   o Adjust the this or result pointer by looking up a vcall or vbase offset
+     in the vtable.
+
+   A this pointer adjusting thunk converts from a base to a derived
+   class, and hence adds the offsets. A result pointer adjusting thunk
+   converts from a derived class to a base, and hence subtracts the
+   offsets.  If both operations are performed, then the constant
+   adjustment is performed first for this pointer adjustment and last
+   for the result pointer adjustment.
+
+   The constant adjustment is given by THUNK_FIXED_OFFSET.  If the
+   vcall or vbase offset is required, THUNK_VIRTUAL_OFFSET is
+   used. For this pointer adjusting thunks, it is the vcall offset
+   into the vtable.  For result pointer adjusting thunks it is the
+   binfo of the virtual base to convert to.  Use that binfo's vbase
+   offset.
+
+   It is possible to have equivalent covariant thunks.  These are
+   distinct virtual covariant thunks whose vbase offsets happen to
+   have the same value.  THUNK_ALIAS is used to pick one as the
+   canonical thunk, which will get all the this pointer adjusting
+   thunks attached to it.  */
+
+/* An integer indicating how many bytes should be subtracted from the
+   this or result pointer when this function is called.  */
+#define THUNK_FIXED_OFFSET(DECL) \
+  (DECL_LANG_SPECIFIC (THUNK_FUNCTION_CHECK (DECL))->u.f.u5.fixed_offset)
+
+/* A tree indicating how to perform the virtual adjustment. For a this
+   adjusting thunk it is the number of bytes to be added to the vtable
+   to find the vcall offset. For a result adjusting thunk, it is the
+   binfo of the relevant virtual base.  If NULL, then there is no
+   virtual adjust.  (The vptr is always located at offset zero from
+   the this or result pointer.)  (If the covariant type is within the
+   class hierarchy being laid out, the vbase index is not yet known
+   at the point we need to create the thunks, hence the need to use
+   binfos.)  */
+
+#define THUNK_VIRTUAL_OFFSET(DECL) \
+  (LANG_DECL_U2_CHECK (FUNCTION_DECL_CHECK (DECL), 0)->access)
+
+/* A thunk which is equivalent to another thunk.  */
+#define THUNK_ALIAS(DECL) \
+  (DECL_LANG_SPECIFIC (FUNCTION_DECL_CHECK (DECL))->decl_flags.u.template_info)
+
+/* For thunk NODE, this is the FUNCTION_DECL thunked to.  It is
+   possible for the target to be a thunk too.  */
+#define THUNK_TARGET(NODE)                             \
+  (DECL_LANG_SPECIFIC (NODE)->u.f.befriending_classes)
+
+/* True for a SCOPE_REF iff the "template" keyword was used to
+   indicate that the qualified name denotes a template.  */
+#define QUALIFIED_NAME_IS_TEMPLATE(NODE) \
+  (TREE_LANG_FLAG_0 (SCOPE_REF_CHECK (NODE)))
+
+/* True for an OMP_ATOMIC that has dependent parameters.  These are stored
+   as an expr in operand 1, and integer_zero_node in operand 0.  */
+#define OMP_ATOMIC_DEPENDENT_P(NODE) \
+  (TREE_CODE (TREE_OPERAND (OMP_ATOMIC_CHECK (NODE), 0)) == INTEGER_CST)
+
+/* Used while gimplifying continue statements bound to OMP_FOR nodes.  */
+#define OMP_FOR_GIMPLIFYING_P(NODE) \
+  (TREE_LANG_FLAG_0 (OMP_FOR_CHECK (NODE)))
+
+/* A language-specific token attached to the OpenMP data clauses to
+   hold code (or code fragments) related to ctors, dtors, and op=.
+   See semantics.c for details.  */
+#define CP_OMP_CLAUSE_INFO(NODE) \
+  TREE_TYPE (OMP_CLAUSE_RANGE_CHECK (NODE, OMP_CLAUSE_PRIVATE, \
+                                    OMP_CLAUSE_COPYPRIVATE))
+
+/* These macros provide convenient access to the various _STMT nodes
+   created when parsing template declarations.  */
+#define TRY_STMTS(NODE)                TREE_OPERAND (TRY_BLOCK_CHECK (NODE), 0)
+#define TRY_HANDLERS(NODE)     TREE_OPERAND (TRY_BLOCK_CHECK (NODE), 1)
+
+#define EH_SPEC_STMTS(NODE)    TREE_OPERAND (EH_SPEC_BLOCK_CHECK (NODE), 0)
+#define EH_SPEC_RAISES(NODE)   TREE_OPERAND (EH_SPEC_BLOCK_CHECK (NODE), 1)
+
+#define USING_STMT_NAMESPACE(NODE) TREE_OPERAND (USING_STMT_CHECK (NODE), 0)
+
+/* Nonzero if this try block is a function try block.  */
+#define FN_TRY_BLOCK_P(NODE)   TREE_LANG_FLAG_3 (TRY_BLOCK_CHECK (NODE))
+#define HANDLER_PARMS(NODE)    TREE_OPERAND (HANDLER_CHECK (NODE), 0)
+#define HANDLER_BODY(NODE)     TREE_OPERAND (HANDLER_CHECK (NODE), 1)
+#define HANDLER_TYPE(NODE)     TREE_TYPE (HANDLER_CHECK (NODE))
+
+/* CLEANUP_STMT accessors.  The statement(s) covered, the cleanup to run
+   and the VAR_DECL for which this cleanup exists.  */
+#define CLEANUP_BODY(NODE)     TREE_OPERAND (CLEANUP_STMT_CHECK (NODE), 0)
+#define CLEANUP_EXPR(NODE)     TREE_OPERAND (CLEANUP_STMT_CHECK (NODE), 1)
+#define CLEANUP_DECL(NODE)     TREE_OPERAND (CLEANUP_STMT_CHECK (NODE), 2)
+
+/* IF_STMT accessors. These give access to the condition of the if
+   statement, the then block of the if statement, and the else block
+   of the if statement if it exists.  */
+#define IF_COND(NODE)          TREE_OPERAND (IF_STMT_CHECK (NODE), 0)
+#define THEN_CLAUSE(NODE)      TREE_OPERAND (IF_STMT_CHECK (NODE), 1)
+#define ELSE_CLAUSE(NODE)      TREE_OPERAND (IF_STMT_CHECK (NODE), 2)
+
+/* WHILE_STMT accessors. These give access to the condition of the
+   while statement and the body of the while statement, respectively.  */
+#define WHILE_COND(NODE)       TREE_OPERAND (WHILE_STMT_CHECK (NODE), 0)
+#define WHILE_BODY(NODE)       TREE_OPERAND (WHILE_STMT_CHECK (NODE), 1)
+
+/* DO_STMT accessors. These give access to the condition of the do
+   statement and the body of the do statement, respectively.  */
+#define DO_COND(NODE)          TREE_OPERAND (DO_STMT_CHECK (NODE), 0)
+#define DO_BODY(NODE)          TREE_OPERAND (DO_STMT_CHECK (NODE), 1)
+
+/* FOR_STMT accessors. These give access to the init statement,
+   condition, update expression, and body of the for statement,
+   respectively.  */
+#define FOR_INIT_STMT(NODE)    TREE_OPERAND (FOR_STMT_CHECK (NODE), 0)
+#define FOR_COND(NODE)         TREE_OPERAND (FOR_STMT_CHECK (NODE), 1)
+#define FOR_EXPR(NODE)         TREE_OPERAND (FOR_STMT_CHECK (NODE), 2)
+#define FOR_BODY(NODE)         TREE_OPERAND (FOR_STMT_CHECK (NODE), 3)
+
+#define SWITCH_STMT_COND(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 0)
+#define SWITCH_STMT_BODY(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 1)
+#define SWITCH_STMT_TYPE(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 2)
+
+/* STMT_EXPR accessor.  */
+#define STMT_EXPR_STMT(NODE)   TREE_OPERAND (STMT_EXPR_CHECK (NODE), 0)
+
+/* EXPR_STMT accessor. This gives the expression associated with an
+   expression statement.  */
+#define EXPR_STMT_EXPR(NODE)   TREE_OPERAND (EXPR_STMT_CHECK (NODE), 0)
+
+/* True if this TARGET_EXPR was created by build_cplus_new, and so we can
+   discard it if it isn't useful.  */
+#define TARGET_EXPR_IMPLICIT_P(NODE) \
+  TREE_LANG_FLAG_0 (TARGET_EXPR_CHECK (NODE))
+
+/* True if this TARGET_EXPR is the result of list-initialization of a
+   temporary.  */
+#define TARGET_EXPR_LIST_INIT_P(NODE) \
+  TREE_LANG_FLAG_1 (TARGET_EXPR_CHECK (NODE))
+
+/* An enumeration of the kind of tags that C++ accepts.  */
+enum tag_types {
+  none_type = 0, /* Not a tag type.  */
+  record_type,   /* "struct" types.  */
+  class_type,    /* "class" types.  */
+  union_type,    /* "union" types.  */
+  enum_type,     /* "enum" types.  */
+  typename_type  /* "typename" types.  */
+};
+
+/* The various kinds of lvalues we distinguish.  */
+typedef enum cp_lvalue_kind {
+  clk_none = 0,     /* Things that are not an lvalue.  */
+  clk_ordinary = 1, /* An ordinary lvalue.  */
+  clk_class = 2,    /* An rvalue of class-type.  */
+  clk_bitfield = 4, /* An lvalue for a bit-field.  */
+  clk_packed = 8    /* An lvalue for a packed field.  */
+} cp_lvalue_kind;
+
+/* Various kinds of template specialization, instantiation, etc.  */
+typedef enum tmpl_spec_kind {
+  tsk_none,               /* Not a template at all.  */
+  tsk_invalid_member_spec, /* An explicit member template
+                             specialization, but the enclosing
+                             classes have not all been explicitly
+                             specialized.  */
+  tsk_invalid_expl_inst,   /* An explicit instantiation containing
+                             template parameter lists.  */
+  tsk_excessive_parms,    /* A template declaration with too many
+                             template parameter lists.  */
+  tsk_insufficient_parms,  /* A template declaration with too few
+                             parameter lists.  */
+  tsk_template,                   /* A template declaration.  */
+  tsk_expl_spec,          /* An explicit specialization.  */
+  tsk_expl_inst                   /* An explicit instantiation.  */
+} tmpl_spec_kind;
+
+/* The various kinds of access.  BINFO_ACCESS depends on these being
+   two bit quantities.  The numerical values are important; they are
+   used to initialize RTTI data structures, so changing them changes
+   the ABI.  */
+typedef enum access_kind {
+  ak_none = 0,            /* Inaccessible.  */
+  ak_public = 1,          /* Accessible, as a `public' thing.  */
+  ak_protected = 2,       /* Accessible, as a `protected' thing.  */
+  ak_private = 3          /* Accessible, as a `private' thing.  */
+} access_kind;
+
+/* The various kinds of special functions.  If you add to this list,
+   you should update special_function_p as well.  */
+typedef enum special_function_kind {
+  sfk_none = 0,                   /* Not a special function.  This enumeral
+                             must have value zero; see
+                             special_function_p.  */
+  sfk_constructor,        /* A constructor.  */
+  sfk_copy_constructor,    /* A copy constructor.  */
+  sfk_assignment_operator, /* An assignment operator.  */
+  sfk_destructor,         /* A destructor.  */
+  sfk_complete_destructor, /* A destructor for complete objects.  */
+  sfk_base_destructor,     /* A destructor for base subobjects.  */
+  sfk_deleting_destructor, /* A destructor for complete objects that
+                             deletes the object after it has been
+                             destroyed.  */
+  sfk_conversion          /* A conversion operator.  */
+} special_function_kind;
+
+/* The various kinds of linkage.  From [basic.link],
+
+      A name is said to have linkage when it might denote the same
+      object, reference, function, type, template, namespace or value
+      as a name introduced in another scope:
+
+      -- When a name has external linkage, the entity it denotes can
+        be referred to from scopes of other translation units or from
+        other scopes of the same translation unit.
+
+      -- When a name has internal linkage, the entity it denotes can
+        be referred to by names from other scopes in the same
+        translation unit.
+
+      -- When a name has no linkage, the entity it denotes cannot be
+        referred to by names from other scopes.  */
+
+typedef enum linkage_kind {
+  lk_none,                     /* No linkage.  */
+  lk_internal,                 /* Internal linkage.  */
+  lk_external                  /* External linkage.  */
+} linkage_kind;
+
+/* Bitmask flags to control type substitution.  */
+typedef enum tsubst_flags_t {
+  tf_none = 0,                  /* nothing special */
+  tf_error = 1 << 0,            /* give error messages  */
+  tf_warning = 1 << 1,          /* give warnings too  */
+  tf_ignore_bad_quals = 1 << 2,         /* ignore bad cvr qualifiers */
+  tf_keep_type_decl = 1 << 3,   /* retain typedef type decls
+                                   (make_typename_type use) */
+  tf_ptrmem_ok = 1 << 4,        /* pointers to member ok (internal
+                                   instantiate_type use) */
+  tf_user = 1 << 5,             /* found template must be a user template
+                                   (lookup_template_class use) */
+  tf_conv = 1 << 6,             /* We are determining what kind of
+                                   conversion might be permissible,
+                                   not actually performing the
+                                   conversion.  */
+  tf_no_access_control = 1 << 7, /* Do not perform access checks, even
+                                   when issuing other errors.   */
+  /* Convenient substitution flags combinations.  */
+  tf_warning_or_error = tf_warning | tf_error
+} tsubst_flags_t;
+
+/* The kind of checking we can do looking in a class hierarchy.  */
+typedef enum base_access {
+  ba_any = 0,  /* Do not check access, allow an ambiguous base,
+                     prefer a non-virtual base */
+  ba_unique = 1 << 0,  /* Must be a unique base.  */
+  ba_check_bit = 1 << 1,   /* Check access.  */
+  ba_check = ba_unique | ba_check_bit,
+  ba_ignore_scope = 1 << 2, /* Ignore access allowed by local scope.  */
+  ba_quiet = 1 << 3     /* Do not issue error messages.  */
+} base_access;
+
+/* The various kinds of access check during parsing.  */
+typedef enum deferring_kind {
+  dk_no_deferred = 0, /* Check access immediately */
+  dk_deferred = 1,    /* Deferred check */
+  dk_no_check = 2     /* No access check */
+} deferring_kind;
+
+/* The kind of base we can find, looking in a class hierarchy.
+   Values <0 indicate we failed.  */
+typedef enum base_kind {
+  bk_inaccessible = -3,   /* The base is inaccessible */
+  bk_ambig = -2,         /* The base is ambiguous */
+  bk_not_base = -1,      /* It is not a base */
+  bk_same_type = 0,      /* It is the same type */
+  bk_proper_base = 1,    /* It is a proper base */
+  bk_via_virtual = 2     /* It is a proper base, but via a virtual
+                            path. This might not be the canonical
+                            binfo.  */
+} base_kind;
+
+/* Node for "pointer to (virtual) function".
+   This may be distinct from ptr_type_node so gdb can distinguish them.  */
+#define vfunc_ptr_type_node  vtable_entry_type
+
+
+/* For building calls to `delete'.  */
+extern GTY(()) tree integer_two_node;
+extern GTY(()) tree integer_three_node;
+
+/* The number of function bodies which we are currently processing.
+   (Zero if we are at namespace scope, one inside the body of a
+   function, two inside the body of a function in a local class, etc.)  */
+extern int function_depth;
+
+/* in pt.c  */
+
+/* These values are used for the `STRICT' parameter to type_unification and
+   fn_type_unification.  Their meanings are described with the
+   documentation for fn_type_unification.  */
+
+typedef enum unification_kind_t {
+  DEDUCE_CALL,
+  DEDUCE_CONV,
+  DEDUCE_EXACT
+} unification_kind_t;
+
+/* in class.c */
+
+extern int current_class_depth;
+
+/* An array of all local classes present in this translation unit, in
+   declaration order.  */
+extern GTY(()) VEC(tree,gc) *local_classes;
+\f
+/* Here's where we control how name mangling takes place.  */
+
+/* Cannot use '$' up front, because this confuses gdb
+   (names beginning with '$' are gdb-local identifiers).
+
+   Note that all forms in which the '$' is significant are long enough
+   for direct indexing (meaning that if we know there is a '$'
+   at a particular location, we can index into the string at
+   any other location that provides distinguishing characters).  */
+
+/* Define NO_DOT_IN_LABEL in your favorite tm file if your assembler
+   doesn't allow '.' in symbol names.  */
+#ifndef NO_DOT_IN_LABEL
+
+#define JOINER '.'
+
+#define AUTO_TEMP_NAME "_.tmp_"
+#define VFIELD_BASE ".vf"
+#define VFIELD_NAME "_vptr."
+#define VFIELD_NAME_FORMAT "_vptr.%s"
+
+#define ANON_AGGRNAME_FORMAT "._%d"
+
+#else /* NO_DOT_IN_LABEL */
+
+#ifndef NO_DOLLAR_IN_LABEL
+
+#define JOINER '$'
+
+#define AUTO_TEMP_NAME "_$tmp_"
+#define VFIELD_BASE "$vf"
+#define VFIELD_NAME "_vptr$"
+#define VFIELD_NAME_FORMAT "_vptr$%s"
+#define ANON_AGGRNAME_FORMAT "$_%d"
+
+#else /* NO_DOLLAR_IN_LABEL */
+
+#define IN_CHARGE_NAME "__in_chrg"
+#define AUTO_TEMP_NAME "__tmp_"
+#define TEMP_NAME_P(ID_NODE) \
+  (!strncmp (IDENTIFIER_POINTER (ID_NODE), AUTO_TEMP_NAME, \
+            sizeof (AUTO_TEMP_NAME) - 1))
+#define VTABLE_NAME "__vt_"
+#define VTABLE_NAME_P(ID_NODE) \
+  (!strncmp (IDENTIFIER_POINTER (ID_NODE), VTABLE_NAME, \
+            sizeof (VTABLE_NAME) - 1))
+#define VFIELD_BASE "__vfb"
+#define VFIELD_NAME "__vptr_"
+#define VFIELD_NAME_P(ID_NODE) \
+  (!strncmp (IDENTIFIER_POINTER (ID_NODE), VFIELD_NAME, \
+           sizeof (VFIELD_NAME) - 1))
+#define VFIELD_NAME_FORMAT "__vptr_%s"
+
+#define ANON_AGGRNAME_PREFIX "__anon_"
+#define ANON_AGGRNAME_P(ID_NODE) \
+  (!strncmp (IDENTIFIER_POINTER (ID_NODE), ANON_AGGRNAME_PREFIX, \
+            sizeof (ANON_AGGRNAME_PREFIX) - 1))
+#define ANON_AGGRNAME_FORMAT "__anon_%d"
+
+#endif /* NO_DOLLAR_IN_LABEL */
+#endif /* NO_DOT_IN_LABEL */
+
+#define THIS_NAME "this"
+
+#define IN_CHARGE_NAME "__in_chrg"
+
+#define VTBL_PTR_TYPE          "__vtbl_ptr_type"
+#define VTABLE_DELTA_NAME      "__delta"
+#define VTABLE_PFN_NAME                "__pfn"
+
+#if !defined(NO_DOLLAR_IN_LABEL) || !defined(NO_DOT_IN_LABEL)
+
+#define VTABLE_NAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[1] == 'v' \
+  && IDENTIFIER_POINTER (ID_NODE)[2] == 't' \
+  && IDENTIFIER_POINTER (ID_NODE)[3] == JOINER)
+
+#define TEMP_NAME_P(ID_NODE) \
+  (!strncmp (IDENTIFIER_POINTER (ID_NODE), AUTO_TEMP_NAME, sizeof (AUTO_TEMP_NAME)-1))
+#define VFIELD_NAME_P(ID_NODE) \
+  (!strncmp (IDENTIFIER_POINTER (ID_NODE), VFIELD_NAME, sizeof(VFIELD_NAME)-1))
+
+/* For anonymous aggregate types, we need some sort of name to
+   hold on to.  In practice, this should not appear, but it should
+   not be harmful if it does.  */
+#define ANON_AGGRNAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[0] == JOINER \
+                                 && IDENTIFIER_POINTER (ID_NODE)[1] == '_')
+#endif /* !defined(NO_DOLLAR_IN_LABEL) || !defined(NO_DOT_IN_LABEL) */
+
+\f
+/* Nonzero if we're done parsing and into end-of-file activities.  */
+
+extern int at_eof;
+
+/* A list of namespace-scope objects which have constructors or
+   destructors which reside in the global scope.  The decl is stored
+   in the TREE_VALUE slot and the initializer is stored in the
+   TREE_PURPOSE slot.  */
+extern GTY(()) tree static_aggregates;
+
+enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, OP_FLAG, TYPENAME_FLAG };
+
+/* These are uses as bits in flags passed to various functions to
+   control their behavior.  Despite the LOOKUP_ prefix, many of these
+   do not control name lookup.  ??? Functions using these flags should
+   probably be modified to accept explicit boolean flags for the
+   behaviors relevant to them.  */
+/* Check for access violations.  */
+#define LOOKUP_PROTECT (1 << 0)
+/* Complain if no suitable member function matching the arguments is
+   found.  */
+#define LOOKUP_COMPLAIN (1 << 1)
+#define LOOKUP_NORMAL (LOOKUP_PROTECT | LOOKUP_COMPLAIN)
+/* Even if the function found by lookup is a virtual function, it
+   should be called directly.  */
+#define LOOKUP_NONVIRTUAL (1 << 2)
+/* Non-converting (i.e., "explicit") constructors are not tried.  */
+#define LOOKUP_ONLYCONVERTING (1 << 3)
+/* If a temporary is created, it should be created so that it lives
+   as long as the current variable bindings; otherwise it only lives
+   until the end of the complete-expression.  It also forces
+   direct-initialization in cases where other parts of the compiler
+   have already generated a temporary, such as reference
+   initialization and the catch parameter.  */
+#define DIRECT_BIND (1 << 4)
+/* User-defined conversions are not permitted.  (Built-in conversions
+   are permitted.)  */
+#define LOOKUP_NO_CONVERSION (1 << 5)
+/* The user has explicitly called a destructor.  (Therefore, we do
+   not need to check that the object is non-NULL before calling the
+   destructor.)  */
+#define LOOKUP_DESTRUCTOR (1 << 6)
+/* Do not permit references to bind to temporaries.  */
+#define LOOKUP_NO_TEMP_BIND (1 << 7)
+/* Do not accept objects, and possibly namespaces.  */
+#define LOOKUP_PREFER_TYPES (1 << 8)
+/* Do not accept objects, and possibly types.   */
+#define LOOKUP_PREFER_NAMESPACES (1 << 9)
+/* Accept types or namespaces.  */
+#define LOOKUP_PREFER_BOTH (LOOKUP_PREFER_TYPES | LOOKUP_PREFER_NAMESPACES)
+/* Return friend declarations and un-declared builtin functions.
+   (Normally, these entities are registered in the symbol table, but
+   not found by lookup.)  */
+#define LOOKUP_HIDDEN (LOOKUP_PREFER_NAMESPACES << 1)
+/* Prefer that the lvalue be treated as an rvalue.  */
+#define LOOKUP_PREFER_RVALUE (LOOKUP_HIDDEN << 1)
+/* We're inside an init-list, so narrowing conversions are ill-formed.  */
+#define LOOKUP_NO_NARROWING (LOOKUP_PREFER_RVALUE << 1)
+/* Avoid user-defined conversions for the first parameter of a copy
+   constructor.  */
+#define LOOKUP_NO_COPY_CTOR_CONVERSION (LOOKUP_NO_NARROWING << 1)
+
+#define LOOKUP_NAMESPACES_ONLY(F)  \
+  (((F) & LOOKUP_PREFER_NAMESPACES) && !((F) & LOOKUP_PREFER_TYPES))
+#define LOOKUP_TYPES_ONLY(F)  \
+  (!((F) & LOOKUP_PREFER_NAMESPACES) && ((F) & LOOKUP_PREFER_TYPES))
+#define LOOKUP_QUALIFIERS_ONLY(F)     ((F) & LOOKUP_PREFER_BOTH)
+
+
+/* These flags are used by the conversion code.
+   CONV_IMPLICIT   :  Perform implicit conversions (standard and user-defined).
+   CONV_STATIC     :  Perform the explicit conversions for static_cast.
+   CONV_CONST      :  Perform the explicit conversions for const_cast.
+   CONV_REINTERPRET:  Perform the explicit conversions for reinterpret_cast.
+   CONV_PRIVATE    :  Perform upcasts to private bases.
+   CONV_FORCE_TEMP :  Require a new temporary when converting to the same
+                     aggregate type.  */
+
+#define CONV_IMPLICIT    1
+#define CONV_STATIC      2
+#define CONV_CONST       4
+#define CONV_REINTERPRET 8
+#define CONV_PRIVATE    16
+/* #define CONV_NONCONVERTING 32 */
+#define CONV_FORCE_TEMP  64
+#define CONV_OLD_CONVERT (CONV_IMPLICIT | CONV_STATIC | CONV_CONST \
+                         | CONV_REINTERPRET)
+#define CONV_C_CAST      (CONV_IMPLICIT | CONV_STATIC | CONV_CONST \
+                         | CONV_REINTERPRET | CONV_PRIVATE | CONV_FORCE_TEMP)
+
+/* Used by build_expr_type_conversion to indicate which types are
+   acceptable as arguments to the expression under consideration.  */
+
+#define WANT_INT       1 /* integer types, including bool */
+#define WANT_FLOAT     2 /* floating point types */
+#define WANT_ENUM      4 /* enumerated types */
+#define WANT_POINTER   8 /* pointer types */
+#define WANT_NULL      16 /* null pointer constant */
+#define WANT_VECTOR    32 /* vector types */
+#define WANT_ARITH     (WANT_INT | WANT_FLOAT | WANT_VECTOR)
+
+/* Used with comptypes, and related functions, to guide type
+   comparison.  */
+
+#define COMPARE_STRICT       0 /* Just check if the types are the
+                                  same.  */
+#define COMPARE_BASE         1 /* Check to see if the second type is
+                                  derived from the first.  */
+#define COMPARE_DERIVED              2 /* Like COMPARE_BASE, but in
+                                  reverse.  */
+#define COMPARE_REDECLARATION 4 /* The comparison is being done when
+                                  another declaration of an existing
+                                  entity is seen.  */
+#define COMPARE_STRUCTURAL    8 /* The comparison is intended to be
+                                  structural. The actual comparison
+                                  will be identical to
+                                  COMPARE_STRICT.  */
+
+/* Used with push_overloaded_decl.  */
+#define PUSH_GLOBAL         0  /* Push the DECL into namespace scope,
+                                  regardless of the current scope.  */
+#define PUSH_LOCAL          1  /* Push the DECL into the current
+                                  scope.  */
+#define PUSH_USING          2  /* We are pushing this DECL as the
+                                  result of a using declaration.  */
+
+/* Used with start function.  */
+#define SF_DEFAULT          0  /* No flags.  */
+#define SF_PRE_PARSED       1  /* The function declaration has
+                                  already been parsed.  */
+#define SF_INCLASS_INLINE    2  /* The function is an inline, defined
+                                  in the class body.  */
+
+/* Used with start_decl's initialized parameter.  */
+#define SD_UNINITIALIZED     0
+#define SD_INITIALIZED       1
+#define SD_DEFAULTED         2
+#define SD_DELETED           3
+
+/* Returns nonzero iff TYPE1 and TYPE2 are the same type, or if TYPE2
+   is derived from TYPE1, or if TYPE2 is a pointer (reference) to a
+   class derived from the type pointed to (referred to) by TYPE1.  */
+#define same_or_base_type_p(TYPE1, TYPE2) \
+  comptypes ((TYPE1), (TYPE2), COMPARE_BASE)
+
+/* These macros are used to access a TEMPLATE_PARM_INDEX.  */
+#define TEMPLATE_PARM_INDEX_CAST(NODE) \
+       ((template_parm_index*)TEMPLATE_PARM_INDEX_CHECK (NODE))
+#define TEMPLATE_PARM_IDX(NODE) (TEMPLATE_PARM_INDEX_CAST (NODE)->index)
+#define TEMPLATE_PARM_LEVEL(NODE) (TEMPLATE_PARM_INDEX_CAST (NODE)->level)
+#define TEMPLATE_PARM_DESCENDANTS(NODE) (TREE_CHAIN (NODE))
+#define TEMPLATE_PARM_ORIG_LEVEL(NODE) (TEMPLATE_PARM_INDEX_CAST (NODE)->orig_level)
+#define TEMPLATE_PARM_DECL(NODE) (TEMPLATE_PARM_INDEX_CAST (NODE)->decl)
+#define TEMPLATE_PARM_PARAMETER_PACK(NODE) \
+  (TREE_LANG_FLAG_0 (TEMPLATE_PARM_INDEX_CHECK (NODE)))
+
+/* These macros are for accessing the fields of TEMPLATE_TYPE_PARM,
+   TEMPLATE_TEMPLATE_PARM and BOUND_TEMPLATE_TEMPLATE_PARM nodes.  */
+#define TEMPLATE_TYPE_PARM_INDEX(NODE)                                  \
+  (TREE_CHECK3 ((NODE), TEMPLATE_TYPE_PARM, TEMPLATE_TEMPLATE_PARM,    \
+               BOUND_TEMPLATE_TEMPLATE_PARM))->type.values
+#define TEMPLATE_TYPE_IDX(NODE) \
+  (TEMPLATE_PARM_IDX (TEMPLATE_TYPE_PARM_INDEX (NODE)))
+#define TEMPLATE_TYPE_LEVEL(NODE) \
+  (TEMPLATE_PARM_LEVEL (TEMPLATE_TYPE_PARM_INDEX (NODE)))
+#define TEMPLATE_TYPE_ORIG_LEVEL(NODE) \
+  (TEMPLATE_PARM_ORIG_LEVEL (TEMPLATE_TYPE_PARM_INDEX (NODE)))
+#define TEMPLATE_TYPE_DECL(NODE) \
+  (TEMPLATE_PARM_DECL (TEMPLATE_TYPE_PARM_INDEX (NODE)))
+#define TEMPLATE_TYPE_PARAMETER_PACK(NODE) \
+  (TEMPLATE_PARM_PARAMETER_PACK (TEMPLATE_TYPE_PARM_INDEX (NODE)))
+
+/* These constants can used as bit flags in the process of tree formatting.
+
+   TFF_PLAIN_IDENTIFIER: unqualified part of a name.
+   TFF_SCOPE: include the class and namespace scope of the name.
+   TFF_CHASE_TYPEDEF: print the original type-id instead of the typedef-name.
+   TFF_DECL_SPECIFIERS: print decl-specifiers.
+   TFF_CLASS_KEY_OR_ENUM: precede a class-type name (resp. enum name) with
+       a class-key (resp. `enum').
+   TFF_RETURN_TYPE: include function return type.
+   TFF_FUNCTION_DEFAULT_ARGUMENTS: include function default parameter values.
+   TFF_EXCEPTION_SPECIFICATION: show function exception specification.
+   TFF_TEMPLATE_HEADER: show the template<...> header in a
+       template-declaration.
+   TFF_TEMPLATE_NAME: show only template-name.
+   TFF_EXPR_IN_PARENS: parenthesize expressions.
+   TFF_NO_FUNCTION_ARGUMENTS: don't show function arguments.
+   TFF_UNQUALIFIED_NAME: do not print the qualifying scope of the
+       top-level entity.  */
+
+#define TFF_PLAIN_IDENTIFIER                   (0)
+#define TFF_SCOPE                              (1)
+#define TFF_CHASE_TYPEDEF                      (1 << 1)
+#define TFF_DECL_SPECIFIERS                    (1 << 2)
+#define TFF_CLASS_KEY_OR_ENUM                  (1 << 3)
+#define TFF_RETURN_TYPE                                (1 << 4)
+#define TFF_FUNCTION_DEFAULT_ARGUMENTS         (1 << 5)
+#define TFF_EXCEPTION_SPECIFICATION            (1 << 6)
+#define TFF_TEMPLATE_HEADER                    (1 << 7)
+#define TFF_TEMPLATE_NAME                      (1 << 8)
+#define TFF_EXPR_IN_PARENS                     (1 << 9)
+#define TFF_NO_FUNCTION_ARGUMENTS              (1 << 10)
+#define TFF_UNQUALIFIED_NAME                   (1 << 11)
+
+/* Returns the TEMPLATE_DECL associated to a TEMPLATE_TEMPLATE_PARM
+   node.  */
+#define TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL(NODE)     \
+  ((TREE_CODE (NODE) == BOUND_TEMPLATE_TEMPLATE_PARM)  \
+   ? TYPE_TI_TEMPLATE (NODE)                           \
+   : TYPE_NAME (NODE))
+
+/* in lex.c  */
+
+extern void init_reswords (void);
+
+/* Indexed by TREE_CODE, these tables give C-looking names to
+   operators represented by TREE_CODES.  For example,
+   opname_tab[(int) MINUS_EXPR] == "-".  */
+extern const char **opname_tab, **assignop_tab;
+
+typedef struct operator_name_info_t GTY(())
+{
+  /* The IDENTIFIER_NODE for the operator.  */
+  tree identifier;
+  /* The name of the operator.  */
+  const char *name;
+  /* The mangled name of the operator.  */
+  const char *mangled_name;
+  /* The arity of the operator.  */
+  int arity;
+} operator_name_info_t;
+
+/* A mapping from tree codes to operator name information.  */
+extern GTY(()) operator_name_info_t operator_name_info
+  [(int) MAX_TREE_CODES];
+/* Similar, but for assignment operators.  */
+extern GTY(()) operator_name_info_t assignment_operator_name_info
+  [(int) MAX_TREE_CODES];
+
+/* A type-qualifier, or bitmask therefore, using the TYPE_QUAL
+   constants.  */
+
+typedef int cp_cv_quals;
+
+/* A storage class.  */
+
+typedef enum cp_storage_class {
+  /* sc_none must be zero so that zeroing a cp_decl_specifier_seq
+     sets the storage_class field to sc_none.  */
+  sc_none = 0,
+  sc_auto,
+  sc_register,
+  sc_static,
+  sc_extern,
+  sc_mutable
+} cp_storage_class;
+
+/* An individual decl-specifier.  */
+
+typedef enum cp_decl_spec {
+  ds_first,
+  ds_signed = ds_first,
+  ds_unsigned,
+  ds_short,
+  ds_long,
+  ds_const,
+  ds_volatile,
+  ds_restrict,
+  ds_inline,
+  ds_virtual,
+  ds_explicit,
+  ds_friend,
+  ds_typedef,
+  ds_complex,
+  ds_thread,
+  ds_last
+} cp_decl_spec;
+
+/* A decl-specifier-seq.  */
+
+typedef struct cp_decl_specifier_seq {
+  /* The number of times each of the keywords has been seen.  */
+  unsigned specs[(int) ds_last];
+  /* The primary type, if any, given by the decl-specifier-seq.
+     Modifiers, like "short", "const", and "unsigned" are not
+     reflected here.  This field will be a TYPE, unless a typedef-name
+     was used, in which case it will be a TYPE_DECL.  */
+  tree type;
+  /* The location of the primary type. Mainly used for error
+     reporting.  */
+  location_t type_location;
+  /* The attributes, if any, provided with the specifier sequence.  */
+  tree attributes;
+  /* If non-NULL, a built-in type that the user attempted to redefine
+     to some other type.  */
+  tree redefined_builtin_type;
+  /* The storage class specified -- or sc_none if no storage class was
+     explicitly specified.  */
+  cp_storage_class storage_class;
+  /* True iff TYPE_SPEC indicates a user-defined type.  */
+  BOOL_BITFIELD user_defined_type_p : 1;
+  /* True iff multiple types were (erroneously) specified for this
+     decl-specifier-seq.  */
+  BOOL_BITFIELD multiple_types_p : 1;
+  /* True iff multiple storage classes were (erroneously) specified
+     for this decl-specifier-seq or a combination of a storage class
+     with a typedef specifier.  */
+  BOOL_BITFIELD conflicting_specifiers_p : 1;
+  /* True iff at least one decl-specifier was found.  */
+  BOOL_BITFIELD any_specifiers_p : 1;
+  /* True iff "int" was explicitly provided.  */
+  BOOL_BITFIELD explicit_int_p : 1;
+  /* True iff "char" was explicitly provided.  */
+  BOOL_BITFIELD explicit_char_p : 1;
+} cp_decl_specifier_seq;
+
+/* The various kinds of declarators.  */
+
+typedef enum cp_declarator_kind {
+  cdk_id,
+  cdk_function,
+  cdk_array,
+  cdk_pointer,
+  cdk_reference,
+  cdk_ptrmem,
+  cdk_error
+} cp_declarator_kind;
+
+/* A declarator.  */
+
+typedef struct cp_declarator cp_declarator;
+
+typedef struct cp_parameter_declarator cp_parameter_declarator;
+
+/* A parameter, before it has been semantically analyzed.  */
+struct cp_parameter_declarator {
+  /* The next parameter, or NULL_TREE if none.  */
+  cp_parameter_declarator *next;
+  /* The decl-specifiers-seq for the parameter.  */
+  cp_decl_specifier_seq decl_specifiers;
+  /* The declarator for the parameter.  */
+  cp_declarator *declarator;
+  /* The default-argument expression, or NULL_TREE, if none.  */
+  tree default_argument;
+  /* True iff this is the first parameter in the list and the
+     parameter sequence ends with an ellipsis.  */
+  bool ellipsis_p;
+};
+
+/* A declarator.  */
+struct cp_declarator {
+  /* The kind of declarator.  */
+  ENUM_BITFIELD (cp_declarator_kind) kind : 4;
+  /* Whether we parsed an ellipsis (`...') just before the declarator,
+     to indicate this is a parameter pack.  */
+  BOOL_BITFIELD parameter_pack_p : 1;
+  /* Attributes that apply to this declarator.  */
+  tree attributes;
+  /* For all but cdk_id and cdk_error, the contained declarator.  For
+     cdk_id and cdk_error, guaranteed to be NULL.  */
+  cp_declarator *declarator;
+  location_t id_loc; /* Currently only set for cdk_id and cdk_function. */
+  union {
+    /* For identifiers.  */
+    struct {
+      /* If non-NULL, the qualifying scope (a NAMESPACE_DECL or
+        *_TYPE) for this identifier.  */
+      tree qualifying_scope;
+      /* The unqualified name of the entity -- an IDENTIFIER_NODE,
+        BIT_NOT_EXPR, or TEMPLATE_ID_EXPR.  */
+      tree unqualified_name;
+      /* If this is the name of a function, what kind of special
+        function (if any).  */
+      special_function_kind sfk;
+    } id;
+    /* For functions.  */
+    struct {
+      /* The parameters to the function as a TREE_LIST of decl/default.  */
+      tree parameters;
+      /* The cv-qualifiers for the function.  */
+      cp_cv_quals qualifiers;
+      /* The exception-specification for the function.  */
+      tree exception_specification;
+      /* The late-specified return type, if any.  */
+      tree late_return_type;
+    } function;
+    /* For arrays.  */
+    struct {
+      /* The bounds to the array.  */
+      tree bounds;
+    } array;
+    /* For cdk_pointer and cdk_ptrmem.  */
+    struct {
+      /* The cv-qualifiers for the pointer.  */
+      cp_cv_quals qualifiers;
+      /* For cdk_ptrmem, the class type containing the member.  */
+      tree class_type;
+    } pointer;
+    /* For cdk_reference */
+    struct {
+      /* The cv-qualifiers for the reference.  These qualifiers are
+         only used to diagnose ill-formed code.  */
+      cp_cv_quals qualifiers;
+      /* Whether this is an rvalue reference */
+      bool rvalue_ref;
+    } reference;
+  } u;
+};
+
+/* A level of template instantiation.  */
+struct tinst_level GTY(())
+{
+  /* The immediately deeper level in the chain.  */
+  struct tinst_level *next;
+
+  /* The original node.  Can be either a DECL (for a function or static
+     data member) or a TYPE (for a class), depending on what we were
+     asked to instantiate.  */
+  tree decl;
+
+  /* The location where the template is instantiated.  */
+  location_t locus;
+
+  /* True if the location is in a system header.  */
+  bool in_system_header_p;
+};
+
+/* A parameter list indicating for a function with no parameters,
+   e.g  "int f(void)".  */
+extern cp_parameter_declarator *no_parameters;
+
+/* True if we saw "#pragma GCC java_exceptions".  */
+extern bool pragma_java_exceptions;
+
+/* in call.c */
+extern bool check_dtor_name                    (tree, tree);
+
+extern tree build_vfield_ref                   (tree, tree);
+extern tree build_conditional_expr             (tree, tree, tree, 
+                                                 tsubst_flags_t);
+extern tree build_addr_func                    (tree);
+extern tree build_call_a                       (tree, int, tree*);
+extern tree build_call_n                       (tree, int, ...);
+extern bool null_ptr_cst_p                     (tree);
+extern bool sufficient_parms_p                 (const_tree);
+extern tree type_decays_to                     (tree);
+extern tree build_user_type_conversion         (tree, tree, int);
+extern tree build_new_function_call            (tree, tree, bool, 
+                                                tsubst_flags_t);
+extern tree build_operator_new_call            (tree, tree, tree *, tree *,
+                                                tree *);
+extern tree build_new_method_call              (tree, tree, tree, tree, int,
+                                                tree *, tsubst_flags_t);
+extern tree build_special_member_call          (tree, tree, tree, tree, int,
+                                                 tsubst_flags_t);
+extern tree build_new_op                       (enum tree_code, int, tree, 
+                                                tree, tree, bool *,
+                                                tsubst_flags_t);
+extern tree build_op_delete_call               (enum tree_code, tree, tree, bool, tree, tree);
+extern bool can_convert                                (tree, tree);
+extern bool can_convert_arg                    (tree, tree, tree, int);
+extern bool can_convert_arg_bad                        (tree, tree, tree);
+extern bool enforce_access                     (tree, tree, tree);
+extern tree convert_default_arg                        (tree, tree, tree, int);
+extern tree convert_arg_to_ellipsis            (tree);
+extern tree build_x_va_arg                     (tree, tree);
+extern tree cxx_type_promotes_to               (tree);
+extern tree type_passed_as                     (tree);
+extern tree convert_for_arg_passing            (tree, tree);
+extern bool is_properly_derived_from           (tree, tree);
+extern tree set_up_extended_ref_temp           (tree, tree, tree *, tree *);
+extern tree initialize_reference               (tree, tree, tree, tree *);
+extern tree make_temporary_var_for_ref_to_temp (tree, tree);
+extern tree strip_top_quals                    (tree);
+extern tree perform_implicit_conversion                (tree, tree, tsubst_flags_t);
+extern tree perform_direct_initialization_if_possible (tree, tree, bool,
+                                                       tsubst_flags_t);
+extern tree in_charge_arg_for_name             (tree);
+extern tree build_cxx_call                     (tree, int, tree *);
+extern bool is_std_init_list                   (tree);
+extern bool is_list_ctor                       (tree);
+#ifdef ENABLE_CHECKING
+extern void validate_conversion_obstack                (void);
+#endif /* ENABLE_CHECKING */
+
+/* in class.c */
+extern tree build_base_path                    (enum tree_code, tree,
+                                                tree, int);
+extern tree convert_to_base                    (tree, tree, bool, bool);
+extern tree convert_to_base_statically         (tree, tree);
+extern tree build_vtbl_ref                     (tree, tree);
+extern tree build_vfn_ref                      (tree, tree);
+extern tree get_vtable_decl                    (tree, int);
+extern void resort_type_method_vec             (void *, void *,
+                                                gt_pointer_operator, void *);
+extern bool add_method                         (tree, tree, tree);
+extern bool currently_open_class               (tree);
+extern tree currently_open_derived_class       (tree);
+extern tree finish_struct                      (tree, tree);
+extern void finish_struct_1                    (tree);
+extern int resolves_to_fixed_type_p            (tree, int *);
+extern void init_class_processing              (void);
+extern int is_empty_class                      (tree);
+extern bool is_really_empty_class              (tree);
+extern void pushclass                          (tree);
+extern void popclass                           (void);
+extern void push_nested_class                  (tree);
+extern void pop_nested_class                   (void);
+extern int current_lang_depth                  (void);
+extern void push_lang_context                  (tree);
+extern void pop_lang_context                   (void);
+extern tree instantiate_type                   (tree, tree, tsubst_flags_t);
+extern void print_class_statistics             (void);
+extern void cxx_print_statistics               (void);
+extern void cxx_print_xnode                    (FILE *, tree, int);
+extern void cxx_print_decl                     (FILE *, tree, int);
+extern void cxx_print_type                     (FILE *, tree, int);
+extern void cxx_print_identifier               (FILE *, tree, int);
+extern void cxx_print_error_function   (struct diagnostic_context *,
+                                                const char *,
+                                                struct diagnostic_info *);
+extern void build_self_reference               (void);
+extern int same_signature_p                    (const_tree, const_tree);
+extern void maybe_add_class_template_decl_list (tree, tree, int);
+extern void unreverse_member_declarations      (tree);
+extern void invalidate_class_lookup_cache      (void);
+extern void maybe_note_name_used_in_class      (tree, tree);
+extern void note_name_declared_in_class                (tree, tree);
+extern tree get_vtbl_decl_for_binfo            (tree);
+extern void debug_class                                (tree);
+extern void debug_thunks                       (tree);
+extern tree cp_fold_obj_type_ref               (tree, tree);
+extern void set_linkage_according_to_type      (tree, tree);
+extern void determine_key_method               (tree);
+extern void check_for_override                 (tree, tree);
+extern void push_class_stack                   (void);
+extern void pop_class_stack                    (void);
+extern bool type_has_user_nondefault_constructor (tree);
+extern bool type_has_user_provided_constructor  (tree);
+extern bool type_has_user_provided_default_constructor (tree);
+extern bool defaultable_fn_p                   (tree);
+
+/* in cvt.c */
+extern tree convert_to_reference               (tree, tree, int, int, tree);
+extern tree convert_from_reference             (tree);
+extern tree force_rvalue                       (tree);
+extern tree ocp_convert                                (tree, tree, int, int);
+extern tree cp_convert                         (tree, tree);
+extern tree cp_convert_and_check                (tree, tree);
+extern tree convert_to_void    (tree, const char */*implicit context*/,
+                                 tsubst_flags_t);
+extern tree convert_force                      (tree, tree, int);
+extern tree build_expr_type_conversion         (int, tree, bool);
+extern tree type_promotes_to                   (tree);
+extern tree perform_qualification_conversions  (tree, tree);
+extern void clone_function_decl                        (tree, int);
+extern void adjust_clone_args                  (tree);
+
+/* decl.c */
+extern tree poplevel                           (int, int, int);
+extern void insert_block                       (tree);
+extern tree pushdecl                           (tree);
+extern tree pushdecl_maybe_friend              (tree, bool);
+extern void cxx_init_decl_processing           (void);
+enum cp_tree_node_structure_enum cp_tree_node_structure
+                                               (union lang_tree_node *);
+extern bool cxx_mark_addressable               (tree);
+extern void maybe_push_cleanup_level           (tree);
+extern void finish_scope                       (void);
+extern void push_switch                                (tree);
+extern void pop_switch                         (void);
+extern tree pushtag                            (tree, tree, tag_scope);
+extern tree make_anon_name                     (void);
+extern int decls_match                         (tree, tree);
+extern tree duplicate_decls                    (tree, tree, bool);
+extern tree pushdecl_top_level_maybe_friend    (tree, bool);
+extern tree pushdecl_top_level_and_finish      (tree, tree);
+extern tree declare_local_label                        (tree);
+extern tree define_label                       (location_t, tree);
+extern void check_goto                         (tree);
+extern bool check_omp_return                   (void);
+extern tree make_typename_type                 (tree, tree, enum tag_types, tsubst_flags_t);
+extern tree make_unbound_class_template                (tree, tree, tree, tsubst_flags_t);
+extern tree check_for_out_of_scope_variable    (tree);
+extern tree build_library_fn_ptr               (const char *, tree);
+extern tree build_cp_library_fn_ptr            (const char *, tree);
+extern tree push_library_fn                    (tree, tree, tree);
+extern tree push_void_library_fn               (tree, tree);
+extern tree push_throw_library_fn              (tree, tree);
+extern tree check_tag_decl                     (cp_decl_specifier_seq *);
+extern tree shadow_tag                         (cp_decl_specifier_seq *);
+extern tree groktypename                       (cp_decl_specifier_seq *, const cp_declarator *, bool);
+extern tree start_decl                         (const cp_declarator *, cp_decl_specifier_seq *, int, tree, tree, tree *);
+extern void start_decl_1                       (tree, bool);
+extern bool check_array_initializer            (tree, tree, tree);
+extern void cp_finish_decl                     (tree, tree, bool, tree, int);
+extern void finish_decl                                (tree, tree, tree);
+extern int cp_complete_array_type              (tree *, tree, bool);
+extern tree build_ptrmemfunc_type              (tree);
+extern tree build_ptrmem_type                  (tree, tree);
+/* the grokdeclarator prototype is in decl.h */
+extern tree build_this_parm                    (tree, cp_cv_quals);
+extern int copy_fn_p                           (const_tree);
+extern bool move_fn_p                           (const_tree);
+extern tree get_scope_of_declarator            (const cp_declarator *);
+extern void grok_special_member_properties     (tree);
+extern int grok_ctor_properties                        (const_tree, const_tree);
+extern bool grok_op_properties                 (tree, bool);
+extern tree xref_tag                           (enum tag_types, tree, tag_scope, bool);
+extern tree xref_tag_from_type                 (tree, tree, tag_scope);
+extern bool xref_basetypes                     (tree, tree);
+extern tree start_enum                         (tree, tree, bool);
+extern void finish_enum                                (tree);
+extern void build_enumerator                   (tree, tree, tree);
+extern tree lookup_enumerator                  (tree, tree);
+extern void start_preparsed_function           (tree, tree, int);
+extern int start_function                      (cp_decl_specifier_seq *, const cp_declarator *, tree);
+extern tree begin_function_body                        (void);
+extern void finish_function_body               (tree);
+extern tree outer_curly_brace_block            (tree);
+extern tree finish_function                    (int);
+extern tree start_method                       (cp_decl_specifier_seq *, const cp_declarator *, tree);
+extern tree finish_method                      (tree);
+extern void maybe_register_incomplete_var      (tree);
+extern void maybe_commonize_var                        (tree);
+extern void complete_vars                      (tree);
+extern void finish_stmt                                (void);
+extern void print_other_binding_stack          (struct cp_binding_level *);
+extern void revert_static_member_fn            (tree);
+extern void fixup_anonymous_aggr               (tree);
+extern int check_static_variable_definition    (tree, tree);
+extern tree compute_array_index_type           (tree, tree);
+extern tree check_default_argument             (tree, tree);
+typedef int (*walk_namespaces_fn)              (tree, void *);
+extern int walk_namespaces                     (walk_namespaces_fn,
+                                                void *);
+extern int wrapup_globals_for_namespace                (tree, void *);
+extern tree create_implicit_typedef            (tree, tree);
+extern tree maybe_push_decl                    (tree);
+extern tree force_target_expr                  (tree, tree);
+extern tree build_target_expr_with_type                (tree, tree);
+extern int local_variable_p                    (const_tree);
+extern tree register_dtor_fn                   (tree);
+extern tmpl_spec_kind current_tmpl_spec_kind   (int);
+extern tree cp_fname_init                      (const char *, tree *);
+extern tree cxx_builtin_function               (tree decl);
+extern tree cxx_builtin_function_ext_scope     (tree decl);
+extern tree check_elaborated_type_specifier    (enum tag_types, tree, bool);
+extern void warn_extern_redeclared_static      (tree, tree);
+extern const char *cxx_comdat_group            (tree);
+extern bool cp_missing_noreturn_ok_p           (tree);
+extern void initialize_artificial_var          (tree, tree);
+extern tree check_var_type                     (tree, tree);
+extern tree reshape_init (tree, tree);
+
+extern bool defer_mark_used_calls;
+extern GTY(()) VEC(tree, gc) *deferred_mark_used_calls;
+
+/* in decl2.c */
+extern bool check_java_method                  (tree);
+extern tree build_memfn_type                   (tree, tree, cp_cv_quals);
+extern void maybe_retrofit_in_chrg             (tree);
+extern void maybe_make_one_only                        (tree);
+extern void grokclassfn                                (tree, tree,
+                                                enum overload_flags);
+extern tree grok_array_decl                    (tree, tree);
+extern tree delete_sanity                      (tree, tree, bool, int);
+extern tree check_classfn                      (tree, tree, tree);
+extern void check_member_template              (tree);
+extern tree grokfield (const cp_declarator *, cp_decl_specifier_seq *,
+                      tree, bool, tree, tree);
+extern tree grokbitfield (const cp_declarator *, cp_decl_specifier_seq *,
+                         tree, tree);
+extern tree cp_reconstruct_complex_type                (tree, tree);
+extern void cplus_decl_attributes              (tree *, tree, int);
+extern void finish_anon_union                  (tree);
+extern void cp_write_global_declarations       (void);
+extern void cp_process_pending_declarations     (location_t);
+extern void cp_clear_deferred_fns               (void);
+extern void cp_clear_conv_type_map              (void);
+extern tree coerce_new_type                    (tree);
+extern tree coerce_delete_type                 (tree);
+extern void comdat_linkage                     (tree);
+extern void determine_visibility               (tree);
+extern void constrain_class_visibility         (tree);
+extern void update_member_visibility           (tree);
+extern void import_export_decl                 (tree);
+extern tree build_cleanup                      (tree);
+extern tree build_offset_ref_call_from_tree    (tree, tree);
+extern void check_default_args                 (tree);
+extern void mark_used                          (tree);
+extern void finish_static_data_member_decl     (tree, tree, bool, tree, int);
+extern tree cp_build_parm_decl                 (tree, tree);
+extern tree get_guard                          (tree);
+extern tree get_guard_cond                     (tree);
+extern tree set_guard                          (tree);
+extern tree cxx_callgraph_analyze_expr         (tree *, int *);
+extern void mark_needed                                (tree);
+extern bool decl_needed_p                      (tree);
+extern void note_vague_linkage_fn              (tree);
+extern tree build_artificial_parm              (tree, tree);
+extern bool possibly_inlined_p                 (tree);
+extern int parm_index                           (tree);
+
+/* in error.c */
+extern void init_error                         (void);
+extern const char *type_as_string              (tree, int);
+extern const char *decl_as_string              (tree, int);
+extern const char *expr_as_string              (tree, int);
+extern const char *lang_decl_name              (tree, int);
+extern const char *language_to_string          (enum languages);
+extern const char *class_key_or_enum_as_string (tree);
+extern void print_instantiation_context                (void);
+extern void maybe_warn_variadic_templates       (void);
+extern void maybe_warn_cpp0x                   (const char *);
+
+/* in except.c */
+extern void init_exception_processing          (void);
+extern tree expand_start_catch_block           (tree);
+extern void expand_end_catch_block             (void);
+extern tree build_exc_ptr                      (void);
+extern tree build_throw                                (tree);
+extern int nothrow_libfn_p                     (const_tree);
+extern void check_handlers                     (tree);
+extern void choose_personality_routine         (enum languages);
+extern tree eh_type_info                       (tree);
+
+/* in expr.c */
+extern tree cplus_expand_constant              (tree);
+
+/* friend.c */
+extern int is_friend                           (tree, tree);
+extern void make_friend_class                  (tree, tree, bool);
+extern void add_friend                         (tree, tree, bool);
+extern tree do_friend                          (tree, tree, tree, tree, enum overload_flags, bool);
+
+/* in init.c */
+extern tree expand_member_init                 (tree);
+extern void emit_mem_initializers              (tree);
+extern tree build_aggr_init                    (tree, tree, int,
+                                                 tsubst_flags_t);
+extern int is_class_type                       (tree, int);
+extern tree get_type_value                     (tree);
+extern tree build_zero_init                    (tree, tree, bool);
+extern tree build_value_init                   (tree);
+extern tree build_value_init_noctor            (tree);
+extern tree build_offset_ref                   (tree, tree, bool);
+extern tree build_new                          (tree, tree, tree, tree, int,
+                                                 tsubst_flags_t);
+extern tree build_vec_init                     (tree, tree, tree, bool, int,
+                                                 tsubst_flags_t);
+extern tree build_delete                       (tree, tree,
+                                                special_function_kind,
+                                                int, int);
+extern void push_base_cleanups                 (void);
+extern tree build_vec_delete                   (tree, tree,
+                                                special_function_kind, int);
+extern tree create_temporary_var               (tree);
+extern void initialize_vtbl_ptrs               (tree);
+extern tree build_java_class_ref               (tree);
+extern tree integral_constant_value            (tree);
+
+/* in lex.c */
+extern void cxx_dup_lang_specific_decl         (tree);
+extern void yyungetc                           (int, int);
+
+extern tree unqualified_name_lookup_error      (tree);
+extern tree unqualified_fn_lookup_error                (tree);
+extern tree build_lang_decl                    (enum tree_code, tree, tree);
+extern void retrofit_lang_decl                 (tree);
+extern tree copy_decl                          (tree);
+extern tree copy_type                          (tree);
+extern tree cxx_make_type                      (enum tree_code);
+extern tree make_class_type                    (enum tree_code);
+extern void yyerror                            (const char *);
+extern void yyhook                             (int);
+extern bool cxx_init                           (void);
+extern void cxx_finish                         (void);
+extern bool in_main_input_context              (void);
+
+/* in method.c */
+extern void init_method                                (void);
+extern tree make_thunk                         (tree, bool, tree, tree);
+extern void finish_thunk                       (tree);
+extern void use_thunk                          (tree, bool);
+extern void synthesize_method                  (tree);
+extern tree lazily_declare_fn                  (special_function_kind,
+                                                tree);
+extern tree skip_artificial_parms_for          (const_tree, tree);
+extern int num_artificial_parms_for            (const_tree);
+extern tree make_alias_for                     (tree, tree);
+extern tree locate_copy                                (tree, void *);
+extern tree locate_ctor                                (tree, void *);
+extern tree locate_dtor                                (tree, void *);
+
+/* In optimize.c */
+extern bool maybe_clone_body                   (tree);
+
+/* in pt.c */
+extern bool check_template_shadow              (tree);
+extern tree get_innermost_template_args                (tree, int);
+extern void maybe_begin_member_template_processing (tree);
+extern void maybe_end_member_template_processing (void);
+extern tree finish_member_template_decl                (tree);
+extern void begin_template_parm_list           (void);
+extern bool begin_specialization               (void);
+extern void reset_specialization               (void);
+extern void end_specialization                 (void);
+extern void begin_explicit_instantiation       (void);
+extern void end_explicit_instantiation         (void);
+extern tree check_explicit_specialization      (tree, tree, int, int);
+extern tree make_auto                          (void);
+extern tree do_auto_deduction                  (tree, tree, tree);
+extern tree type_uses_auto                     (tree);
+extern tree splice_late_return_type            (tree, tree);
+extern bool is_auto                            (const_tree);
+extern tree process_template_parm              (tree, tree, bool, bool);
+extern tree end_template_parm_list             (tree);
+extern void end_template_decl                  (void);
+extern bool check_default_tmpl_args             (tree, tree, int, int, int);
+extern tree push_template_decl                 (tree);
+extern tree push_template_decl_real            (tree, bool);
+extern bool redeclare_class_template           (tree, tree);
+extern tree lookup_template_class              (tree, tree, tree, tree,
+                                                int, tsubst_flags_t);
+extern tree lookup_template_function           (tree, tree);
+extern int uses_template_parms                 (tree);
+extern int uses_template_parms_level           (tree, int);
+extern tree instantiate_class_template         (tree);
+extern tree instantiate_template               (tree, tree, tsubst_flags_t);
+extern int fn_type_unification                 (tree, tree, tree, tree,
+                                                tree, unification_kind_t, int);
+extern void mark_decl_instantiated             (tree, int);
+extern int more_specialized_fn                 (tree, tree, int);
+extern void do_decl_instantiation              (tree, tree);
+extern void do_type_instantiation              (tree, tree, tsubst_flags_t);
+extern tree instantiate_decl                   (tree, int, bool);
+extern int comp_template_parms                 (const_tree, const_tree);
+extern bool uses_parameter_packs                (tree);
+extern bool template_parameter_pack_p           (const_tree);
+extern tree make_pack_expansion                 (tree);
+extern bool check_for_bare_parameter_packs      (tree);
+extern tree get_template_info                  (tree);
+extern int template_class_depth                        (tree);
+extern int is_specialization_of                        (tree, tree);
+extern bool is_specialization_of_friend                (tree, tree);
+extern int comp_template_args                  (tree, tree);
+extern tree maybe_process_partial_specialization (tree);
+extern tree most_specialized_instantiation     (tree);
+extern void print_candidates                   (tree);
+extern void instantiate_pending_templates      (int);
+extern tree tsubst_default_argument            (tree, tree, tree);
+extern tree tsubst_copy_and_build              (tree, tree, tsubst_flags_t,
+                                                tree, bool, bool);
+extern tree most_general_template              (tree);
+extern tree get_mostly_instantiated_function_type (tree);
+extern int problematic_instantiation_changed   (void);
+extern void record_last_problematic_instantiation (void);
+extern struct tinst_level *current_instantiation(void);
+extern tree maybe_get_template_decl_from_type_decl (tree);
+extern int processing_template_parmlist;
+extern bool dependent_type_p                   (tree);
+extern bool dependent_scope_p                  (tree);
+extern bool any_dependent_template_arguments_p  (const_tree);
+extern bool dependent_template_p               (tree);
+extern bool dependent_template_id_p            (tree, tree);
+extern bool type_dependent_expression_p                (tree);
+extern bool any_type_dependent_arguments_p      (const_tree);
+extern bool type_dependent_expression_p_push   (tree);
+extern bool value_dependent_expression_p       (tree);
+extern bool any_value_dependent_elements_p      (const_tree);
+extern bool dependent_omp_for_p                        (tree, tree, tree, tree);
+extern tree resolve_typename_type              (tree, bool);
+extern tree template_for_substitution          (tree);
+extern tree build_non_dependent_expr           (tree);
+extern tree build_non_dependent_args           (tree);
+extern bool reregister_specialization          (tree, tree, tree);
+extern tree fold_non_dependent_expr            (tree);
+extern bool explicit_class_specialization_p     (tree);
+extern struct tinst_level *outermost_tinst_level(void);
+extern bool parameter_of_template_p            (tree, tree);
+
+/* in repo.c */
+extern void init_repo                          (void);
+extern int repo_emit_p                         (tree);
+extern bool repo_export_class_p                        (const_tree);
+extern void finish_repo                                (void);
+
+/* in rtti.c */
+/* A vector of all tinfo decls that haven't been emitted yet.  */
+extern GTY(()) VEC(tree,gc) *unemitted_tinfo_decls;
+
+extern void init_rtti_processing               (void);
+extern tree build_typeid                       (tree);
+extern tree get_tinfo_decl                     (tree);
+extern tree get_typeid                         (tree);
+extern tree build_headof                       (tree);
+extern tree build_dynamic_cast                 (tree, tree, tsubst_flags_t);
+extern void emit_support_tinfos                        (void);
+extern bool emit_tinfo_decl                    (tree);
+
+/* in search.c */
+extern bool accessible_base_p                  (tree, tree, bool);
+extern tree lookup_base                                (tree, tree, base_access,
+                                                base_kind *);
+extern tree dcast_base_hint                    (tree, tree);
+extern int accessible_p                                (tree, tree, bool);
+extern tree lookup_field_1                     (tree, tree, bool);
+extern tree lookup_field                       (tree, tree, int, bool);
+extern int lookup_fnfields_1                   (tree, tree);
+extern int class_method_index_for_fn           (tree, tree);
+extern tree lookup_fnfields                    (tree, tree, int);
+extern tree lookup_member                      (tree, tree, int, bool);
+extern int look_for_overrides                  (tree, tree);
+extern void get_pure_virtuals                  (tree);
+extern void maybe_suppress_debug_info          (tree);
+extern void note_debug_info_needed             (tree);
+extern void print_search_statistics            (void);
+extern void reinit_search_statistics           (void);
+extern tree current_scope                      (void);
+extern int at_function_scope_p                 (void);
+extern bool at_class_scope_p                   (void);
+extern bool at_namespace_scope_p               (void);
+extern tree context_for_name_lookup            (tree);
+extern tree lookup_conversions                 (tree);
+extern tree binfo_from_vbase                   (tree);
+extern tree binfo_for_vbase                    (tree, tree);
+extern tree look_for_overrides_here            (tree, tree);
+#define dfs_skip_bases ((tree)1)
+extern tree dfs_walk_all (tree, tree (*) (tree, void *),
+                         tree (*) (tree, void *), void *);
+extern tree dfs_walk_once (tree, tree (*) (tree, void *),
+                          tree (*) (tree, void *), void *);
+extern tree binfo_via_virtual                  (tree, tree);
+extern tree build_baselink                     (tree, tree, tree, tree);
+extern tree adjust_result_of_qualified_name_lookup
+                                               (tree, tree, tree);
+extern tree copied_binfo                       (tree, tree);
+extern tree original_binfo                     (tree, tree);
+extern int shared_member_p                     (tree);
+
+
+/* The representation of a deferred access check.  */
+
+typedef struct deferred_access_check GTY(())
+{
+  /* The base class in which the declaration is referenced. */
+  tree binfo;
+  /* The declaration whose access must be checked.  */
+  tree decl;
+  /* The declaration that should be used in the error message.  */
+  tree diag_decl;
+} deferred_access_check;
+DEF_VEC_O(deferred_access_check);
+DEF_VEC_ALLOC_O(deferred_access_check,gc);
+
+/* in semantics.c */
+extern void push_deferring_access_checks       (deferring_kind);
+extern void resume_deferring_access_checks     (void);
+extern void stop_deferring_access_checks       (void);
+extern void pop_deferring_access_checks                (void);
+extern VEC (deferred_access_check,gc)* get_deferred_access_checks              (void);
+extern void pop_to_parent_deferring_access_checks (void);
+extern void perform_access_checks              (VEC (deferred_access_check,gc)*);
+extern void perform_deferred_access_checks     (void);
+extern void perform_or_defer_access_check      (tree, tree, tree);
+extern int stmts_are_full_exprs_p              (void);
+extern void init_cp_semantics                  (void);
+extern tree do_poplevel                                (tree);
+extern void add_decl_expr                      (tree);
+extern tree finish_expr_stmt                   (tree);
+extern tree begin_if_stmt                      (void);
+extern void finish_if_stmt_cond                        (tree, tree);
+extern tree finish_then_clause                 (tree);
+extern void begin_else_clause                  (tree);
+extern void finish_else_clause                 (tree);
+extern void finish_if_stmt                     (tree);
+extern tree begin_while_stmt                   (void);
+extern void finish_while_stmt_cond             (tree, tree);
+extern void finish_while_stmt                  (tree);
+extern tree begin_do_stmt                      (void);
+extern void finish_do_body                     (tree);
+extern void finish_do_stmt                     (tree, tree);
+extern tree finish_return_stmt                 (tree);
+extern tree begin_for_stmt                     (void);
+extern void finish_for_init_stmt               (tree);
+extern void finish_for_cond                    (tree, tree);
+extern void finish_for_expr                    (tree, tree);
+extern void finish_for_stmt                    (tree);
+extern tree finish_break_stmt                  (void);
+extern tree finish_continue_stmt               (void);
+extern tree begin_switch_stmt                  (void);
+extern void finish_switch_cond                 (tree, tree);
+extern void finish_switch_stmt                 (tree);
+extern tree finish_case_label                  (tree, tree);
+extern tree finish_goto_stmt                   (tree);
+extern tree begin_try_block                    (void);
+extern void finish_try_block                   (tree);
+extern tree begin_eh_spec_block                        (void);
+extern void finish_eh_spec_block               (tree, tree);
+extern void finish_handler_sequence            (tree);
+extern tree begin_function_try_block           (tree *);
+extern void finish_function_try_block          (tree);
+extern void finish_function_handler_sequence    (tree, tree);
+extern void finish_cleanup_try_block           (tree);
+extern tree begin_handler                      (void);
+extern void finish_handler_parms               (tree, tree);
+extern void finish_handler                     (tree);
+extern void finish_cleanup                     (tree, tree);
+
+enum {
+  BCS_NO_SCOPE = 1,
+  BCS_TRY_BLOCK = 2,
+  BCS_FN_BODY = 4
+};
+extern tree begin_compound_stmt                        (unsigned int);
+
+extern void finish_compound_stmt               (tree);
+extern tree finish_asm_stmt                    (int, tree, tree, tree, tree);
+extern tree finish_label_stmt                  (tree);
+extern void finish_label_decl                  (tree);
+extern tree finish_parenthesized_expr          (tree);
+extern tree finish_non_static_data_member       (tree, tree, tree);
+extern tree begin_stmt_expr                    (void);
+extern tree finish_stmt_expr_expr              (tree, tree);
+extern tree finish_stmt_expr                   (tree, bool);
+extern tree stmt_expr_value_expr               (tree);
+extern tree perform_koenig_lookup              (tree, tree);
+extern tree finish_call_expr                   (tree, tree, bool, bool, 
+                                                tsubst_flags_t);
+extern tree finish_increment_expr              (tree, enum tree_code);
+extern tree finish_this_expr                   (void);
+extern tree finish_pseudo_destructor_expr       (tree, tree, tree);
+extern tree finish_unary_op_expr               (enum tree_code, tree);
+extern tree finish_compound_literal            (tree, tree);
+extern tree finish_fname                       (tree);
+extern void finish_translation_unit            (void);
+extern tree finish_template_type_parm          (tree, tree);
+extern tree finish_template_template_parm       (tree, tree);
+extern tree begin_class_definition             (tree, tree);
+extern void finish_template_decl               (tree);
+extern tree finish_template_type               (tree, tree, int);
+extern tree finish_base_specifier              (tree, tree, bool);
+extern void finish_member_declaration          (tree);
+extern void qualified_name_lookup_error                (tree, tree, tree,
+                                                location_t);
+extern void check_template_keyword             (tree);
+extern tree finish_id_expression               (tree, tree, tree,
+                                                cp_id_kind *,
+                                                bool, bool, bool *,
+                                                bool, bool, bool, bool,
+                                                const char **,
+                                                 location_t);
+extern tree finish_typeof                      (tree);
+extern tree finish_offsetof                    (tree);
+extern void finish_decl_cleanup                        (tree, tree);
+extern void finish_eh_cleanup                  (tree);
+extern void emit_associated_thunks             (tree);
+extern void finish_mem_initializers            (tree);
+extern tree check_template_template_default_arg (tree);
+extern void expand_or_defer_fn                 (tree);
+extern void check_accessibility_of_qualified_id (tree, tree, tree);
+extern tree finish_qualified_id_expr           (tree, tree, bool, bool,
+                                                bool, bool);
+extern void simplify_aggr_init_expr            (tree *);
+extern void finalize_nrv                       (tree *, tree, tree);
+extern void note_decl_for_pch                  (tree);
+extern tree finish_omp_clauses                 (tree);
+extern void finish_omp_threadprivate           (tree);
+extern tree begin_omp_structured_block         (void);
+extern tree finish_omp_structured_block                (tree);
+extern tree begin_omp_parallel                 (void);
+extern tree finish_omp_parallel                        (tree, tree);
+extern tree begin_omp_task                     (void);
+extern tree finish_omp_task                    (tree, tree);
+extern tree finish_omp_for                     (location_t, tree, tree,
+                                                tree, tree, tree, tree, tree);
+extern void finish_omp_atomic                  (enum tree_code, tree, tree);
+extern void finish_omp_barrier                 (void);
+extern void finish_omp_flush                   (void);
+extern void finish_omp_taskwait                        (void);
+extern enum omp_clause_default_kind cxx_omp_predetermined_sharing (tree);
+extern tree cxx_omp_clause_default_ctor                (tree, tree, tree);
+extern tree cxx_omp_clause_copy_ctor           (tree, tree, tree);
+extern tree cxx_omp_clause_assign_op           (tree, tree, tree);
+extern tree cxx_omp_clause_dtor                        (tree, tree);
+extern void cxx_omp_finish_clause              (tree);
+extern bool cxx_omp_privatize_by_reference     (const_tree);
+extern bool cxx_omp_create_clause_info         (tree, tree, bool, bool, bool);
+extern tree baselink_for_fns                    (tree);
+extern void finish_static_assert                (tree, tree, location_t,
+                                                 bool);
+extern tree describable_type                   (tree);
+extern tree finish_decltype_type                (tree, bool);
+extern tree finish_trait_expr                  (enum cp_trait_kind, tree, tree);
+
+/* in tree.c */
+extern void lang_check_failed                  (const char *, int,
+                                                const char *) ATTRIBUTE_NORETURN;
+extern tree stabilize_expr                     (tree, tree *);
+extern void stabilize_call                     (tree, tree *);
+extern void stabilize_aggr_init                        (tree, tree *);
+extern bool stabilize_init                     (tree, tree *);
+extern tree add_stmt_to_compound               (tree, tree);
+extern tree cxx_maybe_build_cleanup            (tree);
+extern void init_tree                          (void);
+extern int pod_type_p                          (const_tree);
+extern bool class_tmpl_impl_spec_p             (const_tree);
+extern int zero_init_p                         (const_tree);
+extern tree canonical_type_variant             (tree);
+extern tree copy_binfo                         (tree, tree, tree,
+                                                tree *, int);
+extern int member_p                            (const_tree);
+extern cp_lvalue_kind real_lvalue_p            (tree);
+extern bool builtin_valid_in_constant_expr_p    (const_tree);
+extern tree build_min                          (enum tree_code, tree, ...);
+extern tree build_min_nt                       (enum tree_code, ...);
+extern tree build_min_non_dep                  (enum tree_code, tree, ...);
+extern tree build_min_non_dep_call_list                (tree, tree, tree);
+extern tree build_cplus_new                    (tree, tree);
+extern tree build_aggr_init_expr               (tree, tree);
+extern tree get_target_expr                    (tree);
+extern tree build_cplus_array_type             (tree, tree);
+extern tree build_array_of_n_type              (tree, int);
+extern tree hash_tree_cons                     (tree, tree, tree);
+extern tree hash_tree_chain                    (tree, tree);
+extern tree build_qualified_name               (tree, tree, tree, bool);
+extern int is_overloaded_fn                    (tree);
+extern tree get_first_fn                       (tree);
+extern tree ovl_cons                           (tree, tree);
+extern tree build_overload                     (tree, tree);
+extern const char *cxx_printable_name          (tree, int);
+extern tree build_exception_variant            (tree, tree);
+extern tree bind_template_template_parm                (tree, tree);
+extern tree array_type_nelts_total             (tree);
+extern tree array_type_nelts_top               (tree);
+extern tree break_out_target_exprs             (tree);
+extern tree get_type_decl                      (tree);
+extern tree decl_namespace_context             (tree);
+extern bool decl_anon_ns_mem_p                 (const_tree);
+extern tree lvalue_type                                (tree);
+extern tree error_type                         (tree);
+extern int varargs_function_p                  (const_tree);
+extern bool really_overloaded_fn               (tree);
+extern bool cp_tree_equal                      (tree, tree);
+extern tree no_linkage_check                   (tree, bool);
+extern void debug_binfo                                (tree);
+extern tree build_dummy_object                 (tree);
+extern tree maybe_dummy_object                 (tree, tree *);
+extern int is_dummy_object                     (const_tree);
+extern const struct attribute_spec cxx_attribute_table[];
+extern tree make_ptrmem_cst                    (tree, tree);
+extern tree cp_build_type_attribute_variant     (tree, tree);
+extern tree cp_build_reference_type            (tree, bool);
+extern tree cp_build_qualified_type_real       (tree, int, tsubst_flags_t);
+#define cp_build_qualified_type(TYPE, QUALS) \
+  cp_build_qualified_type_real ((TYPE), (QUALS), tf_warning_or_error)
+extern special_function_kind special_function_p (const_tree);
+extern int count_trees                         (tree);
+extern int char_type_p                         (tree);
+extern void verify_stmt_tree                   (tree);
+extern linkage_kind decl_linkage               (tree);
+extern tree cp_walk_subtrees (tree*, int*, walk_tree_fn,
+                             void*, struct pointer_set_t*);
+#define cp_walk_tree(a,b,c,d) \
+       walk_tree_1 (a, b, c, d, cp_walk_subtrees)
+#define cp_walk_tree_without_duplicates(a,b,c) \
+       walk_tree_without_duplicates_1 (a, b, c, cp_walk_subtrees)
+extern tree fold_if_not_in_template            (tree);
+extern tree rvalue                             (tree);
+extern tree convert_bitfield_to_declared_type   (tree);
+extern tree cp_save_expr                       (tree);
+extern bool cast_valid_in_integral_constant_expression_p (tree);
+extern bool cxx_type_hash_eq                   (const_tree, const_tree);
+
+/* in typeck.c */
+extern int string_conv_p                       (const_tree, const_tree, int);
+extern tree cp_truthvalue_conversion           (tree);
+extern tree condition_conversion               (tree);
+extern tree require_complete_type              (tree);
+extern tree complete_type                      (tree);
+extern tree complete_type_or_else              (tree, tree);
+extern int type_unknown_p                      (const_tree);
+extern bool comp_except_specs                  (const_tree, const_tree, bool);
+extern bool comptypes                          (tree, tree, int);
+extern bool compparms                          (const_tree, const_tree);
+extern int comp_cv_qualification               (const_tree, const_tree);
+extern int comp_cv_qual_signature              (tree, tree);
+extern tree cxx_sizeof_or_alignof_expr         (tree, enum tree_code, bool);
+extern tree cxx_sizeof_or_alignof_type         (tree, enum tree_code, bool);
+extern tree cxx_sizeof_nowarn                   (tree);
+extern tree is_bitfield_expr_with_lowered_type  (const_tree);
+extern tree unlowered_expr_type                 (const_tree);
+extern tree decay_conversion                   (tree);
+extern tree build_class_member_access_expr      (tree, tree, tree, bool,
+                                                tsubst_flags_t);
+extern tree finish_class_member_access_expr     (tree, tree, bool, 
+                                                tsubst_flags_t);
+extern tree build_x_indirect_ref               (tree, const char *, 
+                                                 tsubst_flags_t);
+extern tree cp_build_indirect_ref              (tree, const char *,
+                                                 tsubst_flags_t);
+extern tree build_array_ref                    (tree, tree, location_t);
+extern tree get_member_function_from_ptrfunc   (tree *, tree);
+extern tree cp_build_function_call              (tree, tree, tsubst_flags_t);
+extern tree build_x_binary_op                  (enum tree_code, tree,
+                                                enum tree_code, tree,
+                                                enum tree_code, bool *,
+                                                tsubst_flags_t);
+extern tree build_x_array_ref                  (tree, tree, tsubst_flags_t);
+extern tree build_x_unary_op                   (enum tree_code, tree,
+                                                 tsubst_flags_t);
+extern tree cp_build_unary_op                   (enum tree_code, tree, int, 
+                                                 tsubst_flags_t);
+extern tree unary_complex_lvalue               (enum tree_code, tree);
+extern tree build_x_conditional_expr           (tree, tree, tree, 
+                                                 tsubst_flags_t);
+extern tree build_x_compound_expr_from_list    (tree, const char *);
+extern tree build_x_compound_expr              (tree, tree, tsubst_flags_t);
+extern tree build_compound_expr                 (tree, tree);
+extern tree cp_build_compound_expr             (tree, tree, tsubst_flags_t);
+extern tree build_static_cast                  (tree, tree, tsubst_flags_t);
+extern tree build_reinterpret_cast             (tree, tree, tsubst_flags_t);
+extern tree build_const_cast                   (tree, tree, tsubst_flags_t);
+extern tree build_c_cast                       (tree, tree);
+extern tree cp_build_c_cast                    (tree, tree, tsubst_flags_t);
+extern tree build_x_modify_expr                        (tree, enum tree_code, tree,
+                                                tsubst_flags_t);
+extern tree cp_build_modify_expr               (tree, enum tree_code, tree,
+                                                tsubst_flags_t);
+extern tree convert_for_initialization         (tree, tree, tree, int,
+                                                const char *, tree, int,
+                                                 tsubst_flags_t);
+extern int comp_ptr_ttypes                     (tree, tree);
+extern bool comp_ptr_ttypes_const              (tree, tree);
+extern int ptr_reasonably_similar              (const_tree, const_tree);
+extern tree build_ptrmemfunc                   (tree, tree, int, bool);
+extern int cp_type_quals                       (const_tree);
+extern bool cp_type_readonly                   (const_tree);
+extern bool cp_has_mutable_p                   (const_tree);
+extern bool at_least_as_qualified_p            (const_tree, const_tree);
+extern void cp_apply_type_quals_to_decl                (int, tree);
+extern tree build_ptrmemfunc1                  (tree, tree, tree);
+extern void expand_ptrmemfunc_cst              (tree, tree *, tree *);
+extern tree type_after_usual_arithmetic_conversions (tree, tree);
+extern tree common_pointer_type                 (tree, tree);
+extern tree composite_pointer_type             (tree, tree, tree, tree,
+                                                const char*, tsubst_flags_t);
+extern tree merge_types                                (tree, tree);
+extern tree check_return_expr                  (tree, bool *);
+extern tree cp_build_binary_op                  (location_t,
+                                                enum tree_code, tree, tree,
+                                                tsubst_flags_t);
+#define cxx_sizeof(T)  cxx_sizeof_or_alignof_type (T, SIZEOF_EXPR, true)
+extern tree build_ptrmemfunc_access_expr       (tree, tree);
+extern tree build_address                      (tree);
+extern tree build_nop                          (tree, tree);
+extern tree non_reference                      (tree);
+extern tree lookup_anon_field                  (tree, tree);
+extern bool invalid_nonstatic_memfn_p          (const_tree, tsubst_flags_t);
+extern tree convert_member_func_to_ptr         (tree, tree);
+extern tree convert_ptrmem                     (tree, tree, bool, bool);
+extern int lvalue_or_else                      (tree, enum lvalue_use,
+                                                 tsubst_flags_t);
+extern int lvalue_p                            (tree);
+
+/* in typeck2.c */
+extern void require_complete_eh_spec_types     (tree, tree);
+extern void cxx_incomplete_type_diagnostic     (const_tree, const_tree, diagnostic_t);
+#undef cxx_incomplete_type_error
+extern void cxx_incomplete_type_error          (const_tree, const_tree);
+#define cxx_incomplete_type_error(V,T) \
+  (cxx_incomplete_type_diagnostic ((V), (T), DK_ERROR))
+extern tree error_not_base_type                        (tree, tree);
+extern tree binfo_or_else                      (tree, tree);
+extern void readonly_error                     (tree, const char *);
+extern void complete_type_check_abstract       (tree);
+extern int abstract_virtuals_error             (tree, tree);
+
+extern tree store_init_value                   (tree, tree);
+extern void check_narrowing                    (tree, tree);
+extern tree digest_init                                (tree, tree);
+extern tree build_scoped_ref                   (tree, tree, tree *);
+extern tree build_x_arrow                      (tree);
+extern tree build_m_component_ref              (tree, tree);
+extern tree build_functional_cast              (tree, tree, tsubst_flags_t);
+extern tree add_exception_specifier            (tree, tree, int);
+extern tree merge_exception_specifiers         (tree, tree);
+
+/* in mangle.c */
+extern void init_mangle                                (void);
+extern void mangle_decl                                (tree);
+extern const char *mangle_type_string          (tree);
+extern tree mangle_typeinfo_for_type           (tree);
+extern tree mangle_typeinfo_string_for_type    (tree);
+extern tree mangle_vtbl_for_type               (tree);
+extern tree mangle_vtt_for_type                        (tree);
+extern tree mangle_ctor_vtbl_for_type          (tree, tree);
+extern tree mangle_thunk                       (tree, int, tree, tree);
+extern tree mangle_conv_op_name_for_type       (tree);
+extern tree mangle_guard_variable              (tree);
+extern tree mangle_ref_init_variable           (tree);
+extern tree mangle_compound_literal            (void);
+
+/* in dump.c */
+extern bool cp_dump_tree                       (void *, tree);
+
+/* In cp/cp-objcp-common.c.  */
+
+extern alias_set_type cxx_get_alias_set                (tree);
+extern bool cxx_warn_unused_global_decl                (const_tree);
+extern tree cp_expr_size                       (const_tree);
+extern size_t cp_tree_size                     (enum tree_code);
+extern bool cp_var_mod_type_p                  (tree, tree);
+extern void cxx_initialize_diagnostics         (struct diagnostic_context *);
+extern int cxx_types_compatible_p              (tree, tree);
+extern void init_shadowed_var_for_decl         (void);
+extern tree cxx_staticp                         (tree);
+
+/* LIPO support.  */
+extern bool cp_is_compiler_generated_type        (tree);
+extern void cp_clear_global_name_bindings       (tree);
+extern bool
+cp_is_non_sharable_global_decl                  (tree, void *);
+extern void cp_lipo_dup_lang_type               (tree, tree);
+extern void cp_lipo_copy_lang_type              (tree, tree);
+extern int cp_get_lang_decl_size                (tree);
+extern int cp_cmp_lang_type                     (tree, tree);
+extern void cp_add_built_in_decl                (tree);
+extern void cp_save_built_in_decl_pre_parsing (void);
+extern void cp_restore_built_in_decl_pre_parsing (void);
+extern void cp_save_built_in_decl_post_parsing (void);
+extern void cp_restore_built_in_decl_post_parsing (void);
+
+
+/* in cp-gimplify.c */
+extern int cp_gimplify_expr                    (tree *, gimple_seq *,
+                                                gimple_seq *);
+extern void cp_genericize                      (tree);
+
+/* -- end of C++ */
+
+#endif /* ! GCC_CP_TREE_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cp/cxx-pretty-print.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cp/cxx-pretty-print.h
new file mode 100644 (file)
index 0000000..e7c4220
--- /dev/null
@@ -0,0 +1,76 @@
+/* Interface for the GNU C++ pretty-printer.
+   Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+   Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_CXX_PRETTY_PRINT_H
+#define GCC_CXX_PRETTY_PRINT_H
+
+#include "c-pretty-print.h"
+
+#undef pp_c_base
+#define pp_c_base(PP) (&(PP)->c_base)
+
+typedef enum
+{
+  /* Ask for a qualified-id.  */
+  pp_cxx_flag_default_argument = 1 << pp_c_flag_last_bit
+
+} cxx_pretty_printer_flags;
+
+typedef struct
+{
+  c_pretty_printer c_base;
+  /* This is the enclosing scope of the entity being pretty-printed.  */
+  tree enclosing_scope;
+} cxx_pretty_printer;
+
+#define pp_cxx_cv_qualifier_seq(PP, T)   \
+   pp_c_type_qualifier_list (pp_c_base (PP), T)
+
+#define pp_cxx_whitespace(PP)          pp_c_whitespace (pp_c_base (PP))
+#define pp_cxx_left_paren(PP)          pp_c_left_paren (pp_c_base (PP))
+#define pp_cxx_right_paren(PP)         pp_c_right_paren (pp_c_base (PP))
+#define pp_cxx_left_brace(PP)          pp_c_left_brace (pp_c_base (PP))
+#define pp_cxx_right_brace(PP)         pp_c_right_brace (pp_c_base (PP))
+#define pp_cxx_left_bracket(PP)                pp_c_left_bracket (pp_c_base (PP))
+#define pp_cxx_right_bracket(PP)       pp_c_right_bracket (pp_c_base (PP))
+#define pp_cxx_dot(PP)                 pp_c_dot (pp_c_base (PP))
+#define pp_cxx_ampersand(PP)           pp_c_ampersand (pp_c_base (PP))
+#define pp_cxx_star(PP)                        pp_c_star (pp_c_base (PP))
+#define pp_cxx_arrow(PP)               pp_c_arrow (pp_c_base (PP))
+#define pp_cxx_semicolon(PP)           pp_c_semicolon (pp_c_base (PP))
+#define pp_cxx_complement(PP)          pp_c_complement (pp_c_base (PP))
+
+#define pp_cxx_identifier(PP, I)       pp_c_identifier (pp_c_base (PP), I)
+#define pp_cxx_tree_identifier(PP, T) \
+  pp_c_tree_identifier (pp_c_base (PP), T)
+
+void pp_cxx_pretty_printer_init (cxx_pretty_printer *);
+void pp_cxx_begin_template_argument_list (cxx_pretty_printer *);
+void pp_cxx_end_template_argument_list (cxx_pretty_printer *);
+void pp_cxx_colon_colon (cxx_pretty_printer *);
+void pp_cxx_separate_with (cxx_pretty_printer *, int);
+
+void pp_cxx_declaration (cxx_pretty_printer *, tree);
+void pp_cxx_canonical_template_parameter (cxx_pretty_printer *, tree);
+void pp_cxx_trait_expression (cxx_pretty_printer *, tree);
+void pp_cxx_va_arg_expression (cxx_pretty_printer *, tree);
+void pp_cxx_offsetof_expression (cxx_pretty_printer *, tree);
+
+#endif /* GCC_CXX_PRETTY_PRINT_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cp/name-lookup.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cp/name-lookup.h
new file mode 100644 (file)
index 0000000..3e3a33f
--- /dev/null
@@ -0,0 +1,370 @@
+/* Declarations for C++ name lookup routines.
+   Copyright (C) 2003, 2004, 2005, 2007, 2008  Free Software Foundation, Inc.
+   Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_CP_NAME_LOOKUP_H
+#define GCC_CP_NAME_LOOKUP_H
+
+#include "c-common.h"
+
+/* The type of dictionary used to map names to types declared at
+   a given scope.  */
+typedef struct binding_table_s *binding_table;
+typedef struct binding_entry_s *binding_entry;
+
+/* The type of a routine repeatedly called by binding_table_foreach.  */
+typedef void (*bt_foreach_proc) (binding_entry, void *);
+
+struct binding_entry_s GTY(())
+{
+  binding_entry chain;
+  tree name;
+  tree type;
+};
+
+/* These macros indicate the initial chains count for binding_table.  */
+#define SCOPE_DEFAULT_HT_SIZE          (1 << 3)
+#define CLASS_SCOPE_HT_SIZE            (1 << 3)
+#define NAMESPACE_ORDINARY_HT_SIZE     (1 << 5)
+#define NAMESPACE_STD_HT_SIZE          (1 << 8)
+#define GLOBAL_SCOPE_HT_SIZE           (1 << 8)
+
+extern void binding_table_foreach (binding_table, bt_foreach_proc, void *);
+extern binding_entry binding_table_find (binding_table, tree);
+\f
+/* Datatype that represents binding established by a declaration between
+   a name and a C++ entity.  */
+typedef struct cxx_binding cxx_binding;
+
+/* The datatype used to implement C++ scope.  */
+typedef struct cp_binding_level cxx_scope;
+
+/* Nonzero if this binding is for a local scope, as opposed to a class
+   or namespace scope.  */
+#define LOCAL_BINDING_P(NODE) ((NODE)->is_local)
+
+/* True if NODE->value is from a base class of the class which is
+   currently being defined.  */
+#define INHERITED_VALUE_BINDING_P(NODE) ((NODE)->value_is_inherited)
+
+struct cxx_binding GTY(())
+{
+  /* Link to chain together various bindings for this name.  */
+  cxx_binding *previous;
+  /* The non-type entity this name is bound to.  */
+  tree value;
+  /* The type entity this name is bound to.  */
+  tree type;
+  /* The scope at which this binding was made.  */
+  cxx_scope *scope;
+  unsigned value_is_inherited : 1;
+  unsigned is_local : 1;
+};
+
+/* Datatype used to temporarily save C++ bindings (for implicit
+   instantiations purposes and like).  Implemented in decl.c.  */
+typedef struct cxx_saved_binding GTY(())
+{
+  /* The name of the current binding.  */
+  tree identifier;
+  /* The binding we're saving.  */
+  cxx_binding *binding;
+  tree real_type_value;
+} cxx_saved_binding;
+
+DEF_VEC_O(cxx_saved_binding);
+DEF_VEC_ALLOC_O(cxx_saved_binding,gc);
+
+extern tree identifier_type_value (tree);
+extern void set_identifier_type_value (tree, tree);
+extern void pop_binding (tree, tree);
+extern void pop_global_binding (tree, cxx_binding*);
+extern tree constructor_name (tree);
+extern bool constructor_name_p (tree, tree);
+\f
+/* The kinds of scopes we recognize.  */
+typedef enum scope_kind {
+  sk_block = 0,      /* An ordinary block scope.  This enumerator must
+                       have the value zero because "cp_binding_level"
+                       is initialized by using "memset" to set the
+                       contents to zero, and the default scope kind
+                       is "sk_block".  */
+  sk_cleanup,       /* A scope for (pseudo-)scope for cleanup.  It is
+                       pseudo in that it is transparent to name lookup
+                       activities.  */
+  sk_try,           /* A try-block.  */
+  sk_catch,         /* A catch-block.  */
+  sk_for,           /* The scope of the variable declared in a
+                       for-init-statement.  */
+  sk_function_parms, /* The scope containing function parameters.  */
+  sk_class,         /* The scope containing the members of a class.  */
+  sk_scoped_enum,    /* The scope containing the enumertors of a C++0x
+                        scoped enumeration.  */
+  sk_namespace,             /* The scope containing the members of a
+                       namespace, including the global scope.  */
+  sk_template_parms, /* A scope for template parameters.  */
+  sk_template_spec,  /* Like sk_template_parms, but for an explicit
+                       specialization.  Since, by definition, an
+                       explicit specialization is introduced by
+                       "template <>", this scope is always empty.  */
+  sk_omp            /* An OpenMP structured block.  */
+} scope_kind;
+
+/* The scope where the class/struct/union/enum tag applies.  */
+typedef enum tag_scope {
+  ts_current = 0,      /* Current scope only.  This is for the
+                            class-key identifier;
+                          case mentioned in [basic.lookup.elab]/2,
+                          or the class/enum definition
+                            class-key identifier { ... };  */
+  ts_global = 1,       /* All scopes.  This is the 3.4.1
+                          [basic.lookup.unqual] lookup mentioned
+                          in [basic.lookup.elab]/2.  */
+  ts_within_enclosing_non_class = 2    /* Search within enclosing non-class
+                                          only, for friend class lookup
+                                          according to [namespace.memdef]/3
+                                          and [class.friend]/9.  */
+} tag_scope;
+
+typedef struct cp_class_binding GTY(())
+{
+  cxx_binding base;
+  /* The bound name.  */
+  tree identifier;
+} cp_class_binding;
+
+DEF_VEC_O(cp_class_binding);
+DEF_VEC_ALLOC_O(cp_class_binding,gc);
+
+/* For each binding contour we allocate a binding_level structure
+   which records the names defined in that contour.
+   Contours include:
+    0) the global one
+    1) one for each function definition,
+       where internal declarations of the parameters appear.
+    2) one for each compound statement,
+       to record its declarations.
+
+   The current meaning of a name can be found by searching the levels
+   from the current one out to the global one.
+
+   Off to the side, may be the class_binding_level.  This exists only
+   to catch class-local declarations.  It is otherwise nonexistent.
+
+   Also there may be binding levels that catch cleanups that must be
+   run when exceptions occur.  Thus, to see whether a name is bound in
+   the current scope, it is not enough to look in the
+   CURRENT_BINDING_LEVEL.  You should use lookup_name_current_level
+   instead.  */
+
+/* Note that the information in the `names' component of the global contour
+   is duplicated in the IDENTIFIER_GLOBAL_VALUEs of all identifiers.  */
+
+struct cp_binding_level GTY(())
+  {
+    /* A chain of _DECL nodes for all variables, constants, functions,
+       and typedef types.  These are in the reverse of the order
+       supplied.  There may be OVERLOADs on this list, too, but they
+       are wrapped in TREE_LISTs; the TREE_VALUE is the OVERLOAD.  */
+    tree names;
+
+    /* Count of elements in names chain.  */
+    size_t names_size;
+
+    /* A chain of NAMESPACE_DECL nodes.  */
+    tree namespaces;
+
+    /* An array of static functions and variables (for namespaces only) */
+    VEC(tree,gc) *static_decls;
+
+    /* A list of USING_DECL nodes.  */
+    tree usings;
+
+    /* A list of used namespaces. PURPOSE is the namespace,
+       VALUE the common ancestor with this binding_level's namespace.  */
+    tree using_directives;
+
+    /* For the binding level corresponding to a class, the entities
+       declared in the class or its base classes.  */
+    VEC(cp_class_binding,gc) *class_shadowed;
+
+    /* Similar to class_shadowed, but for IDENTIFIER_TYPE_VALUE, and
+       is used for all binding levels. The TREE_PURPOSE is the name of
+       the entity, the TREE_TYPE is the associated type.  In addition
+       the TREE_VALUE is the IDENTIFIER_TYPE_VALUE before we entered
+       the class.  */
+    tree type_shadowed;
+
+    /* A TREE_LIST.  Each TREE_VALUE is the LABEL_DECL for a local
+       label in this scope.  The TREE_PURPOSE is the previous value of
+       the IDENTIFIER_LABEL VALUE.  */
+    tree shadowed_labels;
+
+    /* For each level (except not the global one),
+       a chain of BLOCK nodes for all the levels
+       that were entered and exited one level down.  */
+    tree blocks;
+
+    /* The entity (namespace, class, function) the scope of which this
+       binding contour corresponds to.  Otherwise NULL.  */
+    tree this_entity;
+
+    /* The binding level which this one is contained in (inherits from).  */
+    struct cp_binding_level *level_chain;
+
+    /* List of VAR_DECLS saved from a previous for statement.
+       These would be dead in ISO-conforming code, but might
+       be referenced in ARM-era code.  These are stored in a
+       TREE_LIST; the TREE_VALUE is the actual declaration.  */
+    tree dead_vars_from_for;
+
+    /* STATEMENT_LIST for statements in this binding contour.
+       Only used at present for SK_CLEANUP temporary bindings.  */
+    tree statement_list;
+
+    /* Binding depth at which this level began.  */
+    int binding_depth;
+
+    /* The kind of scope that this object represents.  However, a
+       SK_TEMPLATE_SPEC scope is represented with KIND set to
+       SK_TEMPLATE_PARMS and EXPLICIT_SPEC_P set to true.  */
+    ENUM_BITFIELD (scope_kind) kind : 4;
+
+    /* True if this scope is an SK_TEMPLATE_SPEC scope.  This field is
+       only valid if KIND == SK_TEMPLATE_PARMS.  */
+    BOOL_BITFIELD explicit_spec_p : 1;
+
+    /* true means make a BLOCK for this level regardless of all else.  */
+    unsigned keep : 1;
+
+    /* Nonzero if this level can safely have additional
+       cleanup-needing variables added to it.  */
+    unsigned more_cleanups_ok : 1;
+    unsigned have_cleanups : 1;
+
+    /* 24 bits left to fill a 32-bit word.  */
+  };
+
+/* The binding level currently in effect.  */
+
+#define current_binding_level                  \
+  (*(cfun && cp_function_chain->bindings       \
+   ? &cp_function_chain->bindings              \
+   : &scope_chain->bindings))
+
+/* The binding level of the current class, if any.  */
+
+#define class_binding_level scope_chain->class_bindings
+
+/* The tree node representing the global scope.  */
+extern GTY(()) tree global_namespace;
+extern GTY(()) tree global_scope_name;
+
+/* Indicates that there is a type value in some namespace, although
+   that is not necessarily in scope at the moment.  */
+
+extern GTY(()) tree global_type_node;
+
+/* True if SCOPE designates the global scope binding contour.  */
+#define global_scope_p(SCOPE) \
+  ((SCOPE) == NAMESPACE_LEVEL (global_namespace))
+
+extern cxx_scope *leave_scope (void);
+extern bool kept_level_p (void);
+extern int global_bindings_p (void);
+extern bool toplevel_bindings_p        (void);
+extern bool namespace_bindings_p (void);
+extern bool template_parm_scope_p (void);
+extern scope_kind innermost_scope_kind (void);
+extern cxx_scope *begin_scope (scope_kind, tree);
+extern void print_binding_stack        (void);
+extern void push_to_top_level (void);
+extern void pop_from_top_level (void);
+extern void pop_everything (void);
+extern void keep_next_level (bool);
+extern bool is_ancestor (tree, tree);
+extern tree push_scope (tree);
+extern void pop_scope (tree);
+extern tree push_inner_scope (tree);
+extern void pop_inner_scope (tree, tree);
+extern void push_binding_level (struct cp_binding_level *);
+\f
+extern void push_namespace (tree);
+extern void pop_namespace (void);
+extern void push_nested_namespace (tree);
+extern void pop_nested_namespace (tree);
+extern bool handle_namespace_attrs (tree, tree);
+extern void pushlevel_class (void);
+extern void poplevel_class (void);
+extern tree pushdecl_with_scope (tree, cxx_scope *, bool);
+extern tree lookup_name_prefer_type (tree, int);
+extern tree lookup_name_real (tree, int, int, bool, int, int);
+extern tree lookup_type_scope (tree, tag_scope);
+extern tree namespace_binding (tree, tree);
+extern void set_namespace_binding (tree, tree, tree);
+extern bool hidden_name_p (tree);
+extern tree remove_hidden_names (tree);
+extern tree lookup_qualified_name (tree, tree, bool, bool);
+extern tree lookup_name_nonclass (tree);
+extern tree lookup_name_innermost_nonclass_level (tree);
+extern tree lookup_function_nonclass (tree, tree, bool);
+extern void push_local_binding (tree, tree, int);
+extern bool pushdecl_class_level (tree);
+extern tree pushdecl_namespace_level (tree, bool);
+extern bool push_class_level_binding (tree, tree);
+extern tree getdecls (void);
+extern tree cp_namespace_decls (tree);
+extern void set_decl_namespace (tree, tree, bool);
+extern void push_decl_namespace (tree);
+extern void pop_decl_namespace (void);
+extern void do_namespace_alias (tree, tree);
+extern void do_toplevel_using_decl (tree, tree, tree);
+extern void do_local_using_decl (tree, tree, tree);
+extern tree do_class_using_decl (tree, tree);
+extern void do_using_directive (tree);
+extern tree lookup_arg_dependent (tree, tree, tree);
+extern bool is_associated_namespace (tree, tree);
+extern void parse_using_directive (tree, tree);
+extern tree innermost_non_namespace_value (tree);
+extern cxx_binding *outer_binding (tree, cxx_binding *, bool);
+extern void cp_emit_debug_info_for_using (tree, tree);
+
+/* Set *DECL to the (non-hidden) declaration for ID at global scope,
+   if present and return true; otherwise return false.  */
+
+static inline bool
+get_global_value_if_present (tree id, tree *decl)
+{
+  tree global_value = namespace_binding (id, global_namespace);
+  if (global_value)
+    *decl = global_value;
+  return global_value != NULL;
+}
+
+/* True is the binding of IDENTIFIER at global scope names a type.  */
+
+static inline bool
+is_typename_at_global_scope (tree id)
+{
+  tree global_value = namespace_binding (id, global_namespace);
+
+  return global_value && TREE_CODE (global_value) == TYPE_DECL;
+}
+
+#endif /* GCC_CP_NAME_LOOKUP_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cpplib.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/cpplib.h
new file mode 100644 (file)
index 0000000..a29dbea
--- /dev/null
@@ -0,0 +1,946 @@
+/* Definitions for CPP library.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004, 2005, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+   Written by Per Bothner, 1994-95.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 3, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.
+
+ In other words, you are welcome to use, share and improve this program.
+ You are forbidden to forbid anyone else to use, share and improve
+ what you give them.   Help stamp out software-hoarding!  */
+#ifndef LIBCPP_CPPLIB_H
+#define LIBCPP_CPPLIB_H
+
+#include <sys/types.h>
+#include "symtab.h"
+#include "line-map.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct cpp_reader cpp_reader;
+typedef struct cpp_buffer cpp_buffer;
+typedef struct cpp_options cpp_options;
+typedef struct cpp_token cpp_token;
+typedef struct cpp_string cpp_string;
+typedef struct cpp_hashnode cpp_hashnode;
+typedef struct cpp_macro cpp_macro;
+typedef struct cpp_callbacks cpp_callbacks;
+typedef struct cpp_dir cpp_dir;
+
+struct answer;
+struct _cpp_file;
+
+/* The first three groups, apart from '=', can appear in preprocessor
+   expressions (+= and -= are used to indicate unary + and - resp.).
+   This allows a lookup table to be implemented in _cpp_parse_expr.
+
+   The first group, to CPP_LAST_EQ, can be immediately followed by an
+   '='.  The lexer needs operators ending in '=', like ">>=", to be in
+   the same order as their counterparts without the '=', like ">>".
+
+   See the cpp_operator table optab in expr.c if you change the order or
+   add or remove anything in the first group.  */
+
+#define TTYPE_TABLE                                                    \
+  OP(EQ,               "=")                                            \
+  OP(NOT,              "!")                                            \
+  OP(GREATER,          ">")    /* compare */                           \
+  OP(LESS,             "<")                                            \
+  OP(PLUS,             "+")    /* math */                              \
+  OP(MINUS,            "-")                                            \
+  OP(MULT,             "*")                                            \
+  OP(DIV,              "/")                                            \
+  OP(MOD,              "%")                                            \
+  OP(AND,              "&")    /* bit ops */                           \
+  OP(OR,               "|")                                            \
+  OP(XOR,              "^")                                            \
+  OP(RSHIFT,           ">>")                                           \
+  OP(LSHIFT,           "<<")                                           \
+                                                                       \
+  OP(COMPL,            "~")                                            \
+  OP(AND_AND,          "&&")   /* logical */                           \
+  OP(OR_OR,            "||")                                           \
+  OP(QUERY,            "?")                                            \
+  OP(COLON,            ":")                                            \
+  OP(COMMA,            ",")    /* grouping */                          \
+  OP(OPEN_PAREN,       "(")                                            \
+  OP(CLOSE_PAREN,      ")")                                            \
+  TK(EOF,              NONE)                                           \
+  OP(EQ_EQ,            "==")   /* compare */                           \
+  OP(NOT_EQ,           "!=")                                           \
+  OP(GREATER_EQ,       ">=")                                           \
+  OP(LESS_EQ,          "<=")                                           \
+                                                                       \
+  /* These two are unary + / - in preprocessor expressions.  */                \
+  OP(PLUS_EQ,          "+=")   /* math */                              \
+  OP(MINUS_EQ,         "-=")                                           \
+                                                                       \
+  OP(MULT_EQ,          "*=")                                           \
+  OP(DIV_EQ,           "/=")                                           \
+  OP(MOD_EQ,           "%=")                                           \
+  OP(AND_EQ,           "&=")   /* bit ops */                           \
+  OP(OR_EQ,            "|=")                                           \
+  OP(XOR_EQ,           "^=")                                           \
+  OP(RSHIFT_EQ,                ">>=")                                          \
+  OP(LSHIFT_EQ,                "<<=")                                          \
+  /* Digraphs together, beginning with CPP_FIRST_DIGRAPH.  */          \
+  OP(HASH,             "#")    /* digraphs */                          \
+  OP(PASTE,            "##")                                           \
+  OP(OPEN_SQUARE,      "[")                                            \
+  OP(CLOSE_SQUARE,     "]")                                            \
+  OP(OPEN_BRACE,       "{")                                            \
+  OP(CLOSE_BRACE,      "}")                                            \
+  /* The remainder of the punctuation. Order is not significant.  */   \
+  OP(SEMICOLON,                ";")    /* structure */                         \
+  OP(ELLIPSIS,         "...")                                          \
+  OP(PLUS_PLUS,                "++")   /* increment */                         \
+  OP(MINUS_MINUS,      "--")                                           \
+  OP(DEREF,            "->")   /* accessors */                         \
+  OP(DOT,              ".")                                            \
+  OP(SCOPE,            "::")                                           \
+  OP(DEREF_STAR,       "->*")                                          \
+  OP(DOT_STAR,         ".*")                                           \
+  OP(ATSIGN,           "@")  /* used in Objective-C */                 \
+                                                                       \
+  TK(NAME,             IDENT)   /* word */                             \
+  TK(AT_NAME,          IDENT)   /* @word - Objective-C */              \
+  TK(NUMBER,           LITERAL) /* 34_be+ta  */                        \
+                                                                       \
+  TK(CHAR,             LITERAL) /* 'char' */                           \
+  TK(WCHAR,            LITERAL) /* L'char' */                          \
+  TK(CHAR16,           LITERAL) /* u'char' */                          \
+  TK(CHAR32,           LITERAL) /* U'char' */                          \
+  TK(OTHER,            LITERAL) /* stray punctuation */                \
+                                                                       \
+  TK(STRING,           LITERAL) /* "string" */                         \
+  TK(WSTRING,          LITERAL) /* L"string" */                        \
+  TK(STRING16,         LITERAL) /* u"string" */                        \
+  TK(STRING32,         LITERAL) /* U"string" */                        \
+  TK(OBJC_STRING,      LITERAL) /* @"string" - Objective-C */          \
+  TK(HEADER_NAME,      LITERAL) /* <stdio.h> in #include */            \
+                                                                       \
+  TK(COMMENT,          LITERAL) /* Only if output comments.  */        \
+                                /* SPELL_LITERAL happens to DTRT.  */  \
+  TK(MACRO_ARG,                NONE)    /* Macro argument.  */                 \
+  TK(PRAGMA,           NONE)    /* Only for deferred pragmas.  */      \
+  TK(PRAGMA_EOL,       NONE)    /* End-of-line for deferred pragmas.  */ \
+  TK(PADDING,          NONE)    /* Whitespace for -E.  */
+
+#define OP(e, s) CPP_ ## e,
+#define TK(e, s) CPP_ ## e,
+enum cpp_ttype
+{
+  TTYPE_TABLE
+  N_TTYPES,
+
+  /* Positions in the table.  */
+  CPP_LAST_EQ        = CPP_LSHIFT,
+  CPP_FIRST_DIGRAPH  = CPP_HASH,
+  CPP_LAST_PUNCTUATOR= CPP_ATSIGN,
+  CPP_LAST_CPP_OP    = CPP_LESS_EQ
+};
+#undef OP
+#undef TK
+
+/* C language kind, used when calling cpp_create_reader.  */
+enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_STDC89, CLK_STDC94, CLK_STDC99,
+            CLK_GNUCXX, CLK_CXX98, CLK_GNUCXX0X, CLK_CXX0X, CLK_ASM};
+
+/* Payload of a NUMBER, STRING, CHAR or COMMENT token.  */
+struct cpp_string GTY(())
+{
+  unsigned int len;
+  const unsigned char *text;
+};
+
+/* Flags for the cpp_token structure.  */
+#define PREV_WHITE     (1 << 0) /* If whitespace before this token.  */
+#define DIGRAPH                (1 << 1) /* If it was a digraph.  */
+#define STRINGIFY_ARG  (1 << 2) /* If macro argument to be stringified.  */
+#define PASTE_LEFT     (1 << 3) /* If on LHS of a ## operator.  */
+#define NAMED_OP       (1 << 4) /* C++ named operators.  */
+#define NO_EXPAND      (1 << 5) /* Do not macro-expand this token.  */
+#define BOL            (1 << 6) /* Token at beginning of line.  */
+#define PURE_ZERO      (1 << 7) /* Single 0 digit, used by the C++ frontend,
+                                   set in c-lex.c.  */
+
+/* Specify which field, if any, of the cpp_token union is used.  */
+
+enum cpp_token_fld_kind {
+  CPP_TOKEN_FLD_NODE,
+  CPP_TOKEN_FLD_SOURCE,
+  CPP_TOKEN_FLD_STR,
+  CPP_TOKEN_FLD_ARG_NO,
+  CPP_TOKEN_FLD_PRAGMA,
+  CPP_TOKEN_FLD_NONE
+};
+
+/* A preprocessing token.  This has been carefully packed and should
+   occupy 16 bytes on 32-bit hosts and 24 bytes on 64-bit hosts.  */
+struct cpp_token GTY(())
+{
+  source_location src_loc;     /* Location of first char of token.  */
+  ENUM_BITFIELD(cpp_ttype) type : CHAR_BIT;  /* token type */
+  unsigned char flags;         /* flags - see above */
+
+  union cpp_token_u
+  {
+    /* An identifier.  */
+    cpp_hashnode *
+      GTY ((nested_ptr (union tree_node,
+               "%h ? CPP_HASHNODE (GCC_IDENT_TO_HT_IDENT (%h)) : NULL",
+                       "%h ? HT_IDENT_TO_GCC_IDENT (HT_NODE (%h)) : NULL"),
+           tag ("CPP_TOKEN_FLD_NODE")))
+        node;
+        
+    /* Inherit padding from this token.  */
+    cpp_token * GTY ((tag ("CPP_TOKEN_FLD_SOURCE"))) source;
+
+    /* A string, or number.  */
+    struct cpp_string GTY ((tag ("CPP_TOKEN_FLD_STR"))) str;
+
+    /* Argument no. for a CPP_MACRO_ARG.  */
+    unsigned int GTY ((tag ("CPP_TOKEN_FLD_ARG_NO"))) arg_no;
+
+    /* Caller-supplied identifier for a CPP_PRAGMA.  */
+    unsigned int GTY ((tag ("CPP_TOKEN_FLD_PRAGMA"))) pragma;
+  } GTY ((desc ("cpp_token_val_index (&%1)"))) val;
+};
+
+/* Say which field is in use.  */
+extern enum cpp_token_fld_kind cpp_token_val_index (cpp_token *tok);
+
+/* A type wide enough to hold any multibyte source character.
+   cpplib's character constant interpreter requires an unsigned type.
+   Also, a typedef for the signed equivalent.
+   The width of this type is capped at 32 bits; there do exist targets
+   where wchar_t is 64 bits, but only in a non-default mode, and there
+   would be no meaningful interpretation for a wchar_t value greater
+   than 2^32 anyway -- the widest wide-character encoding around is
+   ISO 10646, which stops at 2^31.  */
+#if CHAR_BIT * SIZEOF_INT >= 32
+# define CPPCHAR_SIGNED_T int
+#elif CHAR_BIT * SIZEOF_LONG >= 32
+# define CPPCHAR_SIGNED_T long
+#else
+# error "Cannot find a least-32-bit signed integer type"
+#endif
+typedef unsigned CPPCHAR_SIGNED_T cppchar_t;
+typedef CPPCHAR_SIGNED_T cppchar_signed_t;
+
+/* Style of header dependencies to generate.  */
+enum cpp_deps_style { DEPS_NONE = 0, DEPS_USER, DEPS_SYSTEM };
+
+/* The possible normalization levels, from most restrictive to least.  */
+enum cpp_normalize_level {
+  /* In NFKC.  */
+  normalized_KC = 0,
+  /* In NFC.  */
+  normalized_C,
+  /* In NFC, except for subsequences where being in NFC would make
+     the identifier invalid.  */
+  normalized_identifier_C,
+  /* Not normalized at all.  */
+  normalized_none
+};
+
+/* This structure is nested inside struct cpp_reader, and
+   carries all the options visible to the command line.  */
+struct cpp_options
+{
+  /* Characters between tab stops.  */
+  unsigned int tabstop;
+
+  /* The language we're preprocessing.  */
+  enum c_lang lang;
+
+  /* Nonzero means use extra default include directories for C++.  */
+  unsigned char cplusplus;
+
+  /* Nonzero means handle cplusplus style comments.  */
+  unsigned char cplusplus_comments;
+
+  /* Nonzero means define __OBJC__, treat @ as a special token, use
+     the OBJC[PLUS]_INCLUDE_PATH environment variable, and allow
+     "#import".  */
+  unsigned char objc;
+
+  /* Nonzero means don't copy comments into the output file.  */
+  unsigned char discard_comments;
+
+  /* Nonzero means don't copy comments into the output file during
+     macro expansion.  */
+  unsigned char discard_comments_in_macro_exp;
+
+  /* Nonzero means process the ISO trigraph sequences.  */
+  unsigned char trigraphs;
+
+  /* Nonzero means process the ISO digraph sequences.  */
+  unsigned char digraphs;
+
+  /* Nonzero means to allow hexadecimal floats and LL suffixes.  */
+  unsigned char extended_numbers;
+
+  /* Nonzero means process u/U prefix literals (UTF-16/32).  */
+  unsigned char uliterals;
+
+  /* Nonzero means print names of header files (-H).  */
+  unsigned char print_include_names;
+
+  /* Nonzero means cpp_pedwarn causes a hard error.  */
+  unsigned char pedantic_errors;
+
+  /* Nonzero means don't print warning messages.  */
+  unsigned char inhibit_warnings;
+
+  /* Nonzero means complain about deprecated features.  */
+  unsigned char warn_deprecated;
+
+  /* Nonzero means don't suppress warnings from system headers.  */
+  unsigned char warn_system_headers;
+
+  /* Nonzero means don't print error messages.  Has no option to
+     select it, but can be set by a user of cpplib (e.g. fix-header).  */
+  unsigned char inhibit_errors;
+
+  /* Nonzero means warn if slash-star appears in a comment.  */
+  unsigned char warn_comments;
+
+  /* Nonzero means warn if a user-supplied include directory does not
+     exist.  */
+  unsigned char warn_missing_include_dirs;
+
+  /* Nonzero means warn if there are any trigraphs.  */
+  unsigned char warn_trigraphs;
+
+  /* Nonzero means warn about multicharacter charconsts.  */
+  unsigned char warn_multichar;
+
+  /* Nonzero means warn about various incompatibilities with
+     traditional C.  */
+  unsigned char warn_traditional;
+
+  /* Nonzero means warn about long long numeric constants.  */
+  unsigned char warn_long_long;
+
+  /* Nonzero means warn about text after an #endif (or #else).  */
+  unsigned char warn_endif_labels;
+
+  /* Nonzero means warn about implicit sign changes owing to integer
+     promotions.  */
+  unsigned char warn_num_sign_change;
+
+  /* Zero means don't warn about __VA_ARGS__ usage in c89 pedantic mode.
+     Presumably the usage is protected by the appropriate #ifdef.  */
+  unsigned char warn_variadic_macros;
+
+  /* Nonzero means warn about builtin macros that are redefined or
+     explicitly undefined.  */
+  unsigned char warn_builtin_macro_redefined;
+
+  /* Nonzero means turn warnings into errors.  */
+  unsigned char warnings_are_errors;
+
+  /* Nonzero means we should look for header.gcc files that remap file
+     names.  */
+  unsigned char remap;
+
+  /* Zero means dollar signs are punctuation.  */
+  unsigned char dollars_in_ident;
+
+  /* Nonzero means UCNs are accepted in identifiers.  */
+  unsigned char extended_identifiers;
+
+  /* True if we should warn about dollars in identifiers or numbers
+     for this translation unit.  */
+  unsigned char warn_dollars;
+
+  /* Nonzero means warn if undefined identifiers are evaluated in an #if.  */
+  unsigned char warn_undef;
+
+  /* Nonzero means warn of unused macros from the main file.  */
+  unsigned char warn_unused_macros;
+
+  /* Nonzero for the 1999 C Standard, including corrigenda and amendments.  */
+  unsigned char c99;
+
+  /* Nonzero if we are conforming to a specific C or C++ standard.  */
+  unsigned char std;
+
+  /* Nonzero means give all the error messages the ANSI standard requires.  */
+  unsigned char pedantic;
+
+  /* Nonzero means we're looking at already preprocessed code, so don't
+     bother trying to do macro expansion and whatnot.  */
+  unsigned char preprocessed;
+
+  /* Print column number in error messages.  */
+  unsigned char show_column;
+
+  /* Nonzero means handle C++ alternate operator names.  */
+  unsigned char operator_names;
+
+  /* True for traditional preprocessing.  */
+  unsigned char traditional;
+
+  /* Holds the name of the target (execution) character set.  */
+  const char *narrow_charset;
+
+  /* Holds the name of the target wide character set.  */
+  const char *wide_charset;
+
+  /* Holds the name of the input character set.  */
+  const char *input_charset;
+
+  /* The minimum permitted level of normalization before a warning
+     is generated.  */
+  enum cpp_normalize_level warn_normalize;
+
+  /* True to warn about precompiled header files we couldn't use.  */
+  bool warn_invalid_pch;
+
+  /* True if dependencies should be restored from a precompiled header.  */
+  bool restore_pch_deps;
+
+  /* Dependency generation.  */
+  struct
+  {
+    /* Style of header dependencies to generate.  */
+    enum cpp_deps_style style;
+
+    /* Assume missing files are generated files.  */
+    bool missing_files;
+
+    /* Generate phony targets for each dependency apart from the first
+       one.  */
+    bool phony_targets;
+
+    /* If true, no dependency is generated on the main file.  */
+    bool ignore_main_file;
+  } deps;
+
+  /* Target-specific features set by the front end or client.  */
+
+  /* Precision for target CPP arithmetic, target characters, target
+     ints and target wide characters, respectively.  */
+  size_t precision, char_precision, int_precision, wchar_precision;
+
+  /* True means chars (wide chars) are unsigned.  */
+  bool unsigned_char, unsigned_wchar;
+
+  /* True if the most significant byte in a word has the lowest
+     address in memory.  */
+  bool bytes_big_endian;
+
+  /* Nonzero means __STDC__ should have the value 0 in system headers.  */
+  unsigned char stdc_0_in_system_headers;
+
+  /* True means error callback should be used for diagnostics.  */
+  bool client_diagnostic;
+
+  /* True disables tokenization outside of preprocessing directives. */
+  bool directives_only;
+};
+
+/* Callback for header lookup for HEADER, which is the name of a
+   source file.  It is used as a method of last resort to find headers
+   that are not otherwise found during the normal include processing.
+   The return value is the malloced name of a header to try and open,
+   if any, or NULL otherwise.  This callback is called only if the
+   header is otherwise unfound.  */
+typedef const char *(*missing_header_cb)(cpp_reader *, const char *header, cpp_dir **);
+
+/* Call backs to cpplib client.  */
+struct cpp_callbacks
+{
+  /* Called when a new line of preprocessed output is started.  */
+  void (*line_change) (cpp_reader *, const cpp_token *, int);
+
+  /* Called when switching to/from a new file.
+     The line_map is for the new file.  It is NULL if there is no new file.
+     (In C this happens when done with <built-in>+<command line> and also
+     when done with a main file.)  This can be used for resource cleanup.  */
+  void (*file_change) (cpp_reader *, const struct line_map *);
+
+  void (*dir_change) (cpp_reader *, const char *);
+  void (*include) (cpp_reader *, unsigned int, const unsigned char *,
+                  const char *, int, const cpp_token **);
+  void (*define) (cpp_reader *, unsigned int, cpp_hashnode *);
+  void (*undef) (cpp_reader *, unsigned int, cpp_hashnode *);
+  void (*ident) (cpp_reader *, unsigned int, const cpp_string *);
+  void (*def_pragma) (cpp_reader *, unsigned int);
+  int (*valid_pch) (cpp_reader *, const char *, int);
+  void (*read_pch) (cpp_reader *, const char *, int, const char *);
+  missing_header_cb missing_header;
+
+  /* Context-sensitive macro support.  Returns macro (if any) that should
+     be expanded.  */
+  cpp_hashnode * (*macro_to_expand) (cpp_reader *, const cpp_token *);
+
+  /* Called to emit a diagnostic if client_diagnostic option is true.
+     This callback receives the translated message.  */
+  void (*error) (cpp_reader *, int, const char *, va_list *)
+       ATTRIBUTE_FPTR_PRINTF(3,0);
+
+  /* Callbacks for when a macro is expanded, or tested (whether
+     defined or not at the time) in #ifdef, #ifndef or "defined".  */
+  void (*used_define) (cpp_reader *, unsigned int, cpp_hashnode *);
+  void (*used_undef) (cpp_reader *, unsigned int, cpp_hashnode *);
+  /* Called before #define and #undef or other macro definition
+     changes are processed.  */
+  void (*before_define) (cpp_reader *);
+};
+
+/* Chain of directories to look for include files in.  */
+struct cpp_dir
+{
+  /* NULL-terminated singly-linked list.  */
+  struct cpp_dir *next;
+
+  /* NAME of the directory, NUL-terminated.  */
+  char *name;
+  unsigned int len;
+
+  /* One if a system header, two if a system header that has extern
+     "C" guards for C++.  */
+  unsigned char sysp;
+
+  /* Is this a user-supplied directory? */
+  bool user_supplied_p;
+
+  /* The canonicalized NAME as determined by lrealpath.  This field 
+     is only used by hosts that lack reliable inode numbers.  */
+  char *canonical_name;
+
+  /* Mapping of file names for this directory for MS-DOS and related
+     platforms.  A NULL-terminated array of (from, to) pairs.  */
+  const char **name_map;
+
+  /* Routine to construct pathname, given the search path name and the
+     HEADER we are trying to find, return a constructed pathname to
+     try and open.  If this is NULL, the constructed pathname is as
+     constructed by append_file_to_dir.  */
+  char *(*construct) (const char *header, cpp_dir *dir);
+
+  /* The C front end uses these to recognize duplicated
+     directories in the search path.  */
+  ino_t ino;
+  dev_t dev;
+};
+
+/* Name under which this program was invoked.  */
+extern const char *progname;
+
+/* The structure of a node in the hash table.  The hash table has
+   entries for all identifiers: either macros defined by #define
+   commands (type NT_MACRO), assertions created with #assert
+   (NT_ASSERTION), or neither of the above (NT_VOID).  Builtin macros
+   like __LINE__ are flagged NODE_BUILTIN.  Poisoned identifiers are
+   flagged NODE_POISONED.  NODE_OPERATOR (C++ only) indicates an
+   identifier that behaves like an operator such as "xor".
+   NODE_DIAGNOSTIC is for speed in lex_token: it indicates a
+   diagnostic may be required for this node.  Currently this only
+   applies to __VA_ARGS__ and poisoned identifiers.  */
+
+/* Hash node flags.  */
+#define NODE_OPERATOR  (1 << 0)        /* C++ named operator.  */
+#define NODE_POISONED  (1 << 1)        /* Poisoned identifier.  */
+#define NODE_BUILTIN   (1 << 2)        /* Builtin macro.  */
+#define NODE_DIAGNOSTIC (1 << 3)       /* Possible diagnostic when lexed.  */
+#define NODE_WARN      (1 << 4)        /* Warn if redefined or undefined.  */
+#define NODE_DISABLED  (1 << 5)        /* A disabled macro.  */
+#define NODE_MACRO_ARG (1 << 6)        /* Used during #define processing.  */
+#define NODE_USED      (1 << 7)        /* Dumped with -dU.  */
+#define NODE_CONDITIONAL (1 << 8)      /* Conditional macro */
+
+/* Different flavors of hash node.  */
+enum node_type
+{
+  NT_VOID = 0,    /* No definition yet.  */
+  NT_MACRO,       /* A macro of some form.  */
+  NT_ASSERTION    /* Predicate for #assert.  */
+};
+
+/* Different flavors of builtin macro.  _Pragma is an operator, but we
+   handle it with the builtin code for efficiency reasons.  */
+enum builtin_type
+{
+  BT_SPECLINE = 0,             /* `__LINE__' */
+  BT_DATE,                     /* `__DATE__' */
+  BT_FILE,                     /* `__FILE__' */
+  BT_BASE_FILE,                        /* `__BASE_FILE__' */
+  BT_INCLUDE_LEVEL,            /* `__INCLUDE_LEVEL__' */
+  BT_TIME,                     /* `__TIME__' */
+  BT_STDC,                     /* `__STDC__' */
+  BT_PRAGMA,                   /* `_Pragma' operator */
+  BT_TIMESTAMP,                        /* `__TIMESTAMP__' */
+  BT_COUNTER                   /* `__COUNTER__' */
+};
+
+#define CPP_HASHNODE(HNODE)    ((cpp_hashnode *) (HNODE))
+#define HT_NODE(NODE)          ((ht_identifier *) (NODE))
+#define NODE_LEN(NODE)         HT_LEN (&(NODE)->ident)
+#define NODE_NAME(NODE)                HT_STR (&(NODE)->ident)
+
+/* Specify which field, if any, of the union is used.  */
+
+enum {
+  NTV_MACRO,
+  NTV_ANSWER,
+  NTV_BUILTIN,
+  NTV_ARGUMENT,
+  NTV_NONE
+};
+
+#define CPP_HASHNODE_VALUE_IDX(HNODE)                          \
+  ((HNODE.flags & NODE_MACRO_ARG) ? NTV_ARGUMENT               \
+   : HNODE.type == NT_MACRO ? ((HNODE.flags & NODE_BUILTIN)    \
+                              ? NTV_BUILTIN : NTV_MACRO)       \
+   : HNODE.type == NT_ASSERTION ? NTV_ANSWER                   \
+   : NTV_NONE)
+
+/* The common part of an identifier node shared amongst all 3 C front
+   ends.  Also used to store CPP identifiers, which are a superset of
+   identifiers in the grammatical sense.  */
+
+union _cpp_hashnode_value GTY(())
+{
+  /* If a macro.  */
+  cpp_macro * GTY((tag ("NTV_MACRO"))) macro;
+  /* Answers to an assertion.  */
+  struct answer * GTY ((tag ("NTV_ANSWER"))) answers;
+  /* Code for a builtin macro.  */
+  enum builtin_type GTY ((tag ("NTV_BUILTIN"))) builtin;
+  /* Macro argument index.  */
+  unsigned short GTY ((tag ("NTV_ARGUMENT"))) arg_index;
+};
+
+struct cpp_hashnode GTY(())
+{
+  struct ht_identifier ident;
+  unsigned int is_directive : 1;
+  unsigned int directive_index : 7;    /* If is_directive,
+                                          then index into directive table.
+                                          Otherwise, a NODE_OPERATOR.  */
+  unsigned char rid_code;              /* Rid code - for front ends.  */
+  ENUM_BITFIELD(node_type) type : 7;   /* CPP node type.  */
+  unsigned int flags : 9;              /* CPP flags.  */
+
+  union _cpp_hashnode_value GTY ((desc ("CPP_HASHNODE_VALUE_IDX (%1)"))) value;
+};
+
+/* Call this first to get a handle to pass to other functions.
+
+   If you want cpplib to manage its own hashtable, pass in a NULL
+   pointer.  Otherwise you should pass in an initialized hash table
+   that cpplib will share; this technique is used by the C front
+   ends.  */
+extern cpp_reader *cpp_create_reader (enum c_lang, struct ht *,
+                                     struct line_maps *);
+
+/* Reset the cpp_reader's line_map.  This is only used after reading a
+   PCH file.  */
+extern void cpp_set_line_map (cpp_reader *, struct line_maps *);
+
+/* Call this to change the selected language standard (e.g. because of
+   command line options).  */
+extern void cpp_set_lang (cpp_reader *, enum c_lang);
+
+/* Set the include paths.  */
+extern void cpp_set_include_chains (cpp_reader *, cpp_dir *, cpp_dir *, int);
+
+/* Call these to get pointers to the options, callback, and deps
+   structures for a given reader.  These pointers are good until you
+   call cpp_finish on that reader.  You can either edit the callbacks
+   through the pointer returned from cpp_get_callbacks, or set them
+   with cpp_set_callbacks.  */
+extern cpp_options *cpp_get_options (cpp_reader *);
+extern cpp_callbacks *cpp_get_callbacks (cpp_reader *);
+extern void cpp_set_callbacks (cpp_reader *, cpp_callbacks *);
+extern struct deps *cpp_get_deps (cpp_reader *);
+
+/* This function reads the file, but does not start preprocessing.  It
+   returns the name of the original file; this is the same as the
+   input file, except for preprocessed input.  This will generate at
+   least one file change callback, and possibly a line change callback
+   too.  If there was an error opening the file, it returns NULL.  */
+extern const char *cpp_read_main_file (cpp_reader *, const char *);
+
+/* Set up built-ins with special behavior.  Use cpp_init_builtins()
+   instead unless your know what you are doing.  */
+extern void cpp_init_special_builtins (cpp_reader *);
+
+/* Set up built-ins like __FILE__.  */
+extern void cpp_init_builtins (cpp_reader *, int);
+
+/* This is called after options have been parsed, and partially
+   processed.  */
+extern void cpp_post_options (cpp_reader *);
+
+/* Set up translation to the target character set.  */
+extern void cpp_init_iconv (cpp_reader *);
+
+/* Call this to finish preprocessing.  If you requested dependency
+   generation, pass an open stream to write the information to,
+   otherwise NULL.  It is your responsibility to close the stream.
+
+   Returns cpp_errors (pfile).  */
+extern int cpp_finish (cpp_reader *, FILE *deps_stream);
+
+/* Call this to release the handle at the end of preprocessing.  Any
+   use of the handle after this function returns is invalid.  Returns
+   cpp_errors (pfile).  */
+extern void cpp_destroy (cpp_reader *);
+
+/* Error count.  */
+extern unsigned int cpp_errors (cpp_reader *);
+
+extern unsigned int cpp_token_len (const cpp_token *);
+extern unsigned char *cpp_token_as_text (cpp_reader *, const cpp_token *);
+extern unsigned char *cpp_spell_token (cpp_reader *, const cpp_token *,
+                                      unsigned char *, bool);
+extern void cpp_register_pragma (cpp_reader *, const char *, const char *,
+                                void (*) (cpp_reader *), bool);
+extern void cpp_register_deferred_pragma (cpp_reader *, const char *,
+                                         const char *, unsigned, bool, bool);
+extern int cpp_avoid_paste (cpp_reader *, const cpp_token *,
+                           const cpp_token *);
+extern const cpp_token *cpp_get_token (cpp_reader *);
+extern const cpp_token *cpp_get_token_with_location (cpp_reader *,
+                                                    source_location *);
+extern const unsigned char *cpp_macro_definition (cpp_reader *,
+                                                 const cpp_hashnode *);
+extern void _cpp_backup_tokens (cpp_reader *, unsigned int);
+extern const cpp_token *cpp_peek_token (cpp_reader *, int);
+
+/* Evaluate a CPP_CHAR or CPP_WCHAR token.  */
+extern cppchar_t cpp_interpret_charconst (cpp_reader *, const cpp_token *,
+                                         unsigned int *, int *);
+/* Evaluate a vector of CPP_STRING or CPP_WSTRING tokens.  */
+extern bool cpp_interpret_string (cpp_reader *,
+                                 const cpp_string *, size_t,
+                                 cpp_string *, enum cpp_ttype);
+extern bool cpp_interpret_string_notranslate (cpp_reader *,
+                                             const cpp_string *, size_t,
+                                             cpp_string *, enum cpp_ttype);
+
+/* Convert a host character constant to the execution character set.  */
+extern cppchar_t cpp_host_to_exec_charset (cpp_reader *, cppchar_t);
+
+/* Used to register macros and assertions, perhaps from the command line.
+   The text is the same as the command line argument.  */
+extern void cpp_define (cpp_reader *, const char *);
+extern void cpp_define_formatted (cpp_reader *pfile, 
+                                 const char *fmt, ...) ATTRIBUTE_PRINTF_2;
+extern void cpp_assert (cpp_reader *, const char *);
+extern void cpp_undef (cpp_reader *, const char *);
+extern void cpp_unassert (cpp_reader *, const char *);
+
+extern cpp_macro *cpp_push_definition (cpp_reader *, const char *);
+extern void cpp_pop_definition (cpp_reader *, const char *, cpp_macro *);
+
+/* Undefine all macros and assertions.  */
+extern void cpp_undef_all (cpp_reader *);
+
+extern cpp_buffer *cpp_push_buffer (cpp_reader *, const unsigned char *,
+                                   size_t, int);
+extern int cpp_defined (cpp_reader *, const unsigned char *, int);
+
+/* A preprocessing number.  Code assumes that any unused high bits of
+   the double integer are set to zero.  */
+typedef unsigned HOST_WIDE_INT cpp_num_part;
+typedef struct cpp_num cpp_num;
+struct cpp_num
+{
+  cpp_num_part high;
+  cpp_num_part low;
+  bool unsignedp;  /* True if value should be treated as unsigned.  */
+  bool overflow;   /* True if the most recent calculation overflowed.  */
+};
+
+/* cpplib provides two interfaces for interpretation of preprocessing
+   numbers.
+
+   cpp_classify_number categorizes numeric constants according to
+   their field (integer, floating point, or invalid), radix (decimal,
+   octal, hexadecimal), and type suffixes.  */
+
+#define CPP_N_CATEGORY  0x000F
+#define CPP_N_INVALID  0x0000
+#define CPP_N_INTEGER  0x0001
+#define CPP_N_FLOATING 0x0002
+
+#define CPP_N_WIDTH    0x00F0
+#define CPP_N_SMALL    0x0010  /* int, float, shrot _Fract/Accum  */
+#define CPP_N_MEDIUM   0x0020  /* long, double, long _Fract/_Accum.  */
+#define CPP_N_LARGE    0x0040  /* long long, long double,
+                                  long long _Fract/Accum.  */
+
+#define CPP_N_WIDTH_MD 0xF0000 /* machine defined.  */
+#define CPP_N_MD_W     0x10000
+#define CPP_N_MD_Q     0x20000
+
+#define CPP_N_RADIX    0x0F00
+#define CPP_N_DECIMAL  0x0100
+#define CPP_N_HEX      0x0200
+#define CPP_N_OCTAL    0x0400
+#define CPP_N_BINARY   0x0800
+
+#define CPP_N_UNSIGNED 0x1000  /* Properties.  */
+#define CPP_N_IMAGINARY        0x2000
+#define CPP_N_DFLOAT   0x4000
+
+#define CPP_N_FRACT    0x100000 /* Fract types.  */
+#define CPP_N_ACCUM    0x200000 /* Accum types.  */
+
+/* Classify a CPP_NUMBER token.  The return value is a combination of
+   the flags from the above sets.  */
+extern unsigned cpp_classify_number (cpp_reader *, const cpp_token *);
+
+/* Evaluate a token classified as category CPP_N_INTEGER.  */
+extern cpp_num cpp_interpret_integer (cpp_reader *, const cpp_token *,
+                                     unsigned int type);
+
+/* Sign extend a number, with PRECISION significant bits and all
+   others assumed clear, to fill out a cpp_num structure.  */
+cpp_num cpp_num_sign_extend (cpp_num, size_t);
+
+/* Diagnostic levels.  To get a diagnostic without associating a
+   position in the translation unit with it, use cpp_error_with_line
+   with a line number of zero.  */
+
+/* Warning, an error with -Werror.  */
+#define CPP_DL_WARNING         0x00
+/* Same as CPP_DL_WARNING, except it is not suppressed in system headers.  */
+#define CPP_DL_WARNING_SYSHDR  0x01
+/* Warning, an error with -pedantic-errors or -Werror.  */
+#define CPP_DL_PEDWARN         0x02
+/* An error.  */
+#define CPP_DL_ERROR           0x03
+/* An internal consistency check failed.  Prints "internal error: ",
+   otherwise the same as CPP_DL_ERROR.  */
+#define CPP_DL_ICE             0x04
+/* Extracts a diagnostic level from an int.  */
+#define CPP_DL_EXTRACT(l)      (l & 0xf)
+/* Nonzero if a diagnostic level is one of the warnings.  */
+#define CPP_DL_WARNING_P(l)    (CPP_DL_EXTRACT (l) >= CPP_DL_WARNING \
+                                && CPP_DL_EXTRACT (l) <= CPP_DL_PEDWARN)
+
+/* Output a diagnostic of some kind.  */
+extern void cpp_error (cpp_reader *, int, const char *msgid, ...)
+  ATTRIBUTE_PRINTF_3;
+
+/* Output a diagnostic with "MSGID: " preceding the
+   error string of errno.  No location is printed.  */
+extern void cpp_errno (cpp_reader *, int, const char *msgid);
+
+/* Same as cpp_error, except additionally specifies a position as a
+   (translation unit) physical line and physical column.  If the line is
+   zero, then no location is printed.  */
+extern void cpp_error_with_line (cpp_reader *, int, source_location, unsigned,
+                                const char *msgid, ...) ATTRIBUTE_PRINTF_5;
+
+/* In lex.c */
+extern int cpp_ideq (const cpp_token *, const char *);
+extern void cpp_output_line (cpp_reader *, FILE *);
+extern unsigned char *cpp_output_line_to_string (cpp_reader *,
+                                                const unsigned char *);
+extern void cpp_output_token (const cpp_token *, FILE *);
+extern const char *cpp_type2name (enum cpp_ttype);
+/* Returns the value of an escape sequence, truncated to the correct
+   target precision.  PSTR points to the input pointer, which is just
+   after the backslash.  LIMIT is how much text we have.  WIDE is true
+   if the escape sequence is part of a wide character constant or
+   string literal.  Handles all relevant diagnostics.  */
+extern cppchar_t cpp_parse_escape (cpp_reader *, const unsigned char ** pstr,
+                                  const unsigned char *limit, int wide);
+
+/* Structure used to hold a comment block at a given location in the
+   source code.  */
+
+typedef struct
+{
+  /* Text of the comment including the terminators.  */
+  char *comment;
+
+  /* source location for the given comment.  */
+  source_location sloc;
+} cpp_comment;
+
+/* Structure holding all comments for a given cpp_reader.  */
+
+typedef struct
+{
+  /* table of comment entries.  */
+  cpp_comment *entries;
+
+  /* number of actual entries entered in the table.  */
+  int count;
+
+  /* number of entries allocated currently.  */
+  int allocated;
+} cpp_comment_table;
+
+/* Returns the table of comments encountered by the preprocessor. This
+   table is only populated when pfile->state.save_comments is true. */
+extern cpp_comment_table *cpp_get_comments (cpp_reader *);
+
+/* In hash.c */
+
+/* Lookup an identifier in the hashtable.  Puts the identifier in the
+   table if it is not already there.  */
+extern cpp_hashnode *cpp_lookup (cpp_reader *, const unsigned char *,
+                                unsigned int);
+
+typedef int (*cpp_cb) (cpp_reader *, cpp_hashnode *, void *);
+extern void cpp_forall_identifiers (cpp_reader *, cpp_cb, void *);
+
+/* In macro.c */
+extern void cpp_scan_nooutput (cpp_reader *);
+extern int  cpp_sys_macro_p (cpp_reader *);
+extern unsigned char *cpp_quote_string (unsigned char *, const unsigned char *,
+                                       unsigned int);
+
+/* In files.c */
+extern bool cpp_included (cpp_reader *, const char *);
+extern bool cpp_included_before (cpp_reader *, const char *, source_location);
+extern void cpp_make_system_header (cpp_reader *, int, int);
+extern bool cpp_push_include (cpp_reader *, const char *);
+extern void cpp_change_file (cpp_reader *, enum lc_reason, const char *);
+extern const char *cpp_get_path (struct _cpp_file *);
+extern cpp_dir *cpp_get_dir (struct _cpp_file *);
+extern cpp_buffer *cpp_get_buffer (cpp_reader *);
+extern struct _cpp_file *cpp_get_file (cpp_buffer *);
+extern cpp_buffer *cpp_get_prev (cpp_buffer *);
+extern void cpp_clear_file_cache (cpp_reader *);
+
+/* In pch.c */
+struct save_macro_data;
+extern int cpp_save_state (cpp_reader *, FILE *);
+extern int cpp_write_pch_deps (cpp_reader *, FILE *);
+extern int cpp_write_pch_state (cpp_reader *, FILE *);
+extern int cpp_valid_state (cpp_reader *, const char *, int);
+extern void cpp_prepare_state (cpp_reader *, struct save_macro_data **);
+extern int cpp_read_state (cpp_reader *, const char *, FILE *,
+                          struct save_macro_data *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ! LIBCPP_CPPLIB_H */
index d2d9f2e..349c1f7 100644 (file)
@@ -964,6 +964,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
   LOCAL_ALIGNMENT (TREE_TYPE (DECL), DECL_ALIGN (DECL))
 #endif
 
+#ifndef MINIMUM_ALIGNMENT
+#define MINIMUM_ALIGNMENT(EXP,MODE,ALIGN) (ALIGN)
+#endif
+
 /* Alignment value for attribute ((aligned)).  */
 #ifndef ATTRIBUTE_ALIGNED_VALUE
 #define ATTRIBUTE_ALIGNED_VALUE BIGGEST_ALIGNMENT
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/diagnostic.def b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/diagnostic.def
new file mode 100644 (file)
index 0000000..3906419
--- /dev/null
@@ -0,0 +1,27 @@
+/* DK_UNSPECIFIED must be first so it has a value of zero.  We never
+   assign this kind to an actual diagnostic, we only use this in
+   variables that can hold a kind, to mean they have yet to have a
+   kind specified.  I.e. they're uninitialized.  Within the diagnostic
+   machinery, this kind also means "don't change the existing kind",
+   meaning "no change is specified".  */
+DEFINE_DIAGNOSTIC_KIND (DK_UNSPECIFIED, "")
+
+/* If a diagnostic is set to DK_IGNORED, it won't get reported at all.
+   This is used by the diagnostic machinery when it wants to disable a
+   diagnostic without disabling the option which causes it.  */
+DEFINE_DIAGNOSTIC_KIND (DK_IGNORED, "")
+
+/* The remainder are real diagnostic types.  */
+DEFINE_DIAGNOSTIC_KIND (DK_FATAL, "fatal error: ")
+DEFINE_DIAGNOSTIC_KIND (DK_ICE, "internal compiler error: ")
+DEFINE_DIAGNOSTIC_KIND (DK_ERROR, "error: ")
+DEFINE_DIAGNOSTIC_KIND (DK_SORRY, "sorry, unimplemented: ")
+DEFINE_DIAGNOSTIC_KIND (DK_WARNING, "warning: ")
+DEFINE_DIAGNOSTIC_KIND (DK_ANACHRONISM, "anachronism: ")
+DEFINE_DIAGNOSTIC_KIND (DK_NOTE, "note: ")
+DEFINE_DIAGNOSTIC_KIND (DK_DEBUG, "debug: ")
+/* These two would be re-classified as DK_WARNING or DK_ERROR, so the
+prefix does not matter.  */
+DEFINE_DIAGNOSTIC_KIND (DK_PEDWARN, "pedwarn: ")
+DEFINE_DIAGNOSTIC_KIND (DK_PERMERROR, "permerror: ")
+
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/diagnostic.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/diagnostic.h
new file mode 100644 (file)
index 0000000..19bc5e9
--- /dev/null
@@ -0,0 +1,236 @@
+/* Various declarations for language-independent diagnostics subroutines.
+   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+   Free Software Foundation, Inc.
+   Contributed by Gabriel Dos Reis <gdr@codesourcery.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_DIAGNOSTIC_H
+#define GCC_DIAGNOSTIC_H
+
+#include "pretty-print.h"
+#include "options.h"
+
+/* Constants used to discriminate diagnostics.  */
+typedef enum
+{
+#define DEFINE_DIAGNOSTIC_KIND(K, msgid) K,  
+#include "diagnostic.def"
+#undef DEFINE_DIAGNOSTIC_KIND
+  DK_LAST_DIAGNOSTIC_KIND
+} diagnostic_t;
+
+/* A diagnostic is described by the MESSAGE to send, the FILE and LINE of
+   its context and its KIND (ice, error, warning, note, ...)  See complete
+   list in diagnostic.def.  */
+typedef struct diagnostic_info
+{
+  text_info message;
+  location_t location;
+  /* TREE_BLOCK if the diagnostic is to be reported in some inline
+     function inlined into other function, otherwise NULL.  */
+  tree abstract_origin;
+  /* The kind of diagnostic it is about.  */
+  diagnostic_t kind;
+  /* Which OPT_* directly controls this diagnostic.  */
+  int option_index;
+} diagnostic_info;
+
+/*  Forward declarations.  */
+typedef struct diagnostic_context diagnostic_context;
+typedef void (*diagnostic_starter_fn) (diagnostic_context *,
+                                      diagnostic_info *);
+typedef diagnostic_starter_fn diagnostic_finalizer_fn;
+
+/* This data structure bundles altogether any information relevant to
+   the context of a diagnostic message.  */
+struct diagnostic_context
+{
+  /* Where most of the diagnostic formatting work is done.  */
+  pretty_printer *printer;
+
+  /* The number of times we have issued diagnostics.  */
+  int diagnostic_count[DK_LAST_DIAGNOSTIC_KIND];
+
+  /* True if we should display the "warnings are being tread as error"
+     message, usually displayed once per compiler run.  */
+  bool issue_warnings_are_errors_message;
+  
+  /* True if it has been requested that warnings be treated as errors.  */
+  bool warning_as_error_requested;
+
+  /* For each option index that can be passed to warning() et all
+     (OPT_* from options.h), this array may contain a new kind that
+     the diagnostic should be changed to before reporting, or
+     DK_UNSPECIFIED to leave it as the reported kind, or DK_IGNORED to
+     not report it at all.  N_OPTS is from <options.h>.  */
+  diagnostic_t classify_diagnostic[N_OPTS];
+
+  /* True if we should print the command line option which controls
+     each diagnostic, if known.  */
+  bool show_option_requested;
+
+  /* True if we should raise a SIGABRT on errors.  */
+  bool abort_on_error;
+
+  /* This function is called before any message is printed out.  It is
+     responsible for preparing message prefix and such.  For example, it
+     might say:
+     In file included from "/usr/local/include/curses.h:5:
+                      from "/home/gdr/src/nifty_printer.h:56:
+                      ...
+  */
+  diagnostic_starter_fn begin_diagnostic;
+
+  /* This function is called after the diagnostic message is printed.  */
+  diagnostic_finalizer_fn end_diagnostic;
+
+  /* Client hook to report an internal error.  */
+  void (*internal_error) (const char *, va_list *);
+
+  /* Function of last diagnostic message; more generally, function such that
+     if next diagnostic message is in it then we don't have to mention the
+     function name.  */
+  tree last_function;
+
+  /* Used to detect when the input file stack has changed since last
+     described.  */
+  const struct line_map *last_module;
+
+  int lock;
+};
+
+/* Client supplied function to announce a diagnostic.  */
+#define diagnostic_starter(DC) (DC)->begin_diagnostic
+
+/* Client supplied function called after a diagnostic message is
+   displayed.  */
+#define diagnostic_finalizer(DC) (DC)->end_diagnostic
+
+/* Extension hook for client.  */
+#define diagnostic_auxiliary_data(DC) (DC)->x_data
+
+/* Same as pp_format_decoder.  Works on 'diagnostic_context *'.  */
+#define diagnostic_format_decoder(DC) ((DC)->printer->format_decoder)
+
+/* Same as output_prefixing_rule.  Works on 'diagnostic_context *'.  */
+#define diagnostic_prefixing_rule(DC) ((DC)->printer->wrapping.rule)
+
+/* Maximum characters per line in automatic line wrapping mode.
+   Zero means don't wrap lines.  */
+#define diagnostic_line_cutoff(DC) ((DC)->printer->wrapping.line_cutoff)
+
+#define diagnostic_flush_buffer(DC) pp_base_flush ((DC)->printer)
+
+/* True if the last function in which a diagnostic was reported is
+   different from the current one.  */
+#define diagnostic_last_function_changed(DC, DI) \
+  ((DC)->last_function != ((DI)->abstract_origin \
+                          ? (DI)->abstract_origin : current_function_decl))
+
+/* Remember the current function as being the last one in which we report
+   a diagnostic.  */
+#define diagnostic_set_last_function(DC, DI) \
+  (DC)->last_function = (((DI) && (DI)->abstract_origin) \
+                        ? (DI)->abstract_origin : current_function_decl)
+
+/* True if the last module or file in which a diagnostic was reported is
+   different from the current one.  */
+#define diagnostic_last_module_changed(DC, MAP)        \
+  ((DC)->last_module != MAP)
+
+/* Remember the current module or file as being the last one in which we
+   report a diagnostic.  */
+#define diagnostic_set_last_module(DC, MAP)    \
+  (DC)->last_module = MAP
+
+/* Raise SIGABRT on any diagnostic of severity DK_ERROR or higher.  */
+#define diagnostic_abort_on_error(DC) \
+  (DC)->abort_on_error = true
+
+/* This diagnostic_context is used by front-ends that directly output
+   diagnostic messages without going through `error', `warning',
+   and similar functions.  */
+extern diagnostic_context *global_dc;
+
+/* The total count of a KIND of diagnostics emitted so far.  */
+#define diagnostic_kind_count(DC, DK) (DC)->diagnostic_count[(int) (DK)]
+
+/* The number of errors that have been issued so far.  Ideally, these
+   would take a diagnostic_context as an argument.  */
+#define errorcount diagnostic_kind_count (global_dc, DK_ERROR)
+/* Similarly, but for warnings.  */
+#define warningcount diagnostic_kind_count (global_dc, DK_WARNING)
+/* Similarly, but for sorrys.  */
+#define sorrycount diagnostic_kind_count (global_dc, DK_SORRY)
+
+/* Returns nonzero if warnings should be emitted.  */
+#define diagnostic_report_warnings_p(LOC)                      \
+  (!inhibit_warnings                                   \
+   && !(in_system_header_at (LOC) && !warn_system_headers))
+
+#define report_diagnostic(D) diagnostic_report_diagnostic (global_dc, D)
+
+/* Diagnostic related functions.  */
+extern void diagnostic_initialize (diagnostic_context *);
+extern void diagnostic_report_current_module (diagnostic_context *);
+extern void diagnostic_report_current_function (diagnostic_context *,
+                                               diagnostic_info *);
+
+/* Force diagnostics controlled by OPTIDX to be kind KIND.  */
+extern diagnostic_t diagnostic_classify_diagnostic (diagnostic_context *,
+                                                   int /* optidx */,
+                                                   diagnostic_t /* kind */);
+extern bool diagnostic_report_diagnostic (diagnostic_context *,
+                                         diagnostic_info *);
+#ifdef ATTRIBUTE_GCC_DIAG
+extern void diagnostic_set_info (diagnostic_info *, const char *, va_list *,
+                                location_t, diagnostic_t) ATTRIBUTE_GCC_DIAG(2,0);
+extern void diagnostic_set_info_translated (diagnostic_info *, const char *,
+                                           va_list *, location_t,
+                                           diagnostic_t)
+     ATTRIBUTE_GCC_DIAG(2,0);
+extern bool emit_diagnostic (diagnostic_t, location_t, int,
+                            const char *, ...) ATTRIBUTE_GCC_DIAG(4,5);
+#endif
+extern char *diagnostic_build_prefix (diagnostic_info *);
+
+/* Pure text formatting support functions.  */
+extern char *file_name_as_prefix (const char *);
+
+/* In tree-pretty-print.c  */
+extern void print_declaration (pretty_printer *, tree, int, int);
+extern int dump_generic_node (pretty_printer *, tree, int, int, bool);
+extern void print_generic_stmt (FILE *, tree, int);
+extern void print_generic_stmt_indented (FILE *, tree, int, int);
+extern void print_generic_expr (FILE *, tree, int);
+extern void print_generic_decl (FILE *, tree, int);
+extern void debug_c_tree (tree);
+extern void dump_omp_clauses (pretty_printer *, tree, int, int);
+
+/* In gimple-pretty-print.c  */
+extern void debug_generic_expr (tree);
+extern void debug_generic_stmt (tree);
+extern void debug_tree_chain (tree);
+extern void debug_gimple_stmt (gimple);
+extern void debug_gimple_seq (gimple_seq);
+extern void print_gimple_seq (FILE *, gimple_seq, int, int);
+extern void print_gimple_stmt (FILE *, gimple, int, int);
+extern void print_gimple_expr (FILE *, gimple, int, int);
+extern void dump_gimple_stmt (pretty_printer *, gimple, int, int);
+
+#endif /* ! GCC_DIAGNOSTIC_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/ipa-reference.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/ipa-reference.h
new file mode 100644 (file)
index 0000000..ba26ebb
--- /dev/null
@@ -0,0 +1,33 @@
+/* IPA handling of references.
+   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+   Contributed by Kenneth Zadeck <zadeck@naturalbridge.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_IPA_REFERENCE_H
+#define GCC_IPA_REFERENCE_H
+#include "bitmap.h"
+#include "tree.h"
+
+/* In ipa-reference.c  */
+bitmap ipa_reference_get_read_global (struct cgraph_node *fn);
+bitmap ipa_reference_get_written_global (struct cgraph_node *fn);
+bitmap ipa_reference_get_not_read_global (struct cgraph_node *fn);
+bitmap ipa_reference_get_not_written_global (struct cgraph_node *fn);
+
+#endif  /* GCC_IPA_REFERENCE_H  */
+
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/l-ipo.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/l-ipo.h
new file mode 100644 (file)
index 0000000..7cbda26
--- /dev/null
@@ -0,0 +1,59 @@
+/* Copyright (C) 2009. Free Software Foundation, Inc.
+   Contributed by Xinliang David Li (davidxl@google.com) and
+                  Raksit Ashok  (raksit@google.com)
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_L_IPO_H
+#define GCC_L_IPO_H
+
+/* Primary module's id (non-zero). If no module-info was read in, this will
+   be zero.  */
+extern unsigned primary_module_id;
+
+/* The macro to test if the compilation is in light weight IPO mode.
+   In this mode, the source module being compiled will be compiled
+   together with 0 or more auxiliary modules.  */
+#define L_IPO_COMP_MODE (primary_module_id != 0)
+
+/* The macro to test if the current module being parsed is the
+   primary source module.  */
+#define L_IPO_IS_PRIMARY_MODULE (current_module_id == primary_module_id)
+
+/* The macro to test if the current module being parsed is an
+   auxiliary source module.  */
+#define L_IPO_IS_AUXILIARY_MODULE (L_IPO_COMP_MODE && current_module_id \
+                             && current_module_id != primary_module_id)
+
+/* Current module id.  */
+extern unsigned current_module_id;
+extern struct gcov_module_info **module_infos;
+extern bool is_last_module (unsigned mod_id);
+
+extern unsigned num_in_fnames;
+extern int at_eof;
+extern bool parser_parsing_start;
+
+void push_module_scope (void);
+void pop_module_scope (void);
+tree lipo_save_decl (tree src);
+void lipo_restore_decl (tree, tree);
+void add_decl_to_current_module_scope (tree decl, void *b);
+int lipo_cmp_type (tree t1, tree t2);
+tree get_type_or_decl_name (tree);
+
+#endif
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/langhooks.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/langhooks.h
new file mode 100644 (file)
index 0000000..5afc60a
--- /dev/null
@@ -0,0 +1,494 @@
+/* The lang_hooks data structure.
+   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_LANG_HOOKS_H
+#define GCC_LANG_HOOKS_H
+
+/* This file should be #include-d after tree.h.  */
+
+struct diagnostic_context;
+struct diagnostic_info;
+
+struct gimplify_omp_ctx;
+
+struct array_descr_info;
+
+/* A print hook for print_tree ().  */
+typedef void (*lang_print_tree_hook) (FILE *, tree, int indent);
+
+enum classify_record
+  { RECORD_IS_STRUCT, RECORD_IS_CLASS, RECORD_IS_INTERFACE };
+
+/* The following hooks are documented in langhooks.c.  Must not be
+   NULL.  */
+
+struct lang_hooks_for_tree_inlining
+{
+  bool (*var_mod_type_p) (tree, tree);
+};
+
+struct lang_hooks_for_callgraph
+{
+  /* The node passed is a language-specific tree node.  If its contents
+     are relevant to use of other declarations, mark them.  */
+  tree (*analyze_expr) (tree *, int *);
+
+  /* Emit thunks associated to function.  */
+  void (*emit_associated_thunks) (tree);
+};
+
+/* The following hooks are used by tree-dump.c.  */
+
+struct lang_hooks_for_tree_dump
+{
+  /* Dump language-specific parts of tree nodes.  Returns nonzero if it
+     does not want the usual dumping of the second argument.  */
+  bool (*dump_tree) (void *, tree);
+
+  /* Determine type qualifiers in a language-specific way.  */
+  int (*type_quals) (const_tree);
+};
+
+/* Hooks related to types.  */
+
+struct lang_hooks_for_types
+{
+  /* Return a new type (with the indicated CODE), doing whatever
+     language-specific processing is required.  */
+  tree (*make_type) (enum tree_code);
+
+  /* Return what kind of RECORD_TYPE this is, mainly for purposes of
+     debug information.  If not defined, record types are assumed to
+     be structures.  */
+  enum classify_record (*classify_record) (tree);
+
+  /* Given MODE and UNSIGNEDP, return a suitable type-tree with that
+     mode.  */
+  tree (*type_for_mode) (enum machine_mode, int);
+
+  /* Given PRECISION and UNSIGNEDP, return a suitable type-tree for an
+     integer type with at least that precision.  */
+  tree (*type_for_size) (unsigned, int);
+
+  /* True if the type is an instantiation of a generic type,
+     e.g. C++ template implicit specializations.  */
+  bool (*generic_p) (const_tree);
+
+  /* Given a type, apply default promotions to unnamed function
+     arguments and return the new type.  Return the same type if no
+     change.  Required by any language that supports variadic
+     arguments.  The default hook dies.  */
+  tree (*type_promotes_to) (tree);
+
+  /* Register TYPE as a builtin type with the indicated NAME.  The
+     TYPE is placed in the outermost lexical scope.  The semantics
+     should be analogous to:
+
+       typedef TYPE NAME;
+
+     in C.  The default hook ignores the declaration.  */
+  void (*register_builtin_type) (tree, const char *);
+
+  /* This routine is called in tree.c to print an error message for
+     invalid use of an incomplete type.  VALUE is the expression that
+     was used (or 0 if that isn't known) and TYPE is the type that was
+     invalid.  */
+  void (*incomplete_type_error) (const_tree value, const_tree type);
+
+  /* Called from assign_temp to return the maximum size, if there is one,
+     for a type.  */
+  tree (*max_size) (const_tree);
+
+  /* Register language specific type size variables as potentially OpenMP
+     firstprivate variables.  */
+  void (*omp_firstprivatize_type_sizes) (struct gimplify_omp_ctx *, tree);
+
+  /* Return TRUE if TYPE1 and TYPE2 are identical for type hashing purposes.
+     Called only after doing all language independent checks.
+     At present, this function is only called when both TYPE1 and TYPE2 are
+     FUNCTION_TYPEs.  */
+  bool (*type_hash_eq) (const_tree, const_tree);
+
+  /* Return TRUE if TYPE uses a hidden descriptor and fills in information
+     for the debugger about the array bounds, strides, etc.  */
+  bool (*get_array_descr_info) (const_tree, struct array_descr_info *);
+
+  /* If we requested a pointer to a vector, build up the pointers that
+     we stripped off while looking for the inner type.  Similarly for
+     return values from functions.  The argument TYPE is the top of the
+     chain, and BOTTOM is the new type which we will point to.  */
+  tree (*reconstruct_complex_type) (tree, tree);
+
+  /* Nonzero if types that are identical are to be hashed so that only
+     one copy is kept.  If a language requires unique types for each
+     user-specified type, such as Ada, this should be set to TRUE.  */
+  bool hash_types;
+};
+
+/* Language hooks related to decls and the symbol table.  */
+
+struct lang_hooks_for_decls
+{
+  /* Returns nonzero if we are in the global binding level.  Ada
+     returns -1 for an undocumented reason used in stor-layout.c.  */
+  int (*global_bindings_p) (void);
+
+  /* Function to add a decl to the current scope level.  Takes one
+     argument, a decl to add.  Returns that decl, or, if the same
+     symbol is already declared, may return a different decl for that
+     name.  */
+  tree (*pushdecl) (tree);
+
+  /* Returns the chain of decls so far in the current scope level.  */
+  tree (*getdecls) (void);
+
+  /* Returns true when we should warn for an unused global DECL.
+     We will already have checked that it has static binding.  */
+  bool (*warn_unused_global) (const_tree);
+
+  /* Obtain a list of globals and do final output on them at end
+     of compilation */
+  void (*final_write_globals) (void);
+
+  /* True if this decl may be called via a sibcall.  */
+  bool (*ok_for_sibcall) (const_tree);
+
+  /* Return the COMDAT group into which this DECL should be placed.
+     It is known that the DECL belongs in *some* COMDAT group when
+     this hook is called.  The return value will be used immediately,
+     but not explicitly deallocated, so implementations should not use
+     xmalloc to allocate the string returned.  (Typically, the return
+     value will be the string already stored in an
+     IDENTIFIER_NODE.)  */
+  const char * (*comdat_group) (tree);
+
+  /* True if OpenMP should privatize what this DECL points to rather
+     than the DECL itself.  */
+  bool (*omp_privatize_by_reference) (const_tree);
+
+  /* Return sharing kind if OpenMP sharing attribute of DECL is
+     predetermined, OMP_CLAUSE_DEFAULT_UNSPECIFIED otherwise.  */
+  enum omp_clause_default_kind (*omp_predetermined_sharing) (tree);
+
+  /* Return true if DECL's DECL_VALUE_EXPR (if any) should be
+     disregarded in OpenMP construct, because it is going to be
+     remapped during OpenMP lowering.  SHARED is true if DECL
+     is going to be shared, false if it is going to be privatized.  */
+  bool (*omp_disregard_value_expr) (tree, bool);
+
+  /* Return true if DECL that is shared iff SHARED is true should
+     be put into OMP_CLAUSE_PRIVATE_DEBUG.  */
+  bool (*omp_private_debug_clause) (tree, bool);
+
+  /* Return true if DECL in private clause needs
+     OMP_CLAUSE_PRIVATE_OUTER_REF on the private clause.  */
+  bool (*omp_private_outer_ref) (tree);
+
+  /* Build and return code for a default constructor for DECL in
+     response to CLAUSE.  OUTER is corresponding outer region's
+     variable if needed.  Return NULL if nothing to be done.  */
+  tree (*omp_clause_default_ctor) (tree clause, tree decl, tree outer);
+
+  /* Build and return code for a copy constructor from SRC to DST.  */
+  tree (*omp_clause_copy_ctor) (tree clause, tree dst, tree src);
+
+  /* Similarly, except use an assignment operator instead.  */
+  tree (*omp_clause_assign_op) (tree clause, tree dst, tree src);
+
+  /* Build and return code destructing DECL.  Return NULL if nothing
+     to be done.  */
+  tree (*omp_clause_dtor) (tree clause, tree decl);
+
+  /* Do language specific checking on an implicitly determined clause.  */
+  void (*omp_finish_clause) (tree clause);
+};
+
+/* Lang hooks for LIPO.  */
+
+struct lang_hooks_for_lipo
+{
+  /* Add DECL to the list of predefined builtins.  */
+  void (*add_built_in_decl) (tree decl);
+
+  /* Save the tree (by making a copy) and binding values
+     for builtins before parsing start.  */
+  void (*save_built_in_decl_pre_parsing) (void);
+
+  /* Restore builtins and their bindings to their values
+     before parsing. */
+  void (*restore_built_in_decl_pre_parsing) (void);
+
+  /* Save the tree (by making a copy) and binding values for
+     builtins after parsing of a file.  */
+  void (*save_built_in_decl_post_module_parsing) (void);
+
+  /* Restore builtins and their bindings to their post
+     parsing values.  */
+  void (*restore_built_in_decl_post_module_parsing) (void);
+
+  /* Clear symbol binding for name ID. */
+  void (*clear_global_name_bindings) (tree id);
+
+  /* Return true if DECL in SCOPE is scoped in global/namespace scope,
+     otherwise return false. */
+  bool (*has_global_name) (tree decl, void *scope);
+
+  /* Return the actual size of the lang_decl struct for
+     decl T.  */
+  int (*get_lang_decl_size) (tree t);
+
+  /* Duplicate language specific type information from SRC
+   to DEST.  */
+  void (*dup_lang_type) (tree src, tree dest);
+
+  /* Copy DEST into SRC.  */
+  void (*copy_lang_type) (tree src, tree dest);
+
+  /* Process decls after parsing of a source module.  */
+  void (*process_pending_decls) (unsigned);
+
+  /* Clear the list of deferred functions.  */
+  void (*clear_deferred_fns) (void);
+
+  /* Return true if T is compiler generated.  */
+  bool (*is_compiler_generated_type) (tree t);
+
+  /* Compare language specific types T1 and T2.
+     Return 1 if they are compatible.  */
+  int (*cmp_lang_type) (tree t1, tree t2);
+};
+
+/* Language-specific hooks.  See langhooks-def.h for defaults.  */
+
+struct lang_hooks
+{
+  /* String identifying the front end.  e.g. "GNU C++".  */
+  const char *name;
+
+  /* sizeof (struct lang_identifier), so make_node () creates
+     identifier nodes long enough for the language-specific slots.  */
+  size_t identifier_size;
+
+  /* Determines the size of any language-specific tcc_constant or
+     tcc_exceptional nodes.  Since it is called from make_node, the
+     only information available is the tree code.  Expected to die
+     on unrecognized codes.  */
+  size_t (*tree_size) (enum tree_code);
+
+  /* The first callback made to the front end, for simple
+     initialization needed before any calls to handle_option.  Return
+     the language mask to filter the switch array with.  */
+  unsigned int (*init_options) (unsigned int argc, const char **argv);
+
+  /* Callback used to perform language-specific initialization for the
+     global diagnostic context structure.  */
+  void (*initialize_diagnostics) (struct diagnostic_context *);
+
+  /* Handle the switch CODE, which has real type enum opt_code from
+     options.h.  If the switch takes an argument, it is passed in ARG
+     which points to permanent storage.  The handler is responsible for
+     checking whether ARG is NULL, which indicates that no argument
+     was in fact supplied.  For -f and -W switches, VALUE is 1 or 0
+     for the positive and negative forms respectively.
+
+     Return 1 if the switch is valid, 0 if invalid, and -1 if it's
+     valid and should not be treated as language-independent too.  */
+  int (*handle_option) (size_t code, const char *arg, int value);
+
+  /* Return false to use the default complaint about a missing
+     argument, otherwise output a complaint and return true.  */
+  bool (*missing_argument) (const char *opt, size_t code);
+
+  /* Called when all command line options have been parsed to allow
+     further processing and initialization
+
+     Should return true to indicate that a compiler back-end is
+     not required, such as with the -E option.
+
+     If errorcount is nonzero after this call the compiler exits
+     immediately and the finish hook is not called.  */
+  bool (*post_options) (const char **);
+
+  /* Called after post_options to initialize the front end.  Return
+     false to indicate that no further compilation be performed, in
+     which case the finish hook is called immediately.  */
+  bool (*init) (void);
+
+  /* Called at the end of compilation, as a finalizer.  */
+  void (*finish) (void);
+
+  /* Parses the entire file.  The argument is nonzero to cause bison
+     parsers to dump debugging information during parsing.  */
+  void (*parse_file) (int);
+
+  /* Determines if it's ok for a function to have no noreturn attribute.  */
+  bool (*missing_noreturn_ok_p) (tree);
+
+  /* Called to obtain the alias set to be used for an expression or type.
+     Returns -1 if the language does nothing special for it.  */
+  alias_set_type (*get_alias_set) (tree);
+
+  /* Called by expand_expr for language-specific tree codes.
+     Fourth argument is actually an enum expand_modifier.  */
+  rtx (*expand_expr) (tree, rtx, enum machine_mode, int, rtx *);
+
+  /* Function to finish handling an incomplete decl at the end of
+     compilation.  Default hook is does nothing.  */
+  void (*finish_incomplete_decl) (tree);
+
+  /* Mark EXP saying that we need to be able to take the address of
+     it; it should not be allocated in a register.  Return true if
+     successful.  */
+  bool (*mark_addressable) (tree);
+
+  /* Hook called by staticp for language-specific tree codes.  */
+  tree (*staticp) (tree);
+
+  /* Replace the DECL_LANG_SPECIFIC data, which may be NULL, of the
+     DECL_NODE with a newly GC-allocated copy.  */
+  void (*dup_lang_specific_decl) (tree);
+
+  /* Set the DECL_ASSEMBLER_NAME for a node.  If it is the sort of
+     thing that the assembler should talk about, set
+     DECL_ASSEMBLER_NAME to an appropriate IDENTIFIER_NODE.
+     Otherwise, set it to the ERROR_MARK_NODE to ensure that the
+     assembler does not talk about it.  */
+  void (*set_decl_assembler_name) (tree);
+
+  /* The front end can add its own statistics to -fmem-report with
+     this hook.  It should output to stderr.  */
+  void (*print_statistics) (void);
+
+  /* Called by print_tree when there is a tree of class tcc_exceptional
+     that it doesn't know how to display.  */
+  lang_print_tree_hook print_xnode;
+
+  /* Called to print language-dependent parts of tcc_decl, tcc_type,
+     and IDENTIFIER_NODE nodes.  */
+  lang_print_tree_hook print_decl;
+  lang_print_tree_hook print_type;
+  lang_print_tree_hook print_identifier;
+
+  /* Computes the name to use to print a declaration.  DECL is the
+     non-NULL declaration in question.  VERBOSITY determines what
+     information will be printed: 0: DECL_NAME, demangled as
+     necessary.  1: and scope information.  2: and any other
+     information that might be interesting, such as function parameter
+     types in C++.  */
+  const char *(*decl_printable_name) (tree decl, int verbosity);
+
+  /* Computes the dwarf-2/3 name for a tree.  VERBOSITY determines what
+     information will be printed: 0: DECL_NAME, demangled as
+     necessary.  1: and scope information.  */
+  const char *(*dwarf_name) (tree, int verbosity);
+
+  /* This compares two types for equivalence ("compatible" in C-based languages).
+     This routine should only return 1 if it is sure.  It should not be used
+     in contexts where erroneously returning 0 causes problems.  */
+  int (*types_compatible_p) (tree x, tree y);
+
+  /* Called by report_error_function to print out function name.  */
+  void (*print_error_function) (struct diagnostic_context *, const char *,
+                               struct diagnostic_info *);
+
+  /* Called from expr_size to calculate the size of the value of an
+     expression in a language-dependent way.  Returns a tree for the size
+     in bytes.  A frontend can call lhd_expr_size to get the default
+     semantics in cases that it doesn't want to handle specially.  */
+  tree (*expr_size) (const_tree);
+
+  /* Convert a character from the host's to the target's character
+     set.  The character should be in what C calls the "basic source
+     character set" (roughly, the set of characters defined by plain
+     old ASCII).  The default is to return the character unchanged,
+     which is correct in most circumstances.  Note that both argument
+     and result should be sign-extended under -fsigned-char,
+     zero-extended under -fno-signed-char.  */
+  HOST_WIDE_INT (*to_target_charset) (HOST_WIDE_INT);
+
+  /* Pointers to machine-independent attribute tables, for front ends
+     using attribs.c.  If one is NULL, it is ignored.  Respectively, a
+     table of attributes specific to the language, a table of
+     attributes common to two or more languages (to allow easy
+     sharing), and a table of attributes for checking formats.  */
+  const struct attribute_spec *attribute_table;
+  const struct attribute_spec *common_attribute_table;
+  const struct attribute_spec *format_attribute_table;
+
+  struct lang_hooks_for_tree_inlining tree_inlining;
+
+  struct lang_hooks_for_callgraph callgraph;
+
+  struct lang_hooks_for_tree_dump tree_dump;
+
+  struct lang_hooks_for_decls decls;
+
+  struct lang_hooks_for_types types;
+
+  struct lang_hooks_for_lipo l_ipo;
+
+  /* Perform language-specific gimplification on the argument.  Returns an
+     enum gimplify_status, though we can't see that type here.  */
+  int (*gimplify_expr) (tree *, gimple_seq *, gimple_seq *);
+
+  /* Fold an OBJ_TYPE_REF expression to the address of a function.
+     KNOWN_TYPE carries the true type of the OBJ_TYPE_REF_OBJECT.  */
+  tree (*fold_obj_type_ref) (tree, tree);
+
+  /* Do language specific processing in the builtin function DECL  */
+  tree (*builtin_function) (tree decl);
+
+  /* Like builtin_function, but make sure the scope is the external scope.
+     This is used to delay putting in back end builtin functions until the ISA
+     that defines the builtin is declared via function specific target options,
+     which can save memory for machines like the x86_64 that have multiple
+     ISAs.  If this points to the same function as builtin_function, the
+     backend must add all of the builtins at program initialization time.  */
+  tree (*builtin_function_ext_scope) (tree decl);
+
+  /* Returns true if DECL is a user defined conversion operator (C++).  */
+  bool (*user_conv_function_p) (tree decl);
+
+  /* Used to set up the tree_contains_structure array for a frontend. */
+  void (*init_ts) (void);
+
+  /* Called by recompute_tree_invariant_for_addr_expr to go from EXPR
+     to a contained expression or DECL, possibly updating *TC or *SE
+     if in the process TREE_CONSTANT or TREE_SIDE_EFFECTS need updating.  */
+  tree (*expr_to_decl) (tree expr, bool *tc, bool *se);
+
+  /* Whenever you add entries here, make sure you adjust langhooks-def.h
+     and langhooks.c accordingly.  */
+};
+
+/* Each front end provides its own.  */
+extern const struct lang_hooks lang_hooks;
+extern tree add_builtin_function (const char *name, tree type,
+                                 int function_code, enum built_in_class cl,
+                                 const char *library_name,
+                                 tree attrs);
+
+extern tree add_builtin_function_ext_scope (const char *name, tree type,
+                                           int function_code,
+                                           enum built_in_class cl,
+                                           const char *library_name,
+                                           tree attrs);
+
+#endif /* GCC_LANG_HOOKS_H */
index 65d3530..dae422c 100644 (file)
@@ -249,6 +249,7 @@ extern int flag_pcc_struct_return;
 extern int flag_peel_loops;
 extern int flag_no_peephole;
 extern int flag_peephole2;
+extern int flag_pessimistic_inline_stack_limit;
 extern int post_ipa_mem_report;
 extern int pre_ipa_mem_report;
 extern int flag_predictive_commoning;
@@ -270,7 +271,6 @@ extern int flag_rerun_cse_after_loop;
 extern int flag_resched_modulo_sched;
 extern int flag_dyn_ipa;
 extern int flag_rounding_math;
-extern int flag_rtl_seqabstr;
 extern int flag_sample_profile;
 extern int flag_schedule_interblock;
 extern int flag_schedule_speculative;
@@ -447,6 +447,7 @@ struct cl_optimization GTY(())
   unsigned char flag_peel_loops;
   unsigned char flag_no_peephole;
   unsigned char flag_peephole2;
+  unsigned char flag_pessimistic_inline_stack_limit;
   unsigned char flag_predictive_commoning;
   unsigned char flag_prefetch_loop_arrays;
   unsigned char flag_profile_dump;
@@ -458,7 +459,6 @@ struct cl_optimization GTY(())
   unsigned char flag_rerun_cse_after_loop;
   unsigned char flag_resched_modulo_sched;
   unsigned char flag_rounding_math;
-  unsigned char flag_rtl_seqabstr;
   unsigned char flag_sample_profile;
   unsigned char flag_schedule_interblock;
   unsigned char flag_schedule_speculative;
@@ -1121,6 +1121,7 @@ enum opt_code
   OPT_fpeephole,                             /* -fpeephole */
   OPT_fpeephole2,                            /* -fpeephole2 */
   OPT_fpermissive,                           /* -fpermissive */
+  OPT_fpessimistic_inline_stack_limit,       /* -fpessimistic-inline-stack-limit */
   OPT_fpic,                                  /* -fpic */
   OPT_fpie,                                  /* -fpie */
   OPT_fplugin_arg_,                          /* -fplugin-arg- */
@@ -1163,7 +1164,6 @@ enum opt_code
   OPT_freschedule_modulo_scheduled_loops,    /* -freschedule-modulo-scheduled-loops */
   OPT_fripa,                                 /* -fripa */
   OPT_frounding_math,                        /* -frounding-math */
-  OPT_frtl_abstract_sequences,               /* -frtl-abstract-sequences */
   OPT_frtti,                                 /* -frtti */
   OPT_fsample_profile,                       /* -fsample-profile */
   OPT_fsample_profile_,                      /* -fsample-profile= */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/plugin.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/plugin.h
new file mode 100644 (file)
index 0000000..b610b23
--- /dev/null
@@ -0,0 +1,42 @@
+/* Header file for internal GCC plugin mechanism.
+   Copyright (C) 2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef PLUGIN_H
+#define PLUGIN_H
+
+#include "gcc-plugin.h"
+
+struct attribute_spec;
+
+extern void add_new_plugin (const char *);
+extern void parse_plugin_arg_opt (const char *);
+extern void invoke_plugin_callbacks (enum plugin_event, void *);
+extern void initialize_plugins (void);
+extern bool plugins_active_p (void);
+extern void dump_active_plugins (FILE *);
+extern void debug_active_plugins (void);
+extern void print_plugins_versions (FILE *file, const char *indent);
+extern void print_plugins_help (FILE *file, const char *indent);
+extern void finalize_plugins (void);
+
+/* In attribs.c.  */
+
+extern void register_attribute (const struct attribute_spec *attr);
+
+#endif /* PLUGIN_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/pretty-print.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/pretty-print.h
new file mode 100644 (file)
index 0000000..dd3f0c0
--- /dev/null
@@ -0,0 +1,337 @@
+/* Various declarations for language-independent pretty-print subroutines.
+   Copyright (C) 2002, 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
+   Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_PRETTY_PRINT_H
+#define GCC_PRETTY_PRINT_H
+
+#include "obstack.h"
+#include "input.h"
+
+/* Maximum number of format string arguments.  */
+#define PP_NL_ARGMAX   30
+
+/* The type of a text to be formatted according a format specification
+   along with a list of things.  */
+typedef struct
+{
+  const char *format_spec;
+  va_list *args_ptr;
+  int err_no;  /* for %m */
+  location_t *locus;
+  tree *abstract_origin;
+} text_info;
+
+/* How often diagnostics are prefixed by their locations:
+   o DIAGNOSTICS_SHOW_PREFIX_NEVER: never - not yet supported;
+   o DIAGNOSTICS_SHOW_PREFIX_ONCE: emit only once;
+   o DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE: emit each time a physical
+   line is started.  */
+typedef enum
+{
+  DIAGNOSTICS_SHOW_PREFIX_ONCE       = 0x0,
+  DIAGNOSTICS_SHOW_PREFIX_NEVER      = 0x1,
+  DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE = 0x2
+} diagnostic_prefixing_rule_t;
+
+/* The chunk_info data structure forms a stack of the results from the
+   first phase of formatting (pp_base_format) which have not yet been
+   output (pp_base_output_formatted_text).  A stack is necessary because
+   the diagnostic starter may decide to generate its own output by way
+   of the formatter.  */
+struct chunk_info
+{
+  /* Pointer to previous chunk on the stack.  */
+  struct chunk_info *prev;
+
+  /* Array of chunks to output.  Each chunk is a NUL-terminated string.
+     In the first phase of formatting, even-numbered chunks are
+     to be output verbatim, odd-numbered chunks are format specifiers.
+     The second phase replaces all odd-numbered chunks with formatted
+     text, and the third phase simply emits all the chunks in sequence
+     with appropriate line-wrapping.  */
+  const char *args[PP_NL_ARGMAX * 2];
+};
+
+/* The output buffer datatype.  This is best seen as an abstract datatype
+   whose fields should not be accessed directly by clients.  */
+typedef struct 
+{
+  /* Obstack where the text is built up.  */  
+  struct obstack formatted_obstack;
+
+  /* Obstack containing a chunked representation of the format
+     specification plus arguments.  */
+  struct obstack chunk_obstack;
+
+  /* Currently active obstack: one of the above two.  This is used so
+     that the text formatters don't need to know which phase we're in.  */
+  struct obstack *obstack;
+
+  /* Stack of chunk arrays.  These come from the chunk_obstack.  */
+  struct chunk_info *cur_chunk_array;
+
+  /* Where to output formatted text.  */
+  FILE *stream;
+
+  /* The amount of characters output so far.  */  
+  int line_length;
+
+  /* This must be large enough to hold any printed integer or
+     floating-point value.  */
+  char digit_buffer[128];
+} output_buffer;
+
+/* The type of pretty-printer flags passed to clients.  */
+typedef unsigned int pp_flags;
+
+typedef enum
+{
+  pp_none, pp_before, pp_after
+} pp_padding;
+
+/* Structure for switching in and out of verbatim mode in a convenient
+   manner.  */
+typedef struct
+{
+  /* Current prefixing rule.  */
+  diagnostic_prefixing_rule_t rule;
+
+  /* The ideal upper bound of number of characters per line, as suggested
+     by front-end.  */  
+  int line_cutoff;
+} pp_wrapping_mode_t;
+
+/* Maximum characters per line in automatic line wrapping mode.
+   Zero means don't wrap lines.  */
+#define pp_line_cutoff(PP)  pp_base (PP)->wrapping.line_cutoff
+
+/* Prefixing rule used in formatting a diagnostic message.  */
+#define pp_prefixing_rule(PP)  pp_base (PP)->wrapping.rule
+
+/* Get or set the wrapping mode as a single entity.  */
+#define pp_wrapping_mode(PP) pp_base (PP)->wrapping
+
+/* The type of a hook that formats client-specific data onto a pretty_pinter.
+   A client-supplied formatter returns true if everything goes well,
+   otherwise it returns false.  */
+typedef struct pretty_print_info pretty_printer;
+typedef bool (*printer_fn) (pretty_printer *, text_info *, const char *,
+                           int, bool, bool, bool);
+
+/* Client supplied function used to decode formats.  */
+#define pp_format_decoder(PP) pp_base (PP)->format_decoder
+
+/* TRUE if a newline character needs to be added before further
+   formatting.  */
+#define pp_needs_newline(PP)  pp_base (PP)->need_newline 
+
+/* True if PRETTY-PRINTER is in line-wrapping mode.  */
+#define pp_is_wrapping_line(PP) (pp_line_cutoff (PP) > 0)
+
+/* The amount of whitespace to be emitted when starting a new line.  */
+#define pp_indentation(PP) pp_base (PP)->indent_skip
+
+/* The data structure that contains the bare minimum required to do
+   proper pretty-printing.  Clients may derived from this structure
+   and add additional fields they need.  */
+struct pretty_print_info
+{
+  /* Where we print external representation of ENTITY.  */
+  output_buffer *buffer;
+
+  /* The prefix for each new line.  */
+  const char *prefix;
+  
+  /* Where to put whitespace around the entity being formatted.  */
+  pp_padding padding;
+  
+  /* The real upper bound of number of characters per line, taking into
+     account the case of a very very looong prefix.  */  
+  int maximum_length;
+
+  /* Indentation count.  */
+  int indent_skip;
+
+  /* Current wrapping mode.  */
+  pp_wrapping_mode_t wrapping;
+
+  /* If non-NULL, this function formats a TEXT into the BUFFER.  When called,
+     TEXT->format_spec points to a format code.  FORMAT_DECODER should call
+     pp_string (and related functions) to add data to the BUFFER.
+     FORMAT_DECODER can read arguments from *TEXT->args_pts using VA_ARG.
+     If the BUFFER needs additional characters from the format string, it
+     should advance the TEXT->format_spec as it goes.  When FORMAT_DECODER
+     returns, TEXT->format_spec should point to the last character processed.
+  */
+  printer_fn format_decoder;
+
+  /* Nonzero if current PREFIX was emitted at least once.  */
+  bool emitted_prefix;
+
+  /* Nonzero means one should emit a newline before outputting anything.  */
+  bool need_newline;
+};
+
+#define pp_set_line_maximum_length(PP, L) \
+   pp_base_set_line_maximum_length (pp_base (PP), L)
+#define pp_set_prefix(PP, P)    pp_base_set_prefix (pp_base (PP), P)
+#define pp_destroy_prefix(PP)   pp_base_destroy_prefix (pp_base (PP))
+#define pp_remaining_character_count_for_line(PP) \
+  pp_base_remaining_character_count_for_line (pp_base (PP))
+#define pp_clear_output_area(PP) \
+  pp_base_clear_output_area (pp_base (PP))
+#define pp_formatted_text(PP)   pp_base_formatted_text (pp_base (PP))
+#define pp_last_position_in_text(PP) \
+  pp_base_last_position_in_text (pp_base (PP))
+#define pp_emit_prefix(PP)      pp_base_emit_prefix (pp_base (PP))
+#define pp_append_text(PP, B, E) \
+  pp_base_append_text (pp_base (PP), B, E)
+#define pp_flush(PP)            pp_base_flush (pp_base (PP))
+#define pp_format(PP, TI)       pp_base_format (pp_base (PP), TI)
+#define pp_output_formatted_text(PP) \
+  pp_base_output_formatted_text (pp_base (PP))
+#define pp_format_verbatim(PP, TI) \
+  pp_base_format_verbatim (pp_base (PP), TI)
+
+#define pp_character(PP, C)     pp_base_character (pp_base (PP), C)
+#define pp_string(PP, S)        pp_base_string (pp_base (PP), S)
+#define pp_newline(PP)          pp_base_newline (pp_base (PP))
+
+#define pp_space(PP)            pp_character (PP, ' ')
+#define pp_left_paren(PP)       pp_character (PP, '(')
+#define pp_right_paren(PP)      pp_character (PP, ')')
+#define pp_left_bracket(PP)     pp_character (PP, '[')
+#define pp_right_bracket(PP)    pp_character (PP, ']')
+#define pp_left_brace(PP)       pp_character (PP, '{')
+#define pp_right_brace(PP)      pp_character (PP, '}')
+#define pp_semicolon(PP)        pp_character (PP, ';')
+#define pp_comma(PP)            pp_string (PP, ", ")
+#define pp_dot(PP)              pp_character (PP, '.')
+#define pp_colon(PP)            pp_character (PP, ':')
+#define pp_colon_colon(PP)      pp_string (PP, "::")
+#define pp_arrow(PP)            pp_string (PP, "->")
+#define pp_equal(PP)            pp_character (PP, '=')
+#define pp_question(PP)         pp_character (PP, '?')
+#define pp_bar(PP)              pp_character (PP, '|')
+#define pp_carret(PP)           pp_character (PP, '^')
+#define pp_ampersand(PP)        pp_character (PP, '&')
+#define pp_less(PP)             pp_character (PP, '<')
+#define pp_greater(PP)          pp_character (PP, '>')
+#define pp_plus(PP)             pp_character (PP, '+')
+#define pp_minus(PP)            pp_character (PP, '-')
+#define pp_star(PP)             pp_character (PP, '*')
+#define pp_slash(PP)            pp_character (PP, '/')
+#define pp_modulo(PP)           pp_character (PP, '%')
+#define pp_exclamation(PP)      pp_character (PP, '!')
+#define pp_complement(PP)       pp_character (PP, '~')
+#define pp_quote(PP)            pp_character (PP, '\'')
+#define pp_backquote(PP)        pp_character (PP, '`')
+#define pp_doublequote(PP)      pp_character (PP, '"')
+#define pp_newline_and_indent(PP, N) \
+  do {                               \
+    pp_indentation (PP) += N;        \
+    pp_newline (PP);                 \
+    pp_base_indent (pp_base (PP));   \
+    pp_needs_newline (PP) = false;   \
+  } while (0)
+#define pp_maybe_newline_and_indent(PP, N) \
+  if (pp_needs_newline (PP)) pp_newline_and_indent (PP, N)
+#define pp_maybe_space(PP)   pp_base_maybe_space (pp_base (PP))
+#define pp_separate_with(PP, C)     \
+   do {                             \
+     pp_character (PP, C);          \
+     pp_space (PP);                 \
+   } while (0)
+#define pp_scalar(PP, FORMAT, SCALAR)                        \
+  do                                                         \
+    {                                                        \
+      sprintf (pp_buffer (PP)->digit_buffer, FORMAT, SCALAR); \
+      pp_string (PP, pp_buffer (PP)->digit_buffer);           \
+    }                                                        \
+  while (0)
+#define pp_decimal_int(PP, I)  pp_scalar (PP, "%d", I)
+#define pp_wide_integer(PP, I) \
+   pp_scalar (PP, HOST_WIDE_INT_PRINT_DEC, (HOST_WIDE_INT) I)
+#define pp_widest_integer(PP, I) \
+   pp_scalar (PP, HOST_WIDEST_INT_PRINT_DEC, (HOST_WIDEST_INT) I)
+#define pp_pointer(PP, P)      pp_scalar (PP, "%p", P)
+
+#define pp_identifier(PP, ID)  pp_string (PP, ID)
+#define pp_tree_identifier(PP, T)                      \
+  pp_append_text(PP, IDENTIFIER_POINTER (T), \
+                 IDENTIFIER_POINTER (T) + IDENTIFIER_LENGTH (T))
+
+#define pp_unsupported_tree(PP, T)                         \
+  pp_verbatim (pp_base (PP), "#%qs not supported by %s#", \
+               tree_code_name[(int) TREE_CODE (T)], __FUNCTION__)
+
+
+#define pp_buffer(PP) pp_base (PP)->buffer
+/* Clients that directly derive from pretty_printer need to override
+   this macro to return a pointer to the base pretty_printer structure.  */
+#define pp_base(PP) (PP)
+
+extern void pp_construct (pretty_printer *, const char *, int);
+extern void pp_base_set_line_maximum_length (pretty_printer *, int);
+extern void pp_base_set_prefix (pretty_printer *, const char *);
+extern void pp_base_destroy_prefix (pretty_printer *);
+extern int pp_base_remaining_character_count_for_line (pretty_printer *);
+extern void pp_base_clear_output_area (pretty_printer *);
+extern const char *pp_base_formatted_text (pretty_printer *);
+extern const char *pp_base_last_position_in_text (const pretty_printer *);
+extern void pp_base_emit_prefix (pretty_printer *);
+extern void pp_base_append_text (pretty_printer *, const char *, const char *);
+
+/* This header may be included before toplev.h, hence the duplicate
+   definitions to allow for GCC-specific formats.  */
+#if GCC_VERSION >= 3005
+#define ATTRIBUTE_GCC_PPDIAG(m, n) __attribute__ ((__format__ (__gcc_diag__, m ,n))) ATTRIBUTE_NONNULL(m)
+#else
+#define ATTRIBUTE_GCC_PPDIAG(m, n) ATTRIBUTE_NONNULL(m)
+#endif
+extern void pp_printf (pretty_printer *, const char *, ...)
+     ATTRIBUTE_GCC_PPDIAG(2,3);
+
+extern void pp_verbatim (pretty_printer *, const char *, ...)
+     ATTRIBUTE_GCC_PPDIAG(2,3);
+extern void pp_base_flush (pretty_printer *);
+extern void pp_base_format (pretty_printer *, text_info *);
+extern void pp_base_output_formatted_text (pretty_printer *);
+extern void pp_base_format_verbatim (pretty_printer *, text_info *);
+
+extern void pp_base_indent (pretty_printer *);
+extern void pp_base_newline (pretty_printer *);
+extern void pp_base_character (pretty_printer *, int);
+extern void pp_base_string (pretty_printer *, const char *);
+extern void pp_write_text_to_stream (pretty_printer *pp);
+extern void pp_base_maybe_space (pretty_printer *);
+
+/* Switch into verbatim mode and return the old mode.  */
+static inline pp_wrapping_mode_t
+pp_set_verbatim_wrapping_ (pretty_printer *pp)
+{
+  pp_wrapping_mode_t oldmode = pp_wrapping_mode (pp);
+  pp_line_cutoff (pp) = 0;
+  pp_prefixing_rule (pp) = DIAGNOSTICS_SHOW_PREFIX_NEVER;
+  return oldmode;
+}
+#define pp_set_verbatim_wrapping(PP) pp_set_verbatim_wrapping_ (pp_base (PP))
+
+#endif /* GCC_PRETTY_PRINT_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/splay-tree.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/splay-tree.h
new file mode 100644 (file)
index 0000000..b03c581
--- /dev/null
@@ -0,0 +1,152 @@
+/* A splay-tree datatype.  
+   Copyright 1998, 1999, 2000, 2002, 2007 Free Software Foundation, Inc.
+   Contributed by Mark Mitchell (mark@markmitchell.com).
+
+   This file is part of GCC.
+   
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING.  If not, write to
+   the Free Software Foundation, 51 Franklin Street - Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* For an easily readable description of splay-trees, see:
+
+     Lewis, Harry R. and Denenberg, Larry.  Data Structures and Their
+     Algorithms.  Harper-Collins, Inc.  1991.  
+
+   The major feature of splay trees is that all basic tree operations
+   are amortized O(log n) time for a tree with n nodes.  */
+
+#ifndef _SPLAY_TREE_H
+#define _SPLAY_TREE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#include "ansidecl.h"
+
+#ifndef _WIN64
+  typedef unsigned long int libi_uhostptr_t;
+  typedef long int libi_shostptr_t;
+#else
+  typedef unsigned long long libi_uhostptr_t;
+  typedef long long libi_shostptr_t;
+#endif
+
+#ifndef GTY
+#define GTY(X)
+#endif
+
+/* Use typedefs for the key and data types to facilitate changing
+   these types, if necessary.  These types should be sufficiently wide
+   that any pointer or scalar can be cast to these types, and then
+   cast back, without loss of precision.  */
+typedef libi_uhostptr_t splay_tree_key;
+typedef libi_uhostptr_t splay_tree_value;
+
+/* Forward declaration for a node in the tree.  */
+typedef struct splay_tree_node_s *splay_tree_node;
+
+/* The type of a function which compares two splay-tree keys.  The
+   function should return values as for qsort.  */
+typedef int (*splay_tree_compare_fn) (splay_tree_key, splay_tree_key);
+
+/* The type of a function used to deallocate any resources associated
+   with the key.  */
+typedef void (*splay_tree_delete_key_fn) (splay_tree_key);
+
+/* The type of a function used to deallocate any resources associated
+   with the value.  */
+typedef void (*splay_tree_delete_value_fn) (splay_tree_value);
+
+/* The type of a function used to iterate over the tree.  */
+typedef int (*splay_tree_foreach_fn) (splay_tree_node, void*);
+
+/* The type of a function used to allocate memory for tree root and
+   node structures.  The first argument is the number of bytes needed;
+   the second is a data pointer the splay tree functions pass through
+   to the allocator.  This function must never return zero.  */
+typedef void *(*splay_tree_allocate_fn) (int, void *);
+
+/* The type of a function used to free memory allocated using the
+   corresponding splay_tree_allocate_fn.  The first argument is the
+   memory to be freed; the latter is a data pointer the splay tree
+   functions pass through to the freer.  */
+typedef void (*splay_tree_deallocate_fn) (void *, void *);
+
+/* The nodes in the splay tree.  */
+struct splay_tree_node_s GTY(())
+{
+  /* The key.  */
+  splay_tree_key GTY ((use_param1)) key;
+
+  /* The value.  */
+  splay_tree_value GTY ((use_param2)) value;
+
+  /* The left and right children, respectively.  */
+  splay_tree_node GTY ((use_params)) left;
+  splay_tree_node GTY ((use_params)) right;
+};
+
+/* The splay tree itself.  */
+struct splay_tree_s GTY(())
+{
+  /* The root of the tree.  */
+  splay_tree_node GTY ((use_params)) root;
+
+  /* The comparision function.  */
+  splay_tree_compare_fn comp;
+
+  /* The deallocate-key function.  NULL if no cleanup is necessary.  */
+  splay_tree_delete_key_fn delete_key;
+
+  /* The deallocate-value function.  NULL if no cleanup is necessary.  */
+  splay_tree_delete_value_fn delete_value;
+
+  /* Allocate/free functions, and a data pointer to pass to them.  */
+  splay_tree_allocate_fn allocate;
+  splay_tree_deallocate_fn deallocate;
+  void * GTY((skip)) allocate_data;
+};
+
+typedef struct splay_tree_s *splay_tree;
+
+extern splay_tree splay_tree_new (splay_tree_compare_fn,
+                                 splay_tree_delete_key_fn,
+                                 splay_tree_delete_value_fn);
+extern splay_tree splay_tree_new_with_allocator (splay_tree_compare_fn,
+                                                splay_tree_delete_key_fn,
+                                                splay_tree_delete_value_fn,
+                                                splay_tree_allocate_fn,
+                                                splay_tree_deallocate_fn,
+                                                void *);
+extern void splay_tree_delete (splay_tree);
+extern splay_tree_node splay_tree_insert (splay_tree,
+                                         splay_tree_key,
+                                         splay_tree_value);
+extern void splay_tree_remove  (splay_tree, splay_tree_key);
+extern splay_tree_node splay_tree_lookup (splay_tree, splay_tree_key);
+extern splay_tree_node splay_tree_predecessor (splay_tree, splay_tree_key);
+extern splay_tree_node splay_tree_successor (splay_tree, splay_tree_key);
+extern splay_tree_node splay_tree_max (splay_tree);
+extern splay_tree_node splay_tree_min (splay_tree);
+extern int splay_tree_foreach (splay_tree, splay_tree_foreach_fn, void*);
+extern int splay_tree_compare_ints (splay_tree_key, splay_tree_key);
+extern int splay_tree_compare_pointers (splay_tree_key,        splay_tree_key);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _SPLAY_TREE_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tm-preds.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tm-preds.h
new file mode 100644 (file)
index 0000000..194f95e
--- /dev/null
@@ -0,0 +1,161 @@
+/* Generated automatically by the program 'build/genpreds'
+   from the machine description file '../../../../android-toolchain/gcc-4.4.0/gcc/config/arm/arm.md'.  */
+
+#ifndef GCC_TM_PREDS_H
+#define GCC_TM_PREDS_H
+
+#ifdef HAVE_MACHINE_MODES
+extern int general_operand (rtx, enum machine_mode);
+extern int address_operand (rtx, enum machine_mode);
+extern int register_operand (rtx, enum machine_mode);
+extern int pmode_register_operand (rtx, enum machine_mode);
+extern int scratch_operand (rtx, enum machine_mode);
+extern int immediate_operand (rtx, enum machine_mode);
+extern int const_int_operand (rtx, enum machine_mode);
+extern int const_double_operand (rtx, enum machine_mode);
+extern int nonimmediate_operand (rtx, enum machine_mode);
+extern int nonmemory_operand (rtx, enum machine_mode);
+extern int push_operand (rtx, enum machine_mode);
+extern int pop_operand (rtx, enum machine_mode);
+extern int memory_operand (rtx, enum machine_mode);
+extern int indirect_operand (rtx, enum machine_mode);
+extern int comparison_operator (rtx, enum machine_mode);
+extern int s_register_operand (rtx, enum machine_mode);
+extern int arm_hard_register_operand (rtx, enum machine_mode);
+extern int low_register_operand (rtx, enum machine_mode);
+extern int low_reg_or_int_operand (rtx, enum machine_mode);
+extern int arm_general_register_operand (rtx, enum machine_mode);
+extern int f_register_operand (rtx, enum machine_mode);
+extern int reg_or_int_operand (rtx, enum machine_mode);
+extern int arm_immediate_operand (rtx, enum machine_mode);
+extern int arm_neg_immediate_operand (rtx, enum machine_mode);
+extern int arm_not_immediate_operand (rtx, enum machine_mode);
+extern int arm_rhs_operand (rtx, enum machine_mode);
+extern int arm_rhsm_operand (rtx, enum machine_mode);
+extern int arm_add_operand (rtx, enum machine_mode);
+extern int arm_addimm_operand (rtx, enum machine_mode);
+extern int arm_not_operand (rtx, enum machine_mode);
+extern int offsettable_memory_operand (rtx, enum machine_mode);
+extern int call_memory_operand (rtx, enum machine_mode);
+extern int arm_reload_memory_operand (rtx, enum machine_mode);
+extern int arm_float_rhs_operand (rtx, enum machine_mode);
+extern int arm_float_add_operand (rtx, enum machine_mode);
+extern int vfp_compare_operand (rtx, enum machine_mode);
+extern int arm_float_compare_operand (rtx, enum machine_mode);
+extern int index_operand (rtx, enum machine_mode);
+extern int shiftable_operator (rtx, enum machine_mode);
+extern int logical_binary_operator (rtx, enum machine_mode);
+extern int shift_operator (rtx, enum machine_mode);
+extern int thumb_16bit_operator (rtx, enum machine_mode);
+extern int equality_operator (rtx, enum machine_mode);
+extern int arm_comparison_operator (rtx, enum machine_mode);
+extern int minmax_operator (rtx, enum machine_mode);
+extern int cc_register (rtx, enum machine_mode);
+extern int dominant_cc_register (rtx, enum machine_mode);
+extern int arm_extendqisi_mem_op (rtx, enum machine_mode);
+extern int arm_reg_or_extendqisi_mem_op (rtx, enum machine_mode);
+extern int power_of_two_operand (rtx, enum machine_mode);
+extern int nonimmediate_di_operand (rtx, enum machine_mode);
+extern int di_operand (rtx, enum machine_mode);
+extern int nonimmediate_soft_df_operand (rtx, enum machine_mode);
+extern int soft_df_operand (rtx, enum machine_mode);
+extern int const_shift_operand (rtx, enum machine_mode);
+extern int load_multiple_operation (rtx, enum machine_mode);
+extern int store_multiple_operation (rtx, enum machine_mode);
+extern int multi_register_push (rtx, enum machine_mode);
+extern int thumb1_cmp_operand (rtx, enum machine_mode);
+extern int thumb1_cmpneg_operand (rtx, enum machine_mode);
+extern int thumb_cbrch_target_operand (rtx, enum machine_mode);
+extern int cirrus_register_operand (rtx, enum machine_mode);
+extern int cirrus_fp_register (rtx, enum machine_mode);
+extern int cirrus_shift_const (rtx, enum machine_mode);
+extern int const_multiple_of_8_operand (rtx, enum machine_mode);
+extern int imm_for_neon_mov_operand (rtx, enum machine_mode);
+extern int imm_for_neon_logic_operand (rtx, enum machine_mode);
+extern int imm_for_neon_inv_logic_operand (rtx, enum machine_mode);
+extern int neon_logic_op2 (rtx, enum machine_mode);
+extern int neon_inv_logic_op2 (rtx, enum machine_mode);
+extern int neon_lane_number (rtx, enum machine_mode);
+#endif /* HAVE_MACHINE_MODES */
+
+enum constraint_num
+{
+  CONSTRAINT__UNKNOWN = 0,
+  CONSTRAINT_f,
+  CONSTRAINT_t,
+  CONSTRAINT_v,
+  CONSTRAINT_w,
+  CONSTRAINT_x,
+  CONSTRAINT_y,
+  CONSTRAINT_z,
+  CONSTRAINT_l,
+  CONSTRAINT_h,
+  CONSTRAINT_k,
+  CONSTRAINT_b,
+  CONSTRAINT_c,
+  CONSTRAINT_I,
+  CONSTRAINT_J,
+  CONSTRAINT_K,
+  CONSTRAINT_L,
+  CONSTRAINT_M,
+  CONSTRAINT_N,
+  CONSTRAINT_O,
+  CONSTRAINT_Pa,
+  CONSTRAINT_Pb,
+  CONSTRAINT_G,
+  CONSTRAINT_H,
+  CONSTRAINT_Da,
+  CONSTRAINT_Db,
+  CONSTRAINT_Dc,
+  CONSTRAINT_Dn,
+  CONSTRAINT_Dl,
+  CONSTRAINT_DL,
+  CONSTRAINT_Dv,
+  CONSTRAINT_Ut,
+  CONSTRAINT_Uv,
+  CONSTRAINT_Uy,
+  CONSTRAINT_Un,
+  CONSTRAINT_Us,
+  CONSTRAINT_Uq,
+  CONSTRAINT_Q,
+  CONSTRAINT__LIMIT
+};
+
+extern enum constraint_num lookup_constraint (const char *);
+extern bool constraint_satisfied_p (rtx, enum constraint_num);
+
+static inline size_t
+insn_constraint_len (char fc, const char *str ATTRIBUTE_UNUSED)
+{
+  switch (fc)
+    {
+    case 'D': return 2;
+    case 'P': return 2;
+    case 'U': return 2;
+    default: break;
+    }
+  return 1;
+}
+
+#define CONSTRAINT_LEN(c_,s_) insn_constraint_len (c_,s_)
+
+extern enum reg_class regclass_for_constraint (enum constraint_num);
+#define REG_CLASS_FROM_CONSTRAINT(c_,s_) \
+    regclass_for_constraint (lookup_constraint (s_))
+
+extern bool insn_const_int_ok_for_constraint (HOST_WIDE_INT, enum constraint_num);
+#define CONST_OK_FOR_CONSTRAINT_P(v_,c_,s_) \
+    insn_const_int_ok_for_constraint (v_, lookup_constraint (s_))
+
+#define CONST_DOUBLE_OK_FOR_CONSTRAINT_P(v_,c_,s_) \
+    constraint_satisfied_p (v_, lookup_constraint (s_))
+
+#define EXTRA_CONSTRAINT_STR(v_,c_,s_) \
+    constraint_satisfied_p (v_, lookup_constraint (s_))
+
+extern bool insn_extra_memory_constraint (enum constraint_num);
+#define EXTRA_MEMORY_CONSTRAINT(c_,s_) insn_extra_memory_constraint (lookup_constraint (s_))
+
+#define EXTRA_ADDRESS_CONSTRAINT(c_,s_) false
+
+#endif /* tm-preds.h */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-dump.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-dump.h
new file mode 100644 (file)
index 0000000..ba1b4a4
--- /dev/null
@@ -0,0 +1,101 @@
+/* Tree-dumping functionality for intermediate representation.
+   Copyright (C) 1999, 2000, 2003, 2004, 2005, 2007, 2008
+   Free Software Foundation, Inc.
+   Written by Mark Mitchell <mark@codesourcery.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_TREE_DUMP_H
+#define GCC_TREE_DUMP_H
+
+#include "splay-tree.h"
+#include "tree-pass.h"
+
+typedef struct dump_info *dump_info_p;
+
+/* Flags used with queue functions.  */
+#define DUMP_NONE     0
+#define DUMP_BINFO    1
+
+/* Information about a node to be dumped.  */
+
+typedef struct dump_node_info
+{
+  /* The index for the node.  */
+  unsigned int index;
+  /* Nonzero if the node is a binfo.  */
+  unsigned int binfo_p : 1;
+} *dump_node_info_p;
+
+/* A dump_queue is a link in the queue of things to be dumped.  */
+
+typedef struct dump_queue
+{
+  /* The queued tree node.  */
+  splay_tree_node node;
+  /* The next node in the queue.  */
+  struct dump_queue *next;
+} *dump_queue_p;
+
+/* A dump_info gives information about how we should perform the dump
+   and about the current state of the dump.  */
+
+struct dump_info
+{
+  /* The stream on which to dump the information.  */
+  FILE *stream;
+  /* The original node.  */
+  const_tree node;
+  /* User flags.  */
+  int flags;
+  /* The next unused node index.  */
+  unsigned int index;
+  /* The next column.  */
+  unsigned int column;
+  /* The first node in the queue of nodes to be written out.  */
+  dump_queue_p queue;
+  /* The last node in the queue.  */
+  dump_queue_p queue_end;
+  /* Free queue nodes.  */
+  dump_queue_p free_list;
+  /* The tree nodes which we have already written out.  The
+     keys are the addresses of the nodes; the values are the integer
+     indices we assigned them.  */
+  splay_tree nodes;
+};
+
+/* Dump the CHILD and its children.  */
+#define dump_child(field, child) \
+  queue_and_dump_index (di, field, child, DUMP_NONE)
+
+extern void dump_pointer (dump_info_p, const char *, void *);
+extern void dump_int (dump_info_p, const char *, int);
+extern void dump_string (dump_info_p, const char *);
+extern void dump_string_field (dump_info_p, const char *, const char *);
+extern void dump_stmt (dump_info_p, const_tree);
+extern void queue_and_dump_index (dump_info_p, const char *, const_tree, int);
+extern void queue_and_dump_type (dump_info_p, const_tree);
+extern void dump_function (enum tree_dump_index, tree);
+extern void dump_function_to_file (tree, FILE *, int);
+extern void debug_function (tree, int);
+extern int dump_flag (dump_info_p, int, const_tree);
+
+extern unsigned int dump_register (const char *, const char *, const char *, 
+                                  int);
+
+
+#endif /* ! GCC_TREE_DUMP_H */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-flow-inline.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-flow-inline.h
new file mode 100644 (file)
index 0000000..aeba172
--- /dev/null
@@ -0,0 +1,1486 @@
+/* Inline functions for tree-flow.h
+   Copyright (C) 2001, 2003, 2005, 2006, 2007, 2008 Free Software
+   Foundation, Inc.
+   Contributed by Diego Novillo <dnovillo@redhat.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef _TREE_FLOW_INLINE_H
+#define _TREE_FLOW_INLINE_H 1
+
+/* Inline functions for manipulating various data structures defined in
+   tree-flow.h.  See tree-flow.h for documentation.  */
+
+/* Return true when gimple SSA form was built.
+   gimple_in_ssa_p is queried by gimplifier in various early stages before SSA
+   infrastructure is initialized.  Check for presence of the datastructures
+   at first place.  */
+static inline bool
+gimple_in_ssa_p (const struct function *fun)
+{
+  return fun && fun->gimple_df && fun->gimple_df->in_ssa_p;
+}
+
+/* 'true' after aliases have been computed (see compute_may_aliases).  */
+static inline bool
+gimple_aliases_computed_p (const struct function *fun)
+{
+  gcc_assert (fun && fun->gimple_df);
+  return fun->gimple_df->aliases_computed_p;
+}
+
+/* Addressable variables in the function.  If bit I is set, then
+   REFERENCED_VARS (I) has had its address taken.  Note that
+   CALL_CLOBBERED_VARS and ADDRESSABLE_VARS are not related.  An
+   addressable variable is not necessarily call-clobbered (e.g., a
+   local addressable whose address does not escape) and not all
+   call-clobbered variables are addressable (e.g., a local static
+   variable).  */
+static inline bitmap
+gimple_addressable_vars (const struct function *fun)
+{
+  gcc_assert (fun && fun->gimple_df);
+  return fun->gimple_df->addressable_vars;
+}
+
+/* Call clobbered variables in the function.  If bit I is set, then
+   REFERENCED_VARS (I) is call-clobbered.  */
+static inline bitmap
+gimple_call_clobbered_vars (const struct function *fun)
+{
+  gcc_assert (fun && fun->gimple_df);
+  return fun->gimple_df->call_clobbered_vars;
+}
+
+/* Call-used variables in the function.  If bit I is set, then
+   REFERENCED_VARS (I) is call-used at pure function call-sites.  */
+static inline bitmap
+gimple_call_used_vars (const struct function *fun)
+{
+  gcc_assert (fun && fun->gimple_df);
+  return fun->gimple_df->call_used_vars;
+}
+
+/* Array of all variables referenced in the function.  */
+static inline htab_t
+gimple_referenced_vars (const struct function *fun)
+{
+  if (!fun->gimple_df)
+    return NULL;
+  return fun->gimple_df->referenced_vars;
+}
+
+/* Artificial variable used to model the effects of function calls.  */
+static inline tree
+gimple_global_var (const struct function *fun)
+{
+  gcc_assert (fun && fun->gimple_df);
+  return fun->gimple_df->global_var;
+}
+
+/* Artificial variable used to model the effects of nonlocal
+   variables.  */
+static inline tree
+gimple_nonlocal_all (const struct function *fun)
+{
+  gcc_assert (fun && fun->gimple_df);
+  return fun->gimple_df->nonlocal_all;
+}
+
+/* Initialize the hashtable iterator HTI to point to hashtable TABLE */
+
+static inline void *
+first_htab_element (htab_iterator *hti, htab_t table)
+{
+  hti->htab = table;
+  hti->slot = table->entries;
+  hti->limit = hti->slot + htab_size (table);
+  do
+    {
+      PTR x = *(hti->slot);
+      if (x != HTAB_EMPTY_ENTRY && x != HTAB_DELETED_ENTRY)
+       break;
+    } while (++(hti->slot) < hti->limit);
+  
+  if (hti->slot < hti->limit)
+    return *(hti->slot);
+  return NULL;
+}
+
+/* Return current non-empty/deleted slot of the hashtable pointed to by HTI,
+   or NULL if we have  reached the end.  */
+
+static inline bool
+end_htab_p (const htab_iterator *hti)
+{
+  if (hti->slot >= hti->limit)
+    return true;
+  return false;
+}
+
+/* Advance the hashtable iterator pointed to by HTI to the next element of the
+   hashtable.  */
+
+static inline void *
+next_htab_element (htab_iterator *hti)
+{
+  while (++(hti->slot) < hti->limit)
+    {
+      PTR x = *(hti->slot);
+      if (x != HTAB_EMPTY_ENTRY && x != HTAB_DELETED_ENTRY)
+       return x;
+    };
+  return NULL;
+}
+
+/* Initialize ITER to point to the first referenced variable in the
+   referenced_vars hashtable, and return that variable.  */
+
+static inline tree
+first_referenced_var (referenced_var_iterator *iter)
+{
+  return (tree) first_htab_element (&iter->hti,
+                                   gimple_referenced_vars (cfun));
+}
+
+/* Return true if we have hit the end of the referenced variables ITER is
+   iterating through.  */
+
+static inline bool
+end_referenced_vars_p (const referenced_var_iterator *iter)
+{
+  return end_htab_p (&iter->hti);
+}
+
+/* Make ITER point to the next referenced_var in the referenced_var hashtable,
+   and return that variable.  */
+
+static inline tree
+next_referenced_var (referenced_var_iterator *iter)
+{
+  return (tree) next_htab_element (&iter->hti);
+} 
+
+/* Fill up VEC with the variables in the referenced vars hashtable.  */
+
+static inline void
+fill_referenced_var_vec (VEC (tree, heap) **vec)
+{
+  referenced_var_iterator rvi;
+  tree var;
+  *vec = NULL;
+  FOR_EACH_REFERENCED_VAR (var, rvi)
+    VEC_safe_push (tree, heap, *vec, var);
+}
+
+/* Return the variable annotation for T, which must be a _DECL node.
+   Return NULL if the variable annotation doesn't already exist.  */
+static inline var_ann_t
+var_ann (const_tree t)
+{
+  var_ann_t ann;
+
+  if (!t->base.ann)
+    return NULL;
+  ann = (var_ann_t) t->base.ann;
+
+  gcc_assert (ann->common.type == VAR_ANN);
+
+  return ann;
+}
+
+/* Return the variable annotation for T, which must be a _DECL node.
+   Create the variable annotation if it doesn't exist.  */
+static inline var_ann_t
+get_var_ann (tree var)
+{
+  var_ann_t ann = var_ann (var);
+  return (ann) ? ann : create_var_ann (var);
+}
+
+/* Return the function annotation for T, which must be a FUNCTION_DECL node.
+   Return NULL if the function annotation doesn't already exist.  */
+static inline function_ann_t
+function_ann (const_tree t)
+{
+  gcc_assert (t);
+  gcc_assert (TREE_CODE (t) == FUNCTION_DECL);
+  gcc_assert (!t->base.ann
+             || t->base.ann->common.type == FUNCTION_ANN);
+
+  return (function_ann_t) t->base.ann;
+}
+
+/* Return the function annotation for T, which must be a FUNCTION_DECL node.
+   Create the function annotation if it doesn't exist.  */
+static inline function_ann_t
+get_function_ann (tree var)
+{
+  function_ann_t ann = function_ann (var);
+  gcc_assert (!var->base.ann || var->base.ann->common.type == FUNCTION_ANN);
+  return (ann) ? ann : create_function_ann (var);
+}
+
+/* Get the number of the next statement uid to be allocated.  */
+static inline unsigned int
+gimple_stmt_max_uid (struct function *fn)
+{
+  return fn->last_stmt_uid;
+}
+
+/* Set the number of the next statement uid to be allocated.  */
+static inline void
+set_gimple_stmt_max_uid (struct function *fn, unsigned int maxid)
+{
+  fn->last_stmt_uid = maxid;
+}
+
+/* Set the number of the next statement uid to be allocated.  */
+static inline unsigned int
+inc_gimple_stmt_max_uid (struct function *fn)
+{
+  return fn->last_stmt_uid++;
+}
+
+/* Return the annotation type for annotation ANN.  */
+static inline enum tree_ann_type
+ann_type (tree_ann_t ann)
+{
+  return ann->common.type;
+}
+
+/* Return the may_aliases bitmap for variable VAR, or NULL if it has
+   no may aliases.  */
+static inline bitmap
+may_aliases (const_tree var)
+{
+  return MTAG_ALIASES (var);
+}
+
+/* Return the line number for EXPR, or return -1 if we have no line
+   number information for it.  */
+static inline int
+get_lineno (const_gimple stmt)
+{
+  location_t loc;
+
+  if (!stmt)
+    return -1;
+
+  loc = gimple_location (stmt);
+  if (loc != UNKNOWN_LOCATION)
+    return -1;
+
+  return LOCATION_LINE (loc);
+}
+
+/* Delink an immediate_uses node from its chain.  */
+static inline void
+delink_imm_use (ssa_use_operand_t *linknode)
+{
+  /* Return if this node is not in a list.  */
+  if (linknode->prev == NULL)
+    return;
+
+  linknode->prev->next = linknode->next;
+  linknode->next->prev = linknode->prev;
+  linknode->prev = NULL;
+  linknode->next = NULL;
+}
+
+/* Link ssa_imm_use node LINKNODE into the chain for LIST.  */
+static inline void
+link_imm_use_to_list (ssa_use_operand_t *linknode, ssa_use_operand_t *list)
+{
+  /* Link the new node at the head of the list.  If we are in the process of 
+     traversing the list, we won't visit any new nodes added to it.  */
+  linknode->prev = list;
+  linknode->next = list->next;
+  list->next->prev = linknode;
+  list->next = linknode;
+}
+
+/* Link ssa_imm_use node LINKNODE into the chain for DEF.  */
+static inline void
+link_imm_use (ssa_use_operand_t *linknode, tree def)
+{
+  ssa_use_operand_t *root;
+
+  if (!def || TREE_CODE (def) != SSA_NAME)
+    linknode->prev = NULL;
+  else
+    {
+      root = &(SSA_NAME_IMM_USE_NODE (def));
+#ifdef ENABLE_CHECKING
+      if (linknode->use)
+        gcc_assert (*(linknode->use) == def);
+#endif
+      link_imm_use_to_list (linknode, root);
+    }
+}
+
+/* Set the value of a use pointed to by USE to VAL.  */
+static inline void
+set_ssa_use_from_ptr (use_operand_p use, tree val)
+{
+  delink_imm_use (use);
+  *(use->use) = val;
+  link_imm_use (use, val);
+}
+
+/* Link ssa_imm_use node LINKNODE into the chain for DEF, with use occurring 
+   in STMT.  */
+static inline void
+link_imm_use_stmt (ssa_use_operand_t *linknode, tree def, gimple stmt)
+{
+  if (stmt)
+    link_imm_use (linknode, def);
+  else
+    link_imm_use (linknode, NULL);
+  linknode->loc.stmt = stmt;
+}
+
+/* Relink a new node in place of an old node in the list.  */
+static inline void
+relink_imm_use (ssa_use_operand_t *node, ssa_use_operand_t *old)
+{
+  /* The node one had better be in the same list.  */
+  gcc_assert (*(old->use) == *(node->use));
+  node->prev = old->prev;
+  node->next = old->next;
+  if (old->prev)
+    {
+      old->prev->next = node;
+      old->next->prev = node;
+      /* Remove the old node from the list.  */
+      old->prev = NULL;
+    }
+}
+
+/* Relink ssa_imm_use node LINKNODE into the chain for OLD, with use occurring 
+   in STMT.  */
+static inline void
+relink_imm_use_stmt (ssa_use_operand_t *linknode, ssa_use_operand_t *old,
+                    gimple stmt)
+{
+  if (stmt)
+    relink_imm_use (linknode, old);
+  else
+    link_imm_use (linknode, NULL);
+  linknode->loc.stmt = stmt;
+}
+
+
+/* Return true is IMM has reached the end of the immediate use list.  */
+static inline bool
+end_readonly_imm_use_p (const imm_use_iterator *imm)
+{
+  return (imm->imm_use == imm->end_p);
+}
+
+/* Initialize iterator IMM to process the list for VAR.  */
+static inline use_operand_p
+first_readonly_imm_use (imm_use_iterator *imm, tree var)
+{
+  gcc_assert (TREE_CODE (var) == SSA_NAME);
+
+  imm->end_p = &(SSA_NAME_IMM_USE_NODE (var));
+  imm->imm_use = imm->end_p->next;
+#ifdef ENABLE_CHECKING
+  imm->iter_node.next = imm->imm_use->next;
+#endif
+  if (end_readonly_imm_use_p (imm))
+    return NULL_USE_OPERAND_P;
+  return imm->imm_use;
+}
+
+/* Bump IMM to the next use in the list.  */
+static inline use_operand_p
+next_readonly_imm_use (imm_use_iterator *imm)
+{
+  use_operand_p old = imm->imm_use;
+
+#ifdef ENABLE_CHECKING
+  /* If this assertion fails, it indicates the 'next' pointer has changed
+     since the last bump.  This indicates that the list is being modified
+     via stmt changes, or SET_USE, or somesuch thing, and you need to be
+     using the SAFE version of the iterator.  */
+  gcc_assert (imm->iter_node.next == old->next);
+  imm->iter_node.next = old->next->next;
+#endif
+
+  imm->imm_use = old->next;
+  if (end_readonly_imm_use_p (imm))
+    return NULL_USE_OPERAND_P;
+  return imm->imm_use;
+}
+
+/* Return true if VAR has no uses.  */
+static inline bool
+has_zero_uses (const_tree var)
+{
+  const ssa_use_operand_t *const ptr = &(SSA_NAME_IMM_USE_NODE (var));
+  /* A single use means there is no items in the list.  */
+  return (ptr == ptr->next);
+}
+
+/* Return true if VAR has a single use.  */
+static inline bool
+has_single_use (const_tree var)
+{
+  const ssa_use_operand_t *const ptr = &(SSA_NAME_IMM_USE_NODE (var));
+  /* A single use means there is one item in the list.  */
+  return (ptr != ptr->next && ptr == ptr->next->next);
+}
+
+
+/* If VAR has only a single immediate use, return true, and set USE_P and STMT
+   to the use pointer and stmt of occurrence.  */
+static inline bool
+single_imm_use (const_tree var, use_operand_p *use_p, gimple *stmt)
+{
+  const ssa_use_operand_t *const ptr = &(SSA_NAME_IMM_USE_NODE (var));
+  if (ptr != ptr->next && ptr == ptr->next->next)
+    {
+      *use_p = ptr->next;
+      *stmt = ptr->next->loc.stmt;
+      return true;
+    }
+  *use_p = NULL_USE_OPERAND_P;
+  *stmt = NULL;
+  return false;
+}
+
+/* Return the number of immediate uses of VAR.  */
+static inline unsigned int
+num_imm_uses (const_tree var)
+{
+  const ssa_use_operand_t *const start = &(SSA_NAME_IMM_USE_NODE (var));
+  const ssa_use_operand_t *ptr;
+  unsigned int num = 0;
+
+  for (ptr = start->next; ptr != start; ptr = ptr->next)
+     num++;
+
+  return num;
+}
+
+/* Return the tree pointed-to by USE.  */ 
+static inline tree
+get_use_from_ptr (use_operand_p use)
+{ 
+  return *(use->use);
+} 
+
+/* Return the tree pointed-to by DEF.  */
+static inline tree
+get_def_from_ptr (def_operand_p def)
+{
+  return *def;
+}
+
+/* Return a use_operand_p pointer for argument I of PHI node GS.  */
+
+static inline use_operand_p
+gimple_phi_arg_imm_use_ptr (gimple gs, int i)
+{
+  return &gimple_phi_arg (gs, i)->imm_use;
+}
+
+/* Return the tree operand for argument I of PHI node GS.  */
+
+static inline tree
+gimple_phi_arg_def (gimple gs, size_t index)
+{
+  struct phi_arg_d *pd = gimple_phi_arg (gs, index);
+  return get_use_from_ptr (&pd->imm_use);
+}
+
+/* Return a pointer to the tree operand for argument I of PHI node GS.  */
+
+static inline tree *
+gimple_phi_arg_def_ptr (gimple gs, size_t index)
+{
+  return &gimple_phi_arg (gs, index)->def;
+}
+
+/* Return the edge associated with argument I of phi node GS.  */
+
+static inline edge
+gimple_phi_arg_edge (gimple gs, size_t i)
+{
+  return EDGE_PRED (gimple_bb (gs), i);
+}
+
+/* Return the PHI nodes for basic block BB, or NULL if there are no
+   PHI nodes.  */
+static inline gimple_seq
+phi_nodes (const_basic_block bb)
+{
+  gcc_assert (!(bb->flags & BB_RTL));
+  if (!bb->il.gimple)
+    return NULL;
+  return bb->il.gimple->phi_nodes;
+}
+
+/* Set PHI nodes of a basic block BB to SEQ.  */
+
+static inline void
+set_phi_nodes (basic_block bb, gimple_seq seq)
+{
+  gimple_stmt_iterator i;
+
+  gcc_assert (!(bb->flags & BB_RTL));
+  bb->il.gimple->phi_nodes = seq;
+  if (seq)
+    for (i = gsi_start (seq); !gsi_end_p (i); gsi_next (&i))
+      gimple_set_bb (gsi_stmt (i), bb);
+}
+
+/* Return the phi argument which contains the specified use.  */
+
+static inline int
+phi_arg_index_from_use (use_operand_p use)
+{
+  struct phi_arg_d *element, *root;
+  size_t index;
+  gimple phi;
+
+  /* Since the use is the first thing in a PHI argument element, we can
+     calculate its index based on casting it to an argument, and performing
+     pointer arithmetic.  */
+
+  phi = USE_STMT (use);
+  gcc_assert (gimple_code (phi) == GIMPLE_PHI);
+
+  element = (struct phi_arg_d *)use;
+  root = gimple_phi_arg (phi, 0);
+  index = element - root;
+
+#ifdef ENABLE_CHECKING
+  /* Make sure the calculation doesn't have any leftover bytes.  If it does, 
+     then imm_use is likely not the first element in phi_arg_d.  */
+  gcc_assert (
+         (((char *)element - (char *)root) % sizeof (struct phi_arg_d)) == 0);
+  gcc_assert (index < gimple_phi_capacity (phi));
+#endif
+ return index;
+}
+
+/* Mark VAR as used, so that it'll be preserved during rtl expansion.  */
+
+static inline void
+set_is_used (tree var)
+{
+  var_ann_t ann = get_var_ann (var);
+  ann->used = 1;
+}
+
+
+/* Return true if T (assumed to be a DECL) is a global variable.  */
+
+static inline bool
+is_global_var (const_tree t)
+{
+  if (MTAG_P (t))
+    return MTAG_GLOBAL (t);
+  else
+    return (TREE_STATIC (t) || DECL_EXTERNAL (t));
+}
+
+/* PHI nodes should contain only ssa_names and invariants.  A test
+   for ssa_name is definitely simpler; don't let invalid contents
+   slip in in the meantime.  */
+
+static inline bool
+phi_ssa_name_p (const_tree t)
+{
+  if (TREE_CODE (t) == SSA_NAME)
+    return true;
+#ifdef ENABLE_CHECKING
+  gcc_assert (is_gimple_min_invariant (t));
+#endif
+  return false;
+}
+
+
+/* Returns the loop of the statement STMT.  */
+
+static inline struct loop *
+loop_containing_stmt (gimple stmt)
+{
+  basic_block bb = gimple_bb (stmt);
+  if (!bb)
+    return NULL;
+
+  return bb->loop_father;
+}
+
+
+/* Return the memory partition tag associated with symbol SYM.  */
+
+static inline tree
+memory_partition (tree sym)
+{
+  tree tag;
+
+  /* MPTs belong to their own partition.  */
+  if (TREE_CODE (sym) == MEMORY_PARTITION_TAG)
+    return sym;
+
+  gcc_assert (!is_gimple_reg (sym));
+  /* Autoparallelization moves statements from the original function (which has
+     aliases computed) to the new one (which does not).  When rebuilding
+     operands for the statement in the new function, we do not want to
+     record the memory partition tags of the original function.  */
+  if (!gimple_aliases_computed_p (cfun))
+    return NULL_TREE;
+  tag = get_var_ann (sym)->mpt;
+
+#if defined ENABLE_CHECKING
+  if (tag)
+    gcc_assert (TREE_CODE (tag) == MEMORY_PARTITION_TAG);
+#endif
+
+  return tag;
+}
+
+/* Return true if NAME is a memory factoring SSA name (i.e., an SSA
+   name for a memory partition.  */
+
+static inline bool
+factoring_name_p (const_tree name)
+{
+  return TREE_CODE (SSA_NAME_VAR (name)) == MEMORY_PARTITION_TAG;
+}
+
+/* Return true if VAR is used by function calls.  */
+static inline bool
+is_call_used (const_tree var)
+{
+  return (var_ann (var)->call_clobbered
+         || bitmap_bit_p (gimple_call_used_vars (cfun), DECL_UID (var)));
+}
+
+/* Return true if VAR is clobbered by function calls.  */
+static inline bool
+is_call_clobbered (const_tree var)
+{
+  return var_ann (var)->call_clobbered;
+}
+
+/* Mark variable VAR as being clobbered by function calls.  */
+static inline void
+mark_call_clobbered (tree var, unsigned int escape_type)
+{
+  var_ann (var)->escape_mask |= escape_type;
+  var_ann (var)->call_clobbered = true;
+  bitmap_set_bit (gimple_call_clobbered_vars (cfun), DECL_UID (var));
+}
+
+/* Clear the call-clobbered attribute from variable VAR.  */
+static inline void
+clear_call_clobbered (tree var)
+{
+  var_ann_t ann = var_ann (var);
+  ann->escape_mask = 0;
+  if (MTAG_P (var))
+    MTAG_GLOBAL (var) = 0;
+  var_ann (var)->call_clobbered = false;
+  bitmap_clear_bit (gimple_call_clobbered_vars (cfun), DECL_UID (var));
+}
+
+/* Return the common annotation for T.  Return NULL if the annotation
+   doesn't already exist.  */
+static inline tree_ann_common_t
+tree_common_ann (const_tree t)
+{
+  /* Watch out static variables with unshared annotations.  */
+  if (DECL_P (t) && TREE_CODE (t) == VAR_DECL)
+    return &var_ann (t)->common;
+  return &t->base.ann->common;
+}
+
+/* Return a common annotation for T.  Create the constant annotation if it
+   doesn't exist.  */
+static inline tree_ann_common_t
+get_tree_common_ann (tree t)
+{
+  tree_ann_common_t ann = tree_common_ann (t);
+  return (ann) ? ann : create_tree_common_ann (t);
+}
+
+/*  -----------------------------------------------------------------------  */
+
+/* The following set of routines are used to iterator over various type of
+   SSA operands.  */
+
+/* Return true if PTR is finished iterating.  */
+static inline bool
+op_iter_done (const ssa_op_iter *ptr)
+{
+  return ptr->done;
+}
+
+/* Get the next iterator use value for PTR.  */
+static inline use_operand_p
+op_iter_next_use (ssa_op_iter *ptr)
+{
+  use_operand_p use_p;
+#ifdef ENABLE_CHECKING
+  gcc_assert (ptr->iter_type == ssa_op_iter_use);
+#endif
+  if (ptr->uses)
+    {
+      use_p = USE_OP_PTR (ptr->uses);
+      ptr->uses = ptr->uses->next;
+      return use_p;
+    }
+  if (ptr->vuses)
+    {
+      use_p = VUSE_OP_PTR (ptr->vuses, ptr->vuse_index);
+      if (++(ptr->vuse_index) >= VUSE_NUM (ptr->vuses))
+        {
+         ptr->vuse_index = 0;
+         ptr->vuses = ptr->vuses->next;
+       }
+      return use_p;
+    }
+  if (ptr->mayuses)
+    {
+      use_p = VDEF_OP_PTR (ptr->mayuses, ptr->mayuse_index);
+      if (++(ptr->mayuse_index) >= VDEF_NUM (ptr->mayuses))
+        {
+         ptr->mayuse_index = 0;
+         ptr->mayuses = ptr->mayuses->next;
+       }
+      return use_p;
+    }
+  if (ptr->phi_i < ptr->num_phi)
+    {
+      return PHI_ARG_DEF_PTR (ptr->phi_stmt, (ptr->phi_i)++);
+    }
+  ptr->done = true;
+  return NULL_USE_OPERAND_P;
+}
+
+/* Get the next iterator def value for PTR.  */
+static inline def_operand_p
+op_iter_next_def (ssa_op_iter *ptr)
+{
+  def_operand_p def_p;
+#ifdef ENABLE_CHECKING
+  gcc_assert (ptr->iter_type == ssa_op_iter_def);
+#endif
+  if (ptr->defs)
+    {
+      def_p = DEF_OP_PTR (ptr->defs);
+      ptr->defs = ptr->defs->next;
+      return def_p;
+    }
+  if (ptr->vdefs)
+    {
+      def_p = VDEF_RESULT_PTR (ptr->vdefs);
+      ptr->vdefs = ptr->vdefs->next;
+      return def_p;
+    }
+  ptr->done = true;
+  return NULL_DEF_OPERAND_P;
+}
+
+/* Get the next iterator tree value for PTR.  */
+static inline tree
+op_iter_next_tree (ssa_op_iter *ptr)
+{
+  tree val;
+#ifdef ENABLE_CHECKING
+  gcc_assert (ptr->iter_type == ssa_op_iter_tree);
+#endif
+  if (ptr->uses)
+    {
+      val = USE_OP (ptr->uses);
+      ptr->uses = ptr->uses->next;
+      return val;
+    }
+  if (ptr->vuses)
+    {
+      val = VUSE_OP (ptr->vuses, ptr->vuse_index);
+      if (++(ptr->vuse_index) >= VUSE_NUM (ptr->vuses))
+        {
+         ptr->vuse_index = 0;
+         ptr->vuses = ptr->vuses->next;
+       }
+      return val;
+    }
+  if (ptr->mayuses)
+    {
+      val = VDEF_OP (ptr->mayuses, ptr->mayuse_index);
+      if (++(ptr->mayuse_index) >= VDEF_NUM (ptr->mayuses))
+        {
+         ptr->mayuse_index = 0;
+         ptr->mayuses = ptr->mayuses->next;
+       }
+      return val;
+    }
+  if (ptr->defs)
+    {
+      val = DEF_OP (ptr->defs);
+      ptr->defs = ptr->defs->next;
+      return val;
+    }
+  if (ptr->vdefs)
+    {
+      val = VDEF_RESULT (ptr->vdefs);
+      ptr->vdefs = ptr->vdefs->next;
+      return val;
+    }
+
+  ptr->done = true;
+  return NULL_TREE;
+
+}
+
+
+/* This functions clears the iterator PTR, and marks it done.  This is normally
+   used to prevent warnings in the compile about might be uninitialized
+   components.  */
+
+static inline void
+clear_and_done_ssa_iter (ssa_op_iter *ptr)
+{
+  ptr->defs = NULL;
+  ptr->uses = NULL;
+  ptr->vuses = NULL;
+  ptr->vdefs = NULL;
+  ptr->mayuses = NULL;
+  ptr->iter_type = ssa_op_iter_none;
+  ptr->phi_i = 0;
+  ptr->num_phi = 0;
+  ptr->phi_stmt = NULL;
+  ptr->done = true;
+  ptr->vuse_index = 0;
+  ptr->mayuse_index = 0;
+}
+
+/* Initialize the iterator PTR to the virtual defs in STMT.  */
+static inline void
+op_iter_init (ssa_op_iter *ptr, gimple stmt, int flags)
+{
+  ptr->defs = (flags & SSA_OP_DEF) ? gimple_def_ops (stmt) : NULL;
+  ptr->uses = (flags & SSA_OP_USE) ? gimple_use_ops (stmt) : NULL;
+  ptr->vuses = (flags & SSA_OP_VUSE) ? gimple_vuse_ops (stmt) : NULL;
+  ptr->vdefs = (flags & SSA_OP_VDEF) ? gimple_vdef_ops (stmt) : NULL;
+  ptr->mayuses = (flags & SSA_OP_VMAYUSE) ? gimple_vdef_ops (stmt) : NULL;
+  ptr->done = false;
+
+  ptr->phi_i = 0;
+  ptr->num_phi = 0;
+  ptr->phi_stmt = NULL;
+  ptr->vuse_index = 0;
+  ptr->mayuse_index = 0;
+}
+
+/* Initialize iterator PTR to the use operands in STMT based on FLAGS. Return
+   the first use.  */
+static inline use_operand_p
+op_iter_init_use (ssa_op_iter *ptr, gimple stmt, int flags)
+{
+  gcc_assert ((flags & SSA_OP_ALL_DEFS) == 0);
+  op_iter_init (ptr, stmt, flags);
+  ptr->iter_type = ssa_op_iter_use;
+  return op_iter_next_use (ptr);
+}
+
+/* Initialize iterator PTR to the def operands in STMT based on FLAGS. Return
+   the first def.  */
+static inline def_operand_p
+op_iter_init_def (ssa_op_iter *ptr, gimple stmt, int flags)
+{
+  gcc_assert ((flags & SSA_OP_ALL_USES) == 0);
+  op_iter_init (ptr, stmt, flags);
+  ptr->iter_type = ssa_op_iter_def;
+  return op_iter_next_def (ptr);
+}
+
+/* Initialize iterator PTR to the operands in STMT based on FLAGS. Return
+   the first operand as a tree.  */
+static inline tree
+op_iter_init_tree (ssa_op_iter *ptr, gimple stmt, int flags)
+{
+  op_iter_init (ptr, stmt, flags);
+  ptr->iter_type = ssa_op_iter_tree;
+  return op_iter_next_tree (ptr);
+}
+
+/* Get the next iterator mustdef value for PTR, returning the mustdef values in
+   KILL and DEF.  */
+static inline void
+op_iter_next_vdef (vuse_vec_p *use, def_operand_p *def, 
+                        ssa_op_iter *ptr)
+{
+#ifdef ENABLE_CHECKING
+  gcc_assert (ptr->iter_type == ssa_op_iter_vdef);
+#endif
+  if (ptr->mayuses)
+    {
+      *def = VDEF_RESULT_PTR (ptr->mayuses);
+      *use = VDEF_VECT (ptr->mayuses);
+      ptr->mayuses = ptr->mayuses->next;
+      return;
+    }
+
+  *def = NULL_DEF_OPERAND_P;
+  *use = NULL;
+  ptr->done = true;
+  return;
+}
+
+
+static inline void
+op_iter_next_mustdef (use_operand_p *use, def_operand_p *def, 
+                        ssa_op_iter *ptr)
+{
+  vuse_vec_p vp;
+  op_iter_next_vdef (&vp, def, ptr);
+  if (vp != NULL)
+    {
+      gcc_assert (VUSE_VECT_NUM_ELEM (*vp) == 1);
+      *use = VUSE_ELEMENT_PTR (*vp, 0);
+    }
+  else
+    *use = NULL_USE_OPERAND_P;
+}
+
+/* Initialize iterator PTR to the operands in STMT.  Return the first operands
+   in USE and DEF.  */
+static inline void
+op_iter_init_vdef (ssa_op_iter *ptr, gimple stmt, vuse_vec_p *use, 
+                    def_operand_p *def)
+{
+  gcc_assert (gimple_code (stmt) != GIMPLE_PHI);
+
+  op_iter_init (ptr, stmt, SSA_OP_VMAYUSE);
+  ptr->iter_type = ssa_op_iter_vdef;
+  op_iter_next_vdef (use, def, ptr);
+}
+
+
+/* If there is a single operand in STMT matching FLAGS, return it.  Otherwise
+   return NULL.  */
+static inline tree
+single_ssa_tree_operand (gimple stmt, int flags)
+{
+  tree var;
+  ssa_op_iter iter;
+
+  var = op_iter_init_tree (&iter, stmt, flags);
+  if (op_iter_done (&iter))
+    return NULL_TREE;
+  op_iter_next_tree (&iter);
+  if (op_iter_done (&iter))
+    return var;
+  return NULL_TREE;
+}
+
+
+/* If there is a single operand in STMT matching FLAGS, return it.  Otherwise
+   return NULL.  */
+static inline use_operand_p
+single_ssa_use_operand (gimple stmt, int flags)
+{
+  use_operand_p var;
+  ssa_op_iter iter;
+
+  var = op_iter_init_use (&iter, stmt, flags);
+  if (op_iter_done (&iter))
+    return NULL_USE_OPERAND_P;
+  op_iter_next_use (&iter);
+  if (op_iter_done (&iter))
+    return var;
+  return NULL_USE_OPERAND_P;
+}
+
+
+
+/* If there is a single operand in STMT matching FLAGS, return it.  Otherwise
+   return NULL.  */
+static inline def_operand_p
+single_ssa_def_operand (gimple stmt, int flags)
+{
+  def_operand_p var;
+  ssa_op_iter iter;
+
+  var = op_iter_init_def (&iter, stmt, flags);
+  if (op_iter_done (&iter))
+    return NULL_DEF_OPERAND_P;
+  op_iter_next_def (&iter);
+  if (op_iter_done (&iter))
+    return var;
+  return NULL_DEF_OPERAND_P;
+}
+
+
+/* Return true if there are zero operands in STMT matching the type 
+   given in FLAGS.  */
+static inline bool
+zero_ssa_operands (gimple stmt, int flags)
+{
+  ssa_op_iter iter;
+
+  op_iter_init_tree (&iter, stmt, flags);
+  return op_iter_done (&iter);
+}
+
+
+/* Return the number of operands matching FLAGS in STMT.  */
+static inline int
+num_ssa_operands (gimple stmt, int flags)
+{
+  ssa_op_iter iter;
+  tree t;
+  int num = 0;
+
+  FOR_EACH_SSA_TREE_OPERAND (t, stmt, iter, flags)
+    num++;
+  return num;
+}
+
+
+/* Delink all immediate_use information for STMT.  */
+static inline void
+delink_stmt_imm_use (gimple stmt)
+{
+   ssa_op_iter iter;
+   use_operand_p use_p;
+
+   if (ssa_operands_active ())
+     FOR_EACH_SSA_USE_OPERAND (use_p, stmt, iter, SSA_OP_ALL_USES)
+       delink_imm_use (use_p);
+}
+
+
+/* This routine will compare all the operands matching FLAGS in STMT1 to those
+   in STMT2.  TRUE is returned if they are the same.  STMTs can be NULL.  */
+static inline bool
+compare_ssa_operands_equal (gimple stmt1, gimple stmt2, int flags)
+{
+  ssa_op_iter iter1, iter2;
+  tree op1 = NULL_TREE;
+  tree op2 = NULL_TREE;
+  bool look1, look2;
+
+  if (stmt1 == stmt2)
+    return true;
+
+  look1 = stmt1 != NULL;
+  look2 = stmt2 != NULL;
+
+  if (look1)
+    {
+      op1 = op_iter_init_tree (&iter1, stmt1, flags);
+      if (!look2)
+        return op_iter_done (&iter1);
+    }
+  else
+    clear_and_done_ssa_iter (&iter1);
+
+  if (look2)
+    {
+      op2 = op_iter_init_tree (&iter2, stmt2, flags);
+      if (!look1)
+        return op_iter_done (&iter2);
+    }
+  else
+    clear_and_done_ssa_iter (&iter2);
+
+  while (!op_iter_done (&iter1) && !op_iter_done (&iter2))
+    {
+      if (op1 != op2)
+       return false;
+      op1 = op_iter_next_tree (&iter1);
+      op2 = op_iter_next_tree (&iter2);
+    }
+
+  return (op_iter_done (&iter1) && op_iter_done (&iter2));
+}
+
+
+/* If there is a single DEF in the PHI node which matches FLAG, return it.
+   Otherwise return NULL_DEF_OPERAND_P.  */
+static inline tree
+single_phi_def (gimple stmt, int flags)
+{
+  tree def = PHI_RESULT (stmt);
+  if ((flags & SSA_OP_DEF) && is_gimple_reg (def)) 
+    return def;
+  if ((flags & SSA_OP_VIRTUAL_DEFS) && !is_gimple_reg (def))
+    return def;
+  return NULL_TREE;
+}
+
+/* Initialize the iterator PTR for uses matching FLAGS in PHI.  FLAGS should
+   be either SSA_OP_USES or SSA_OP_VIRTUAL_USES.  */
+static inline use_operand_p
+op_iter_init_phiuse (ssa_op_iter *ptr, gimple phi, int flags)
+{
+  tree phi_def = gimple_phi_result (phi);
+  int comp;
+
+  clear_and_done_ssa_iter (ptr);
+  ptr->done = false;
+
+  gcc_assert ((flags & (SSA_OP_USE | SSA_OP_VIRTUAL_USES)) != 0);
+
+  comp = (is_gimple_reg (phi_def) ? SSA_OP_USE : SSA_OP_VIRTUAL_USES);
+    
+  /* If the PHI node doesn't the operand type we care about, we're done.  */
+  if ((flags & comp) == 0)
+    {
+      ptr->done = true;
+      return NULL_USE_OPERAND_P;
+    }
+
+  ptr->phi_stmt = phi;
+  ptr->num_phi = gimple_phi_num_args (phi);
+  ptr->iter_type = ssa_op_iter_use;
+  return op_iter_next_use (ptr);
+}
+
+
+/* Start an iterator for a PHI definition.  */
+
+static inline def_operand_p
+op_iter_init_phidef (ssa_op_iter *ptr, gimple phi, int flags)
+{
+  tree phi_def = PHI_RESULT (phi);
+  int comp;
+
+  clear_and_done_ssa_iter (ptr);
+  ptr->done = false;
+
+  gcc_assert ((flags & (SSA_OP_DEF | SSA_OP_VIRTUAL_DEFS)) != 0);
+
+  comp = (is_gimple_reg (phi_def) ? SSA_OP_DEF : SSA_OP_VIRTUAL_DEFS);
+    
+  /* If the PHI node doesn't the operand type we care about, we're done.  */
+  if ((flags & comp) == 0)
+    {
+      ptr->done = true;
+      return NULL_USE_OPERAND_P;
+    }
+
+  ptr->iter_type = ssa_op_iter_def;
+  /* The first call to op_iter_next_def will terminate the iterator since
+     all the fields are NULL.  Simply return the result here as the first and
+     therefore only result.  */
+  return PHI_RESULT_PTR (phi);
+}
+
+/* Return true is IMM has reached the end of the immediate use stmt list.  */
+
+static inline bool
+end_imm_use_stmt_p (const imm_use_iterator *imm)
+{
+  return (imm->imm_use == imm->end_p);
+}
+
+/* Finished the traverse of an immediate use stmt list IMM by removing the
+   placeholder node from the list.  */
+
+static inline void
+end_imm_use_stmt_traverse (imm_use_iterator *imm)
+{
+  delink_imm_use (&(imm->iter_node));
+}
+
+/* Immediate use traversal of uses within a stmt require that all the
+   uses on a stmt be sequentially listed.  This routine is used to build up
+   this sequential list by adding USE_P to the end of the current list 
+   currently delimited by HEAD and LAST_P.  The new LAST_P value is 
+   returned.  */
+
+static inline use_operand_p
+move_use_after_head (use_operand_p use_p, use_operand_p head, 
+                     use_operand_p last_p)
+{
+  gcc_assert (USE_FROM_PTR (use_p) == USE_FROM_PTR (head));
+  /* Skip head when we find it.  */
+  if (use_p != head)
+    {
+      /* If use_p is already linked in after last_p, continue.  */
+      if (last_p->next == use_p)
+       last_p = use_p;
+      else
+       {
+         /* Delink from current location, and link in at last_p.  */
+         delink_imm_use (use_p);
+         link_imm_use_to_list (use_p, last_p);
+         last_p = use_p;
+       }
+    }
+  return last_p;
+}
+
+
+/* This routine will relink all uses with the same stmt as HEAD into the list
+   immediately following HEAD for iterator IMM.  */
+
+static inline void
+link_use_stmts_after (use_operand_p head, imm_use_iterator *imm)
+{
+  use_operand_p use_p;
+  use_operand_p last_p = head;
+  gimple head_stmt = USE_STMT (head);
+  tree use = USE_FROM_PTR (head);
+  ssa_op_iter op_iter;
+  int flag;
+
+  /* Only look at virtual or real uses, depending on the type of HEAD.  */
+  flag = (is_gimple_reg (use) ? SSA_OP_USE : SSA_OP_VIRTUAL_USES);
+
+  if (gimple_code (head_stmt) == GIMPLE_PHI)
+    {
+      FOR_EACH_PHI_ARG (use_p, head_stmt, op_iter, flag)
+       if (USE_FROM_PTR (use_p) == use)
+         last_p = move_use_after_head (use_p, head, last_p);
+    }
+  else
+    {
+      FOR_EACH_SSA_USE_OPERAND (use_p, head_stmt, op_iter, flag)
+       if (USE_FROM_PTR (use_p) == use)
+         last_p = move_use_after_head (use_p, head, last_p);
+    }
+  /* Link iter node in after last_p.  */
+  if (imm->iter_node.prev != NULL)
+    delink_imm_use (&imm->iter_node);
+  link_imm_use_to_list (&(imm->iter_node), last_p);
+}
+
+/* Initialize IMM to traverse over uses of VAR.  Return the first statement.  */
+static inline gimple
+first_imm_use_stmt (imm_use_iterator *imm, tree var)
+{
+  gcc_assert (TREE_CODE (var) == SSA_NAME);
+  
+  imm->end_p = &(SSA_NAME_IMM_USE_NODE (var));
+  imm->imm_use = imm->end_p->next;
+  imm->next_imm_name = NULL_USE_OPERAND_P;
+
+  /* iter_node is used as a marker within the immediate use list to indicate
+     where the end of the current stmt's uses are.  Initialize it to NULL
+     stmt and use, which indicates a marker node.  */
+  imm->iter_node.prev = NULL_USE_OPERAND_P;
+  imm->iter_node.next = NULL_USE_OPERAND_P;
+  imm->iter_node.loc.stmt = NULL;
+  imm->iter_node.use = NULL_USE_OPERAND_P;
+
+  if (end_imm_use_stmt_p (imm))
+    return NULL;
+
+  link_use_stmts_after (imm->imm_use, imm);
+
+  return USE_STMT (imm->imm_use);
+}
+
+/* Bump IMM to the next stmt which has a use of var.  */
+
+static inline gimple
+next_imm_use_stmt (imm_use_iterator *imm)
+{
+  imm->imm_use = imm->iter_node.next;
+  if (end_imm_use_stmt_p (imm))
+    {
+      if (imm->iter_node.prev != NULL)
+       delink_imm_use (&imm->iter_node);
+      return NULL;
+    }
+
+  link_use_stmts_after (imm->imm_use, imm);
+  return USE_STMT (imm->imm_use);
+}
+
+/* This routine will return the first use on the stmt IMM currently refers
+   to.  */
+
+static inline use_operand_p
+first_imm_use_on_stmt (imm_use_iterator *imm)
+{
+  imm->next_imm_name = imm->imm_use->next;
+  return imm->imm_use;
+}
+
+/*  Return TRUE if the last use on the stmt IMM refers to has been visited.  */
+
+static inline bool
+end_imm_use_on_stmt_p (const imm_use_iterator *imm)
+{
+  return (imm->imm_use == &(imm->iter_node));
+}
+
+/* Bump to the next use on the stmt IMM refers to, return NULL if done.  */
+
+static inline use_operand_p
+next_imm_use_on_stmt (imm_use_iterator *imm)
+{
+  imm->imm_use = imm->next_imm_name;
+  if (end_imm_use_on_stmt_p (imm))
+    return NULL_USE_OPERAND_P;
+  else
+    {
+      imm->next_imm_name = imm->imm_use->next;
+      return imm->imm_use;
+    }
+}
+
+/* Return true if VAR cannot be modified by the program.  */
+
+static inline bool
+unmodifiable_var_p (const_tree var)
+{
+  if (TREE_CODE (var) == SSA_NAME)
+    var = SSA_NAME_VAR (var);
+
+  if (MTAG_P (var))
+    return false;
+
+  return TREE_READONLY (var) && (TREE_STATIC (var) || DECL_EXTERNAL (var));
+}
+
+/* Return true if REF, an ARRAY_REF, has an INDIRECT_REF somewhere in it.  */
+
+static inline bool
+array_ref_contains_indirect_ref (const_tree ref)
+{
+  gcc_assert (TREE_CODE (ref) == ARRAY_REF);
+
+  do {
+    ref = TREE_OPERAND (ref, 0);
+  } while (handled_component_p (ref));
+
+  return TREE_CODE (ref) == INDIRECT_REF;
+}
+
+/* Return true if REF, a handled component reference, has an ARRAY_REF
+   somewhere in it.  */
+
+static inline bool
+ref_contains_array_ref (const_tree ref)
+{
+  gcc_assert (handled_component_p (ref));
+
+  do {
+    if (TREE_CODE (ref) == ARRAY_REF)
+      return true;
+    ref = TREE_OPERAND (ref, 0);
+  } while (handled_component_p (ref));
+
+  return false;
+}
+
+/* Return true, if the two ranges [POS1, SIZE1] and [POS2, SIZE2]
+   overlap.  SIZE1 and/or SIZE2 can be (unsigned)-1 in which case the
+   range is open-ended.  Otherwise return false.  */
+
+static inline bool
+ranges_overlap_p (unsigned HOST_WIDE_INT pos1,
+                 unsigned HOST_WIDE_INT size1,
+                 unsigned HOST_WIDE_INT pos2,
+                 unsigned HOST_WIDE_INT size2)
+{
+  if (pos1 >= pos2
+      && (size2 == (unsigned HOST_WIDE_INT)-1
+         || pos1 < (pos2 + size2)))
+    return true;
+  if (pos2 >= pos1
+      && (size1 == (unsigned HOST_WIDE_INT)-1
+         || pos2 < (pos1 + size1)))
+    return true;
+
+  return false;
+}
+
+/* Return the memory tag associated with symbol SYM.  */
+
+static inline tree
+symbol_mem_tag (tree sym)
+{
+  tree tag = get_var_ann (sym)->symbol_mem_tag;
+
+#if defined ENABLE_CHECKING
+  if (tag)
+    gcc_assert (TREE_CODE (tag) == SYMBOL_MEMORY_TAG);
+#endif
+
+  return tag;
+}
+
+
+/* Set the memory tag associated with symbol SYM.  */
+
+static inline void
+set_symbol_mem_tag (tree sym, tree tag)
+{
+#if defined ENABLE_CHECKING
+  if (tag)
+    gcc_assert (TREE_CODE (tag) == SYMBOL_MEMORY_TAG);
+#endif
+
+  get_var_ann (sym)->symbol_mem_tag = tag;
+}
+
+/* Accessor to tree-ssa-operands.c caches.  */
+static inline struct ssa_operands *
+gimple_ssa_operands (const struct function *fun)
+{
+  return &fun->gimple_df->ssa_operands;
+}
+
+/* Map describing reference statistics for function FN.  */
+static inline struct mem_ref_stats_d *
+gimple_mem_ref_stats (const struct function *fn)
+{
+  return &fn->gimple_df->mem_ref_stats;
+}
+
+/* Given an edge_var_map V, return the PHI arg definition.  */
+
+static inline tree
+redirect_edge_var_map_def (edge_var_map *v)
+{
+  return v->def;
+}
+
+/* Given an edge_var_map V, return the PHI result.  */
+
+static inline tree
+redirect_edge_var_map_result (edge_var_map *v)
+{
+  return v->result;
+}
+
+
+/* Return an SSA_NAME node for variable VAR defined in statement STMT
+   in function cfun.  */
+
+static inline tree
+make_ssa_name (tree var, gimple stmt)
+{
+  return make_ssa_name_fn (cfun, var, stmt);
+}
+
+#endif /* _TREE_FLOW_INLINE_H  */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-flow.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-flow.h
new file mode 100644 (file)
index 0000000..c6eec4c
--- /dev/null
@@ -0,0 +1,1185 @@
+/* Data and Control Flow Analysis for Trees.
+   Copyright (C) 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+   Contributed by Diego Novillo <dnovillo@redhat.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef _TREE_FLOW_H
+#define _TREE_FLOW_H 1
+
+#include "bitmap.h"
+#include "hard-reg-set.h"
+#include "basic-block.h"
+#include "hashtab.h"
+#include "gimple.h"
+#include "tree-ssa-operands.h"
+#include "cgraph.h"
+#include "ipa-reference.h"
+
+/* Forward declare structures for the garbage collector GTY markers.  */
+#ifndef GCC_BASIC_BLOCK_H
+struct edge_def;
+typedef struct edge_def *edge;
+struct basic_block_def;
+typedef struct basic_block_def *basic_block;
+#endif
+struct static_var_ann_d;
+
+/* The reasons a variable may escape a function.  */
+enum escape_type 
+{
+  NO_ESCAPE = 0,                       /* Doesn't escape.  */
+  ESCAPE_STORED_IN_GLOBAL = 1 << 0,
+  ESCAPE_TO_ASM = 1 << 1,              /* Passed by address to an assembly
+                                          statement.  */
+  ESCAPE_TO_CALL = 1 << 2,             /* Escapes to a function call.  */
+  ESCAPE_BAD_CAST = 1 << 3,            /* Cast from pointer to integer */
+  ESCAPE_TO_RETURN = 1 << 4,           /* Returned from function.  */
+  ESCAPE_TO_PURE_CONST = 1 << 5,       /* Escapes to a pure or constant
+                                          function call.  */
+  ESCAPE_IS_GLOBAL = 1 << 6,           /* Is a global variable.  */
+  ESCAPE_IS_PARM = 1 << 7,             /* Is an incoming function argument.  */
+  ESCAPE_UNKNOWN = 1 << 8              /* We believe it escapes for
+                                          some reason not enumerated
+                                          above.  */
+};
+
+/* Memory reference statistics for individual memory symbols,
+   collected during alias analysis.  */
+struct mem_sym_stats_d GTY(())
+{
+  /* Memory symbol.  */
+  tree var;
+
+  /* Nonzero if this entry has been assigned a partition.  */
+  unsigned int partitioned_p : 1;
+
+  /* Nonzero if VAR is a memory partition tag that already contains
+     call-clobbered variables in its partition set.  */
+  unsigned int has_call_clobbered_vars : 1;
+
+  /* Number of direct reference sites.  A direct reference to VAR is any
+     reference of the form 'VAR = ' or ' = VAR'.  For GIMPLE reg
+     pointers, this is the number of sites where the pointer is
+     dereferenced.  */
+  long num_direct_writes;
+  long num_direct_reads;
+
+  /* Number of indirect reference sites.  An indirect reference to VAR
+     is any reference via a pointer that contains VAR in its points-to
+     set or, in the case of call-clobbered symbols, a function call.  */
+  long num_indirect_writes;
+  long num_indirect_reads;
+
+  /* Execution frequency.  This is the sum of the execution
+     frequencies of all the statements that reference this object
+     weighted by the number of references in each statement.  This is
+     the main key used to sort the list of symbols to partition.
+     Symbols with high execution frequencies are put at the bottom of
+     the work list (ie, they are partitioned last).
+     Execution frequencies are taken directly from each basic block,
+     so compiling with PGO enabled will increase the precision of this
+     estimate.  */
+  long frequency_reads;
+  long frequency_writes;
+
+  /* Set of memory tags that contain VAR in their alias set.  */
+  bitmap parent_tags;
+};
+
+typedef struct mem_sym_stats_d *mem_sym_stats_t;
+DEF_VEC_P(mem_sym_stats_t);
+DEF_VEC_ALLOC_P(mem_sym_stats_t, heap);
+
+/* Memory reference statistics collected during alias analysis.  */
+struct mem_ref_stats_d GTY(())
+{
+  /* Number of statements that make memory references.  */
+  long num_mem_stmts;
+
+  /* Number of statements that make function calls.  */
+  long num_call_sites;
+
+  /* Number of statements that make calls to pure/const functions.  */
+  long num_pure_const_call_sites;
+
+  /* Number of ASM statements.  */
+  long num_asm_sites;
+
+  /* Estimated number of virtual operands needed as computed by
+   compute_memory_partitions.  */
+  long num_vuses;
+  long num_vdefs;
+
+  /* This maps every symbol used to make "memory" references
+     (pointers, arrays, structures, etc) to an instance of struct
+     mem_sym_stats_d describing reference statistics for the symbol.  */
+  struct pointer_map_t * GTY((skip)) mem_sym_stats;
+};
+
+
+/* Gimple dataflow datastructure. All publicly available fields shall have
+   gimple_ accessor defined in tree-flow-inline.h, all publicly modifiable
+   fields should have gimple_set accessor.  */
+struct gimple_df GTY(())
+{
+  /* Array of all variables referenced in the function.  */
+  htab_t GTY((param_is (union tree_node))) referenced_vars;
+
+  /* A vector of all the noreturn calls passed to modify_stmt.
+     cleanup_control_flow uses it to detect cases where a mid-block
+     indirect call has been turned into a noreturn call.  When this
+     happens, all the instructions after the call are no longer
+     reachable and must be deleted as dead.  */
+  VEC(gimple,gc) *modified_noreturn_calls;
+
+  /* Array of all SSA_NAMEs used in the function.  */
+  VEC(tree,gc) *ssa_names;
+
+  /* Artificial variable used to model the effects of function calls.  */
+  tree global_var;
+
+  /* Artificial variable used to model the effects of nonlocal
+     variables.  */
+  tree nonlocal_all;
+
+  /* Call clobbered variables in the function.  If bit I is set, then
+     REFERENCED_VARS (I) is call-clobbered.  */
+  bitmap call_clobbered_vars;
+
+  /* Call-used variables in the function.  If bit I is set, then
+     REFERENCED_VARS (I) is call-used at pure function call-sites.  */
+  bitmap call_used_vars;
+
+  /* Addressable variables in the function.  If bit I is set, then
+     REFERENCED_VARS (I) has had its address taken.  Note that
+     CALL_CLOBBERED_VARS and ADDRESSABLE_VARS are not related.  An
+     addressable variable is not necessarily call-clobbered (e.g., a
+     local addressable whose address does not escape) and not all
+     call-clobbered variables are addressable (e.g., a local static
+     variable).  */
+  bitmap addressable_vars;
+
+  /* Free list of SSA_NAMEs.  */
+  tree free_ssanames;
+
+  /* Hashtable holding definition for symbol.  If this field is not NULL, it
+     means that the first reference to this variable in the function is a
+     USE or a VUSE.  In those cases, the SSA renamer creates an SSA name
+     for this variable with an empty defining statement.  */
+  htab_t GTY((param_is (union tree_node))) default_defs;
+
+  /* 'true' after aliases have been computed (see compute_may_aliases).  */
+  unsigned int aliases_computed_p : 1;
+
+  /* True if the code is in ssa form.  */
+  unsigned int in_ssa_p : 1;
+
+  struct ssa_operands ssa_operands;
+
+  /* Memory reference statistics collected during alias analysis.
+     This information is used to drive the memory partitioning
+     heuristics in compute_memory_partitions.  */
+  struct mem_ref_stats_d mem_ref_stats;
+};
+
+/* Accessors for internal use only.  Generic code should use abstraction
+   provided by tree-flow-inline.h or specific modules.  */
+#define FREE_SSANAMES(fun) (fun)->gimple_df->free_ssanames
+#define SSANAMES(fun) (fun)->gimple_df->ssa_names
+#define MODIFIED_NORETURN_CALLS(fun) (fun)->gimple_df->modified_noreturn_calls
+#define DEFAULT_DEFS(fun) (fun)->gimple_df->default_defs
+
+typedef struct
+{
+  htab_t htab;
+  PTR *slot;
+  PTR *limit;
+} htab_iterator;
+
+/* Iterate through the elements of hashtable HTAB, using htab_iterator ITER,
+   storing each element in RESULT, which is of type TYPE.  */
+#define FOR_EACH_HTAB_ELEMENT(HTAB, RESULT, TYPE, ITER) \
+  for (RESULT = (TYPE) first_htab_element (&(ITER), (HTAB)); \
+       !end_htab_p (&(ITER)); \
+       RESULT = (TYPE) next_htab_element (&(ITER)))
+
+/*---------------------------------------------------------------------------
+                     Attributes for SSA_NAMEs.
+  
+  NOTE: These structures are stored in struct tree_ssa_name
+  but are only used by the tree optimizers, so it makes better sense
+  to declare them here to avoid recompiling unrelated files when
+  making changes.
+---------------------------------------------------------------------------*/
+
+/* Aliasing information for SSA_NAMEs representing pointer variables.  */
+struct ptr_info_def GTY(())
+{
+  /* Mask of reasons this pointer's value escapes the function.  */
+  ENUM_BITFIELD (escape_type) escape_mask : 9;
+
+  /* Nonzero if points-to analysis couldn't determine where this pointer
+     is pointing to.  */
+  unsigned int pt_anything : 1;
+
+  /* Nonzero if the value of this pointer escapes the current function.  */
+  unsigned int value_escapes_p : 1;
+
+  /* Nonzero if a memory tag is needed for this pointer.  This is
+     true if this pointer is eventually dereferenced.  */
+  unsigned int memory_tag_needed : 1;
+
+  /* Nonzero if this pointer is really dereferenced.  */
+  unsigned int is_dereferenced : 1;
+
+  /* Nonzero if this pointer points to a global variable.  */
+  unsigned int pt_global_mem : 1;
+
+  /* Nonzero if this pointer points to NULL.  */
+  unsigned int pt_null : 1;
+
+  /* Set of variables that this pointer may point to.  */
+  bitmap pt_vars;
+
+  /* If this pointer has been dereferenced, and points-to information is
+     more precise than type-based aliasing, indirect references to this
+     pointer will be represented by this memory tag, instead of the type
+     tag computed by TBAA.  */
+  tree name_mem_tag;
+};
+
+
+/*---------------------------------------------------------------------------
+                  Tree annotations stored in tree_base.ann
+---------------------------------------------------------------------------*/
+enum tree_ann_type { TREE_ANN_COMMON, VAR_ANN, FUNCTION_ANN };
+
+struct tree_ann_common_d GTY(())
+{
+  /* Annotation type.  */
+  enum tree_ann_type type;
+
+  /* Record EH region number into a statement tree created during RTL
+     expansion (see gimple_to_tree).  */
+  int rn;
+
+  /* Auxiliary info specific to a pass.  At all times, this
+     should either point to valid data or be NULL.  */ 
+  PTR GTY ((skip (""))) aux; 
+
+  /* The value handle for this expression.  Used by GVN-PRE.  */
+  tree GTY((skip)) value_handle;
+
+  /* Pointer to original GIMPLE statement.  Used during RTL expansion
+     (see gimple_to_tree).  */
+  gimple stmt;
+};
+
+/* It is advantageous to avoid things like life analysis for variables which
+   do not need PHI nodes.  This enum describes whether or not a particular
+   variable may need a PHI node.  */
+
+enum need_phi_state {
+  /* This is the default.  If we are still in this state after finding
+     all the definition and use sites, then we will assume the variable
+     needs PHI nodes.  This is probably an overly conservative assumption.  */
+  NEED_PHI_STATE_UNKNOWN,
+
+  /* This state indicates that we have seen one or more sets of the 
+     variable in a single basic block and that the sets dominate all
+     uses seen so far.  If after finding all definition and use sites
+     we are still in this state, then the variable does not need any
+     PHI nodes.  */
+  NEED_PHI_STATE_NO,
+
+  /* This state indicates that we have either seen multiple definitions of
+     the variable in multiple blocks, or that we encountered a use in a
+     block that was not dominated by the block containing the set(s) of
+     this variable.  This variable is assumed to need PHI nodes.  */
+  NEED_PHI_STATE_MAYBE
+};
+
+
+/* The "no alias" attribute allows alias analysis to make more
+   aggressive assumptions when assigning alias sets, computing
+   points-to information and memory partitions.  These attributes
+   are the result of user annotations or flags (e.g.,
+   -fargument-noalias).  */
+enum noalias_state {
+    /* Default state.  No special assumptions can be made about this
+       symbol.  */
+    MAY_ALIAS = 0,
+
+    /* The symbol does not alias with other symbols that have a
+       NO_ALIAS* attribute.  */
+    NO_ALIAS,
+
+    /* The symbol does not alias with other symbols that have a
+       NO_ALIAS*, and it may not alias with global symbols.  */
+    NO_ALIAS_GLOBAL,
+
+    /* The symbol does not alias with any other symbols.  */
+    NO_ALIAS_ANYTHING
+};
+
+
+struct var_ann_d GTY(())
+{
+  struct tree_ann_common_d common;
+
+  /* Used by the out of SSA pass to determine whether this variable has
+     been seen yet or not.  */
+  unsigned out_of_ssa_tag : 1;
+
+  /* Used when building base variable structures in a var_map.  */
+  unsigned base_var_processed : 1;
+
+  /* Nonzero if this variable was used after SSA optimizations were
+     applied.  We set this when translating out of SSA form.  */
+  unsigned used : 1;
+
+  /* This field indicates whether or not the variable may need PHI nodes.
+     See the enum's definition for more detailed information about the
+     states.  */
+  ENUM_BITFIELD (need_phi_state) need_phi_state : 2;
+
+  /* Used during operand processing to determine if this variable is already 
+     in the VUSE list.  */
+  unsigned in_vuse_list : 1;
+
+  /* Used during operand processing to determine if this variable is already 
+     in the VDEF list.  */
+  unsigned in_vdef_list : 1;
+
+  /* True for HEAP artificial variables.  These variables represent
+     the memory area allocated by a call to malloc.  */
+  unsigned is_heapvar : 1;
+
+  /* True if the variable is call clobbered.  */
+  unsigned call_clobbered : 1;
+
+  /* This field describes several "no alias" attributes that some
+     symbols are known to have.  See the enum's definition for more
+     information on each attribute.  */
+  ENUM_BITFIELD (noalias_state) noalias_state : 2;
+
+  /* Mask of values saying the reasons why this variable has escaped
+     the function.  */
+  ENUM_BITFIELD (escape_type) escape_mask : 9;
+
+  /* Memory partition tag assigned to this symbol.  */
+  tree mpt;
+
+  /* If this variable is a pointer P that has been dereferenced, this
+     field is an artificial variable that represents the memory
+     location *P.  Every other pointer Q that is type-compatible with
+     P will also have the same memory tag.  If the variable is not a
+     pointer or if it is never dereferenced, this must be NULL.
+     FIXME, do we really need this here?  How much slower would it be
+     to convert to hash table?  */
+  tree symbol_mem_tag;
+
+  /* Used when going out of SSA form to indicate which partition this
+     variable represents storage for.  */
+  unsigned partition;
+
+  /* Used by var_map for the base index of ssa base variables.  */
+  unsigned base_index;
+
+  /* During into-ssa and the dominator optimizer, this field holds the
+     current version of this variable (an SSA_NAME).  */
+  tree current_def;
+};
+
+/* Container for variable annotation used by hashtable for annotations for
+   static variables.  */
+struct static_var_ann_d GTY(())
+{
+  struct var_ann_d ann;
+  unsigned int uid;
+};
+
+struct function_ann_d GTY(())
+{
+  struct tree_ann_common_d common;
+};
+
+
+/* Immediate use lists are used to directly access all uses for an SSA
+   name and get pointers to the statement for each use. 
+
+   The structure ssa_use_operand_d consists of PREV and NEXT pointers
+   to maintain the list.  A USE pointer, which points to address where
+   the use is located and a LOC pointer which can point to the
+   statement where the use is located, or, in the case of the root
+   node, it points to the SSA name itself.
+
+   The list is anchored by an occurrence of ssa_operand_d *in* the
+   ssa_name node itself (named 'imm_uses').  This node is uniquely
+   identified by having a NULL USE pointer. and the LOC pointer
+   pointing back to the ssa_name node itself.  This node forms the
+   base for a circular list, and initially this is the only node in
+   the list.
+
+   Fast iteration allows each use to be examined, but does not allow
+   any modifications to the uses or stmts.
+
+   Normal iteration allows insertion, deletion, and modification. the
+   iterator manages this by inserting a marker node into the list
+   immediately before the node currently being examined in the list.
+   this marker node is uniquely identified by having null stmt *and* a
+   null use pointer.  
+
+   When iterating to the next use, the iteration routines check to see
+   if the node after the marker has changed. if it has, then the node
+   following the marker is now the next one to be visited. if not, the
+   marker node is moved past that node in the list (visualize it as
+   bumping the marker node through the list).  this continues until
+   the marker node is moved to the original anchor position. the
+   marker node is then removed from the list.
+
+   If iteration is halted early, the marker node must be removed from
+   the list before continuing.  */
+typedef struct immediate_use_iterator_d
+{
+  /* This is the current use the iterator is processing.  */
+  ssa_use_operand_t *imm_use;
+  /* This marks the last use in the list (use node from SSA_NAME)  */
+  ssa_use_operand_t *end_p;
+  /* This node is inserted and used to mark the end of the uses for a stmt.  */
+  ssa_use_operand_t iter_node;
+  /* This is the next ssa_name to visit.  IMM_USE may get removed before
+     the next one is traversed to, so it must be cached early.  */
+  ssa_use_operand_t *next_imm_name;
+} imm_use_iterator;
+
+
+/* Use this iterator when simply looking at stmts.  Adding, deleting or
+   modifying stmts will cause this iterator to malfunction.  */
+
+#define FOR_EACH_IMM_USE_FAST(DEST, ITER, SSAVAR)                      \
+  for ((DEST) = first_readonly_imm_use (&(ITER), (SSAVAR));    \
+       !end_readonly_imm_use_p (&(ITER));                      \
+       (DEST) = next_readonly_imm_use (&(ITER)))
+  
+/* Use this iterator to visit each stmt which has a use of SSAVAR.  */
+
+#define FOR_EACH_IMM_USE_STMT(STMT, ITER, SSAVAR)              \
+  for ((STMT) = first_imm_use_stmt (&(ITER), (SSAVAR));                \
+       !end_imm_use_stmt_p (&(ITER));                          \
+       (STMT) = next_imm_use_stmt (&(ITER)))
+
+/* Use this to terminate the FOR_EACH_IMM_USE_STMT loop early.  Failure to 
+   do so will result in leaving a iterator marker node in the immediate
+   use list, and nothing good will come from that.   */
+#define BREAK_FROM_IMM_USE_STMT(ITER)                          \
+   {                                                           \
+     end_imm_use_stmt_traverse (&(ITER));                      \
+     break;                                                    \
+   }
+
+
+/* Use this iterator in combination with FOR_EACH_IMM_USE_STMT to 
+   get access to each occurrence of ssavar on the stmt returned by
+   that iterator..  for instance:
+
+     FOR_EACH_IMM_USE_STMT (stmt, iter, var)
+       {
+         FOR_EACH_IMM_USE_ON_STMT (use_p, iter)
+          {
+            SET_USE (use_p, blah);
+          }
+        update_stmt (stmt);
+       }                                                        */
+
+#define FOR_EACH_IMM_USE_ON_STMT(DEST, ITER)                   \
+  for ((DEST) = first_imm_use_on_stmt (&(ITER));               \
+       !end_imm_use_on_stmt_p (&(ITER));                       \
+       (DEST) = next_imm_use_on_stmt (&(ITER)))
+
+
+
+union tree_ann_d GTY((desc ("ann_type ((tree_ann_t)&%h)")))
+{
+  struct tree_ann_common_d GTY((tag ("TREE_ANN_COMMON"))) common;
+  struct var_ann_d GTY((tag ("VAR_ANN"))) vdecl;
+  struct function_ann_d GTY((tag ("FUNCTION_ANN"))) fdecl;
+};
+
+typedef union tree_ann_d *tree_ann_t;
+typedef struct var_ann_d *var_ann_t;
+typedef struct function_ann_d *function_ann_t;
+typedef struct tree_ann_common_d *tree_ann_common_t;
+
+static inline tree_ann_common_t tree_common_ann (const_tree);
+static inline tree_ann_common_t get_tree_common_ann (tree);
+static inline var_ann_t var_ann (const_tree);
+static inline var_ann_t get_var_ann (tree);
+static inline function_ann_t function_ann (const_tree);
+static inline function_ann_t get_function_ann (tree);
+static inline enum tree_ann_type ann_type (tree_ann_t);
+static inline void update_stmt (gimple);
+static inline bitmap may_aliases (const_tree);
+static inline int get_lineno (const_gimple);
+
+/*---------------------------------------------------------------------------
+                  Structure representing predictions in tree level.
+---------------------------------------------------------------------------*/
+struct edge_prediction GTY((chain_next ("%h.ep_next")))
+{
+  struct edge_prediction *ep_next;
+  edge ep_edge;
+  enum br_predictor ep_predictor;
+  int ep_probability;
+};
+
+/* Accessors for basic block annotations.  */
+static inline gimple_seq phi_nodes (const_basic_block);
+static inline void set_phi_nodes (basic_block, gimple_seq);
+
+/*---------------------------------------------------------------------------
+                             Global declarations
+---------------------------------------------------------------------------*/
+struct int_tree_map GTY(())
+{
+  
+  unsigned int uid;
+  tree to;
+};
+
+extern unsigned int int_tree_map_hash (const void *);
+extern int int_tree_map_eq (const void *, const void *);
+
+extern unsigned int uid_decl_map_hash (const void *);
+extern int uid_decl_map_eq (const void *, const void *);
+
+typedef struct 
+{
+  htab_iterator hti;
+} referenced_var_iterator;
+
+
+/* This macro loops over all the referenced vars, one at a time, putting the
+   current var in VAR.  Note:  You are not allowed to add referenced variables
+   to the hashtable while using this macro.  Doing so may cause it to behave
+   erratically.  */
+
+#define FOR_EACH_REFERENCED_VAR(VAR, ITER) \
+  for ((VAR) = first_referenced_var (&(ITER)); \
+       !end_referenced_vars_p (&(ITER)); \
+       (VAR) = next_referenced_var (&(ITER))) 
+
+
+typedef struct
+{
+  int i;
+} safe_referenced_var_iterator;
+
+/* This macro loops over all the referenced vars, one at a time, putting the
+   current var in VAR.  You are allowed to add referenced variables during the
+   execution of this macro, however, the macro will not iterate over them.  It
+   requires a temporary vector of trees, VEC, whose lifetime is controlled by
+   the caller.  The purpose of the vector is to temporarily store the
+   referenced_variables hashtable so that adding referenced variables does not
+   affect the hashtable.  */
+
+#define FOR_EACH_REFERENCED_VAR_SAFE(VAR, VEC, ITER) \
+  for ((ITER).i = 0, fill_referenced_var_vec (&(VEC)); \
+       VEC_iterate (tree, (VEC), (ITER).i, (VAR)); \
+       (ITER).i++)
+
+extern tree referenced_var_lookup (unsigned int);
+extern bool referenced_var_check_and_insert (tree);
+#define num_referenced_vars htab_elements (gimple_referenced_vars (cfun))
+#define referenced_var(i) referenced_var_lookup (i)
+
+#define num_ssa_names (VEC_length (tree, cfun->gimple_df->ssa_names))
+#define ssa_name(i) (VEC_index (tree, cfun->gimple_df->ssa_names, (i)))
+
+/* Macros for showing usage statistics.  */
+#define SCALE(x) ((unsigned long) ((x) < 1024*10       \
+                 ? (x)                                 \
+                 : ((x) < 1024*1024*10                 \
+                    ? (x) / 1024                       \
+                    : (x) / (1024*1024))))
+
+#define LABEL(x) ((x) < 1024*10 ? 'b' : ((x) < 1024*1024*10 ? 'k' : 'M'))
+
+#define PERCENT(x,y) ((float)(x) * 100.0 / (float)(y))
+
+/*---------------------------------------------------------------------------
+                             OpenMP Region Tree
+---------------------------------------------------------------------------*/
+
+/* Parallel region information.  Every parallel and workshare
+   directive is enclosed between two markers, the OMP_* directive
+   and a corresponding OMP_RETURN statement.  */
+
+struct omp_region
+{
+  /* The enclosing region.  */
+  struct omp_region *outer;
+
+  /* First child region.  */
+  struct omp_region *inner;
+
+  /* Next peer region.  */
+  struct omp_region *next;
+
+  /* Block containing the omp directive as its last stmt.  */
+  basic_block entry;
+
+  /* Block containing the OMP_RETURN as its last stmt.  */
+  basic_block exit;
+
+  /* Block containing the OMP_CONTINUE as its last stmt.  */
+  basic_block cont;
+
+  /* If this is a combined parallel+workshare region, this is a list
+     of additional arguments needed by the combined parallel+workshare
+     library call.  */
+  tree ws_args;
+
+  /* The code for the omp directive of this region.  */
+  enum gimple_code type;
+
+  /* Schedule kind, only used for OMP_FOR type regions.  */
+  enum omp_clause_schedule_kind sched_kind;
+
+  /* True if this is a combined parallel+workshare region.  */
+  bool is_combined_parallel;
+};
+
+extern struct omp_region *root_omp_region;
+extern struct omp_region *new_omp_region (basic_block, enum gimple_code,
+                                         struct omp_region *);
+extern void free_omp_regions (void);
+void omp_expand_local (basic_block);
+extern tree find_omp_clause (tree, enum omp_clause_code);
+tree copy_var_decl (tree, tree, tree);
+
+/*---------------------------------------------------------------------------
+                             Function prototypes
+---------------------------------------------------------------------------*/
+/* In tree-cfg.c  */
+
+/* Location to track pending stmt for edge insertion.  */
+#define PENDING_STMT(e)        ((e)->insns.g)
+
+extern void delete_tree_cfg_annotations (void);
+extern bool stmt_ends_bb_p (gimple);
+extern bool is_ctrl_stmt (gimple);
+extern bool is_ctrl_altering_stmt (gimple);
+extern bool simple_goto_p (gimple);
+extern bool stmt_can_make_abnormal_goto (gimple);
+extern basic_block single_noncomplex_succ (basic_block bb);
+extern void gimple_dump_bb (basic_block, FILE *, int, int);
+extern void gimple_debug_bb (basic_block);
+extern basic_block gimple_debug_bb_n (int);
+extern void gimple_dump_cfg (FILE *, int);
+extern void gimple_debug_cfg (int);
+extern void dump_cfg_stats (FILE *);
+extern void dot_cfg (void);
+extern void debug_cfg_stats (void);
+extern void debug_loops (int);
+extern void debug_loop (struct loop *, int);
+extern void debug_loop_num (unsigned, int);
+extern void print_loops (FILE *, int);
+extern void print_loops_bb (FILE *, basic_block, int, int);
+extern void cleanup_dead_labels (void);
+extern void group_case_labels (void);
+extern gimple first_stmt (basic_block);
+extern gimple last_stmt (basic_block);
+extern gimple last_and_only_stmt (basic_block);
+extern edge find_taken_edge (basic_block, tree);
+extern basic_block label_to_block_fn (struct function *, tree);
+#define label_to_block(t) (label_to_block_fn (cfun, t))
+extern void notice_special_calls (gimple);
+extern void clear_special_calls (void);
+extern void verify_stmts (void);
+extern void verify_gimple (void);
+extern void verify_types_in_gimple_seq (gimple_seq);
+extern tree gimple_block_label (basic_block);
+extern void extract_true_false_edges_from_block (basic_block, edge *, edge *);
+extern bool gimple_duplicate_sese_region (edge, edge, basic_block *, unsigned,
+                                       basic_block *);
+extern bool gimple_duplicate_sese_tail (edge, edge, basic_block *, unsigned,
+                                     basic_block *);
+extern void gather_blocks_in_sese_region (basic_block entry, basic_block exit,
+                                         VEC(basic_block,heap) **bbs_p);
+extern void add_phi_args_after_copy_bb (basic_block);
+extern void add_phi_args_after_copy (basic_block *, unsigned, edge);
+extern bool gimple_purge_dead_abnormal_call_edges (basic_block);
+extern bool gimple_purge_dead_eh_edges (basic_block);
+extern bool gimple_purge_all_dead_eh_edges (const_bitmap);
+extern tree gimplify_build1 (gimple_stmt_iterator *, enum tree_code,
+                            tree, tree);
+extern tree gimplify_build2 (gimple_stmt_iterator *, enum tree_code,
+                            tree, tree, tree);
+extern tree gimplify_build3 (gimple_stmt_iterator *, enum tree_code,
+                            tree, tree, tree, tree);
+extern void init_empty_tree_cfg (void);
+extern void init_empty_tree_cfg_for_function (struct function *);
+extern void fold_cond_expr_cond (void);
+extern void make_abnormal_goto_edges (basic_block, bool);
+extern void replace_uses_by (tree, tree);
+extern void start_recording_case_labels (void);
+extern void end_recording_case_labels (void);
+extern basic_block move_sese_region_to_fn (struct function *, basic_block,
+                                          basic_block, tree);
+void remove_edge_and_dominated_blocks (edge);
+void mark_virtual_ops_in_bb (basic_block);
+
+/* In tree-cfgcleanup.c  */
+extern bitmap cfgcleanup_altered_bbs;
+extern bool cleanup_tree_cfg (void);
+
+/* In tree-pretty-print.c.  */
+extern void dump_generic_bb (FILE *, basic_block, int, int);
+extern int op_code_prio (enum tree_code);
+extern int op_prio (const_tree);
+extern const char *op_symbol_code (enum tree_code);
+
+/* In tree-dfa.c  */
+extern var_ann_t create_var_ann (tree);
+extern function_ann_t create_function_ann (tree);
+extern void renumber_gimple_stmt_uids (void);
+extern tree_ann_common_t create_tree_common_ann (tree);
+extern void dump_dfa_stats (FILE *);
+extern void debug_dfa_stats (void);
+extern void debug_referenced_vars (void);
+extern void dump_referenced_vars (FILE *);
+extern void dump_variable (FILE *, tree);
+extern void debug_variable (tree);
+extern tree get_virtual_var (tree);
+extern bool add_referenced_var (tree);
+extern void remove_referenced_var (tree);
+extern void mark_symbols_for_renaming (gimple);
+extern void find_new_referenced_vars (gimple);
+extern tree make_rename_temp (tree, const char *);
+extern void set_default_def (tree, tree);
+extern tree gimple_default_def (struct function *, tree);
+extern bool stmt_references_abnormal_ssa_name (gimple);
+extern bool refs_may_alias_p (tree, tree);
+extern gimple get_single_def_stmt (gimple);
+extern gimple get_single_def_stmt_from_phi (tree, gimple);
+extern gimple get_single_def_stmt_with_phi (tree, gimple);
+
+/* In tree-phinodes.c  */
+extern void reserve_phi_args_for_new_edge (basic_block);
+extern void add_phi_node_to_bb (gimple phi, basic_block bb);
+extern gimple make_phi_node (tree var, int len);
+extern gimple create_phi_node (tree, basic_block);
+extern void add_phi_arg (gimple, tree, edge);
+extern void remove_phi_args (edge);
+extern void remove_phi_node (gimple_stmt_iterator *, bool);
+extern void remove_phi_nodes (basic_block);
+extern void init_phinodes (void);
+extern void fini_phinodes (void);
+extern void release_phi_node (gimple);
+#ifdef GATHER_STATISTICS
+extern void phinodes_print_statistics (void);
+#endif
+
+/* In gimple-low.c  */
+extern void record_vars_into (tree, tree);
+extern void record_vars (tree);
+extern bool block_may_fallthru (const_tree);
+extern bool gimple_seq_may_fallthru (gimple_seq);
+extern bool gimple_stmt_may_fallthru (gimple);
+extern void check_call_args (gimple);
+
+/* In tree-ssa-alias.c  */
+extern unsigned int compute_may_aliases (void);
+extern void dump_may_aliases_for (FILE *, tree);
+extern void debug_may_aliases_for (tree);
+extern void dump_alias_info (FILE *);
+extern void debug_alias_info (void);
+extern void dump_points_to_info (FILE *);
+extern void debug_points_to_info (void);
+extern void dump_points_to_info_for (FILE *, tree);
+extern void debug_points_to_info_for (tree);
+extern bool may_be_aliased (tree);
+extern bool may_alias_p (tree, alias_set_type, tree, alias_set_type, bool);
+extern struct ptr_info_def *get_ptr_info (tree);
+extern bool may_point_to_global_var (tree);
+extern void new_type_alias (tree, tree, tree);
+extern void count_uses_and_derefs (tree, gimple, unsigned *, unsigned *,
+                                  unsigned *);
+static inline bool ref_contains_array_ref (const_tree);
+static inline bool array_ref_contains_indirect_ref (const_tree);
+extern tree get_ref_base_and_extent (tree, HOST_WIDE_INT *,
+                                    HOST_WIDE_INT *, HOST_WIDE_INT *);
+extern tree create_tag_raw (enum tree_code, tree, const char *);
+extern void delete_mem_ref_stats (struct function *);
+extern void dump_mem_ref_stats (FILE *);
+extern void debug_mem_ref_stats (void);
+extern void debug_memory_partitions (void);
+extern void debug_mem_sym_stats (tree var);
+extern void dump_mem_sym_stats_for_var (FILE *, tree);
+extern void debug_all_mem_sym_stats (void);
+
+/* Call-back function for walk_use_def_chains().  At each reaching
+   definition, a function with this prototype is called.  */
+typedef bool (*walk_use_def_chains_fn) (tree, gimple, void *);
+
+/* In tree-ssa-alias-warnings.c  */
+extern void strict_aliasing_warning_backend (void);
+
+
+/* In tree-ssa.c  */
+
+/* Mapping for redirected edges.  */
+struct _edge_var_map GTY(())
+{
+  tree result;                 /* PHI result.  */
+  tree def;                    /* PHI arg definition.  */
+};
+typedef struct _edge_var_map edge_var_map;
+
+DEF_VEC_O(edge_var_map);
+DEF_VEC_ALLOC_O(edge_var_map, heap);
+
+/* A vector of var maps.  */
+typedef VEC(edge_var_map, heap) *edge_var_map_vector;
+
+extern void init_tree_ssa (struct function *);
+extern void redirect_edge_var_map_add (edge, tree, tree);
+extern void redirect_edge_var_map_clear (edge);
+extern void redirect_edge_var_map_dup (edge, edge);
+extern edge_var_map_vector redirect_edge_var_map_vector (edge);
+extern void redirect_edge_var_map_destroy (void);
+
+extern edge ssa_redirect_edge (edge, basic_block);
+extern void flush_pending_stmts (edge);
+extern void verify_ssa (bool);
+extern void delete_tree_ssa (void);
+extern void walk_use_def_chains (tree, walk_use_def_chains_fn, void *, bool);
+extern bool ssa_undefined_value_p (tree);
+
+
+/* In tree-into-ssa.c  */
+void update_ssa (unsigned);
+void delete_update_ssa (void);
+void register_new_name_mapping (tree, tree);
+tree create_new_def_for (tree, gimple, def_operand_p);
+bool need_ssa_update_p (void);
+bool name_mappings_registered_p (void);
+bool name_registered_for_update_p (tree);
+bitmap ssa_names_to_replace (void);
+void release_ssa_name_after_update_ssa (tree);
+void compute_global_livein (bitmap, bitmap);
+void mark_sym_for_renaming (tree);
+void mark_set_for_renaming (bitmap);
+tree get_current_def (tree);
+void set_current_def (tree, tree);
+
+/* In tree-ssanames.c  */
+extern void init_ssanames (struct function *, int);
+extern void fini_ssanames (void);
+extern tree make_ssa_name_fn (struct function *, tree, gimple);
+extern tree duplicate_ssa_name (tree, gimple);
+extern void duplicate_ssa_name_ptr_info (tree, struct ptr_info_def *);
+extern void release_ssa_name (tree);
+extern void release_defs (gimple);
+extern void replace_ssa_name_symbol (tree, tree);
+
+#ifdef GATHER_STATISTICS
+extern void ssanames_print_statistics (void);
+#endif
+
+/* In tree-ssa-ccp.c  */
+bool fold_stmt (gimple_stmt_iterator *);
+bool fold_stmt_inplace (gimple);
+tree get_symbol_constant_value (tree);
+tree fold_const_aggregate_ref (tree);
+bool may_propagate_address_into_dereference (tree, tree);
+
+
+/* In tree-vrp.c  */
+tree vrp_evaluate_conditional (enum tree_code, tree, tree, gimple);
+bool simplify_stmt_using_ranges (gimple_stmt_iterator *);
+
+/* In tree-ssa-dom.c  */
+extern void dump_dominator_optimization_stats (FILE *);
+extern void debug_dominator_optimization_stats (void);
+int loop_depth_of_name (tree);
+
+/* In tree-ssa-copy.c  */
+extern void merge_alias_info (tree, tree);
+extern void propagate_value (use_operand_p, tree);
+extern void propagate_tree_value (tree *, tree);
+extern void propagate_tree_value_into_stmt (gimple_stmt_iterator *, tree);
+extern void replace_exp (use_operand_p, tree);
+extern bool may_propagate_copy (tree, tree);
+extern bool may_propagate_copy_into_stmt (gimple, tree);
+extern bool may_propagate_copy_into_asm (tree);
+
+/* Affine iv.  */
+
+typedef struct
+{
+  /* Iv = BASE + STEP * i.  */
+  tree base, step;
+
+  /* True if this iv does not overflow.  */
+  bool no_overflow;
+} affine_iv;
+
+/* Description of number of iterations of a loop.  All the expressions inside
+   the structure can be evaluated at the end of the loop's preheader
+   (and due to ssa form, also anywhere inside the body of the loop).  */
+
+struct tree_niter_desc
+{
+  tree assumptions;    /* The boolean expression.  If this expression evaluates
+                          to false, then the other fields in this structure
+                          should not be used; there is no guarantee that they
+                          will be correct.  */
+  tree may_be_zero;    /* The boolean expression.  If it evaluates to true,
+                          the loop will exit in the first iteration (i.e.
+                          its latch will not be executed), even if the niter
+                          field says otherwise.  */
+  tree niter;          /* The expression giving the number of iterations of
+                          a loop (provided that assumptions == true and
+                          may_be_zero == false), more precisely the number
+                          of executions of the latch of the loop.  */
+  double_int max;      /* The upper bound on the number of iterations of
+                          the loop.  */
+
+  /* The simplified shape of the exit condition.  The loop exits if
+     CONTROL CMP BOUND is false, where CMP is one of NE_EXPR,
+     LT_EXPR, or GT_EXPR, and step of CONTROL is positive if CMP is
+     LE_EXPR and negative if CMP is GE_EXPR.  This information is used
+     by loop unrolling.  */
+  affine_iv control;
+  tree bound;
+  enum tree_code cmp;
+};
+
+/* In tree-vectorizer.c */
+unsigned vectorize_loops (void);
+extern bool vect_can_force_dr_alignment_p (const_tree, unsigned int);
+extern tree get_vectype_for_scalar_type (tree);
+
+/* In tree-ssa-phiopt.c */
+bool empty_block_p (basic_block);
+basic_block *blocks_in_phiopt_order (void);
+
+/* In tree-ssa-loop*.c  */
+
+void tree_ssa_lim (void);
+unsigned int tree_ssa_unswitch_loops (void);
+unsigned int canonicalize_induction_variables (void);
+unsigned int tree_unroll_loops_completely (bool, bool);
+unsigned int tree_ssa_prefetch_arrays (void);
+unsigned int remove_empty_loops (void);
+void tree_ssa_iv_optimize (void);
+unsigned tree_predictive_commoning (void);
+tree canonicalize_loop_ivs (struct loop *, htab_t, tree *);
+bool parallelize_loops (void);
+
+bool loop_only_exit_p (const struct loop *, const_edge);
+bool number_of_iterations_exit (struct loop *, edge,
+                               struct tree_niter_desc *niter, bool);
+tree find_loop_niter (struct loop *, edge *);
+tree loop_niter_by_eval (struct loop *, edge);
+tree find_loop_niter_by_eval (struct loop *, edge *);
+void estimate_numbers_of_iterations (void);
+bool scev_probably_wraps_p (tree, tree, gimple, struct loop *, bool);
+bool convert_affine_scev (struct loop *, tree, tree *, tree *, gimple, bool);
+
+bool nowrap_type_p (tree);
+enum ev_direction {EV_DIR_GROWS, EV_DIR_DECREASES, EV_DIR_UNKNOWN};
+enum ev_direction scev_direction (const_tree);
+
+void free_numbers_of_iterations_estimates (void);
+void free_numbers_of_iterations_estimates_loop (struct loop *);
+void rewrite_into_loop_closed_ssa (bitmap, unsigned);
+void verify_loop_closed_ssa (void);
+bool for_each_index (tree *, bool (*) (tree, tree *, void *), void *);
+void create_iv (tree, tree, tree, struct loop *, gimple_stmt_iterator *, bool,
+               tree *, tree *);
+basic_block split_loop_exit_edge (edge);
+void standard_iv_increment_position (struct loop *, gimple_stmt_iterator *,
+                                    bool *);
+basic_block ip_end_pos (struct loop *);
+basic_block ip_normal_pos (struct loop *);
+bool gimple_duplicate_loop_to_header_edge (struct loop *, edge,
+                                        unsigned int, sbitmap,
+                                        edge, VEC (edge, heap) **,
+                                        int);
+struct loop *slpeel_tree_duplicate_loop_to_edge_cfg (struct loop *, edge);
+void rename_variables_in_loop (struct loop *);
+void rename_variables_in_bb (basic_block bb);
+struct loop *tree_ssa_loop_version (struct loop *, tree,
+                                   basic_block *);
+tree expand_simple_operations (tree);
+void substitute_in_loop_info (struct loop *, tree, tree);
+edge single_dom_exit (struct loop *);
+bool can_unroll_loop_p (struct loop *loop, unsigned factor,
+                       struct tree_niter_desc *niter);
+void tree_unroll_loop (struct loop *, unsigned,
+                      edge, struct tree_niter_desc *);
+typedef void (*transform_callback)(struct loop *, void *);
+void tree_transform_and_unroll_loop (struct loop *, unsigned,
+                                    edge, struct tree_niter_desc *,
+                                    transform_callback, void *);
+bool contains_abnormal_ssa_name_p (tree);
+bool stmt_dominates_stmt_p (gimple, gimple);
+void mark_virtual_ops_for_renaming (gimple);
+
+/* In tree-ssa-threadedge.c */
+extern bool potentially_threadable_block (basic_block);
+extern void thread_across_edge (gimple, edge, bool,
+                               VEC(tree, heap) **, tree (*) (gimple, gimple));
+
+/* In tree-ssa-loop-im.c  */
+/* The possibilities of statement movement.  */
+
+enum move_pos
+  {
+    MOVE_IMPOSSIBLE,           /* No movement -- side effect expression.  */
+    MOVE_PRESERVE_EXECUTION,   /* Must not cause the non-executed statement
+                                  become executed -- memory accesses, ... */
+    MOVE_POSSIBLE              /* Unlimited movement.  */
+  };
+extern enum move_pos movement_possibility (gimple);
+char *get_lsm_tmp_name (tree, unsigned);
+
+/* In tree-flow-inline.h  */
+static inline bool is_call_clobbered (const_tree);
+static inline void mark_call_clobbered (tree, unsigned int);
+static inline void set_is_used (tree);
+static inline bool unmodifiable_var_p (const_tree);
+
+/* In tree-eh.c  */
+extern void make_eh_edges (gimple);
+extern bool tree_could_trap_p (tree);
+extern bool operation_could_trap_helper_p (enum tree_code, bool, bool, bool,
+                                          bool, tree, bool *);
+extern bool operation_could_trap_p (enum tree_code, bool, bool, tree);
+extern bool stmt_could_throw_p (gimple);
+extern bool tree_could_throw_p (tree);
+extern bool stmt_can_throw_internal (gimple);
+extern void add_stmt_to_eh_region (gimple, int);
+extern bool remove_stmt_from_eh_region (gimple);
+extern bool maybe_clean_or_replace_eh_stmt (gimple, gimple);
+extern void add_stmt_to_eh_region_fn (struct function *, gimple, int);
+extern bool remove_stmt_from_eh_region_fn (struct function *, gimple);
+extern int lookup_stmt_eh_region_fn (struct function *, gimple);
+extern int lookup_expr_eh_region (tree);
+extern int lookup_stmt_eh_region (gimple);
+extern bool verify_eh_edges (gimple);
+
+
+/* In tree-ssa-pre.c  */
+struct pre_expr_d;
+void add_to_value (unsigned int, struct pre_expr_d *);
+void debug_value_expressions (unsigned int);
+void print_value_expressions (FILE *, unsigned int);
+
+
+/* In tree-vn.c  */
+tree make_value_handle (tree);
+void set_value_handle (tree, tree);
+bool expressions_equal_p (tree, tree);
+void sort_vuses (VEC (tree, gc) *);
+void sort_vuses_heap (VEC (tree, heap) *);
+tree vn_lookup_or_add (tree);
+tree vn_lookup_or_add_with_stmt (tree, gimple);
+tree vn_lookup_or_add_with_vuses (tree, VEC (tree, gc) *);
+void vn_add (tree, tree);
+void vn_add_with_vuses (tree, tree, VEC (tree, gc) *);
+tree vn_lookup_with_stmt (tree, gimple);
+tree vn_lookup (tree);
+tree vn_lookup_with_vuses (tree, VEC (tree, gc) *);
+
+/* In tree-ssa-sink.c  */
+bool is_hidden_global_store (gimple);
+
+/* In tree-sra.c  */
+void insert_edge_copies_seq (gimple_seq, basic_block);
+void sra_insert_before (gimple_stmt_iterator *, gimple_seq);
+void sra_insert_after (gimple_stmt_iterator *, gimple_seq);
+void sra_init_cache (void);
+bool sra_type_can_be_decomposed_p (tree);
+
+/* In tree-loop-linear.c  */
+extern void linear_transform_loops (void);
+extern unsigned perfect_loop_nest_depth (struct loop *);
+
+/* In graphite.c  */
+extern void graphite_transform_loops (void);
+
+/* In tree-data-ref.c  */
+extern void tree_check_data_deps (void);
+
+/* In tree-ssa-loop-ivopts.c  */
+bool expr_invariant_in_loop_p (struct loop *, tree);
+bool stmt_invariant_in_loop_p (struct loop *, gimple);
+bool multiplier_allowed_in_address_p (HOST_WIDE_INT, enum machine_mode);
+unsigned multiply_by_cost (HOST_WIDE_INT, enum machine_mode, bool);
+
+/* In tree-ssa-threadupdate.c.  */
+extern bool thread_through_all_blocks (bool);
+extern void register_jump_thread (edge, edge);
+
+/* In gimplify.c  */
+tree force_gimple_operand (tree, gimple_seq *, bool, tree);
+tree force_gimple_operand_gsi (gimple_stmt_iterator *, tree, bool, tree,
+                              bool, enum gsi_iterator_update);
+tree gimple_fold_indirect_ref (tree);
+
+/* In tree-ssa-structalias.c */
+bool find_what_p_points_to (tree);
+bool clobber_what_escaped (void);
+void compute_call_used_vars (void);
+
+/* In tree-ssa-live.c */
+extern void remove_unused_locals (void);
+extern void dump_scope_blocks (FILE *, int);
+
+/* In tree-ssa-address.c  */
+
+/* Description of a memory address.  */
+
+struct mem_address
+{
+  tree symbol, base, index, step, offset;
+};
+
+struct affine_tree_combination;
+tree create_mem_ref (gimple_stmt_iterator *, tree, 
+                    struct affine_tree_combination *, bool);
+rtx addr_for_mem_ref (struct mem_address *, bool);
+void get_address_description (tree, struct mem_address *);
+tree maybe_fold_tmr (tree);
+
+void init_alias_heapvars (void);
+void delete_alias_heapvars (void);
+unsigned int execute_fixup_cfg (void);
+
+#include "tree-flow-inline.h"
+
+void swap_tree_operands (gimple, tree *, tree *);
+
+int least_common_multiple (int, int);
+
+#endif /* _TREE_FLOW_H  */
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-iterator.h b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/plugin/include/tree-iterator.h
new file mode 100644 (file)
index 0000000..98f0cf8
--- /dev/null
@@ -0,0 +1,122 @@
+/* Iterator routines for manipulating GENERIC and GIMPLE tree statements.
+   Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc.
+   Contributed by Andrew MacLeod  <amacleod@redhat.com>
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+
+/* This file is dependent upon the implementation of tree's. It provides an
+   abstract interface to the tree objects such that if all tree creation and
+   manipulations are done through this interface, we can easily change the
+   implementation of tree's, and not impact other code.  */
+
+#ifndef GCC_TREE_ITERATOR_H
+#define GCC_TREE_ITERATOR_H 1
+
+/* Iterator object for GENERIC or GIMPLE TREE statements.  */
+
+typedef struct {
+  struct tree_statement_list_node *ptr;
+  tree container;
+} tree_stmt_iterator;
+
+static inline tree_stmt_iterator
+tsi_start (tree t)
+{
+  tree_stmt_iterator i;
+
+  i.ptr = STATEMENT_LIST_HEAD (t);
+  i.container = t;
+
+  return i;
+}
+
+static inline tree_stmt_iterator
+tsi_last (tree t)
+{
+  tree_stmt_iterator i;
+
+  i.ptr = STATEMENT_LIST_TAIL (t);
+  i.container = t;
+
+  return i;
+}
+
+static inline bool
+tsi_end_p (tree_stmt_iterator i)
+{
+  return i.ptr == NULL;
+}
+
+static inline bool
+tsi_one_before_end_p (tree_stmt_iterator i)
+{
+  return i.ptr != NULL && i.ptr->next == NULL;
+}
+
+static inline void
+tsi_next (tree_stmt_iterator *i)
+{
+  i->ptr = i->ptr->next;
+}
+
+static inline void
+tsi_prev (tree_stmt_iterator *i)
+{
+  i->ptr = i->ptr->prev;
+}
+
+static inline tree *
+tsi_stmt_ptr (tree_stmt_iterator i)
+{
+  return &i.ptr->stmt;
+}
+
+static inline tree
+tsi_stmt (tree_stmt_iterator i)
+{
+  return i.ptr->stmt;
+}
+
+enum tsi_iterator_update
+{
+  TSI_NEW_STMT,                /* Only valid when single statement is added, move
+                          iterator to it.  */
+  TSI_SAME_STMT,       /* Leave the iterator at the same statement.  */
+  TSI_CHAIN_START,     /* Only valid when chain of statements is added, move
+                          iterator to the first statement in the chain.  */
+  TSI_CHAIN_END,       /* Only valid when chain of statements is added, move
+                          iterator to the last statement in the chain.  */
+  TSI_CONTINUE_LINKING /* Move iterator to whatever position is suitable for
+                          linking other statements/chains of statements in
+                          the same direction.  */
+};
+
+extern void tsi_link_before (tree_stmt_iterator *, tree,
+                            enum tsi_iterator_update);
+extern void tsi_link_after (tree_stmt_iterator *, tree,
+                           enum tsi_iterator_update);
+
+void tsi_delink (tree_stmt_iterator *);
+
+tree tsi_split_statement_list_after (const tree_stmt_iterator *);
+tree tsi_split_statement_list_before (tree_stmt_iterator *);
+
+void append_to_statement_list (tree, tree *);
+void append_to_statement_list_force (tree, tree *);
+
+#endif /* GCC_TREE_ITERATOR_H  */
index 4e3ef58..1a3ab0b 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtbegin.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/crtbegin.o differ
index d32c2db..659e074 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcc.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcc.a differ
index 733bfda..5c8add5 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcov.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/android/libgcov.a differ
index b8dbcd2..68686c8 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtbegin.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtbegin.o differ
index 8bce296..178e510 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtend.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtend.o differ
index 2cc24fe..8619b88 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crti.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crti.o differ
index fc2866b..c6c2cf4 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtn.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/crtn.o differ
index 6becd33..68686c8 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtbegin.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtbegin.o differ
index 8bce296..178e510 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtend.o and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/crtend.o differ
index 7de030d..a01c6c6 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcc.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcc.a differ
index e3250fa..7d65dcc 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcov.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/interwork/libgcov.a differ
index 9d7e02a..f56d54a 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcc.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcc.a differ
index af4413b..20faa72 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcov.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/thumb/libgcov.a differ
index 26a259d..f8fefcc 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/libarm-elf-linux-sim.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/libarm-elf-linux-sim.a differ
index e731131..307bd73 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib/libiberty.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib/libiberty.a differ
index 2ee3e5b..772e3d6 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/lib32/libiberty.a and b/linux-x86/toolchain/arm-eabi-4.4.0/lib32/libiberty.a differ
index 48de394..172c7d5 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1 and b/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1 differ
index b9cd4a5..3c9f342 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1plus and b/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/cc1plus differ
index f2d6d3c..fecec2e 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/collect2 and b/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/collect2 differ
index fdf4494..05f84fb 100755 (executable)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/install-tools/fixincl and b/linux-x86/toolchain/arm-eabi-4.4.0/libexec/gcc/arm-eabi/4.4.0/install-tools/fixincl differ
index 33f48f1..4d17a2f 100755 (executable)
@@ -53,7 +53,7 @@ if [ x$1 != x ] ; then
   prefix=$1
   shift
 else
-  prefix=/g/users/dougkwan/toolbuild/arm-eabi-4.4.0
+  prefix=/usr/local
 fi
 
 # Allow for alternate isysroot in which to find headers
index d70420c..4c92048 100644 (file)
@@ -187,7 +187,8 @@ Here is a summary of all the options, grouped by type.  Explanations are
 in the following sections.
 .IP "\fIOverall Options\fR" 4
 .IX Item "Overall Options"
-\&\fB\-c  \-S  \-E  \-o\fR \fIfile\fR  \fB\-combine  \-pipe  \-pass\-exit\-codes  
+\&\fB\-c  \-S  \-E  \-o\fR \fIfile\fR  \fB\-combine  \-no\-canonical\-prefixes  
+\&\-pipe  \-pass\-exit\-codes  
 \&\-x\fR \fIlanguage\fR  \fB\-v  \-###  \-\-help\fR[\fB=\fR\fIclass\fR[\fB,...\fR]]  \fB\-\-target\-help  
 \&\-\-version \-wrapper@\fR\fIfile\fR \fB\-fplugin=\fR\fIfile\fR \fB\-fplugin\-arg\-\fR\fIname\fR\fB=\fR\fIarg\fR
 .IP "\fIC Language Options\fR" 4
@@ -372,7 +373,7 @@ in the following sections.
 \&\-freciprocal\-math \-fregmove \-frename\-registers \-freorder\-blocks 
 \&\-freorder\-blocks\-and\-partition \-freorder\-functions 
 \&\-frerun\-cse\-after\-loop \-freschedule\-modulo\-scheduled\-loops 
-\&\-frounding\-math \-frtl\-abstract\-sequences \-fsched2\-use\-superblocks 
+\&\-frounding\-math \-fsched2\-use\-superblocks 
 \&\-fsched2\-use\-traces \-fsched\-spec\-load \-fsched\-spec\-load\-dangerous 
 \&\-fsched\-stalled\-insns\-dep[=\fR\fIn\fR\fB] \-fsched\-stalled\-insns[=\fR\fIn\fR\fB] 
 \&\-fschedule\-insns \-fschedule\-insns2 \-fsection\-anchors \-fsee 
@@ -1275,6 +1276,11 @@ by \fB\-O3\fR by using:
 \&        diff /tmp/O2\-opts /tmp/O3\-opts | grep enabled
 .Ve
 .RE
+.IP "\fB\-no\-canonical\-prefixes\fR" 4
+.IX Item "-no-canonical-prefixes"
+Do not expand any symbolic links, resolve references to \fB/../\fR
+or \fB/./\fR, or make the path absolute when generating a relative
+prefix.
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 Display the version number and copyrights of the invoked \s-1GCC\s0.
@@ -6303,13 +6309,6 @@ disable all \s-1GCC\s0 optimizations that are affected by rounding mode.
 Future versions of \s-1GCC\s0 may provide finer control of this setting
 using C99's \f(CW\*(C`FENV_ACCESS\*(C'\fR pragma.  This command line option
 will be used to specify the default state for \f(CW\*(C`FENV_ACCESS\*(C'\fR.
-.IP "\fB\-frtl\-abstract\-sequences\fR" 4
-.IX Item "-frtl-abstract-sequences"
-It is a size optimization method. This option is to find identical
-sequences of code, which can be turned into pseudo-procedures  and
-then  replace  all  occurrences with  calls to  the  newly created
-subroutine. It is kind of an opposite of \fB\-finline\-functions\fR.
-This optimization runs at \s-1RTL\s0 level.
 .IP "\fB\-fsignaling\-nans\fR" 4
 .IX Item "-fsignaling-nans"
 Compile code assuming that \s-1IEEE\s0 signaling NaNs may generate user-visible
index d70420c..4c92048 100644 (file)
@@ -187,7 +187,8 @@ Here is a summary of all the options, grouped by type.  Explanations are
 in the following sections.
 .IP "\fIOverall Options\fR" 4
 .IX Item "Overall Options"
-\&\fB\-c  \-S  \-E  \-o\fR \fIfile\fR  \fB\-combine  \-pipe  \-pass\-exit\-codes  
+\&\fB\-c  \-S  \-E  \-o\fR \fIfile\fR  \fB\-combine  \-no\-canonical\-prefixes  
+\&\-pipe  \-pass\-exit\-codes  
 \&\-x\fR \fIlanguage\fR  \fB\-v  \-###  \-\-help\fR[\fB=\fR\fIclass\fR[\fB,...\fR]]  \fB\-\-target\-help  
 \&\-\-version \-wrapper@\fR\fIfile\fR \fB\-fplugin=\fR\fIfile\fR \fB\-fplugin\-arg\-\fR\fIname\fR\fB=\fR\fIarg\fR
 .IP "\fIC Language Options\fR" 4
@@ -372,7 +373,7 @@ in the following sections.
 \&\-freciprocal\-math \-fregmove \-frename\-registers \-freorder\-blocks 
 \&\-freorder\-blocks\-and\-partition \-freorder\-functions 
 \&\-frerun\-cse\-after\-loop \-freschedule\-modulo\-scheduled\-loops 
-\&\-frounding\-math \-frtl\-abstract\-sequences \-fsched2\-use\-superblocks 
+\&\-frounding\-math \-fsched2\-use\-superblocks 
 \&\-fsched2\-use\-traces \-fsched\-spec\-load \-fsched\-spec\-load\-dangerous 
 \&\-fsched\-stalled\-insns\-dep[=\fR\fIn\fR\fB] \-fsched\-stalled\-insns[=\fR\fIn\fR\fB] 
 \&\-fschedule\-insns \-fschedule\-insns2 \-fsection\-anchors \-fsee 
@@ -1275,6 +1276,11 @@ by \fB\-O3\fR by using:
 \&        diff /tmp/O2\-opts /tmp/O3\-opts | grep enabled
 .Ve
 .RE
+.IP "\fB\-no\-canonical\-prefixes\fR" 4
+.IX Item "-no-canonical-prefixes"
+Do not expand any symbolic links, resolve references to \fB/../\fR
+or \fB/./\fR, or make the path absolute when generating a relative
+prefix.
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 Display the version number and copyrights of the invoked \s-1GCC\s0.
@@ -6303,13 +6309,6 @@ disable all \s-1GCC\s0 optimizations that are affected by rounding mode.
 Future versions of \s-1GCC\s0 may provide finer control of this setting
 using C99's \f(CW\*(C`FENV_ACCESS\*(C'\fR pragma.  This command line option
 will be used to specify the default state for \f(CW\*(C`FENV_ACCESS\*(C'\fR.
-.IP "\fB\-frtl\-abstract\-sequences\fR" 4
-.IX Item "-frtl-abstract-sequences"
-It is a size optimization method. This option is to find identical
-sequences of code, which can be turned into pseudo-procedures  and
-then  replace  all  occurrences with  calls to  the  newly created
-subroutine. It is kind of an opposite of \fB\-finline\-functions\fR.
-This optimization runs at \s-1RTL\s0 level.
 .IP "\fB\-fsignaling\-nans\fR" 4
 .IX Item "-fsignaling-nans"
 Compile code assuming that \s-1IEEE\s0 signaling NaNs may generate user-visible
@@ -1,5 +1,5 @@
 This is annotate.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gdb-6.6/gdb/doc/annotate.texinfo.
+../../../../../android-toolchain/gdb-6.6/gdb/doc/annotate.texinfo.
 
 INFO-DIR-SECTION Software development
 START-INFO-DIR-ENTRY
@@ -1089,20 +1089,20 @@ permit their use in free software.
 
 \1f
 Tag Table:
-Node: Top\7f823
-Node: Annotations Overview\7f1922
-Node: Limitations\7f3721
-Node: Migrating to GDB/MI\7f6306
-Node: Server Prefix\7f6689
-Node: Value Annotations\7f7335
-Node: Frame Annotations\7f10505
-Node: Displays\7f14404
-Node: Prompting\7f15435
-Node: Errors\7f16938
-Node: Breakpoint Info\7f17828
-Node: Invalidation\7f19053
-Node: Annotations for Running\7f19532
-Node: Source Annotations\7f21045
-Node: GNU Free Documentation License\7f22002
+Node: Top\7f796
+Node: Annotations Overview\7f1895
+Node: Limitations\7f3694
+Node: Migrating to GDB/MI\7f6279
+Node: Server Prefix\7f6662
+Node: Value Annotations\7f7308
+Node: Frame Annotations\7f10478
+Node: Displays\7f14377
+Node: Prompting\7f15408
+Node: Errors\7f16911
+Node: Breakpoint Info\7f17801
+Node: Invalidation\7f19026
+Node: Annotations for Running\7f19505
+Node: Source Annotations\7f21018
+Node: GNU Free Documentation License\7f21975
 \1f
 End Tag Table
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/share/info/bfd.info b/linux-x86/toolchain/arm-eabi-4.4.0/share/info/bfd.info
new file mode 100644 (file)
index 0000000..12023c7
--- /dev/null
@@ -0,0 +1,10511 @@
+This is bfd.info, produced by makeinfo version 4.8 from
+../../../../../android-toolchain/gdb-6.6/bfd/doc/bfd.texinfo.
+
+START-INFO-DIR-ENTRY
+* Bfd: (bfd).                   The Binary File Descriptor library.
+END-INFO-DIR-ENTRY
+
+   This file documents the BFD library.
+
+   Copyright (C) 1991, 2000, 2001, 2003, 2006 Free Software Foundation,
+Inc.
+
+   Permission is granted to copy, distribute and/or modify this document
+     under the terms of the GNU Free Documentation License, Version 1.1
+     or any later version published by the Free Software Foundation;
+   with no Invariant Sections, with no Front-Cover Texts, and with no
+    Back-Cover Texts.  A copy of the license is included in the
+section entitled "GNU Free Documentation License".
+
+\1f
+File: bfd.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
+
+   This file documents the binary file descriptor library libbfd.
+
+* Menu:
+
+* Overview::                   Overview of BFD
+* BFD front end::              BFD front end
+* BFD back ends::              BFD back ends
+* GNU Free Documentation License::  GNU Free Documentation License
+* BFD Index::          BFD Index
+
+\1f
+File: bfd.info,  Node: Overview,  Next: BFD front end,  Prev: Top,  Up: Top
+
+1 Introduction
+**************
+
+BFD is a package which allows applications to use the same routines to
+operate on object files whatever the object file format.  A new object
+file format can be supported simply by creating a new BFD back end and
+adding it to the library.
+
+   BFD is split into two parts: the front end, and the back ends (one
+for each object file format).
+   * The front end of BFD provides the interface to the user. It manages
+     memory and various canonical data structures. The front end also
+     decides which back end to use and when to call back end routines.
+
+   * The back ends provide BFD its view of the real world. Each back
+     end provides a set of calls which the BFD front end can use to
+     maintain its canonical form. The back ends also may keep around
+     information for their own use, for greater efficiency.
+
+* Menu:
+
+* History::                    History
+* How It Works::               How It Works
+* What BFD Version 2 Can Do::  What BFD Version 2 Can Do
+
+\1f
+File: bfd.info,  Node: History,  Next: How It Works,  Prev: Overview,  Up: Overview
+
+1.1 History
+===========
+
+One spur behind BFD was the desire, on the part of the GNU 960 team at
+Intel Oregon, for interoperability of applications on their COFF and
+b.out file formats.  Cygnus was providing GNU support for the team, and
+was contracted to provide the required functionality.
+
+   The name came from a conversation David Wallace was having with
+Richard Stallman about the library: RMS said that it would be quite
+hard--David said "BFD".  Stallman was right, but the name stuck.
+
+   At the same time, Ready Systems wanted much the same thing, but for
+different object file formats: IEEE-695, Oasys, Srecords, a.out and 68k
+coff.
+
+   BFD was first implemented by members of Cygnus Support; Steve
+Chamberlain (`sac@cygnus.com'), John Gilmore (`gnu@cygnus.com'), K.
+Richard Pixley (`rich@cygnus.com') and David Henkel-Wallace
+(`gumby@cygnus.com').
+
+\1f
+File: bfd.info,  Node: How It Works,  Next: What BFD Version 2 Can Do,  Prev: History,  Up: Overview
+
+1.2 How To Use BFD
+==================
+
+To use the library, include `bfd.h' and link with `libbfd.a'.
+
+   BFD provides a common interface to the parts of an object file for a
+calling application.
+
+   When an application successfully opens a target file (object,
+archive, or whatever), a pointer to an internal structure is returned.
+This pointer points to a structure called `bfd', described in `bfd.h'.
+Our convention is to call this pointer a BFD, and instances of it
+within code `abfd'.  All operations on the target object file are
+applied as methods to the BFD.  The mapping is defined within `bfd.h'
+in a set of macros, all beginning with `bfd_' to reduce namespace
+pollution.
+
+   For example, this sequence does what you would probably expect:
+return the number of sections in an object file attached to a BFD
+`abfd'.
+
+     #include "bfd.h"
+
+     unsigned int number_of_sections (abfd)
+     bfd *abfd;
+     {
+       return bfd_count_sections (abfd);
+     }
+
+   The abstraction used within BFD is that an object file has:
+
+   * a header,
+
+   * a number of sections containing raw data (*note Sections::),
+
+   * a set of relocations (*note Relocations::), and
+
+   * some symbol information (*note Symbols::).
+   Also, BFDs opened for archives have the additional attribute of an
+index and contain subordinate BFDs. This approach is fine for a.out and
+coff, but loses efficiency when applied to formats such as S-records and
+IEEE-695.
+
+\1f
+File: bfd.info,  Node: What BFD Version 2 Can Do,  Prev: How It Works,  Up: Overview
+
+1.3 What BFD Version 2 Can Do
+=============================
+
+When an object file is opened, BFD subroutines automatically determine
+the format of the input object file.  They then build a descriptor in
+memory with pointers to routines that will be used to access elements of
+the object file's data structures.
+
+   As different information from the object files is required, BFD
+reads from different sections of the file and processes them.  For
+example, a very common operation for the linker is processing symbol
+tables.  Each BFD back end provides a routine for converting between
+the object file's representation of symbols and an internal canonical
+format. When the linker asks for the symbol table of an object file, it
+calls through a memory pointer to the routine from the relevant BFD
+back end which reads and converts the table into a canonical form.  The
+linker then operates upon the canonical form. When the link is finished
+and the linker writes the output file's symbol table, another BFD back
+end routine is called to take the newly created symbol table and
+convert it into the chosen output format.
+
+* Menu:
+
+* BFD information loss::       Information Loss
+* Canonical format::           The BFD canonical object-file format
+
+\1f
+File: bfd.info,  Node: BFD information loss,  Next: Canonical format,  Up: What BFD Version 2 Can Do
+
+1.3.1 Information Loss
+----------------------
+
+_Information can be lost during output._ The output formats supported
+by BFD do not provide identical facilities, and information which can
+be described in one form has nowhere to go in another format. One
+example of this is alignment information in `b.out'. There is nowhere
+in an `a.out' format file to store alignment information on the
+contained data, so when a file is linked from `b.out' and an `a.out'
+image is produced, alignment information will not propagate to the
+output file. (The linker will still use the alignment information
+internally, so the link is performed correctly).
+
+   Another example is COFF section names. COFF files may contain an
+unlimited number of sections, each one with a textual section name. If
+the target of the link is a format which does not have many sections
+(e.g., `a.out') or has sections without names (e.g., the Oasys format),
+the link cannot be done simply. You can circumvent this problem by
+describing the desired input-to-output section mapping with the linker
+command language.
+
+   _Information can be lost during canonicalization._ The BFD internal
+canonical form of the external formats is not exhaustive; there are
+structures in input formats for which there is no direct representation
+internally.  This means that the BFD back ends cannot maintain all
+possible data richness through the transformation between external to
+internal and back to external formats.
+
+   This limitation is only a problem when an application reads one
+format and writes another.  Each BFD back end is responsible for
+maintaining as much data as possible, and the internal BFD canonical
+form has structures which are opaque to the BFD core, and exported only
+to the back ends. When a file is read in one format, the canonical form
+is generated for BFD and the application. At the same time, the back
+end saves away any information which may otherwise be lost. If the data
+is then written back in the same format, the back end routine will be
+able to use the canonical form provided by the BFD core as well as the
+information it prepared earlier.  Since there is a great deal of
+commonality between back ends, there is no information lost when
+linking or copying big endian COFF to little endian COFF, or `a.out' to
+`b.out'.  When a mixture of formats is linked, the information is only
+lost from the files whose format differs from the destination.
+
+\1f
+File: bfd.info,  Node: Canonical format,  Prev: BFD information loss,  Up: What BFD Version 2 Can Do
+
+1.3.2 The BFD canonical object-file format
+------------------------------------------
+
+The greatest potential for loss of information occurs when there is the
+least overlap between the information provided by the source format,
+that stored by the canonical format, and that needed by the destination
+format. A brief description of the canonical form may help you
+understand which kinds of data you can count on preserving across
+conversions.  
+
+_files_
+     Information stored on a per-file basis includes target machine
+     architecture, particular implementation format type, a demand
+     pageable bit, and a write protected bit.  Information like Unix
+     magic numbers is not stored here--only the magic numbers' meaning,
+     so a `ZMAGIC' file would have both the demand pageable bit and the
+     write protected text bit set.  The byte order of the target is
+     stored on a per-file basis, so that big- and little-endian object
+     files may be used with one another.
+
+_sections_
+     Each section in the input file contains the name of the section,
+     the section's original address in the object file, size and
+     alignment information, various flags, and pointers into other BFD
+     data structures.
+
+_symbols_
+     Each symbol contains a pointer to the information for the object
+     file which originally defined it, its name, its value, and various
+     flag bits.  When a BFD back end reads in a symbol table, it
+     relocates all symbols to make them relative to the base of the
+     section where they were defined.  Doing this ensures that each
+     symbol points to its containing section.  Each symbol also has a
+     varying amount of hidden private data for the BFD back end.  Since
+     the symbol points to the original file, the private data format
+     for that symbol is accessible.  `ld' can operate on a collection
+     of symbols of wildly different formats without problems.
+
+     Normal global and simple local symbols are maintained on output,
+     so an output file (no matter its format) will retain symbols
+     pointing to functions and to global, static, and common variables.
+     Some symbol information is not worth retaining; in `a.out', type
+     information is stored in the symbol table as long symbol names.
+     This information would be useless to most COFF debuggers; the
+     linker has command line switches to allow users to throw it away.
+
+     There is one word of type information within the symbol, so if the
+     format supports symbol type information within symbols (for
+     example, COFF, IEEE, Oasys) and the type is simple enough to fit
+     within one word (nearly everything but aggregates), the
+     information will be preserved.
+
+_relocation level_
+     Each canonical BFD relocation record contains a pointer to the
+     symbol to relocate to, the offset of the data to relocate, the
+     section the data is in, and a pointer to a relocation type
+     descriptor. Relocation is performed by passing messages through
+     the relocation type descriptor and the symbol pointer. Therefore,
+     relocations can be performed on output data using a relocation
+     method that is only available in one of the input formats. For
+     instance, Oasys provides a byte relocation format.  A relocation
+     record requesting this relocation type would point indirectly to a
+     routine to perform this, so the relocation may be performed on a
+     byte being written to a 68k COFF file, even though 68k COFF has no
+     such relocation type.
+
+_line numbers_
+     Object formats can contain, for debugging purposes, some form of
+     mapping between symbols, source line numbers, and addresses in the
+     output file.  These addresses have to be relocated along with the
+     symbol information.  Each symbol with an associated list of line
+     number records points to the first record of the list.  The head
+     of a line number list consists of a pointer to the symbol, which
+     allows finding out the address of the function whose line number
+     is being described. The rest of the list is made up of pairs:
+     offsets into the section and line numbers. Any format which can
+     simply derive this information can pass it successfully between
+     formats (COFF, IEEE and Oasys).
+
+\1f
+File: bfd.info,  Node: BFD front end,  Next: BFD back ends,  Prev: Overview,  Up: Top
+
+2 BFD Front End
+***************
+
+2.1 `typedef bfd'
+=================
+
+A BFD has type `bfd'; objects of this type are the cornerstone of any
+application using BFD. Using BFD consists of making references though
+the BFD and to data in the BFD.
+
+   Here is the structure that defines the type `bfd'.  It contains the
+major data about the file and pointers to the rest of the data.
+
+
+     struct bfd
+     {
+       /* A unique identifier of the BFD  */
+       unsigned int id;
+
+       /* The filename the application opened the BFD with.  */
+       const char *filename;
+
+       /* A pointer to the target jump table.  */
+       const struct bfd_target *xvec;
+
+       /* The IOSTREAM, and corresponding IO vector that provide access
+          to the file backing the BFD.  */
+       void *iostream;
+       const struct bfd_iovec *iovec;
+
+       /* Is the file descriptor being cached?  That is, can it be closed as
+          needed, and re-opened when accessed later?  */
+       bfd_boolean cacheable;
+
+       /* Marks whether there was a default target specified when the
+          BFD was opened. This is used to select which matching algorithm
+          to use to choose the back end.  */
+       bfd_boolean target_defaulted;
+
+       /* The caching routines use these to maintain a
+          least-recently-used list of BFDs.  */
+       struct bfd *lru_prev, *lru_next;
+
+       /* When a file is closed by the caching routines, BFD retains
+          state information on the file here...  */
+       ufile_ptr where;
+
+       /* ... and here: (``once'' means at least once).  */
+       bfd_boolean opened_once;
+
+       /* Set if we have a locally maintained mtime value, rather than
+          getting it from the file each time.  */
+       bfd_boolean mtime_set;
+
+       /* File modified time, if mtime_set is TRUE.  */
+       long mtime;
+
+       /* Reserved for an unimplemented file locking extension.  */
+       int ifd;
+
+       /* The format which belongs to the BFD. (object, core, etc.)  */
+       bfd_format format;
+
+       /* The direction with which the BFD was opened.  */
+       enum bfd_direction
+         {
+           no_direction = 0,
+           read_direction = 1,
+           write_direction = 2,
+           both_direction = 3
+         }
+       direction;
+
+       /* Format_specific flags.  */
+       flagword flags;
+
+       /* Currently my_archive is tested before adding origin to
+          anything. I believe that this can become always an add of
+          origin, with origin set to 0 for non archive files.  */
+       ufile_ptr origin;
+
+       /* Remember when output has begun, to stop strange things
+          from happening.  */
+       bfd_boolean output_has_begun;
+
+       /* A hash table for section names.  */
+       struct bfd_hash_table section_htab;
+
+       /* Pointer to linked list of sections.  */
+       struct bfd_section *sections;
+
+       /* The last section on the section list.  */
+       struct bfd_section *section_last;
+
+       /* The number of sections.  */
+       unsigned int section_count;
+
+       /* Stuff only useful for object files:
+          The start address.  */
+       bfd_vma start_address;
+
+       /* Used for input and output.  */
+       unsigned int symcount;
+
+       /* Symbol table for output BFD (with symcount entries).  */
+       struct bfd_symbol  **outsymbols;
+
+       /* Used for slurped dynamic symbol tables.  */
+       unsigned int dynsymcount;
+
+       /* Pointer to structure which contains architecture information.  */
+       const struct bfd_arch_info *arch_info;
+
+       /* Flag set if symbols from this BFD should not be exported.  */
+       bfd_boolean no_export;
+
+       /* Stuff only useful for archives.  */
+       void *arelt_data;
+       struct bfd *my_archive;      /* The containing archive BFD.  */
+       struct bfd *next;            /* The next BFD in the archive.  */
+       struct bfd *archive_head;    /* The first BFD in the archive.  */
+       bfd_boolean has_armap;
+
+       /* A chain of BFD structures involved in a link.  */
+       struct bfd *link_next;
+
+       /* A field used by _bfd_generic_link_add_archive_symbols.  This will
+          be used only for archive elements.  */
+       int archive_pass;
+
+       /* Used by the back end to hold private data.  */
+       union
+         {
+           struct aout_data_struct *aout_data;
+           struct artdata *aout_ar_data;
+           struct _oasys_data *oasys_obj_data;
+           struct _oasys_ar_data *oasys_ar_data;
+           struct coff_tdata *coff_obj_data;
+           struct pe_tdata *pe_obj_data;
+           struct xcoff_tdata *xcoff_obj_data;
+           struct ecoff_tdata *ecoff_obj_data;
+           struct ieee_data_struct *ieee_data;
+           struct ieee_ar_data_struct *ieee_ar_data;
+           struct srec_data_struct *srec_data;
+           struct ihex_data_struct *ihex_data;
+           struct tekhex_data_struct *tekhex_data;
+           struct elf_obj_tdata *elf_obj_data;
+           struct nlm_obj_tdata *nlm_obj_data;
+           struct bout_data_struct *bout_data;
+           struct mmo_data_struct *mmo_data;
+           struct sun_core_struct *sun_core_data;
+           struct sco5_core_struct *sco5_core_data;
+           struct trad_core_struct *trad_core_data;
+           struct som_data_struct *som_data;
+           struct hpux_core_struct *hpux_core_data;
+           struct hppabsd_core_struct *hppabsd_core_data;
+           struct sgi_core_struct *sgi_core_data;
+           struct lynx_core_struct *lynx_core_data;
+           struct osf_core_struct *osf_core_data;
+           struct cisco_core_struct *cisco_core_data;
+           struct versados_data_struct *versados_data;
+           struct netbsd_core_struct *netbsd_core_data;
+           struct mach_o_data_struct *mach_o_data;
+           struct mach_o_fat_data_struct *mach_o_fat_data;
+           struct bfd_pef_data_struct *pef_data;
+           struct bfd_pef_xlib_data_struct *pef_xlib_data;
+           struct bfd_sym_data_struct *sym_data;
+           void *any;
+         }
+       tdata;
+
+       /* Used by the application to hold private data.  */
+       void *usrdata;
+
+       /* Where all the allocated stuff under this BFD goes.  This is a
+          struct objalloc *, but we use void * to avoid requiring the inclusion
+          of objalloc.h.  */
+       void *memory;
+     };
+
+2.2 Error reporting
+===================
+
+Most BFD functions return nonzero on success (check their individual
+documentation for precise semantics).  On an error, they call
+`bfd_set_error' to set an error condition that callers can check by
+calling `bfd_get_error'.  If that returns `bfd_error_system_call', then
+check `errno'.
+
+   The easiest way to report a BFD error to the user is to use
+`bfd_perror'.
+
+2.2.1 Type `bfd_error_type'
+---------------------------
+
+The values returned by `bfd_get_error' are defined by the enumerated
+type `bfd_error_type'.
+
+
+     typedef enum bfd_error
+     {
+       bfd_error_no_error = 0,
+       bfd_error_system_call,
+       bfd_error_invalid_target,
+       bfd_error_wrong_format,
+       bfd_error_wrong_object_format,
+       bfd_error_invalid_operation,
+       bfd_error_no_memory,
+       bfd_error_no_symbols,
+       bfd_error_no_armap,
+       bfd_error_no_more_archived_files,
+       bfd_error_malformed_archive,
+       bfd_error_file_not_recognized,
+       bfd_error_file_ambiguously_recognized,
+       bfd_error_no_contents,
+       bfd_error_nonrepresentable_section,
+       bfd_error_no_debug_section,
+       bfd_error_bad_value,
+       bfd_error_file_truncated,
+       bfd_error_file_too_big,
+       bfd_error_on_input,
+       bfd_error_invalid_error_code
+     }
+     bfd_error_type;
+   
+2.2.1.1 `bfd_get_error'
+.......................
+
+*Synopsis*
+     bfd_error_type bfd_get_error (void);
+   *Description*
+Return the current BFD error condition.
+
+2.2.1.2 `bfd_set_error'
+.......................
+
+*Synopsis*
+     void bfd_set_error (bfd_error_type error_tag, ...);
+   *Description*
+Set the BFD error condition to be ERROR_TAG.  If ERROR_TAG is
+bfd_error_on_input, then this function takes two more parameters, the
+input bfd where the error occurred, and the bfd_error_type error.
+
+2.2.1.3 `bfd_errmsg'
+....................
+
+*Synopsis*
+     const char *bfd_errmsg (bfd_error_type error_tag);
+   *Description*
+Return a string describing the error ERROR_TAG, or the system error if
+ERROR_TAG is `bfd_error_system_call'.
+
+2.2.1.4 `bfd_perror'
+....................
+
+*Synopsis*
+     void bfd_perror (const char *message);
+   *Description*
+Print to the standard error stream a string describing the last BFD
+error that occurred, or the last system error if the last BFD error was
+a system call failure.  If MESSAGE is non-NULL and non-empty, the error
+string printed is preceded by MESSAGE, a colon, and a space.  It is
+followed by a newline.
+
+2.2.2 BFD error handler
+-----------------------
+
+Some BFD functions want to print messages describing the problem.  They
+call a BFD error handler function.  This function may be overridden by
+the program.
+
+   The BFD error handler acts like printf.
+
+
+     typedef void (*bfd_error_handler_type) (const char *, ...);
+   
+2.2.2.1 `bfd_set_error_handler'
+...............................
+
+*Synopsis*
+     bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
+   *Description*
+Set the BFD error handler function.  Returns the previous function.
+
+2.2.2.2 `bfd_set_error_program_name'
+....................................
+
+*Synopsis*
+     void bfd_set_error_program_name (const char *);
+   *Description*
+Set the program name to use when printing a BFD error.  This is printed
+before the error message followed by a colon and space.  The string
+must not be changed after it is passed to this function.
+
+2.2.2.3 `bfd_get_error_handler'
+...............................
+
+*Synopsis*
+     bfd_error_handler_type bfd_get_error_handler (void);
+   *Description*
+Return the BFD error handler function.
+
+2.3 Miscellaneous
+=================
+
+2.3.1 Miscellaneous functions
+-----------------------------
+
+2.3.1.1 `bfd_get_reloc_upper_bound'
+...................................
+
+*Synopsis*
+     long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
+   *Description*
+Return the number of bytes required to store the relocation information
+associated with section SECT attached to bfd ABFD.  If an error occurs,
+return -1.
+
+2.3.1.2 `bfd_canonicalize_reloc'
+................................
+
+*Synopsis*
+     long bfd_canonicalize_reloc
+        (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
+   *Description*
+Call the back end associated with the open BFD ABFD and translate the
+external form of the relocation information attached to SEC into the
+internal canonical form.  Place the table into memory at LOC, which has
+been preallocated, usually by a call to `bfd_get_reloc_upper_bound'.
+Returns the number of relocs, or -1 on error.
+
+   The SYMS table is also needed for horrible internal magic reasons.
+
+2.3.1.3 `bfd_set_reloc'
+.......................
+
+*Synopsis*
+     void bfd_set_reloc
+        (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
+   *Description*
+Set the relocation pointer and count within section SEC to the values
+REL and COUNT.  The argument ABFD is ignored.
+
+2.3.1.4 `bfd_set_file_flags'
+............................
+
+*Synopsis*
+     bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
+   *Description*
+Set the flag word in the BFD ABFD to the value FLAGS.
+
+   Possible errors are:
+   * `bfd_error_wrong_format' - The target bfd was not of object format.
+
+   * `bfd_error_invalid_operation' - The target bfd was open for
+     reading.
+
+   * `bfd_error_invalid_operation' - The flag word contained a bit
+     which was not applicable to the type of file.  E.g., an attempt
+     was made to set the `D_PAGED' bit on a BFD format which does not
+     support demand paging.
+
+2.3.1.5 `bfd_get_arch_size'
+...........................
+
+*Synopsis*
+     int bfd_get_arch_size (bfd *abfd);
+   *Description*
+Returns the architecture address size, in bits, as determined by the
+object file's format.  For ELF, this information is included in the
+header.
+
+   *Returns*
+Returns the arch size in bits if known, `-1' otherwise.
+
+2.3.1.6 `bfd_get_sign_extend_vma'
+.................................
+
+*Synopsis*
+     int bfd_get_sign_extend_vma (bfd *abfd);
+   *Description*
+Indicates if the target architecture "naturally" sign extends an
+address.  Some architectures implicitly sign extend address values when
+they are converted to types larger than the size of an address.  For
+instance, bfd_get_start_address() will return an address sign extended
+to fill a bfd_vma when this is the case.
+
+   *Returns*
+Returns `1' if the target architecture is known to sign extend
+addresses, `0' if the target architecture is known to not sign extend
+addresses, and `-1' otherwise.
+
+2.3.1.7 `bfd_set_start_address'
+...............................
+
+*Synopsis*
+     bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
+   *Description*
+Make VMA the entry point of output BFD ABFD.
+
+   *Returns*
+Returns `TRUE' on success, `FALSE' otherwise.
+
+2.3.1.8 `bfd_get_gp_size'
+.........................
+
+*Synopsis*
+     unsigned int bfd_get_gp_size (bfd *abfd);
+   *Description*
+Return the maximum size of objects to be optimized using the GP
+register under MIPS ECOFF.  This is typically set by the `-G' argument
+to the compiler, assembler or linker.
+
+2.3.1.9 `bfd_set_gp_size'
+.........................
+
+*Synopsis*
+     void bfd_set_gp_size (bfd *abfd, unsigned int i);
+   *Description*
+Set the maximum size of objects to be optimized using the GP register
+under ECOFF or MIPS ELF.  This is typically set by the `-G' argument to
+the compiler, assembler or linker.
+
+2.3.1.10 `bfd_scan_vma'
+.......................
+
+*Synopsis*
+     bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
+   *Description*
+Convert, like `strtoul', a numerical expression STRING into a `bfd_vma'
+integer, and return that integer.  (Though without as many bells and
+whistles as `strtoul'.)  The expression is assumed to be unsigned
+(i.e., positive).  If given a BASE, it is used as the base for
+conversion.  A base of 0 causes the function to interpret the string in
+hex if a leading "0x" or "0X" is found, otherwise in octal if a leading
+zero is found, otherwise in decimal.
+
+   If the value would overflow, the maximum `bfd_vma' value is returned.
+
+2.3.1.11 `bfd_copy_private_header_data'
+.......................................
+
+*Synopsis*
+     bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
+   *Description*
+Copy private BFD header information from the BFD IBFD to the the BFD
+OBFD.  This copies information that may require sections to exist, but
+does not require symbol tables.  Return `true' on success, `false' on
+error.  Possible error returns are:
+
+   * `bfd_error_no_memory' - Not enough memory exists to create private
+     data for OBFD.
+
+     #define bfd_copy_private_header_data(ibfd, obfd) \
+          BFD_SEND (obfd, _bfd_copy_private_header_data, \
+                    (ibfd, obfd))
+
+2.3.1.12 `bfd_copy_private_bfd_data'
+....................................
+
+*Synopsis*
+     bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
+   *Description*
+Copy private BFD information from the BFD IBFD to the the BFD OBFD.
+Return `TRUE' on success, `FALSE' on error.  Possible error returns are:
+
+   * `bfd_error_no_memory' - Not enough memory exists to create private
+     data for OBFD.
+
+     #define bfd_copy_private_bfd_data(ibfd, obfd) \
+          BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
+                    (ibfd, obfd))
+
+2.3.1.13 `bfd_merge_private_bfd_data'
+.....................................
+
+*Synopsis*
+     bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
+   *Description*
+Merge private BFD information from the BFD IBFD to the the output file
+BFD OBFD when linking.  Return `TRUE' on success, `FALSE' on error.
+Possible error returns are:
+
+   * `bfd_error_no_memory' - Not enough memory exists to create private
+     data for OBFD.
+
+     #define bfd_merge_private_bfd_data(ibfd, obfd) \
+          BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
+                    (ibfd, obfd))
+
+2.3.1.14 `bfd_set_private_flags'
+................................
+
+*Synopsis*
+     bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
+   *Description*
+Set private BFD flag information in the BFD ABFD.  Return `TRUE' on
+success, `FALSE' on error.  Possible error returns are:
+
+   * `bfd_error_no_memory' - Not enough memory exists to create private
+     data for OBFD.
+
+     #define bfd_set_private_flags(abfd, flags) \
+          BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
+
+2.3.1.15 `Other functions'
+..........................
+
+*Description*
+The following functions exist but have not yet been documented.
+     #define bfd_sizeof_headers(abfd, info) \
+            BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
+
+     #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
+            BFD_SEND (abfd, _bfd_find_nearest_line, \
+                      (abfd, sec, syms, off, file, func, line))
+
+     #define bfd_find_line(abfd, syms, sym, file, line) \
+            BFD_SEND (abfd, _bfd_find_line, \
+                      (abfd, syms, sym, file, line))
+
+     #define bfd_find_inliner_info(abfd, file, func, line) \
+            BFD_SEND (abfd, _bfd_find_inliner_info, \
+                      (abfd, file, func, line))
+
+     #define bfd_debug_info_start(abfd) \
+            BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
+
+     #define bfd_debug_info_end(abfd) \
+            BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
+
+     #define bfd_debug_info_accumulate(abfd, section) \
+            BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
+
+     #define bfd_stat_arch_elt(abfd, stat) \
+            BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
+
+     #define bfd_update_armap_timestamp(abfd) \
+            BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
+
+     #define bfd_set_arch_mach(abfd, arch, mach)\
+            BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
+
+     #define bfd_relax_section(abfd, section, link_info, again) \
+            BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
+
+     #define bfd_gc_sections(abfd, link_info) \
+            BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
+
+     #define bfd_merge_sections(abfd, link_info) \
+            BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
+
+     #define bfd_is_group_section(abfd, sec) \
+            BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
+
+     #define bfd_discard_group(abfd, sec) \
+            BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
+
+     #define bfd_link_hash_table_create(abfd) \
+            BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
+
+     #define bfd_link_hash_table_free(abfd, hash) \
+            BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
+
+     #define bfd_link_add_symbols(abfd, info) \
+            BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
+
+     #define bfd_link_just_syms(abfd, sec, info) \
+            BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
+
+     #define bfd_final_link(abfd, info) \
+            BFD_SEND (abfd, _bfd_final_link, (abfd, info))
+
+     #define bfd_free_cached_info(abfd) \
+            BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
+
+     #define bfd_get_dynamic_symtab_upper_bound(abfd) \
+            BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
+
+     #define bfd_print_private_bfd_data(abfd, file)\
+            BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
+
+     #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
+            BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
+
+     #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
+            BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
+                                                        dyncount, dynsyms, ret))
+
+     #define bfd_get_dynamic_reloc_upper_bound(abfd) \
+            BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
+
+     #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
+            BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
+
+     extern bfd_byte *bfd_get_relocated_section_contents
+       (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
+        bfd_boolean, asymbol **);
+
+2.3.1.16 `bfd_alt_mach_code'
+............................
+
+*Synopsis*
+     bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
+   *Description*
+When more than one machine code number is available for the same
+machine type, this function can be used to switch between the preferred
+one (alternative == 0) and any others.  Currently, only ELF supports
+this feature, with up to two alternate machine codes.
+
+     struct bfd_preserve
+     {
+       void *marker;
+       void *tdata;
+       flagword flags;
+       const struct bfd_arch_info *arch_info;
+       struct bfd_section *sections;
+       struct bfd_section *section_last;
+       unsigned int section_count;
+       struct bfd_hash_table section_htab;
+     };
+   
+2.3.1.17 `bfd_preserve_save'
+............................
+
+*Synopsis*
+     bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
+   *Description*
+When testing an object for compatibility with a particular target
+back-end, the back-end object_p function needs to set up certain fields
+in the bfd on successfully recognizing the object.  This typically
+happens in a piecemeal fashion, with failures possible at many points.
+On failure, the bfd is supposed to be restored to its initial state,
+which is virtually impossible.  However, restoring a subset of the bfd
+state works in practice.  This function stores the subset and
+reinitializes the bfd.
+
+2.3.1.18 `bfd_preserve_restore'
+...............................
+
+*Synopsis*
+     void bfd_preserve_restore (bfd *, struct bfd_preserve *);
+   *Description*
+This function restores bfd state saved by bfd_preserve_save.  If MARKER
+is non-NULL in struct bfd_preserve then that block and all subsequently
+bfd_alloc'd memory is freed.
+
+2.3.1.19 `bfd_preserve_finish'
+..............................
+
+*Synopsis*
+     void bfd_preserve_finish (bfd *, struct bfd_preserve *);
+   *Description*
+This function should be called when the bfd state saved by
+bfd_preserve_save is no longer needed.  ie. when the back-end object_p
+function returns with success.
+
+2.3.1.20 `bfd_emul_get_maxpagesize'
+...................................
+
+*Synopsis*
+     bfd_vma bfd_emul_get_maxpagesize (const char *);
+   *Description*
+Returns the maximum page size, in bytes, as determined by emulation.
+
+   *Returns*
+Returns the maximum page size in bytes for ELF, abort otherwise.
+
+2.3.1.21 `bfd_emul_set_maxpagesize'
+...................................
+
+*Synopsis*
+     void bfd_emul_set_maxpagesize (const char *, bfd_vma);
+   *Description*
+For ELF, set the maximum page size for the emulation.  It is a no-op
+for other formats.
+
+2.3.1.22 `bfd_emul_get_commonpagesize'
+......................................
+
+*Synopsis*
+     bfd_vma bfd_emul_get_commonpagesize (const char *);
+   *Description*
+Returns the common page size, in bytes, as determined by emulation.
+
+   *Returns*
+Returns the common page size in bytes for ELF, abort otherwise.
+
+2.3.1.23 `bfd_emul_set_commonpagesize'
+......................................
+
+*Synopsis*
+     void bfd_emul_set_commonpagesize (const char *, bfd_vma);
+   *Description*
+For ELF, set the common page size for the emulation.  It is a no-op for
+other formats.
+
+2.3.1.24 `struct bfd_iovec'
+...........................
+
+*Description*
+The `struct bfd_iovec' contains the internal file I/O class.  Each
+`BFD' has an instance of this class and all file I/O is routed through
+it (it is assumed that the instance implements all methods listed
+below).
+     struct bfd_iovec
+     {
+       /* To avoid problems with macros, a "b" rather than "f"
+          prefix is prepended to each method name.  */
+       /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
+          bytes starting at PTR.  Return the number of bytes actually
+          transfered (a read past end-of-file returns less than NBYTES),
+          or -1 (setting `bfd_error') if an error occurs.  */
+       file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
+       file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
+                           file_ptr nbytes);
+       /* Return the current IOSTREAM file offset, or -1 (setting `bfd_error'
+          if an error occurs.  */
+       file_ptr (*btell) (struct bfd *abfd);
+       /* For the following, on successful completion a value of 0 is returned.
+          Otherwise, a value of -1 is returned (and  `bfd_error' is set).  */
+       int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
+       int (*bclose) (struct bfd *abfd);
+       int (*bflush) (struct bfd *abfd);
+       int (*bstat) (struct bfd *abfd, struct stat *sb);
+     };
+
+2.3.1.25 `bfd_get_mtime'
+........................
+
+*Synopsis*
+     long bfd_get_mtime (bfd *abfd);
+   *Description*
+Return the file modification time (as read from the file system, or
+from the archive header for archive members).
+
+2.3.1.26 `bfd_get_size'
+.......................
+
+*Synopsis*
+     long bfd_get_size (bfd *abfd);
+   *Description*
+Return the file size (as read from file system) for the file associated
+with BFD ABFD.
+
+   The initial motivation for, and use of, this routine is not so we
+can get the exact size of the object the BFD applies to, since that
+might not be generally possible (archive members for example).  It
+would be ideal if someone could eventually modify it so that such
+results were guaranteed.
+
+   Instead, we want to ask questions like "is this NNN byte sized
+object I'm about to try read from file offset YYY reasonable?"  As as
+example of where we might do this, some object formats use string
+tables for which the first `sizeof (long)' bytes of the table contain
+the size of the table itself, including the size bytes.  If an
+application tries to read what it thinks is one of these string tables,
+without some way to validate the size, and for some reason the size is
+wrong (byte swapping error, wrong location for the string table, etc.),
+the only clue is likely to be a read error when it tries to read the
+table, or a "virtual memory exhausted" error when it tries to allocate
+15 bazillon bytes of space for the 15 bazillon byte table it is about
+to read.  This function at least allows us to answer the question, "is
+the size reasonable?".
+
+* Menu:
+
+* Memory Usage::
+* Initialization::
+* Sections::
+* Symbols::
+* Archives::
+* Formats::
+* Relocations::
+* Core Files::
+* Targets::
+* Architectures::
+* Opening and Closing::
+* Internal::
+* File Caching::
+* Linker Functions::
+* Hash Tables::
+
+\1f
+File: bfd.info,  Node: Memory Usage,  Next: Initialization,  Prev: BFD front end,  Up: BFD front end
+
+2.4 Memory Usage
+================
+
+BFD keeps all of its internal structures in obstacks. There is one
+obstack per open BFD file, into which the current state is stored. When
+a BFD is closed, the obstack is deleted, and so everything which has
+been allocated by BFD for the closing file is thrown away.
+
+   BFD does not free anything created by an application, but pointers
+into `bfd' structures become invalid on a `bfd_close'; for example,
+after a `bfd_close' the vector passed to `bfd_canonicalize_symtab' is
+still around, since it has been allocated by the application, but the
+data that it pointed to are lost.
+
+   The general rule is to not close a BFD until all operations dependent
+upon data from the BFD have been completed, or all the data from within
+the file has been copied. To help with the management of memory, there
+is a function (`bfd_alloc_size') which returns the number of bytes in
+obstacks associated with the supplied BFD. This could be used to select
+the greediest open BFD, close it to reclaim the memory, perform some
+operation and reopen the BFD again, to get a fresh copy of the data
+structures.
+
+\1f
+File: bfd.info,  Node: Initialization,  Next: Sections,  Prev: Memory Usage,  Up: BFD front end
+
+2.5 Initialization
+==================
+
+2.5.1 Initialization functions
+------------------------------
+
+These are the functions that handle initializing a BFD.
+
+2.5.1.1 `bfd_init'
+..................
+
+*Synopsis*
+     void bfd_init (void);
+   *Description*
+This routine must be called before any other BFD function to initialize
+magical internal data structures.
+
+\1f
+File: bfd.info,  Node: Sections,  Next: Symbols,  Prev: Initialization,  Up: BFD front end
+
+2.6 Sections
+============
+
+The raw data contained within a BFD is maintained through the section
+abstraction.  A single BFD may have any number of sections.  It keeps
+hold of them by pointing to the first; each one points to the next in
+the list.
+
+   Sections are supported in BFD in `section.c'.
+
+* Menu:
+
+* Section Input::
+* Section Output::
+* typedef asection::
+* section prototypes::
+
+\1f
+File: bfd.info,  Node: Section Input,  Next: Section Output,  Prev: Sections,  Up: Sections
+
+2.6.1 Section input
+-------------------
+
+When a BFD is opened for reading, the section structures are created
+and attached to the BFD.
+
+   Each section has a name which describes the section in the outside
+world--for example, `a.out' would contain at least three sections,
+called `.text', `.data' and `.bss'.
+
+   Names need not be unique; for example a COFF file may have several
+sections named `.data'.
+
+   Sometimes a BFD will contain more than the "natural" number of
+sections. A back end may attach other sections containing constructor
+data, or an application may add a section (using `bfd_make_section') to
+the sections attached to an already open BFD. For example, the linker
+creates an extra section `COMMON' for each input file's BFD to hold
+information about common storage.
+
+   The raw data is not necessarily read in when the section descriptor
+is created. Some targets may leave the data in place until a
+`bfd_get_section_contents' call is made. Other back ends may read in
+all the data at once.  For example, an S-record file has to be read
+once to determine the size of the data. An IEEE-695 file doesn't
+contain raw data in sections, but data and relocation expressions
+intermixed, so the data area has to be parsed to get out the data and
+relocations.
+
+\1f
+File: bfd.info,  Node: Section Output,  Next: typedef asection,  Prev: Section Input,  Up: Sections
+
+2.6.2 Section output
+--------------------
+
+To write a new object style BFD, the various sections to be written
+have to be created. They are attached to the BFD in the same way as
+input sections; data is written to the sections using
+`bfd_set_section_contents'.
+
+   Any program that creates or combines sections (e.g., the assembler
+and linker) must use the `asection' fields `output_section' and
+`output_offset' to indicate the file sections to which each section
+must be written.  (If the section is being created from scratch,
+`output_section' should probably point to the section itself and
+`output_offset' should probably be zero.)
+
+   The data to be written comes from input sections attached (via
+`output_section' pointers) to the output sections.  The output section
+structure can be considered a filter for the input section: the output
+section determines the vma of the output data and the name, but the
+input section determines the offset into the output section of the data
+to be written.
+
+   E.g., to create a section "O", starting at 0x100, 0x123 long,
+containing two subsections, "A" at offset 0x0 (i.e., at vma 0x100) and
+"B" at offset 0x20 (i.e., at vma 0x120) the `asection' structures would
+look like:
+
+        section name          "A"
+          output_offset   0x00
+          size            0x20
+          output_section ----------->  section name    "O"
+                                  |    vma             0x100
+        section name          "B" |    size            0x123
+          output_offset   0x20    |
+          size            0x103   |
+          output_section  --------|
+
+2.6.3 Link orders
+-----------------
+
+The data within a section is stored in a "link_order".  These are much
+like the fixups in `gas'.  The link_order abstraction allows a section
+to grow and shrink within itself.
+
+   A link_order knows how big it is, and which is the next link_order
+and where the raw data for it is; it also points to a list of
+relocations which apply to it.
+
+   The link_order is used by the linker to perform relaxing on final
+code.  The compiler creates code which is as big as necessary to make
+it work without relaxing, and the user can select whether to relax.
+Sometimes relaxing takes a lot of time.  The linker runs around the
+relocations to see if any are attached to data which can be shrunk, if
+so it does it on a link_order by link_order basis.
+
+\1f
+File: bfd.info,  Node: typedef asection,  Next: section prototypes,  Prev: Section Output,  Up: Sections
+
+2.6.4 typedef asection
+----------------------
+
+Here is the section structure:
+
+
+     typedef struct bfd_section
+     {
+       /* The name of the section; the name isn't a copy, the pointer is
+          the same as that passed to bfd_make_section.  */
+       const char *name;
+
+       /* A unique sequence number.  */
+       int id;
+
+       /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
+       int index;
+
+       /* The next section in the list belonging to the BFD, or NULL.  */
+       struct bfd_section *next;
+
+       /* The previous section in the list belonging to the BFD, or NULL.  */
+       struct bfd_section *prev;
+
+       /* The field flags contains attributes of the section. Some
+          flags are read in from the object file, and some are
+          synthesized from other information.  */
+       flagword flags;
+
+     #define SEC_NO_FLAGS   0x000
+
+       /* Tells the OS to allocate space for this section when loading.
+          This is clear for a section containing debug information only.  */
+     #define SEC_ALLOC      0x001
+
+       /* Tells the OS to load the section from the file when loading.
+          This is clear for a .bss section.  */
+     #define SEC_LOAD       0x002
+
+       /* The section contains data still to be relocated, so there is
+          some relocation information too.  */
+     #define SEC_RELOC      0x004
+
+       /* A signal to the OS that the section contains read only data.  */
+     #define SEC_READONLY   0x008
+
+       /* The section contains code only.  */
+     #define SEC_CODE       0x010
+
+       /* The section contains data only.  */
+     #define SEC_DATA       0x020
+
+       /* The section will reside in ROM.  */
+     #define SEC_ROM        0x040
+
+       /* The section contains constructor information. This section
+          type is used by the linker to create lists of constructors and
+          destructors used by `g++'. When a back end sees a symbol
+          which should be used in a constructor list, it creates a new
+          section for the type of name (e.g., `__CTOR_LIST__'), attaches
+          the symbol to it, and builds a relocation. To build the lists
+          of constructors, all the linker has to do is catenate all the
+          sections called `__CTOR_LIST__' and relocate the data
+          contained within - exactly the operations it would peform on
+          standard data.  */
+     #define SEC_CONSTRUCTOR 0x080
+
+       /* The section has contents - a data section could be
+          `SEC_ALLOC' | `SEC_HAS_CONTENTS'; a debug section could be
+          `SEC_HAS_CONTENTS'  */
+     #define SEC_HAS_CONTENTS 0x100
+
+       /* An instruction to the linker to not output the section
+          even if it has information which would normally be written.  */
+     #define SEC_NEVER_LOAD 0x200
+
+       /* The section contains thread local data.  */
+     #define SEC_THREAD_LOCAL 0x400
+
+       /* The section has GOT references.  This flag is only for the
+          linker, and is currently only used by the elf32-hppa back end.
+          It will be set if global offset table references were detected
+          in this section, which indicate to the linker that the section
+          contains PIC code, and must be handled specially when doing a
+          static link.  */
+     #define SEC_HAS_GOT_REF 0x800
+
+       /* The section contains common symbols (symbols may be defined
+          multiple times, the value of a symbol is the amount of
+          space it requires, and the largest symbol value is the one
+          used).  Most targets have exactly one of these (which we
+          translate to bfd_com_section_ptr), but ECOFF has two.  */
+     #define SEC_IS_COMMON 0x1000
+
+       /* The section contains only debugging information.  For
+          example, this is set for ELF .debug and .stab sections.
+          strip tests this flag to see if a section can be
+          discarded.  */
+     #define SEC_DEBUGGING 0x2000
+
+       /* The contents of this section are held in memory pointed to
+          by the contents field.  This is checked by bfd_get_section_contents,
+          and the data is retrieved from memory if appropriate.  */
+     #define SEC_IN_MEMORY 0x4000
+
+       /* The contents of this section are to be excluded by the
+          linker for executable and shared objects unless those
+          objects are to be further relocated.  */
+     #define SEC_EXCLUDE 0x8000
+
+       /* The contents of this section are to be sorted based on the sum of
+          the symbol and addend values specified by the associated relocation
+          entries.  Entries without associated relocation entries will be
+          appended to the end of the section in an unspecified order.  */
+     #define SEC_SORT_ENTRIES 0x10000
+
+       /* When linking, duplicate sections of the same name should be
+          discarded, rather than being combined into a single section as
+          is usually done.  This is similar to how common symbols are
+          handled.  See SEC_LINK_DUPLICATES below.  */
+     #define SEC_LINK_ONCE 0x20000
+
+       /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
+          should handle duplicate sections.  */
+     #define SEC_LINK_DUPLICATES 0x40000
+
+       /* This value for SEC_LINK_DUPLICATES means that duplicate
+          sections with the same name should simply be discarded.  */
+     #define SEC_LINK_DUPLICATES_DISCARD 0x0
+
+       /* This value for SEC_LINK_DUPLICATES means that the linker
+          should warn if there are any duplicate sections, although
+          it should still only link one copy.  */
+     #define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
+
+       /* This value for SEC_LINK_DUPLICATES means that the linker
+          should warn if any duplicate sections are a different size.  */
+     #define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
+
+       /* This value for SEC_LINK_DUPLICATES means that the linker
+          should warn if any duplicate sections contain different
+          contents.  */
+     #define SEC_LINK_DUPLICATES_SAME_CONTENTS \
+       (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
+
+       /* This section was created by the linker as part of dynamic
+          relocation or other arcane processing.  It is skipped when
+          going through the first-pass output, trusting that someone
+          else up the line will take care of it later.  */
+     #define SEC_LINKER_CREATED 0x200000
+
+       /* This section should not be subject to garbage collection.
+          Also set to inform the linker that this section should not be
+          listed in the link map as discarded.  */
+     #define SEC_KEEP 0x400000
+
+       /* This section contains "short" data, and should be placed
+          "near" the GP.  */
+     #define SEC_SMALL_DATA 0x800000
+
+       /* Attempt to merge identical entities in the section.
+          Entity size is given in the entsize field.  */
+     #define SEC_MERGE 0x1000000
+
+       /* If given with SEC_MERGE, entities to merge are zero terminated
+          strings where entsize specifies character size instead of fixed
+          size entries.  */
+     #define SEC_STRINGS 0x2000000
+
+       /* This section contains data about section groups.  */
+     #define SEC_GROUP 0x4000000
+
+       /* The section is a COFF shared library section.  This flag is
+          only for the linker.  If this type of section appears in
+          the input file, the linker must copy it to the output file
+          without changing the vma or size.  FIXME: Although this
+          was originally intended to be general, it really is COFF
+          specific (and the flag was renamed to indicate this).  It
+          might be cleaner to have some more general mechanism to
+          allow the back end to control what the linker does with
+          sections.  */
+     #define SEC_COFF_SHARED_LIBRARY 0x10000000
+
+       /* This section contains data which may be shared with other
+          executables or shared objects. This is for COFF only.  */
+     #define SEC_COFF_SHARED 0x20000000
+
+       /* When a section with this flag is being linked, then if the size of
+          the input section is less than a page, it should not cross a page
+          boundary.  If the size of the input section is one page or more,
+          it should be aligned on a page boundary.  This is for TI
+          TMS320C54X only.  */
+     #define SEC_TIC54X_BLOCK 0x40000000
+
+       /* Conditionally link this section; do not link if there are no
+          references found to any symbol in the section.  This is for TI
+          TMS320C54X only.  */
+     #define SEC_TIC54X_CLINK 0x80000000
+
+       /*  End of section flags.  */
+
+       /* Some internal packed boolean fields.  */
+
+       /* See the vma field.  */
+       unsigned int user_set_vma : 1;
+
+       /* A mark flag used by some of the linker backends.  */
+       unsigned int linker_mark : 1;
+
+       /* Another mark flag used by some of the linker backends.  Set for
+          output sections that have an input section.  */
+       unsigned int linker_has_input : 1;
+
+       /* Mark flags used by some linker backends for garbage collection.  */
+       unsigned int gc_mark : 1;
+       unsigned int gc_mark_from_eh : 1;
+
+       /* The following flags are used by the ELF linker. */
+
+       /* Mark sections which have been allocated to segments.  */
+       unsigned int segment_mark : 1;
+
+       /* Type of sec_info information.  */
+       unsigned int sec_info_type:3;
+     #define ELF_INFO_TYPE_NONE      0
+     #define ELF_INFO_TYPE_STABS     1
+     #define ELF_INFO_TYPE_MERGE     2
+     #define ELF_INFO_TYPE_EH_FRAME  3
+     #define ELF_INFO_TYPE_JUST_SYMS 4
+
+       /* Nonzero if this section uses RELA relocations, rather than REL.  */
+       unsigned int use_rela_p:1;
+
+       /* Bits used by various backends.  The generic code doesn't touch
+          these fields.  */
+
+       /* Nonzero if this section has TLS related relocations.  */
+       unsigned int has_tls_reloc:1;
+
+       /* Nonzero if this section has a gp reloc.  */
+       unsigned int has_gp_reloc:1;
+
+       /* Nonzero if this section needs the relax finalize pass.  */
+       unsigned int need_finalize_relax:1;
+
+       /* Whether relocations have been processed.  */
+       unsigned int reloc_done : 1;
+
+       /* End of internal packed boolean fields.  */
+
+       /*  The virtual memory address of the section - where it will be
+           at run time.  The symbols are relocated against this.  The
+           user_set_vma flag is maintained by bfd; if it's not set, the
+           backend can assign addresses (for example, in `a.out', where
+           the default address for `.data' is dependent on the specific
+           target and various flags).  */
+       bfd_vma vma;
+
+       /*  The load address of the section - where it would be in a
+           rom image; really only used for writing section header
+           information.  */
+       bfd_vma lma;
+
+       /* The size of the section in octets, as it will be output.
+          Contains a value even if the section has no contents (e.g., the
+          size of `.bss').  */
+       bfd_size_type size;
+
+       /* For input sections, the original size on disk of the section, in
+          octets.  This field is used by the linker relaxation code.  It is
+          currently only set for sections where the linker relaxation scheme
+          doesn't cache altered section and reloc contents (stabs, eh_frame,
+          SEC_MERGE, some coff relaxing targets), and thus the original size
+          needs to be kept to read the section multiple times.
+          For output sections, rawsize holds the section size calculated on
+          a previous linker relaxation pass.  */
+       bfd_size_type rawsize;
+
+       /* If this section is going to be output, then this value is the
+          offset in *bytes* into the output section of the first byte in the
+          input section (byte ==> smallest addressable unit on the
+          target).  In most cases, if this was going to start at the
+          100th octet (8-bit quantity) in the output section, this value
+          would be 100.  However, if the target byte size is 16 bits
+          (bfd_octets_per_byte is "2"), this value would be 50.  */
+       bfd_vma output_offset;
+
+       /* The output section through which to map on output.  */
+       struct bfd_section *output_section;
+
+       /* The alignment requirement of the section, as an exponent of 2 -
+          e.g., 3 aligns to 2^3 (or 8).  */
+       unsigned int alignment_power;
+
+       /* If an input section, a pointer to a vector of relocation
+          records for the data in this section.  */
+       struct reloc_cache_entry *relocation;
+
+       /* If an output section, a pointer to a vector of pointers to
+          relocation records for the data in this section.  */
+       struct reloc_cache_entry **orelocation;
+
+       /* The number of relocation records in one of the above.  */
+       unsigned reloc_count;
+
+       /* Information below is back end specific - and not always used
+          or updated.  */
+
+       /* File position of section data.  */
+       file_ptr filepos;
+
+       /* File position of relocation info.  */
+       file_ptr rel_filepos;
+
+       /* File position of line data.  */
+       file_ptr line_filepos;
+
+       /* Pointer to data for applications.  */
+       void *userdata;
+
+       /* If the SEC_IN_MEMORY flag is set, this points to the actual
+          contents.  */
+       unsigned char *contents;
+
+       /* Attached line number information.  */
+       alent *lineno;
+
+       /* Number of line number records.  */
+       unsigned int lineno_count;
+
+       /* Entity size for merging purposes.  */
+       unsigned int entsize;
+
+       /* Points to the kept section if this section is a link-once section,
+          and is discarded.  */
+       struct bfd_section *kept_section;
+
+       /* When a section is being output, this value changes as more
+          linenumbers are written out.  */
+       file_ptr moving_line_filepos;
+
+       /* What the section number is in the target world.  */
+       int target_index;
+
+       void *used_by_bfd;
+
+       /* If this is a constructor section then here is a list of the
+          relocations created to relocate items within it.  */
+       struct relent_chain *constructor_chain;
+
+       /* The BFD which owns the section.  */
+       bfd *owner;
+
+       /* A symbol which points at this section only.  */
+       struct bfd_symbol *symbol;
+       struct bfd_symbol **symbol_ptr_ptr;
+
+       /* Early in the link process, map_head and map_tail are used to build
+          a list of input sections attached to an output section.  Later,
+          output sections use these fields for a list of bfd_link_order
+          structs.  */
+       union {
+         struct bfd_link_order *link_order;
+         struct bfd_section *s;
+       } map_head, map_tail;
+     } asection;
+
+     /* These sections are global, and are managed by BFD.  The application
+        and target back end are not permitted to change the values in
+        these sections.  New code should use the section_ptr macros rather
+        than referring directly to the const sections.  The const sections
+        may eventually vanish.  */
+     #define BFD_ABS_SECTION_NAME "*ABS*"
+     #define BFD_UND_SECTION_NAME "*UND*"
+     #define BFD_COM_SECTION_NAME "*COM*"
+     #define BFD_IND_SECTION_NAME "*IND*"
+
+     /* The absolute section.  */
+     extern asection bfd_abs_section;
+     #define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
+     #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
+     /* Pointer to the undefined section.  */
+     extern asection bfd_und_section;
+     #define bfd_und_section_ptr ((asection *) &bfd_und_section)
+     #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
+     /* Pointer to the common section.  */
+     extern asection bfd_com_section;
+     #define bfd_com_section_ptr ((asection *) &bfd_com_section)
+     /* Pointer to the indirect section.  */
+     extern asection bfd_ind_section;
+     #define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
+     #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
+
+     #define bfd_is_const_section(SEC)              \
+      (   ((SEC) == bfd_abs_section_ptr)            \
+       || ((SEC) == bfd_und_section_ptr)            \
+       || ((SEC) == bfd_com_section_ptr)            \
+       || ((SEC) == bfd_ind_section_ptr))
+
+     /* Macros to handle insertion and deletion of a bfd's sections.  These
+        only handle the list pointers, ie. do not adjust section_count,
+        target_index etc.  */
+     #define bfd_section_list_remove(ABFD, S) \
+       do                                                   \
+         {                                                  \
+           asection *_s = S;                                \
+           asection *_next = _s->next;                      \
+           asection *_prev = _s->prev;                      \
+           if (_prev)                                       \
+             _prev->next = _next;                           \
+           else                                             \
+             (ABFD)->sections = _next;                      \
+           if (_next)                                       \
+             _next->prev = _prev;                           \
+           else                                             \
+             (ABFD)->section_last = _prev;                  \
+         }                                                  \
+       while (0)
+     #define bfd_section_list_append(ABFD, S) \
+       do                                                   \
+         {                                                  \
+           asection *_s = S;                                \
+           bfd *_abfd = ABFD;                               \
+           _s->next = NULL;                                 \
+           if (_abfd->section_last)                         \
+             {                                              \
+               _s->prev = _abfd->section_last;              \
+               _abfd->section_last->next = _s;              \
+             }                                              \
+           else                                             \
+             {                                              \
+               _s->prev = NULL;                             \
+               _abfd->sections = _s;                        \
+             }                                              \
+           _abfd->section_last = _s;                        \
+         }                                                  \
+       while (0)
+     #define bfd_section_list_prepend(ABFD, S) \
+       do                                                   \
+         {                                                  \
+           asection *_s = S;                                \
+           bfd *_abfd = ABFD;                               \
+           _s->prev = NULL;                                 \
+           if (_abfd->sections)                             \
+             {                                              \
+               _s->next = _abfd->sections;                  \
+               _abfd->sections->prev = _s;                  \
+             }                                              \
+           else                                             \
+             {                                              \
+               _s->next = NULL;                             \
+               _abfd->section_last = _s;                    \
+             }                                              \
+           _abfd->sections = _s;                            \
+         }                                                  \
+       while (0)
+     #define bfd_section_list_insert_after(ABFD, A, S) \
+       do                                                   \
+         {                                                  \
+           asection *_a = A;                                \
+           asection *_s = S;                                \
+           asection *_next = _a->next;                      \
+           _s->next = _next;                                \
+           _s->prev = _a;                                   \
+           _a->next = _s;                                   \
+           if (_next)                                       \
+             _next->prev = _s;                              \
+           else                                             \
+             (ABFD)->section_last = _s;                     \
+         }                                                  \
+       while (0)
+     #define bfd_section_list_insert_before(ABFD, B, S) \
+       do                                                   \
+         {                                                  \
+           asection *_b = B;                                \
+           asection *_s = S;                                \
+           asection *_prev = _b->prev;                      \
+           _s->prev = _prev;                                \
+           _s->next = _b;                                   \
+           _b->prev = _s;                                   \
+           if (_prev)                                       \
+             _prev->next = _s;                              \
+           else                                             \
+             (ABFD)->sections = _s;                         \
+         }                                                  \
+       while (0)
+     #define bfd_section_removed_from_list(ABFD, S) \
+       ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
+
+     #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
+       /* name, id,  index, next, prev, flags, user_set_vma,            */  \
+       { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
+                                                                            \
+       /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh,      */  \
+          0,           0,                1,       0,                        \
+                                                                            \
+       /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc,       */  \
+          0,            0,             0,          0,                       \
+                                                                            \
+       /* has_gp_reloc, need_finalize_relax, reloc_done,                */  \
+          0,            0,                   0,                             \
+                                                                            \
+       /* vma, lma, size, rawsize                                       */  \
+          0,   0,   0,    0,                                                \
+                                                                            \
+       /* output_offset, output_section,              alignment_power,  */  \
+          0,             (struct bfd_section *) &SEC, 0,                    \
+                                                                            \
+       /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
+          NULL,       NULL,        0,           0,       0,                 \
+                                                                            \
+       /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
+          0,            NULL,     NULL,     NULL,   0,                      \
+                                                                            \
+       /* entsize, kept_section, moving_line_filepos,                    */ \
+          0,       NULL,          0,                                        \
+                                                                            \
+       /* target_index, used_by_bfd, constructor_chain, owner,          */  \
+          0,            NULL,        NULL,              NULL,               \
+                                                                            \
+       /* symbol,                    symbol_ptr_ptr,                    */  \
+          (struct bfd_symbol *) SYM, &SEC.symbol,                           \
+                                                                            \
+       /* map_head, map_tail                                            */  \
+          { NULL }, { NULL }                                                \
+         }
+
+\1f
+File: bfd.info,  Node: section prototypes,  Prev: typedef asection,  Up: Sections
+
+2.6.5 Section prototypes
+------------------------
+
+These are the functions exported by the section handling part of BFD.
+
+2.6.5.1 `bfd_section_list_clear'
+................................
+
+*Synopsis*
+     void bfd_section_list_clear (bfd *);
+   *Description*
+Clears the section list, and also resets the section count and hash
+table entries.
+
+2.6.5.2 `bfd_get_section_by_name'
+.................................
+
+*Synopsis*
+     asection *bfd_get_section_by_name (bfd *abfd, const char *name);
+   *Description*
+Run through ABFD and return the one of the `asection's whose name
+matches NAME, otherwise `NULL'.  *Note Sections::, for more information.
+
+   This should only be used in special cases; the normal way to process
+all sections of a given name is to use `bfd_map_over_sections' and
+`strcmp' on the name (or better yet, base it on the section flags or
+something else) for each section.
+
+2.6.5.3 `bfd_get_section_by_name_if'
+....................................
+
+*Synopsis*
+     asection *bfd_get_section_by_name_if
+        (bfd *abfd,
+         const char *name,
+         bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
+         void *obj);
+   *Description*
+Call the provided function FUNC for each section attached to the BFD
+ABFD whose name matches NAME, passing OBJ as an argument. The function
+will be called as if by
+
+            func (abfd, the_section, obj);
+
+   It returns the first section for which FUNC returns true, otherwise
+`NULL'.
+
+2.6.5.4 `bfd_get_unique_section_name'
+.....................................
+
+*Synopsis*
+     char *bfd_get_unique_section_name
+        (bfd *abfd, const char *templat, int *count);
+   *Description*
+Invent a section name that is unique in ABFD by tacking a dot and a
+digit suffix onto the original TEMPLAT.  If COUNT is non-NULL, then it
+specifies the first number tried as a suffix to generate a unique name.
+The value pointed to by COUNT will be incremented in this case.
+
+2.6.5.5 `bfd_make_section_old_way'
+..................................
+
+*Synopsis*
+     asection *bfd_make_section_old_way (bfd *abfd, const char *name);
+   *Description*
+Create a new empty section called NAME and attach it to the end of the
+chain of sections for the BFD ABFD. An attempt to create a section with
+a name which is already in use returns its pointer without changing the
+section chain.
+
+   It has the funny name since this is the way it used to be before it
+was rewritten....
+
+   Possible errors are:
+   * `bfd_error_invalid_operation' - If output has already started for
+     this BFD.
+
+   * `bfd_error_no_memory' - If memory allocation fails.
+
+2.6.5.6 `bfd_make_section_anyway_with_flags'
+............................................
+
+*Synopsis*
+     asection *bfd_make_section_anyway_with_flags
+        (bfd *abfd, const char *name, flagword flags);
+   *Description*
+Create a new empty section called NAME and attach it to the end of the
+chain of sections for ABFD.  Create a new section even if there is
+already a section with that name.  Also set the attributes of the new
+section to the value FLAGS.
+
+   Return `NULL' and set `bfd_error' on error; possible errors are:
+   * `bfd_error_invalid_operation' - If output has already started for
+     ABFD.
+
+   * `bfd_error_no_memory' - If memory allocation fails.
+
+2.6.5.7 `bfd_make_section_anyway'
+.................................
+
+*Synopsis*
+     asection *bfd_make_section_anyway (bfd *abfd, const char *name);
+   *Description*
+Create a new empty section called NAME and attach it to the end of the
+chain of sections for ABFD.  Create a new section even if there is
+already a section with that name.
+
+   Return `NULL' and set `bfd_error' on error; possible errors are:
+   * `bfd_error_invalid_operation' - If output has already started for
+     ABFD.
+
+   * `bfd_error_no_memory' - If memory allocation fails.
+
+2.6.5.8 `bfd_make_section_with_flags'
+.....................................
+
+*Synopsis*
+     asection *bfd_make_section_with_flags
+        (bfd *, const char *name, flagword flags);
+   *Description*
+Like `bfd_make_section_anyway', but return `NULL' (without calling
+bfd_set_error ()) without changing the section chain if there is
+already a section named NAME.  Also set the attributes of the new
+section to the value FLAGS.  If there is an error, return `NULL' and set
+`bfd_error'.
+
+2.6.5.9 `bfd_make_section'
+..........................
+
+*Synopsis*
+     asection *bfd_make_section (bfd *, const char *name);
+   *Description*
+Like `bfd_make_section_anyway', but return `NULL' (without calling
+bfd_set_error ()) without changing the section chain if there is
+already a section named NAME.  If there is an error, return `NULL' and
+set `bfd_error'.
+
+2.6.5.10 `bfd_set_section_flags'
+................................
+
+*Synopsis*
+     bfd_boolean bfd_set_section_flags
+        (bfd *abfd, asection *sec, flagword flags);
+   *Description*
+Set the attributes of the section SEC in the BFD ABFD to the value
+FLAGS. Return `TRUE' on success, `FALSE' on error. Possible error
+returns are:
+
+   * `bfd_error_invalid_operation' - The section cannot have one or
+     more of the attributes requested. For example, a .bss section in
+     `a.out' may not have the `SEC_HAS_CONTENTS' field set.
+
+2.6.5.11 `bfd_map_over_sections'
+................................
+
+*Synopsis*
+     void bfd_map_over_sections
+        (bfd *abfd,
+         void (*func) (bfd *abfd, asection *sect, void *obj),
+         void *obj);
+   *Description*
+Call the provided function FUNC for each section attached to the BFD
+ABFD, passing OBJ as an argument. The function will be called as if by
+
+            func (abfd, the_section, obj);
+
+   This is the preferred method for iterating over sections; an
+alternative would be to use a loop:
+
+               section *p;
+               for (p = abfd->sections; p != NULL; p = p->next)
+                  func (abfd, p, ...)
+
+2.6.5.12 `bfd_sections_find_if'
+...............................
+
+*Synopsis*
+     asection *bfd_sections_find_if
+        (bfd *abfd,
+         bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
+         void *obj);
+   *Description*
+Call the provided function OPERATION for each section attached to the
+BFD ABFD, passing OBJ as an argument. The function will be called as if
+by
+
+            operation (abfd, the_section, obj);
+
+   It returns the first section for which OPERATION returns true.
+
+2.6.5.13 `bfd_set_section_size'
+...............................
+
+*Synopsis*
+     bfd_boolean bfd_set_section_size
+        (bfd *abfd, asection *sec, bfd_size_type val);
+   *Description*
+Set SEC to the size VAL. If the operation is ok, then `TRUE' is
+returned, else `FALSE'.
+
+   Possible error returns:
+   * `bfd_error_invalid_operation' - Writing has started to the BFD, so
+     setting the size is invalid.
+
+2.6.5.14 `bfd_set_section_contents'
+...................................
+
+*Synopsis*
+     bfd_boolean bfd_set_section_contents
+        (bfd *abfd, asection *section, const void *data,
+         file_ptr offset, bfd_size_type count);
+   *Description*
+Sets the contents of the section SECTION in BFD ABFD to the data
+starting in memory at DATA. The data is written to the output section
+starting at offset OFFSET for COUNT octets.
+
+   Normally `TRUE' is returned, else `FALSE'. Possible error returns
+are:
+   * `bfd_error_no_contents' - The output section does not have the
+     `SEC_HAS_CONTENTS' attribute, so nothing can be written to it.
+
+   * and some more too
+   This routine is front end to the back end function
+`_bfd_set_section_contents'.
+
+2.6.5.15 `bfd_get_section_contents'
+...................................
+
+*Synopsis*
+     bfd_boolean bfd_get_section_contents
+        (bfd *abfd, asection *section, void *location, file_ptr offset,
+         bfd_size_type count);
+   *Description*
+Read data from SECTION in BFD ABFD into memory starting at LOCATION.
+The data is read at an offset of OFFSET from the start of the input
+section, and is read for COUNT bytes.
+
+   If the contents of a constructor with the `SEC_CONSTRUCTOR' flag set
+are requested or if the section does not have the `SEC_HAS_CONTENTS'
+flag set, then the LOCATION is filled with zeroes. If no errors occur,
+`TRUE' is returned, else `FALSE'.
+
+2.6.5.16 `bfd_malloc_and_get_section'
+.....................................
+
+*Synopsis*
+     bfd_boolean bfd_malloc_and_get_section
+        (bfd *abfd, asection *section, bfd_byte **buf);
+   *Description*
+Read all data from SECTION in BFD ABFD into a buffer, *BUF, malloc'd by
+this function.
+
+2.6.5.17 `bfd_copy_private_section_data'
+........................................
+
+*Synopsis*
+     bfd_boolean bfd_copy_private_section_data
+        (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
+   *Description*
+Copy private section information from ISEC in the BFD IBFD to the
+section OSEC in the BFD OBFD.  Return `TRUE' on success, `FALSE' on
+error.  Possible error returns are:
+
+   * `bfd_error_no_memory' - Not enough memory exists to create private
+     data for OSEC.
+
+     #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
+          BFD_SEND (obfd, _bfd_copy_private_section_data, \
+                    (ibfd, isection, obfd, osection))
+
+2.6.5.18 `bfd_generic_is_group_section'
+.......................................
+
+*Synopsis*
+     bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
+   *Description*
+Returns TRUE if SEC is a member of a group.
+
+2.6.5.19 `bfd_generic_discard_group'
+....................................
+
+*Synopsis*
+     bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
+   *Description*
+Remove all members of GROUP from the output.
+
+\1f
+File: bfd.info,  Node: Symbols,  Next: Archives,  Prev: Sections,  Up: BFD front end
+
+2.7 Symbols
+===========
+
+BFD tries to maintain as much symbol information as it can when it
+moves information from file to file. BFD passes information to
+applications though the `asymbol' structure. When the application
+requests the symbol table, BFD reads the table in the native form and
+translates parts of it into the internal format. To maintain more than
+the information passed to applications, some targets keep some
+information "behind the scenes" in a structure only the particular back
+end knows about. For example, the coff back end keeps the original
+symbol table structure as well as the canonical structure when a BFD is
+read in. On output, the coff back end can reconstruct the output symbol
+table so that no information is lost, even information unique to coff
+which BFD doesn't know or understand. If a coff symbol table were read,
+but were written through an a.out back end, all the coff specific
+information would be lost. The symbol table of a BFD is not necessarily
+read in until a canonicalize request is made. Then the BFD back end
+fills in a table provided by the application with pointers to the
+canonical information.  To output symbols, the application provides BFD
+with a table of pointers to pointers to `asymbol's. This allows
+applications like the linker to output a symbol as it was read, since
+the "behind the scenes" information will be still available.
+
+* Menu:
+
+* Reading Symbols::
+* Writing Symbols::
+* Mini Symbols::
+* typedef asymbol::
+* symbol handling functions::
+
+\1f
+File: bfd.info,  Node: Reading Symbols,  Next: Writing Symbols,  Prev: Symbols,  Up: Symbols
+
+2.7.1 Reading symbols
+---------------------
+
+There are two stages to reading a symbol table from a BFD: allocating
+storage, and the actual reading process. This is an excerpt from an
+application which reads the symbol table:
+
+              long storage_needed;
+              asymbol **symbol_table;
+              long number_of_symbols;
+              long i;
+
+              storage_needed = bfd_get_symtab_upper_bound (abfd);
+
+              if (storage_needed < 0)
+                FAIL
+
+              if (storage_needed == 0)
+                return;
+
+              symbol_table = xmalloc (storage_needed);
+                ...
+              number_of_symbols =
+                 bfd_canonicalize_symtab (abfd, symbol_table);
+
+              if (number_of_symbols < 0)
+                FAIL
+
+              for (i = 0; i < number_of_symbols; i++)
+                process_symbol (symbol_table[i]);
+
+   All storage for the symbols themselves is in an objalloc connected
+to the BFD; it is freed when the BFD is closed.
+
+\1f
+File: bfd.info,  Node: Writing Symbols,  Next: Mini Symbols,  Prev: Reading Symbols,  Up: Symbols
+
+2.7.2 Writing symbols
+---------------------
+
+Writing of a symbol table is automatic when a BFD open for writing is
+closed. The application attaches a vector of pointers to pointers to
+symbols to the BFD being written, and fills in the symbol count. The
+close and cleanup code reads through the table provided and performs
+all the necessary operations. The BFD output code must always be
+provided with an "owned" symbol: one which has come from another BFD,
+or one which has been created using `bfd_make_empty_symbol'.  Here is an
+example showing the creation of a symbol table with only one element:
+
+            #include "bfd.h"
+            int main (void)
+            {
+              bfd *abfd;
+              asymbol *ptrs[2];
+              asymbol *new;
+
+              abfd = bfd_openw ("foo","a.out-sunos-big");
+              bfd_set_format (abfd, bfd_object);
+              new = bfd_make_empty_symbol (abfd);
+              new->name = "dummy_symbol";
+              new->section = bfd_make_section_old_way (abfd, ".text");
+              new->flags = BSF_GLOBAL;
+              new->value = 0x12345;
+
+              ptrs[0] = new;
+              ptrs[1] = 0;
+
+              bfd_set_symtab (abfd, ptrs, 1);
+              bfd_close (abfd);
+              return 0;
+            }
+
+            ./makesym
+            nm foo
+            00012345 A dummy_symbol
+
+   Many formats cannot represent arbitrary symbol information; for
+instance, the `a.out' object format does not allow an arbitrary number
+of sections. A symbol pointing to a section which is not one  of
+`.text', `.data' or `.bss' cannot be described.
+
+\1f
+File: bfd.info,  Node: Mini Symbols,  Next: typedef asymbol,  Prev: Writing Symbols,  Up: Symbols
+
+2.7.3 Mini Symbols
+------------------
+
+Mini symbols provide read-only access to the symbol table.  They use
+less memory space, but require more time to access.  They can be useful
+for tools like nm or objdump, which may have to handle symbol tables of
+extremely large executables.
+
+   The `bfd_read_minisymbols' function will read the symbols into
+memory in an internal form.  It will return a `void *' pointer to a
+block of memory, a symbol count, and the size of each symbol.  The
+pointer is allocated using `malloc', and should be freed by the caller
+when it is no longer needed.
+
+   The function `bfd_minisymbol_to_symbol' will take a pointer to a
+minisymbol, and a pointer to a structure returned by
+`bfd_make_empty_symbol', and return a `asymbol' structure.  The return
+value may or may not be the same as the value from
+`bfd_make_empty_symbol' which was passed in.
+
+\1f
+File: bfd.info,  Node: typedef asymbol,  Next: symbol handling functions,  Prev: Mini Symbols,  Up: Symbols
+
+2.7.4 typedef asymbol
+---------------------
+
+An `asymbol' has the form:
+
+
+     typedef struct bfd_symbol
+     {
+       /* A pointer to the BFD which owns the symbol. This information
+          is necessary so that a back end can work out what additional
+          information (invisible to the application writer) is carried
+          with the symbol.
+
+          This field is *almost* redundant, since you can use section->owner
+          instead, except that some symbols point to the global sections
+          bfd_{abs,com,und}_section.  This could be fixed by making
+          these globals be per-bfd (or per-target-flavor).  FIXME.  */
+       struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
+
+       /* The text of the symbol. The name is left alone, and not copied; the
+          application may not alter it.  */
+       const char *name;
+
+       /* The value of the symbol.  This really should be a union of a
+          numeric value with a pointer, since some flags indicate that
+          a pointer to another symbol is stored here.  */
+       symvalue value;
+
+       /* Attributes of a symbol.  */
+     #define BSF_NO_FLAGS    0x00
+
+       /* The symbol has local scope; `static' in `C'. The value
+          is the offset into the section of the data.  */
+     #define BSF_LOCAL      0x01
+
+       /* The symbol has global scope; initialized data in `C'. The
+          value is the offset into the section of the data.  */
+     #define BSF_GLOBAL     0x02
+
+       /* The symbol has global scope and is exported. The value is
+          the offset into the section of the data.  */
+     #define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
+
+       /* A normal C symbol would be one of:
+          `BSF_LOCAL', `BSF_FORT_COMM',  `BSF_UNDEFINED' or
+          `BSF_GLOBAL'.  */
+
+       /* The symbol is a debugging record. The value has an arbitrary
+          meaning, unless BSF_DEBUGGING_RELOC is also set.  */
+     #define BSF_DEBUGGING  0x08
+
+       /* The symbol denotes a function entry point.  Used in ELF,
+          perhaps others someday.  */
+     #define BSF_FUNCTION    0x10
+
+       /* Used by the linker.  */
+     #define BSF_KEEP        0x20
+     #define BSF_KEEP_G      0x40
+
+       /* A weak global symbol, overridable without warnings by
+          a regular global symbol of the same name.  */
+     #define BSF_WEAK        0x80
+
+       /* This symbol was created to point to a section, e.g. ELF's
+          STT_SECTION symbols.  */
+     #define BSF_SECTION_SYM 0x100
+
+       /* The symbol used to be a common symbol, but now it is
+          allocated.  */
+     #define BSF_OLD_COMMON  0x200
+
+       /* The default value for common data.  */
+     #define BFD_FORT_COMM_DEFAULT_VALUE 0
+
+       /* In some files the type of a symbol sometimes alters its
+          location in an output file - ie in coff a `ISFCN' symbol
+          which is also `C_EXT' symbol appears where it was
+          declared and not at the end of a section.  This bit is set
+          by the target BFD part to convey this information.  */
+     #define BSF_NOT_AT_END    0x400
+
+       /* Signal that the symbol is the label of constructor section.  */
+     #define BSF_CONSTRUCTOR   0x800
+
+       /* Signal that the symbol is a warning symbol.  The name is a
+          warning.  The name of the next symbol is the one to warn about;
+          if a reference is made to a symbol with the same name as the next
+          symbol, a warning is issued by the linker.  */
+     #define BSF_WARNING       0x1000
+
+       /* Signal that the symbol is indirect.  This symbol is an indirect
+          pointer to the symbol with the same name as the next symbol.  */
+     #define BSF_INDIRECT      0x2000
+
+       /* BSF_FILE marks symbols that contain a file name.  This is used
+          for ELF STT_FILE symbols.  */
+     #define BSF_FILE          0x4000
+
+       /* Symbol is from dynamic linking information.  */
+     #define BSF_DYNAMIC       0x8000
+
+       /* The symbol denotes a data object.  Used in ELF, and perhaps
+          others someday.  */
+     #define BSF_OBJECT        0x10000
+
+       /* This symbol is a debugging symbol.  The value is the offset
+          into the section of the data.  BSF_DEBUGGING should be set
+          as well.  */
+     #define BSF_DEBUGGING_RELOC 0x20000
+
+       /* This symbol is thread local.  Used in ELF.  */
+     #define BSF_THREAD_LOCAL  0x40000
+
+       flagword flags;
+
+       /* A pointer to the section to which this symbol is
+          relative.  This will always be non NULL, there are special
+          sections for undefined and absolute symbols.  */
+       struct bfd_section *section;
+
+       /* Back end special data.  */
+       union
+         {
+           void *p;
+           bfd_vma i;
+         }
+       udata;
+     }
+     asymbol;
+
+\1f
+File: bfd.info,  Node: symbol handling functions,  Prev: typedef asymbol,  Up: Symbols
+
+2.7.5 Symbol handling functions
+-------------------------------
+
+2.7.5.1 `bfd_get_symtab_upper_bound'
+....................................
+
+*Description*
+Return the number of bytes required to store a vector of pointers to
+`asymbols' for all the symbols in the BFD ABFD, including a terminal
+NULL pointer. If there are no symbols in the BFD, then return 0.  If an
+error occurs, return -1.
+     #define bfd_get_symtab_upper_bound(abfd) \
+          BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
+
+2.7.5.2 `bfd_is_local_label'
+............................
+
+*Synopsis*
+     bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
+   *Description*
+Return TRUE if the given symbol SYM in the BFD ABFD is a compiler
+generated local label, else return FALSE.
+
+2.7.5.3 `bfd_is_local_label_name'
+.................................
+
+*Synopsis*
+     bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
+   *Description*
+Return TRUE if a symbol with the name NAME in the BFD ABFD is a
+compiler generated local label, else return FALSE.  This just checks
+whether the name has the form of a local label.
+     #define bfd_is_local_label_name(abfd, name) \
+       BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
+
+2.7.5.4 `bfd_is_target_special_symbol'
+......................................
+
+*Synopsis*
+     bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
+   *Description*
+Return TRUE iff a symbol SYM in the BFD ABFD is something special to
+the particular target represented by the BFD.  Such symbols should
+normally not be mentioned to the user.
+     #define bfd_is_target_special_symbol(abfd, sym) \
+       BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
+
+2.7.5.5 `bfd_canonicalize_symtab'
+.................................
+
+*Description*
+Read the symbols from the BFD ABFD, and fills in the vector LOCATION
+with pointers to the symbols and a trailing NULL.  Return the actual
+number of symbol pointers, not including the NULL.
+     #define bfd_canonicalize_symtab(abfd, location) \
+       BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
+
+2.7.5.6 `bfd_set_symtab'
+........................
+
+*Synopsis*
+     bfd_boolean bfd_set_symtab
+        (bfd *abfd, asymbol **location, unsigned int count);
+   *Description*
+Arrange that when the output BFD ABFD is closed, the table LOCATION of
+COUNT pointers to symbols will be written.
+
+2.7.5.7 `bfd_print_symbol_vandf'
+................................
+
+*Synopsis*
+     void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
+   *Description*
+Print the value and flags of the SYMBOL supplied to the stream FILE.
+
+2.7.5.8 `bfd_make_empty_symbol'
+...............................
+
+*Description*
+Create a new `asymbol' structure for the BFD ABFD and return a pointer
+to it.
+
+   This routine is necessary because each back end has private
+information surrounding the `asymbol'. Building your own `asymbol' and
+pointing to it will not create the private information, and will cause
+problems later on.
+     #define bfd_make_empty_symbol(abfd) \
+       BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
+
+2.7.5.9 `_bfd_generic_make_empty_symbol'
+........................................
+
+*Synopsis*
+     asymbol *_bfd_generic_make_empty_symbol (bfd *);
+   *Description*
+Create a new `asymbol' structure for the BFD ABFD and return a pointer
+to it.  Used by core file routines, binary back-end and anywhere else
+where no private info is needed.
+
+2.7.5.10 `bfd_make_debug_symbol'
+................................
+
+*Description*
+Create a new `asymbol' structure for the BFD ABFD, to be used as a
+debugging symbol.  Further details of its use have yet to be worked out.
+     #define bfd_make_debug_symbol(abfd,ptr,size) \
+       BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
+
+2.7.5.11 `bfd_decode_symclass'
+..............................
+
+*Description*
+Return a character corresponding to the symbol class of SYMBOL, or '?'
+for an unknown class.
+
+   *Synopsis*
+     int bfd_decode_symclass (asymbol *symbol);
+   
+2.7.5.12 `bfd_is_undefined_symclass'
+....................................
+
+*Description*
+Returns non-zero if the class symbol returned by bfd_decode_symclass
+represents an undefined symbol.  Returns zero otherwise.
+
+   *Synopsis*
+     bfd_boolean bfd_is_undefined_symclass (int symclass);
+   
+2.7.5.13 `bfd_symbol_info'
+..........................
+
+*Description*
+Fill in the basic info about symbol that nm needs.  Additional info may
+be added by the back-ends after calling this function.
+
+   *Synopsis*
+     void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
+   
+2.7.5.14 `bfd_copy_private_symbol_data'
+.......................................
+
+*Synopsis*
+     bfd_boolean bfd_copy_private_symbol_data
+        (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
+   *Description*
+Copy private symbol information from ISYM in the BFD IBFD to the symbol
+OSYM in the BFD OBFD.  Return `TRUE' on success, `FALSE' on error.
+Possible error returns are:
+
+   * `bfd_error_no_memory' - Not enough memory exists to create private
+     data for OSEC.
+
+     #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
+       BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
+                 (ibfd, isymbol, obfd, osymbol))
+
+\1f
+File: bfd.info,  Node: Archives,  Next: Formats,  Prev: Symbols,  Up: BFD front end
+
+2.8 Archives
+============
+
+*Description*
+An archive (or library) is just another BFD.  It has a symbol table,
+although there's not much a user program will do with it.
+
+   The big difference between an archive BFD and an ordinary BFD is
+that the archive doesn't have sections.  Instead it has a chain of BFDs
+that are considered its contents.  These BFDs can be manipulated like
+any other.  The BFDs contained in an archive opened for reading will
+all be opened for reading.  You may put either input or output BFDs
+into an archive opened for output; they will be handled correctly when
+the archive is closed.
+
+   Use `bfd_openr_next_archived_file' to step through the contents of
+an archive opened for input.  You don't have to read the entire archive
+if you don't want to!  Read it until you find what you want.
+
+   Archive contents of output BFDs are chained through the `next'
+pointer in a BFD.  The first one is findable through the `archive_head'
+slot of the archive.  Set it with `bfd_set_archive_head' (q.v.).  A
+given BFD may be in only one open output archive at a time.
+
+   As expected, the BFD archive code is more general than the archive
+code of any given environment.  BFD archives may contain files of
+different formats (e.g., a.out and coff) and even different
+architectures.  You may even place archives recursively into archives!
+
+   This can cause unexpected confusion, since some archive formats are
+more expressive than others.  For instance, Intel COFF archives can
+preserve long filenames; SunOS a.out archives cannot.  If you move a
+file from the first to the second format and back again, the filename
+may be truncated.  Likewise, different a.out environments have different
+conventions as to how they truncate filenames, whether they preserve
+directory names in filenames, etc.  When interoperating with native
+tools, be sure your files are homogeneous.
+
+   Beware: most of these formats do not react well to the presence of
+spaces in filenames.  We do the best we can, but can't always handle
+this case due to restrictions in the format of archives.  Many Unix
+utilities are braindead in regards to spaces and such in filenames
+anyway, so this shouldn't be much of a restriction.
+
+   Archives are supported in BFD in `archive.c'.
+
+2.8.1 Archive functions
+-----------------------
+
+2.8.1.1 `bfd_get_next_mapent'
+.............................
+
+*Synopsis*
+     symindex bfd_get_next_mapent
+        (bfd *abfd, symindex previous, carsym **sym);
+   *Description*
+Step through archive ABFD's symbol table (if it has one).  Successively
+update SYM with the next symbol's information, returning that symbol's
+(internal) index into the symbol table.
+
+   Supply `BFD_NO_MORE_SYMBOLS' as the PREVIOUS entry to get the first
+one; returns `BFD_NO_MORE_SYMBOLS' when you've already got the last one.
+
+   A `carsym' is a canonical archive symbol.  The only user-visible
+element is its name, a null-terminated string.
+
+2.8.1.2 `bfd_set_archive_head'
+..............................
+
+*Synopsis*
+     bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
+   *Description*
+Set the head of the chain of BFDs contained in the archive OUTPUT to
+NEW_HEAD.
+
+2.8.1.3 `bfd_openr_next_archived_file'
+......................................
+
+*Synopsis*
+     bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
+   *Description*
+Provided a BFD, ARCHIVE, containing an archive and NULL, open an input
+BFD on the first contained element and returns that.  Subsequent calls
+should pass the archive and the previous return value to return a
+created BFD to the next contained element. NULL is returned when there
+are no more.
+
+\1f
+File: bfd.info,  Node: Formats,  Next: Relocations,  Prev: Archives,  Up: BFD front end
+
+2.9 File formats
+================
+
+A format is a BFD concept of high level file contents type. The formats
+supported by BFD are:
+
+   * `bfd_object'
+   The BFD may contain data, symbols, relocations and debug info.
+
+   * `bfd_archive'
+   The BFD contains other BFDs and an optional index.
+
+   * `bfd_core'
+   The BFD contains the result of an executable core dump.
+
+2.9.1 File format functions
+---------------------------
+
+2.9.1.1 `bfd_check_format'
+..........................
+
+*Synopsis*
+     bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
+   *Description*
+Verify if the file attached to the BFD ABFD is compatible with the
+format FORMAT (i.e., one of `bfd_object', `bfd_archive' or `bfd_core').
+
+   If the BFD has been set to a specific target before the call, only
+the named target and format combination is checked. If the target has
+not been set, or has been set to `default', then all the known target
+backends is interrogated to determine a match.  If the default target
+matches, it is used.  If not, exactly one target must recognize the
+file, or an error results.
+
+   The function returns `TRUE' on success, otherwise `FALSE' with one
+of the following error codes:
+
+   * `bfd_error_invalid_operation' - if `format' is not one of
+     `bfd_object', `bfd_archive' or `bfd_core'.
+
+   * `bfd_error_system_call' - if an error occured during a read - even
+     some file mismatches can cause bfd_error_system_calls.
+
+   * `file_not_recognised' - none of the backends recognised the file
+     format.
+
+   * `bfd_error_file_ambiguously_recognized' - more than one backend
+     recognised the file format.
+
+2.9.1.2 `bfd_check_format_matches'
+..................................
+
+*Synopsis*
+     bfd_boolean bfd_check_format_matches
+        (bfd *abfd, bfd_format format, char ***matching);
+   *Description*
+Like `bfd_check_format', except when it returns FALSE with `bfd_errno'
+set to `bfd_error_file_ambiguously_recognized'.  In that case, if
+MATCHING is not NULL, it will be filled in with a NULL-terminated list
+of the names of the formats that matched, allocated with `malloc'.
+Then the user may choose a format and try again.
+
+   When done with the list that MATCHING points to, the caller should
+free it.
+
+2.9.1.3 `bfd_set_format'
+........................
+
+*Synopsis*
+     bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
+   *Description*
+This function sets the file format of the BFD ABFD to the format
+FORMAT. If the target set in the BFD does not support the format
+requested, the format is invalid, or the BFD is not open for writing,
+then an error occurs.
+
+2.9.1.4 `bfd_format_string'
+...........................
+
+*Synopsis*
+     const char *bfd_format_string (bfd_format format);
+   *Description*
+Return a pointer to a const string `invalid', `object', `archive',
+`core', or `unknown', depending upon the value of FORMAT.
+
+\1f
+File: bfd.info,  Node: Relocations,  Next: Core Files,  Prev: Formats,  Up: BFD front end
+
+2.10 Relocations
+================
+
+BFD maintains relocations in much the same way it maintains symbols:
+they are left alone until required, then read in en-masse and
+translated into an internal form.  A common routine
+`bfd_perform_relocation' acts upon the canonical form to do the fixup.
+
+   Relocations are maintained on a per section basis, while symbols are
+maintained on a per BFD basis.
+
+   All that a back end has to do to fit the BFD interface is to create
+a `struct reloc_cache_entry' for each relocation in a particular
+section, and fill in the right bits of the structures.
+
+* Menu:
+
+* typedef arelent::
+* howto manager::
+
+\1f
+File: bfd.info,  Node: typedef arelent,  Next: howto manager,  Prev: Relocations,  Up: Relocations
+
+2.10.1 typedef arelent
+----------------------
+
+This is the structure of a relocation entry:
+
+
+     typedef enum bfd_reloc_status
+     {
+       /* No errors detected.  */
+       bfd_reloc_ok,
+
+       /* The relocation was performed, but there was an overflow.  */
+       bfd_reloc_overflow,
+
+       /* The address to relocate was not within the section supplied.  */
+       bfd_reloc_outofrange,
+
+       /* Used by special functions.  */
+       bfd_reloc_continue,
+
+       /* Unsupported relocation size requested.  */
+       bfd_reloc_notsupported,
+
+       /* Unused.  */
+       bfd_reloc_other,
+
+       /* The symbol to relocate against was undefined.  */
+       bfd_reloc_undefined,
+
+       /* The relocation was performed, but may not be ok - presently
+          generated only when linking i960 coff files with i960 b.out
+          symbols.  If this type is returned, the error_message argument
+          to bfd_perform_relocation will be set.  */
+       bfd_reloc_dangerous
+      }
+      bfd_reloc_status_type;
+
+
+     typedef struct reloc_cache_entry
+     {
+       /* A pointer into the canonical table of pointers.  */
+       struct bfd_symbol **sym_ptr_ptr;
+
+       /* offset in section.  */
+       bfd_size_type address;
+
+       /* addend for relocation value.  */
+       bfd_vma addend;
+
+       /* Pointer to how to perform the required relocation.  */
+       reloc_howto_type *howto;
+
+     }
+     arelent;
+   *Description*
+Here is a description of each of the fields within an `arelent':
+
+   * `sym_ptr_ptr'
+   The symbol table pointer points to a pointer to the symbol
+associated with the relocation request.  It is the pointer into the
+table returned by the back end's `canonicalize_symtab' action. *Note
+Symbols::. The symbol is referenced through a pointer to a pointer so
+that tools like the linker can fix up all the symbols of the same name
+by modifying only one pointer. The relocation routine looks in the
+symbol and uses the base of the section the symbol is attached to and
+the value of the symbol as the initial relocation offset. If the symbol
+pointer is zero, then the section provided is looked up.
+
+   * `address'
+   The `address' field gives the offset in bytes from the base of the
+section data which owns the relocation record to the first byte of
+relocatable information. The actual data relocated will be relative to
+this point; for example, a relocation type which modifies the bottom
+two bytes of a four byte word would not touch the first byte pointed to
+in a big endian world.
+
+   * `addend'
+   The `addend' is a value provided by the back end to be added (!)  to
+the relocation offset. Its interpretation is dependent upon the howto.
+For example, on the 68k the code:
+
+             char foo[];
+             main()
+                     {
+                     return foo[0x12345678];
+                     }
+
+   Could be compiled into:
+
+             linkw fp,#-4
+             moveb @#12345678,d0
+             extbl d0
+             unlk fp
+             rts
+
+   This could create a reloc pointing to `foo', but leave the offset in
+the data, something like:
+
+     RELOCATION RECORDS FOR [.text]:
+     offset   type      value
+     00000006 32        _foo
+
+     00000000 4e56 fffc          ; linkw fp,#-4
+     00000004 1039 1234 5678     ; moveb @#12345678,d0
+     0000000a 49c0               ; extbl d0
+     0000000c 4e5e               ; unlk fp
+     0000000e 4e75               ; rts
+
+   Using coff and an 88k, some instructions don't have enough space in
+them to represent the full address range, and pointers have to be
+loaded in two parts. So you'd get something like:
+
+             or.u     r13,r0,hi16(_foo+0x12345678)
+             ld.b     r2,r13,lo16(_foo+0x12345678)
+             jmp      r1
+
+   This should create two relocs, both pointing to `_foo', and with
+0x12340000 in their addend field. The data would consist of:
+
+     RELOCATION RECORDS FOR [.text]:
+     offset   type      value
+     00000002 HVRT16    _foo+0x12340000
+     00000006 LVRT16    _foo+0x12340000
+
+     00000000 5da05678           ; or.u r13,r0,0x5678
+     00000004 1c4d5678           ; ld.b r2,r13,0x5678
+     00000008 f400c001           ; jmp r1
+
+   The relocation routine digs out the value from the data, adds it to
+the addend to get the original offset, and then adds the value of
+`_foo'. Note that all 32 bits have to be kept around somewhere, to cope
+with carry from bit 15 to bit 16.
+
+   One further example is the sparc and the a.out format. The sparc has
+a similar problem to the 88k, in that some instructions don't have room
+for an entire offset, but on the sparc the parts are created in odd
+sized lumps. The designers of the a.out format chose to not use the
+data within the section for storing part of the offset; all the offset
+is kept within the reloc. Anything in the data should be ignored.
+
+             save %sp,-112,%sp
+             sethi %hi(_foo+0x12345678),%g2
+             ldsb [%g2+%lo(_foo+0x12345678)],%i0
+             ret
+             restore
+
+   Both relocs contain a pointer to `foo', and the offsets contain junk.
+
+     RELOCATION RECORDS FOR [.text]:
+     offset   type      value
+     00000004 HI22      _foo+0x12345678
+     00000008 LO10      _foo+0x12345678
+
+     00000000 9de3bf90     ; save %sp,-112,%sp
+     00000004 05000000     ; sethi %hi(_foo+0),%g2
+     00000008 f048a000     ; ldsb [%g2+%lo(_foo+0)],%i0
+     0000000c 81c7e008     ; ret
+     00000010 81e80000     ; restore
+
+   * `howto'
+   The `howto' field can be imagined as a relocation instruction. It is
+a pointer to a structure which contains information on what to do with
+all of the other information in the reloc record and data section. A
+back end would normally have a relocation instruction set and turn
+relocations into pointers to the correct structure on input - but it
+would be possible to create each howto field on demand.
+
+2.10.1.1 `enum complain_overflow'
+.................................
+
+Indicates what sort of overflow checking should be done when performing
+a relocation.
+
+
+     enum complain_overflow
+     {
+       /* Do not complain on overflow.  */
+       complain_overflow_dont,
+
+       /* Complain if the value overflows when considered as a signed
+          number one bit larger than the field.  ie. A bitfield of N bits
+          is allowed to represent -2**n to 2**n-1.  */
+       complain_overflow_bitfield,
+
+       /* Complain if the value overflows when considered as a signed
+          number.  */
+       complain_overflow_signed,
+
+       /* Complain if the value overflows when considered as an
+          unsigned number.  */
+       complain_overflow_unsigned
+     };
+
+2.10.1.2 `reloc_howto_type'
+...........................
+
+The `reloc_howto_type' is a structure which contains all the
+information that libbfd needs to know to tie up a back end's data.
+
+     struct bfd_symbol;             /* Forward declaration.  */
+
+     struct reloc_howto_struct
+     {
+       /*  The type field has mainly a documentary use - the back end can
+           do what it wants with it, though normally the back end's
+           external idea of what a reloc number is stored
+           in this field.  For example, a PC relative word relocation
+           in a coff environment has the type 023 - because that's
+           what the outside world calls a R_PCRWORD reloc.  */
+       unsigned int type;
+
+       /*  The value the final relocation is shifted right by.  This drops
+           unwanted data from the relocation.  */
+       unsigned int rightshift;
+
+       /*  The size of the item to be relocated.  This is *not* a
+           power-of-two measure.  To get the number of bytes operated
+           on by a type of relocation, use bfd_get_reloc_size.  */
+       int size;
+
+       /*  The number of bits in the item to be relocated.  This is used
+           when doing overflow checking.  */
+       unsigned int bitsize;
+
+       /*  Notes that the relocation is relative to the location in the
+           data section of the addend.  The relocation function will
+           subtract from the relocation value the address of the location
+           being relocated.  */
+       bfd_boolean pc_relative;
+
+       /*  The bit position of the reloc value in the destination.
+           The relocated value is left shifted by this amount.  */
+       unsigned int bitpos;
+
+       /* What type of overflow error should be checked for when
+          relocating.  */
+       enum complain_overflow complain_on_overflow;
+
+       /* If this field is non null, then the supplied function is
+          called rather than the normal function.  This allows really
+          strange relocation methods to be accommodated (e.g., i960 callj
+          instructions).  */
+       bfd_reloc_status_type (*special_function)
+         (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
+          bfd *, char **);
+
+       /* The textual name of the relocation type.  */
+       char *name;
+
+       /* Some formats record a relocation addend in the section contents
+          rather than with the relocation.  For ELF formats this is the
+          distinction between USE_REL and USE_RELA (though the code checks
+          for USE_REL == 1/0).  The value of this field is TRUE if the
+          addend is recorded with the section contents; when performing a
+          partial link (ld -r) the section contents (the data) will be
+          modified.  The value of this field is FALSE if addends are
+          recorded with the relocation (in arelent.addend); when performing
+          a partial link the relocation will be modified.
+          All relocations for all ELF USE_RELA targets should set this field
+          to FALSE (values of TRUE should be looked on with suspicion).
+          However, the converse is not true: not all relocations of all ELF
+          USE_REL targets set this field to TRUE.  Why this is so is peculiar
+          to each particular target.  For relocs that aren't used in partial
+          links (e.g. GOT stuff) it doesn't matter what this is set to.  */
+       bfd_boolean partial_inplace;
+
+       /* src_mask selects the part of the instruction (or data) to be used
+          in the relocation sum.  If the target relocations don't have an
+          addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
+          dst_mask to extract the addend from the section contents.  If
+          relocations do have an addend in the reloc, eg. ELF USE_RELA, this
+          field should be zero.  Non-zero values for ELF USE_RELA targets are
+          bogus as in those cases the value in the dst_mask part of the
+          section contents should be treated as garbage.  */
+       bfd_vma src_mask;
+
+       /* dst_mask selects which parts of the instruction (or data) are
+          replaced with a relocated value.  */
+       bfd_vma dst_mask;
+
+       /* When some formats create PC relative instructions, they leave
+          the value of the pc of the place being relocated in the offset
+          slot of the instruction, so that a PC relative relocation can
+          be made just by adding in an ordinary offset (e.g., sun3 a.out).
+          Some formats leave the displacement part of an instruction
+          empty (e.g., m88k bcs); this flag signals the fact.  */
+       bfd_boolean pcrel_offset;
+     };
+   
+2.10.1.3 `The HOWTO Macro'
+..........................
+
+*Description*
+The HOWTO define is horrible and will go away.
+     #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
+       { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
+
+   *Description*
+And will be replaced with the totally magic way. But for the moment, we
+are compatible, so do it this way.
+     #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
+       HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
+              NAME, FALSE, 0, 0, IN)
+
+   *Description*
+This is used to fill in an empty howto entry in an array.
+     #define EMPTY_HOWTO(C) \
+       HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
+              NULL, FALSE, 0, 0, FALSE)
+
+   *Description*
+Helper routine to turn a symbol into a relocation value.
+     #define HOWTO_PREPARE(relocation, symbol)               \
+       {                                                     \
+         if (symbol != NULL)                                 \
+           {                                                 \
+             if (bfd_is_com_section (symbol->section))       \
+               {                                             \
+                 relocation = 0;                             \
+               }                                             \
+             else                                            \
+               {                                             \
+                 relocation = symbol->value;                 \
+               }                                             \
+           }                                                 \
+       }
+
+2.10.1.4 `bfd_get_reloc_size'
+.............................
+
+*Synopsis*
+     unsigned int bfd_get_reloc_size (reloc_howto_type *);
+   *Description*
+For a reloc_howto_type that operates on a fixed number of bytes, this
+returns the number of bytes operated on.
+
+2.10.1.5 `arelent_chain'
+........................
+
+*Description*
+How relocs are tied together in an `asection':
+     typedef struct relent_chain
+     {
+       arelent relent;
+       struct relent_chain *next;
+     }
+     arelent_chain;
+
+2.10.1.6 `bfd_check_overflow'
+.............................
+
+*Synopsis*
+     bfd_reloc_status_type bfd_check_overflow
+        (enum complain_overflow how,
+         unsigned int bitsize,
+         unsigned int rightshift,
+         unsigned int addrsize,
+         bfd_vma relocation);
+   *Description*
+Perform overflow checking on RELOCATION which has BITSIZE significant
+bits and will be shifted right by RIGHTSHIFT bits, on a machine with
+addresses containing ADDRSIZE significant bits.  The result is either of
+`bfd_reloc_ok' or `bfd_reloc_overflow'.
+
+2.10.1.7 `bfd_perform_relocation'
+.................................
+
+*Synopsis*
+     bfd_reloc_status_type bfd_perform_relocation
+        (bfd *abfd,
+         arelent *reloc_entry,
+         void *data,
+         asection *input_section,
+         bfd *output_bfd,
+         char **error_message);
+   *Description*
+If OUTPUT_BFD is supplied to this function, the generated image will be
+relocatable; the relocations are copied to the output file after they
+have been changed to reflect the new state of the world. There are two
+ways of reflecting the results of partial linkage in an output file: by
+modifying the output data in place, and by modifying the relocation
+record.  Some native formats (e.g., basic a.out and basic coff) have no
+way of specifying an addend in the relocation type, so the addend has
+to go in the output data.  This is no big deal since in these formats
+the output data slot will always be big enough for the addend. Complex
+reloc types with addends were invented to solve just this problem.  The
+ERROR_MESSAGE argument is set to an error message if this return
+`bfd_reloc_dangerous'.
+
+2.10.1.8 `bfd_install_relocation'
+.................................
+
+*Synopsis*
+     bfd_reloc_status_type bfd_install_relocation
+        (bfd *abfd,
+         arelent *reloc_entry,
+         void *data, bfd_vma data_start,
+         asection *input_section,
+         char **error_message);
+   *Description*
+This looks remarkably like `bfd_perform_relocation', except it does not
+expect that the section contents have been filled in.  I.e., it's
+suitable for use when creating, rather than applying a relocation.
+
+   For now, this function should be considered reserved for the
+assembler.
+
+\1f
+File: bfd.info,  Node: howto manager,  Prev: typedef arelent,  Up: Relocations
+
+2.10.2 The howto manager
+------------------------
+
+When an application wants to create a relocation, but doesn't know what
+the target machine might call it, it can find out by using this bit of
+code.
+
+2.10.2.1 `bfd_reloc_code_type'
+..............................
+
+*Description*
+The insides of a reloc code.  The idea is that, eventually, there will
+be one enumerator for every type of relocation we ever do.  Pass one of
+these values to `bfd_reloc_type_lookup', and it'll return a howto
+pointer.
+
+   This does mean that the application must determine the correct
+enumerator value; you can't get a howto pointer from a random set of
+attributes.
+
+   Here are the possible values for `enum bfd_reloc_code_real':
+
+ -- : BFD_RELOC_64
+ -- : BFD_RELOC_32
+ -- : BFD_RELOC_26
+ -- : BFD_RELOC_24
+ -- : BFD_RELOC_16
+ -- : BFD_RELOC_14
+ -- : BFD_RELOC_8
+     Basic absolute relocations of N bits.
+
+ -- : BFD_RELOC_64_PCREL
+ -- : BFD_RELOC_32_PCREL
+ -- : BFD_RELOC_24_PCREL
+ -- : BFD_RELOC_16_PCREL
+ -- : BFD_RELOC_12_PCREL
+ -- : BFD_RELOC_8_PCREL
+     PC-relative relocations.  Sometimes these are relative to the
+     address of the relocation itself; sometimes they are relative to
+     the start of the section containing the relocation.  It depends on
+     the specific target.
+
+     The 24-bit relocation is used in some Intel 960 configurations.
+
+ -- : BFD_RELOC_32_SECREL
+     Section relative relocations.  Some targets need this for DWARF2.
+
+ -- : BFD_RELOC_32_GOT_PCREL
+ -- : BFD_RELOC_16_GOT_PCREL
+ -- : BFD_RELOC_8_GOT_PCREL
+ -- : BFD_RELOC_32_GOTOFF
+ -- : BFD_RELOC_16_GOTOFF
+ -- : BFD_RELOC_LO16_GOTOFF
+ -- : BFD_RELOC_HI16_GOTOFF
+ -- : BFD_RELOC_HI16_S_GOTOFF
+ -- : BFD_RELOC_8_GOTOFF
+ -- : BFD_RELOC_64_PLT_PCREL
+ -- : BFD_RELOC_32_PLT_PCREL
+ -- : BFD_RELOC_24_PLT_PCREL
+ -- : BFD_RELOC_16_PLT_PCREL
+ -- : BFD_RELOC_8_PLT_PCREL
+ -- : BFD_RELOC_64_PLTOFF
+ -- : BFD_RELOC_32_PLTOFF
+ -- : BFD_RELOC_16_PLTOFF
+ -- : BFD_RELOC_LO16_PLTOFF
+ -- : BFD_RELOC_HI16_PLTOFF
+ -- : BFD_RELOC_HI16_S_PLTOFF
+ -- : BFD_RELOC_8_PLTOFF
+     For ELF.
+
+ -- : BFD_RELOC_68K_GLOB_DAT
+ -- : BFD_RELOC_68K_JMP_SLOT
+ -- : BFD_RELOC_68K_RELATIVE
+     Relocations used by 68K ELF.
+
+ -- : BFD_RELOC_32_BASEREL
+ -- : BFD_RELOC_16_BASEREL
+ -- : BFD_RELOC_LO16_BASEREL
+ -- : BFD_RELOC_HI16_BASEREL
+ -- : BFD_RELOC_HI16_S_BASEREL
+ -- : BFD_RELOC_8_BASEREL
+ -- : BFD_RELOC_RVA
+     Linkage-table relative.
+
+ -- : BFD_RELOC_8_FFnn
+     Absolute 8-bit relocation, but used to form an address like 0xFFnn.
+
+ -- : BFD_RELOC_32_PCREL_S2
+ -- : BFD_RELOC_16_PCREL_S2
+ -- : BFD_RELOC_23_PCREL_S2
+     These PC-relative relocations are stored as word displacements -
+     i.e., byte displacements shifted right two bits.  The 30-bit word
+     displacement (<<32_PCREL_S2>> - 32 bits, shifted 2) is used on the
+     SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
+     signed 16-bit displacement is used on the MIPS, and the 23-bit
+     displacement is used on the Alpha.
+
+ -- : BFD_RELOC_HI22
+ -- : BFD_RELOC_LO10
+     High 22 bits and low 10 bits of 32-bit value, placed into lower
+     bits of the target word.  These are used on the SPARC.
+
+ -- : BFD_RELOC_GPREL16
+ -- : BFD_RELOC_GPREL32
+     For systems that allocate a Global Pointer register, these are
+     displacements off that register.  These relocation types are
+     handled specially, because the value the register will have is
+     decided relatively late.
+
+ -- : BFD_RELOC_I960_CALLJ
+     Reloc types used for i960/b.out.
+
+ -- : BFD_RELOC_NONE
+ -- : BFD_RELOC_SPARC_WDISP22
+ -- : BFD_RELOC_SPARC22
+ -- : BFD_RELOC_SPARC13
+ -- : BFD_RELOC_SPARC_GOT10
+ -- : BFD_RELOC_SPARC_GOT13
+ -- : BFD_RELOC_SPARC_GOT22
+ -- : BFD_RELOC_SPARC_PC10
+ -- : BFD_RELOC_SPARC_PC22
+ -- : BFD_RELOC_SPARC_WPLT30
+ -- : BFD_RELOC_SPARC_COPY
+ -- : BFD_RELOC_SPARC_GLOB_DAT
+ -- : BFD_RELOC_SPARC_JMP_SLOT
+ -- : BFD_RELOC_SPARC_RELATIVE
+ -- : BFD_RELOC_SPARC_UA16
+ -- : BFD_RELOC_SPARC_UA32
+ -- : BFD_RELOC_SPARC_UA64
+     SPARC ELF relocations.  There is probably some overlap with other
+     relocation types already defined.
+
+ -- : BFD_RELOC_SPARC_BASE13
+ -- : BFD_RELOC_SPARC_BASE22
+     I think these are specific to SPARC a.out (e.g., Sun 4).
+
+ -- : BFD_RELOC_SPARC_64
+ -- : BFD_RELOC_SPARC_10
+ -- : BFD_RELOC_SPARC_11
+ -- : BFD_RELOC_SPARC_OLO10
+ -- : BFD_RELOC_SPARC_HH22
+ -- : BFD_RELOC_SPARC_HM10
+ -- : BFD_RELOC_SPARC_LM22
+ -- : BFD_RELOC_SPARC_PC_HH22
+ -- : BFD_RELOC_SPARC_PC_HM10
+ -- : BFD_RELOC_SPARC_PC_LM22
+ -- : BFD_RELOC_SPARC_WDISP16
+ -- : BFD_RELOC_SPARC_WDISP19
+ -- : BFD_RELOC_SPARC_7
+ -- : BFD_RELOC_SPARC_6
+ -- : BFD_RELOC_SPARC_5
+ -- : BFD_RELOC_SPARC_DISP64
+ -- : BFD_RELOC_SPARC_PLT32
+ -- : BFD_RELOC_SPARC_PLT64
+ -- : BFD_RELOC_SPARC_HIX22
+ -- : BFD_RELOC_SPARC_LOX10
+ -- : BFD_RELOC_SPARC_H44
+ -- : BFD_RELOC_SPARC_M44
+ -- : BFD_RELOC_SPARC_L44
+ -- : BFD_RELOC_SPARC_REGISTER
+     SPARC64 relocations
+
+ -- : BFD_RELOC_SPARC_REV32
+     SPARC little endian relocation
+
+ -- : BFD_RELOC_SPARC_TLS_GD_HI22
+ -- : BFD_RELOC_SPARC_TLS_GD_LO10
+ -- : BFD_RELOC_SPARC_TLS_GD_ADD
+ -- : BFD_RELOC_SPARC_TLS_GD_CALL
+ -- : BFD_RELOC_SPARC_TLS_LDM_HI22
+ -- : BFD_RELOC_SPARC_TLS_LDM_LO10
+ -- : BFD_RELOC_SPARC_TLS_LDM_ADD
+ -- : BFD_RELOC_SPARC_TLS_LDM_CALL
+ -- : BFD_RELOC_SPARC_TLS_LDO_HIX22
+ -- : BFD_RELOC_SPARC_TLS_LDO_LOX10
+ -- : BFD_RELOC_SPARC_TLS_LDO_ADD
+ -- : BFD_RELOC_SPARC_TLS_IE_HI22
+ -- : BFD_RELOC_SPARC_TLS_IE_LO10
+ -- : BFD_RELOC_SPARC_TLS_IE_LD
+ -- : BFD_RELOC_SPARC_TLS_IE_LDX
+ -- : BFD_RELOC_SPARC_TLS_IE_ADD
+ -- : BFD_RELOC_SPARC_TLS_LE_HIX22
+ -- : BFD_RELOC_SPARC_TLS_LE_LOX10
+ -- : BFD_RELOC_SPARC_TLS_DTPMOD32
+ -- : BFD_RELOC_SPARC_TLS_DTPMOD64
+ -- : BFD_RELOC_SPARC_TLS_DTPOFF32
+ -- : BFD_RELOC_SPARC_TLS_DTPOFF64
+ -- : BFD_RELOC_SPARC_TLS_TPOFF32
+ -- : BFD_RELOC_SPARC_TLS_TPOFF64
+     SPARC TLS relocations
+
+ -- : BFD_RELOC_SPU_IMM7
+ -- : BFD_RELOC_SPU_IMM8
+ -- : BFD_RELOC_SPU_IMM10
+ -- : BFD_RELOC_SPU_IMM10W
+ -- : BFD_RELOC_SPU_IMM16
+ -- : BFD_RELOC_SPU_IMM16W
+ -- : BFD_RELOC_SPU_IMM18
+ -- : BFD_RELOC_SPU_PCREL9a
+ -- : BFD_RELOC_SPU_PCREL9b
+ -- : BFD_RELOC_SPU_PCREL16
+ -- : BFD_RELOC_SPU_LO16
+ -- : BFD_RELOC_SPU_HI16
+     SPU Relocations.
+
+ -- : BFD_RELOC_ALPHA_GPDISP_HI16
+     Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
+     "addend" in some special way.  For GPDISP_HI16 ("gpdisp")
+     relocations, the symbol is ignored when writing; when reading, it
+     will be the absolute section symbol.  The addend is the
+     displacement in bytes of the "lda" instruction from the "ldah"
+     instruction (which is at the address of this reloc).
+
+ -- : BFD_RELOC_ALPHA_GPDISP_LO16
+     For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
+     with GPDISP_HI16 relocs.  The addend is ignored when writing the
+     relocations out, and is filled in with the file's GP value on
+     reading, for convenience.
+
+ -- : BFD_RELOC_ALPHA_GPDISP
+     The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
+     relocation except that there is no accompanying GPDISP_LO16
+     relocation.
+
+ -- : BFD_RELOC_ALPHA_LITERAL
+ -- : BFD_RELOC_ALPHA_ELF_LITERAL
+ -- : BFD_RELOC_ALPHA_LITUSE
+     The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
+     the assembler turns it into a LDQ instruction to load the address
+     of the symbol, and then fills in a register in the real
+     instruction.
+
+     The LITERAL reloc, at the LDQ instruction, refers to the .lita
+     section symbol.  The addend is ignored when writing, but is filled
+     in with the file's GP value on reading, for convenience, as with
+     the GPDISP_LO16 reloc.
+
+     The ELF_LITERAL reloc is somewhere between 16_GOTOFF and
+     GPDISP_LO16.  It should refer to the symbol to be referenced, as
+     with 16_GOTOFF, but it generates output not based on the position
+     within the .got section, but relative to the GP value chosen for
+     the file during the final link stage.
+
+     The LITUSE reloc, on the instruction using the loaded address,
+     gives information to the linker that it might be able to use to
+     optimize away some literal section references.  The symbol is
+     ignored (read as the absolute section symbol), and the "addend"
+     indicates the type of instruction using the register: 1 - "memory"
+     fmt insn 2 - byte-manipulation (byte offset reg) 3 - jsr (target
+     of branch)
+
+ -- : BFD_RELOC_ALPHA_HINT
+     The HINT relocation indicates a value that should be filled into
+     the "hint" field of a jmp/jsr/ret instruction, for possible branch-
+     prediction logic which may be provided on some processors.
+
+ -- : BFD_RELOC_ALPHA_LINKAGE
+     The LINKAGE relocation outputs a linkage pair in the object file,
+     which is filled by the linker.
+
+ -- : BFD_RELOC_ALPHA_CODEADDR
+     The CODEADDR relocation outputs a STO_CA in the object file, which
+     is filled by the linker.
+
+ -- : BFD_RELOC_ALPHA_GPREL_HI16
+ -- : BFD_RELOC_ALPHA_GPREL_LO16
+     The GPREL_HI/LO relocations together form a 32-bit offset from the
+     GP register.
+
+ -- : BFD_RELOC_ALPHA_BRSGP
+     Like BFD_RELOC_23_PCREL_S2, except that the source and target must
+     share a common GP, and the target address is adjusted for
+     STO_ALPHA_STD_GPLOAD.
+
+ -- : BFD_RELOC_ALPHA_TLSGD
+ -- : BFD_RELOC_ALPHA_TLSLDM
+ -- : BFD_RELOC_ALPHA_DTPMOD64
+ -- : BFD_RELOC_ALPHA_GOTDTPREL16
+ -- : BFD_RELOC_ALPHA_DTPREL64
+ -- : BFD_RELOC_ALPHA_DTPREL_HI16
+ -- : BFD_RELOC_ALPHA_DTPREL_LO16
+ -- : BFD_RELOC_ALPHA_DTPREL16
+ -- : BFD_RELOC_ALPHA_GOTTPREL16
+ -- : BFD_RELOC_ALPHA_TPREL64
+ -- : BFD_RELOC_ALPHA_TPREL_HI16
+ -- : BFD_RELOC_ALPHA_TPREL_LO16
+ -- : BFD_RELOC_ALPHA_TPREL16
+     Alpha thread-local storage relocations.
+
+ -- : BFD_RELOC_MIPS_JMP
+     Bits 27..2 of the relocation address shifted right 2 bits; simple
+     reloc otherwise.
+
+ -- : BFD_RELOC_MIPS16_JMP
+     The MIPS16 jump instruction.
+
+ -- : BFD_RELOC_MIPS16_GPREL
+     MIPS16 GP relative reloc.
+
+ -- : BFD_RELOC_HI16
+     High 16 bits of 32-bit value; simple reloc.
+
+ -- : BFD_RELOC_HI16_S
+     High 16 bits of 32-bit value but the low 16 bits will be sign
+     extended and added to form the final result.  If the low 16 bits
+     form a negative number, we need to add one to the high value to
+     compensate for the borrow when the low bits are added.
+
+ -- : BFD_RELOC_LO16
+     Low 16 bits.
+
+ -- : BFD_RELOC_HI16_PCREL
+     High 16 bits of 32-bit pc-relative value
+
+ -- : BFD_RELOC_HI16_S_PCREL
+     High 16 bits of 32-bit pc-relative value, adjusted
+
+ -- : BFD_RELOC_LO16_PCREL
+     Low 16 bits of pc-relative value
+
+ -- : BFD_RELOC_MIPS16_HI16
+     MIPS16 high 16 bits of 32-bit value.
+
+ -- : BFD_RELOC_MIPS16_HI16_S
+     MIPS16 high 16 bits of 32-bit value but the low 16 bits will be
+     sign extended and added to form the final result.  If the low 16
+     bits form a negative number, we need to add one to the high value
+     to compensate for the borrow when the low bits are added.
+
+ -- : BFD_RELOC_MIPS16_LO16
+     MIPS16 low 16 bits.
+
+ -- : BFD_RELOC_MIPS_LITERAL
+     Relocation against a MIPS literal section.
+
+ -- : BFD_RELOC_MIPS_GOT16
+ -- : BFD_RELOC_MIPS_CALL16
+ -- : BFD_RELOC_MIPS_GOT_HI16
+ -- : BFD_RELOC_MIPS_GOT_LO16
+ -- : BFD_RELOC_MIPS_CALL_HI16
+ -- : BFD_RELOC_MIPS_CALL_LO16
+ -- : BFD_RELOC_MIPS_SUB
+ -- : BFD_RELOC_MIPS_GOT_PAGE
+ -- : BFD_RELOC_MIPS_GOT_OFST
+ -- : BFD_RELOC_MIPS_GOT_DISP
+ -- : BFD_RELOC_MIPS_SHIFT5
+ -- : BFD_RELOC_MIPS_SHIFT6
+ -- : BFD_RELOC_MIPS_INSERT_A
+ -- : BFD_RELOC_MIPS_INSERT_B
+ -- : BFD_RELOC_MIPS_DELETE
+ -- : BFD_RELOC_MIPS_HIGHEST
+ -- : BFD_RELOC_MIPS_HIGHER
+ -- : BFD_RELOC_MIPS_SCN_DISP
+ -- : BFD_RELOC_MIPS_REL16
+ -- : BFD_RELOC_MIPS_RELGOT
+ -- : BFD_RELOC_MIPS_JALR
+ -- : BFD_RELOC_MIPS_TLS_DTPMOD32
+ -- : BFD_RELOC_MIPS_TLS_DTPREL32
+ -- : BFD_RELOC_MIPS_TLS_DTPMOD64
+ -- : BFD_RELOC_MIPS_TLS_DTPREL64
+ -- : BFD_RELOC_MIPS_TLS_GD
+ -- : BFD_RELOC_MIPS_TLS_LDM
+ -- : BFD_RELOC_MIPS_TLS_DTPREL_HI16
+ -- : BFD_RELOC_MIPS_TLS_DTPREL_LO16
+ -- : BFD_RELOC_MIPS_TLS_GOTTPREL
+ -- : BFD_RELOC_MIPS_TLS_TPREL32
+ -- : BFD_RELOC_MIPS_TLS_TPREL64
+ -- : BFD_RELOC_MIPS_TLS_TPREL_HI16
+ -- : BFD_RELOC_MIPS_TLS_TPREL_LO16
+     MIPS ELF relocations.
+
+ -- : BFD_RELOC_MIPS_COPY
+ -- : BFD_RELOC_MIPS_JUMP_SLOT
+     MIPS ELF relocations (VxWorks extensions).
+
+ -- : BFD_RELOC_FRV_LABEL16
+ -- : BFD_RELOC_FRV_LABEL24
+ -- : BFD_RELOC_FRV_LO16
+ -- : BFD_RELOC_FRV_HI16
+ -- : BFD_RELOC_FRV_GPREL12
+ -- : BFD_RELOC_FRV_GPRELU12
+ -- : BFD_RELOC_FRV_GPREL32
+ -- : BFD_RELOC_FRV_GPRELHI
+ -- : BFD_RELOC_FRV_GPRELLO
+ -- : BFD_RELOC_FRV_GOT12
+ -- : BFD_RELOC_FRV_GOTHI
+ -- : BFD_RELOC_FRV_GOTLO
+ -- : BFD_RELOC_FRV_FUNCDESC
+ -- : BFD_RELOC_FRV_FUNCDESC_GOT12
+ -- : BFD_RELOC_FRV_FUNCDESC_GOTHI
+ -- : BFD_RELOC_FRV_FUNCDESC_GOTLO
+ -- : BFD_RELOC_FRV_FUNCDESC_VALUE
+ -- : BFD_RELOC_FRV_FUNCDESC_GOTOFF12
+ -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
+ -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
+ -- : BFD_RELOC_FRV_GOTOFF12
+ -- : BFD_RELOC_FRV_GOTOFFHI
+ -- : BFD_RELOC_FRV_GOTOFFLO
+ -- : BFD_RELOC_FRV_GETTLSOFF
+ -- : BFD_RELOC_FRV_TLSDESC_VALUE
+ -- : BFD_RELOC_FRV_GOTTLSDESC12
+ -- : BFD_RELOC_FRV_GOTTLSDESCHI
+ -- : BFD_RELOC_FRV_GOTTLSDESCLO
+ -- : BFD_RELOC_FRV_TLSMOFF12
+ -- : BFD_RELOC_FRV_TLSMOFFHI
+ -- : BFD_RELOC_FRV_TLSMOFFLO
+ -- : BFD_RELOC_FRV_GOTTLSOFF12
+ -- : BFD_RELOC_FRV_GOTTLSOFFHI
+ -- : BFD_RELOC_FRV_GOTTLSOFFLO
+ -- : BFD_RELOC_FRV_TLSOFF
+ -- : BFD_RELOC_FRV_TLSDESC_RELAX
+ -- : BFD_RELOC_FRV_GETTLSOFF_RELAX
+ -- : BFD_RELOC_FRV_TLSOFF_RELAX
+ -- : BFD_RELOC_FRV_TLSMOFF
+     Fujitsu Frv Relocations.
+
+ -- : BFD_RELOC_MN10300_GOTOFF24
+     This is a 24bit GOT-relative reloc for the mn10300.
+
+ -- : BFD_RELOC_MN10300_GOT32
+     This is a 32bit GOT-relative reloc for the mn10300, offset by two
+     bytes in the instruction.
+
+ -- : BFD_RELOC_MN10300_GOT24
+     This is a 24bit GOT-relative reloc for the mn10300, offset by two
+     bytes in the instruction.
+
+ -- : BFD_RELOC_MN10300_GOT16
+     This is a 16bit GOT-relative reloc for the mn10300, offset by two
+     bytes in the instruction.
+
+ -- : BFD_RELOC_MN10300_COPY
+     Copy symbol at runtime.
+
+ -- : BFD_RELOC_MN10300_GLOB_DAT
+     Create GOT entry.
+
+ -- : BFD_RELOC_MN10300_JMP_SLOT
+     Create PLT entry.
+
+ -- : BFD_RELOC_MN10300_RELATIVE
+     Adjust by program base.
+
+ -- : BFD_RELOC_386_GOT32
+ -- : BFD_RELOC_386_PLT32
+ -- : BFD_RELOC_386_COPY
+ -- : BFD_RELOC_386_GLOB_DAT
+ -- : BFD_RELOC_386_JUMP_SLOT
+ -- : BFD_RELOC_386_RELATIVE
+ -- : BFD_RELOC_386_GOTOFF
+ -- : BFD_RELOC_386_GOTPC
+ -- : BFD_RELOC_386_TLS_TPOFF
+ -- : BFD_RELOC_386_TLS_IE
+ -- : BFD_RELOC_386_TLS_GOTIE
+ -- : BFD_RELOC_386_TLS_LE
+ -- : BFD_RELOC_386_TLS_GD
+ -- : BFD_RELOC_386_TLS_LDM
+ -- : BFD_RELOC_386_TLS_LDO_32
+ -- : BFD_RELOC_386_TLS_IE_32
+ -- : BFD_RELOC_386_TLS_LE_32
+ -- : BFD_RELOC_386_TLS_DTPMOD32
+ -- : BFD_RELOC_386_TLS_DTPOFF32
+ -- : BFD_RELOC_386_TLS_TPOFF32
+ -- : BFD_RELOC_386_TLS_GOTDESC
+ -- : BFD_RELOC_386_TLS_DESC_CALL
+ -- : BFD_RELOC_386_TLS_DESC
+     i386/elf relocations
+
+ -- : BFD_RELOC_X86_64_GOT32
+ -- : BFD_RELOC_X86_64_PLT32
+ -- : BFD_RELOC_X86_64_COPY
+ -- : BFD_RELOC_X86_64_GLOB_DAT
+ -- : BFD_RELOC_X86_64_JUMP_SLOT
+ -- : BFD_RELOC_X86_64_RELATIVE
+ -- : BFD_RELOC_X86_64_GOTPCREL
+ -- : BFD_RELOC_X86_64_32S
+ -- : BFD_RELOC_X86_64_DTPMOD64
+ -- : BFD_RELOC_X86_64_DTPOFF64
+ -- : BFD_RELOC_X86_64_TPOFF64
+ -- : BFD_RELOC_X86_64_TLSGD
+ -- : BFD_RELOC_X86_64_TLSLD
+ -- : BFD_RELOC_X86_64_DTPOFF32
+ -- : BFD_RELOC_X86_64_GOTTPOFF
+ -- : BFD_RELOC_X86_64_TPOFF32
+ -- : BFD_RELOC_X86_64_GOTOFF64
+ -- : BFD_RELOC_X86_64_GOTPC32
+ -- : BFD_RELOC_X86_64_GOT64
+ -- : BFD_RELOC_X86_64_GOTPCREL64
+ -- : BFD_RELOC_X86_64_GOTPC64
+ -- : BFD_RELOC_X86_64_GOTPLT64
+ -- : BFD_RELOC_X86_64_PLTOFF64
+ -- : BFD_RELOC_X86_64_GOTPC32_TLSDESC
+ -- : BFD_RELOC_X86_64_TLSDESC_CALL
+ -- : BFD_RELOC_X86_64_TLSDESC
+     x86-64/elf relocations
+
+ -- : BFD_RELOC_NS32K_IMM_8
+ -- : BFD_RELOC_NS32K_IMM_16
+ -- : BFD_RELOC_NS32K_IMM_32
+ -- : BFD_RELOC_NS32K_IMM_8_PCREL
+ -- : BFD_RELOC_NS32K_IMM_16_PCREL
+ -- : BFD_RELOC_NS32K_IMM_32_PCREL
+ -- : BFD_RELOC_NS32K_DISP_8
+ -- : BFD_RELOC_NS32K_DISP_16
+ -- : BFD_RELOC_NS32K_DISP_32
+ -- : BFD_RELOC_NS32K_DISP_8_PCREL
+ -- : BFD_RELOC_NS32K_DISP_16_PCREL
+ -- : BFD_RELOC_NS32K_DISP_32_PCREL
+     ns32k relocations
+
+ -- : BFD_RELOC_PDP11_DISP_8_PCREL
+ -- : BFD_RELOC_PDP11_DISP_6_PCREL
+     PDP11 relocations
+
+ -- : BFD_RELOC_PJ_CODE_HI16
+ -- : BFD_RELOC_PJ_CODE_LO16
+ -- : BFD_RELOC_PJ_CODE_DIR16
+ -- : BFD_RELOC_PJ_CODE_DIR32
+ -- : BFD_RELOC_PJ_CODE_REL16
+ -- : BFD_RELOC_PJ_CODE_REL32
+     Picojava relocs.  Not all of these appear in object files.
+
+ -- : BFD_RELOC_PPC_B26
+ -- : BFD_RELOC_PPC_BA26
+ -- : BFD_RELOC_PPC_TOC16
+ -- : BFD_RELOC_PPC_B16
+ -- : BFD_RELOC_PPC_B16_BRTAKEN
+ -- : BFD_RELOC_PPC_B16_BRNTAKEN
+ -- : BFD_RELOC_PPC_BA16
+ -- : BFD_RELOC_PPC_BA16_BRTAKEN
+ -- : BFD_RELOC_PPC_BA16_BRNTAKEN
+ -- : BFD_RELOC_PPC_COPY
+ -- : BFD_RELOC_PPC_GLOB_DAT
+ -- : BFD_RELOC_PPC_JMP_SLOT
+ -- : BFD_RELOC_PPC_RELATIVE
+ -- : BFD_RELOC_PPC_LOCAL24PC
+ -- : BFD_RELOC_PPC_EMB_NADDR32
+ -- : BFD_RELOC_PPC_EMB_NADDR16
+ -- : BFD_RELOC_PPC_EMB_NADDR16_LO
+ -- : BFD_RELOC_PPC_EMB_NADDR16_HI
+ -- : BFD_RELOC_PPC_EMB_NADDR16_HA
+ -- : BFD_RELOC_PPC_EMB_SDAI16
+ -- : BFD_RELOC_PPC_EMB_SDA2I16
+ -- : BFD_RELOC_PPC_EMB_SDA2REL
+ -- : BFD_RELOC_PPC_EMB_SDA21
+ -- : BFD_RELOC_PPC_EMB_MRKREF
+ -- : BFD_RELOC_PPC_EMB_RELSEC16
+ -- : BFD_RELOC_PPC_EMB_RELST_LO
+ -- : BFD_RELOC_PPC_EMB_RELST_HI
+ -- : BFD_RELOC_PPC_EMB_RELST_HA
+ -- : BFD_RELOC_PPC_EMB_BIT_FLD
+ -- : BFD_RELOC_PPC_EMB_RELSDA
+ -- : BFD_RELOC_PPC64_HIGHER
+ -- : BFD_RELOC_PPC64_HIGHER_S
+ -- : BFD_RELOC_PPC64_HIGHEST
+ -- : BFD_RELOC_PPC64_HIGHEST_S
+ -- : BFD_RELOC_PPC64_TOC16_LO
+ -- : BFD_RELOC_PPC64_TOC16_HI
+ -- : BFD_RELOC_PPC64_TOC16_HA
+ -- : BFD_RELOC_PPC64_TOC
+ -- : BFD_RELOC_PPC64_PLTGOT16
+ -- : BFD_RELOC_PPC64_PLTGOT16_LO
+ -- : BFD_RELOC_PPC64_PLTGOT16_HI
+ -- : BFD_RELOC_PPC64_PLTGOT16_HA
+ -- : BFD_RELOC_PPC64_ADDR16_DS
+ -- : BFD_RELOC_PPC64_ADDR16_LO_DS
+ -- : BFD_RELOC_PPC64_GOT16_DS
+ -- : BFD_RELOC_PPC64_GOT16_LO_DS
+ -- : BFD_RELOC_PPC64_PLT16_LO_DS
+ -- : BFD_RELOC_PPC64_SECTOFF_DS
+ -- : BFD_RELOC_PPC64_SECTOFF_LO_DS
+ -- : BFD_RELOC_PPC64_TOC16_DS
+ -- : BFD_RELOC_PPC64_TOC16_LO_DS
+ -- : BFD_RELOC_PPC64_PLTGOT16_DS
+ -- : BFD_RELOC_PPC64_PLTGOT16_LO_DS
+     Power(rs6000) and PowerPC relocations.
+
+ -- : BFD_RELOC_PPC_TLS
+ -- : BFD_RELOC_PPC_DTPMOD
+ -- : BFD_RELOC_PPC_TPREL16
+ -- : BFD_RELOC_PPC_TPREL16_LO
+ -- : BFD_RELOC_PPC_TPREL16_HI
+ -- : BFD_RELOC_PPC_TPREL16_HA
+ -- : BFD_RELOC_PPC_TPREL
+ -- : BFD_RELOC_PPC_DTPREL16
+ -- : BFD_RELOC_PPC_DTPREL16_LO
+ -- : BFD_RELOC_PPC_DTPREL16_HI
+ -- : BFD_RELOC_PPC_DTPREL16_HA
+ -- : BFD_RELOC_PPC_DTPREL
+ -- : BFD_RELOC_PPC_GOT_TLSGD16
+ -- : BFD_RELOC_PPC_GOT_TLSGD16_LO
+ -- : BFD_RELOC_PPC_GOT_TLSGD16_HI
+ -- : BFD_RELOC_PPC_GOT_TLSGD16_HA
+ -- : BFD_RELOC_PPC_GOT_TLSLD16
+ -- : BFD_RELOC_PPC_GOT_TLSLD16_LO
+ -- : BFD_RELOC_PPC_GOT_TLSLD16_HI
+ -- : BFD_RELOC_PPC_GOT_TLSLD16_HA
+ -- : BFD_RELOC_PPC_GOT_TPREL16
+ -- : BFD_RELOC_PPC_GOT_TPREL16_LO
+ -- : BFD_RELOC_PPC_GOT_TPREL16_HI
+ -- : BFD_RELOC_PPC_GOT_TPREL16_HA
+ -- : BFD_RELOC_PPC_GOT_DTPREL16
+ -- : BFD_RELOC_PPC_GOT_DTPREL16_LO
+ -- : BFD_RELOC_PPC_GOT_DTPREL16_HI
+ -- : BFD_RELOC_PPC_GOT_DTPREL16_HA
+ -- : BFD_RELOC_PPC64_TPREL16_DS
+ -- : BFD_RELOC_PPC64_TPREL16_LO_DS
+ -- : BFD_RELOC_PPC64_TPREL16_HIGHER
+ -- : BFD_RELOC_PPC64_TPREL16_HIGHERA
+ -- : BFD_RELOC_PPC64_TPREL16_HIGHEST
+ -- : BFD_RELOC_PPC64_TPREL16_HIGHESTA
+ -- : BFD_RELOC_PPC64_DTPREL16_DS
+ -- : BFD_RELOC_PPC64_DTPREL16_LO_DS
+ -- : BFD_RELOC_PPC64_DTPREL16_HIGHER
+ -- : BFD_RELOC_PPC64_DTPREL16_HIGHERA
+ -- : BFD_RELOC_PPC64_DTPREL16_HIGHEST
+ -- : BFD_RELOC_PPC64_DTPREL16_HIGHESTA
+     PowerPC and PowerPC64 thread-local storage relocations.
+
+ -- : BFD_RELOC_I370_D12
+     IBM 370/390 relocations
+
+ -- : BFD_RELOC_CTOR
+     The type of reloc used to build a constructor table - at the moment
+     probably a 32 bit wide absolute relocation, but the target can
+     choose.  It generally does map to one of the other relocation
+     types.
+
+ -- : BFD_RELOC_ARM_PCREL_BRANCH
+     ARM 26 bit pc-relative branch.  The lowest two bits must be zero
+     and are not stored in the instruction.
+
+ -- : BFD_RELOC_ARM_PCREL_BLX
+     ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
+     not stored in the instruction.  The 2nd lowest bit comes from a 1
+     bit field in the instruction.
+
+ -- : BFD_RELOC_THUMB_PCREL_BLX
+     Thumb 22 bit pc-relative branch.  The lowest bit must be zero and
+     is not stored in the instruction.  The 2nd lowest bit comes from a
+     1 bit field in the instruction.
+
+ -- : BFD_RELOC_ARM_PCREL_CALL
+     ARM 26-bit pc-relative branch for an unconditional BL or BLX
+     instruction.
+
+ -- : BFD_RELOC_ARM_PCREL_JUMP
+     ARM 26-bit pc-relative branch for B or conditional BL instruction.
+
+ -- : BFD_RELOC_THUMB_PCREL_BRANCH7
+ -- : BFD_RELOC_THUMB_PCREL_BRANCH9
+ -- : BFD_RELOC_THUMB_PCREL_BRANCH12
+ -- : BFD_RELOC_THUMB_PCREL_BRANCH20
+ -- : BFD_RELOC_THUMB_PCREL_BRANCH23
+ -- : BFD_RELOC_THUMB_PCREL_BRANCH25
+     Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.  The
+     lowest bit must be zero and is not stored in the instruction.
+     Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
+     "nn" one smaller in all cases.  Note further that BRANCH23
+     corresponds to R_ARM_THM_CALL.
+
+ -- : BFD_RELOC_ARM_OFFSET_IMM
+     12-bit immediate offset, used in ARM-format ldr and str
+     instructions.
+
+ -- : BFD_RELOC_ARM_THUMB_OFFSET
+     5-bit immediate offset, used in Thumb-format ldr and str
+     instructions.
+
+ -- : BFD_RELOC_ARM_TARGET1
+     Pc-relative or absolute relocation depending on target.  Used for
+     entries in .init_array sections.
+
+ -- : BFD_RELOC_ARM_ROSEGREL32
+     Read-only segment base relative address.
+
+ -- : BFD_RELOC_ARM_SBREL32
+     Data segment base relative address.
+
+ -- : BFD_RELOC_ARM_TARGET2
+     This reloc is used for references to RTTI data from exception
+     handling tables.  The actual definition depends on the target.  It
+     may be a pc-relative or some form of GOT-indirect relocation.
+
+ -- : BFD_RELOC_ARM_PREL31
+     31-bit PC relative address.
+
+ -- : BFD_RELOC_ARM_MOVW
+ -- : BFD_RELOC_ARM_MOVT
+ -- : BFD_RELOC_ARM_MOVW_PCREL
+ -- : BFD_RELOC_ARM_MOVT_PCREL
+ -- : BFD_RELOC_ARM_THUMB_MOVW
+ -- : BFD_RELOC_ARM_THUMB_MOVT
+ -- : BFD_RELOC_ARM_THUMB_MOVW_PCREL
+ -- : BFD_RELOC_ARM_THUMB_MOVT_PCREL
+     Low and High halfword relocations for MOVW and MOVT instructions.
+
+ -- : BFD_RELOC_ARM_JUMP_SLOT
+ -- : BFD_RELOC_ARM_GLOB_DAT
+ -- : BFD_RELOC_ARM_GOT32
+ -- : BFD_RELOC_ARM_PLT32
+ -- : BFD_RELOC_ARM_RELATIVE
+ -- : BFD_RELOC_ARM_GOTOFF
+ -- : BFD_RELOC_ARM_GOTPC
+     Relocations for setting up GOTs and PLTs for shared libraries.
+
+ -- : BFD_RELOC_ARM_TLS_GD32
+ -- : BFD_RELOC_ARM_TLS_LDO32
+ -- : BFD_RELOC_ARM_TLS_LDM32
+ -- : BFD_RELOC_ARM_TLS_DTPOFF32
+ -- : BFD_RELOC_ARM_TLS_DTPMOD32
+ -- : BFD_RELOC_ARM_TLS_TPOFF32
+ -- : BFD_RELOC_ARM_TLS_IE32
+ -- : BFD_RELOC_ARM_TLS_LE32
+     ARM thread-local storage relocations.
+
+ -- : BFD_RELOC_ARM_ALU_PC_G0_NC
+ -- : BFD_RELOC_ARM_ALU_PC_G0
+ -- : BFD_RELOC_ARM_ALU_PC_G1_NC
+ -- : BFD_RELOC_ARM_ALU_PC_G1
+ -- : BFD_RELOC_ARM_ALU_PC_G2
+ -- : BFD_RELOC_ARM_LDR_PC_G0
+ -- : BFD_RELOC_ARM_LDR_PC_G1
+ -- : BFD_RELOC_ARM_LDR_PC_G2
+ -- : BFD_RELOC_ARM_LDRS_PC_G0
+ -- : BFD_RELOC_ARM_LDRS_PC_G1
+ -- : BFD_RELOC_ARM_LDRS_PC_G2
+ -- : BFD_RELOC_ARM_LDC_PC_G0
+ -- : BFD_RELOC_ARM_LDC_PC_G1
+ -- : BFD_RELOC_ARM_LDC_PC_G2
+ -- : BFD_RELOC_ARM_ALU_SB_G0_NC
+ -- : BFD_RELOC_ARM_ALU_SB_G0
+ -- : BFD_RELOC_ARM_ALU_SB_G1_NC
+ -- : BFD_RELOC_ARM_ALU_SB_G1
+ -- : BFD_RELOC_ARM_ALU_SB_G2
+ -- : BFD_RELOC_ARM_LDR_SB_G0
+ -- : BFD_RELOC_ARM_LDR_SB_G1
+ -- : BFD_RELOC_ARM_LDR_SB_G2
+ -- : BFD_RELOC_ARM_LDRS_SB_G0
+ -- : BFD_RELOC_ARM_LDRS_SB_G1
+ -- : BFD_RELOC_ARM_LDRS_SB_G2
+ -- : BFD_RELOC_ARM_LDC_SB_G0
+ -- : BFD_RELOC_ARM_LDC_SB_G1
+ -- : BFD_RELOC_ARM_LDC_SB_G2
+     ARM group relocations.
+
+ -- : BFD_RELOC_ARM_IMMEDIATE
+ -- : BFD_RELOC_ARM_ADRL_IMMEDIATE
+ -- : BFD_RELOC_ARM_T32_IMMEDIATE
+ -- : BFD_RELOC_ARM_T32_ADD_IMM
+ -- : BFD_RELOC_ARM_T32_IMM12
+ -- : BFD_RELOC_ARM_T32_ADD_PC12
+ -- : BFD_RELOC_ARM_SHIFT_IMM
+ -- : BFD_RELOC_ARM_SMC
+ -- : BFD_RELOC_ARM_SWI
+ -- : BFD_RELOC_ARM_MULTI
+ -- : BFD_RELOC_ARM_CP_OFF_IMM
+ -- : BFD_RELOC_ARM_CP_OFF_IMM_S2
+ -- : BFD_RELOC_ARM_T32_CP_OFF_IMM
+ -- : BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
+ -- : BFD_RELOC_ARM_ADR_IMM
+ -- : BFD_RELOC_ARM_LDR_IMM
+ -- : BFD_RELOC_ARM_LITERAL
+ -- : BFD_RELOC_ARM_IN_POOL
+ -- : BFD_RELOC_ARM_OFFSET_IMM8
+ -- : BFD_RELOC_ARM_T32_OFFSET_U8
+ -- : BFD_RELOC_ARM_T32_OFFSET_IMM
+ -- : BFD_RELOC_ARM_HWLITERAL
+ -- : BFD_RELOC_ARM_THUMB_ADD
+ -- : BFD_RELOC_ARM_THUMB_IMM
+ -- : BFD_RELOC_ARM_THUMB_SHIFT
+     These relocs are only used within the ARM assembler.  They are not
+     (at present) written to any object files.
+
+ -- : BFD_RELOC_SH_PCDISP8BY2
+ -- : BFD_RELOC_SH_PCDISP12BY2
+ -- : BFD_RELOC_SH_IMM3
+ -- : BFD_RELOC_SH_IMM3U
+ -- : BFD_RELOC_SH_DISP12
+ -- : BFD_RELOC_SH_DISP12BY2
+ -- : BFD_RELOC_SH_DISP12BY4
+ -- : BFD_RELOC_SH_DISP12BY8
+ -- : BFD_RELOC_SH_DISP20
+ -- : BFD_RELOC_SH_DISP20BY8
+ -- : BFD_RELOC_SH_IMM4
+ -- : BFD_RELOC_SH_IMM4BY2
+ -- : BFD_RELOC_SH_IMM4BY4
+ -- : BFD_RELOC_SH_IMM8
+ -- : BFD_RELOC_SH_IMM8BY2
+ -- : BFD_RELOC_SH_IMM8BY4
+ -- : BFD_RELOC_SH_PCRELIMM8BY2
+ -- : BFD_RELOC_SH_PCRELIMM8BY4
+ -- : BFD_RELOC_SH_SWITCH16
+ -- : BFD_RELOC_SH_SWITCH32
+ -- : BFD_RELOC_SH_USES
+ -- : BFD_RELOC_SH_COUNT
+ -- : BFD_RELOC_SH_ALIGN
+ -- : BFD_RELOC_SH_CODE
+ -- : BFD_RELOC_SH_DATA
+ -- : BFD_RELOC_SH_LABEL
+ -- : BFD_RELOC_SH_LOOP_START
+ -- : BFD_RELOC_SH_LOOP_END
+ -- : BFD_RELOC_SH_COPY
+ -- : BFD_RELOC_SH_GLOB_DAT
+ -- : BFD_RELOC_SH_JMP_SLOT
+ -- : BFD_RELOC_SH_RELATIVE
+ -- : BFD_RELOC_SH_GOTPC
+ -- : BFD_RELOC_SH_GOT_LOW16
+ -- : BFD_RELOC_SH_GOT_MEDLOW16
+ -- : BFD_RELOC_SH_GOT_MEDHI16
+ -- : BFD_RELOC_SH_GOT_HI16
+ -- : BFD_RELOC_SH_GOTPLT_LOW16
+ -- : BFD_RELOC_SH_GOTPLT_MEDLOW16
+ -- : BFD_RELOC_SH_GOTPLT_MEDHI16
+ -- : BFD_RELOC_SH_GOTPLT_HI16
+ -- : BFD_RELOC_SH_PLT_LOW16
+ -- : BFD_RELOC_SH_PLT_MEDLOW16
+ -- : BFD_RELOC_SH_PLT_MEDHI16
+ -- : BFD_RELOC_SH_PLT_HI16
+ -- : BFD_RELOC_SH_GOTOFF_LOW16
+ -- : BFD_RELOC_SH_GOTOFF_MEDLOW16
+ -- : BFD_RELOC_SH_GOTOFF_MEDHI16
+ -- : BFD_RELOC_SH_GOTOFF_HI16
+ -- : BFD_RELOC_SH_GOTPC_LOW16
+ -- : BFD_RELOC_SH_GOTPC_MEDLOW16
+ -- : BFD_RELOC_SH_GOTPC_MEDHI16
+ -- : BFD_RELOC_SH_GOTPC_HI16
+ -- : BFD_RELOC_SH_COPY64
+ -- : BFD_RELOC_SH_GLOB_DAT64
+ -- : BFD_RELOC_SH_JMP_SLOT64
+ -- : BFD_RELOC_SH_RELATIVE64
+ -- : BFD_RELOC_SH_GOT10BY4
+ -- : BFD_RELOC_SH_GOT10BY8
+ -- : BFD_RELOC_SH_GOTPLT10BY4
+ -- : BFD_RELOC_SH_GOTPLT10BY8
+ -- : BFD_RELOC_SH_GOTPLT32
+ -- : BFD_RELOC_SH_SHMEDIA_CODE
+ -- : BFD_RELOC_SH_IMMU5
+ -- : BFD_RELOC_SH_IMMS6
+ -- : BFD_RELOC_SH_IMMS6BY32
+ -- : BFD_RELOC_SH_IMMU6
+ -- : BFD_RELOC_SH_IMMS10
+ -- : BFD_RELOC_SH_IMMS10BY2
+ -- : BFD_RELOC_SH_IMMS10BY4
+ -- : BFD_RELOC_SH_IMMS10BY8
+ -- : BFD_RELOC_SH_IMMS16
+ -- : BFD_RELOC_SH_IMMU16
+ -- : BFD_RELOC_SH_IMM_LOW16
+ -- : BFD_RELOC_SH_IMM_LOW16_PCREL
+ -- : BFD_RELOC_SH_IMM_MEDLOW16
+ -- : BFD_RELOC_SH_IMM_MEDLOW16_PCREL
+ -- : BFD_RELOC_SH_IMM_MEDHI16
+ -- : BFD_RELOC_SH_IMM_MEDHI16_PCREL
+ -- : BFD_RELOC_SH_IMM_HI16
+ -- : BFD_RELOC_SH_IMM_HI16_PCREL
+ -- : BFD_RELOC_SH_PT_16
+ -- : BFD_RELOC_SH_TLS_GD_32
+ -- : BFD_RELOC_SH_TLS_LD_32
+ -- : BFD_RELOC_SH_TLS_LDO_32
+ -- : BFD_RELOC_SH_TLS_IE_32
+ -- : BFD_RELOC_SH_TLS_LE_32
+ -- : BFD_RELOC_SH_TLS_DTPMOD32
+ -- : BFD_RELOC_SH_TLS_DTPOFF32
+ -- : BFD_RELOC_SH_TLS_TPOFF32
+     Renesas / SuperH SH relocs.  Not all of these appear in object
+     files.
+
+ -- : BFD_RELOC_ARC_B22_PCREL
+     ARC Cores relocs.  ARC 22 bit pc-relative branch.  The lowest two
+     bits must be zero and are not stored in the instruction.  The high
+     20 bits are installed in bits 26 through 7 of the instruction.
+
+ -- : BFD_RELOC_ARC_B26
+     ARC 26 bit absolute branch.  The lowest two bits must be zero and
+     are not stored in the instruction.  The high 24 bits are installed
+     in bits 23 through 0.
+
+ -- : BFD_RELOC_BFIN_16_IMM
+     ADI Blackfin 16 bit immediate absolute reloc.
+
+ -- : BFD_RELOC_BFIN_16_HIGH
+     ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
+
+ -- : BFD_RELOC_BFIN_4_PCREL
+     ADI Blackfin 'a' part of LSETUP.
+
+ -- : BFD_RELOC_BFIN_5_PCREL
+     ADI Blackfin.
+
+ -- : BFD_RELOC_BFIN_16_LOW
+     ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
+
+ -- : BFD_RELOC_BFIN_10_PCREL
+     ADI Blackfin.
+
+ -- : BFD_RELOC_BFIN_11_PCREL
+     ADI Blackfin 'b' part of LSETUP.
+
+ -- : BFD_RELOC_BFIN_12_PCREL_JUMP
+     ADI Blackfin.
+
+ -- : BFD_RELOC_BFIN_12_PCREL_JUMP_S
+     ADI Blackfin Short jump, pcrel.
+
+ -- : BFD_RELOC_BFIN_24_PCREL_CALL_X
+     ADI Blackfin Call.x not implemented.
+
+ -- : BFD_RELOC_BFIN_24_PCREL_JUMP_L
+     ADI Blackfin Long Jump pcrel.
+
+ -- : BFD_RELOC_BFIN_GOT17M4
+ -- : BFD_RELOC_BFIN_GOTHI
+ -- : BFD_RELOC_BFIN_GOTLO
+ -- : BFD_RELOC_BFIN_FUNCDESC
+ -- : BFD_RELOC_BFIN_FUNCDESC_GOT17M4
+ -- : BFD_RELOC_BFIN_FUNCDESC_GOTHI
+ -- : BFD_RELOC_BFIN_FUNCDESC_GOTLO
+ -- : BFD_RELOC_BFIN_FUNCDESC_VALUE
+ -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
+ -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
+ -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
+ -- : BFD_RELOC_BFIN_GOTOFF17M4
+ -- : BFD_RELOC_BFIN_GOTOFFHI
+ -- : BFD_RELOC_BFIN_GOTOFFLO
+     ADI Blackfin FD-PIC relocations.
+
+ -- : BFD_RELOC_BFIN_GOT
+     ADI Blackfin GOT relocation.
+
+ -- : BFD_RELOC_BFIN_PLTPC
+     ADI Blackfin PLTPC relocation.
+
+ -- : BFD_ARELOC_BFIN_PUSH
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_CONST
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_ADD
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_SUB
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_MULT
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_DIV
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_MOD
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_LSHIFT
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_RSHIFT
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_AND
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_OR
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_XOR
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_LAND
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_LOR
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_LEN
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_NEG
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_COMP
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_PAGE
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_HWPAGE
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_ARELOC_BFIN_ADDR
+     ADI Blackfin arithmetic relocation.
+
+ -- : BFD_RELOC_D10V_10_PCREL_R
+     Mitsubishi D10V relocs.  This is a 10-bit reloc with the right 2
+     bits assumed to be 0.
+
+ -- : BFD_RELOC_D10V_10_PCREL_L
+     Mitsubishi D10V relocs.  This is a 10-bit reloc with the right 2
+     bits assumed to be 0.  This is the same as the previous reloc
+     except it is in the left container, i.e., shifted left 15 bits.
+
+ -- : BFD_RELOC_D10V_18
+     This is an 18-bit reloc with the right 2 bits assumed to be 0.
+
+ -- : BFD_RELOC_D10V_18_PCREL
+     This is an 18-bit reloc with the right 2 bits assumed to be 0.
+
+ -- : BFD_RELOC_D30V_6
+     Mitsubishi D30V relocs.  This is a 6-bit absolute reloc.
+
+ -- : BFD_RELOC_D30V_9_PCREL
+     This is a 6-bit pc-relative reloc with the right 3 bits assumed to
+     be 0.
+
+ -- : BFD_RELOC_D30V_9_PCREL_R
+     This is a 6-bit pc-relative reloc with the right 3 bits assumed to
+     be 0. Same as the previous reloc but on the right side of the
+     container.
+
+ -- : BFD_RELOC_D30V_15
+     This is a 12-bit absolute reloc with the right 3 bitsassumed to be
+     0.
+
+ -- : BFD_RELOC_D30V_15_PCREL
+     This is a 12-bit pc-relative reloc with the right 3 bits assumed
+     to be 0.
+
+ -- : BFD_RELOC_D30V_15_PCREL_R
+     This is a 12-bit pc-relative reloc with the right 3 bits assumed
+     to be 0. Same as the previous reloc but on the right side of the
+     container.
+
+ -- : BFD_RELOC_D30V_21
+     This is an 18-bit absolute reloc with the right 3 bits assumed to
+     be 0.
+
+ -- : BFD_RELOC_D30V_21_PCREL
+     This is an 18-bit pc-relative reloc with the right 3 bits assumed
+     to be 0.
+
+ -- : BFD_RELOC_D30V_21_PCREL_R
+     This is an 18-bit pc-relative reloc with the right 3 bits assumed
+     to be 0. Same as the previous reloc but on the right side of the
+     container.
+
+ -- : BFD_RELOC_D30V_32
+     This is a 32-bit absolute reloc.
+
+ -- : BFD_RELOC_D30V_32_PCREL
+     This is a 32-bit pc-relative reloc.
+
+ -- : BFD_RELOC_DLX_HI16_S
+     DLX relocs
+
+ -- : BFD_RELOC_DLX_LO16
+     DLX relocs
+
+ -- : BFD_RELOC_DLX_JMP26
+     DLX relocs
+
+ -- : BFD_RELOC_M32C_HI8
+ -- : BFD_RELOC_M32C_RL_JUMP
+ -- : BFD_RELOC_M32C_RL_1ADDR
+ -- : BFD_RELOC_M32C_RL_2ADDR
+     Renesas M16C/M32C Relocations.
+
+ -- : BFD_RELOC_M32R_24
+     Renesas M32R (formerly Mitsubishi M32R) relocs.  This is a 24 bit
+     absolute address.
+
+ -- : BFD_RELOC_M32R_10_PCREL
+     This is a 10-bit pc-relative reloc with the right 2 bits assumed
+     to be 0.
+
+ -- : BFD_RELOC_M32R_18_PCREL
+     This is an 18-bit reloc with the right 2 bits assumed to be 0.
+
+ -- : BFD_RELOC_M32R_26_PCREL
+     This is a 26-bit reloc with the right 2 bits assumed to be 0.
+
+ -- : BFD_RELOC_M32R_HI16_ULO
+     This is a 16-bit reloc containing the high 16 bits of an address
+     used when the lower 16 bits are treated as unsigned.
+
+ -- : BFD_RELOC_M32R_HI16_SLO
+     This is a 16-bit reloc containing the high 16 bits of an address
+     used when the lower 16 bits are treated as signed.
+
+ -- : BFD_RELOC_M32R_LO16
+     This is a 16-bit reloc containing the lower 16 bits of an address.
+
+ -- : BFD_RELOC_M32R_SDA16
+     This is a 16-bit reloc containing the small data area offset for
+     use in add3, load, and store instructions.
+
+ -- : BFD_RELOC_M32R_GOT24
+ -- : BFD_RELOC_M32R_26_PLTREL
+ -- : BFD_RELOC_M32R_COPY
+ -- : BFD_RELOC_M32R_GLOB_DAT
+ -- : BFD_RELOC_M32R_JMP_SLOT
+ -- : BFD_RELOC_M32R_RELATIVE
+ -- : BFD_RELOC_M32R_GOTOFF
+ -- : BFD_RELOC_M32R_GOTOFF_HI_ULO
+ -- : BFD_RELOC_M32R_GOTOFF_HI_SLO
+ -- : BFD_RELOC_M32R_GOTOFF_LO
+ -- : BFD_RELOC_M32R_GOTPC24
+ -- : BFD_RELOC_M32R_GOT16_HI_ULO
+ -- : BFD_RELOC_M32R_GOT16_HI_SLO
+ -- : BFD_RELOC_M32R_GOT16_LO
+ -- : BFD_RELOC_M32R_GOTPC_HI_ULO
+ -- : BFD_RELOC_M32R_GOTPC_HI_SLO
+ -- : BFD_RELOC_M32R_GOTPC_LO
+     For PIC.
+
+ -- : BFD_RELOC_V850_9_PCREL
+     This is a 9-bit reloc
+
+ -- : BFD_RELOC_V850_22_PCREL
+     This is a 22-bit reloc
+
+ -- : BFD_RELOC_V850_SDA_16_16_OFFSET
+     This is a 16 bit offset from the short data area pointer.
+
+ -- : BFD_RELOC_V850_SDA_15_16_OFFSET
+     This is a 16 bit offset (of which only 15 bits are used) from the
+     short data area pointer.
+
+ -- : BFD_RELOC_V850_ZDA_16_16_OFFSET
+     This is a 16 bit offset from the zero data area pointer.
+
+ -- : BFD_RELOC_V850_ZDA_15_16_OFFSET
+     This is a 16 bit offset (of which only 15 bits are used) from the
+     zero data area pointer.
+
+ -- : BFD_RELOC_V850_TDA_6_8_OFFSET
+     This is an 8 bit offset (of which only 6 bits are used) from the
+     tiny data area pointer.
+
+ -- : BFD_RELOC_V850_TDA_7_8_OFFSET
+     This is an 8bit offset (of which only 7 bits are used) from the
+     tiny data area pointer.
+
+ -- : BFD_RELOC_V850_TDA_7_7_OFFSET
+     This is a 7 bit offset from the tiny data area pointer.
+
+ -- : BFD_RELOC_V850_TDA_16_16_OFFSET
+     This is a 16 bit offset from the tiny data area pointer.
+
+ -- : BFD_RELOC_V850_TDA_4_5_OFFSET
+     This is a 5 bit offset (of which only 4 bits are used) from the
+     tiny data area pointer.
+
+ -- : BFD_RELOC_V850_TDA_4_4_OFFSET
+     This is a 4 bit offset from the tiny data area pointer.
+
+ -- : BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
+     This is a 16 bit offset from the short data area pointer, with the
+     bits placed non-contiguously in the instruction.
+
+ -- : BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
+     This is a 16 bit offset from the zero data area pointer, with the
+     bits placed non-contiguously in the instruction.
+
+ -- : BFD_RELOC_V850_CALLT_6_7_OFFSET
+     This is a 6 bit offset from the call table base pointer.
+
+ -- : BFD_RELOC_V850_CALLT_16_16_OFFSET
+     This is a 16 bit offset from the call table base pointer.
+
+ -- : BFD_RELOC_V850_LONGCALL
+     Used for relaxing indirect function calls.
+
+ -- : BFD_RELOC_V850_LONGJUMP
+     Used for relaxing indirect jumps.
+
+ -- : BFD_RELOC_V850_ALIGN
+     Used to maintain alignment whilst relaxing.
+
+ -- : BFD_RELOC_V850_LO16_SPLIT_OFFSET
+     This is a variation of BFD_RELOC_LO16 that can be used in v850e
+     ld.bu instructions.
+
+ -- : BFD_RELOC_MN10300_32_PCREL
+     This is a 32bit pcrel reloc for the mn10300, offset by two bytes
+     in the instruction.
+
+ -- : BFD_RELOC_MN10300_16_PCREL
+     This is a 16bit pcrel reloc for the mn10300, offset by two bytes
+     in the instruction.
+
+ -- : BFD_RELOC_TIC30_LDP
+     This is a 8bit DP reloc for the tms320c30, where the most
+     significant 8 bits of a 24 bit word are placed into the least
+     significant 8 bits of the opcode.
+
+ -- : BFD_RELOC_TIC54X_PARTLS7
+     This is a 7bit reloc for the tms320c54x, where the least
+     significant 7 bits of a 16 bit word are placed into the least
+     significant 7 bits of the opcode.
+
+ -- : BFD_RELOC_TIC54X_PARTMS9
+     This is a 9bit DP reloc for the tms320c54x, where the most
+     significant 9 bits of a 16 bit word are placed into the least
+     significant 9 bits of the opcode.
+
+ -- : BFD_RELOC_TIC54X_23
+     This is an extended address 23-bit reloc for the tms320c54x.
+
+ -- : BFD_RELOC_TIC54X_16_OF_23
+     This is a 16-bit reloc for the tms320c54x, where the least
+     significant 16 bits of a 23-bit extended address are placed into
+     the opcode.
+
+ -- : BFD_RELOC_TIC54X_MS7_OF_23
+     This is a reloc for the tms320c54x, where the most significant 7
+     bits of a 23-bit extended address are placed into the opcode.
+
+ -- : BFD_RELOC_FR30_48
+     This is a 48 bit reloc for the FR30 that stores 32 bits.
+
+ -- : BFD_RELOC_FR30_20
+     This is a 32 bit reloc for the FR30 that stores 20 bits split up
+     into two sections.
+
+ -- : BFD_RELOC_FR30_6_IN_4
+     This is a 16 bit reloc for the FR30 that stores a 6 bit word
+     offset in 4 bits.
+
+ -- : BFD_RELOC_FR30_8_IN_8
+     This is a 16 bit reloc for the FR30 that stores an 8 bit byte
+     offset into 8 bits.
+
+ -- : BFD_RELOC_FR30_9_IN_8
+     This is a 16 bit reloc for the FR30 that stores a 9 bit short
+     offset into 8 bits.
+
+ -- : BFD_RELOC_FR30_10_IN_8
+     This is a 16 bit reloc for the FR30 that stores a 10 bit word
+     offset into 8 bits.
+
+ -- : BFD_RELOC_FR30_9_PCREL
+     This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
+     short offset into 8 bits.
+
+ -- : BFD_RELOC_FR30_12_PCREL
+     This is a 16 bit reloc for the FR30 that stores a 12 bit pc
+     relative short offset into 11 bits.
+
+ -- : BFD_RELOC_MCORE_PCREL_IMM8BY4
+ -- : BFD_RELOC_MCORE_PCREL_IMM11BY2
+ -- : BFD_RELOC_MCORE_PCREL_IMM4BY2
+ -- : BFD_RELOC_MCORE_PCREL_32
+ -- : BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
+ -- : BFD_RELOC_MCORE_RVA
+     Motorola Mcore relocations.
+
+ -- : BFD_RELOC_MMIX_GETA
+ -- : BFD_RELOC_MMIX_GETA_1
+ -- : BFD_RELOC_MMIX_GETA_2
+ -- : BFD_RELOC_MMIX_GETA_3
+     These are relocations for the GETA instruction.
+
+ -- : BFD_RELOC_MMIX_CBRANCH
+ -- : BFD_RELOC_MMIX_CBRANCH_J
+ -- : BFD_RELOC_MMIX_CBRANCH_1
+ -- : BFD_RELOC_MMIX_CBRANCH_2
+ -- : BFD_RELOC_MMIX_CBRANCH_3
+     These are relocations for a conditional branch instruction.
+
+ -- : BFD_RELOC_MMIX_PUSHJ
+ -- : BFD_RELOC_MMIX_PUSHJ_1
+ -- : BFD_RELOC_MMIX_PUSHJ_2
+ -- : BFD_RELOC_MMIX_PUSHJ_3
+ -- : BFD_RELOC_MMIX_PUSHJ_STUBBABLE
+     These are relocations for the PUSHJ instruction.
+
+ -- : BFD_RELOC_MMIX_JMP
+ -- : BFD_RELOC_MMIX_JMP_1
+ -- : BFD_RELOC_MMIX_JMP_2
+ -- : BFD_RELOC_MMIX_JMP_3
+     These are relocations for the JMP instruction.
+
+ -- : BFD_RELOC_MMIX_ADDR19
+     This is a relocation for a relative address as in a GETA
+     instruction or a branch.
+
+ -- : BFD_RELOC_MMIX_ADDR27
+     This is a relocation for a relative address as in a JMP
+     instruction.
+
+ -- : BFD_RELOC_MMIX_REG_OR_BYTE
+     This is a relocation for an instruction field that may be a general
+     register or a value 0..255.
+
+ -- : BFD_RELOC_MMIX_REG
+     This is a relocation for an instruction field that may be a general
+     register.
+
+ -- : BFD_RELOC_MMIX_BASE_PLUS_OFFSET
+     This is a relocation for two instruction fields holding a register
+     and an offset, the equivalent of the relocation.
+
+ -- : BFD_RELOC_MMIX_LOCAL
+     This relocation is an assertion that the expression is not
+     allocated as a global register.  It does not modify contents.
+
+ -- : BFD_RELOC_AVR_7_PCREL
+     This is a 16 bit reloc for the AVR that stores 8 bit pc relative
+     short offset into 7 bits.
+
+ -- : BFD_RELOC_AVR_13_PCREL
+     This is a 16 bit reloc for the AVR that stores 13 bit pc relative
+     short offset into 12 bits.
+
+ -- : BFD_RELOC_AVR_16_PM
+     This is a 16 bit reloc for the AVR that stores 17 bit value
+     (usually program memory address) into 16 bits.
+
+ -- : BFD_RELOC_AVR_LO8_LDI
+     This is a 16 bit reloc for the AVR that stores 8 bit value (usually
+     data memory address) into 8 bit immediate value of LDI insn.
+
+ -- : BFD_RELOC_AVR_HI8_LDI
+     This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
+     bit of data memory address) into 8 bit immediate value of LDI insn.
+
+ -- : BFD_RELOC_AVR_HH8_LDI
+     This is a 16 bit reloc for the AVR that stores 8 bit value (most
+     high 8 bit of program memory address) into 8 bit immediate value
+     of LDI insn.
+
+ -- : BFD_RELOC_AVR_MS8_LDI
+     This is a 16 bit reloc for the AVR that stores 8 bit value (most
+     high 8 bit of 32 bit value) into 8 bit immediate value of LDI insn.
+
+ -- : BFD_RELOC_AVR_LO8_LDI_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (usually data memory address) into 8 bit immediate value of SUBI
+     insn.
+
+ -- : BFD_RELOC_AVR_HI8_LDI_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (high 8 bit of data memory address) into 8 bit immediate value of
+     SUBI insn.
+
+ -- : BFD_RELOC_AVR_HH8_LDI_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (most high 8 bit of program memory address) into 8 bit immediate
+     value of LDI or SUBI insn.
+
+ -- : BFD_RELOC_AVR_MS8_LDI_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (msb of 32 bit value) into 8 bit immediate value of LDI insn.
+
+ -- : BFD_RELOC_AVR_LO8_LDI_PM
+     This is a 16 bit reloc for the AVR that stores 8 bit value (usually
+     command address) into 8 bit immediate value of LDI insn.
+
+ -- : BFD_RELOC_AVR_LO8_LDI_GS
+     This is a 16 bit reloc for the AVR that stores 8 bit value
+     (command address) into 8 bit immediate value of LDI insn. If the
+     address is beyond the 128k boundary, the linker inserts a jump
+     stub for this reloc in the lower 128k.
+
+ -- : BFD_RELOC_AVR_HI8_LDI_PM
+     This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
+     bit of command address) into 8 bit immediate value of LDI insn.
+
+ -- : BFD_RELOC_AVR_HI8_LDI_GS
+     This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
+     bit of command address) into 8 bit immediate value of LDI insn.
+     If the address is beyond the 128k boundary, the linker inserts a
+     jump stub for this reloc below 128k.
+
+ -- : BFD_RELOC_AVR_HH8_LDI_PM
+     This is a 16 bit reloc for the AVR that stores 8 bit value (most
+     high 8 bit of command address) into 8 bit immediate value of LDI
+     insn.
+
+ -- : BFD_RELOC_AVR_LO8_LDI_PM_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (usually command address) into 8 bit immediate value of SUBI insn.
+
+ -- : BFD_RELOC_AVR_HI8_LDI_PM_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (high 8 bit of 16 bit command address) into 8 bit immediate value
+     of SUBI insn.
+
+ -- : BFD_RELOC_AVR_HH8_LDI_PM_NEG
+     This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (high 6 bit of 22 bit command address) into 8 bit immediate value
+     of SUBI insn.
+
+ -- : BFD_RELOC_AVR_CALL
+     This is a 32 bit reloc for the AVR that stores 23 bit value into
+     22 bits.
+
+ -- : BFD_RELOC_AVR_LDI
+     This is a 16 bit reloc for the AVR that stores all needed bits for
+     absolute addressing with ldi with overflow check to linktime
+
+ -- : BFD_RELOC_AVR_6
+     This is a 6 bit reloc for the AVR that stores offset for ldd/std
+     instructions
+
+ -- : BFD_RELOC_AVR_6_ADIW
+     This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
+     instructions
+
+ -- : BFD_RELOC_390_12
+     Direct 12 bit.
+
+ -- : BFD_RELOC_390_GOT12
+     12 bit GOT offset.
+
+ -- : BFD_RELOC_390_PLT32
+     32 bit PC relative PLT address.
+
+ -- : BFD_RELOC_390_COPY
+     Copy symbol at runtime.
+
+ -- : BFD_RELOC_390_GLOB_DAT
+     Create GOT entry.
+
+ -- : BFD_RELOC_390_JMP_SLOT
+     Create PLT entry.
+
+ -- : BFD_RELOC_390_RELATIVE
+     Adjust by program base.
+
+ -- : BFD_RELOC_390_GOTPC
+     32 bit PC relative offset to GOT.
+
+ -- : BFD_RELOC_390_GOT16
+     16 bit GOT offset.
+
+ -- : BFD_RELOC_390_PC16DBL
+     PC relative 16 bit shifted by 1.
+
+ -- : BFD_RELOC_390_PLT16DBL
+     16 bit PC rel. PLT shifted by 1.
+
+ -- : BFD_RELOC_390_PC32DBL
+     PC relative 32 bit shifted by 1.
+
+ -- : BFD_RELOC_390_PLT32DBL
+     32 bit PC rel. PLT shifted by 1.
+
+ -- : BFD_RELOC_390_GOTPCDBL
+     32 bit PC rel. GOT shifted by 1.
+
+ -- : BFD_RELOC_390_GOT64
+     64 bit GOT offset.
+
+ -- : BFD_RELOC_390_PLT64
+     64 bit PC relative PLT address.
+
+ -- : BFD_RELOC_390_GOTENT
+     32 bit rel. offset to GOT entry.
+
+ -- : BFD_RELOC_390_GOTOFF64
+     64 bit offset to GOT.
+
+ -- : BFD_RELOC_390_GOTPLT12
+     12-bit offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_390_GOTPLT16
+     16-bit offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_390_GOTPLT32
+     32-bit offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_390_GOTPLT64
+     64-bit offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_390_GOTPLTENT
+     32-bit rel. offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_390_PLTOFF16
+     16-bit rel. offset from the GOT to a PLT entry.
+
+ -- : BFD_RELOC_390_PLTOFF32
+     32-bit rel. offset from the GOT to a PLT entry.
+
+ -- : BFD_RELOC_390_PLTOFF64
+     64-bit rel. offset from the GOT to a PLT entry.
+
+ -- : BFD_RELOC_390_TLS_LOAD
+ -- : BFD_RELOC_390_TLS_GDCALL
+ -- : BFD_RELOC_390_TLS_LDCALL
+ -- : BFD_RELOC_390_TLS_GD32
+ -- : BFD_RELOC_390_TLS_GD64
+ -- : BFD_RELOC_390_TLS_GOTIE12
+ -- : BFD_RELOC_390_TLS_GOTIE32
+ -- : BFD_RELOC_390_TLS_GOTIE64
+ -- : BFD_RELOC_390_TLS_LDM32
+ -- : BFD_RELOC_390_TLS_LDM64
+ -- : BFD_RELOC_390_TLS_IE32
+ -- : BFD_RELOC_390_TLS_IE64
+ -- : BFD_RELOC_390_TLS_IEENT
+ -- : BFD_RELOC_390_TLS_LE32
+ -- : BFD_RELOC_390_TLS_LE64
+ -- : BFD_RELOC_390_TLS_LDO32
+ -- : BFD_RELOC_390_TLS_LDO64
+ -- : BFD_RELOC_390_TLS_DTPMOD
+ -- : BFD_RELOC_390_TLS_DTPOFF
+ -- : BFD_RELOC_390_TLS_TPOFF
+     s390 tls relocations.
+
+ -- : BFD_RELOC_390_20
+ -- : BFD_RELOC_390_GOT20
+ -- : BFD_RELOC_390_GOTPLT20
+ -- : BFD_RELOC_390_TLS_GOTIE20
+     Long displacement extension.
+
+ -- : BFD_RELOC_SCORE_DUMMY1
+     Score relocations
+
+ -- : BFD_RELOC_SCORE_GPREL15
+     Low 16 bit for load/store
+
+ -- : BFD_RELOC_SCORE_DUMMY2
+ -- : BFD_RELOC_SCORE_JMP
+     This is a 24-bit reloc with the right 1 bit assumed to be 0
+
+ -- : BFD_RELOC_SCORE_BRANCH
+     This is a 19-bit reloc with the right 1 bit assumed to be 0
+
+ -- : BFD_RELOC_SCORE16_JMP
+     This is a 11-bit reloc with the right 1 bit assumed to be 0
+
+ -- : BFD_RELOC_SCORE16_BRANCH
+     This is a 8-bit reloc with the right 1 bit assumed to be 0
+
+ -- : BFD_RELOC_SCORE_GOT15
+ -- : BFD_RELOC_SCORE_GOT_LO16
+ -- : BFD_RELOC_SCORE_CALL15
+ -- : BFD_RELOC_SCORE_DUMMY_HI16
+     Undocumented Score relocs
+
+ -- : BFD_RELOC_IP2K_FR9
+     Scenix IP2K - 9-bit register number / data address
+
+ -- : BFD_RELOC_IP2K_BANK
+     Scenix IP2K - 4-bit register/data bank number
+
+ -- : BFD_RELOC_IP2K_ADDR16CJP
+     Scenix IP2K - low 13 bits of instruction word address
+
+ -- : BFD_RELOC_IP2K_PAGE3
+     Scenix IP2K - high 3 bits of instruction word address
+
+ -- : BFD_RELOC_IP2K_LO8DATA
+ -- : BFD_RELOC_IP2K_HI8DATA
+ -- : BFD_RELOC_IP2K_EX8DATA
+     Scenix IP2K - ext/low/high 8 bits of data address
+
+ -- : BFD_RELOC_IP2K_LO8INSN
+ -- : BFD_RELOC_IP2K_HI8INSN
+     Scenix IP2K - low/high 8 bits of instruction word address
+
+ -- : BFD_RELOC_IP2K_PC_SKIP
+     Scenix IP2K - even/odd PC modifier to modify snb pcl.0
+
+ -- : BFD_RELOC_IP2K_TEXT
+     Scenix IP2K - 16 bit word address in text section.
+
+ -- : BFD_RELOC_IP2K_FR_OFFSET
+     Scenix IP2K - 7-bit sp or dp offset
+
+ -- : BFD_RELOC_VPE4KMATH_DATA
+ -- : BFD_RELOC_VPE4KMATH_INSN
+     Scenix VPE4K coprocessor - data/insn-space addressing
+
+ -- : BFD_RELOC_VTABLE_INHERIT
+ -- : BFD_RELOC_VTABLE_ENTRY
+     These two relocations are used by the linker to determine which of
+     the entries in a C++ virtual function table are actually used.
+     When the -gc-sections option is given, the linker will zero out
+     the entries that are not used, so that the code for those
+     functions need not be included in the output.
+
+     VTABLE_INHERIT is a zero-space relocation used to describe to the
+     linker the inheritance tree of a C++ virtual function table.  The
+     relocation's symbol should be the parent class' vtable, and the
+     relocation should be located at the child vtable.
+
+     VTABLE_ENTRY is a zero-space relocation that describes the use of a
+     virtual function table entry.  The reloc's symbol should refer to
+     the table of the class mentioned in the code.  Off of that base,
+     an offset describes the entry that is being used.  For Rela hosts,
+     this offset is stored in the reloc's addend.  For Rel hosts, we
+     are forced to put this offset in the reloc's section offset.
+
+ -- : BFD_RELOC_IA64_IMM14
+ -- : BFD_RELOC_IA64_IMM22
+ -- : BFD_RELOC_IA64_IMM64
+ -- : BFD_RELOC_IA64_DIR32MSB
+ -- : BFD_RELOC_IA64_DIR32LSB
+ -- : BFD_RELOC_IA64_DIR64MSB
+ -- : BFD_RELOC_IA64_DIR64LSB
+ -- : BFD_RELOC_IA64_GPREL22
+ -- : BFD_RELOC_IA64_GPREL64I
+ -- : BFD_RELOC_IA64_GPREL32MSB
+ -- : BFD_RELOC_IA64_GPREL32LSB
+ -- : BFD_RELOC_IA64_GPREL64MSB
+ -- : BFD_RELOC_IA64_GPREL64LSB
+ -- : BFD_RELOC_IA64_LTOFF22
+ -- : BFD_RELOC_IA64_LTOFF64I
+ -- : BFD_RELOC_IA64_PLTOFF22
+ -- : BFD_RELOC_IA64_PLTOFF64I
+ -- : BFD_RELOC_IA64_PLTOFF64MSB
+ -- : BFD_RELOC_IA64_PLTOFF64LSB
+ -- : BFD_RELOC_IA64_FPTR64I
+ -- : BFD_RELOC_IA64_FPTR32MSB
+ -- : BFD_RELOC_IA64_FPTR32LSB
+ -- : BFD_RELOC_IA64_FPTR64MSB
+ -- : BFD_RELOC_IA64_FPTR64LSB
+ -- : BFD_RELOC_IA64_PCREL21B
+ -- : BFD_RELOC_IA64_PCREL21BI
+ -- : BFD_RELOC_IA64_PCREL21M
+ -- : BFD_RELOC_IA64_PCREL21F
+ -- : BFD_RELOC_IA64_PCREL22
+ -- : BFD_RELOC_IA64_PCREL60B
+ -- : BFD_RELOC_IA64_PCREL64I
+ -- : BFD_RELOC_IA64_PCREL32MSB
+ -- : BFD_RELOC_IA64_PCREL32LSB
+ -- : BFD_RELOC_IA64_PCREL64MSB
+ -- : BFD_RELOC_IA64_PCREL64LSB
+ -- : BFD_RELOC_IA64_LTOFF_FPTR22
+ -- : BFD_RELOC_IA64_LTOFF_FPTR64I
+ -- : BFD_RELOC_IA64_LTOFF_FPTR32MSB
+ -- : BFD_RELOC_IA64_LTOFF_FPTR32LSB
+ -- : BFD_RELOC_IA64_LTOFF_FPTR64MSB
+ -- : BFD_RELOC_IA64_LTOFF_FPTR64LSB
+ -- : BFD_RELOC_IA64_SEGREL32MSB
+ -- : BFD_RELOC_IA64_SEGREL32LSB
+ -- : BFD_RELOC_IA64_SEGREL64MSB
+ -- : BFD_RELOC_IA64_SEGREL64LSB
+ -- : BFD_RELOC_IA64_SECREL32MSB
+ -- : BFD_RELOC_IA64_SECREL32LSB
+ -- : BFD_RELOC_IA64_SECREL64MSB
+ -- : BFD_RELOC_IA64_SECREL64LSB
+ -- : BFD_RELOC_IA64_REL32MSB
+ -- : BFD_RELOC_IA64_REL32LSB
+ -- : BFD_RELOC_IA64_REL64MSB
+ -- : BFD_RELOC_IA64_REL64LSB
+ -- : BFD_RELOC_IA64_LTV32MSB
+ -- : BFD_RELOC_IA64_LTV32LSB
+ -- : BFD_RELOC_IA64_LTV64MSB
+ -- : BFD_RELOC_IA64_LTV64LSB
+ -- : BFD_RELOC_IA64_IPLTMSB
+ -- : BFD_RELOC_IA64_IPLTLSB
+ -- : BFD_RELOC_IA64_COPY
+ -- : BFD_RELOC_IA64_LTOFF22X
+ -- : BFD_RELOC_IA64_LDXMOV
+ -- : BFD_RELOC_IA64_TPREL14
+ -- : BFD_RELOC_IA64_TPREL22
+ -- : BFD_RELOC_IA64_TPREL64I
+ -- : BFD_RELOC_IA64_TPREL64MSB
+ -- : BFD_RELOC_IA64_TPREL64LSB
+ -- : BFD_RELOC_IA64_LTOFF_TPREL22
+ -- : BFD_RELOC_IA64_DTPMOD64MSB
+ -- : BFD_RELOC_IA64_DTPMOD64LSB
+ -- : BFD_RELOC_IA64_LTOFF_DTPMOD22
+ -- : BFD_RELOC_IA64_DTPREL14
+ -- : BFD_RELOC_IA64_DTPREL22
+ -- : BFD_RELOC_IA64_DTPREL64I
+ -- : BFD_RELOC_IA64_DTPREL32MSB
+ -- : BFD_RELOC_IA64_DTPREL32LSB
+ -- : BFD_RELOC_IA64_DTPREL64MSB
+ -- : BFD_RELOC_IA64_DTPREL64LSB
+ -- : BFD_RELOC_IA64_LTOFF_DTPREL22
+     Intel IA64 Relocations.
+
+ -- : BFD_RELOC_M68HC11_HI8
+     Motorola 68HC11 reloc.  This is the 8 bit high part of an absolute
+     address.
+
+ -- : BFD_RELOC_M68HC11_LO8
+     Motorola 68HC11 reloc.  This is the 8 bit low part of an absolute
+     address.
+
+ -- : BFD_RELOC_M68HC11_3B
+     Motorola 68HC11 reloc.  This is the 3 bit of a value.
+
+ -- : BFD_RELOC_M68HC11_RL_JUMP
+     Motorola 68HC11 reloc.  This reloc marks the beginning of a
+     jump/call instruction.  It is used for linker relaxation to
+     correctly identify beginning of instruction and change some
+     branches to use PC-relative addressing mode.
+
+ -- : BFD_RELOC_M68HC11_RL_GROUP
+     Motorola 68HC11 reloc.  This reloc marks a group of several
+     instructions that gcc generates and for which the linker
+     relaxation pass can modify and/or remove some of them.
+
+ -- : BFD_RELOC_M68HC11_LO16
+     Motorola 68HC11 reloc.  This is the 16-bit lower part of an
+     address.  It is used for 'call' instruction to specify the symbol
+     address without any special transformation (due to memory bank
+     window).
+
+ -- : BFD_RELOC_M68HC11_PAGE
+     Motorola 68HC11 reloc.  This is a 8-bit reloc that specifies the
+     page number of an address.  It is used by 'call' instruction to
+     specify the page number of the symbol.
+
+ -- : BFD_RELOC_M68HC11_24
+     Motorola 68HC11 reloc.  This is a 24-bit reloc that represents the
+     address with a 16-bit value and a 8-bit page number.  The symbol
+     address is transformed to follow the 16K memory bank of 68HC12
+     (seen as mapped in the window).
+
+ -- : BFD_RELOC_M68HC12_5B
+     Motorola 68HC12 reloc.  This is the 5 bits of a value.
+
+ -- : BFD_RELOC_16C_NUM08
+ -- : BFD_RELOC_16C_NUM08_C
+ -- : BFD_RELOC_16C_NUM16
+ -- : BFD_RELOC_16C_NUM16_C
+ -- : BFD_RELOC_16C_NUM32
+ -- : BFD_RELOC_16C_NUM32_C
+ -- : BFD_RELOC_16C_DISP04
+ -- : BFD_RELOC_16C_DISP04_C
+ -- : BFD_RELOC_16C_DISP08
+ -- : BFD_RELOC_16C_DISP08_C
+ -- : BFD_RELOC_16C_DISP16
+ -- : BFD_RELOC_16C_DISP16_C
+ -- : BFD_RELOC_16C_DISP24
+ -- : BFD_RELOC_16C_DISP24_C
+ -- : BFD_RELOC_16C_DISP24a
+ -- : BFD_RELOC_16C_DISP24a_C
+ -- : BFD_RELOC_16C_REG04
+ -- : BFD_RELOC_16C_REG04_C
+ -- : BFD_RELOC_16C_REG04a
+ -- : BFD_RELOC_16C_REG04a_C
+ -- : BFD_RELOC_16C_REG14
+ -- : BFD_RELOC_16C_REG14_C
+ -- : BFD_RELOC_16C_REG16
+ -- : BFD_RELOC_16C_REG16_C
+ -- : BFD_RELOC_16C_REG20
+ -- : BFD_RELOC_16C_REG20_C
+ -- : BFD_RELOC_16C_ABS20
+ -- : BFD_RELOC_16C_ABS20_C
+ -- : BFD_RELOC_16C_ABS24
+ -- : BFD_RELOC_16C_ABS24_C
+ -- : BFD_RELOC_16C_IMM04
+ -- : BFD_RELOC_16C_IMM04_C
+ -- : BFD_RELOC_16C_IMM16
+ -- : BFD_RELOC_16C_IMM16_C
+ -- : BFD_RELOC_16C_IMM20
+ -- : BFD_RELOC_16C_IMM20_C
+ -- : BFD_RELOC_16C_IMM24
+ -- : BFD_RELOC_16C_IMM24_C
+ -- : BFD_RELOC_16C_IMM32
+ -- : BFD_RELOC_16C_IMM32_C
+     NS CR16C Relocations.
+
+ -- : BFD_RELOC_CRX_REL4
+ -- : BFD_RELOC_CRX_REL8
+ -- : BFD_RELOC_CRX_REL8_CMP
+ -- : BFD_RELOC_CRX_REL16
+ -- : BFD_RELOC_CRX_REL24
+ -- : BFD_RELOC_CRX_REL32
+ -- : BFD_RELOC_CRX_REGREL12
+ -- : BFD_RELOC_CRX_REGREL22
+ -- : BFD_RELOC_CRX_REGREL28
+ -- : BFD_RELOC_CRX_REGREL32
+ -- : BFD_RELOC_CRX_ABS16
+ -- : BFD_RELOC_CRX_ABS32
+ -- : BFD_RELOC_CRX_NUM8
+ -- : BFD_RELOC_CRX_NUM16
+ -- : BFD_RELOC_CRX_NUM32
+ -- : BFD_RELOC_CRX_IMM16
+ -- : BFD_RELOC_CRX_IMM32
+ -- : BFD_RELOC_CRX_SWITCH8
+ -- : BFD_RELOC_CRX_SWITCH16
+ -- : BFD_RELOC_CRX_SWITCH32
+     NS CRX Relocations.
+
+ -- : BFD_RELOC_CRIS_BDISP8
+ -- : BFD_RELOC_CRIS_UNSIGNED_5
+ -- : BFD_RELOC_CRIS_SIGNED_6
+ -- : BFD_RELOC_CRIS_UNSIGNED_6
+ -- : BFD_RELOC_CRIS_SIGNED_8
+ -- : BFD_RELOC_CRIS_UNSIGNED_8
+ -- : BFD_RELOC_CRIS_SIGNED_16
+ -- : BFD_RELOC_CRIS_UNSIGNED_16
+ -- : BFD_RELOC_CRIS_LAPCQ_OFFSET
+ -- : BFD_RELOC_CRIS_UNSIGNED_4
+     These relocs are only used within the CRIS assembler.  They are not
+     (at present) written to any object files.
+
+ -- : BFD_RELOC_CRIS_COPY
+ -- : BFD_RELOC_CRIS_GLOB_DAT
+ -- : BFD_RELOC_CRIS_JUMP_SLOT
+ -- : BFD_RELOC_CRIS_RELATIVE
+     Relocs used in ELF shared libraries for CRIS.
+
+ -- : BFD_RELOC_CRIS_32_GOT
+     32-bit offset to symbol-entry within GOT.
+
+ -- : BFD_RELOC_CRIS_16_GOT
+     16-bit offset to symbol-entry within GOT.
+
+ -- : BFD_RELOC_CRIS_32_GOTPLT
+     32-bit offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_CRIS_16_GOTPLT
+     16-bit offset to symbol-entry within GOT, with PLT handling.
+
+ -- : BFD_RELOC_CRIS_32_GOTREL
+     32-bit offset to symbol, relative to GOT.
+
+ -- : BFD_RELOC_CRIS_32_PLT_GOTREL
+     32-bit offset to symbol with PLT entry, relative to GOT.
+
+ -- : BFD_RELOC_CRIS_32_PLT_PCREL
+     32-bit offset to symbol with PLT entry, relative to this
+     relocation.
+
+ -- : BFD_RELOC_860_COPY
+ -- : BFD_RELOC_860_GLOB_DAT
+ -- : BFD_RELOC_860_JUMP_SLOT
+ -- : BFD_RELOC_860_RELATIVE
+ -- : BFD_RELOC_860_PC26
+ -- : BFD_RELOC_860_PLT26
+ -- : BFD_RELOC_860_PC16
+ -- : BFD_RELOC_860_LOW0
+ -- : BFD_RELOC_860_SPLIT0
+ -- : BFD_RELOC_860_LOW1
+ -- : BFD_RELOC_860_SPLIT1
+ -- : BFD_RELOC_860_LOW2
+ -- : BFD_RELOC_860_SPLIT2
+ -- : BFD_RELOC_860_LOW3
+ -- : BFD_RELOC_860_LOGOT0
+ -- : BFD_RELOC_860_SPGOT0
+ -- : BFD_RELOC_860_LOGOT1
+ -- : BFD_RELOC_860_SPGOT1
+ -- : BFD_RELOC_860_LOGOTOFF0
+ -- : BFD_RELOC_860_SPGOTOFF0
+ -- : BFD_RELOC_860_LOGOTOFF1
+ -- : BFD_RELOC_860_SPGOTOFF1
+ -- : BFD_RELOC_860_LOGOTOFF2
+ -- : BFD_RELOC_860_LOGOTOFF3
+ -- : BFD_RELOC_860_LOPC
+ -- : BFD_RELOC_860_HIGHADJ
+ -- : BFD_RELOC_860_HAGOT
+ -- : BFD_RELOC_860_HAGOTOFF
+ -- : BFD_RELOC_860_HAPC
+ -- : BFD_RELOC_860_HIGH
+ -- : BFD_RELOC_860_HIGOT
+ -- : BFD_RELOC_860_HIGOTOFF
+     Intel i860 Relocations.
+
+ -- : BFD_RELOC_OPENRISC_ABS_26
+ -- : BFD_RELOC_OPENRISC_REL_26
+     OpenRISC Relocations.
+
+ -- : BFD_RELOC_H8_DIR16A8
+ -- : BFD_RELOC_H8_DIR16R8
+ -- : BFD_RELOC_H8_DIR24A8
+ -- : BFD_RELOC_H8_DIR24R8
+ -- : BFD_RELOC_H8_DIR32A16
+     H8 elf Relocations.
+
+ -- : BFD_RELOC_XSTORMY16_REL_12
+ -- : BFD_RELOC_XSTORMY16_12
+ -- : BFD_RELOC_XSTORMY16_24
+ -- : BFD_RELOC_XSTORMY16_FPTR16
+     Sony Xstormy16 Relocations.
+
+ -- : BFD_RELOC_XC16X_PAG
+ -- : BFD_RELOC_XC16X_POF
+ -- : BFD_RELOC_XC16X_SEG
+ -- : BFD_RELOC_XC16X_SOF
+     Infineon Relocations.
+
+ -- : BFD_RELOC_VAX_GLOB_DAT
+ -- : BFD_RELOC_VAX_JMP_SLOT
+ -- : BFD_RELOC_VAX_RELATIVE
+     Relocations used by VAX ELF.
+
+ -- : BFD_RELOC_MT_PC16
+     Morpho MT - 16 bit immediate relocation.
+
+ -- : BFD_RELOC_MT_HI16
+     Morpho MT - Hi 16 bits of an address.
+
+ -- : BFD_RELOC_MT_LO16
+     Morpho MT - Low 16 bits of an address.
+
+ -- : BFD_RELOC_MT_GNU_VTINHERIT
+     Morpho MT - Used to tell the linker which vtable entries are used.
+
+ -- : BFD_RELOC_MT_GNU_VTENTRY
+     Morpho MT - Used to tell the linker which vtable entries are used.
+
+ -- : BFD_RELOC_MT_PCINSN8
+     Morpho MT - 8 bit immediate relocation.
+
+ -- : BFD_RELOC_MSP430_10_PCREL
+ -- : BFD_RELOC_MSP430_16_PCREL
+ -- : BFD_RELOC_MSP430_16
+ -- : BFD_RELOC_MSP430_16_PCREL_BYTE
+ -- : BFD_RELOC_MSP430_16_BYTE
+ -- : BFD_RELOC_MSP430_2X_PCREL
+ -- : BFD_RELOC_MSP430_RL_PCREL
+     msp430 specific relocation codes
+
+ -- : BFD_RELOC_IQ2000_OFFSET_16
+ -- : BFD_RELOC_IQ2000_OFFSET_21
+ -- : BFD_RELOC_IQ2000_UHI16
+     IQ2000 Relocations.
+
+ -- : BFD_RELOC_XTENSA_RTLD
+     Special Xtensa relocation used only by PLT entries in ELF shared
+     objects to indicate that the runtime linker should set the value
+     to one of its own internal functions or data structures.
+
+ -- : BFD_RELOC_XTENSA_GLOB_DAT
+ -- : BFD_RELOC_XTENSA_JMP_SLOT
+ -- : BFD_RELOC_XTENSA_RELATIVE
+     Xtensa relocations for ELF shared objects.
+
+ -- : BFD_RELOC_XTENSA_PLT
+     Xtensa relocation used in ELF object files for symbols that may
+     require PLT entries.  Otherwise, this is just a generic 32-bit
+     relocation.
+
+ -- : BFD_RELOC_XTENSA_DIFF8
+ -- : BFD_RELOC_XTENSA_DIFF16
+ -- : BFD_RELOC_XTENSA_DIFF32
+     Xtensa relocations to mark the difference of two local symbols.
+     These are only needed to support linker relaxation and can be
+     ignored when not relaxing.  The field is set to the value of the
+     difference assuming no relaxation.  The relocation encodes the
+     position of the first symbol so the linker can determine whether
+     to adjust the field value.
+
+ -- : BFD_RELOC_XTENSA_SLOT0_OP
+ -- : BFD_RELOC_XTENSA_SLOT1_OP
+ -- : BFD_RELOC_XTENSA_SLOT2_OP
+ -- : BFD_RELOC_XTENSA_SLOT3_OP
+ -- : BFD_RELOC_XTENSA_SLOT4_OP
+ -- : BFD_RELOC_XTENSA_SLOT5_OP
+ -- : BFD_RELOC_XTENSA_SLOT6_OP
+ -- : BFD_RELOC_XTENSA_SLOT7_OP
+ -- : BFD_RELOC_XTENSA_SLOT8_OP
+ -- : BFD_RELOC_XTENSA_SLOT9_OP
+ -- : BFD_RELOC_XTENSA_SLOT10_OP
+ -- : BFD_RELOC_XTENSA_SLOT11_OP
+ -- : BFD_RELOC_XTENSA_SLOT12_OP
+ -- : BFD_RELOC_XTENSA_SLOT13_OP
+ -- : BFD_RELOC_XTENSA_SLOT14_OP
+     Generic Xtensa relocations for instruction operands.  Only the slot
+     number is encoded in the relocation.  The relocation applies to the
+     last PC-relative immediate operand, or if there are no PC-relative
+     immediates, to the last immediate operand.
+
+ -- : BFD_RELOC_XTENSA_SLOT0_ALT
+ -- : BFD_RELOC_XTENSA_SLOT1_ALT
+ -- : BFD_RELOC_XTENSA_SLOT2_ALT
+ -- : BFD_RELOC_XTENSA_SLOT3_ALT
+ -- : BFD_RELOC_XTENSA_SLOT4_ALT
+ -- : BFD_RELOC_XTENSA_SLOT5_ALT
+ -- : BFD_RELOC_XTENSA_SLOT6_ALT
+ -- : BFD_RELOC_XTENSA_SLOT7_ALT
+ -- : BFD_RELOC_XTENSA_SLOT8_ALT
+ -- : BFD_RELOC_XTENSA_SLOT9_ALT
+ -- : BFD_RELOC_XTENSA_SLOT10_ALT
+ -- : BFD_RELOC_XTENSA_SLOT11_ALT
+ -- : BFD_RELOC_XTENSA_SLOT12_ALT
+ -- : BFD_RELOC_XTENSA_SLOT13_ALT
+ -- : BFD_RELOC_XTENSA_SLOT14_ALT
+     Alternate Xtensa relocations.  Only the slot is encoded in the
+     relocation.  The meaning of these relocations is opcode-specific.
+
+ -- : BFD_RELOC_XTENSA_OP0
+ -- : BFD_RELOC_XTENSA_OP1
+ -- : BFD_RELOC_XTENSA_OP2
+     Xtensa relocations for backward compatibility.  These have all been
+     replaced by BFD_RELOC_XTENSA_SLOT0_OP.
+
+ -- : BFD_RELOC_XTENSA_ASM_EXPAND
+     Xtensa relocation to mark that the assembler expanded the
+     instructions from an original target.  The expansion size is
+     encoded in the reloc size.
+
+ -- : BFD_RELOC_XTENSA_ASM_SIMPLIFY
+     Xtensa relocation to mark that the linker should simplify
+     assembler-expanded instructions.  This is commonly used internally
+     by the linker after analysis of a BFD_RELOC_XTENSA_ASM_EXPAND.
+
+ -- : BFD_RELOC_Z80_DISP8
+     8 bit signed offset in (ix+d) or (iy+d).
+
+ -- : BFD_RELOC_Z8K_DISP7
+     DJNZ offset.
+
+ -- : BFD_RELOC_Z8K_CALLR
+     CALR offset.
+
+ -- : BFD_RELOC_Z8K_IMM4L
+     4 bit value.
+
+
+     typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
+   
+2.10.2.2 `bfd_reloc_type_lookup'
+................................
+
+*Synopsis*
+     reloc_howto_type *bfd_reloc_type_lookup
+        (bfd *abfd, bfd_reloc_code_real_type code);
+   *Description*
+Return a pointer to a howto structure which, when invoked, will perform
+the relocation CODE on data from the architecture noted.
+
+2.10.2.3 `bfd_default_reloc_type_lookup'
+........................................
+
+*Synopsis*
+     reloc_howto_type *bfd_default_reloc_type_lookup
+        (bfd *abfd, bfd_reloc_code_real_type  code);
+   *Description*
+Provides a default relocation lookup routine for any architecture.
+
+2.10.2.4 `bfd_get_reloc_code_name'
+..................................
+
+*Synopsis*
+     const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
+   *Description*
+Provides a printable name for the supplied relocation code.  Useful
+mainly for printing error messages.
+
+2.10.2.5 `bfd_generic_relax_section'
+....................................
+
+*Synopsis*
+     bfd_boolean bfd_generic_relax_section
+        (bfd *abfd,
+         asection *section,
+         struct bfd_link_info *,
+         bfd_boolean *);
+   *Description*
+Provides default handling for relaxing for back ends which don't do
+relaxing.
+
+2.10.2.6 `bfd_generic_gc_sections'
+..................................
+
+*Synopsis*
+     bfd_boolean bfd_generic_gc_sections
+        (bfd *, struct bfd_link_info *);
+   *Description*
+Provides default handling for relaxing for back ends which don't do
+section gc - i.e., does nothing.
+
+2.10.2.7 `bfd_generic_merge_sections'
+.....................................
+
+*Synopsis*
+     bfd_boolean bfd_generic_merge_sections
+        (bfd *, struct bfd_link_info *);
+   *Description*
+Provides default handling for SEC_MERGE section merging for back ends
+which don't have SEC_MERGE support - i.e., does nothing.
+
+2.10.2.8 `bfd_generic_get_relocated_section_contents'
+.....................................................
+
+*Synopsis*
+     bfd_byte *bfd_generic_get_relocated_section_contents
+        (bfd *abfd,
+         struct bfd_link_info *link_info,
+         struct bfd_link_order *link_order,
+         bfd_byte *data,
+         bfd_boolean relocatable,
+         asymbol **symbols);
+   *Description*
+Provides default handling of relocation effort for back ends which
+can't be bothered to do it efficiently.
+
+\1f
+File: bfd.info,  Node: Core Files,  Next: Targets,  Prev: Relocations,  Up: BFD front end
+
+2.11 Core files
+===============
+
+2.11.1 Core file functions
+--------------------------
+
+*Description*
+These are functions pertaining to core files.
+
+2.11.1.1 `bfd_core_file_failing_command'
+........................................
+
+*Synopsis*
+     const char *bfd_core_file_failing_command (bfd *abfd);
+   *Description*
+Return a read-only string explaining which program was running when it
+failed and produced the core file ABFD.
+
+2.11.1.2 `bfd_core_file_failing_signal'
+.......................................
+
+*Synopsis*
+     int bfd_core_file_failing_signal (bfd *abfd);
+   *Description*
+Returns the signal number which caused the core dump which generated
+the file the BFD ABFD is attached to.
+
+2.11.1.3 `core_file_matches_executable_p'
+.........................................
+
+*Synopsis*
+     bfd_boolean core_file_matches_executable_p
+        (bfd *core_bfd, bfd *exec_bfd);
+   *Description*
+Return `TRUE' if the core file attached to CORE_BFD was generated by a
+run of the executable file attached to EXEC_BFD, `FALSE' otherwise.
+
+2.11.1.4 `generic_core_file_matches_executable_p'
+.................................................
+
+*Synopsis*
+     bfd_boolean generic_core_file_matches_executable_p
+        (bfd *core_bfd, bfd *exec_bfd);
+   *Description*
+Return TRUE if the core file attached to CORE_BFD was generated by a
+run of the executable file attached to EXEC_BFD.  The match is based on
+executable basenames only.
+
+   Note: When not able to determine the core file failing command or
+the executable name, we still return TRUE even though we're not sure
+that core file and executable match.  This is to avoid generating a
+false warning in situations where we really don't know whether they
+match or not.
+
+\1f
+File: bfd.info,  Node: Targets,  Next: Architectures,  Prev: Core Files,  Up: BFD front end
+
+2.12 Targets
+============
+
+*Description*
+Each port of BFD to a different machine requires the creation of a
+target back end. All the back end provides to the root part of BFD is a
+structure containing pointers to functions which perform certain low
+level operations on files. BFD translates the applications's requests
+through a pointer into calls to the back end routines.
+
+   When a file is opened with `bfd_openr', its format and target are
+unknown. BFD uses various mechanisms to determine how to interpret the
+file. The operations performed are:
+
+   * Create a BFD by calling the internal routine `_bfd_new_bfd', then
+     call `bfd_find_target' with the target string supplied to
+     `bfd_openr' and the new BFD pointer.
+
+   * If a null target string was provided to `bfd_find_target', look up
+     the environment variable `GNUTARGET' and use that as the target
+     string.
+
+   * If the target string is still `NULL', or the target string is
+     `default', then use the first item in the target vector as the
+     target type, and set `target_defaulted' in the BFD to cause
+     `bfd_check_format' to loop through all the targets.  *Note
+     bfd_target::.  *Note Formats::.
+
+   * Otherwise, inspect the elements in the target vector one by one,
+     until a match on target name is found. When found, use it.
+
+   * Otherwise return the error `bfd_error_invalid_target' to
+     `bfd_openr'.
+
+   * `bfd_openr' attempts to open the file using `bfd_open_file', and
+     returns the BFD.
+   Once the BFD has been opened and the target selected, the file
+format may be determined. This is done by calling `bfd_check_format' on
+the BFD with a suggested format.  If `target_defaulted' has been set,
+each possible target type is tried to see if it recognizes the
+specified format.  `bfd_check_format' returns `TRUE' when the caller
+guesses right.
+
+* Menu:
+
+* bfd_target::
+
+\1f
+File: bfd.info,  Node: bfd_target,  Prev: Targets,  Up: Targets
+
+2.12.1 bfd_target
+-----------------
+
+*Description*
+This structure contains everything that BFD knows about a target. It
+includes things like its byte order, name, and which routines to call
+to do various operations.
+
+   Every BFD points to a target structure with its `xvec' member.
+
+   The macros below are used to dispatch to functions through the
+`bfd_target' vector. They are used in a number of macros further down
+in `bfd.h', and are also used when calling various routines by hand
+inside the BFD implementation.  The ARGLIST argument must be
+parenthesized; it contains all the arguments to the called function.
+
+   They make the documentation (more) unpleasant to read, so if someone
+wants to fix this and not break the above, please do.
+     #define BFD_SEND(bfd, message, arglist) \
+       ((*((bfd)->xvec->message)) arglist)
+
+     #ifdef DEBUG_BFD_SEND
+     #undef BFD_SEND
+     #define BFD_SEND(bfd, message, arglist) \
+       (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
+         ((*((bfd)->xvec->message)) arglist) : \
+         (bfd_assert (__FILE__,__LINE__), NULL))
+     #endif
+   For operations which index on the BFD format:
+     #define BFD_SEND_FMT(bfd, message, arglist) \
+       (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
+
+     #ifdef DEBUG_BFD_SEND
+     #undef BFD_SEND_FMT
+     #define BFD_SEND_FMT(bfd, message, arglist) \
+       (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
+        (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
+        (bfd_assert (__FILE__,__LINE__), NULL))
+     #endif
+   This is the structure which defines the type of BFD this is.  The
+`xvec' member of the struct `bfd' itself points here.  Each module that
+implements access to a different target under BFD, defines one of these.
+
+   FIXME, these names should be rationalised with the names of the
+entry points which call them. Too bad we can't have one macro to define
+them both!
+     enum bfd_flavour
+     {
+       bfd_target_unknown_flavour,
+       bfd_target_aout_flavour,
+       bfd_target_coff_flavour,
+       bfd_target_ecoff_flavour,
+       bfd_target_xcoff_flavour,
+       bfd_target_elf_flavour,
+       bfd_target_ieee_flavour,
+       bfd_target_nlm_flavour,
+       bfd_target_oasys_flavour,
+       bfd_target_tekhex_flavour,
+       bfd_target_srec_flavour,
+       bfd_target_ihex_flavour,
+       bfd_target_som_flavour,
+       bfd_target_os9k_flavour,
+       bfd_target_versados_flavour,
+       bfd_target_msdos_flavour,
+       bfd_target_ovax_flavour,
+       bfd_target_evax_flavour,
+       bfd_target_mmo_flavour,
+       bfd_target_mach_o_flavour,
+       bfd_target_pef_flavour,
+       bfd_target_pef_xlib_flavour,
+       bfd_target_sym_flavour
+     };
+
+     enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
+
+     /* Forward declaration.  */
+     typedef struct bfd_link_info _bfd_link_info;
+
+     typedef struct bfd_target
+     {
+       /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
+       char *name;
+
+      /* The "flavour" of a back end is a general indication about
+         the contents of a file.  */
+       enum bfd_flavour flavour;
+
+       /* The order of bytes within the data area of a file.  */
+       enum bfd_endian byteorder;
+
+      /* The order of bytes within the header parts of a file.  */
+       enum bfd_endian header_byteorder;
+
+       /* A mask of all the flags which an executable may have set -
+          from the set `BFD_NO_FLAGS', `HAS_RELOC', ...`D_PAGED'.  */
+       flagword object_flags;
+
+      /* A mask of all the flags which a section may have set - from
+         the set `SEC_NO_FLAGS', `SEC_ALLOC', ...`SET_NEVER_LOAD'.  */
+       flagword section_flags;
+
+      /* The character normally found at the front of a symbol.
+         (if any), perhaps `_'.  */
+       char symbol_leading_char;
+
+      /* The pad character for file names within an archive header.  */
+       char ar_pad_char;
+
+       /* The maximum number of characters in an archive header.  */
+       unsigned short ar_max_namelen;
+
+       /* Entries for byte swapping for data. These are different from the
+          other entry points, since they don't take a BFD as the first argument.
+          Certain other handlers could do the same.  */
+       bfd_uint64_t   (*bfd_getx64) (const void *);
+       bfd_int64_t    (*bfd_getx_signed_64) (const void *);
+       void           (*bfd_putx64) (bfd_uint64_t, void *);
+       bfd_vma        (*bfd_getx32) (const void *);
+       bfd_signed_vma (*bfd_getx_signed_32) (const void *);
+       void           (*bfd_putx32) (bfd_vma, void *);
+       bfd_vma        (*bfd_getx16) (const void *);
+       bfd_signed_vma (*bfd_getx_signed_16) (const void *);
+       void           (*bfd_putx16) (bfd_vma, void *);
+
+       /* Byte swapping for the headers.  */
+       bfd_uint64_t   (*bfd_h_getx64) (const void *);
+       bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
+       void           (*bfd_h_putx64) (bfd_uint64_t, void *);
+       bfd_vma        (*bfd_h_getx32) (const void *);
+       bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
+       void           (*bfd_h_putx32) (bfd_vma, void *);
+       bfd_vma        (*bfd_h_getx16) (const void *);
+       bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
+       void           (*bfd_h_putx16) (bfd_vma, void *);
+
+       /* Format dependent routines: these are vectors of entry points
+          within the target vector structure, one for each format to check.  */
+
+       /* Check the format of a file being read.  Return a `bfd_target *' or zero.  */
+       const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
+
+       /* Set the format of a file being written.  */
+       bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
+
+       /* Write cached information into a file being written, at `bfd_close'.  */
+       bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
+   The general target vector.  These vectors are initialized using the
+BFD_JUMP_TABLE macros.
+
+       /* Generic entry points.  */
+     #define BFD_JUMP_TABLE_GENERIC(NAME) \
+       NAME##_close_and_cleanup, \
+       NAME##_bfd_free_cached_info, \
+       NAME##_new_section_hook, \
+       NAME##_get_section_contents, \
+       NAME##_get_section_contents_in_window
+
+       /* Called when the BFD is being closed to do any necessary cleanup.  */
+       bfd_boolean (*_close_and_cleanup) (bfd *);
+       /* Ask the BFD to free all cached information.  */
+       bfd_boolean (*_bfd_free_cached_info) (bfd *);
+       /* Called when a new section is created.  */
+       bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
+       /* Read the contents of a section.  */
+       bfd_boolean (*_bfd_get_section_contents)
+         (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
+       bfd_boolean (*_bfd_get_section_contents_in_window)
+         (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
+
+       /* Entry points to copy private data.  */
+     #define BFD_JUMP_TABLE_COPY(NAME) \
+       NAME##_bfd_copy_private_bfd_data, \
+       NAME##_bfd_merge_private_bfd_data, \
+       _bfd_generic_init_private_section_data, \
+       NAME##_bfd_copy_private_section_data, \
+       NAME##_bfd_copy_private_symbol_data, \
+       NAME##_bfd_copy_private_header_data, \
+       NAME##_bfd_set_private_flags, \
+       NAME##_bfd_print_private_bfd_data
+
+       /* Called to copy BFD general private data from one object file
+          to another.  */
+       bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
+       /* Called to merge BFD general private data from one object file
+          to a common output file when linking.  */
+       bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
+       /* Called to initialize BFD private section data from one object file
+          to another.  */
+     #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
+       BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
+       bfd_boolean (*_bfd_init_private_section_data)
+         (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
+       /* Called to copy BFD private section data from one object file
+          to another.  */
+       bfd_boolean (*_bfd_copy_private_section_data)
+         (bfd *, sec_ptr, bfd *, sec_ptr);
+       /* Called to copy BFD private symbol data from one symbol
+          to another.  */
+       bfd_boolean (*_bfd_copy_private_symbol_data)
+         (bfd *, asymbol *, bfd *, asymbol *);
+       /* Called to copy BFD private header data from one object file
+          to another.  */
+       bfd_boolean (*_bfd_copy_private_header_data)
+         (bfd *, bfd *);
+       /* Called to set private backend flags.  */
+       bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
+
+       /* Called to print private BFD data.  */
+       bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
+
+       /* Core file entry points.  */
+     #define BFD_JUMP_TABLE_CORE(NAME) \
+       NAME##_core_file_failing_command, \
+       NAME##_core_file_failing_signal, \
+       NAME##_core_file_matches_executable_p
+
+       char *      (*_core_file_failing_command) (bfd *);
+       int         (*_core_file_failing_signal) (bfd *);
+       bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
+
+       /* Archive entry points.  */
+     #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
+       NAME##_slurp_armap, \
+       NAME##_slurp_extended_name_table, \
+       NAME##_construct_extended_name_table, \
+       NAME##_truncate_arname, \
+       NAME##_write_armap, \
+       NAME##_read_ar_hdr, \
+       NAME##_openr_next_archived_file, \
+       NAME##_get_elt_at_index, \
+       NAME##_generic_stat_arch_elt, \
+       NAME##_update_armap_timestamp
+
+       bfd_boolean (*_bfd_slurp_armap) (bfd *);
+       bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
+       bfd_boolean (*_bfd_construct_extended_name_table)
+         (bfd *, char **, bfd_size_type *, const char **);
+       void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
+       bfd_boolean (*write_armap)
+         (bfd *, unsigned int, struct orl *, unsigned int, int);
+       void *      (*_bfd_read_ar_hdr_fn) (bfd *);
+       bfd *       (*openr_next_archived_file) (bfd *, bfd *);
+     #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
+       bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
+       int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
+       bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
+
+       /* Entry points used for symbols.  */
+     #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
+       NAME##_get_symtab_upper_bound, \
+       NAME##_canonicalize_symtab, \
+       NAME##_make_empty_symbol, \
+       NAME##_print_symbol, \
+       NAME##_get_symbol_info, \
+       NAME##_bfd_is_local_label_name, \
+       NAME##_bfd_is_target_special_symbol, \
+       NAME##_get_lineno, \
+       NAME##_find_nearest_line, \
+       _bfd_generic_find_line, \
+       NAME##_find_inliner_info, \
+       NAME##_bfd_make_debug_symbol, \
+       NAME##_read_minisymbols, \
+       NAME##_minisymbol_to_symbol
+
+       long        (*_bfd_get_symtab_upper_bound) (bfd *);
+       long        (*_bfd_canonicalize_symtab)
+         (bfd *, struct bfd_symbol **);
+       struct bfd_symbol *
+                   (*_bfd_make_empty_symbol) (bfd *);
+       void        (*_bfd_print_symbol)
+         (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
+     #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
+       void        (*_bfd_get_symbol_info)
+         (bfd *, struct bfd_symbol *, symbol_info *);
+     #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
+       bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
+       bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
+       alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
+       bfd_boolean (*_bfd_find_nearest_line)
+         (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
+          const char **, const char **, unsigned int *);
+       bfd_boolean (*_bfd_find_line)
+         (bfd *, struct bfd_symbol **, struct bfd_symbol *,
+          const char **, unsigned int *);
+       bfd_boolean (*_bfd_find_inliner_info)
+         (bfd *, const char **, const char **, unsigned int *);
+      /* Back-door to allow format-aware applications to create debug symbols
+         while using BFD for everything else.  Currently used by the assembler
+         when creating COFF files.  */
+       asymbol *   (*_bfd_make_debug_symbol)
+         (bfd *, void *, unsigned long size);
+     #define bfd_read_minisymbols(b, d, m, s) \
+       BFD_SEND (b, _read_minisymbols, (b, d, m, s))
+       long        (*_read_minisymbols)
+         (bfd *, bfd_boolean, void **, unsigned int *);
+     #define bfd_minisymbol_to_symbol(b, d, m, f) \
+       BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
+       asymbol *   (*_minisymbol_to_symbol)
+         (bfd *, bfd_boolean, const void *, asymbol *);
+
+       /* Routines for relocs.  */
+     #define BFD_JUMP_TABLE_RELOCS(NAME) \
+       NAME##_get_reloc_upper_bound, \
+       NAME##_canonicalize_reloc, \
+       NAME##_bfd_reloc_type_lookup
+
+       long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
+       long        (*_bfd_canonicalize_reloc)
+         (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
+       /* See documentation on reloc types.  */
+       reloc_howto_type *
+                   (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
+
+       /* Routines used when writing an object file.  */
+     #define BFD_JUMP_TABLE_WRITE(NAME) \
+       NAME##_set_arch_mach, \
+       NAME##_set_section_contents
+
+       bfd_boolean (*_bfd_set_arch_mach)
+         (bfd *, enum bfd_architecture, unsigned long);
+       bfd_boolean (*_bfd_set_section_contents)
+         (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
+
+       /* Routines used by the linker.  */
+     #define BFD_JUMP_TABLE_LINK(NAME) \
+       NAME##_sizeof_headers, \
+       NAME##_bfd_get_relocated_section_contents, \
+       NAME##_bfd_relax_section, \
+       NAME##_bfd_link_hash_table_create, \
+       NAME##_bfd_link_hash_table_free, \
+       NAME##_bfd_link_add_symbols, \
+       NAME##_bfd_link_just_syms, \
+       NAME##_bfd_final_link, \
+       NAME##_bfd_link_split_section, \
+       NAME##_bfd_gc_sections, \
+       NAME##_bfd_merge_sections, \
+       NAME##_bfd_is_group_section, \
+       NAME##_bfd_discard_group, \
+       NAME##_section_already_linked \
+
+       int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
+       bfd_byte *  (*_bfd_get_relocated_section_contents)
+         (bfd *, struct bfd_link_info *, struct bfd_link_order *,
+          bfd_byte *, bfd_boolean, struct bfd_symbol **);
+
+       bfd_boolean (*_bfd_relax_section)
+         (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
+
+       /* Create a hash table for the linker.  Different backends store
+          different information in this table.  */
+       struct bfd_link_hash_table *
+                   (*_bfd_link_hash_table_create) (bfd *);
+
+       /* Release the memory associated with the linker hash table.  */
+       void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
+
+       /* Add symbols from this object file into the hash table.  */
+       bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
+
+       /* Indicate that we are only retrieving symbol values from this section.  */
+       void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
+
+       /* Do a link based on the link_order structures attached to each
+          section of the BFD.  */
+       bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
+
+       /* Should this section be split up into smaller pieces during linking.  */
+       bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
+
+       /* Remove sections that are not referenced from the output.  */
+       bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
+
+       /* Attempt to merge SEC_MERGE sections.  */
+       bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
+
+       /* Is this section a member of a group?  */
+       bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
+
+       /* Discard members of a group.  */
+       bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
+
+       /* Check if SEC has been already linked during a reloceatable or
+          final link.  */
+       void (*_section_already_linked) (bfd *, struct bfd_section *,
+                                        struct bfd_link_info *);
+
+       /* Routines to handle dynamic symbols and relocs.  */
+     #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
+       NAME##_get_dynamic_symtab_upper_bound, \
+       NAME##_canonicalize_dynamic_symtab, \
+       NAME##_get_synthetic_symtab, \
+       NAME##_get_dynamic_reloc_upper_bound, \
+       NAME##_canonicalize_dynamic_reloc
+
+       /* Get the amount of memory required to hold the dynamic symbols.  */
+       long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
+       /* Read in the dynamic symbols.  */
+       long        (*_bfd_canonicalize_dynamic_symtab)
+         (bfd *, struct bfd_symbol **);
+       /* Create synthetized symbols.  */
+       long        (*_bfd_get_synthetic_symtab)
+         (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
+          struct bfd_symbol **);
+       /* Get the amount of memory required to hold the dynamic relocs.  */
+       long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
+       /* Read in the dynamic relocs.  */
+       long        (*_bfd_canonicalize_dynamic_reloc)
+         (bfd *, arelent **, struct bfd_symbol **);
+   A pointer to an alternative bfd_target in case the current one is not
+satisfactory.  This can happen when the target cpu supports both big
+and little endian code, and target chosen by the linker has the wrong
+endianness.  The function open_output() in ld/ldlang.c uses this field
+to find an alternative output format that is suitable.
+       /* Opposite endian version of this target.  */
+       const struct bfd_target * alternative_target;
+
+       /* Data for use by back-end routines, which isn't
+          generic enough to belong in this structure.  */
+       const void *backend_data;
+
+     } bfd_target;
+
+2.12.1.1 `bfd_set_default_target'
+.................................
+
+*Synopsis*
+     bfd_boolean bfd_set_default_target (const char *name);
+   *Description*
+Set the default target vector to use when recognizing a BFD.  This
+takes the name of the target, which may be a BFD target name or a
+configuration triplet.
+
+2.12.1.2 `bfd_find_target'
+..........................
+
+*Synopsis*
+     const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
+   *Description*
+Return a pointer to the transfer vector for the object target named
+TARGET_NAME.  If TARGET_NAME is `NULL', choose the one in the
+environment variable `GNUTARGET'; if that is null or not defined, then
+choose the first entry in the target list.  Passing in the string
+"default" or setting the environment variable to "default" will cause
+the first entry in the target list to be returned, and
+"target_defaulted" will be set in the BFD if ABFD isn't `NULL'.  This
+causes `bfd_check_format' to loop over all the targets to find the one
+that matches the file being read.
+
+2.12.1.3 `bfd_target_list'
+..........................
+
+*Synopsis*
+     const char ** bfd_target_list (void);
+   *Description*
+Return a freshly malloced NULL-terminated vector of the names of all
+the valid BFD targets. Do not modify the names.
+
+2.12.1.4 `bfd_seach_for_target'
+...............................
+
+*Synopsis*
+     const bfd_target *bfd_search_for_target
+        (int (*search_func) (const bfd_target *, void *),
+         void *);
+   *Description*
+Return a pointer to the first transfer vector in the list of transfer
+vectors maintained by BFD that produces a non-zero result when passed
+to the function SEARCH_FUNC.  The parameter DATA is passed, unexamined,
+to the search function.
+
+\1f
+File: bfd.info,  Node: Architectures,  Next: Opening and Closing,  Prev: Targets,  Up: BFD front end
+
+2.13 Architectures
+==================
+
+BFD keeps one atom in a BFD describing the architecture of the data
+attached to the BFD: a pointer to a `bfd_arch_info_type'.
+
+   Pointers to structures can be requested independently of a BFD so
+that an architecture's information can be interrogated without access
+to an open BFD.
+
+   The architecture information is provided by each architecture
+package.  The set of default architectures is selected by the macro
+`SELECT_ARCHITECTURES'.  This is normally set up in the
+`config/TARGET.mt' file of your choice.  If the name is not defined,
+then all the architectures supported are included.
+
+   When BFD starts up, all the architectures are called with an
+initialize method.  It is up to the architecture back end to insert as
+many items into the list of architectures as it wants to; generally
+this would be one for each machine and one for the default case (an
+item with a machine field of 0).
+
+   BFD's idea of an architecture is implemented in `archures.c'.
+
+2.13.1 bfd_architecture
+-----------------------
+
+*Description*
+This enum gives the object file's CPU architecture, in a global
+sense--i.e., what processor family does it belong to?  Another field
+indicates which processor within the family is in use.  The machine
+gives a number which distinguishes different versions of the
+architecture, containing, for example, 2 and 3 for Intel i960 KA and
+i960 KB, and 68020 and 68030 for Motorola 68020 and 68030.
+     enum bfd_architecture
+     {
+       bfd_arch_unknown,   /* File arch not known.  */
+       bfd_arch_obscure,   /* Arch known, not one of these.  */
+       bfd_arch_m68k,      /* Motorola 68xxx */
+     #define bfd_mach_m68000 1
+     #define bfd_mach_m68008 2
+     #define bfd_mach_m68010 3
+     #define bfd_mach_m68020 4
+     #define bfd_mach_m68030 5
+     #define bfd_mach_m68040 6
+     #define bfd_mach_m68060 7
+     #define bfd_mach_cpu32  8
+     #define bfd_mach_mcf_isa_a_nodiv 9
+     #define bfd_mach_mcf_isa_a 10
+     #define bfd_mach_mcf_isa_a_mac 11
+     #define bfd_mach_mcf_isa_a_emac 12
+     #define bfd_mach_mcf_isa_aplus 13
+     #define bfd_mach_mcf_isa_aplus_mac 14
+     #define bfd_mach_mcf_isa_aplus_emac 15
+     #define bfd_mach_mcf_isa_b_nousp 16
+     #define bfd_mach_mcf_isa_b_nousp_mac 17
+     #define bfd_mach_mcf_isa_b_nousp_emac 18
+     #define bfd_mach_mcf_isa_b 19
+     #define bfd_mach_mcf_isa_b_mac 20
+     #define bfd_mach_mcf_isa_b_emac 21
+     #define bfd_mach_mcf_isa_b_float 22
+     #define bfd_mach_mcf_isa_b_float_mac 23
+     #define bfd_mach_mcf_isa_b_float_emac 24
+       bfd_arch_vax,       /* DEC Vax */
+       bfd_arch_i960,      /* Intel 960 */
+         /* The order of the following is important.
+            lower number indicates a machine type that
+            only accepts a subset of the instructions
+            available to machines with higher numbers.
+            The exception is the "ca", which is
+            incompatible with all other machines except
+            "core".  */
+
+     #define bfd_mach_i960_core      1
+     #define bfd_mach_i960_ka_sa     2
+     #define bfd_mach_i960_kb_sb     3
+     #define bfd_mach_i960_mc        4
+     #define bfd_mach_i960_xa        5
+     #define bfd_mach_i960_ca        6
+     #define bfd_mach_i960_jx        7
+     #define bfd_mach_i960_hx        8
+
+       bfd_arch_or32,      /* OpenRISC 32 */
+
+       bfd_arch_sparc,     /* SPARC */
+     #define bfd_mach_sparc                 1
+     /* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
+     #define bfd_mach_sparc_sparclet        2
+     #define bfd_mach_sparc_sparclite       3
+     #define bfd_mach_sparc_v8plus          4
+     #define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
+     #define bfd_mach_sparc_sparclite_le    6
+     #define bfd_mach_sparc_v9              7
+     #define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
+     #define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
+     #define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
+     /* Nonzero if MACH has the v9 instruction set.  */
+     #define bfd_mach_sparc_v9_p(mach) \
+       ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
+        && (mach) != bfd_mach_sparc_sparclite_le)
+     /* Nonzero if MACH is a 64 bit sparc architecture.  */
+     #define bfd_mach_sparc_64bit_p(mach) \
+       ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
+       bfd_arch_spu,       /* PowerPC SPU */
+     #define bfd_mach_spu           256
+       bfd_arch_mips,      /* MIPS Rxxxx */
+     #define bfd_mach_mips3000              3000
+     #define bfd_mach_mips3900              3900
+     #define bfd_mach_mips4000              4000
+     #define bfd_mach_mips4010              4010
+     #define bfd_mach_mips4100              4100
+     #define bfd_mach_mips4111              4111
+     #define bfd_mach_mips4120              4120
+     #define bfd_mach_mips4300              4300
+     #define bfd_mach_mips4400              4400
+     #define bfd_mach_mips4600              4600
+     #define bfd_mach_mips4650              4650
+     #define bfd_mach_mips5000              5000
+     #define bfd_mach_mips5400              5400
+     #define bfd_mach_mips5500              5500
+     #define bfd_mach_mips6000              6000
+     #define bfd_mach_mips7000              7000
+     #define bfd_mach_mips8000              8000
+     #define bfd_mach_mips9000              9000
+     #define bfd_mach_mips10000             10000
+     #define bfd_mach_mips12000             12000
+     #define bfd_mach_mips16                16
+     #define bfd_mach_mips5                 5
+     #define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
+     #define bfd_mach_mipsisa32             32
+     #define bfd_mach_mipsisa32r2           33
+     #define bfd_mach_mipsisa64             64
+     #define bfd_mach_mipsisa64r2           65
+       bfd_arch_i386,      /* Intel 386 */
+     #define bfd_mach_i386_i386 1
+     #define bfd_mach_i386_i8086 2
+     #define bfd_mach_i386_i386_intel_syntax 3
+     #define bfd_mach_x86_64 64
+     #define bfd_mach_x86_64_intel_syntax 65
+       bfd_arch_we32k,     /* AT&T WE32xxx */
+       bfd_arch_tahoe,     /* CCI/Harris Tahoe */
+       bfd_arch_i860,      /* Intel 860 */
+       bfd_arch_i370,      /* IBM 360/370 Mainframes */
+       bfd_arch_romp,      /* IBM ROMP PC/RT */
+       bfd_arch_convex,    /* Convex */
+       bfd_arch_m88k,      /* Motorola 88xxx */
+       bfd_arch_m98k,      /* Motorola 98xxx */
+       bfd_arch_pyramid,   /* Pyramid Technology */
+       bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
+     #define bfd_mach_h8300    1
+     #define bfd_mach_h8300h   2
+     #define bfd_mach_h8300s   3
+     #define bfd_mach_h8300hn  4
+     #define bfd_mach_h8300sn  5
+     #define bfd_mach_h8300sx  6
+     #define bfd_mach_h8300sxn 7
+       bfd_arch_pdp11,     /* DEC PDP-11 */
+       bfd_arch_powerpc,   /* PowerPC */
+     #define bfd_mach_ppc           32
+     #define bfd_mach_ppc64         64
+     #define bfd_mach_ppc_403       403
+     #define bfd_mach_ppc_403gc     4030
+     #define bfd_mach_ppc_505       505
+     #define bfd_mach_ppc_601       601
+     #define bfd_mach_ppc_602       602
+     #define bfd_mach_ppc_603       603
+     #define bfd_mach_ppc_ec603e    6031
+     #define bfd_mach_ppc_604       604
+     #define bfd_mach_ppc_620       620
+     #define bfd_mach_ppc_630       630
+     #define bfd_mach_ppc_750       750
+     #define bfd_mach_ppc_860       860
+     #define bfd_mach_ppc_a35       35
+     #define bfd_mach_ppc_rs64ii    642
+     #define bfd_mach_ppc_rs64iii   643
+     #define bfd_mach_ppc_7400      7400
+     #define bfd_mach_ppc_e500      500
+       bfd_arch_rs6000,    /* IBM RS/6000 */
+     #define bfd_mach_rs6k          6000
+     #define bfd_mach_rs6k_rs1      6001
+     #define bfd_mach_rs6k_rsc      6003
+     #define bfd_mach_rs6k_rs2      6002
+       bfd_arch_hppa,      /* HP PA RISC */
+     #define bfd_mach_hppa10        10
+     #define bfd_mach_hppa11        11
+     #define bfd_mach_hppa20        20
+     #define bfd_mach_hppa20w       25
+       bfd_arch_d10v,      /* Mitsubishi D10V */
+     #define bfd_mach_d10v          1
+     #define bfd_mach_d10v_ts2      2
+     #define bfd_mach_d10v_ts3      3
+       bfd_arch_d30v,      /* Mitsubishi D30V */
+       bfd_arch_dlx,       /* DLX */
+       bfd_arch_m68hc11,   /* Motorola 68HC11 */
+       bfd_arch_m68hc12,   /* Motorola 68HC12 */
+     #define bfd_mach_m6812_default 0
+     #define bfd_mach_m6812         1
+     #define bfd_mach_m6812s        2
+       bfd_arch_z8k,       /* Zilog Z8000 */
+     #define bfd_mach_z8001         1
+     #define bfd_mach_z8002         2
+       bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
+       bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
+     #define bfd_mach_sh            1
+     #define bfd_mach_sh2        0x20
+     #define bfd_mach_sh_dsp     0x2d
+     #define bfd_mach_sh2a       0x2a
+     #define bfd_mach_sh2a_nofpu 0x2b
+     #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
+     #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
+     #define bfd_mach_sh2a_or_sh4  0x2a3
+     #define bfd_mach_sh2a_or_sh3e 0x2a4
+     #define bfd_mach_sh2e       0x2e
+     #define bfd_mach_sh3        0x30
+     #define bfd_mach_sh3_nommu  0x31
+     #define bfd_mach_sh3_dsp    0x3d
+     #define bfd_mach_sh3e       0x3e
+     #define bfd_mach_sh4        0x40
+     #define bfd_mach_sh4_nofpu  0x41
+     #define bfd_mach_sh4_nommu_nofpu  0x42
+     #define bfd_mach_sh4a       0x4a
+     #define bfd_mach_sh4a_nofpu 0x4b
+     #define bfd_mach_sh4al_dsp  0x4d
+     #define bfd_mach_sh5        0x50
+       bfd_arch_alpha,     /* Dec Alpha */
+     #define bfd_mach_alpha_ev4  0x10
+     #define bfd_mach_alpha_ev5  0x20
+     #define bfd_mach_alpha_ev6  0x30
+       bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
+     #define bfd_mach_arm_unknown   0
+     #define bfd_mach_arm_2         1
+     #define bfd_mach_arm_2a        2
+     #define bfd_mach_arm_3         3
+     #define bfd_mach_arm_3M        4
+     #define bfd_mach_arm_4         5
+     #define bfd_mach_arm_4T        6
+     #define bfd_mach_arm_5         7
+     #define bfd_mach_arm_5T        8
+     #define bfd_mach_arm_5TE       9
+     #define bfd_mach_arm_XScale    10
+     #define bfd_mach_arm_ep9312    11
+     #define bfd_mach_arm_iWMMXt    12
+     #define bfd_mach_arm_iWMMXt2   13
+       bfd_arch_ns32k,     /* National Semiconductors ns32000 */
+       bfd_arch_w65,       /* WDC 65816 */
+       bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
+       bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
+     #define bfd_mach_tic3x         30
+     #define bfd_mach_tic4x         40
+       bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
+       bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
+       bfd_arch_v850,      /* NEC V850 */
+     #define bfd_mach_v850          1
+     #define bfd_mach_v850e         'E'
+     #define bfd_mach_v850e1        '1'
+       bfd_arch_arc,       /* ARC Cores */
+     #define bfd_mach_arc_5         5
+     #define bfd_mach_arc_6         6
+     #define bfd_mach_arc_7         7
+     #define bfd_mach_arc_8         8
+      bfd_arch_m32c,     /* Renesas M16C/M32C.  */
+     #define bfd_mach_m16c        0x75
+     #define bfd_mach_m32c        0x78
+       bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
+     #define bfd_mach_m32r          1 /* For backwards compatibility.  */
+     #define bfd_mach_m32rx         'x'
+     #define bfd_mach_m32r2         '2'
+       bfd_arch_mn10200,   /* Matsushita MN10200 */
+       bfd_arch_mn10300,   /* Matsushita MN10300 */
+     #define bfd_mach_mn10300               300
+     #define bfd_mach_am33          330
+     #define bfd_mach_am33_2        332
+       bfd_arch_fr30,
+     #define bfd_mach_fr30          0x46523330
+       bfd_arch_frv,
+     #define bfd_mach_frv           1
+     #define bfd_mach_frvsimple     2
+     #define bfd_mach_fr300         300
+     #define bfd_mach_fr400         400
+     #define bfd_mach_fr450         450
+     #define bfd_mach_frvtomcat     499     /* fr500 prototype */
+     #define bfd_mach_fr500         500
+     #define bfd_mach_fr550         550
+       bfd_arch_mcore,
+       bfd_arch_ia64,      /* HP/Intel ia64 */
+     #define bfd_mach_ia64_elf64    64
+     #define bfd_mach_ia64_elf32    32
+       bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
+     #define bfd_mach_ip2022        1
+     #define bfd_mach_ip2022ext     2
+      bfd_arch_iq2000,     /* Vitesse IQ2000.  */
+     #define bfd_mach_iq2000        1
+     #define bfd_mach_iq10          2
+       bfd_arch_mt,
+     #define bfd_mach_ms1           1
+     #define bfd_mach_mrisc2        2
+     #define bfd_mach_ms2           3
+       bfd_arch_pj,
+       bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
+     #define bfd_mach_avr1          1
+     #define bfd_mach_avr2          2
+     #define bfd_mach_avr3          3
+     #define bfd_mach_avr4          4
+     #define bfd_mach_avr5          5
+     #define bfd_mach_avr6          6
+       bfd_arch_bfin,        /* ADI Blackfin */
+     #define bfd_mach_bfin          1
+       bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
+     #define bfd_mach_cr16c         1
+       bfd_arch_crx,       /*  National Semiconductor CRX.  */
+     #define bfd_mach_crx           1
+       bfd_arch_cris,      /* Axis CRIS */
+     #define bfd_mach_cris_v0_v10   255
+     #define bfd_mach_cris_v32      32
+     #define bfd_mach_cris_v10_v32  1032
+       bfd_arch_s390,      /* IBM s390 */
+     #define bfd_mach_s390_31       31
+     #define bfd_mach_s390_64       64
+       bfd_arch_score,     /* Sunplus score */
+       bfd_arch_openrisc,  /* OpenRISC */
+       bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
+       bfd_arch_xstormy16,
+     #define bfd_mach_xstormy16     1
+       bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
+     #define bfd_mach_msp11          11
+     #define bfd_mach_msp110         110
+     #define bfd_mach_msp12          12
+     #define bfd_mach_msp13          13
+     #define bfd_mach_msp14          14
+     #define bfd_mach_msp15          15
+     #define bfd_mach_msp16          16
+     #define bfd_mach_msp21          21
+     #define bfd_mach_msp31          31
+     #define bfd_mach_msp32          32
+     #define bfd_mach_msp33          33
+     #define bfd_mach_msp41          41
+     #define bfd_mach_msp42          42
+     #define bfd_mach_msp43          43
+     #define bfd_mach_msp44          44
+       bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
+     #define bfd_mach_xc16x         1
+     #define bfd_mach_xc16xl        2
+     #define bfd_mach_xc16xs         3
+       bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
+     #define bfd_mach_xtensa        1
+        bfd_arch_maxq,     /* Dallas MAXQ 10/20 */
+     #define bfd_mach_maxq10    10
+     #define bfd_mach_maxq20    20
+       bfd_arch_z80,
+     #define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
+     #define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
+     #define bfd_mach_z80full        7 /* All undocumented instructions.  */
+     #define bfd_mach_r800           11 /* R800: successor with multiplication.  */
+       bfd_arch_last
+       };
+
+2.13.2 bfd_arch_info
+--------------------
+
+*Description*
+This structure contains information on architectures for use within BFD.
+
+     typedef struct bfd_arch_info
+     {
+       int bits_per_word;
+       int bits_per_address;
+       int bits_per_byte;
+       enum bfd_architecture arch;
+       unsigned long mach;
+       const char *arch_name;
+       const char *printable_name;
+       unsigned int section_align_power;
+       /* TRUE if this is the default machine for the architecture.
+          The default arch should be the first entry for an arch so that
+          all the entries for that arch can be accessed via `next'.  */
+       bfd_boolean the_default;
+       const struct bfd_arch_info * (*compatible)
+         (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
+
+       bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
+
+       const struct bfd_arch_info *next;
+     }
+     bfd_arch_info_type;
+
+2.13.2.1 `bfd_printable_name'
+.............................
+
+*Synopsis*
+     const char *bfd_printable_name (bfd *abfd);
+   *Description*
+Return a printable string representing the architecture and machine
+from the pointer to the architecture info structure.
+
+2.13.2.2 `bfd_scan_arch'
+........................
+
+*Synopsis*
+     const bfd_arch_info_type *bfd_scan_arch (const char *string);
+   *Description*
+Figure out if BFD supports any cpu which could be described with the
+name STRING.  Return a pointer to an `arch_info' structure if a machine
+is found, otherwise NULL.
+
+2.13.2.3 `bfd_arch_list'
+........................
+
+*Synopsis*
+     const char **bfd_arch_list (void);
+   *Description*
+Return a freshly malloced NULL-terminated vector of the names of all
+the valid BFD architectures.  Do not modify the names.
+
+2.13.2.4 `bfd_arch_get_compatible'
+..................................
+
+*Synopsis*
+     const bfd_arch_info_type *bfd_arch_get_compatible
+        (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
+   *Description*
+Determine whether two BFDs' architectures and machine types are
+compatible.  Calculates the lowest common denominator between the two
+architectures and machine types implied by the BFDs and returns a
+pointer to an `arch_info' structure describing the compatible machine.
+
+2.13.2.5 `bfd_default_arch_struct'
+..................................
+
+*Description*
+The `bfd_default_arch_struct' is an item of `bfd_arch_info_type' which
+has been initialized to a fairly generic state.  A BFD starts life by
+pointing to this structure, until the correct back end has determined
+the real architecture of the file.
+     extern const bfd_arch_info_type bfd_default_arch_struct;
+
+2.13.2.6 `bfd_set_arch_info'
+............................
+
+*Synopsis*
+     void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
+   *Description*
+Set the architecture info of ABFD to ARG.
+
+2.13.2.7 `bfd_default_set_arch_mach'
+....................................
+
+*Synopsis*
+     bfd_boolean bfd_default_set_arch_mach
+        (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
+   *Description*
+Set the architecture and machine type in BFD ABFD to ARCH and MACH.
+Find the correct pointer to a structure and insert it into the
+`arch_info' pointer.
+
+2.13.2.8 `bfd_get_arch'
+.......................
+
+*Synopsis*
+     enum bfd_architecture bfd_get_arch (bfd *abfd);
+   *Description*
+Return the enumerated type which describes the BFD ABFD's architecture.
+
+2.13.2.9 `bfd_get_mach'
+.......................
+
+*Synopsis*
+     unsigned long bfd_get_mach (bfd *abfd);
+   *Description*
+Return the long type which describes the BFD ABFD's machine.
+
+2.13.2.10 `bfd_arch_bits_per_byte'
+..................................
+
+*Synopsis*
+     unsigned int bfd_arch_bits_per_byte (bfd *abfd);
+   *Description*
+Return the number of bits in one of the BFD ABFD's architecture's bytes.
+
+2.13.2.11 `bfd_arch_bits_per_address'
+.....................................
+
+*Synopsis*
+     unsigned int bfd_arch_bits_per_address (bfd *abfd);
+   *Description*
+Return the number of bits in one of the BFD ABFD's architecture's
+addresses.
+
+2.13.2.12 `bfd_default_compatible'
+..................................
+
+*Synopsis*
+     const bfd_arch_info_type *bfd_default_compatible
+        (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
+   *Description*
+The default function for testing for compatibility.
+
+2.13.2.13 `bfd_default_scan'
+............................
+
+*Synopsis*
+     bfd_boolean bfd_default_scan
+        (const struct bfd_arch_info *info, const char *string);
+   *Description*
+The default function for working out whether this is an architecture
+hit and a machine hit.
+
+2.13.2.14 `bfd_get_arch_info'
+.............................
+
+*Synopsis*
+     const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
+   *Description*
+Return the architecture info struct in ABFD.
+
+2.13.2.15 `bfd_lookup_arch'
+...........................
+
+*Synopsis*
+     const bfd_arch_info_type *bfd_lookup_arch
+        (enum bfd_architecture arch, unsigned long machine);
+   *Description*
+Look for the architecture info structure which matches the arguments
+ARCH and MACHINE. A machine of 0 matches the machine/architecture
+structure which marks itself as the default.
+
+2.13.2.16 `bfd_printable_arch_mach'
+...................................
+
+*Synopsis*
+     const char *bfd_printable_arch_mach
+        (enum bfd_architecture arch, unsigned long machine);
+   *Description*
+Return a printable string representing the architecture and machine
+type.
+
+   This routine is depreciated.
+
+2.13.2.17 `bfd_octets_per_byte'
+...............................
+
+*Synopsis*
+     unsigned int bfd_octets_per_byte (bfd *abfd);
+   *Description*
+Return the number of octets (8-bit quantities) per target byte (minimum
+addressable unit).  In most cases, this will be one, but some DSP
+targets have 16, 32, or even 48 bits per byte.
+
+2.13.2.18 `bfd_arch_mach_octets_per_byte'
+.........................................
+
+*Synopsis*
+     unsigned int bfd_arch_mach_octets_per_byte
+        (enum bfd_architecture arch, unsigned long machine);
+   *Description*
+See bfd_octets_per_byte.
+
+   This routine is provided for those cases where a bfd * is not
+available
+
+\1f
+File: bfd.info,  Node: Opening and Closing,  Next: Internal,  Prev: Architectures,  Up: BFD front end
+
+2.14 Opening and closing BFDs
+=============================
+
+2.14.1 Functions for opening and closing
+----------------------------------------
+
+2.14.1.1 `bfd_fopen'
+....................
+
+*Synopsis*
+     bfd *bfd_fopen (const char *filename, const char *target,
+         const char *mode, int fd);
+   *Description*
+Open the file FILENAME with the target TARGET.  Return a pointer to the
+created BFD.  If FD is not -1, then `fdopen' is used to open the file;
+otherwise, `fopen' is used.  MODE is passed directly to `fopen' or
+`fdopen'.
+
+   Calls `bfd_find_target', so TARGET is interpreted as by that
+function.
+
+   The new BFD is marked as cacheable iff FD is -1.
+
+   If `NULL' is returned then an error has occured.   Possible errors
+are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call'
+error.
+
+2.14.1.2 `bfd_openr'
+....................
+
+*Synopsis*
+     bfd *bfd_openr (const char *filename, const char *target);
+   *Description*
+Open the file FILENAME (using `fopen') with the target TARGET.  Return
+a pointer to the created BFD.
+
+   Calls `bfd_find_target', so TARGET is interpreted as by that
+function.
+
+   If `NULL' is returned then an error has occured.   Possible errors
+are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call'
+error.
+
+2.14.1.3 `bfd_fdopenr'
+......................
+
+*Synopsis*
+     bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
+   *Description*
+`bfd_fdopenr' is to `bfd_fopenr' much like `fdopen' is to `fopen'.  It
+opens a BFD on a file already described by the FD supplied.
+
+   When the file is later `bfd_close'd, the file descriptor will be
+closed.  If the caller desires that this file descriptor be cached by
+BFD (opened as needed, closed as needed to free descriptors for other
+opens), with the supplied FD used as an initial file descriptor (but
+subject to closure at any time), call bfd_set_cacheable(bfd, 1) on the
+returned BFD.  The default is to assume no caching; the file descriptor
+will remain open until `bfd_close', and will not be affected by BFD
+operations on other files.
+
+   Possible errors are `bfd_error_no_memory',
+`bfd_error_invalid_target' and `bfd_error_system_call'.
+
+2.14.1.4 `bfd_openstreamr'
+..........................
+
+*Synopsis*
+     bfd *bfd_openstreamr (const char *, const char *, void *);
+   *Description*
+Open a BFD for read access on an existing stdio stream.  When the BFD
+is passed to `bfd_close', the stream will be closed.
+
+2.14.1.5 `bfd_openr_iovec'
+..........................
+
+*Synopsis*
+     bfd *bfd_openr_iovec (const char *filename, const char *target,
+         void *(*open) (struct bfd *nbfd,
+         void *open_closure),
+         void *open_closure,
+         file_ptr (*pread) (struct bfd *nbfd,
+         void *stream,
+         void *buf,
+         file_ptr nbytes,
+         file_ptr offset),
+         int (*close) (struct bfd *nbfd,
+         void *stream));
+   *Description*
+Create and return a BFD backed by a read-only STREAM.  The STREAM is
+created using OPEN, accessed using PREAD and destroyed using CLOSE.
+
+   Calls `bfd_find_target', so TARGET is interpreted as by that
+function.
+
+   Calls OPEN (which can call `bfd_zalloc' and `bfd_get_filename') to
+obtain the read-only stream backing the BFD.  OPEN either succeeds
+returning the non-`NULL' STREAM, or fails returning `NULL' (setting
+`bfd_error').
+
+   Calls PREAD to request NBYTES of data from STREAM starting at OFFSET
+(e.g., via a call to `bfd_read').  PREAD either succeeds returning the
+number of bytes read (which can be less than NBYTES when end-of-file),
+or fails returning -1 (setting `bfd_error').
+
+   Calls CLOSE when the BFD is later closed using `bfd_close'.  CLOSE
+either succeeds returning 0, or fails returning -1 (setting
+`bfd_error').
+
+   If `bfd_openr_iovec' returns `NULL' then an error has occurred.
+Possible errors are `bfd_error_no_memory', `bfd_error_invalid_target'
+and `bfd_error_system_call'.
+
+2.14.1.6 `bfd_openw'
+....................
+
+*Synopsis*
+     bfd *bfd_openw (const char *filename, const char *target);
+   *Description*
+Create a BFD, associated with file FILENAME, using the file format
+TARGET, and return a pointer to it.
+
+   Possible errors are `bfd_error_system_call', `bfd_error_no_memory',
+`bfd_error_invalid_target'.
+
+2.14.1.7 `bfd_close'
+....................
+
+*Synopsis*
+     bfd_boolean bfd_close (bfd *abfd);
+   *Description*
+Close a BFD. If the BFD was open for writing, then pending operations
+are completed and the file written out and closed.  If the created file
+is executable, then `chmod' is called to mark it as such.
+
+   All memory attached to the BFD is released.
+
+   The file descriptor associated with the BFD is closed (even if it
+was passed in to BFD by `bfd_fdopenr').
+
+   *Returns*
+`TRUE' is returned if all is ok, otherwise `FALSE'.
+
+2.14.1.8 `bfd_close_all_done'
+.............................
+
+*Synopsis*
+     bfd_boolean bfd_close_all_done (bfd *);
+   *Description*
+Close a BFD.  Differs from `bfd_close' since it does not complete any
+pending operations.  This routine would be used if the application had
+just used BFD for swapping and didn't want to use any of the writing
+code.
+
+   If the created file is executable, then `chmod' is called to mark it
+as such.
+
+   All memory attached to the BFD is released.
+
+   *Returns*
+`TRUE' is returned if all is ok, otherwise `FALSE'.
+
+2.14.1.9 `bfd_create'
+.....................
+
+*Synopsis*
+     bfd *bfd_create (const char *filename, bfd *templ);
+   *Description*
+Create a new BFD in the manner of `bfd_openw', but without opening a
+file. The new BFD takes the target from the target used by TEMPLATE.
+The format is always set to `bfd_object'.
+
+2.14.1.10 `bfd_make_writable'
+.............................
+
+*Synopsis*
+     bfd_boolean bfd_make_writable (bfd *abfd);
+   *Description*
+Takes a BFD as created by `bfd_create' and converts it into one like as
+returned by `bfd_openw'.  It does this by converting the BFD to
+BFD_IN_MEMORY.  It's assumed that you will call `bfd_make_readable' on
+this bfd later.
+
+   *Returns*
+`TRUE' is returned if all is ok, otherwise `FALSE'.
+
+2.14.1.11 `bfd_make_readable'
+.............................
+
+*Synopsis*
+     bfd_boolean bfd_make_readable (bfd *abfd);
+   *Description*
+Takes a BFD as created by `bfd_create' and `bfd_make_writable' and
+converts it into one like as returned by `bfd_openr'.  It does this by
+writing the contents out to the memory buffer, then reversing the
+direction.
+
+   *Returns*
+`TRUE' is returned if all is ok, otherwise `FALSE'.
+
+2.14.1.12 `bfd_alloc'
+.....................
+
+*Synopsis*
+     void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
+   *Description*
+Allocate a block of WANTED bytes of memory attached to `abfd' and
+return a pointer to it.
+
+2.14.1.13 `bfd_alloc2'
+......................
+
+*Synopsis*
+     void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
+   *Description*
+Allocate a block of NMEMB elements of SIZE bytes each of memory
+attached to `abfd' and return a pointer to it.
+
+2.14.1.14 `bfd_zalloc'
+......................
+
+*Synopsis*
+     void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
+   *Description*
+Allocate a block of WANTED bytes of zeroed memory attached to `abfd'
+and return a pointer to it.
+
+2.14.1.15 `bfd_zalloc2'
+.......................
+
+*Synopsis*
+     void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
+   *Description*
+Allocate a block of NMEMB elements of SIZE bytes each of zeroed memory
+attached to `abfd' and return a pointer to it.
+
+2.14.1.16 `bfd_calc_gnu_debuglink_crc32'
+........................................
+
+*Synopsis*
+     unsigned long bfd_calc_gnu_debuglink_crc32
+        (unsigned long crc, const unsigned char *buf, bfd_size_type len);
+   *Description*
+Computes a CRC value as used in the .gnu_debuglink section.  Advances
+the previously computed CRC value by computing and adding in the crc32
+for LEN bytes of BUF.
+
+   *Returns*
+Return the updated CRC32 value.
+
+2.14.1.17 `get_debug_link_info'
+...............................
+
+*Synopsis*
+     char *get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
+   *Description*
+fetch the filename and CRC32 value for any separate debuginfo
+associated with ABFD. Return NULL if no such info found, otherwise
+return filename and update CRC32_OUT.
+
+2.14.1.18 `separate_debug_file_exists'
+......................................
+
+*Synopsis*
+     bfd_boolean separate_debug_file_exists
+        (char *name, unsigned long crc32);
+   *Description*
+Checks to see if NAME is a file and if its contents match CRC32.
+
+2.14.1.19 `find_separate_debug_file'
+....................................
+
+*Synopsis*
+     char *find_separate_debug_file (bfd *abfd);
+   *Description*
+Searches ABFD for a reference to separate debugging information, scans
+various locations in the filesystem, including the file tree rooted at
+DEBUG_FILE_DIRECTORY, and returns a filename of such debugging
+information if the file is found and has matching CRC32.  Returns NULL
+if no reference to debugging file exists, or file cannot be found.
+
+2.14.1.20 `bfd_follow_gnu_debuglink'
+....................................
+
+*Synopsis*
+     char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
+   *Description*
+Takes a BFD and searches it for a .gnu_debuglink section.  If this
+section is found, it examines the section for the name and checksum of
+a '.debug' file containing auxiliary debugging information.  It then
+searches the filesystem for this .debug file in some standard
+locations, including the directory tree rooted at DIR, and if found
+returns the full filename.
+
+   If DIR is NULL, it will search a default path configured into libbfd
+at build time.  [XXX this feature is not currently implemented].
+
+   *Returns*
+`NULL' on any errors or failure to locate the .debug file, otherwise a
+pointer to a heap-allocated string containing the filename.  The caller
+is responsible for freeing this string.
+
+2.14.1.21 `bfd_create_gnu_debuglink_section'
+............................................
+
+*Synopsis*
+     struct bfd_section *bfd_create_gnu_debuglink_section
+        (bfd *abfd, const char *filename);
+   *Description*
+Takes a BFD and adds a .gnu_debuglink section to it.  The section is
+sized to be big enough to contain a link to the specified FILENAME.
+
+   *Returns*
+A pointer to the new section is returned if all is ok.  Otherwise
+`NULL' is returned and bfd_error is set.
+
+2.14.1.22 `bfd_fill_in_gnu_debuglink_section'
+.............................................
+
+*Synopsis*
+     bfd_boolean bfd_fill_in_gnu_debuglink_section
+        (bfd *abfd, struct bfd_section *sect, const char *filename);
+   *Description*
+Takes a BFD and containing a .gnu_debuglink section SECT and fills in
+the contents of the section to contain a link to the specified
+FILENAME.  The filename should be relative to the current directory.
+
+   *Returns*
+`TRUE' is returned if all is ok.  Otherwise `FALSE' is returned and
+bfd_error is set.
+
+\1f
+File: bfd.info,  Node: Internal,  Next: File Caching,  Prev: Opening and Closing,  Up: BFD front end
+
+2.15 Implementation details
+===========================
+
+2.15.1 Internal functions
+-------------------------
+
+*Description*
+These routines are used within BFD.  They are not intended for export,
+but are documented here for completeness.
+
+2.15.1.1 `bfd_write_bigendian_4byte_int'
+........................................
+
+*Synopsis*
+     bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
+   *Description*
+Write a 4 byte integer I to the output BFD ABFD, in big endian order
+regardless of what else is going on.  This is useful in archives.
+
+2.15.1.2 `bfd_put_size'
+.......................
+
+2.15.1.3 `bfd_get_size'
+.......................
+
+*Description*
+These macros as used for reading and writing raw data in sections; each
+access (except for bytes) is vectored through the target format of the
+BFD and mangled accordingly. The mangling performs any necessary endian
+translations and removes alignment restrictions.  Note that types
+accepted and returned by these macros are identical so they can be
+swapped around in macros--for example, `libaout.h' defines `GET_WORD'
+to either `bfd_get_32' or `bfd_get_64'.
+
+   In the put routines, VAL must be a `bfd_vma'.  If we are on a system
+without prototypes, the caller is responsible for making sure that is
+true, with a cast if necessary.  We don't cast them in the macro
+definitions because that would prevent `lint' or `gcc -Wall' from
+detecting sins such as passing a pointer.  To detect calling these with
+less than a `bfd_vma', use `gcc -Wconversion' on a host with 64 bit
+`bfd_vma''s.
+
+     /* Byte swapping macros for user section data.  */
+
+     #define bfd_put_8(abfd, val, ptr) \
+       ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
+     #define bfd_put_signed_8 \
+       bfd_put_8
+     #define bfd_get_8(abfd, ptr) \
+       (*(unsigned char *) (ptr) & 0xff)
+     #define bfd_get_signed_8(abfd, ptr) \
+       (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
+
+     #define bfd_put_16(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
+     #define bfd_put_signed_16 \
+       bfd_put_16
+     #define bfd_get_16(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx16, (ptr))
+     #define bfd_get_signed_16(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
+
+     #define bfd_put_32(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
+     #define bfd_put_signed_32 \
+       bfd_put_32
+     #define bfd_get_32(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx32, (ptr))
+     #define bfd_get_signed_32(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
+
+     #define bfd_put_64(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
+     #define bfd_put_signed_64 \
+       bfd_put_64
+     #define bfd_get_64(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx64, (ptr))
+     #define bfd_get_signed_64(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
+
+     #define bfd_get(bits, abfd, ptr)                       \
+       ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
+        : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
+        : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
+        : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
+        : (abort (), (bfd_vma) - 1))
+
+     #define bfd_put(bits, abfd, val, ptr)                  \
+       ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
+        : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
+        : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
+        : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
+        : (abort (), (void) 0))
+
+2.15.1.4 `bfd_h_put_size'
+.........................
+
+*Description*
+These macros have the same function as their `bfd_get_x' brethren,
+except that they are used for removing information for the header
+records of object files. Believe it or not, some object files keep
+their header records in big endian order and their data in little
+endian order.
+
+     /* Byte swapping macros for file header data.  */
+
+     #define bfd_h_put_8(abfd, val, ptr) \
+       bfd_put_8 (abfd, val, ptr)
+     #define bfd_h_put_signed_8(abfd, val, ptr) \
+       bfd_put_8 (abfd, val, ptr)
+     #define bfd_h_get_8(abfd, ptr) \
+       bfd_get_8 (abfd, ptr)
+     #define bfd_h_get_signed_8(abfd, ptr) \
+       bfd_get_signed_8 (abfd, ptr)
+
+     #define bfd_h_put_16(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
+     #define bfd_h_put_signed_16 \
+       bfd_h_put_16
+     #define bfd_h_get_16(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx16, (ptr))
+     #define bfd_h_get_signed_16(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
+
+     #define bfd_h_put_32(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
+     #define bfd_h_put_signed_32 \
+       bfd_h_put_32
+     #define bfd_h_get_32(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx32, (ptr))
+     #define bfd_h_get_signed_32(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
+
+     #define bfd_h_put_64(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
+     #define bfd_h_put_signed_64 \
+       bfd_h_put_64
+     #define bfd_h_get_64(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx64, (ptr))
+     #define bfd_h_get_signed_64(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
+
+     /* Aliases for the above, which should eventually go away.  */
+
+     #define H_PUT_64  bfd_h_put_64
+     #define H_PUT_32  bfd_h_put_32
+     #define H_PUT_16  bfd_h_put_16
+     #define H_PUT_8   bfd_h_put_8
+     #define H_PUT_S64 bfd_h_put_signed_64
+     #define H_PUT_S32 bfd_h_put_signed_32
+     #define H_PUT_S16 bfd_h_put_signed_16
+     #define H_PUT_S8  bfd_h_put_signed_8
+     #define H_GET_64  bfd_h_get_64
+     #define H_GET_32  bfd_h_get_32
+     #define H_GET_16  bfd_h_get_16
+     #define H_GET_8   bfd_h_get_8
+     #define H_GET_S64 bfd_h_get_signed_64
+     #define H_GET_S32 bfd_h_get_signed_32
+     #define H_GET_S16 bfd_h_get_signed_16
+     #define H_GET_S8  bfd_h_get_signed_8
+
+2.15.1.5 `bfd_log2'
+...................
+
+*Synopsis*
+     unsigned int bfd_log2 (bfd_vma x);
+   *Description*
+Return the log base 2 of the value supplied, rounded up.  E.g., an X of
+1025 returns 11.  A X of 0 returns 0.
+
+\1f
+File: bfd.info,  Node: File Caching,  Next: Linker Functions,  Prev: Internal,  Up: BFD front end
+
+2.16 File caching
+=================
+
+The file caching mechanism is embedded within BFD and allows the
+application to open as many BFDs as it wants without regard to the
+underlying operating system's file descriptor limit (often as low as 20
+open files).  The module in `cache.c' maintains a least recently used
+list of `BFD_CACHE_MAX_OPEN' files, and exports the name
+`bfd_cache_lookup', which runs around and makes sure that the required
+BFD is open. If not, then it chooses a file to close, closes it and
+opens the one wanted, returning its file handle.
+
+2.16.1 Caching functions
+------------------------
+
+2.16.1.1 `bfd_cache_init'
+.........................
+
+*Synopsis*
+     bfd_boolean bfd_cache_init (bfd *abfd);
+   *Description*
+Add a newly opened BFD to the cache.
+
+2.16.1.2 `bfd_cache_close'
+..........................
+
+*Synopsis*
+     bfd_boolean bfd_cache_close (bfd *abfd);
+   *Description*
+Remove the BFD ABFD from the cache. If the attached file is open, then
+close it too.
+
+   *Returns*
+`FALSE' is returned if closing the file fails, `TRUE' is returned if
+all is well.
+
+2.16.1.3 `bfd_cache_close_all'
+..............................
+
+*Synopsis*
+     bfd_boolean bfd_cache_close_all (void);
+   *Description*
+Remove all BFDs from the cache. If the attached file is open, then
+close it too.
+
+   *Returns*
+`FALSE' is returned if closing one of the file fails, `TRUE' is
+returned if all is well.
+
+2.16.1.4 `bfd_open_file'
+........................
+
+*Synopsis*
+     FILE* bfd_open_file (bfd *abfd);
+   *Description*
+Call the OS to open a file for ABFD.  Return the `FILE *' (possibly
+`NULL') that results from this operation.  Set up the BFD so that
+future accesses know the file is open. If the `FILE *' returned is
+`NULL', then it won't have been put in the cache, so it won't have to
+be removed from it.
+
+\1f
+File: bfd.info,  Node: Linker Functions,  Next: Hash Tables,  Prev: File Caching,  Up: BFD front end
+
+2.17 Linker Functions
+=====================
+
+The linker uses three special entry points in the BFD target vector.
+It is not necessary to write special routines for these entry points
+when creating a new BFD back end, since generic versions are provided.
+However, writing them can speed up linking and make it use
+significantly less runtime memory.
+
+   The first routine creates a hash table used by the other routines.
+The second routine adds the symbols from an object file to the hash
+table.  The third routine takes all the object files and links them
+together to create the output file.  These routines are designed so
+that the linker proper does not need to know anything about the symbols
+in the object files that it is linking.  The linker merely arranges the
+sections as directed by the linker script and lets BFD handle the
+details of symbols and relocs.
+
+   The second routine and third routines are passed a pointer to a
+`struct bfd_link_info' structure (defined in `bfdlink.h') which holds
+information relevant to the link, including the linker hash table
+(which was created by the first routine) and a set of callback
+functions to the linker proper.
+
+   The generic linker routines are in `linker.c', and use the header
+file `genlink.h'.  As of this writing, the only back ends which have
+implemented versions of these routines are a.out (in `aoutx.h') and
+ECOFF (in `ecoff.c').  The a.out routines are used as examples
+throughout this section.
+
+* Menu:
+
+* Creating a Linker Hash Table::
+* Adding Symbols to the Hash Table::
+* Performing the Final Link::
+
+\1f
+File: bfd.info,  Node: Creating a Linker Hash Table,  Next: Adding Symbols to the Hash Table,  Prev: Linker Functions,  Up: Linker Functions
+
+2.17.1 Creating a linker hash table
+-----------------------------------
+
+The linker routines must create a hash table, which must be derived
+from `struct bfd_link_hash_table' described in `bfdlink.c'.  *Note Hash
+Tables::, for information on how to create a derived hash table.  This
+entry point is called using the target vector of the linker output file.
+
+   The `_bfd_link_hash_table_create' entry point must allocate and
+initialize an instance of the desired hash table.  If the back end does
+not require any additional information to be stored with the entries in
+the hash table, the entry point may simply create a `struct
+bfd_link_hash_table'.  Most likely, however, some additional
+information will be needed.
+
+   For example, with each entry in the hash table the a.out linker
+keeps the index the symbol has in the final output file (this index
+number is used so that when doing a relocatable link the symbol index
+used in the output file can be quickly filled in when copying over a
+reloc).  The a.out linker code defines the required structures and
+functions for a hash table derived from `struct bfd_link_hash_table'.
+The a.out linker hash table is created by the function
+`NAME(aout,link_hash_table_create)'; it simply allocates space for the
+hash table, initializes it, and returns a pointer to it.
+
+   When writing the linker routines for a new back end, you will
+generally not know exactly which fields will be required until you have
+finished.  You should simply create a new hash table which defines no
+additional fields, and then simply add fields as they become necessary.
+
+\1f
+File: bfd.info,  Node: Adding Symbols to the Hash Table,  Next: Performing the Final Link,  Prev: Creating a Linker Hash Table,  Up: Linker Functions
+
+2.17.2 Adding symbols to the hash table
+---------------------------------------
+
+The linker proper will call the `_bfd_link_add_symbols' entry point for
+each object file or archive which is to be linked (typically these are
+the files named on the command line, but some may also come from the
+linker script).  The entry point is responsible for examining the file.
+For an object file, BFD must add any relevant symbol information to
+the hash table.  For an archive, BFD must determine which elements of
+the archive should be used and adding them to the link.
+
+   The a.out version of this entry point is
+`NAME(aout,link_add_symbols)'.
+
+* Menu:
+
+* Differing file formats::
+* Adding symbols from an object file::
+* Adding symbols from an archive::
+
+\1f
+File: bfd.info,  Node: Differing file formats,  Next: Adding symbols from an object file,  Prev: Adding Symbols to the Hash Table,  Up: Adding Symbols to the Hash Table
+
+2.17.2.1 Differing file formats
+...............................
+
+Normally all the files involved in a link will be of the same format,
+but it is also possible to link together different format object files,
+and the back end must support that.  The `_bfd_link_add_symbols' entry
+point is called via the target vector of the file to be added.  This
+has an important consequence: the function may not assume that the hash
+table is the type created by the corresponding
+`_bfd_link_hash_table_create' vector.  All the `_bfd_link_add_symbols'
+function can assume about the hash table is that it is derived from
+`struct bfd_link_hash_table'.
+
+   Sometimes the `_bfd_link_add_symbols' function must store some
+information in the hash table entry to be used by the `_bfd_final_link'
+function.  In such a case the `creator' field of the hash table must be
+checked to make sure that the hash table was created by an object file
+of the same format.
+
+   The `_bfd_final_link' routine must be prepared to handle a hash
+entry without any extra information added by the
+`_bfd_link_add_symbols' function.  A hash entry without extra
+information will also occur when the linker script directs the linker
+to create a symbol.  Note that, regardless of how a hash table entry is
+added, all the fields will be initialized to some sort of null value by
+the hash table entry initialization function.
+
+   See `ecoff_link_add_externals' for an example of how to check the
+`creator' field before saving information (in this case, the ECOFF
+external symbol debugging information) in a hash table entry.
+
+\1f
+File: bfd.info,  Node: Adding symbols from an object file,  Next: Adding symbols from an archive,  Prev: Differing file formats,  Up: Adding Symbols to the Hash Table
+
+2.17.2.2 Adding symbols from an object file
+...........................................
+
+When the `_bfd_link_add_symbols' routine is passed an object file, it
+must add all externally visible symbols in that object file to the hash
+table.  The actual work of adding the symbol to the hash table is
+normally handled by the function `_bfd_generic_link_add_one_symbol'.
+The `_bfd_link_add_symbols' routine is responsible for reading all the
+symbols from the object file and passing the correct information to
+`_bfd_generic_link_add_one_symbol'.
+
+   The `_bfd_link_add_symbols' routine should not use
+`bfd_canonicalize_symtab' to read the symbols.  The point of providing
+this routine is to avoid the overhead of converting the symbols into
+generic `asymbol' structures.
+
+   `_bfd_generic_link_add_one_symbol' handles the details of combining
+common symbols, warning about multiple definitions, and so forth.  It
+takes arguments which describe the symbol to add, notably symbol flags,
+a section, and an offset.  The symbol flags include such things as
+`BSF_WEAK' or `BSF_INDIRECT'.  The section is a section in the object
+file, or something like `bfd_und_section_ptr' for an undefined symbol
+or `bfd_com_section_ptr' for a common symbol.
+
+   If the `_bfd_final_link' routine is also going to need to read the
+symbol information, the `_bfd_link_add_symbols' routine should save it
+somewhere attached to the object file BFD.  However, the information
+should only be saved if the `keep_memory' field of the `info' argument
+is TRUE, so that the `-no-keep-memory' linker switch is effective.
+
+   The a.out function which adds symbols from an object file is
+`aout_link_add_object_symbols', and most of the interesting work is in
+`aout_link_add_symbols'.  The latter saves pointers to the hash tables
+entries created by `_bfd_generic_link_add_one_symbol' indexed by symbol
+number, so that the `_bfd_final_link' routine does not have to call the
+hash table lookup routine to locate the entry.
+
+\1f
+File: bfd.info,  Node: Adding symbols from an archive,  Prev: Adding symbols from an object file,  Up: Adding Symbols to the Hash Table
+
+2.17.2.3 Adding symbols from an archive
+.......................................
+
+When the `_bfd_link_add_symbols' routine is passed an archive, it must
+look through the symbols defined by the archive and decide which
+elements of the archive should be included in the link.  For each such
+element it must call the `add_archive_element' linker callback, and it
+must add the symbols from the object file to the linker hash table.
+
+   In most cases the work of looking through the symbols in the archive
+should be done by the `_bfd_generic_link_add_archive_symbols' function.
+This function builds a hash table from the archive symbol table and
+looks through the list of undefined symbols to see which elements
+should be included.  `_bfd_generic_link_add_archive_symbols' is passed
+a function to call to make the final decision about adding an archive
+element to the link and to do the actual work of adding the symbols to
+the linker hash table.
+
+   The function passed to `_bfd_generic_link_add_archive_symbols' must
+read the symbols of the archive element and decide whether the archive
+element should be included in the link.  If the element is to be
+included, the `add_archive_element' linker callback routine must be
+called with the element as an argument, and the elements symbols must
+be added to the linker hash table just as though the element had itself
+been passed to the `_bfd_link_add_symbols' function.
+
+   When the a.out `_bfd_link_add_symbols' function receives an archive,
+it calls `_bfd_generic_link_add_archive_symbols' passing
+`aout_link_check_archive_element' as the function argument.
+`aout_link_check_archive_element' calls `aout_link_check_ar_symbols'.
+If the latter decides to add the element (an element is only added if
+it provides a real, non-common, definition for a previously undefined
+or common symbol) it calls the `add_archive_element' callback and then
+`aout_link_check_archive_element' calls `aout_link_add_symbols' to
+actually add the symbols to the linker hash table.
+
+   The ECOFF back end is unusual in that it does not normally call
+`_bfd_generic_link_add_archive_symbols', because ECOFF archives already
+contain a hash table of symbols.  The ECOFF back end searches the
+archive itself to avoid the overhead of creating a new hash table.
+
+\1f
+File: bfd.info,  Node: Performing the Final Link,  Prev: Adding Symbols to the Hash Table,  Up: Linker Functions
+
+2.17.3 Performing the final link
+--------------------------------
+
+When all the input files have been processed, the linker calls the
+`_bfd_final_link' entry point of the output BFD.  This routine is
+responsible for producing the final output file, which has several
+aspects.  It must relocate the contents of the input sections and copy
+the data into the output sections.  It must build an output symbol
+table including any local symbols from the input files and the global
+symbols from the hash table.  When producing relocatable output, it must
+modify the input relocs and write them into the output file.  There may
+also be object format dependent work to be done.
+
+   The linker will also call the `write_object_contents' entry point
+when the BFD is closed.  The two entry points must work together in
+order to produce the correct output file.
+
+   The details of how this works are inevitably dependent upon the
+specific object file format.  The a.out `_bfd_final_link' routine is
+`NAME(aout,final_link)'.
+
+* Menu:
+
+* Information provided by the linker::
+* Relocating the section contents::
+* Writing the symbol table::
+
+\1f
+File: bfd.info,  Node: Information provided by the linker,  Next: Relocating the section contents,  Prev: Performing the Final Link,  Up: Performing the Final Link
+
+2.17.3.1 Information provided by the linker
+...........................................
+
+Before the linker calls the `_bfd_final_link' entry point, it sets up
+some data structures for the function to use.
+
+   The `input_bfds' field of the `bfd_link_info' structure will point
+to a list of all the input files included in the link.  These files are
+linked through the `link_next' field of the `bfd' structure.
+
+   Each section in the output file will have a list of `link_order'
+structures attached to the `map_head.link_order' field (the
+`link_order' structure is defined in `bfdlink.h').  These structures
+describe how to create the contents of the output section in terms of
+the contents of various input sections, fill constants, and,
+eventually, other types of information.  They also describe relocs that
+must be created by the BFD backend, but do not correspond to any input
+file; this is used to support -Ur, which builds constructors while
+generating a relocatable object file.
+
+\1f
+File: bfd.info,  Node: Relocating the section contents,  Next: Writing the symbol table,  Prev: Information provided by the linker,  Up: Performing the Final Link
+
+2.17.3.2 Relocating the section contents
+........................................
+
+The `_bfd_final_link' function should look through the `link_order'
+structures attached to each section of the output file.  Each
+`link_order' structure should either be handled specially, or it should
+be passed to the function `_bfd_default_link_order' which will do the
+right thing (`_bfd_default_link_order' is defined in `linker.c').
+
+   For efficiency, a `link_order' of type `bfd_indirect_link_order'
+whose associated section belongs to a BFD of the same format as the
+output BFD must be handled specially.  This type of `link_order'
+describes part of an output section in terms of a section belonging to
+one of the input files.  The `_bfd_final_link' function should read the
+contents of the section and any associated relocs, apply the relocs to
+the section contents, and write out the modified section contents.  If
+performing a relocatable link, the relocs themselves must also be
+modified and written out.
+
+   The functions `_bfd_relocate_contents' and
+`_bfd_final_link_relocate' provide some general support for performing
+the actual relocations, notably overflow checking.  Their arguments
+include information about the symbol the relocation is against and a
+`reloc_howto_type' argument which describes the relocation to perform.
+These functions are defined in `reloc.c'.
+
+   The a.out function which handles reading, relocating, and writing
+section contents is `aout_link_input_section'.  The actual relocation
+is done in `aout_link_input_section_std' and
+`aout_link_input_section_ext'.
+
+\1f
+File: bfd.info,  Node: Writing the symbol table,  Prev: Relocating the section contents,  Up: Performing the Final Link
+
+2.17.3.3 Writing the symbol table
+.................................
+
+The `_bfd_final_link' function must gather all the symbols in the input
+files and write them out.  It must also write out all the symbols in
+the global hash table.  This must be controlled by the `strip' and
+`discard' fields of the `bfd_link_info' structure.
+
+   The local symbols of the input files will not have been entered into
+the linker hash table.  The `_bfd_final_link' routine must consider
+each input file and include the symbols in the output file.  It may be
+convenient to do this when looking through the `link_order' structures,
+or it may be done by stepping through the `input_bfds' list.
+
+   The `_bfd_final_link' routine must also traverse the global hash
+table to gather all the externally visible symbols.  It is possible
+that most of the externally visible symbols may be written out when
+considering the symbols of each input file, but it is still necessary
+to traverse the hash table since the linker script may have defined
+some symbols that are not in any of the input files.
+
+   The `strip' field of the `bfd_link_info' structure controls which
+symbols are written out.  The possible values are listed in
+`bfdlink.h'.  If the value is `strip_some', then the `keep_hash' field
+of the `bfd_link_info' structure is a hash table of symbols to keep;
+each symbol should be looked up in this hash table, and only symbols
+which are present should be included in the output file.
+
+   If the `strip' field of the `bfd_link_info' structure permits local
+symbols to be written out, the `discard' field is used to further
+controls which local symbols are included in the output file.  If the
+value is `discard_l', then all local symbols which begin with a certain
+prefix are discarded; this is controlled by the
+`bfd_is_local_label_name' entry point.
+
+   The a.out backend handles symbols by calling
+`aout_link_write_symbols' on each input BFD and then traversing the
+global hash table with the function `aout_link_write_other_symbol'.  It
+builds a string table while writing out the symbols, which is written
+to the output file at the end of `NAME(aout,final_link)'.
+
+2.17.3.4 `bfd_link_split_section'
+.................................
+
+*Synopsis*
+     bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
+   *Description*
+Return nonzero if SEC should be split during a reloceatable or final
+link.
+     #define bfd_link_split_section(abfd, sec) \
+            BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
+
+2.17.3.5 `bfd_section_already_linked'
+.....................................
+
+*Synopsis*
+     void bfd_section_already_linked (bfd *abfd, asection *sec,
+         struct bfd_link_info *info);
+   *Description*
+Check if SEC has been already linked during a reloceatable or final
+link.
+     #define bfd_section_already_linked(abfd, sec, info) \
+            BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
+
+\1f
+File: bfd.info,  Node: Hash Tables,  Prev: Linker Functions,  Up: BFD front end
+
+2.18 Hash Tables
+================
+
+BFD provides a simple set of hash table functions.  Routines are
+provided to initialize a hash table, to free a hash table, to look up a
+string in a hash table and optionally create an entry for it, and to
+traverse a hash table.  There is currently no routine to delete an
+string from a hash table.
+
+   The basic hash table does not permit any data to be stored with a
+string.  However, a hash table is designed to present a base class from
+which other types of hash tables may be derived.  These derived types
+may store additional information with the string.  Hash tables were
+implemented in this way, rather than simply providing a data pointer in
+a hash table entry, because they were designed for use by the linker
+back ends.  The linker may create thousands of hash table entries, and
+the overhead of allocating private data and storing and following
+pointers becomes noticeable.
+
+   The basic hash table code is in `hash.c'.
+
+* Menu:
+
+* Creating and Freeing a Hash Table::
+* Looking Up or Entering a String::
+* Traversing a Hash Table::
+* Deriving a New Hash Table Type::
+
+\1f
+File: bfd.info,  Node: Creating and Freeing a Hash Table,  Next: Looking Up or Entering a String,  Prev: Hash Tables,  Up: Hash Tables
+
+2.18.1 Creating and freeing a hash table
+----------------------------------------
+
+To create a hash table, create an instance of a `struct bfd_hash_table'
+(defined in `bfd.h') and call `bfd_hash_table_init' (if you know
+approximately how many entries you will need, the function
+`bfd_hash_table_init_n', which takes a SIZE argument, may be used).
+`bfd_hash_table_init' returns `FALSE' if some sort of error occurs.
+
+   The function `bfd_hash_table_init' take as an argument a function to
+use to create new entries.  For a basic hash table, use the function
+`bfd_hash_newfunc'.  *Note Deriving a New Hash Table Type::, for why
+you would want to use a different value for this argument.
+
+   `bfd_hash_table_init' will create an objalloc which will be used to
+allocate new entries.  You may allocate memory on this objalloc using
+`bfd_hash_allocate'.
+
+   Use `bfd_hash_table_free' to free up all the memory that has been
+allocated for a hash table.  This will not free up the `struct
+bfd_hash_table' itself, which you must provide.
+
+   Use `bfd_hash_set_default_size' to set the default size of hash
+table to use.
+
+\1f
+File: bfd.info,  Node: Looking Up or Entering a String,  Next: Traversing a Hash Table,  Prev: Creating and Freeing a Hash Table,  Up: Hash Tables
+
+2.18.2 Looking up or entering a string
+--------------------------------------
+
+The function `bfd_hash_lookup' is used both to look up a string in the
+hash table and to create a new entry.
+
+   If the CREATE argument is `FALSE', `bfd_hash_lookup' will look up a
+string.  If the string is found, it will returns a pointer to a `struct
+bfd_hash_entry'.  If the string is not found in the table
+`bfd_hash_lookup' will return `NULL'.  You should not modify any of the
+fields in the returns `struct bfd_hash_entry'.
+
+   If the CREATE argument is `TRUE', the string will be entered into
+the hash table if it is not already there.  Either way a pointer to a
+`struct bfd_hash_entry' will be returned, either to the existing
+structure or to a newly created one.  In this case, a `NULL' return
+means that an error occurred.
+
+   If the CREATE argument is `TRUE', and a new entry is created, the
+COPY argument is used to decide whether to copy the string onto the
+hash table objalloc or not.  If COPY is passed as `FALSE', you must be
+careful not to deallocate or modify the string as long as the hash table
+exists.
+
+\1f
+File: bfd.info,  Node: Traversing a Hash Table,  Next: Deriving a New Hash Table Type,  Prev: Looking Up or Entering a String,  Up: Hash Tables
+
+2.18.3 Traversing a hash table
+------------------------------
+
+The function `bfd_hash_traverse' may be used to traverse a hash table,
+calling a function on each element.  The traversal is done in a random
+order.
+
+   `bfd_hash_traverse' takes as arguments a function and a generic
+`void *' pointer.  The function is called with a hash table entry (a
+`struct bfd_hash_entry *') and the generic pointer passed to
+`bfd_hash_traverse'.  The function must return a `boolean' value, which
+indicates whether to continue traversing the hash table.  If the
+function returns `FALSE', `bfd_hash_traverse' will stop the traversal
+and return immediately.
+
+\1f
+File: bfd.info,  Node: Deriving a New Hash Table Type,  Prev: Traversing a Hash Table,  Up: Hash Tables
+
+2.18.4 Deriving a new hash table type
+-------------------------------------
+
+Many uses of hash tables want to store additional information which
+each entry in the hash table.  Some also find it convenient to store
+additional information with the hash table itself.  This may be done
+using a derived hash table.
+
+   Since C is not an object oriented language, creating a derived hash
+table requires sticking together some boilerplate routines with a few
+differences specific to the type of hash table you want to create.
+
+   An example of a derived hash table is the linker hash table.  The
+structures for this are defined in `bfdlink.h'.  The functions are in
+`linker.c'.
+
+   You may also derive a hash table from an already derived hash table.
+For example, the a.out linker backend code uses a hash table derived
+from the linker hash table.
+
+* Menu:
+
+* Define the Derived Structures::
+* Write the Derived Creation Routine::
+* Write Other Derived Routines::
+
+\1f
+File: bfd.info,  Node: Define the Derived Structures,  Next: Write the Derived Creation Routine,  Prev: Deriving a New Hash Table Type,  Up: Deriving a New Hash Table Type
+
+2.18.4.1 Define the derived structures
+......................................
+
+You must define a structure for an entry in the hash table, and a
+structure for the hash table itself.
+
+   The first field in the structure for an entry in the hash table must
+be of the type used for an entry in the hash table you are deriving
+from.  If you are deriving from a basic hash table this is `struct
+bfd_hash_entry', which is defined in `bfd.h'.  The first field in the
+structure for the hash table itself must be of the type of the hash
+table you are deriving from itself.  If you are deriving from a basic
+hash table, this is `struct bfd_hash_table'.
+
+   For example, the linker hash table defines `struct
+bfd_link_hash_entry' (in `bfdlink.h').  The first field, `root', is of
+type `struct bfd_hash_entry'.  Similarly, the first field in `struct
+bfd_link_hash_table', `table', is of type `struct bfd_hash_table'.
+
+\1f
+File: bfd.info,  Node: Write the Derived Creation Routine,  Next: Write Other Derived Routines,  Prev: Define the Derived Structures,  Up: Deriving a New Hash Table Type
+
+2.18.4.2 Write the derived creation routine
+...........................................
+
+You must write a routine which will create and initialize an entry in
+the hash table.  This routine is passed as the function argument to
+`bfd_hash_table_init'.
+
+   In order to permit other hash tables to be derived from the hash
+table you are creating, this routine must be written in a standard way.
+
+   The first argument to the creation routine is a pointer to a hash
+table entry.  This may be `NULL', in which case the routine should
+allocate the right amount of space.  Otherwise the space has already
+been allocated by a hash table type derived from this one.
+
+   After allocating space, the creation routine must call the creation
+routine of the hash table type it is derived from, passing in a pointer
+to the space it just allocated.  This will initialize any fields used
+by the base hash table.
+
+   Finally the creation routine must initialize any local fields for
+the new hash table type.
+
+   Here is a boilerplate example of a creation routine.  FUNCTION_NAME
+is the name of the routine.  ENTRY_TYPE is the type of an entry in the
+hash table you are creating.  BASE_NEWFUNC is the name of the creation
+routine of the hash table type your hash table is derived from.
+
+     struct bfd_hash_entry *
+     FUNCTION_NAME (struct bfd_hash_entry *entry,
+                          struct bfd_hash_table *table,
+                          const char *string)
+     {
+       struct ENTRY_TYPE *ret = (ENTRY_TYPE *) entry;
+
+      /* Allocate the structure if it has not already been allocated by a
+         derived class.  */
+       if (ret == NULL)
+         {
+           ret = bfd_hash_allocate (table, sizeof (* ret));
+           if (ret == NULL)
+             return NULL;
+         }
+
+      /* Call the allocation method of the base class.  */
+       ret = ((ENTRY_TYPE *)
+             BASE_NEWFUNC ((struct bfd_hash_entry *) ret, table, string));
+
+      /* Initialize the local fields here.  */
+
+       return (struct bfd_hash_entry *) ret;
+     }
+   *Description*
+The creation routine for the linker hash table, which is in `linker.c',
+looks just like this example.  FUNCTION_NAME is
+`_bfd_link_hash_newfunc'.  ENTRY_TYPE is `struct bfd_link_hash_entry'.
+BASE_NEWFUNC is `bfd_hash_newfunc', the creation routine for a basic
+hash table.
+
+   `_bfd_link_hash_newfunc' also initializes the local fields in a
+linker hash table entry: `type', `written' and `next'.
+
+\1f
+File: bfd.info,  Node: Write Other Derived Routines,  Prev: Write the Derived Creation Routine,  Up: Deriving a New Hash Table Type
+
+2.18.4.3 Write other derived routines
+.....................................
+
+You will want to write other routines for your new hash table, as well.
+
+   You will want an initialization routine which calls the
+initialization routine of the hash table you are deriving from and
+initializes any other local fields.  For the linker hash table, this is
+`_bfd_link_hash_table_init' in `linker.c'.
+
+   You will want a lookup routine which calls the lookup routine of the
+hash table you are deriving from and casts the result.  The linker hash
+table uses `bfd_link_hash_lookup' in `linker.c' (this actually takes an
+additional argument which it uses to decide how to return the looked up
+value).
+
+   You may want a traversal routine.  This should just call the
+traversal routine of the hash table you are deriving from with
+appropriate casts.  The linker hash table uses `bfd_link_hash_traverse'
+in `linker.c'.
+
+   These routines may simply be defined as macros.  For example, the
+a.out backend linker hash table, which is derived from the linker hash
+table, uses macros for the lookup and traversal routines.  These are
+`aout_link_hash_lookup' and `aout_link_hash_traverse' in aoutx.h.
+
+\1f
+File: bfd.info,  Node: BFD back ends,  Next: GNU Free Documentation License,  Prev: BFD front end,  Up: Top
+
+3 BFD back ends
+***************
+
+* Menu:
+
+* What to Put Where::
+* aout ::      a.out backends
+* coff ::      coff backends
+* elf  ::      elf backends
+* mmo  ::      mmo backend
+
+\1f
+File: bfd.info,  Node: What to Put Where,  Next: aout,  Prev: BFD back ends,  Up: BFD back ends
+
+3.1 What to Put Where
+=====================
+
+All of BFD lives in one directory.
+
+\1f
+File: bfd.info,  Node: aout,  Next: coff,  Prev: What to Put Where,  Up: BFD back ends
+
+3.2 a.out backends
+==================
+
+*Description*
+BFD supports a number of different flavours of a.out format, though the
+major differences are only the sizes of the structures on disk, and the
+shape of the relocation information.
+
+   The support is split into a basic support file `aoutx.h' and other
+files which derive functions from the base. One derivation file is
+`aoutf1.h' (for a.out flavour 1), and adds to the basic a.out functions
+support for sun3, sun4, 386 and 29k a.out files, to create a target
+jump vector for a specific target.
+
+   This information is further split out into more specific files for
+each machine, including `sunos.c' for sun3 and sun4, `newsos3.c' for
+the Sony NEWS, and `demo64.c' for a demonstration of a 64 bit a.out
+format.
+
+   The base file `aoutx.h' defines general mechanisms for reading and
+writing records to and from disk and various other methods which BFD
+requires. It is included by `aout32.c' and `aout64.c' to form the names
+`aout_32_swap_exec_header_in', `aout_64_swap_exec_header_in', etc.
+
+   As an example, this is what goes on to make the back end for a sun4,
+from `aout32.c':
+
+            #define ARCH_SIZE 32
+            #include "aoutx.h"
+
+   Which exports names:
+
+            ...
+            aout_32_canonicalize_reloc
+            aout_32_find_nearest_line
+            aout_32_get_lineno
+            aout_32_get_reloc_upper_bound
+            ...
+
+   from `sunos.c':
+
+            #define TARGET_NAME "a.out-sunos-big"
+            #define VECNAME    sunos_big_vec
+            #include "aoutf1.h"
+
+   requires all the names from `aout32.c', and produces the jump vector
+
+            sunos_big_vec
+
+   The file `host-aout.c' is a special case.  It is for a large set of
+hosts that use "more or less standard" a.out files, and for which
+cross-debugging is not interesting.  It uses the standard 32-bit a.out
+support routines, but determines the file offsets and addresses of the
+text, data, and BSS sections, the machine architecture and machine
+type, and the entry point address, in a host-dependent manner.  Once
+these values have been determined, generic code is used to handle the
+object file.
+
+   When porting it to run on a new system, you must supply:
+
+             HOST_PAGE_SIZE
+             HOST_SEGMENT_SIZE
+             HOST_MACHINE_ARCH       (optional)
+             HOST_MACHINE_MACHINE    (optional)
+             HOST_TEXT_START_ADDR
+             HOST_STACK_END_ADDR
+
+   in the file `../include/sys/h-XXX.h' (for your host).  These values,
+plus the structures and macros defined in `a.out.h' on your host
+system, will produce a BFD target that will access ordinary a.out files
+on your host. To configure a new machine to use `host-aout.c', specify:
+
+            TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec
+            TDEPFILES= host-aout.o trad-core.o
+
+   in the `config/XXX.mt' file, and modify `configure.in' to use the
+`XXX.mt' file (by setting "`bfd_target=XXX'") when your configuration
+is selected.
+
+3.2.1 Relocations
+-----------------
+
+*Description*
+The file `aoutx.h' provides for both the _standard_ and _extended_
+forms of a.out relocation records.
+
+   The standard records contain only an address, a symbol index, and a
+type field. The extended records (used on 29ks and sparcs) also have a
+full integer for an addend.
+
+3.2.2 Internal entry points
+---------------------------
+
+*Description*
+`aoutx.h' exports several routines for accessing the contents of an
+a.out file, which are gathered and exported in turn by various format
+specific files (eg sunos.c).
+
+3.2.2.1 `aout_SIZE_swap_exec_header_in'
+.......................................
+
+*Synopsis*
+     void aout_SIZE_swap_exec_header_in,
+        (bfd *abfd,
+         struct external_exec *bytes,
+         struct internal_exec *execp);
+   *Description*
+Swap the information in an executable header RAW_BYTES taken from a raw
+byte stream memory image into the internal exec header structure EXECP.
+
+3.2.2.2 `aout_SIZE_swap_exec_header_out'
+........................................
+
+*Synopsis*
+     void aout_SIZE_swap_exec_header_out
+        (bfd *abfd,
+         struct internal_exec *execp,
+         struct external_exec *raw_bytes);
+   *Description*
+Swap the information in an internal exec header structure EXECP into
+the buffer RAW_BYTES ready for writing to disk.
+
+3.2.2.3 `aout_SIZE_some_aout_object_p'
+......................................
+
+*Synopsis*
+     const bfd_target *aout_SIZE_some_aout_object_p
+        (bfd *abfd,
+         struct internal_exec *execp,
+         const bfd_target *(*callback_to_real_object_p) (bfd *));
+   *Description*
+Some a.out variant thinks that the file open in ABFD checking is an
+a.out file.  Do some more checking, and set up for access if it really
+is.  Call back to the calling environment's "finish up" function just
+before returning, to handle any last-minute setup.
+
+3.2.2.4 `aout_SIZE_mkobject'
+............................
+
+*Synopsis*
+     bfd_boolean aout_SIZE_mkobject, (bfd *abfd);
+   *Description*
+Initialize BFD ABFD for use with a.out files.
+
+3.2.2.5 `aout_SIZE_machine_type'
+................................
+
+*Synopsis*
+     enum machine_type  aout_SIZE_machine_type
+        (enum bfd_architecture arch,
+         unsigned long machine,
+         bfd_boolean *unknown);
+   *Description*
+Keep track of machine architecture and machine type for a.out's. Return
+the `machine_type' for a particular architecture and machine, or
+`M_UNKNOWN' if that exact architecture and machine can't be represented
+in a.out format.
+
+   If the architecture is understood, machine type 0 (default) is
+always understood.
+
+3.2.2.6 `aout_SIZE_set_arch_mach'
+.................................
+
+*Synopsis*
+     bfd_boolean aout_SIZE_set_arch_mach,
+        (bfd *,
+         enum bfd_architecture arch,
+         unsigned long machine);
+   *Description*
+Set the architecture and the machine of the BFD ABFD to the values ARCH
+and MACHINE.  Verify that ABFD's format can support the architecture
+required.
+
+3.2.2.7 `aout_SIZE_new_section_hook'
+....................................
+
+*Synopsis*
+     bfd_boolean aout_SIZE_new_section_hook,
+        (bfd *abfd,
+         asection *newsect);
+   *Description*
+Called by the BFD in response to a `bfd_make_section' request.
+
+\1f
+File: bfd.info,  Node: coff,  Next: elf,  Prev: aout,  Up: BFD back ends
+
+3.3 coff backends
+=================
+
+BFD supports a number of different flavours of coff format.  The major
+differences between formats are the sizes and alignments of fields in
+structures on disk, and the occasional extra field.
+
+   Coff in all its varieties is implemented with a few common files and
+a number of implementation specific files. For example, The 88k bcs
+coff format is implemented in the file `coff-m88k.c'. This file
+`#include's `coff/m88k.h' which defines the external structure of the
+coff format for the 88k, and `coff/internal.h' which defines the
+internal structure. `coff-m88k.c' also defines the relocations used by
+the 88k format *Note Relocations::.
+
+   The Intel i960 processor version of coff is implemented in
+`coff-i960.c'. This file has the same structure as `coff-m88k.c',
+except that it includes `coff/i960.h' rather than `coff-m88k.h'.
+
+3.3.1 Porting to a new version of coff
+--------------------------------------
+
+The recommended method is to select from the existing implementations
+the version of coff which is most like the one you want to use.  For
+example, we'll say that i386 coff is the one you select, and that your
+coff flavour is called foo.  Copy `i386coff.c' to `foocoff.c', copy
+`../include/coff/i386.h' to `../include/coff/foo.h', and add the lines
+to `targets.c' and `Makefile.in' so that your new back end is used.
+Alter the shapes of the structures in `../include/coff/foo.h' so that
+they match what you need. You will probably also have to add `#ifdef's
+to the code in `coff/internal.h' and `coffcode.h' if your version of
+coff is too wild.
+
+   You can verify that your new BFD backend works quite simply by
+building `objdump' from the `binutils' directory, and making sure that
+its version of what's going on and your host system's idea (assuming it
+has the pretty standard coff dump utility, usually called `att-dump' or
+just `dump') are the same.  Then clean up your code, and send what
+you've done to Cygnus. Then your stuff will be in the next release, and
+you won't have to keep integrating it.
+
+3.3.2 How the coff backend works
+--------------------------------
+
+3.3.2.1 File layout
+...................
+
+The Coff backend is split into generic routines that are applicable to
+any Coff target and routines that are specific to a particular target.
+The target-specific routines are further split into ones which are
+basically the same for all Coff targets except that they use the
+external symbol format or use different values for certain constants.
+
+   The generic routines are in `coffgen.c'.  These routines work for
+any Coff target.  They use some hooks into the target specific code;
+the hooks are in a `bfd_coff_backend_data' structure, one of which
+exists for each target.
+
+   The essentially similar target-specific routines are in
+`coffcode.h'.  This header file includes executable C code.  The
+various Coff targets first include the appropriate Coff header file,
+make any special defines that are needed, and then include `coffcode.h'.
+
+   Some of the Coff targets then also have additional routines in the
+target source file itself.
+
+   For example, `coff-i960.c' includes `coff/internal.h' and
+`coff/i960.h'.  It then defines a few constants, such as `I960', and
+includes `coffcode.h'.  Since the i960 has complex relocation types,
+`coff-i960.c' also includes some code to manipulate the i960 relocs.
+This code is not in `coffcode.h' because it would not be used by any
+other target.
+
+3.3.2.2 Bit twiddling
+.....................
+
+Each flavour of coff supported in BFD has its own header file
+describing the external layout of the structures. There is also an
+internal description of the coff layout, in `coff/internal.h'. A major
+function of the coff backend is swapping the bytes and twiddling the
+bits to translate the external form of the structures into the normal
+internal form. This is all performed in the `bfd_swap'_thing_direction
+routines. Some elements are different sizes between different versions
+of coff; it is the duty of the coff version specific include file to
+override the definitions of various packing routines in `coffcode.h'.
+E.g., the size of line number entry in coff is sometimes 16 bits, and
+sometimes 32 bits. `#define'ing `PUT_LNSZ_LNNO' and `GET_LNSZ_LNNO'
+will select the correct one. No doubt, some day someone will find a
+version of coff which has a varying field size not catered to at the
+moment. To port BFD, that person will have to add more `#defines'.
+Three of the bit twiddling routines are exported to `gdb';
+`coff_swap_aux_in', `coff_swap_sym_in' and `coff_swap_lineno_in'. `GDB'
+reads the symbol table on its own, but uses BFD to fix things up.  More
+of the bit twiddlers are exported for `gas'; `coff_swap_aux_out',
+`coff_swap_sym_out', `coff_swap_lineno_out', `coff_swap_reloc_out',
+`coff_swap_filehdr_out', `coff_swap_aouthdr_out',
+`coff_swap_scnhdr_out'. `Gas' currently keeps track of all the symbol
+table and reloc drudgery itself, thereby saving the internal BFD
+overhead, but uses BFD to swap things on the way out, making cross
+ports much safer.  Doing so also allows BFD (and thus the linker) to
+use the same header files as `gas', which makes one avenue to disaster
+disappear.
+
+3.3.2.3 Symbol reading
+......................
+
+The simple canonical form for symbols used by BFD is not rich enough to
+keep all the information available in a coff symbol table. The back end
+gets around this problem by keeping the original symbol table around,
+"behind the scenes".
+
+   When a symbol table is requested (through a call to
+`bfd_canonicalize_symtab'), a request gets through to
+`coff_get_normalized_symtab'. This reads the symbol table from the coff
+file and swaps all the structures inside into the internal form. It
+also fixes up all the pointers in the table (represented in the file by
+offsets from the first symbol in the table) into physical pointers to
+elements in the new internal table. This involves some work since the
+meanings of fields change depending upon context: a field that is a
+pointer to another structure in the symbol table at one moment may be
+the size in bytes of a structure at the next.  Another pass is made
+over the table. All symbols which mark file names (`C_FILE' symbols)
+are modified so that the internal string points to the value in the
+auxent (the real filename) rather than the normal text associated with
+the symbol (`".file"').
+
+   At this time the symbol names are moved around. Coff stores all
+symbols less than nine characters long physically within the symbol
+table; longer strings are kept at the end of the file in the string
+table. This pass moves all strings into memory and replaces them with
+pointers to the strings.
+
+   The symbol table is massaged once again, this time to create the
+canonical table used by the BFD application. Each symbol is inspected
+in turn, and a decision made (using the `sclass' field) about the
+various flags to set in the `asymbol'.  *Note Symbols::. The generated
+canonical table shares strings with the hidden internal symbol table.
+
+   Any linenumbers are read from the coff file too, and attached to the
+symbols which own the functions the linenumbers belong to.
+
+3.3.2.4 Symbol writing
+......................
+
+Writing a symbol to a coff file which didn't come from a coff file will
+lose any debugging information. The `asymbol' structure remembers the
+BFD from which the symbol was taken, and on output the back end makes
+sure that the same destination target as source target is present.
+
+   When the symbols have come from a coff file then all the debugging
+information is preserved.
+
+   Symbol tables are provided for writing to the back end in a vector
+of pointers to pointers. This allows applications like the linker to
+accumulate and output large symbol tables without having to do too much
+byte copying.
+
+   This function runs through the provided symbol table and patches
+each symbol marked as a file place holder (`C_FILE') to point to the
+next file place holder in the list. It also marks each `offset' field
+in the list with the offset from the first symbol of the current symbol.
+
+   Another function of this procedure is to turn the canonical value
+form of BFD into the form used by coff. Internally, BFD expects symbol
+values to be offsets from a section base; so a symbol physically at
+0x120, but in a section starting at 0x100, would have the value 0x20.
+Coff expects symbols to contain their final value, so symbols have
+their values changed at this point to reflect their sum with their
+owning section.  This transformation uses the `output_section' field of
+the `asymbol''s `asection' *Note Sections::.
+
+   * `coff_mangle_symbols'
+   This routine runs though the provided symbol table and uses the
+offsets generated by the previous pass and the pointers generated when
+the symbol table was read in to create the structured hierarchy
+required by coff. It changes each pointer to a symbol into the index
+into the symbol table of the asymbol.
+
+   * `coff_write_symbols'
+   This routine runs through the symbol table and patches up the
+symbols from their internal form into the coff way, calls the bit
+twiddlers, and writes out the table to the file.
+
+3.3.2.5 `coff_symbol_type'
+..........................
+
+*Description*
+The hidden information for an `asymbol' is described in a
+`combined_entry_type':
+
+
+     typedef struct coff_ptr_struct
+     {
+       /* Remembers the offset from the first symbol in the file for
+          this symbol. Generated by coff_renumber_symbols. */
+       unsigned int offset;
+
+       /* Should the value of this symbol be renumbered.  Used for
+          XCOFF C_BSTAT symbols.  Set by coff_slurp_symbol_table.  */
+       unsigned int fix_value : 1;
+
+       /* Should the tag field of this symbol be renumbered.
+          Created by coff_pointerize_aux. */
+       unsigned int fix_tag : 1;
+
+       /* Should the endidx field of this symbol be renumbered.
+          Created by coff_pointerize_aux. */
+       unsigned int fix_end : 1;
+
+       /* Should the x_csect.x_scnlen field be renumbered.
+          Created by coff_pointerize_aux. */
+       unsigned int fix_scnlen : 1;
+
+       /* Fix up an XCOFF C_BINCL/C_EINCL symbol.  The value is the
+          index into the line number entries.  Set by coff_slurp_symbol_table.  */
+       unsigned int fix_line : 1;
+
+       /* The container for the symbol structure as read and translated
+          from the file. */
+       union
+       {
+         union internal_auxent auxent;
+         struct internal_syment syment;
+       } u;
+     } combined_entry_type;
+
+
+     /* Each canonical asymbol really looks like this: */
+
+     typedef struct coff_symbol_struct
+     {
+       /* The actual symbol which the rest of BFD works with */
+       asymbol symbol;
+
+       /* A pointer to the hidden information for this symbol */
+       combined_entry_type *native;
+
+       /* A pointer to the linenumber information for this symbol */
+       struct lineno_cache_entry *lineno;
+
+       /* Have the line numbers been relocated yet ? */
+       bfd_boolean done_lineno;
+     } coff_symbol_type;
+   
+3.3.2.6 `bfd_coff_backend_data'
+...............................
+
+     /* COFF symbol classifications.  */
+
+     enum coff_symbol_classification
+     {
+       /* Global symbol.  */
+       COFF_SYMBOL_GLOBAL,
+       /* Common symbol.  */
+       COFF_SYMBOL_COMMON,
+       /* Undefined symbol.  */
+       COFF_SYMBOL_UNDEFINED,
+       /* Local symbol.  */
+       COFF_SYMBOL_LOCAL,
+       /* PE section symbol.  */
+       COFF_SYMBOL_PE_SECTION
+     };
+Special entry points for gdb to swap in coff symbol table parts:
+     typedef struct
+     {
+       void (*_bfd_coff_swap_aux_in)
+         (bfd *, void *, int, int, int, int, void *);
+
+       void (*_bfd_coff_swap_sym_in)
+         (bfd *, void *, void *);
+
+       void (*_bfd_coff_swap_lineno_in)
+         (bfd *, void *, void *);
+
+       unsigned int (*_bfd_coff_swap_aux_out)
+         (bfd *, void *, int, int, int, int, void *);
+
+       unsigned int (*_bfd_coff_swap_sym_out)
+         (bfd *, void *, void *);
+
+       unsigned int (*_bfd_coff_swap_lineno_out)
+         (bfd *, void *, void *);
+
+       unsigned int (*_bfd_coff_swap_reloc_out)
+         (bfd *, void *, void *);
+
+       unsigned int (*_bfd_coff_swap_filehdr_out)
+         (bfd *, void *, void *);
+
+       unsigned int (*_bfd_coff_swap_aouthdr_out)
+         (bfd *, void *, void *);
+
+       unsigned int (*_bfd_coff_swap_scnhdr_out)
+         (bfd *, void *, void *);
+
+       unsigned int _bfd_filhsz;
+       unsigned int _bfd_aoutsz;
+       unsigned int _bfd_scnhsz;
+       unsigned int _bfd_symesz;
+       unsigned int _bfd_auxesz;
+       unsigned int _bfd_relsz;
+       unsigned int _bfd_linesz;
+       unsigned int _bfd_filnmlen;
+       bfd_boolean _bfd_coff_long_filenames;
+       bfd_boolean _bfd_coff_long_section_names;
+       unsigned int _bfd_coff_default_section_alignment_power;
+       bfd_boolean _bfd_coff_force_symnames_in_strings;
+       unsigned int _bfd_coff_debug_string_prefix_length;
+
+       void (*_bfd_coff_swap_filehdr_in)
+         (bfd *, void *, void *);
+
+       void (*_bfd_coff_swap_aouthdr_in)
+         (bfd *, void *, void *);
+
+       void (*_bfd_coff_swap_scnhdr_in)
+         (bfd *, void *, void *);
+
+       void (*_bfd_coff_swap_reloc_in)
+         (bfd *abfd, void *, void *);
+
+       bfd_boolean (*_bfd_coff_bad_format_hook)
+         (bfd *, void *);
+
+       bfd_boolean (*_bfd_coff_set_arch_mach_hook)
+         (bfd *, void *);
+
+       void * (*_bfd_coff_mkobject_hook)
+         (bfd *, void *, void *);
+
+       bfd_boolean (*_bfd_styp_to_sec_flags_hook)
+         (bfd *, void *, const char *, asection *, flagword *);
+
+       void (*_bfd_set_alignment_hook)
+         (bfd *, asection *, void *);
+
+       bfd_boolean (*_bfd_coff_slurp_symbol_table)
+         (bfd *);
+
+       bfd_boolean (*_bfd_coff_symname_in_debug)
+         (bfd *, struct internal_syment *);
+
+       bfd_boolean (*_bfd_coff_pointerize_aux_hook)
+         (bfd *, combined_entry_type *, combined_entry_type *,
+                 unsigned int, combined_entry_type *);
+
+       bfd_boolean (*_bfd_coff_print_aux)
+         (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
+                 combined_entry_type *, unsigned int);
+
+       void (*_bfd_coff_reloc16_extra_cases)
+         (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
+                bfd_byte *, unsigned int *, unsigned int *);
+
+       int (*_bfd_coff_reloc16_estimate)
+         (bfd *, asection *, arelent *, unsigned int,
+                 struct bfd_link_info *);
+
+       enum coff_symbol_classification (*_bfd_coff_classify_symbol)
+         (bfd *, struct internal_syment *);
+
+       bfd_boolean (*_bfd_coff_compute_section_file_positions)
+         (bfd *);
+
+       bfd_boolean (*_bfd_coff_start_final_link)
+         (bfd *, struct bfd_link_info *);
+
+       bfd_boolean (*_bfd_coff_relocate_section)
+         (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
+                 struct internal_reloc *, struct internal_syment *, asection **);
+
+       reloc_howto_type *(*_bfd_coff_rtype_to_howto)
+         (bfd *, asection *, struct internal_reloc *,
+                 struct coff_link_hash_entry *, struct internal_syment *,
+                 bfd_vma *);
+
+       bfd_boolean (*_bfd_coff_adjust_symndx)
+         (bfd *, struct bfd_link_info *, bfd *, asection *,
+                 struct internal_reloc *, bfd_boolean *);
+
+       bfd_boolean (*_bfd_coff_link_add_one_symbol)
+         (struct bfd_link_info *, bfd *, const char *, flagword,
+                 asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
+                 struct bfd_link_hash_entry **);
+
+       bfd_boolean (*_bfd_coff_link_output_has_begun)
+         (bfd *, struct coff_final_link_info *);
+
+       bfd_boolean (*_bfd_coff_final_link_postscript)
+         (bfd *, struct coff_final_link_info *);
+
+     } bfd_coff_backend_data;
+
+     #define coff_backend_info(abfd) \
+       ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
+
+     #define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
+       ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
+
+     #define bfd_coff_swap_sym_in(a,e,i) \
+       ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
+
+     #define bfd_coff_swap_lineno_in(a,e,i) \
+       ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
+
+     #define bfd_coff_swap_reloc_out(abfd, i, o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
+
+     #define bfd_coff_swap_lineno_out(abfd, i, o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
+
+     #define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
+       ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
+
+     #define bfd_coff_swap_sym_out(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
+
+     #define bfd_coff_swap_scnhdr_out(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
+
+     #define bfd_coff_swap_filehdr_out(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
+
+     #define bfd_coff_swap_aouthdr_out(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
+
+     #define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
+     #define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
+     #define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
+     #define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
+     #define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
+     #define bfd_coff_relsz(abfd)  (coff_backend_info (abfd)->_bfd_relsz)
+     #define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
+     #define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
+     #define bfd_coff_long_filenames(abfd) \
+       (coff_backend_info (abfd)->_bfd_coff_long_filenames)
+     #define bfd_coff_long_section_names(abfd) \
+       (coff_backend_info (abfd)->_bfd_coff_long_section_names)
+     #define bfd_coff_default_section_alignment_power(abfd) \
+       (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
+     #define bfd_coff_swap_filehdr_in(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
+
+     #define bfd_coff_swap_aouthdr_in(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
+
+     #define bfd_coff_swap_scnhdr_in(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
+
+     #define bfd_coff_swap_reloc_in(abfd, i, o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
+
+     #define bfd_coff_bad_format_hook(abfd, filehdr) \
+       ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
+
+     #define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
+       ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
+     #define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
+       ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
+        (abfd, filehdr, aouthdr))
+
+     #define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
+       ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
+        (abfd, scnhdr, name, section, flags_ptr))
+
+     #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
+       ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
+
+     #define bfd_coff_slurp_symbol_table(abfd)\
+       ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
+
+     #define bfd_coff_symname_in_debug(abfd, sym)\
+       ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
+
+     #define bfd_coff_force_symnames_in_strings(abfd)\
+       (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
+
+     #define bfd_coff_debug_string_prefix_length(abfd)\
+       (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
+
+     #define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
+       ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
+        (abfd, file, base, symbol, aux, indaux))
+
+     #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
+                                          reloc, data, src_ptr, dst_ptr)\
+       ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
+        (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
+
+     #define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
+       ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
+        (abfd, section, reloc, shrink, link_info))
+
+     #define bfd_coff_classify_symbol(abfd, sym)\
+       ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
+        (abfd, sym))
+
+     #define bfd_coff_compute_section_file_positions(abfd)\
+       ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
+        (abfd))
+
+     #define bfd_coff_start_final_link(obfd, info)\
+       ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
+        (obfd, info))
+     #define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
+       ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
+        (obfd, info, ibfd, o, con, rel, isyms, secs))
+     #define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
+       ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
+        (abfd, sec, rel, h, sym, addendp))
+     #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
+       ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
+        (obfd, info, ibfd, sec, rel, adjustedp))
+     #define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
+                                          value, string, cp, coll, hashp)\
+       ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
+        (info, abfd, name, flags, section, value, string, cp, coll, hashp))
+
+     #define bfd_coff_link_output_has_begun(a,p) \
+       ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
+     #define bfd_coff_final_link_postscript(a,p) \
+       ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
+
+3.3.2.7 Writing relocations
+...........................
+
+To write relocations, the back end steps though the canonical
+relocation table and create an `internal_reloc'. The symbol index to
+use is removed from the `offset' field in the symbol table supplied.
+The address comes directly from the sum of the section base address and
+the relocation offset; the type is dug directly from the howto field.
+Then the `internal_reloc' is swapped into the shape of an
+`external_reloc' and written out to disk.
+
+3.3.2.8 Reading linenumbers
+...........................
+
+Creating the linenumber table is done by reading in the entire coff
+linenumber table, and creating another table for internal use.
+
+   A coff linenumber table is structured so that each function is
+marked as having a line number of 0. Each line within the function is
+an offset from the first line in the function. The base of the line
+number information for the table is stored in the symbol associated
+with the function.
+
+   Note: The PE format uses line number 0 for a flag indicating a new
+source file.
+
+   The information is copied from the external to the internal table,
+and each symbol which marks a function is marked by pointing its...
+
+   How does this work ?
+
+3.3.2.9 Reading relocations
+...........................
+
+Coff relocations are easily transformed into the internal BFD form
+(`arelent').
+
+   Reading a coff relocation table is done in the following stages:
+
+   * Read the entire coff relocation table into memory.
+
+   * Process each relocation in turn; first swap it from the external
+     to the internal form.
+
+   * Turn the symbol referenced in the relocation's symbol index into a
+     pointer into the canonical symbol table.  This table is the same
+     as the one returned by a call to `bfd_canonicalize_symtab'. The
+     back end will call that routine and save the result if a
+     canonicalization hasn't been done.
+
+   * The reloc index is turned into a pointer to a howto structure, in
+     a back end specific way. For instance, the 386 and 960 use the
+     `r_type' to directly produce an index into a howto table vector;
+     the 88k subtracts a number from the `r_type' field and creates an
+     addend field.
+
+\1f
+File: bfd.info,  Node: elf,  Next: mmo,  Prev: coff,  Up: BFD back ends
+
+3.4 ELF backends
+================
+
+BFD support for ELF formats is being worked on.  Currently, the best
+supported back ends are for sparc and i386 (running svr4 or Solaris 2).
+
+   Documentation of the internals of the support code still needs to be
+written.  The code is changing quickly enough that we haven't bothered
+yet.
+
+3.4.0.1 `bfd_elf_find_section'
+..............................
+
+*Synopsis*
+     struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
+   *Description*
+Helper functions for GDB to locate the string tables.  Since BFD hides
+string tables from callers, GDB needs to use an internal hook to find
+them.  Sun's .stabstr, in particular, isn't even pointed to by the
+.stab section, so ordinary mechanisms wouldn't work to find it, even if
+we had some.
+
+\1f
+File: bfd.info,  Node: mmo,  Prev: elf,  Up: BFD back ends
+
+3.5 mmo backend
+===============
+
+The mmo object format is used exclusively together with Professor
+Donald E. Knuth's educational 64-bit processor MMIX.  The simulator
+`mmix' which is available at
+`http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz'
+understands this format.  That package also includes a combined
+assembler and linker called `mmixal'.  The mmo format has no advantages
+feature-wise compared to e.g. ELF.  It is a simple non-relocatable
+object format with no support for archives or debugging information,
+except for symbol value information and line numbers (which is not yet
+implemented in BFD).  See
+`http://www-cs-faculty.stanford.edu/~knuth/mmix.html' for more
+information about MMIX.  The ELF format is used for intermediate object
+files in the BFD implementation.
+
+* Menu:
+
+* File layout::
+* Symbol-table::
+* mmo section mapping::
+
+\1f
+File: bfd.info,  Node: File layout,  Next: Symbol-table,  Prev: mmo,  Up: mmo
+
+3.5.1 File layout
+-----------------
+
+The mmo file contents is not partitioned into named sections as with
+e.g. ELF.  Memory areas is formed by specifying the location of the
+data that follows.  Only the memory area `0x0000...00' to `0x01ff...ff'
+is executable, so it is used for code (and constants) and the area
+`0x2000...00' to `0x20ff...ff' is used for writable data.  *Note mmo
+section mapping::.
+
+   There is provision for specifying "special data" of 65536 different
+types.  We use type 80 (decimal), arbitrarily chosen the same as the
+ELF `e_machine' number for MMIX, filling it with section information
+normally found in ELF objects. *Note mmo section mapping::.
+
+   Contents is entered as 32-bit words, xor:ed over previous contents,
+always zero-initialized.  A word that starts with the byte `0x98' forms
+a command called a `lopcode', where the next byte distinguished between
+the thirteen lopcodes.  The two remaining bytes, called the `Y' and `Z'
+fields, or the `YZ' field (a 16-bit big-endian number), are used for
+various purposes different for each lopcode.  As documented in
+`http://www-cs-faculty.stanford.edu/~knuth/mmixal-intro.ps.gz', the
+lopcodes are:
+
+`lop_quote'
+     0x98000001.  The next word is contents, regardless of whether it
+     starts with 0x98 or not.
+
+`lop_loc'
+     0x9801YYZZ, where `Z' is 1 or 2.  This is a location directive,
+     setting the location for the next data to the next 32-bit word
+     (for Z = 1) or 64-bit word (for Z = 2), plus Y * 2^56.  Normally
+     `Y' is 0 for the text segment and 2 for the data segment.
+
+`lop_skip'
+     0x9802YYZZ.  Increase the current location by `YZ' bytes.
+
+`lop_fixo'
+     0x9803YYZZ, where `Z' is 1 or 2.  Store the current location as 64
+     bits into the location pointed to by the next 32-bit (Z = 1) or
+     64-bit (Z = 2) word, plus Y * 2^56.
+
+`lop_fixr'
+     0x9804YYZZ.  `YZ' is stored into the current location plus 2 - 4 *
+     YZ.
+
+`lop_fixrx'
+     0x980500ZZ.  `Z' is 16 or 24.  A value `L' derived from the
+     following 32-bit word are used in a manner similar to `YZ' in
+     lop_fixr: it is xor:ed into the current location minus 4 * L.  The
+     first byte of the word is 0 or 1.  If it is 1, then L = (LOWEST 24
+     BITS OF WORD) - 2^Z, if 0, then L = (LOWEST 24 BITS OF WORD).
+
+`lop_file'
+     0x9806YYZZ.  `Y' is the file number, `Z' is count of 32-bit words.
+     Set the file number to `Y' and the line counter to 0.  The next Z
+     * 4 bytes contain the file name, padded with zeros if the count is
+     not a multiple of four.  The same `Y' may occur multiple times,
+     but `Z' must be 0 for all but the first occurrence.
+
+`lop_line'
+     0x9807YYZZ.  `YZ' is the line number.  Together with lop_file, it
+     forms the source location for the next 32-bit word.  Note that for
+     each non-lopcode 32-bit word, line numbers are assumed incremented
+     by one.
+
+`lop_spec'
+     0x9808YYZZ.  `YZ' is the type number.  Data until the next lopcode
+     other than lop_quote forms special data of type `YZ'.  *Note mmo
+     section mapping::.
+
+     Other types than 80, (or type 80 with a content that does not
+     parse) is stored in sections named `.MMIX.spec_data.N' where N is
+     the `YZ'-type.  The flags for such a sections say not to allocate
+     or load the data.  The vma is 0.  Contents of multiple occurrences
+     of special data N is concatenated to the data of the previous
+     lop_spec Ns.  The location in data or code at which the lop_spec
+     occurred is lost.
+
+`lop_pre'
+     0x980901ZZ.  The first lopcode in a file.  The `Z' field forms the
+     length of header information in 32-bit words, where the first word
+     tells the time in seconds since `00:00:00 GMT Jan 1 1970'.
+
+`lop_post'
+     0x980a00ZZ.  Z > 32.  This lopcode follows after all
+     content-generating lopcodes in a program.  The `Z' field denotes
+     the value of `rG' at the beginning of the program.  The following
+     256 - Z big-endian 64-bit words are loaded into global registers
+     `$G' ... `$255'.
+
+`lop_stab'
+     0x980b0000.  The next-to-last lopcode in a program.  Must follow
+     immediately after the lop_post lopcode and its data.  After this
+     lopcode follows all symbols in a compressed format (*note
+     Symbol-table::).
+
+`lop_end'
+     0x980cYYZZ.  The last lopcode in a program.  It must follow the
+     lop_stab lopcode and its data.  The `YZ' field contains the number
+     of 32-bit words of symbol table information after the preceding
+     lop_stab lopcode.
+
+   Note that the lopcode "fixups"; `lop_fixr', `lop_fixrx' and
+`lop_fixo' are not generated by BFD, but are handled.  They are
+generated by `mmixal'.
+
+   This trivial one-label, one-instruction file:
+
+      :Main TRAP 1,2,3
+
+   can be represented this way in mmo:
+
+      0x98090101 - lop_pre, one 32-bit word with timestamp.
+      <timestamp>
+      0x98010002 - lop_loc, text segment, using a 64-bit address.
+                   Note that mmixal does not emit this for the file above.
+      0x00000000 - Address, high 32 bits.
+      0x00000000 - Address, low 32 bits.
+      0x98060002 - lop_file, 2 32-bit words for file-name.
+      0x74657374 - "test"
+      0x2e730000 - ".s\0\0"
+      0x98070001 - lop_line, line 1.
+      0x00010203 - TRAP 1,2,3
+      0x980a00ff - lop_post, setting $255 to 0.
+      0x00000000
+      0x00000000
+      0x980b0000 - lop_stab for ":Main" = 0, serial 1.
+      0x203a4040   *Note Symbol-table::.
+      0x10404020
+      0x4d206120
+      0x69016e00
+      0x81000000
+      0x980c0005 - lop_end; symbol table contained five 32-bit words.
+
+\1f
+File: bfd.info,  Node: Symbol-table,  Next: mmo section mapping,  Prev: File layout,  Up: mmo
+
+3.5.2 Symbol table format
+-------------------------
+
+From mmixal.w (or really, the generated mmixal.tex) in
+`http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz'):
+"Symbols are stored and retrieved by means of a `ternary search trie',
+following ideas of Bentley and Sedgewick. (See ACM-SIAM Symp. on
+Discrete Algorithms `8' (1997), 360-369; R.Sedgewick, `Algorithms in C'
+(Reading, Mass.  Addison-Wesley, 1998), `15.4'.)  Each trie node stores
+a character, and there are branches to subtries for the cases where a
+given character is less than, equal to, or greater than the character
+in the trie.  There also is a pointer to a symbol table entry if a
+symbol ends at the current node."
+
+   So it's a tree encoded as a stream of bytes.  The stream of bytes
+acts on a single virtual global symbol, adding and removing characters
+and signalling complete symbol points.  Here, we read the stream and
+create symbols at the completion points.
+
+   First, there's a control byte `m'.  If any of the listed bits in `m'
+is nonzero, we execute what stands at the right, in the listed order:
+
+      (MMO3_LEFT)
+      0x40 - Traverse left trie.
+             (Read a new command byte and recurse.)
+
+      (MMO3_SYMBITS)
+      0x2f - Read the next byte as a character and store it in the
+             current character position; increment character position.
+             Test the bits of `m':
+
+             (MMO3_WCHAR)
+             0x80 - The character is 16-bit (so read another byte,
+                    merge into current character.
+
+             (MMO3_TYPEBITS)
+             0xf  - We have a complete symbol; parse the type, value
+                    and serial number and do what should be done
+                    with a symbol.  The type and length information
+                    is in j = (m & 0xf).
+
+                    (MMO3_REGQUAL_BITS)
+                    j == 0xf: A register variable.  The following
+                              byte tells which register.
+                    j <= 8:   An absolute symbol.  Read j bytes as the
+                              big-endian number the symbol equals.
+                              A j = 2 with two zero bytes denotes an
+                              unknown symbol.
+                    j > 8:    As with j <= 8, but add (0x20 << 56)
+                              to the value in the following j - 8
+                              bytes.
+
+                    Then comes the serial number, as a variant of
+                    uleb128, but better named ubeb128:
+                    Read bytes and shift the previous value left 7
+                    (multiply by 128).  Add in the new byte, repeat
+                    until a byte has bit 7 set.  The serial number
+                    is the computed value minus 128.
+
+             (MMO3_MIDDLE)
+             0x20 - Traverse middle trie.  (Read a new command byte
+                    and recurse.)  Decrement character position.
+
+      (MMO3_RIGHT)
+      0x10 - Traverse right trie.  (Read a new command byte and
+             recurse.)
+
+   Let's look again at the `lop_stab' for the trivial file (*note File
+layout::).
+
+      0x980b0000 - lop_stab for ":Main" = 0, serial 1.
+      0x203a4040
+      0x10404020
+      0x4d206120
+      0x69016e00
+      0x81000000
+
+   This forms the trivial trie (note that the path between ":" and "M"
+is redundant):
+
+      203a     ":"
+      40       /
+      40      /
+      10      \
+      40      /
+      40     /
+      204d  "M"
+      2061  "a"
+      2069  "i"
+      016e  "n" is the last character in a full symbol, and
+            with a value represented in one byte.
+      00    The value is 0.
+      81    The serial number is 1.
+
+\1f
+File: bfd.info,  Node: mmo section mapping,  Prev: Symbol-table,  Up: mmo
+
+3.5.3 mmo section mapping
+-------------------------
+
+The implementation in BFD uses special data type 80 (decimal) to
+encapsulate and describe named sections, containing e.g. debug
+information.  If needed, any datum in the encapsulation will be quoted
+using lop_quote.  First comes a 32-bit word holding the number of
+32-bit words containing the zero-terminated zero-padded segment name.
+After the name there's a 32-bit word holding flags describing the
+section type.  Then comes a 64-bit big-endian word with the section
+length (in bytes), then another with the section start address.
+Depending on the type of section, the contents might follow,
+zero-padded to 32-bit boundary.  For a loadable section (such as data
+or code), the contents might follow at some later point, not
+necessarily immediately, as a lop_loc with the same start address as in
+the section description, followed by the contents.  This in effect
+forms a descriptor that must be emitted before the actual contents.
+Sections described this way must not overlap.
+
+   For areas that don't have such descriptors, synthetic sections are
+formed by BFD.  Consecutive contents in the two memory areas
+`0x0000...00' to `0x01ff...ff' and `0x2000...00' to `0x20ff...ff' are
+entered in sections named `.text' and `.data' respectively.  If an area
+is not otherwise described, but would together with a neighboring lower
+area be less than `0x40000000' bytes long, it is joined with the lower
+area and the gap is zero-filled.  For other cases, a new section is
+formed, named `.MMIX.sec.N'.  Here, N is a number, a running count
+through the mmo file, starting at 0.
+
+   A loadable section specified as:
+
+      .section secname,"ax"
+      TETRA 1,2,3,4,-1,-2009
+      BYTE 80
+
+   and linked to address `0x4', is represented by the sequence:
+
+      0x98080050 - lop_spec 80
+      0x00000002 - two 32-bit words for the section name
+      0x7365636e - "secn"
+      0x616d6500 - "ame\0"
+      0x00000033 - flags CODE, READONLY, LOAD, ALLOC
+      0x00000000 - high 32 bits of section length
+      0x0000001c - section length is 28 bytes; 6 * 4 + 1 + alignment to 32 bits
+      0x00000000 - high 32 bits of section address
+      0x00000004 - section address is 4
+      0x98010002 - 64 bits with address of following data
+      0x00000000 - high 32 bits of address
+      0x00000004 - low 32 bits: data starts at address 4
+      0x00000001 - 1
+      0x00000002 - 2
+      0x00000003 - 3
+      0x00000004 - 4
+      0xffffffff - -1
+      0xfffff827 - -2009
+      0x50000000 - 80 as a byte, padded with zeros.
+
+   Note that the lop_spec wrapping does not include the section
+contents.  Compare this to a non-loaded section specified as:
+
+      .section thirdsec
+      TETRA 200001,100002
+      BYTE 38,40
+
+   This, when linked to address `0x200000000000001c', is represented by:
+
+      0x98080050 - lop_spec 80
+      0x00000002 - two 32-bit words for the section name
+      0x7365636e - "thir"
+      0x616d6500 - "dsec"
+      0x00000010 - flag READONLY
+      0x00000000 - high 32 bits of section length
+      0x0000000c - section length is 12 bytes; 2 * 4 + 2 + alignment to 32 bits
+      0x20000000 - high 32 bits of address
+      0x0000001c - low 32 bits of address 0x200000000000001c
+      0x00030d41 - 200001
+      0x000186a2 - 100002
+      0x26280000 - 38, 40 as bytes, padded with zeros
+
+   For the latter example, the section contents must not be loaded in
+memory, and is therefore specified as part of the special data.  The
+address is usually unimportant but might provide information for e.g.
+the DWARF 2 debugging format.
+
+\1f
+File: bfd.info,  Node: GNU Free Documentation License,  Next: BFD Index,  Prev: BFD back ends,  Up: Top
+
+Appendix A GNU Free Documentation License
+*****************************************
+
+                        Version 1.1, March 2000
+
+     Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
+  0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     written document "free" in the sense of freedom: to assure everyone
+     the effective freedom to copy and redistribute it, with or without
+     modifying it, either commercially or noncommercially.  Secondarily,
+     this License preserves for the author and publisher a way to get
+     credit for their work, while not being considered responsible for
+     modifications made by others.
+
+     This License is a kind of "copyleft", which means that derivative
+     works of the document must themselves be free in the same sense.
+     It complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for
+     free software, because free software needs free documentation: a
+     free program should come with manuals providing the same freedoms
+     that the software does.  But this License is not limited to
+     software manuals; it can be used for any textual work, regardless
+     of subject matter or whether it is published as a printed book.
+     We recommend this License principally for works whose purpose is
+     instruction or reference.
+
+
+  1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work that contains a
+     notice placed by the copyright holder saying it can be distributed
+     under the terms of this License.  The "Document", below, refers to
+     any such manual or work.  Any member of the public is a licensee,
+     and is addressed as "you."
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter
+     section of the Document that deals exclusively with the
+     relationship of the publishers or authors of the Document to the
+     Document's overall subject (or to related matters) and contains
+     nothing that could fall directly within that overall subject.
+     (For example, if the Document is in part a textbook of
+     mathematics, a Secondary Section may not explain any mathematics.)
+     The relationship could be a matter of historical connection with
+     the subject or with related matters, or of legal, commercial,
+     philosophical, ethical or political position regarding them.
+
+     The "Invariant Sections" are certain Secondary Sections whose
+     titles are designated, as being those of Invariant Sections, in
+     the notice that says that the Document is released under this
+     License.
+
+     The "Cover Texts" are certain short passages of text that are
+     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+     that says that the Document is released under this License.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, whose contents can be viewed and edited directly
+     and straightforwardly with generic text editors or (for images
+     composed of pixels) generic paint programs or (for drawings) some
+     widely available drawing editor, and that is suitable for input to
+     text formatters or for automatic translation to a variety of
+     formats suitable for input to text formatters.  A copy made in an
+     otherwise Transparent file format whose markup has been designed
+     to thwart or discourage subsequent modification by readers is not
+     Transparent.  A copy that is not "Transparent" is called "Opaque."
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format,
+     SGML or XML using a publicly available DTD, and
+     standard-conforming simple HTML designed for human modification.
+     Opaque formats include PostScript, PDF, proprietary formats that
+     can be read and edited only by proprietary word processors, SGML
+     or XML for which the DTD and/or processing tools are not generally
+     available, and the machine-generated HTML produced by some word
+     processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the
+     material this License requires to appear in the title page.  For
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
+
+  2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License
+     applies to the Document are reproduced in all copies, and that you
+     add no other conditions whatsoever to those of this License.  You
+     may not use technical measures to obstruct or control the reading
+     or further copying of the copies you make or distribute.  However,
+     you may accept compensation in exchange for copies.  If you
+     distribute a large enough number of copies you must also follow
+     the conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above,
+     and you may publicly display copies.
+
+  3. COPYING IN QUANTITY
+
+     If you publish printed copies of the Document numbering more than
+     100, and the Document's license notice requires Cover Texts, you
+     must enclose the copies in covers that carry, clearly and legibly,
+     all these Cover Texts: Front-Cover Texts on the front cover, and
+     Back-Cover Texts on the back cover.  Both covers must also clearly
+     and legibly identify you as the publisher of these copies.  The
+     front cover must present the full title with all words of the
+     title equally prominent and visible.  You may add other material
+     on the covers in addition.  Copying with changes limited to the
+     covers, as long as they preserve the title of the Document and
+     satisfy these conditions, can be treated as verbatim copying in
+     other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto
+     adjacent pages.
+
+     If you publish or distribute Opaque copies of the Document
+     numbering more than 100, you must either include a
+     machine-readable Transparent copy along with each Opaque copy, or
+     state in or with each Opaque copy a publicly-accessible
+     computer-network location containing a complete Transparent copy
+     of the Document, free of added material, which the general
+     network-using public has access to download anonymously at no
+     charge using public-standard network protocols.  If you use the
+     latter option, you must take reasonably prudent steps, when you
+     begin distribution of Opaque copies in quantity, to ensure that
+     this Transparent copy will remain thus accessible at the stated
+     location until at least one year after the last time you
+     distribute an Opaque copy (directly or through your agents or
+     retailers) of that edition to the public.
+
+     It is requested, but not required, that you contact the authors of
+     the Document well before redistributing any large number of
+     copies, to give them a chance to provide you with an updated
+     version of the Document.
+
+  4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document
+     under the conditions of sections 2 and 3 above, provided that you
+     release the Modified Version under precisely this License, with
+     the Modified Version filling the role of the Document, thus
+     licensing distribution and modification of the Modified Version to
+     whoever possesses a copy of it.  In addition, you must do these
+     things in the Modified Version:
+
+     A. Use in the Title Page (and on the covers, if any) a title
+     distinct    from that of the Document, and from those of previous
+     versions    (which should, if there were any, be listed in the
+     History section    of the Document).  You may use the same title
+     as a previous version    if the original publisher of that version
+     gives permission.
+     B. List on the Title Page, as authors, one or more persons or
+     entities    responsible for authorship of the modifications in the
+     Modified    Version, together with at least five of the principal
+     authors of the    Document (all of its principal authors, if it
+     has less than five).
+     C. State on the Title page the name of the publisher of the
+     Modified Version, as the publisher.
+     D. Preserve all the copyright notices of the Document.
+     E. Add an appropriate copyright notice for your modifications
+     adjacent to the other copyright notices.
+     F. Include, immediately after the copyright notices, a license
+     notice    giving the public permission to use the Modified Version
+     under the    terms of this License, in the form shown in the
+     Addendum below.
+     G. Preserve in that license notice the full lists of Invariant
+     Sections    and required Cover Texts given in the Document's
+     license notice.
+     H. Include an unaltered copy of this License.
+     I. Preserve the section entitled "History", and its title, and add
+     to    it an item stating at least the title, year, new authors, and
+       publisher of the Modified Version as given on the Title Page.
+     If    there is no section entitled "History" in the Document,
+     create one    stating the title, year, authors, and publisher of
+     the Document as    given on its Title Page, then add an item
+     describing the Modified    Version as stated in the previous
+     sentence.
+     J. Preserve the network location, if any, given in the Document for
+       public access to a Transparent copy of the Document, and
+     likewise    the network locations given in the Document for
+     previous versions    it was based on.  These may be placed in the
+     "History" section.     You may omit a network location for a work
+     that was published at    least four years before the Document
+     itself, or if the original    publisher of the version it refers
+     to gives permission.
+     K. In any section entitled "Acknowledgements" or "Dedications",
+     preserve the section's title, and preserve in the section all the
+      substance and tone of each of the contributor acknowledgements
+     and/or dedications given therein.
+     L. Preserve all the Invariant Sections of the Document,
+     unaltered in their text and in their titles.  Section numbers
+     or the equivalent are not considered part of the section titles.
+     M. Delete any section entitled "Endorsements."  Such a section
+     may not be included in the Modified Version.
+     N. Do not retitle any existing section as "Endorsements"    or to
+     conflict in title with any Invariant Section.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no
+     material copied from the Document, you may at your option
+     designate some or all of these sections as invariant.  To do this,
+     add their titles to the list of Invariant Sections in the Modified
+     Version's license notice.  These titles must be distinct from any
+     other section titles.
+
+     You may add a section entitled "Endorsements", provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties-for example, statements of peer review or that the text has
+     been approved by an organization as the authoritative definition
+     of a standard.
+
+     You may add a passage of up to five words as a Front-Cover Text,
+     and a passage of up to 25 words as a Back-Cover Text, to the end
+     of the list of Cover Texts in the Modified Version.  Only one
+     passage of Front-Cover Text and one of Back-Cover Text may be
+     added by (or through arrangements made by) any one entity.  If the
+     Document already includes a cover text for the same cover,
+     previously added by you or by arrangement made by the same entity
+     you are acting on behalf of, you may not add another; but you may
+     replace the old one, on explicit permission from the previous
+     publisher that added the old one.
+
+     The author(s) and publisher(s) of the Document do not by this
+     License give permission to use their names for publicity for or to
+     assert or imply endorsement of any Modified Version.
+
+  5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under
+     this License, under the terms defined in section 4 above for
+     modified versions, provided that you include in the combination
+     all of the Invariant Sections of all of the original documents,
+     unmodified, and list them all as Invariant Sections of your
+     combined work in its license notice.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name
+     but different contents, make the title of each such section unique
+     by adding at the end of it, in parentheses, the name of the
+     original author or publisher of that section if known, or else a
+     unique number.  Make the same adjustment to the section titles in
+     the list of Invariant Sections in the license notice of the
+     combined work.
+
+     In the combination, you must combine any sections entitled
+     "History" in the various original documents, forming one section
+     entitled "History"; likewise combine any sections entitled
+     "Acknowledgements", and any sections entitled "Dedications."  You
+     must delete all sections entitled "Endorsements."
+
+  6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the
+     rules of this License for verbatim copying of each of the
+     documents in all other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert
+     a copy of this License into the extracted document, and follow
+     this License in all other respects regarding verbatim copying of
+     that document.
+
+  7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other
+     separate and independent documents or works, in or on a volume of
+     a storage or distribution medium, does not as a whole count as a
+     Modified Version of the Document, provided no compilation
+     copyright is claimed for the compilation.  Such a compilation is
+     called an "aggregate", and this License does not apply to the
+     other self-contained works thus compiled with the Document, on
+     account of their being thus compiled, if they are not themselves
+     derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one
+     quarter of the entire aggregate, the Document's Cover Texts may be
+     placed on covers that surround only the Document within the
+     aggregate.  Otherwise they must appear on covers around the whole
+     aggregate.
+
+  8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section
+     4.  Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License provided that you also include the
+     original English version of this License.  In case of a
+     disagreement between the translation and the original English
+     version of this License, the original English version will prevail.
+
+  9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided for under this License.  Any other
+     attempt to copy, modify, sublicense or distribute the Document is
+     void, and will automatically terminate your rights under this
+     License.  However, parties who have received copies, or rights,
+     from you under this License will not have their licenses
+     terminated so long as such parties remain in full compliance.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of
+     the GNU Free Documentation License from time to time.  Such new
+     versions will be similar in spirit to the present version, but may
+     differ in detail to address new problems or concerns.  See
+     http://www.gnu.org/copyleft/.
+
+     Each version of the License is given a distinguishing version
+     number.  If the Document specifies that a particular numbered
+     version of this License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that specified version or of any later version that has been
+     published (not as a draft) by the Free Software Foundation.  If
+     the Document does not specify a version number of this License,
+     you may choose any version ever published (not as a draft) by the
+     Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+     Copyright (C)  YEAR  YOUR NAME.
+     Permission is granted to copy, distribute and/or modify this document
+     under the terms of the GNU Free Documentation License, Version 1.1
+     or any later version published by the Free Software Foundation;
+     with the Invariant Sections being LIST THEIR TITLES, with the
+     Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+     A copy of the license is included in the section entitled "GNU
+     Free Documentation License."
+
+   If you have no Invariant Sections, write "with no Invariant Sections"
+instead of saying which ones are invariant.  If you have no Front-Cover
+Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
+LIST"; likewise for Back-Cover Texts.
+
+   If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+\1f
+File: bfd.info,  Node: BFD Index,  Prev: GNU Free Documentation License,  Up: Top
+
+BFD Index
+*********
+
+\0\b[index\0\b]
+* Menu:
+
+* _bfd_final_link_relocate:              Relocating the section contents.
+                                                             (line   22)
+* _bfd_generic_link_add_archive_symbols: Adding symbols from an archive.
+                                                             (line   12)
+* _bfd_generic_link_add_one_symbol:      Adding symbols from an object file.
+                                                             (line   19)
+* _bfd_generic_make_empty_symbol:        symbol handling functions.
+                                                             (line   92)
+* _bfd_link_add_symbols in target vector: Adding Symbols to the Hash Table.
+                                                             (line    6)
+* _bfd_link_final_link in target vector: Performing the Final Link.
+                                                             (line    6)
+* _bfd_link_hash_table_create in target vector: Creating a Linker Hash Table.
+                                                             (line    6)
+* _bfd_relocate_contents:                Relocating the section contents.
+                                                             (line   22)
+* aout_SIZE_machine_type:                aout.               (line  147)
+* aout_SIZE_mkobject:                    aout.               (line  139)
+* aout_SIZE_new_section_hook:            aout.               (line  177)
+* aout_SIZE_set_arch_mach:               aout.               (line  164)
+* aout_SIZE_some_aout_object_p:          aout.               (line  125)
+* aout_SIZE_swap_exec_header_in:         aout.               (line  101)
+* aout_SIZE_swap_exec_header_out:        aout.               (line  113)
+* arelent_chain:                         typedef arelent.    (line  339)
+* BFD:                                   Overview.           (line    6)
+* BFD canonical format:                  Canonical format.   (line   11)
+* bfd_alloc:                             Opening and Closing.
+                                                             (line  203)
+* bfd_alloc2:                            Opening and Closing.
+                                                             (line  212)
+* bfd_alt_mach_code:                     BFD front end.      (line  602)
+* bfd_arch_bits_per_address:             Architectures.      (line  481)
+* bfd_arch_bits_per_byte:                Architectures.      (line  473)
+* bfd_arch_get_compatible:               Architectures.      (line  416)
+* bfd_arch_list:                         Architectures.      (line  407)
+* bfd_arch_mach_octets_per_byte:         Architectures.      (line  550)
+* BFD_ARELOC_BFIN_ADD:                   howto manager.      (line  942)
+* BFD_ARELOC_BFIN_ADDR:                  howto manager.      (line  993)
+* BFD_ARELOC_BFIN_AND:                   howto manager.      (line  963)
+* BFD_ARELOC_BFIN_COMP:                  howto manager.      (line  984)
+* BFD_ARELOC_BFIN_CONST:                 howto manager.      (line  939)
+* BFD_ARELOC_BFIN_DIV:                   howto manager.      (line  951)
+* BFD_ARELOC_BFIN_HWPAGE:                howto manager.      (line  990)
+* BFD_ARELOC_BFIN_LAND:                  howto manager.      (line  972)
+* BFD_ARELOC_BFIN_LEN:                   howto manager.      (line  978)
+* BFD_ARELOC_BFIN_LOR:                   howto manager.      (line  975)
+* BFD_ARELOC_BFIN_LSHIFT:                howto manager.      (line  957)
+* BFD_ARELOC_BFIN_MOD:                   howto manager.      (line  954)
+* BFD_ARELOC_BFIN_MULT:                  howto manager.      (line  948)
+* BFD_ARELOC_BFIN_NEG:                   howto manager.      (line  981)
+* BFD_ARELOC_BFIN_OR:                    howto manager.      (line  966)
+* BFD_ARELOC_BFIN_PAGE:                  howto manager.      (line  987)
+* BFD_ARELOC_BFIN_PUSH:                  howto manager.      (line  936)
+* BFD_ARELOC_BFIN_RSHIFT:                howto manager.      (line  960)
+* BFD_ARELOC_BFIN_SUB:                   howto manager.      (line  945)
+* BFD_ARELOC_BFIN_XOR:                   howto manager.      (line  969)
+* bfd_cache_close:                       File Caching.       (line   26)
+* bfd_cache_close_all:                   File Caching.       (line   39)
+* bfd_cache_init:                        File Caching.       (line   18)
+* bfd_calc_gnu_debuglink_crc32:          Opening and Closing.
+                                                             (line  239)
+* bfd_canonicalize_reloc:                BFD front end.      (line  321)
+* bfd_canonicalize_symtab:               symbol handling functions.
+                                                             (line   50)
+* bfd_check_format:                      Formats.            (line   21)
+* bfd_check_format_matches:              Formats.            (line   52)
+* bfd_check_overflow:                    typedef arelent.    (line  351)
+* bfd_close:                             Opening and Closing.
+                                                             (line  128)
+* bfd_close_all_done:                    Opening and Closing.
+                                                             (line  146)
+* bfd_coff_backend_data:                 coff.               (line  246)
+* bfd_copy_private_bfd_data:             BFD front end.      (line  460)
+* bfd_copy_private_header_data:          BFD front end.      (line  442)
+* bfd_copy_private_section_data:         section prototypes. (line  255)
+* bfd_copy_private_symbol_data:          symbol handling functions.
+                                                             (line  140)
+* bfd_core_file_failing_command:         Core Files.         (line   12)
+* bfd_core_file_failing_signal:          Core Files.         (line   21)
+* bfd_create:                            Opening and Closing.
+                                                             (line  165)
+* bfd_create_gnu_debuglink_section:      Opening and Closing.
+                                                             (line  305)
+* bfd_decode_symclass:                   symbol handling functions.
+                                                             (line  111)
+* bfd_default_arch_struct:               Architectures.      (line  428)
+* bfd_default_compatible:                Architectures.      (line  490)
+* bfd_default_reloc_type_lookup:         howto manager.      (line 2023)
+* bfd_default_scan:                      Architectures.      (line  499)
+* bfd_default_set_arch_mach:             Architectures.      (line  446)
+* bfd_elf_find_section:                  elf.                (line   13)
+* bfd_emul_get_commonpagesize:           BFD front end.      (line  680)
+* bfd_emul_get_maxpagesize:              BFD front end.      (line  660)
+* bfd_emul_set_commonpagesize:           BFD front end.      (line  691)
+* bfd_emul_set_maxpagesize:              BFD front end.      (line  671)
+* bfd_errmsg:                            BFD front end.      (line  246)
+* bfd_fdopenr:                           Opening and Closing.
+                                                             (line   46)
+* bfd_fill_in_gnu_debuglink_section:     Opening and Closing.
+                                                             (line  319)
+* bfd_find_target:                       bfd_target.         (line  435)
+* bfd_follow_gnu_debuglink:              Opening and Closing.
+                                                             (line  284)
+* bfd_fopen:                             Opening and Closing.
+                                                             (line    9)
+* bfd_format_string:                     Formats.            (line   79)
+* bfd_generic_discard_group:             section prototypes. (line  281)
+* bfd_generic_gc_sections:               howto manager.      (line 2054)
+* bfd_generic_get_relocated_section_contents: howto manager. (line 2074)
+* bfd_generic_is_group_section:          section prototypes. (line  273)
+* bfd_generic_merge_sections:            howto manager.      (line 2064)
+* bfd_generic_relax_section:             howto manager.      (line 2041)
+* bfd_get_arch:                          Architectures.      (line  457)
+* bfd_get_arch_info:                     Architectures.      (line  509)
+* bfd_get_arch_size:                     BFD front end.      (line  365)
+* bfd_get_error:                         BFD front end.      (line  227)
+* bfd_get_error_handler:                 BFD front end.      (line  297)
+* bfd_get_gp_size:                       BFD front end.      (line  406)
+* bfd_get_mach:                          Architectures.      (line  465)
+* bfd_get_mtime:                         BFD front end.      (line  730)
+* bfd_get_next_mapent:                   Archives.           (line   52)
+* bfd_get_reloc_code_name:               howto manager.      (line 2032)
+* bfd_get_reloc_size:                    typedef arelent.    (line  330)
+* bfd_get_reloc_upper_bound:             BFD front end.      (line  311)
+* bfd_get_section_by_name:               section prototypes. (line   17)
+* bfd_get_section_by_name_if:            section prototypes. (line   31)
+* bfd_get_section_contents:              section prototypes. (line  228)
+* bfd_get_sign_extend_vma:               BFD front end.      (line  378)
+* bfd_get_size <1>:                      Internal.           (line   25)
+* bfd_get_size:                          BFD front end.      (line  739)
+* bfd_get_symtab_upper_bound:            symbol handling functions.
+                                                             (line    6)
+* bfd_get_unique_section_name:           section prototypes. (line   50)
+* bfd_h_put_size:                        Internal.           (line   97)
+* bfd_hash_allocate:                     Creating and Freeing a Hash Table.
+                                                             (line   17)
+* bfd_hash_lookup:                       Looking Up or Entering a String.
+                                                             (line    6)
+* bfd_hash_newfunc:                      Creating and Freeing a Hash Table.
+                                                             (line   12)
+* bfd_hash_set_default_size:             Creating and Freeing a Hash Table.
+                                                             (line   25)
+* bfd_hash_table_free:                   Creating and Freeing a Hash Table.
+                                                             (line   21)
+* bfd_hash_table_init:                   Creating and Freeing a Hash Table.
+                                                             (line    6)
+* bfd_hash_table_init_n:                 Creating and Freeing a Hash Table.
+                                                             (line    6)
+* bfd_hash_traverse:                     Traversing a Hash Table.
+                                                             (line    6)
+* bfd_init:                              Initialization.     (line   11)
+* bfd_install_relocation:                typedef arelent.    (line  392)
+* bfd_is_local_label:                    symbol handling functions.
+                                                             (line   17)
+* bfd_is_local_label_name:               symbol handling functions.
+                                                             (line   26)
+* bfd_is_target_special_symbol:          symbol handling functions.
+                                                             (line   38)
+* bfd_is_undefined_symclass:             symbol handling functions.
+                                                             (line  120)
+* bfd_link_split_section:                Writing the symbol table.
+                                                             (line   44)
+* bfd_log2:                              Internal.           (line  164)
+* bfd_lookup_arch:                       Architectures.      (line  517)
+* bfd_make_debug_symbol:                 symbol handling functions.
+                                                             (line  102)
+* bfd_make_empty_symbol:                 symbol handling functions.
+                                                             (line   78)
+* bfd_make_readable:                     Opening and Closing.
+                                                             (line  189)
+* bfd_make_section:                      section prototypes. (line  129)
+* bfd_make_section_anyway:               section prototypes. (line  100)
+* bfd_make_section_anyway_with_flags:    section prototypes. (line   82)
+* bfd_make_section_old_way:              section prototypes. (line   62)
+* bfd_make_section_with_flags:           section prototypes. (line  116)
+* bfd_make_writable:                     Opening and Closing.
+                                                             (line  175)
+* bfd_malloc_and_get_section:            section prototypes. (line  245)
+* bfd_map_over_sections:                 section prototypes. (line  155)
+* bfd_merge_private_bfd_data:            BFD front end.      (line  476)
+* bfd_octets_per_byte:                   Architectures.      (line  540)
+* bfd_open_file:                         File Caching.       (line   52)
+* bfd_openr:                             Opening and Closing.
+                                                             (line   30)
+* bfd_openr_iovec:                       Opening and Closing.
+                                                             (line   76)
+* bfd_openr_next_archived_file:          Archives.           (line   78)
+* bfd_openstreamr:                       Opening and Closing.
+                                                             (line   67)
+* bfd_openw:                             Opening and Closing.
+                                                             (line  116)
+* bfd_perform_relocation:                typedef arelent.    (line  367)
+* bfd_perror:                            BFD front end.      (line  255)
+* bfd_preserve_finish:                   BFD front end.      (line  650)
+* bfd_preserve_restore:                  BFD front end.      (line  640)
+* bfd_preserve_save:                     BFD front end.      (line  624)
+* bfd_print_symbol_vandf:                symbol handling functions.
+                                                             (line   70)
+* bfd_printable_arch_mach:               Architectures.      (line  528)
+* bfd_printable_name:                    Architectures.      (line  388)
+* bfd_put_size:                          Internal.           (line   22)
+* BFD_RELOC_12_PCREL:                    howto manager.      (line   39)
+* BFD_RELOC_14:                          howto manager.      (line   31)
+* BFD_RELOC_16:                          howto manager.      (line   30)
+* BFD_RELOC_16_BASEREL:                  howto manager.      (line   80)
+* BFD_RELOC_16_GOT_PCREL:                howto manager.      (line   52)
+* BFD_RELOC_16_GOTOFF:                   howto manager.      (line   55)
+* BFD_RELOC_16_PCREL:                    howto manager.      (line   38)
+* BFD_RELOC_16_PCREL_S2:                 howto manager.      (line   92)
+* BFD_RELOC_16_PLT_PCREL:                howto manager.      (line   63)
+* BFD_RELOC_16_PLTOFF:                   howto manager.      (line   67)
+* BFD_RELOC_16C_ABS20:                   howto manager.      (line 1747)
+* BFD_RELOC_16C_ABS20_C:                 howto manager.      (line 1748)
+* BFD_RELOC_16C_ABS24:                   howto manager.      (line 1749)
+* BFD_RELOC_16C_ABS24_C:                 howto manager.      (line 1750)
+* BFD_RELOC_16C_DISP04:                  howto manager.      (line 1727)
+* BFD_RELOC_16C_DISP04_C:                howto manager.      (line 1728)
+* BFD_RELOC_16C_DISP08:                  howto manager.      (line 1729)
+* BFD_RELOC_16C_DISP08_C:                howto manager.      (line 1730)
+* BFD_RELOC_16C_DISP16:                  howto manager.      (line 1731)
+* BFD_RELOC_16C_DISP16_C:                howto manager.      (line 1732)
+* BFD_RELOC_16C_DISP24:                  howto manager.      (line 1733)
+* BFD_RELOC_16C_DISP24_C:                howto manager.      (line 1734)
+* BFD_RELOC_16C_DISP24a:                 howto manager.      (line 1735)
+* BFD_RELOC_16C_DISP24a_C:               howto manager.      (line 1736)
+* BFD_RELOC_16C_IMM04:                   howto manager.      (line 1751)
+* BFD_RELOC_16C_IMM04_C:                 howto manager.      (line 1752)
+* BFD_RELOC_16C_IMM16:                   howto manager.      (line 1753)
+* BFD_RELOC_16C_IMM16_C:                 howto manager.      (line 1754)
+* BFD_RELOC_16C_IMM20:                   howto manager.      (line 1755)
+* BFD_RELOC_16C_IMM20_C:                 howto manager.      (line 1756)
+* BFD_RELOC_16C_IMM24:                   howto manager.      (line 1757)
+* BFD_RELOC_16C_IMM24_C:                 howto manager.      (line 1758)
+* BFD_RELOC_16C_IMM32:                   howto manager.      (line 1759)
+* BFD_RELOC_16C_IMM32_C:                 howto manager.      (line 1760)
+* BFD_RELOC_16C_NUM08:                   howto manager.      (line 1721)
+* BFD_RELOC_16C_NUM08_C:                 howto manager.      (line 1722)
+* BFD_RELOC_16C_NUM16:                   howto manager.      (line 1723)
+* BFD_RELOC_16C_NUM16_C:                 howto manager.      (line 1724)
+* BFD_RELOC_16C_NUM32:                   howto manager.      (line 1725)
+* BFD_RELOC_16C_NUM32_C:                 howto manager.      (line 1726)
+* BFD_RELOC_16C_REG04:                   howto manager.      (line 1737)
+* BFD_RELOC_16C_REG04_C:                 howto manager.      (line 1738)
+* BFD_RELOC_16C_REG04a:                  howto manager.      (line 1739)
+* BFD_RELOC_16C_REG04a_C:                howto manager.      (line 1740)
+* BFD_RELOC_16C_REG14:                   howto manager.      (line 1741)
+* BFD_RELOC_16C_REG14_C:                 howto manager.      (line 1742)
+* BFD_RELOC_16C_REG16:                   howto manager.      (line 1743)
+* BFD_RELOC_16C_REG16_C:                 howto manager.      (line 1744)
+* BFD_RELOC_16C_REG20:                   howto manager.      (line 1745)
+* BFD_RELOC_16C_REG20_C:                 howto manager.      (line 1746)
+* BFD_RELOC_23_PCREL_S2:                 howto manager.      (line   93)
+* BFD_RELOC_24:                          howto manager.      (line   29)
+* BFD_RELOC_24_PCREL:                    howto manager.      (line   37)
+* BFD_RELOC_24_PLT_PCREL:                howto manager.      (line   62)
+* BFD_RELOC_26:                          howto manager.      (line   28)
+* BFD_RELOC_32:                          howto manager.      (line   27)
+* BFD_RELOC_32_BASEREL:                  howto manager.      (line   79)
+* BFD_RELOC_32_GOT_PCREL:                howto manager.      (line   51)
+* BFD_RELOC_32_GOTOFF:                   howto manager.      (line   54)
+* BFD_RELOC_32_PCREL:                    howto manager.      (line   36)
+* BFD_RELOC_32_PCREL_S2:                 howto manager.      (line   91)
+* BFD_RELOC_32_PLT_PCREL:                howto manager.      (line   61)
+* BFD_RELOC_32_PLTOFF:                   howto manager.      (line   66)
+* BFD_RELOC_32_SECREL:                   howto manager.      (line   48)
+* BFD_RELOC_386_COPY:                    howto manager.      (line  449)
+* BFD_RELOC_386_GLOB_DAT:                howto manager.      (line  450)
+* BFD_RELOC_386_GOT32:                   howto manager.      (line  447)
+* BFD_RELOC_386_GOTOFF:                  howto manager.      (line  453)
+* BFD_RELOC_386_GOTPC:                   howto manager.      (line  454)
+* BFD_RELOC_386_JUMP_SLOT:               howto manager.      (line  451)
+* BFD_RELOC_386_PLT32:                   howto manager.      (line  448)
+* BFD_RELOC_386_RELATIVE:                howto manager.      (line  452)
+* BFD_RELOC_386_TLS_DESC:                howto manager.      (line  469)
+* BFD_RELOC_386_TLS_DESC_CALL:           howto manager.      (line  468)
+* BFD_RELOC_386_TLS_DTPMOD32:            howto manager.      (line  464)
+* BFD_RELOC_386_TLS_DTPOFF32:            howto manager.      (line  465)
+* BFD_RELOC_386_TLS_GD:                  howto manager.      (line  459)
+* BFD_RELOC_386_TLS_GOTDESC:             howto manager.      (line  467)
+* BFD_RELOC_386_TLS_GOTIE:               howto manager.      (line  457)
+* BFD_RELOC_386_TLS_IE:                  howto manager.      (line  456)
+* BFD_RELOC_386_TLS_IE_32:               howto manager.      (line  462)
+* BFD_RELOC_386_TLS_LDM:                 howto manager.      (line  460)
+* BFD_RELOC_386_TLS_LDO_32:              howto manager.      (line  461)
+* BFD_RELOC_386_TLS_LE:                  howto manager.      (line  458)
+* BFD_RELOC_386_TLS_LE_32:               howto manager.      (line  463)
+* BFD_RELOC_386_TLS_TPOFF:               howto manager.      (line  455)
+* BFD_RELOC_386_TLS_TPOFF32:             howto manager.      (line  466)
+* BFD_RELOC_390_12:                      howto manager.      (line 1413)
+* BFD_RELOC_390_20:                      howto manager.      (line 1513)
+* BFD_RELOC_390_COPY:                    howto manager.      (line 1422)
+* BFD_RELOC_390_GLOB_DAT:                howto manager.      (line 1425)
+* BFD_RELOC_390_GOT12:                   howto manager.      (line 1416)
+* BFD_RELOC_390_GOT16:                   howto manager.      (line 1437)
+* BFD_RELOC_390_GOT20:                   howto manager.      (line 1514)
+* BFD_RELOC_390_GOT64:                   howto manager.      (line 1455)
+* BFD_RELOC_390_GOTENT:                  howto manager.      (line 1461)
+* BFD_RELOC_390_GOTOFF64:                howto manager.      (line 1464)
+* BFD_RELOC_390_GOTPC:                   howto manager.      (line 1434)
+* BFD_RELOC_390_GOTPCDBL:                howto manager.      (line 1452)
+* BFD_RELOC_390_GOTPLT12:                howto manager.      (line 1467)
+* BFD_RELOC_390_GOTPLT16:                howto manager.      (line 1470)
+* BFD_RELOC_390_GOTPLT20:                howto manager.      (line 1515)
+* BFD_RELOC_390_GOTPLT32:                howto manager.      (line 1473)
+* BFD_RELOC_390_GOTPLT64:                howto manager.      (line 1476)
+* BFD_RELOC_390_GOTPLTENT:               howto manager.      (line 1479)
+* BFD_RELOC_390_JMP_SLOT:                howto manager.      (line 1428)
+* BFD_RELOC_390_PC16DBL:                 howto manager.      (line 1440)
+* BFD_RELOC_390_PC32DBL:                 howto manager.      (line 1446)
+* BFD_RELOC_390_PLT16DBL:                howto manager.      (line 1443)
+* BFD_RELOC_390_PLT32:                   howto manager.      (line 1419)
+* BFD_RELOC_390_PLT32DBL:                howto manager.      (line 1449)
+* BFD_RELOC_390_PLT64:                   howto manager.      (line 1458)
+* BFD_RELOC_390_PLTOFF16:                howto manager.      (line 1482)
+* BFD_RELOC_390_PLTOFF32:                howto manager.      (line 1485)
+* BFD_RELOC_390_PLTOFF64:                howto manager.      (line 1488)
+* BFD_RELOC_390_RELATIVE:                howto manager.      (line 1431)
+* BFD_RELOC_390_TLS_DTPMOD:              howto manager.      (line 1508)
+* BFD_RELOC_390_TLS_DTPOFF:              howto manager.      (line 1509)
+* BFD_RELOC_390_TLS_GD32:                howto manager.      (line 1494)
+* BFD_RELOC_390_TLS_GD64:                howto manager.      (line 1495)
+* BFD_RELOC_390_TLS_GDCALL:              howto manager.      (line 1492)
+* BFD_RELOC_390_TLS_GOTIE12:             howto manager.      (line 1496)
+* BFD_RELOC_390_TLS_GOTIE20:             howto manager.      (line 1516)
+* BFD_RELOC_390_TLS_GOTIE32:             howto manager.      (line 1497)
+* BFD_RELOC_390_TLS_GOTIE64:             howto manager.      (line 1498)
+* BFD_RELOC_390_TLS_IE32:                howto manager.      (line 1501)
+* BFD_RELOC_390_TLS_IE64:                howto manager.      (line 1502)
+* BFD_RELOC_390_TLS_IEENT:               howto manager.      (line 1503)
+* BFD_RELOC_390_TLS_LDCALL:              howto manager.      (line 1493)
+* BFD_RELOC_390_TLS_LDM32:               howto manager.      (line 1499)
+* BFD_RELOC_390_TLS_LDM64:               howto manager.      (line 1500)
+* BFD_RELOC_390_TLS_LDO32:               howto manager.      (line 1506)
+* BFD_RELOC_390_TLS_LDO64:               howto manager.      (line 1507)
+* BFD_RELOC_390_TLS_LE32:                howto manager.      (line 1504)
+* BFD_RELOC_390_TLS_LE64:                howto manager.      (line 1505)
+* BFD_RELOC_390_TLS_LOAD:                howto manager.      (line 1491)
+* BFD_RELOC_390_TLS_TPOFF:               howto manager.      (line 1510)
+* BFD_RELOC_64:                          howto manager.      (line   26)
+* BFD_RELOC_64_PCREL:                    howto manager.      (line   35)
+* BFD_RELOC_64_PLT_PCREL:                howto manager.      (line   60)
+* BFD_RELOC_64_PLTOFF:                   howto manager.      (line   65)
+* BFD_RELOC_68K_GLOB_DAT:                howto manager.      (line   74)
+* BFD_RELOC_68K_JMP_SLOT:                howto manager.      (line   75)
+* BFD_RELOC_68K_RELATIVE:                howto manager.      (line   76)
+* BFD_RELOC_8:                           howto manager.      (line   32)
+* BFD_RELOC_860_COPY:                    howto manager.      (line 1826)
+* BFD_RELOC_860_GLOB_DAT:                howto manager.      (line 1827)
+* BFD_RELOC_860_HAGOT:                   howto manager.      (line 1852)
+* BFD_RELOC_860_HAGOTOFF:                howto manager.      (line 1853)
+* BFD_RELOC_860_HAPC:                    howto manager.      (line 1854)
+* BFD_RELOC_860_HIGH:                    howto manager.      (line 1855)
+* BFD_RELOC_860_HIGHADJ:                 howto manager.      (line 1851)
+* BFD_RELOC_860_HIGOT:                   howto manager.      (line 1856)
+* BFD_RELOC_860_HIGOTOFF:                howto manager.      (line 1857)
+* BFD_RELOC_860_JUMP_SLOT:               howto manager.      (line 1828)
+* BFD_RELOC_860_LOGOT0:                  howto manager.      (line 1840)
+* BFD_RELOC_860_LOGOT1:                  howto manager.      (line 1842)
+* BFD_RELOC_860_LOGOTOFF0:               howto manager.      (line 1844)
+* BFD_RELOC_860_LOGOTOFF1:               howto manager.      (line 1846)
+* BFD_RELOC_860_LOGOTOFF2:               howto manager.      (line 1848)
+* BFD_RELOC_860_LOGOTOFF3:               howto manager.      (line 1849)
+* BFD_RELOC_860_LOPC:                    howto manager.      (line 1850)
+* BFD_RELOC_860_LOW0:                    howto manager.      (line 1833)
+* BFD_RELOC_860_LOW1:                    howto manager.      (line 1835)
+* BFD_RELOC_860_LOW2:                    howto manager.      (line 1837)
+* BFD_RELOC_860_LOW3:                    howto manager.      (line 1839)
+* BFD_RELOC_860_PC16:                    howto manager.      (line 1832)
+* BFD_RELOC_860_PC26:                    howto manager.      (line 1830)
+* BFD_RELOC_860_PLT26:                   howto manager.      (line 1831)
+* BFD_RELOC_860_RELATIVE:                howto manager.      (line 1829)
+* BFD_RELOC_860_SPGOT0:                  howto manager.      (line 1841)
+* BFD_RELOC_860_SPGOT1:                  howto manager.      (line 1843)
+* BFD_RELOC_860_SPGOTOFF0:               howto manager.      (line 1845)
+* BFD_RELOC_860_SPGOTOFF1:               howto manager.      (line 1847)
+* BFD_RELOC_860_SPLIT0:                  howto manager.      (line 1834)
+* BFD_RELOC_860_SPLIT1:                  howto manager.      (line 1836)
+* BFD_RELOC_860_SPLIT2:                  howto manager.      (line 1838)
+* BFD_RELOC_8_BASEREL:                   howto manager.      (line   84)
+* BFD_RELOC_8_FFnn:                      howto manager.      (line   88)
+* BFD_RELOC_8_GOT_PCREL:                 howto manager.      (line   53)
+* BFD_RELOC_8_GOTOFF:                    howto manager.      (line   59)
+* BFD_RELOC_8_PCREL:                     howto manager.      (line   40)
+* BFD_RELOC_8_PLT_PCREL:                 howto manager.      (line   64)
+* BFD_RELOC_8_PLTOFF:                    howto manager.      (line   71)
+* BFD_RELOC_ALPHA_BRSGP:                 howto manager.      (line  273)
+* BFD_RELOC_ALPHA_CODEADDR:              howto manager.      (line  264)
+* BFD_RELOC_ALPHA_DTPMOD64:              howto manager.      (line  280)
+* BFD_RELOC_ALPHA_DTPREL16:              howto manager.      (line  285)
+* BFD_RELOC_ALPHA_DTPREL64:              howto manager.      (line  282)
+* BFD_RELOC_ALPHA_DTPREL_HI16:           howto manager.      (line  283)
+* BFD_RELOC_ALPHA_DTPREL_LO16:           howto manager.      (line  284)
+* BFD_RELOC_ALPHA_ELF_LITERAL:           howto manager.      (line  229)
+* BFD_RELOC_ALPHA_GOTDTPREL16:           howto manager.      (line  281)
+* BFD_RELOC_ALPHA_GOTTPREL16:            howto manager.      (line  286)
+* BFD_RELOC_ALPHA_GPDISP:                howto manager.      (line  223)
+* BFD_RELOC_ALPHA_GPDISP_HI16:           howto manager.      (line  209)
+* BFD_RELOC_ALPHA_GPDISP_LO16:           howto manager.      (line  217)
+* BFD_RELOC_ALPHA_GPREL_HI16:            howto manager.      (line  268)
+* BFD_RELOC_ALPHA_GPREL_LO16:            howto manager.      (line  269)
+* BFD_RELOC_ALPHA_HINT:                  howto manager.      (line  255)
+* BFD_RELOC_ALPHA_LINKAGE:               howto manager.      (line  260)
+* BFD_RELOC_ALPHA_LITERAL:               howto manager.      (line  228)
+* BFD_RELOC_ALPHA_LITUSE:                howto manager.      (line  230)
+* BFD_RELOC_ALPHA_TLSGD:                 howto manager.      (line  278)
+* BFD_RELOC_ALPHA_TLSLDM:                howto manager.      (line  279)
+* BFD_RELOC_ALPHA_TPREL16:               howto manager.      (line  290)
+* BFD_RELOC_ALPHA_TPREL64:               howto manager.      (line  287)
+* BFD_RELOC_ALPHA_TPREL_HI16:            howto manager.      (line  288)
+* BFD_RELOC_ALPHA_TPREL_LO16:            howto manager.      (line  289)
+* BFD_RELOC_ARC_B22_PCREL:               howto manager.      (line  871)
+* BFD_RELOC_ARC_B26:                     howto manager.      (line  876)
+* BFD_RELOC_ARM_ADR_IMM:                 howto manager.      (line  764)
+* BFD_RELOC_ARM_ADRL_IMMEDIATE:          howto manager.      (line  751)
+* BFD_RELOC_ARM_ALU_PC_G0:               howto manager.      (line  721)
+* BFD_RELOC_ARM_ALU_PC_G0_NC:            howto manager.      (line  720)
+* BFD_RELOC_ARM_ALU_PC_G1:               howto manager.      (line  723)
+* BFD_RELOC_ARM_ALU_PC_G1_NC:            howto manager.      (line  722)
+* BFD_RELOC_ARM_ALU_PC_G2:               howto manager.      (line  724)
+* BFD_RELOC_ARM_ALU_SB_G0:               howto manager.      (line  735)
+* BFD_RELOC_ARM_ALU_SB_G0_NC:            howto manager.      (line  734)
+* BFD_RELOC_ARM_ALU_SB_G1:               howto manager.      (line  737)
+* BFD_RELOC_ARM_ALU_SB_G1_NC:            howto manager.      (line  736)
+* BFD_RELOC_ARM_ALU_SB_G2:               howto manager.      (line  738)
+* BFD_RELOC_ARM_CP_OFF_IMM:              howto manager.      (line  760)
+* BFD_RELOC_ARM_CP_OFF_IMM_S2:           howto manager.      (line  761)
+* BFD_RELOC_ARM_GLOB_DAT:                howto manager.      (line  702)
+* BFD_RELOC_ARM_GOT32:                   howto manager.      (line  703)
+* BFD_RELOC_ARM_GOTOFF:                  howto manager.      (line  706)
+* BFD_RELOC_ARM_GOTPC:                   howto manager.      (line  707)
+* BFD_RELOC_ARM_HWLITERAL:               howto manager.      (line  771)
+* BFD_RELOC_ARM_IMMEDIATE:               howto manager.      (line  750)
+* BFD_RELOC_ARM_IN_POOL:                 howto manager.      (line  767)
+* BFD_RELOC_ARM_JUMP_SLOT:               howto manager.      (line  701)
+* BFD_RELOC_ARM_LDC_PC_G0:               howto manager.      (line  731)
+* BFD_RELOC_ARM_LDC_PC_G1:               howto manager.      (line  732)
+* BFD_RELOC_ARM_LDC_PC_G2:               howto manager.      (line  733)
+* BFD_RELOC_ARM_LDC_SB_G0:               howto manager.      (line  745)
+* BFD_RELOC_ARM_LDC_SB_G1:               howto manager.      (line  746)
+* BFD_RELOC_ARM_LDC_SB_G2:               howto manager.      (line  747)
+* BFD_RELOC_ARM_LDR_IMM:                 howto manager.      (line  765)
+* BFD_RELOC_ARM_LDR_PC_G0:               howto manager.      (line  725)
+* BFD_RELOC_ARM_LDR_PC_G1:               howto manager.      (line  726)
+* BFD_RELOC_ARM_LDR_PC_G2:               howto manager.      (line  727)
+* BFD_RELOC_ARM_LDR_SB_G0:               howto manager.      (line  739)
+* BFD_RELOC_ARM_LDR_SB_G1:               howto manager.      (line  740)
+* BFD_RELOC_ARM_LDR_SB_G2:               howto manager.      (line  741)
+* BFD_RELOC_ARM_LDRS_PC_G0:              howto manager.      (line  728)
+* BFD_RELOC_ARM_LDRS_PC_G1:              howto manager.      (line  729)
+* BFD_RELOC_ARM_LDRS_PC_G2:              howto manager.      (line  730)
+* BFD_RELOC_ARM_LDRS_SB_G0:              howto manager.      (line  742)
+* BFD_RELOC_ARM_LDRS_SB_G1:              howto manager.      (line  743)
+* BFD_RELOC_ARM_LDRS_SB_G2:              howto manager.      (line  744)
+* BFD_RELOC_ARM_LITERAL:                 howto manager.      (line  766)
+* BFD_RELOC_ARM_MOVT:                    howto manager.      (line  692)
+* BFD_RELOC_ARM_MOVT_PCREL:              howto manager.      (line  694)
+* BFD_RELOC_ARM_MOVW:                    howto manager.      (line  691)
+* BFD_RELOC_ARM_MOVW_PCREL:              howto manager.      (line  693)
+* BFD_RELOC_ARM_MULTI:                   howto manager.      (line  759)
+* BFD_RELOC_ARM_OFFSET_IMM:              howto manager.      (line  665)
+* BFD_RELOC_ARM_OFFSET_IMM8:             howto manager.      (line  768)
+* BFD_RELOC_ARM_PCREL_BLX:               howto manager.      (line  636)
+* BFD_RELOC_ARM_PCREL_BRANCH:            howto manager.      (line  632)
+* BFD_RELOC_ARM_PCREL_CALL:              howto manager.      (line  646)
+* BFD_RELOC_ARM_PCREL_JUMP:              howto manager.      (line  650)
+* BFD_RELOC_ARM_PLT32:                   howto manager.      (line  704)
+* BFD_RELOC_ARM_PREL31:                  howto manager.      (line  688)
+* BFD_RELOC_ARM_RELATIVE:                howto manager.      (line  705)
+* BFD_RELOC_ARM_ROSEGREL32:              howto manager.      (line  677)
+* BFD_RELOC_ARM_SBREL32:                 howto manager.      (line  680)
+* BFD_RELOC_ARM_SHIFT_IMM:               howto manager.      (line  756)
+* BFD_RELOC_ARM_SMC:                     howto manager.      (line  757)
+* BFD_RELOC_ARM_SWI:                     howto manager.      (line  758)
+* BFD_RELOC_ARM_T32_ADD_IMM:             howto manager.      (line  753)
+* BFD_RELOC_ARM_T32_ADD_PC12:            howto manager.      (line  755)
+* BFD_RELOC_ARM_T32_CP_OFF_IMM:          howto manager.      (line  762)
+* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2:       howto manager.      (line  763)
+* BFD_RELOC_ARM_T32_IMM12:               howto manager.      (line  754)
+* BFD_RELOC_ARM_T32_IMMEDIATE:           howto manager.      (line  752)
+* BFD_RELOC_ARM_T32_OFFSET_IMM:          howto manager.      (line  770)
+* BFD_RELOC_ARM_T32_OFFSET_U8:           howto manager.      (line  769)
+* BFD_RELOC_ARM_TARGET1:                 howto manager.      (line  673)
+* BFD_RELOC_ARM_TARGET2:                 howto manager.      (line  683)
+* BFD_RELOC_ARM_THUMB_ADD:               howto manager.      (line  772)
+* BFD_RELOC_ARM_THUMB_IMM:               howto manager.      (line  773)
+* BFD_RELOC_ARM_THUMB_MOVT:              howto manager.      (line  696)
+* BFD_RELOC_ARM_THUMB_MOVT_PCREL:        howto manager.      (line  698)
+* BFD_RELOC_ARM_THUMB_MOVW:              howto manager.      (line  695)
+* BFD_RELOC_ARM_THUMB_MOVW_PCREL:        howto manager.      (line  697)
+* BFD_RELOC_ARM_THUMB_OFFSET:            howto manager.      (line  669)
+* BFD_RELOC_ARM_THUMB_SHIFT:             howto manager.      (line  774)
+* BFD_RELOC_ARM_TLS_DTPMOD32:            howto manager.      (line  714)
+* BFD_RELOC_ARM_TLS_DTPOFF32:            howto manager.      (line  713)
+* BFD_RELOC_ARM_TLS_GD32:                howto manager.      (line  710)
+* BFD_RELOC_ARM_TLS_IE32:                howto manager.      (line  716)
+* BFD_RELOC_ARM_TLS_LDM32:               howto manager.      (line  712)
+* BFD_RELOC_ARM_TLS_LDO32:               howto manager.      (line  711)
+* BFD_RELOC_ARM_TLS_LE32:                howto manager.      (line  717)
+* BFD_RELOC_ARM_TLS_TPOFF32:             howto manager.      (line  715)
+* BFD_RELOC_AVR_13_PCREL:                howto manager.      (line 1314)
+* BFD_RELOC_AVR_16_PM:                   howto manager.      (line 1318)
+* BFD_RELOC_AVR_6:                       howto manager.      (line 1405)
+* BFD_RELOC_AVR_6_ADIW:                  howto manager.      (line 1409)
+* BFD_RELOC_AVR_7_PCREL:                 howto manager.      (line 1310)
+* BFD_RELOC_AVR_CALL:                    howto manager.      (line 1397)
+* BFD_RELOC_AVR_HH8_LDI:                 howto manager.      (line 1330)
+* BFD_RELOC_AVR_HH8_LDI_NEG:             howto manager.      (line 1349)
+* BFD_RELOC_AVR_HH8_LDI_PM:              howto manager.      (line 1378)
+* BFD_RELOC_AVR_HH8_LDI_PM_NEG:          howto manager.      (line 1392)
+* BFD_RELOC_AVR_HI8_LDI:                 howto manager.      (line 1326)
+* BFD_RELOC_AVR_HI8_LDI_GS:              howto manager.      (line 1372)
+* BFD_RELOC_AVR_HI8_LDI_NEG:             howto manager.      (line 1344)
+* BFD_RELOC_AVR_HI8_LDI_PM:              howto manager.      (line 1368)
+* BFD_RELOC_AVR_HI8_LDI_PM_NEG:          howto manager.      (line 1387)
+* BFD_RELOC_AVR_LDI:                     howto manager.      (line 1401)
+* BFD_RELOC_AVR_LO8_LDI:                 howto manager.      (line 1322)
+* BFD_RELOC_AVR_LO8_LDI_GS:              howto manager.      (line 1362)
+* BFD_RELOC_AVR_LO8_LDI_NEG:             howto manager.      (line 1339)
+* BFD_RELOC_AVR_LO8_LDI_PM:              howto manager.      (line 1358)
+* BFD_RELOC_AVR_LO8_LDI_PM_NEG:          howto manager.      (line 1383)
+* BFD_RELOC_AVR_MS8_LDI:                 howto manager.      (line 1335)
+* BFD_RELOC_AVR_MS8_LDI_NEG:             howto manager.      (line 1354)
+* BFD_RELOC_BFIN_10_PCREL:               howto manager.      (line  896)
+* BFD_RELOC_BFIN_11_PCREL:               howto manager.      (line  899)
+* BFD_RELOC_BFIN_12_PCREL_JUMP:          howto manager.      (line  902)
+* BFD_RELOC_BFIN_12_PCREL_JUMP_S:        howto manager.      (line  905)
+* BFD_RELOC_BFIN_16_HIGH:                howto manager.      (line  884)
+* BFD_RELOC_BFIN_16_IMM:                 howto manager.      (line  881)
+* BFD_RELOC_BFIN_16_LOW:                 howto manager.      (line  893)
+* BFD_RELOC_BFIN_24_PCREL_CALL_X:        howto manager.      (line  908)
+* BFD_RELOC_BFIN_24_PCREL_JUMP_L:        howto manager.      (line  911)
+* BFD_RELOC_BFIN_4_PCREL:                howto manager.      (line  887)
+* BFD_RELOC_BFIN_5_PCREL:                howto manager.      (line  890)
+* BFD_RELOC_BFIN_FUNCDESC:               howto manager.      (line  917)
+* BFD_RELOC_BFIN_FUNCDESC_GOT17M4:       howto manager.      (line  918)
+* BFD_RELOC_BFIN_FUNCDESC_GOTHI:         howto manager.      (line  919)
+* BFD_RELOC_BFIN_FUNCDESC_GOTLO:         howto manager.      (line  920)
+* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4:    howto manager.      (line  922)
+* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI:      howto manager.      (line  923)
+* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO:      howto manager.      (line  924)
+* BFD_RELOC_BFIN_FUNCDESC_VALUE:         howto manager.      (line  921)
+* BFD_RELOC_BFIN_GOT:                    howto manager.      (line  930)
+* BFD_RELOC_BFIN_GOT17M4:                howto manager.      (line  914)
+* BFD_RELOC_BFIN_GOTHI:                  howto manager.      (line  915)
+* BFD_RELOC_BFIN_GOTLO:                  howto manager.      (line  916)
+* BFD_RELOC_BFIN_GOTOFF17M4:             howto manager.      (line  925)
+* BFD_RELOC_BFIN_GOTOFFHI:               howto manager.      (line  926)
+* BFD_RELOC_BFIN_GOTOFFLO:               howto manager.      (line  927)
+* BFD_RELOC_BFIN_PLTPC:                  howto manager.      (line  933)
+* bfd_reloc_code_type:                   howto manager.      (line   10)
+* BFD_RELOC_CRIS_16_GOT:                 howto manager.      (line 1807)
+* BFD_RELOC_CRIS_16_GOTPLT:              howto manager.      (line 1813)
+* BFD_RELOC_CRIS_32_GOT:                 howto manager.      (line 1804)
+* BFD_RELOC_CRIS_32_GOTPLT:              howto manager.      (line 1810)
+* BFD_RELOC_CRIS_32_GOTREL:              howto manager.      (line 1816)
+* BFD_RELOC_CRIS_32_PLT_GOTREL:          howto manager.      (line 1819)
+* BFD_RELOC_CRIS_32_PLT_PCREL:           howto manager.      (line 1822)
+* BFD_RELOC_CRIS_BDISP8:                 howto manager.      (line 1785)
+* BFD_RELOC_CRIS_COPY:                   howto manager.      (line 1798)
+* BFD_RELOC_CRIS_GLOB_DAT:               howto manager.      (line 1799)
+* BFD_RELOC_CRIS_JUMP_SLOT:              howto manager.      (line 1800)
+* BFD_RELOC_CRIS_LAPCQ_OFFSET:           howto manager.      (line 1793)
+* BFD_RELOC_CRIS_RELATIVE:               howto manager.      (line 1801)
+* BFD_RELOC_CRIS_SIGNED_16:              howto manager.      (line 1791)
+* BFD_RELOC_CRIS_SIGNED_6:               howto manager.      (line 1787)
+* BFD_RELOC_CRIS_SIGNED_8:               howto manager.      (line 1789)
+* BFD_RELOC_CRIS_UNSIGNED_16:            howto manager.      (line 1792)
+* BFD_RELOC_CRIS_UNSIGNED_4:             howto manager.      (line 1794)
+* BFD_RELOC_CRIS_UNSIGNED_5:             howto manager.      (line 1786)
+* BFD_RELOC_CRIS_UNSIGNED_6:             howto manager.      (line 1788)
+* BFD_RELOC_CRIS_UNSIGNED_8:             howto manager.      (line 1790)
+* BFD_RELOC_CRX_ABS16:                   howto manager.      (line 1773)
+* BFD_RELOC_CRX_ABS32:                   howto manager.      (line 1774)
+* BFD_RELOC_CRX_IMM16:                   howto manager.      (line 1778)
+* BFD_RELOC_CRX_IMM32:                   howto manager.      (line 1779)
+* BFD_RELOC_CRX_NUM16:                   howto manager.      (line 1776)
+* BFD_RELOC_CRX_NUM32:                   howto manager.      (line 1777)
+* BFD_RELOC_CRX_NUM8:                    howto manager.      (line 1775)
+* BFD_RELOC_CRX_REGREL12:                howto manager.      (line 1769)
+* BFD_RELOC_CRX_REGREL22:                howto manager.      (line 1770)
+* BFD_RELOC_CRX_REGREL28:                howto manager.      (line 1771)
+* BFD_RELOC_CRX_REGREL32:                howto manager.      (line 1772)
+* BFD_RELOC_CRX_REL16:                   howto manager.      (line 1766)
+* BFD_RELOC_CRX_REL24:                   howto manager.      (line 1767)
+* BFD_RELOC_CRX_REL32:                   howto manager.      (line 1768)
+* BFD_RELOC_CRX_REL4:                    howto manager.      (line 1763)
+* BFD_RELOC_CRX_REL8:                    howto manager.      (line 1764)
+* BFD_RELOC_CRX_REL8_CMP:                howto manager.      (line 1765)
+* BFD_RELOC_CRX_SWITCH16:                howto manager.      (line 1781)
+* BFD_RELOC_CRX_SWITCH32:                howto manager.      (line 1782)
+* BFD_RELOC_CRX_SWITCH8:                 howto manager.      (line 1780)
+* BFD_RELOC_CTOR:                        howto manager.      (line  626)
+* BFD_RELOC_D10V_10_PCREL_L:             howto manager.      (line 1000)
+* BFD_RELOC_D10V_10_PCREL_R:             howto manager.      (line  996)
+* BFD_RELOC_D10V_18:                     howto manager.      (line 1005)
+* BFD_RELOC_D10V_18_PCREL:               howto manager.      (line 1008)
+* BFD_RELOC_D30V_15:                     howto manager.      (line 1023)
+* BFD_RELOC_D30V_15_PCREL:               howto manager.      (line 1027)
+* BFD_RELOC_D30V_15_PCREL_R:             howto manager.      (line 1031)
+* BFD_RELOC_D30V_21:                     howto manager.      (line 1036)
+* BFD_RELOC_D30V_21_PCREL:               howto manager.      (line 1040)
+* BFD_RELOC_D30V_21_PCREL_R:             howto manager.      (line 1044)
+* BFD_RELOC_D30V_32:                     howto manager.      (line 1049)
+* BFD_RELOC_D30V_32_PCREL:               howto manager.      (line 1052)
+* BFD_RELOC_D30V_6:                      howto manager.      (line 1011)
+* BFD_RELOC_D30V_9_PCREL:                howto manager.      (line 1014)
+* BFD_RELOC_D30V_9_PCREL_R:              howto manager.      (line 1018)
+* BFD_RELOC_DLX_HI16_S:                  howto manager.      (line 1055)
+* BFD_RELOC_DLX_JMP26:                   howto manager.      (line 1061)
+* BFD_RELOC_DLX_LO16:                    howto manager.      (line 1058)
+* BFD_RELOC_FR30_10_IN_8:                howto manager.      (line 1240)
+* BFD_RELOC_FR30_12_PCREL:               howto manager.      (line 1248)
+* BFD_RELOC_FR30_20:                     howto manager.      (line 1224)
+* BFD_RELOC_FR30_48:                     howto manager.      (line 1221)
+* BFD_RELOC_FR30_6_IN_4:                 howto manager.      (line 1228)
+* BFD_RELOC_FR30_8_IN_8:                 howto manager.      (line 1232)
+* BFD_RELOC_FR30_9_IN_8:                 howto manager.      (line 1236)
+* BFD_RELOC_FR30_9_PCREL:                howto manager.      (line 1244)
+* BFD_RELOC_FRV_FUNCDESC:                howto manager.      (line  391)
+* BFD_RELOC_FRV_FUNCDESC_GOT12:          howto manager.      (line  392)
+* BFD_RELOC_FRV_FUNCDESC_GOTHI:          howto manager.      (line  393)
+* BFD_RELOC_FRV_FUNCDESC_GOTLO:          howto manager.      (line  394)
+* BFD_RELOC_FRV_FUNCDESC_GOTOFF12:       howto manager.      (line  396)
+* BFD_RELOC_FRV_FUNCDESC_GOTOFFHI:       howto manager.      (line  397)
+* BFD_RELOC_FRV_FUNCDESC_GOTOFFLO:       howto manager.      (line  398)
+* BFD_RELOC_FRV_FUNCDESC_VALUE:          howto manager.      (line  395)
+* BFD_RELOC_FRV_GETTLSOFF:               howto manager.      (line  402)
+* BFD_RELOC_FRV_GETTLSOFF_RELAX:         howto manager.      (line  415)
+* BFD_RELOC_FRV_GOT12:                   howto manager.      (line  388)
+* BFD_RELOC_FRV_GOTHI:                   howto manager.      (line  389)
+* BFD_RELOC_FRV_GOTLO:                   howto manager.      (line  390)
+* BFD_RELOC_FRV_GOTOFF12:                howto manager.      (line  399)
+* BFD_RELOC_FRV_GOTOFFHI:                howto manager.      (line  400)
+* BFD_RELOC_FRV_GOTOFFLO:                howto manager.      (line  401)
+* BFD_RELOC_FRV_GOTTLSDESC12:            howto manager.      (line  404)
+* BFD_RELOC_FRV_GOTTLSDESCHI:            howto manager.      (line  405)
+* BFD_RELOC_FRV_GOTTLSDESCLO:            howto manager.      (line  406)
+* BFD_RELOC_FRV_GOTTLSOFF12:             howto manager.      (line  410)
+* BFD_RELOC_FRV_GOTTLSOFFHI:             howto manager.      (line  411)
+* BFD_RELOC_FRV_GOTTLSOFFLO:             howto manager.      (line  412)
+* BFD_RELOC_FRV_GPREL12:                 howto manager.      (line  383)
+* BFD_RELOC_FRV_GPREL32:                 howto manager.      (line  385)
+* BFD_RELOC_FRV_GPRELHI:                 howto manager.      (line  386)
+* BFD_RELOC_FRV_GPRELLO:                 howto manager.      (line  387)
+* BFD_RELOC_FRV_GPRELU12:                howto manager.      (line  384)
+* BFD_RELOC_FRV_HI16:                    howto manager.      (line  382)
+* BFD_RELOC_FRV_LABEL16:                 howto manager.      (line  379)
+* BFD_RELOC_FRV_LABEL24:                 howto manager.      (line  380)
+* BFD_RELOC_FRV_LO16:                    howto manager.      (line  381)
+* BFD_RELOC_FRV_TLSDESC_RELAX:           howto manager.      (line  414)
+* BFD_RELOC_FRV_TLSDESC_VALUE:           howto manager.      (line  403)
+* BFD_RELOC_FRV_TLSMOFF:                 howto manager.      (line  417)
+* BFD_RELOC_FRV_TLSMOFF12:               howto manager.      (line  407)
+* BFD_RELOC_FRV_TLSMOFFHI:               howto manager.      (line  408)
+* BFD_RELOC_FRV_TLSMOFFLO:               howto manager.      (line  409)
+* BFD_RELOC_FRV_TLSOFF:                  howto manager.      (line  413)
+* BFD_RELOC_FRV_TLSOFF_RELAX:            howto manager.      (line  416)
+* BFD_RELOC_GPREL16:                     howto manager.      (line  106)
+* BFD_RELOC_GPREL32:                     howto manager.      (line  107)
+* BFD_RELOC_H8_DIR16A8:                  howto manager.      (line 1864)
+* BFD_RELOC_H8_DIR16R8:                  howto manager.      (line 1865)
+* BFD_RELOC_H8_DIR24A8:                  howto manager.      (line 1866)
+* BFD_RELOC_H8_DIR24R8:                  howto manager.      (line 1867)
+* BFD_RELOC_H8_DIR32A16:                 howto manager.      (line 1868)
+* BFD_RELOC_HI16:                        howto manager.      (line  303)
+* BFD_RELOC_HI16_BASEREL:                howto manager.      (line   82)
+* BFD_RELOC_HI16_GOTOFF:                 howto manager.      (line   57)
+* BFD_RELOC_HI16_PCREL:                  howto manager.      (line  315)
+* BFD_RELOC_HI16_PLTOFF:                 howto manager.      (line   69)
+* BFD_RELOC_HI16_S:                      howto manager.      (line  306)
+* BFD_RELOC_HI16_S_BASEREL:              howto manager.      (line   83)
+* BFD_RELOC_HI16_S_GOTOFF:               howto manager.      (line   58)
+* BFD_RELOC_HI16_S_PCREL:                howto manager.      (line  318)
+* BFD_RELOC_HI16_S_PLTOFF:               howto manager.      (line   70)
+* BFD_RELOC_HI22:                        howto manager.      (line  101)
+* BFD_RELOC_I370_D12:                    howto manager.      (line  623)
+* BFD_RELOC_I960_CALLJ:                  howto manager.      (line  113)
+* BFD_RELOC_IA64_COPY:                   howto manager.      (line 1657)
+* BFD_RELOC_IA64_DIR32LSB:               howto manager.      (line 1602)
+* BFD_RELOC_IA64_DIR32MSB:               howto manager.      (line 1601)
+* BFD_RELOC_IA64_DIR64LSB:               howto manager.      (line 1604)
+* BFD_RELOC_IA64_DIR64MSB:               howto manager.      (line 1603)
+* BFD_RELOC_IA64_DTPMOD64LSB:            howto manager.      (line 1667)
+* BFD_RELOC_IA64_DTPMOD64MSB:            howto manager.      (line 1666)
+* BFD_RELOC_IA64_DTPREL14:               howto manager.      (line 1669)
+* BFD_RELOC_IA64_DTPREL22:               howto manager.      (line 1670)
+* BFD_RELOC_IA64_DTPREL32LSB:            howto manager.      (line 1673)
+* BFD_RELOC_IA64_DTPREL32MSB:            howto manager.      (line 1672)
+* BFD_RELOC_IA64_DTPREL64I:              howto manager.      (line 1671)
+* BFD_RELOC_IA64_DTPREL64LSB:            howto manager.      (line 1675)
+* BFD_RELOC_IA64_DTPREL64MSB:            howto manager.      (line 1674)
+* BFD_RELOC_IA64_FPTR32LSB:              howto manager.      (line 1619)
+* BFD_RELOC_IA64_FPTR32MSB:              howto manager.      (line 1618)
+* BFD_RELOC_IA64_FPTR64I:                howto manager.      (line 1617)
+* BFD_RELOC_IA64_FPTR64LSB:              howto manager.      (line 1621)
+* BFD_RELOC_IA64_FPTR64MSB:              howto manager.      (line 1620)
+* BFD_RELOC_IA64_GPREL22:                howto manager.      (line 1605)
+* BFD_RELOC_IA64_GPREL32LSB:             howto manager.      (line 1608)
+* BFD_RELOC_IA64_GPREL32MSB:             howto manager.      (line 1607)
+* BFD_RELOC_IA64_GPREL64I:               howto manager.      (line 1606)
+* BFD_RELOC_IA64_GPREL64LSB:             howto manager.      (line 1610)
+* BFD_RELOC_IA64_GPREL64MSB:             howto manager.      (line 1609)
+* BFD_RELOC_IA64_IMM14:                  howto manager.      (line 1598)
+* BFD_RELOC_IA64_IMM22:                  howto manager.      (line 1599)
+* BFD_RELOC_IA64_IMM64:                  howto manager.      (line 1600)
+* BFD_RELOC_IA64_IPLTLSB:                howto manager.      (line 1656)
+* BFD_RELOC_IA64_IPLTMSB:                howto manager.      (line 1655)
+* BFD_RELOC_IA64_LDXMOV:                 howto manager.      (line 1659)
+* BFD_RELOC_IA64_LTOFF22:                howto manager.      (line 1611)
+* BFD_RELOC_IA64_LTOFF22X:               howto manager.      (line 1658)
+* BFD_RELOC_IA64_LTOFF64I:               howto manager.      (line 1612)
+* BFD_RELOC_IA64_LTOFF_DTPMOD22:         howto manager.      (line 1668)
+* BFD_RELOC_IA64_LTOFF_DTPREL22:         howto manager.      (line 1676)
+* BFD_RELOC_IA64_LTOFF_FPTR22:           howto manager.      (line 1633)
+* BFD_RELOC_IA64_LTOFF_FPTR32LSB:        howto manager.      (line 1636)
+* BFD_RELOC_IA64_LTOFF_FPTR32MSB:        howto manager.      (line 1635)
+* BFD_RELOC_IA64_LTOFF_FPTR64I:          howto manager.      (line 1634)
+* BFD_RELOC_IA64_LTOFF_FPTR64LSB:        howto manager.      (line 1638)
+* BFD_RELOC_IA64_LTOFF_FPTR64MSB:        howto manager.      (line 1637)
+* BFD_RELOC_IA64_LTOFF_TPREL22:          howto manager.      (line 1665)
+* BFD_RELOC_IA64_LTV32LSB:               howto manager.      (line 1652)
+* BFD_RELOC_IA64_LTV32MSB:               howto manager.      (line 1651)
+* BFD_RELOC_IA64_LTV64LSB:               howto manager.      (line 1654)
+* BFD_RELOC_IA64_LTV64MSB:               howto manager.      (line 1653)
+* BFD_RELOC_IA64_PCREL21B:               howto manager.      (line 1622)
+* BFD_RELOC_IA64_PCREL21BI:              howto manager.      (line 1623)
+* BFD_RELOC_IA64_PCREL21F:               howto manager.      (line 1625)
+* BFD_RELOC_IA64_PCREL21M:               howto manager.      (line 1624)
+* BFD_RELOC_IA64_PCREL22:                howto manager.      (line 1626)
+* BFD_RELOC_IA64_PCREL32LSB:             howto manager.      (line 1630)
+* BFD_RELOC_IA64_PCREL32MSB:             howto manager.      (line 1629)
+* BFD_RELOC_IA64_PCREL60B:               howto manager.      (line 1627)
+* BFD_RELOC_IA64_PCREL64I:               howto manager.      (line 1628)
+* BFD_RELOC_IA64_PCREL64LSB:             howto manager.      (line 1632)
+* BFD_RELOC_IA64_PCREL64MSB:             howto manager.      (line 1631)
+* BFD_RELOC_IA64_PLTOFF22:               howto manager.      (line 1613)
+* BFD_RELOC_IA64_PLTOFF64I:              howto manager.      (line 1614)
+* BFD_RELOC_IA64_PLTOFF64LSB:            howto manager.      (line 1616)
+* BFD_RELOC_IA64_PLTOFF64MSB:            howto manager.      (line 1615)
+* BFD_RELOC_IA64_REL32LSB:               howto manager.      (line 1648)
+* BFD_RELOC_IA64_REL32MSB:               howto manager.      (line 1647)
+* BFD_RELOC_IA64_REL64LSB:               howto manager.      (line 1650)
+* BFD_RELOC_IA64_REL64MSB:               howto manager.      (line 1649)
+* BFD_RELOC_IA64_SECREL32LSB:            howto manager.      (line 1644)
+* BFD_RELOC_IA64_SECREL32MSB:            howto manager.      (line 1643)
+* BFD_RELOC_IA64_SECREL64LSB:            howto manager.      (line 1646)
+* BFD_RELOC_IA64_SECREL64MSB:            howto manager.      (line 1645)
+* BFD_RELOC_IA64_SEGREL32LSB:            howto manager.      (line 1640)
+* BFD_RELOC_IA64_SEGREL32MSB:            howto manager.      (line 1639)
+* BFD_RELOC_IA64_SEGREL64LSB:            howto manager.      (line 1642)
+* BFD_RELOC_IA64_SEGREL64MSB:            howto manager.      (line 1641)
+* BFD_RELOC_IA64_TPREL14:                howto manager.      (line 1660)
+* BFD_RELOC_IA64_TPREL22:                howto manager.      (line 1661)
+* BFD_RELOC_IA64_TPREL64I:               howto manager.      (line 1662)
+* BFD_RELOC_IA64_TPREL64LSB:             howto manager.      (line 1664)
+* BFD_RELOC_IA64_TPREL64MSB:             howto manager.      (line 1663)
+* BFD_RELOC_IP2K_ADDR16CJP:              howto manager.      (line 1550)
+* BFD_RELOC_IP2K_BANK:                   howto manager.      (line 1547)
+* BFD_RELOC_IP2K_EX8DATA:                howto manager.      (line 1558)
+* BFD_RELOC_IP2K_FR9:                    howto manager.      (line 1544)
+* BFD_RELOC_IP2K_FR_OFFSET:              howto manager.      (line 1571)
+* BFD_RELOC_IP2K_HI8DATA:                howto manager.      (line 1557)
+* BFD_RELOC_IP2K_HI8INSN:                howto manager.      (line 1562)
+* BFD_RELOC_IP2K_LO8DATA:                howto manager.      (line 1556)
+* BFD_RELOC_IP2K_LO8INSN:                howto manager.      (line 1561)
+* BFD_RELOC_IP2K_PAGE3:                  howto manager.      (line 1553)
+* BFD_RELOC_IP2K_PC_SKIP:                howto manager.      (line 1565)
+* BFD_RELOC_IP2K_TEXT:                   howto manager.      (line 1568)
+* BFD_RELOC_IQ2000_OFFSET_16:            howto manager.      (line 1915)
+* BFD_RELOC_IQ2000_OFFSET_21:            howto manager.      (line 1916)
+* BFD_RELOC_IQ2000_UHI16:                howto manager.      (line 1917)
+* BFD_RELOC_LO10:                        howto manager.      (line  102)
+* BFD_RELOC_LO16:                        howto manager.      (line  312)
+* BFD_RELOC_LO16_BASEREL:                howto manager.      (line   81)
+* BFD_RELOC_LO16_GOTOFF:                 howto manager.      (line   56)
+* BFD_RELOC_LO16_PCREL:                  howto manager.      (line  321)
+* BFD_RELOC_LO16_PLTOFF:                 howto manager.      (line   68)
+* BFD_RELOC_M32C_HI8:                    howto manager.      (line 1064)
+* BFD_RELOC_M32C_RL_1ADDR:               howto manager.      (line 1066)
+* BFD_RELOC_M32C_RL_2ADDR:               howto manager.      (line 1067)
+* BFD_RELOC_M32C_RL_JUMP:                howto manager.      (line 1065)
+* BFD_RELOC_M32R_10_PCREL:               howto manager.      (line 1074)
+* BFD_RELOC_M32R_18_PCREL:               howto manager.      (line 1078)
+* BFD_RELOC_M32R_24:                     howto manager.      (line 1070)
+* BFD_RELOC_M32R_26_PCREL:               howto manager.      (line 1081)
+* BFD_RELOC_M32R_26_PLTREL:              howto manager.      (line 1100)
+* BFD_RELOC_M32R_COPY:                   howto manager.      (line 1101)
+* BFD_RELOC_M32R_GLOB_DAT:               howto manager.      (line 1102)
+* BFD_RELOC_M32R_GOT16_HI_SLO:           howto manager.      (line 1111)
+* BFD_RELOC_M32R_GOT16_HI_ULO:           howto manager.      (line 1110)
+* BFD_RELOC_M32R_GOT16_LO:               howto manager.      (line 1112)
+* BFD_RELOC_M32R_GOT24:                  howto manager.      (line 1099)
+* BFD_RELOC_M32R_GOTOFF:                 howto manager.      (line 1105)
+* BFD_RELOC_M32R_GOTOFF_HI_SLO:          howto manager.      (line 1107)
+* BFD_RELOC_M32R_GOTOFF_HI_ULO:          howto manager.      (line 1106)
+* BFD_RELOC_M32R_GOTOFF_LO:              howto manager.      (line 1108)
+* BFD_RELOC_M32R_GOTPC24:                howto manager.      (line 1109)
+* BFD_RELOC_M32R_GOTPC_HI_SLO:           howto manager.      (line 1114)
+* BFD_RELOC_M32R_GOTPC_HI_ULO:           howto manager.      (line 1113)
+* BFD_RELOC_M32R_GOTPC_LO:               howto manager.      (line 1115)
+* BFD_RELOC_M32R_HI16_SLO:               howto manager.      (line 1088)
+* BFD_RELOC_M32R_HI16_ULO:               howto manager.      (line 1084)
+* BFD_RELOC_M32R_JMP_SLOT:               howto manager.      (line 1103)
+* BFD_RELOC_M32R_LO16:                   howto manager.      (line 1092)
+* BFD_RELOC_M32R_RELATIVE:               howto manager.      (line 1104)
+* BFD_RELOC_M32R_SDA16:                  howto manager.      (line 1095)
+* BFD_RELOC_M68HC11_24:                  howto manager.      (line 1712)
+* BFD_RELOC_M68HC11_3B:                  howto manager.      (line 1687)
+* BFD_RELOC_M68HC11_HI8:                 howto manager.      (line 1679)
+* BFD_RELOC_M68HC11_LO16:                howto manager.      (line 1701)
+* BFD_RELOC_M68HC11_LO8:                 howto manager.      (line 1683)
+* BFD_RELOC_M68HC11_PAGE:                howto manager.      (line 1707)
+* BFD_RELOC_M68HC11_RL_GROUP:            howto manager.      (line 1696)
+* BFD_RELOC_M68HC11_RL_JUMP:             howto manager.      (line 1690)
+* BFD_RELOC_M68HC12_5B:                  howto manager.      (line 1718)
+* BFD_RELOC_MCORE_PCREL_32:              howto manager.      (line 1255)
+* BFD_RELOC_MCORE_PCREL_IMM11BY2:        howto manager.      (line 1253)
+* BFD_RELOC_MCORE_PCREL_IMM4BY2:         howto manager.      (line 1254)
+* BFD_RELOC_MCORE_PCREL_IMM8BY4:         howto manager.      (line 1252)
+* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2:    howto manager.      (line 1256)
+* BFD_RELOC_MCORE_RVA:                   howto manager.      (line 1257)
+* BFD_RELOC_MIPS16_GPREL:                howto manager.      (line  300)
+* BFD_RELOC_MIPS16_HI16:                 howto manager.      (line  324)
+* BFD_RELOC_MIPS16_HI16_S:               howto manager.      (line  327)
+* BFD_RELOC_MIPS16_JMP:                  howto manager.      (line  297)
+* BFD_RELOC_MIPS16_LO16:                 howto manager.      (line  333)
+* BFD_RELOC_MIPS_CALL16:                 howto manager.      (line  340)
+* BFD_RELOC_MIPS_CALL_HI16:              howto manager.      (line  343)
+* BFD_RELOC_MIPS_CALL_LO16:              howto manager.      (line  344)
+* BFD_RELOC_MIPS_COPY:                   howto manager.      (line  375)
+* BFD_RELOC_MIPS_DELETE:                 howto manager.      (line  353)
+* BFD_RELOC_MIPS_GOT16:                  howto manager.      (line  339)
+* BFD_RELOC_MIPS_GOT_DISP:               howto manager.      (line  348)
+* BFD_RELOC_MIPS_GOT_HI16:               howto manager.      (line  341)
+* BFD_RELOC_MIPS_GOT_LO16:               howto manager.      (line  342)
+* BFD_RELOC_MIPS_GOT_OFST:               howto manager.      (line  347)
+* BFD_RELOC_MIPS_GOT_PAGE:               howto manager.      (line  346)
+* BFD_RELOC_MIPS_HIGHER:                 howto manager.      (line  355)
+* BFD_RELOC_MIPS_HIGHEST:                howto manager.      (line  354)
+* BFD_RELOC_MIPS_INSERT_A:               howto manager.      (line  351)
+* BFD_RELOC_MIPS_INSERT_B:               howto manager.      (line  352)
+* BFD_RELOC_MIPS_JALR:                   howto manager.      (line  359)
+* BFD_RELOC_MIPS_JMP:                    howto manager.      (line  293)
+* BFD_RELOC_MIPS_JUMP_SLOT:              howto manager.      (line  376)
+* BFD_RELOC_MIPS_LITERAL:                howto manager.      (line  336)
+* BFD_RELOC_MIPS_REL16:                  howto manager.      (line  357)
+* BFD_RELOC_MIPS_RELGOT:                 howto manager.      (line  358)
+* BFD_RELOC_MIPS_SCN_DISP:               howto manager.      (line  356)
+* BFD_RELOC_MIPS_SHIFT5:                 howto manager.      (line  349)
+* BFD_RELOC_MIPS_SHIFT6:                 howto manager.      (line  350)
+* BFD_RELOC_MIPS_SUB:                    howto manager.      (line  345)
+* BFD_RELOC_MIPS_TLS_DTPMOD32:           howto manager.      (line  360)
+* BFD_RELOC_MIPS_TLS_DTPMOD64:           howto manager.      (line  362)
+* BFD_RELOC_MIPS_TLS_DTPREL32:           howto manager.      (line  361)
+* BFD_RELOC_MIPS_TLS_DTPREL64:           howto manager.      (line  363)
+* BFD_RELOC_MIPS_TLS_DTPREL_HI16:        howto manager.      (line  366)
+* BFD_RELOC_MIPS_TLS_DTPREL_LO16:        howto manager.      (line  367)
+* BFD_RELOC_MIPS_TLS_GD:                 howto manager.      (line  364)
+* BFD_RELOC_MIPS_TLS_GOTTPREL:           howto manager.      (line  368)
+* BFD_RELOC_MIPS_TLS_LDM:                howto manager.      (line  365)
+* BFD_RELOC_MIPS_TLS_TPREL32:            howto manager.      (line  369)
+* BFD_RELOC_MIPS_TLS_TPREL64:            howto manager.      (line  370)
+* BFD_RELOC_MIPS_TLS_TPREL_HI16:         howto manager.      (line  371)
+* BFD_RELOC_MIPS_TLS_TPREL_LO16:         howto manager.      (line  372)
+* BFD_RELOC_MMIX_ADDR19:                 howto manager.      (line 1286)
+* BFD_RELOC_MMIX_ADDR27:                 howto manager.      (line 1290)
+* BFD_RELOC_MMIX_BASE_PLUS_OFFSET:       howto manager.      (line 1302)
+* BFD_RELOC_MMIX_CBRANCH:                howto manager.      (line 1266)
+* BFD_RELOC_MMIX_CBRANCH_1:              howto manager.      (line 1268)
+* BFD_RELOC_MMIX_CBRANCH_2:              howto manager.      (line 1269)
+* BFD_RELOC_MMIX_CBRANCH_3:              howto manager.      (line 1270)
+* BFD_RELOC_MMIX_CBRANCH_J:              howto manager.      (line 1267)
+* BFD_RELOC_MMIX_GETA:                   howto manager.      (line 1260)
+* BFD_RELOC_MMIX_GETA_1:                 howto manager.      (line 1261)
+* BFD_RELOC_MMIX_GETA_2:                 howto manager.      (line 1262)
+* BFD_RELOC_MMIX_GETA_3:                 howto manager.      (line 1263)
+* BFD_RELOC_MMIX_JMP:                    howto manager.      (line 1280)
+* BFD_RELOC_MMIX_JMP_1:                  howto manager.      (line 1281)
+* BFD_RELOC_MMIX_JMP_2:                  howto manager.      (line 1282)
+* BFD_RELOC_MMIX_JMP_3:                  howto manager.      (line 1283)
+* BFD_RELOC_MMIX_LOCAL:                  howto manager.      (line 1306)
+* BFD_RELOC_MMIX_PUSHJ:                  howto manager.      (line 1273)
+* BFD_RELOC_MMIX_PUSHJ_1:                howto manager.      (line 1274)
+* BFD_RELOC_MMIX_PUSHJ_2:                howto manager.      (line 1275)
+* BFD_RELOC_MMIX_PUSHJ_3:                howto manager.      (line 1276)
+* BFD_RELOC_MMIX_PUSHJ_STUBBABLE:        howto manager.      (line 1277)
+* BFD_RELOC_MMIX_REG:                    howto manager.      (line 1298)
+* BFD_RELOC_MMIX_REG_OR_BYTE:            howto manager.      (line 1294)
+* BFD_RELOC_MN10300_16_PCREL:            howto manager.      (line 1190)
+* BFD_RELOC_MN10300_32_PCREL:            howto manager.      (line 1186)
+* BFD_RELOC_MN10300_COPY:                howto manager.      (line  435)
+* BFD_RELOC_MN10300_GLOB_DAT:            howto manager.      (line  438)
+* BFD_RELOC_MN10300_GOT16:               howto manager.      (line  431)
+* BFD_RELOC_MN10300_GOT24:               howto manager.      (line  427)
+* BFD_RELOC_MN10300_GOT32:               howto manager.      (line  423)
+* BFD_RELOC_MN10300_GOTOFF24:            howto manager.      (line  420)
+* BFD_RELOC_MN10300_JMP_SLOT:            howto manager.      (line  441)
+* BFD_RELOC_MN10300_RELATIVE:            howto manager.      (line  444)
+* BFD_RELOC_MSP430_10_PCREL:             howto manager.      (line 1906)
+* BFD_RELOC_MSP430_16:                   howto manager.      (line 1908)
+* BFD_RELOC_MSP430_16_BYTE:              howto manager.      (line 1910)
+* BFD_RELOC_MSP430_16_PCREL:             howto manager.      (line 1907)
+* BFD_RELOC_MSP430_16_PCREL_BYTE:        howto manager.      (line 1909)
+* BFD_RELOC_MSP430_2X_PCREL:             howto manager.      (line 1911)
+* BFD_RELOC_MSP430_RL_PCREL:             howto manager.      (line 1912)
+* BFD_RELOC_MT_GNU_VTENTRY:              howto manager.      (line 1900)
+* BFD_RELOC_MT_GNU_VTINHERIT:            howto manager.      (line 1897)
+* BFD_RELOC_MT_HI16:                     howto manager.      (line 1891)
+* BFD_RELOC_MT_LO16:                     howto manager.      (line 1894)
+* BFD_RELOC_MT_PC16:                     howto manager.      (line 1888)
+* BFD_RELOC_MT_PCINSN8:                  howto manager.      (line 1903)
+* BFD_RELOC_NONE:                        howto manager.      (line  116)
+* BFD_RELOC_NS32K_DISP_16:               howto manager.      (line  507)
+* BFD_RELOC_NS32K_DISP_16_PCREL:         howto manager.      (line  510)
+* BFD_RELOC_NS32K_DISP_32:               howto manager.      (line  508)
+* BFD_RELOC_NS32K_DISP_32_PCREL:         howto manager.      (line  511)
+* BFD_RELOC_NS32K_DISP_8:                howto manager.      (line  506)
+* BFD_RELOC_NS32K_DISP_8_PCREL:          howto manager.      (line  509)
+* BFD_RELOC_NS32K_IMM_16:                howto manager.      (line  501)
+* BFD_RELOC_NS32K_IMM_16_PCREL:          howto manager.      (line  504)
+* BFD_RELOC_NS32K_IMM_32:                howto manager.      (line  502)
+* BFD_RELOC_NS32K_IMM_32_PCREL:          howto manager.      (line  505)
+* BFD_RELOC_NS32K_IMM_8:                 howto manager.      (line  500)
+* BFD_RELOC_NS32K_IMM_8_PCREL:           howto manager.      (line  503)
+* BFD_RELOC_OPENRISC_ABS_26:             howto manager.      (line 1860)
+* BFD_RELOC_OPENRISC_REL_26:             howto manager.      (line 1861)
+* BFD_RELOC_PDP11_DISP_6_PCREL:          howto manager.      (line  515)
+* BFD_RELOC_PDP11_DISP_8_PCREL:          howto manager.      (line  514)
+* BFD_RELOC_PJ_CODE_DIR16:               howto manager.      (line  520)
+* BFD_RELOC_PJ_CODE_DIR32:               howto manager.      (line  521)
+* BFD_RELOC_PJ_CODE_HI16:                howto manager.      (line  518)
+* BFD_RELOC_PJ_CODE_LO16:                howto manager.      (line  519)
+* BFD_RELOC_PJ_CODE_REL16:               howto manager.      (line  522)
+* BFD_RELOC_PJ_CODE_REL32:               howto manager.      (line  523)
+* BFD_RELOC_PPC64_ADDR16_DS:             howto manager.      (line  568)
+* BFD_RELOC_PPC64_ADDR16_LO_DS:          howto manager.      (line  569)
+* BFD_RELOC_PPC64_DTPREL16_DS:           howto manager.      (line  615)
+* BFD_RELOC_PPC64_DTPREL16_HIGHER:       howto manager.      (line  617)
+* BFD_RELOC_PPC64_DTPREL16_HIGHERA:      howto manager.      (line  618)
+* BFD_RELOC_PPC64_DTPREL16_HIGHEST:      howto manager.      (line  619)
+* BFD_RELOC_PPC64_DTPREL16_HIGHESTA:     howto manager.      (line  620)
+* BFD_RELOC_PPC64_DTPREL16_LO_DS:        howto manager.      (line  616)
+* BFD_RELOC_PPC64_GOT16_DS:              howto manager.      (line  570)
+* BFD_RELOC_PPC64_GOT16_LO_DS:           howto manager.      (line  571)
+* BFD_RELOC_PPC64_HIGHER:                howto manager.      (line  556)
+* BFD_RELOC_PPC64_HIGHER_S:              howto manager.      (line  557)
+* BFD_RELOC_PPC64_HIGHEST:               howto manager.      (line  558)
+* BFD_RELOC_PPC64_HIGHEST_S:             howto manager.      (line  559)
+* BFD_RELOC_PPC64_PLT16_LO_DS:           howto manager.      (line  572)
+* BFD_RELOC_PPC64_PLTGOT16:              howto manager.      (line  564)
+* BFD_RELOC_PPC64_PLTGOT16_DS:           howto manager.      (line  577)
+* BFD_RELOC_PPC64_PLTGOT16_HA:           howto manager.      (line  567)
+* BFD_RELOC_PPC64_PLTGOT16_HI:           howto manager.      (line  566)
+* BFD_RELOC_PPC64_PLTGOT16_LO:           howto manager.      (line  565)
+* BFD_RELOC_PPC64_PLTGOT16_LO_DS:        howto manager.      (line  578)
+* BFD_RELOC_PPC64_SECTOFF_DS:            howto manager.      (line  573)
+* BFD_RELOC_PPC64_SECTOFF_LO_DS:         howto manager.      (line  574)
+* BFD_RELOC_PPC64_TOC:                   howto manager.      (line  563)
+* BFD_RELOC_PPC64_TOC16_DS:              howto manager.      (line  575)
+* BFD_RELOC_PPC64_TOC16_HA:              howto manager.      (line  562)
+* BFD_RELOC_PPC64_TOC16_HI:              howto manager.      (line  561)
+* BFD_RELOC_PPC64_TOC16_LO:              howto manager.      (line  560)
+* BFD_RELOC_PPC64_TOC16_LO_DS:           howto manager.      (line  576)
+* BFD_RELOC_PPC64_TPREL16_DS:            howto manager.      (line  609)
+* BFD_RELOC_PPC64_TPREL16_HIGHER:        howto manager.      (line  611)
+* BFD_RELOC_PPC64_TPREL16_HIGHERA:       howto manager.      (line  612)
+* BFD_RELOC_PPC64_TPREL16_HIGHEST:       howto manager.      (line  613)
+* BFD_RELOC_PPC64_TPREL16_HIGHESTA:      howto manager.      (line  614)
+* BFD_RELOC_PPC64_TPREL16_LO_DS:         howto manager.      (line  610)
+* BFD_RELOC_PPC_B16:                     howto manager.      (line  529)
+* BFD_RELOC_PPC_B16_BRNTAKEN:            howto manager.      (line  531)
+* BFD_RELOC_PPC_B16_BRTAKEN:             howto manager.      (line  530)
+* BFD_RELOC_PPC_B26:                     howto manager.      (line  526)
+* BFD_RELOC_PPC_BA16:                    howto manager.      (line  532)
+* BFD_RELOC_PPC_BA16_BRNTAKEN:           howto manager.      (line  534)
+* BFD_RELOC_PPC_BA16_BRTAKEN:            howto manager.      (line  533)
+* BFD_RELOC_PPC_BA26:                    howto manager.      (line  527)
+* BFD_RELOC_PPC_COPY:                    howto manager.      (line  535)
+* BFD_RELOC_PPC_DTPMOD:                  howto manager.      (line  582)
+* BFD_RELOC_PPC_DTPREL:                  howto manager.      (line  592)
+* BFD_RELOC_PPC_DTPREL16:                howto manager.      (line  588)
+* BFD_RELOC_PPC_DTPREL16_HA:             howto manager.      (line  591)
+* BFD_RELOC_PPC_DTPREL16_HI:             howto manager.      (line  590)
+* BFD_RELOC_PPC_DTPREL16_LO:             howto manager.      (line  589)
+* BFD_RELOC_PPC_EMB_BIT_FLD:             howto manager.      (line  554)
+* BFD_RELOC_PPC_EMB_MRKREF:              howto manager.      (line  549)
+* BFD_RELOC_PPC_EMB_NADDR16:             howto manager.      (line  541)
+* BFD_RELOC_PPC_EMB_NADDR16_HA:          howto manager.      (line  544)
+* BFD_RELOC_PPC_EMB_NADDR16_HI:          howto manager.      (line  543)
+* BFD_RELOC_PPC_EMB_NADDR16_LO:          howto manager.      (line  542)
+* BFD_RELOC_PPC_EMB_NADDR32:             howto manager.      (line  540)
+* BFD_RELOC_PPC_EMB_RELSDA:              howto manager.      (line  555)
+* BFD_RELOC_PPC_EMB_RELSEC16:            howto manager.      (line  550)
+* BFD_RELOC_PPC_EMB_RELST_HA:            howto manager.      (line  553)
+* BFD_RELOC_PPC_EMB_RELST_HI:            howto manager.      (line  552)
+* BFD_RELOC_PPC_EMB_RELST_LO:            howto manager.      (line  551)
+* BFD_RELOC_PPC_EMB_SDA21:               howto manager.      (line  548)
+* BFD_RELOC_PPC_EMB_SDA2I16:             howto manager.      (line  546)
+* BFD_RELOC_PPC_EMB_SDA2REL:             howto manager.      (line  547)
+* BFD_RELOC_PPC_EMB_SDAI16:              howto manager.      (line  545)
+* BFD_RELOC_PPC_GLOB_DAT:                howto manager.      (line  536)
+* BFD_RELOC_PPC_GOT_DTPREL16:            howto manager.      (line  605)
+* BFD_RELOC_PPC_GOT_DTPREL16_HA:         howto manager.      (line  608)
+* BFD_RELOC_PPC_GOT_DTPREL16_HI:         howto manager.      (line  607)
+* BFD_RELOC_PPC_GOT_DTPREL16_LO:         howto manager.      (line  606)
+* BFD_RELOC_PPC_GOT_TLSGD16:             howto manager.      (line  593)
+* BFD_RELOC_PPC_GOT_TLSGD16_HA:          howto manager.      (line  596)
+* BFD_RELOC_PPC_GOT_TLSGD16_HI:          howto manager.      (line  595)
+* BFD_RELOC_PPC_GOT_TLSGD16_LO:          howto manager.      (line  594)
+* BFD_RELOC_PPC_GOT_TLSLD16:             howto manager.      (line  597)
+* BFD_RELOC_PPC_GOT_TLSLD16_HA:          howto manager.      (line  600)
+* BFD_RELOC_PPC_GOT_TLSLD16_HI:          howto manager.      (line  599)
+* BFD_RELOC_PPC_GOT_TLSLD16_LO:          howto manager.      (line  598)
+* BFD_RELOC_PPC_GOT_TPREL16:             howto manager.      (line  601)
+* BFD_RELOC_PPC_GOT_TPREL16_HA:          howto manager.      (line  604)
+* BFD_RELOC_PPC_GOT_TPREL16_HI:          howto manager.      (line  603)
+* BFD_RELOC_PPC_GOT_TPREL16_LO:          howto manager.      (line  602)
+* BFD_RELOC_PPC_JMP_SLOT:                howto manager.      (line  537)
+* BFD_RELOC_PPC_LOCAL24PC:               howto manager.      (line  539)
+* BFD_RELOC_PPC_RELATIVE:                howto manager.      (line  538)
+* BFD_RELOC_PPC_TLS:                     howto manager.      (line  581)
+* BFD_RELOC_PPC_TOC16:                   howto manager.      (line  528)
+* BFD_RELOC_PPC_TPREL:                   howto manager.      (line  587)
+* BFD_RELOC_PPC_TPREL16:                 howto manager.      (line  583)
+* BFD_RELOC_PPC_TPREL16_HA:              howto manager.      (line  586)
+* BFD_RELOC_PPC_TPREL16_HI:              howto manager.      (line  585)
+* BFD_RELOC_PPC_TPREL16_LO:              howto manager.      (line  584)
+* BFD_RELOC_RVA:                         howto manager.      (line   85)
+* BFD_RELOC_SCORE16_BRANCH:              howto manager.      (line 1535)
+* BFD_RELOC_SCORE16_JMP:                 howto manager.      (line 1532)
+* BFD_RELOC_SCORE_BRANCH:                howto manager.      (line 1529)
+* BFD_RELOC_SCORE_CALL15:                howto manager.      (line 1540)
+* BFD_RELOC_SCORE_DUMMY1:                howto manager.      (line 1519)
+* BFD_RELOC_SCORE_DUMMY2:                howto manager.      (line 1525)
+* BFD_RELOC_SCORE_DUMMY_HI16:            howto manager.      (line 1541)
+* BFD_RELOC_SCORE_GOT15:                 howto manager.      (line 1538)
+* BFD_RELOC_SCORE_GOT_LO16:              howto manager.      (line 1539)
+* BFD_RELOC_SCORE_GPREL15:               howto manager.      (line 1522)
+* BFD_RELOC_SCORE_JMP:                   howto manager.      (line 1526)
+* BFD_RELOC_SH_ALIGN:                    howto manager.      (line  800)
+* BFD_RELOC_SH_CODE:                     howto manager.      (line  801)
+* BFD_RELOC_SH_COPY:                     howto manager.      (line  806)
+* BFD_RELOC_SH_COPY64:                   howto manager.      (line  831)
+* BFD_RELOC_SH_COUNT:                    howto manager.      (line  799)
+* BFD_RELOC_SH_DATA:                     howto manager.      (line  802)
+* BFD_RELOC_SH_DISP12:                   howto manager.      (line  782)
+* BFD_RELOC_SH_DISP12BY2:                howto manager.      (line  783)
+* BFD_RELOC_SH_DISP12BY4:                howto manager.      (line  784)
+* BFD_RELOC_SH_DISP12BY8:                howto manager.      (line  785)
+* BFD_RELOC_SH_DISP20:                   howto manager.      (line  786)
+* BFD_RELOC_SH_DISP20BY8:                howto manager.      (line  787)
+* BFD_RELOC_SH_GLOB_DAT:                 howto manager.      (line  807)
+* BFD_RELOC_SH_GLOB_DAT64:               howto manager.      (line  832)
+* BFD_RELOC_SH_GOT10BY4:                 howto manager.      (line  835)
+* BFD_RELOC_SH_GOT10BY8:                 howto manager.      (line  836)
+* BFD_RELOC_SH_GOT_HI16:                 howto manager.      (line  814)
+* BFD_RELOC_SH_GOT_LOW16:                howto manager.      (line  811)
+* BFD_RELOC_SH_GOT_MEDHI16:              howto manager.      (line  813)
+* BFD_RELOC_SH_GOT_MEDLOW16:             howto manager.      (line  812)
+* BFD_RELOC_SH_GOTOFF_HI16:              howto manager.      (line  826)
+* BFD_RELOC_SH_GOTOFF_LOW16:             howto manager.      (line  823)
+* BFD_RELOC_SH_GOTOFF_MEDHI16:           howto manager.      (line  825)
+* BFD_RELOC_SH_GOTOFF_MEDLOW16:          howto manager.      (line  824)
+* BFD_RELOC_SH_GOTPC:                    howto manager.      (line  810)
+* BFD_RELOC_SH_GOTPC_HI16:               howto manager.      (line  830)
+* BFD_RELOC_SH_GOTPC_LOW16:              howto manager.      (line  827)
+* BFD_RELOC_SH_GOTPC_MEDHI16:            howto manager.      (line  829)
+* BFD_RELOC_SH_GOTPC_MEDLOW16:           howto manager.      (line  828)
+* BFD_RELOC_SH_GOTPLT10BY4:              howto manager.      (line  837)
+* BFD_RELOC_SH_GOTPLT10BY8:              howto manager.      (line  838)
+* BFD_RELOC_SH_GOTPLT32:                 howto manager.      (line  839)
+* BFD_RELOC_SH_GOTPLT_HI16:              howto manager.      (line  818)
+* BFD_RELOC_SH_GOTPLT_LOW16:             howto manager.      (line  815)
+* BFD_RELOC_SH_GOTPLT_MEDHI16:           howto manager.      (line  817)
+* BFD_RELOC_SH_GOTPLT_MEDLOW16:          howto manager.      (line  816)
+* BFD_RELOC_SH_IMM3:                     howto manager.      (line  780)
+* BFD_RELOC_SH_IMM3U:                    howto manager.      (line  781)
+* BFD_RELOC_SH_IMM4:                     howto manager.      (line  788)
+* BFD_RELOC_SH_IMM4BY2:                  howto manager.      (line  789)
+* BFD_RELOC_SH_IMM4BY4:                  howto manager.      (line  790)
+* BFD_RELOC_SH_IMM8:                     howto manager.      (line  791)
+* BFD_RELOC_SH_IMM8BY2:                  howto manager.      (line  792)
+* BFD_RELOC_SH_IMM8BY4:                  howto manager.      (line  793)
+* BFD_RELOC_SH_IMM_HI16:                 howto manager.      (line  857)
+* BFD_RELOC_SH_IMM_HI16_PCREL:           howto manager.      (line  858)
+* BFD_RELOC_SH_IMM_LOW16:                howto manager.      (line  851)
+* BFD_RELOC_SH_IMM_LOW16_PCREL:          howto manager.      (line  852)
+* BFD_RELOC_SH_IMM_MEDHI16:              howto manager.      (line  855)
+* BFD_RELOC_SH_IMM_MEDHI16_PCREL:        howto manager.      (line  856)
+* BFD_RELOC_SH_IMM_MEDLOW16:             howto manager.      (line  853)
+* BFD_RELOC_SH_IMM_MEDLOW16_PCREL:       howto manager.      (line  854)
+* BFD_RELOC_SH_IMMS10:                   howto manager.      (line  845)
+* BFD_RELOC_SH_IMMS10BY2:                howto manager.      (line  846)
+* BFD_RELOC_SH_IMMS10BY4:                howto manager.      (line  847)
+* BFD_RELOC_SH_IMMS10BY8:                howto manager.      (line  848)
+* BFD_RELOC_SH_IMMS16:                   howto manager.      (line  849)
+* BFD_RELOC_SH_IMMS6:                    howto manager.      (line  842)
+* BFD_RELOC_SH_IMMS6BY32:                howto manager.      (line  843)
+* BFD_RELOC_SH_IMMU16:                   howto manager.      (line  850)
+* BFD_RELOC_SH_IMMU5:                    howto manager.      (line  841)
+* BFD_RELOC_SH_IMMU6:                    howto manager.      (line  844)
+* BFD_RELOC_SH_JMP_SLOT:                 howto manager.      (line  808)
+* BFD_RELOC_SH_JMP_SLOT64:               howto manager.      (line  833)
+* BFD_RELOC_SH_LABEL:                    howto manager.      (line  803)
+* BFD_RELOC_SH_LOOP_END:                 howto manager.      (line  805)
+* BFD_RELOC_SH_LOOP_START:               howto manager.      (line  804)
+* BFD_RELOC_SH_PCDISP12BY2:              howto manager.      (line  779)
+* BFD_RELOC_SH_PCDISP8BY2:               howto manager.      (line  778)
+* BFD_RELOC_SH_PCRELIMM8BY2:             howto manager.      (line  794)
+* BFD_RELOC_SH_PCRELIMM8BY4:             howto manager.      (line  795)
+* BFD_RELOC_SH_PLT_HI16:                 howto manager.      (line  822)
+* BFD_RELOC_SH_PLT_LOW16:                howto manager.      (line  819)
+* BFD_RELOC_SH_PLT_MEDHI16:              howto manager.      (line  821)
+* BFD_RELOC_SH_PLT_MEDLOW16:             howto manager.      (line  820)
+* BFD_RELOC_SH_PT_16:                    howto manager.      (line  859)
+* BFD_RELOC_SH_RELATIVE:                 howto manager.      (line  809)
+* BFD_RELOC_SH_RELATIVE64:               howto manager.      (line  834)
+* BFD_RELOC_SH_SHMEDIA_CODE:             howto manager.      (line  840)
+* BFD_RELOC_SH_SWITCH16:                 howto manager.      (line  796)
+* BFD_RELOC_SH_SWITCH32:                 howto manager.      (line  797)
+* BFD_RELOC_SH_TLS_DTPMOD32:             howto manager.      (line  865)
+* BFD_RELOC_SH_TLS_DTPOFF32:             howto manager.      (line  866)
+* BFD_RELOC_SH_TLS_GD_32:                howto manager.      (line  860)
+* BFD_RELOC_SH_TLS_IE_32:                howto manager.      (line  863)
+* BFD_RELOC_SH_TLS_LD_32:                howto manager.      (line  861)
+* BFD_RELOC_SH_TLS_LDO_32:               howto manager.      (line  862)
+* BFD_RELOC_SH_TLS_LE_32:                howto manager.      (line  864)
+* BFD_RELOC_SH_TLS_TPOFF32:              howto manager.      (line  867)
+* BFD_RELOC_SH_USES:                     howto manager.      (line  798)
+* BFD_RELOC_SPARC13:                     howto manager.      (line  119)
+* BFD_RELOC_SPARC22:                     howto manager.      (line  118)
+* BFD_RELOC_SPARC_10:                    howto manager.      (line  141)
+* BFD_RELOC_SPARC_11:                    howto manager.      (line  142)
+* BFD_RELOC_SPARC_5:                     howto manager.      (line  154)
+* BFD_RELOC_SPARC_6:                     howto manager.      (line  153)
+* BFD_RELOC_SPARC_64:                    howto manager.      (line  140)
+* BFD_RELOC_SPARC_7:                     howto manager.      (line  152)
+* BFD_RELOC_SPARC_BASE13:                howto manager.      (line  136)
+* BFD_RELOC_SPARC_BASE22:                howto manager.      (line  137)
+* BFD_RELOC_SPARC_COPY:                  howto manager.      (line  126)
+* BFD_RELOC_SPARC_DISP64:                howto manager.      (line  155)
+* BFD_RELOC_SPARC_GLOB_DAT:              howto manager.      (line  127)
+* BFD_RELOC_SPARC_GOT10:                 howto manager.      (line  120)
+* BFD_RELOC_SPARC_GOT13:                 howto manager.      (line  121)
+* BFD_RELOC_SPARC_GOT22:                 howto manager.      (line  122)
+* BFD_RELOC_SPARC_H44:                   howto manager.      (line  160)
+* BFD_RELOC_SPARC_HH22:                  howto manager.      (line  144)
+* BFD_RELOC_SPARC_HIX22:                 howto manager.      (line  158)
+* BFD_RELOC_SPARC_HM10:                  howto manager.      (line  145)
+* BFD_RELOC_SPARC_JMP_SLOT:              howto manager.      (line  128)
+* BFD_RELOC_SPARC_L44:                   howto manager.      (line  162)
+* BFD_RELOC_SPARC_LM22:                  howto manager.      (line  146)
+* BFD_RELOC_SPARC_LOX10:                 howto manager.      (line  159)
+* BFD_RELOC_SPARC_M44:                   howto manager.      (line  161)
+* BFD_RELOC_SPARC_OLO10:                 howto manager.      (line  143)
+* BFD_RELOC_SPARC_PC10:                  howto manager.      (line  123)
+* BFD_RELOC_SPARC_PC22:                  howto manager.      (line  124)
+* BFD_RELOC_SPARC_PC_HH22:               howto manager.      (line  147)
+* BFD_RELOC_SPARC_PC_HM10:               howto manager.      (line  148)
+* BFD_RELOC_SPARC_PC_LM22:               howto manager.      (line  149)
+* BFD_RELOC_SPARC_PLT32:                 howto manager.      (line  156)
+* BFD_RELOC_SPARC_PLT64:                 howto manager.      (line  157)
+* BFD_RELOC_SPARC_REGISTER:              howto manager.      (line  163)
+* BFD_RELOC_SPARC_RELATIVE:              howto manager.      (line  129)
+* BFD_RELOC_SPARC_REV32:                 howto manager.      (line  166)
+* BFD_RELOC_SPARC_TLS_DTPMOD32:          howto manager.      (line  187)
+* BFD_RELOC_SPARC_TLS_DTPMOD64:          howto manager.      (line  188)
+* BFD_RELOC_SPARC_TLS_DTPOFF32:          howto manager.      (line  189)
+* BFD_RELOC_SPARC_TLS_DTPOFF64:          howto manager.      (line  190)
+* BFD_RELOC_SPARC_TLS_GD_ADD:            howto manager.      (line  171)
+* BFD_RELOC_SPARC_TLS_GD_CALL:           howto manager.      (line  172)
+* BFD_RELOC_SPARC_TLS_GD_HI22:           howto manager.      (line  169)
+* BFD_RELOC_SPARC_TLS_GD_LO10:           howto manager.      (line  170)
+* BFD_RELOC_SPARC_TLS_IE_ADD:            howto manager.      (line  184)
+* BFD_RELOC_SPARC_TLS_IE_HI22:           howto manager.      (line  180)
+* BFD_RELOC_SPARC_TLS_IE_LD:             howto manager.      (line  182)
+* BFD_RELOC_SPARC_TLS_IE_LDX:            howto manager.      (line  183)
+* BFD_RELOC_SPARC_TLS_IE_LO10:           howto manager.      (line  181)
+* BFD_RELOC_SPARC_TLS_LDM_ADD:           howto manager.      (line  175)
+* BFD_RELOC_SPARC_TLS_LDM_CALL:          howto manager.      (line  176)
+* BFD_RELOC_SPARC_TLS_LDM_HI22:          howto manager.      (line  173)
+* BFD_RELOC_SPARC_TLS_LDM_LO10:          howto manager.      (line  174)
+* BFD_RELOC_SPARC_TLS_LDO_ADD:           howto manager.      (line  179)
+* BFD_RELOC_SPARC_TLS_LDO_HIX22:         howto manager.      (line  177)
+* BFD_RELOC_SPARC_TLS_LDO_LOX10:         howto manager.      (line  178)
+* BFD_RELOC_SPARC_TLS_LE_HIX22:          howto manager.      (line  185)
+* BFD_RELOC_SPARC_TLS_LE_LOX10:          howto manager.      (line  186)
+* BFD_RELOC_SPARC_TLS_TPOFF32:           howto manager.      (line  191)
+* BFD_RELOC_SPARC_TLS_TPOFF64:           howto manager.      (line  192)
+* BFD_RELOC_SPARC_UA16:                  howto manager.      (line  130)
+* BFD_RELOC_SPARC_UA32:                  howto manager.      (line  131)
+* BFD_RELOC_SPARC_UA64:                  howto manager.      (line  132)
+* BFD_RELOC_SPARC_WDISP16:               howto manager.      (line  150)
+* BFD_RELOC_SPARC_WDISP19:               howto manager.      (line  151)
+* BFD_RELOC_SPARC_WDISP22:               howto manager.      (line  117)
+* BFD_RELOC_SPARC_WPLT30:                howto manager.      (line  125)
+* BFD_RELOC_SPU_HI16:                    howto manager.      (line  206)
+* BFD_RELOC_SPU_IMM10:                   howto manager.      (line  197)
+* BFD_RELOC_SPU_IMM10W:                  howto manager.      (line  198)
+* BFD_RELOC_SPU_IMM16:                   howto manager.      (line  199)
+* BFD_RELOC_SPU_IMM16W:                  howto manager.      (line  200)
+* BFD_RELOC_SPU_IMM18:                   howto manager.      (line  201)
+* BFD_RELOC_SPU_IMM7:                    howto manager.      (line  195)
+* BFD_RELOC_SPU_IMM8:                    howto manager.      (line  196)
+* BFD_RELOC_SPU_LO16:                    howto manager.      (line  205)
+* BFD_RELOC_SPU_PCREL16:                 howto manager.      (line  204)
+* BFD_RELOC_SPU_PCREL9a:                 howto manager.      (line  202)
+* BFD_RELOC_SPU_PCREL9b:                 howto manager.      (line  203)
+* BFD_RELOC_THUMB_PCREL_BLX:             howto manager.      (line  641)
+* BFD_RELOC_THUMB_PCREL_BRANCH12:        howto manager.      (line  655)
+* BFD_RELOC_THUMB_PCREL_BRANCH20:        howto manager.      (line  656)
+* BFD_RELOC_THUMB_PCREL_BRANCH23:        howto manager.      (line  657)
+* BFD_RELOC_THUMB_PCREL_BRANCH25:        howto manager.      (line  658)
+* BFD_RELOC_THUMB_PCREL_BRANCH7:         howto manager.      (line  653)
+* BFD_RELOC_THUMB_PCREL_BRANCH9:         howto manager.      (line  654)
+* BFD_RELOC_TIC30_LDP:                   howto manager.      (line 1194)
+* BFD_RELOC_TIC54X_16_OF_23:             howto manager.      (line 1212)
+* BFD_RELOC_TIC54X_23:                   howto manager.      (line 1209)
+* BFD_RELOC_TIC54X_MS7_OF_23:            howto manager.      (line 1217)
+* BFD_RELOC_TIC54X_PARTLS7:              howto manager.      (line 1199)
+* BFD_RELOC_TIC54X_PARTMS9:              howto manager.      (line 1204)
+* bfd_reloc_type_lookup:                 howto manager.      (line 2012)
+* BFD_RELOC_V850_22_PCREL:               howto manager.      (line 1121)
+* BFD_RELOC_V850_9_PCREL:                howto manager.      (line 1118)
+* BFD_RELOC_V850_ALIGN:                  howto manager.      (line 1179)
+* BFD_RELOC_V850_CALLT_16_16_OFFSET:     howto manager.      (line 1170)
+* BFD_RELOC_V850_CALLT_6_7_OFFSET:       howto manager.      (line 1167)
+* BFD_RELOC_V850_LO16_SPLIT_OFFSET:      howto manager.      (line 1182)
+* BFD_RELOC_V850_LONGCALL:               howto manager.      (line 1173)
+* BFD_RELOC_V850_LONGJUMP:               howto manager.      (line 1176)
+* BFD_RELOC_V850_SDA_15_16_OFFSET:       howto manager.      (line 1127)
+* BFD_RELOC_V850_SDA_16_16_OFFSET:       howto manager.      (line 1124)
+* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager.      (line 1159)
+* BFD_RELOC_V850_TDA_16_16_OFFSET:       howto manager.      (line 1149)
+* BFD_RELOC_V850_TDA_4_4_OFFSET:         howto manager.      (line 1156)
+* BFD_RELOC_V850_TDA_4_5_OFFSET:         howto manager.      (line 1152)
+* BFD_RELOC_V850_TDA_6_8_OFFSET:         howto manager.      (line 1138)
+* BFD_RELOC_V850_TDA_7_7_OFFSET:         howto manager.      (line 1146)
+* BFD_RELOC_V850_TDA_7_8_OFFSET:         howto manager.      (line 1142)
+* BFD_RELOC_V850_ZDA_15_16_OFFSET:       howto manager.      (line 1134)
+* BFD_RELOC_V850_ZDA_16_16_OFFSET:       howto manager.      (line 1131)
+* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager.      (line 1163)
+* BFD_RELOC_VAX_GLOB_DAT:                howto manager.      (line 1883)
+* BFD_RELOC_VAX_JMP_SLOT:                howto manager.      (line 1884)
+* BFD_RELOC_VAX_RELATIVE:                howto manager.      (line 1885)
+* BFD_RELOC_VPE4KMATH_DATA:              howto manager.      (line 1574)
+* BFD_RELOC_VPE4KMATH_INSN:              howto manager.      (line 1575)
+* BFD_RELOC_VTABLE_ENTRY:                howto manager.      (line 1579)
+* BFD_RELOC_VTABLE_INHERIT:              howto manager.      (line 1578)
+* BFD_RELOC_X86_64_32S:                  howto manager.      (line  479)
+* BFD_RELOC_X86_64_COPY:                 howto manager.      (line  474)
+* BFD_RELOC_X86_64_DTPMOD64:             howto manager.      (line  480)
+* BFD_RELOC_X86_64_DTPOFF32:             howto manager.      (line  485)
+* BFD_RELOC_X86_64_DTPOFF64:             howto manager.      (line  481)
+* BFD_RELOC_X86_64_GLOB_DAT:             howto manager.      (line  475)
+* BFD_RELOC_X86_64_GOT32:                howto manager.      (line  472)
+* BFD_RELOC_X86_64_GOT64:                howto manager.      (line  490)
+* BFD_RELOC_X86_64_GOTOFF64:             howto manager.      (line  488)
+* BFD_RELOC_X86_64_GOTPC32:              howto manager.      (line  489)
+* BFD_RELOC_X86_64_GOTPC32_TLSDESC:      howto manager.      (line  495)
+* BFD_RELOC_X86_64_GOTPC64:              howto manager.      (line  492)
+* BFD_RELOC_X86_64_GOTPCREL:             howto manager.      (line  478)
+* BFD_RELOC_X86_64_GOTPCREL64:           howto manager.      (line  491)
+* BFD_RELOC_X86_64_GOTPLT64:             howto manager.      (line  493)
+* BFD_RELOC_X86_64_GOTTPOFF:             howto manager.      (line  486)
+* BFD_RELOC_X86_64_JUMP_SLOT:            howto manager.      (line  476)
+* BFD_RELOC_X86_64_PLT32:                howto manager.      (line  473)
+* BFD_RELOC_X86_64_PLTOFF64:             howto manager.      (line  494)
+* BFD_RELOC_X86_64_RELATIVE:             howto manager.      (line  477)
+* BFD_RELOC_X86_64_TLSDESC:              howto manager.      (line  497)
+* BFD_RELOC_X86_64_TLSDESC_CALL:         howto manager.      (line  496)
+* BFD_RELOC_X86_64_TLSGD:                howto manager.      (line  483)
+* BFD_RELOC_X86_64_TLSLD:                howto manager.      (line  484)
+* BFD_RELOC_X86_64_TPOFF32:              howto manager.      (line  487)
+* BFD_RELOC_X86_64_TPOFF64:              howto manager.      (line  482)
+* BFD_RELOC_XC16X_PAG:                   howto manager.      (line 1877)
+* BFD_RELOC_XC16X_POF:                   howto manager.      (line 1878)
+* BFD_RELOC_XC16X_SEG:                   howto manager.      (line 1879)
+* BFD_RELOC_XC16X_SOF:                   howto manager.      (line 1880)
+* BFD_RELOC_XSTORMY16_12:                howto manager.      (line 1872)
+* BFD_RELOC_XSTORMY16_24:                howto manager.      (line 1873)
+* BFD_RELOC_XSTORMY16_FPTR16:            howto manager.      (line 1874)
+* BFD_RELOC_XSTORMY16_REL_12:            howto manager.      (line 1871)
+* BFD_RELOC_XTENSA_ASM_EXPAND:           howto manager.      (line 1989)
+* BFD_RELOC_XTENSA_ASM_SIMPLIFY:         howto manager.      (line 1994)
+* BFD_RELOC_XTENSA_DIFF16:               howto manager.      (line 1936)
+* BFD_RELOC_XTENSA_DIFF32:               howto manager.      (line 1937)
+* BFD_RELOC_XTENSA_DIFF8:                howto manager.      (line 1935)
+* BFD_RELOC_XTENSA_GLOB_DAT:             howto manager.      (line 1925)
+* BFD_RELOC_XTENSA_JMP_SLOT:             howto manager.      (line 1926)
+* BFD_RELOC_XTENSA_OP0:                  howto manager.      (line 1983)
+* BFD_RELOC_XTENSA_OP1:                  howto manager.      (line 1984)
+* BFD_RELOC_XTENSA_OP2:                  howto manager.      (line 1985)
+* BFD_RELOC_XTENSA_PLT:                  howto manager.      (line 1930)
+* BFD_RELOC_XTENSA_RELATIVE:             howto manager.      (line 1927)
+* BFD_RELOC_XTENSA_RTLD:                 howto manager.      (line 1920)
+* BFD_RELOC_XTENSA_SLOT0_ALT:            howto manager.      (line 1965)
+* BFD_RELOC_XTENSA_SLOT0_OP:             howto manager.      (line 1945)
+* BFD_RELOC_XTENSA_SLOT10_ALT:           howto manager.      (line 1975)
+* BFD_RELOC_XTENSA_SLOT10_OP:            howto manager.      (line 1955)
+* BFD_RELOC_XTENSA_SLOT11_ALT:           howto manager.      (line 1976)
+* BFD_RELOC_XTENSA_SLOT11_OP:            howto manager.      (line 1956)
+* BFD_RELOC_XTENSA_SLOT12_ALT:           howto manager.      (line 1977)
+* BFD_RELOC_XTENSA_SLOT12_OP:            howto manager.      (line 1957)
+* BFD_RELOC_XTENSA_SLOT13_ALT:           howto manager.      (line 1978)
+* BFD_RELOC_XTENSA_SLOT13_OP:            howto manager.      (line 1958)
+* BFD_RELOC_XTENSA_SLOT14_ALT:           howto manager.      (line 1979)
+* BFD_RELOC_XTENSA_SLOT14_OP:            howto manager.      (line 1959)
+* BFD_RELOC_XTENSA_SLOT1_ALT:            howto manager.      (line 1966)
+* BFD_RELOC_XTENSA_SLOT1_OP:             howto manager.      (line 1946)
+* BFD_RELOC_XTENSA_SLOT2_ALT:            howto manager.      (line 1967)
+* BFD_RELOC_XTENSA_SLOT2_OP:             howto manager.      (line 1947)
+* BFD_RELOC_XTENSA_SLOT3_ALT:            howto manager.      (line 1968)
+* BFD_RELOC_XTENSA_SLOT3_OP:             howto manager.      (line 1948)
+* BFD_RELOC_XTENSA_SLOT4_ALT:            howto manager.      (line 1969)
+* BFD_RELOC_XTENSA_SLOT4_OP:             howto manager.      (line 1949)
+* BFD_RELOC_XTENSA_SLOT5_ALT:            howto manager.      (line 1970)
+* BFD_RELOC_XTENSA_SLOT5_OP:             howto manager.      (line 1950)
+* BFD_RELOC_XTENSA_SLOT6_ALT:            howto manager.      (line 1971)
+* BFD_RELOC_XTENSA_SLOT6_OP:             howto manager.      (line 1951)
+* BFD_RELOC_XTENSA_SLOT7_ALT:            howto manager.      (line 1972)
+* BFD_RELOC_XTENSA_SLOT7_OP:             howto manager.      (line 1952)
+* BFD_RELOC_XTENSA_SLOT8_ALT:            howto manager.      (line 1973)
+* BFD_RELOC_XTENSA_SLOT8_OP:             howto manager.      (line 1953)
+* BFD_RELOC_XTENSA_SLOT9_ALT:            howto manager.      (line 1974)
+* BFD_RELOC_XTENSA_SLOT9_OP:             howto manager.      (line 1954)
+* BFD_RELOC_Z80_DISP8:                   howto manager.      (line 1999)
+* BFD_RELOC_Z8K_CALLR:                   howto manager.      (line 2005)
+* BFD_RELOC_Z8K_DISP7:                   howto manager.      (line 2002)
+* BFD_RELOC_Z8K_IMM4L:                   howto manager.      (line 2008)
+* bfd_scan_arch:                         Architectures.      (line  397)
+* bfd_scan_vma:                          BFD front end.      (line  426)
+* bfd_seach_for_target:                  bfd_target.         (line  460)
+* bfd_section_already_linked:            Writing the symbol table.
+                                                             (line   55)
+* bfd_section_list_clear:                section prototypes. (line    8)
+* bfd_sections_find_if:                  section prototypes. (line  176)
+* bfd_set_arch_info:                     Architectures.      (line  438)
+* bfd_set_archive_head:                  Archives.           (line   69)
+* bfd_set_default_target:                bfd_target.         (line  425)
+* bfd_set_error:                         BFD front end.      (line  236)
+* bfd_set_error_handler:                 BFD front end.      (line  278)
+* bfd_set_error_program_name:            BFD front end.      (line  287)
+* bfd_set_file_flags:                    BFD front end.      (line  346)
+* bfd_set_format:                        Formats.            (line   68)
+* bfd_set_gp_size:                       BFD front end.      (line  416)
+* bfd_set_private_flags:                 BFD front end.      (line  493)
+* bfd_set_reloc:                         BFD front end.      (line  336)
+* bfd_set_section_contents:              section prototypes. (line  207)
+* bfd_set_section_flags:                 section prototypes. (line  140)
+* bfd_set_section_size:                  section prototypes. (line  193)
+* bfd_set_start_address:                 BFD front end.      (line  395)
+* bfd_set_symtab:                        symbol handling functions.
+                                                             (line   60)
+* bfd_symbol_info:                       symbol handling functions.
+                                                             (line  130)
+* bfd_target_list:                       bfd_target.         (line  451)
+* bfd_write_bigendian_4byte_int:         Internal.           (line   13)
+* bfd_zalloc:                            Opening and Closing.
+                                                             (line  221)
+* bfd_zalloc2:                           Opening and Closing.
+                                                             (line  230)
+* coff_symbol_type:                      coff.               (line  186)
+* core_file_matches_executable_p:        Core Files.         (line   30)
+* find_separate_debug_file:              Opening and Closing.
+                                                             (line  272)
+* generic_core_file_matches_executable_p: Core Files.        (line   40)
+* get_debug_link_info:                   Opening and Closing.
+                                                             (line  253)
+* Hash tables:                           Hash Tables.        (line    6)
+* internal object-file format:           Canonical format.   (line   11)
+* Linker:                                Linker Functions.   (line    6)
+* Other functions:                       BFD front end.      (line  508)
+* separate_debug_file_exists:            Opening and Closing.
+                                                             (line  263)
+* struct bfd_iovec:                      BFD front end.      (line  700)
+* target vector (_bfd_final_link):       Performing the Final Link.
+                                                             (line    6)
+* target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table.
+                                                             (line    6)
+* target vector (_bfd_link_hash_table_create): Creating a Linker Hash Table.
+                                                             (line    6)
+* The HOWTO Macro:                       typedef arelent.    (line  291)
+* what is it?:                           Overview.           (line    6)
+
+
+\1f
+Tag Table:
+Node: Top\7f747
+Node: Overview\7f1086
+Node: History\7f2137
+Node: How It Works\7f3083
+Node: What BFD Version 2 Can Do\7f4626
+Node: BFD information loss\7f5941
+Node: Canonical format\7f8473
+Node: BFD front end\7f12845
+Node: Memory Usage\7f39765
+Node: Initialization\7f40993
+Node: Sections\7f41452
+Node: Section Input\7f41935
+Node: Section Output\7f43300
+Node: typedef asection\7f45786
+Node: section prototypes\7f70387
+Node: Symbols\7f80067
+Node: Reading Symbols\7f81662
+Node: Writing Symbols\7f82769
+Node: Mini Symbols\7f84478
+Node: typedef asymbol\7f85452
+Node: symbol handling functions\7f90370
+Node: Archives\7f95712
+Node: Formats\7f99438
+Node: Relocations\7f102386
+Node: typedef arelent\7f103113
+Node: howto manager\7f118924
+Node: Core Files\7f184019
+Node: Targets\7f185836
+Node: bfd_target\7f187806
+Node: Architectures\7f207982
+Node: Opening and Closing\7f229623
+Node: Internal\7f240625
+Node: File Caching\7f246958
+Node: Linker Functions\7f248872
+Node: Creating a Linker Hash Table\7f250545
+Node: Adding Symbols to the Hash Table\7f252283
+Node: Differing file formats\7f253183
+Node: Adding symbols from an object file\7f254931
+Node: Adding symbols from an archive\7f257082
+Node: Performing the Final Link\7f259496
+Node: Information provided by the linker\7f260738
+Node: Relocating the section contents\7f261892
+Node: Writing the symbol table\7f263643
+Node: Hash Tables\7f266685
+Node: Creating and Freeing a Hash Table\7f267883
+Node: Looking Up or Entering a String\7f269133
+Node: Traversing a Hash Table\7f270386
+Node: Deriving a New Hash Table Type\7f271175
+Node: Define the Derived Structures\7f272241
+Node: Write the Derived Creation Routine\7f273322
+Node: Write Other Derived Routines\7f275946
+Node: BFD back ends\7f277261
+Node: What to Put Where\7f277531
+Node: aout\7f277711
+Node: coff\7f284029
+Node: elf\7f308506
+Node: mmo\7f309369
+Node: File layout\7f310297
+Node: Symbol-table\7f315944
+Node: mmo section mapping\7f319713
+Node: GNU Free Documentation License\7f323365
+Node: BFD Index\7f343094
+\1f
+End Tag Table
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/share/info/configure.info b/linux-x86/toolchain/arm-eabi-4.4.0/share/info/configure.info
new file mode 100644 (file)
index 0000000..339c848
--- /dev/null
@@ -0,0 +1,2773 @@
+This is configure.info, produced by makeinfo version 4.8 from
+../../../../android-toolchain/gdb-6.6/etc/configure.texi.
+
+INFO-DIR-SECTION GNU admin
+START-INFO-DIR-ENTRY
+* configure: (configure).      The GNU configure and build system
+END-INFO-DIR-ENTRY
+
+   This file documents the GNU configure and build system.
+
+   Copyright (C) 1998 Cygnus Solutions.
+
+   Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+   Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+   Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be stated in a
+translation approved by the Foundation.
+
+\1f
+File: configure.info,  Node: Top,  Next: Introduction,  Up: (dir)
+
+GNU configure and build system
+******************************
+
+The GNU configure and build system.
+
+* Menu:
+
+* Introduction::               Introduction.
+* Getting Started::            Getting Started.
+* Files::                      Files.
+* Configuration Names::                Configuration Names.
+* Cross Compilation Tools::    Cross Compilation Tools.
+* Canadian Cross::             Canadian Cross.
+* Cygnus Configure::           Cygnus Configure.
+* Multilibs::                  Multilibs.
+* FAQ::                                Frequently Asked Questions.
+* Index::                      Index.
+
+\1f
+File: configure.info,  Node: Introduction,  Next: Getting Started,  Prev: Top,  Up: Top
+
+1 Introduction
+**************
+
+This document describes the GNU configure and build systems.  It
+describes how autoconf, automake, libtool, and make fit together.  It
+also includes a discussion of the older Cygnus configure system.
+
+   This document does not describe in detail how to use each of the
+tools; see the respective manuals for that.  Instead, it describes
+which files the developer must write, which files are machine generated
+and how they are generated, and where certain common problems should be
+addressed.
+
+   This document draws on several sources, including the autoconf
+manual by David MacKenzie (*note autoconf overview: (autoconf)Top.),
+the automake manual by David MacKenzie and Tom Tromey (*note automake
+overview: (automake)Top.), the libtool manual by Gordon Matzigkeit
+(*note libtool overview: (libtool)Top.), and the Cygnus configure
+manual by K. Richard Pixley.
+
+* Menu:
+
+* Goals::                      Goals.
+* Tools::                      The tools.
+* History::                    History.
+* Building::                   Building.
+
+\1f
+File: configure.info,  Node: Goals,  Next: Tools,  Up: Introduction
+
+1.1 Goals
+=========
+
+The GNU configure and build system has two main goals.
+
+   The first is to simplify the development of portable programs.  The
+system permits the developer to concentrate on writing the program,
+simplifying many details of portability across Unix and even Windows
+systems, and permitting the developer to describe how to build the
+program using simple rules rather than complex Makefiles.
+
+   The second is to simplify the building of programs distributed as
+source code.  All programs are built using a simple, standardized, two
+step process.  The program builder need not install any special tools in
+order to build the program.
+
+\1f
+File: configure.info,  Node: Tools,  Next: History,  Prev: Goals,  Up: Introduction
+
+1.2 Tools
+=========
+
+The GNU configure and build system is comprised of several different
+tools.  Program developers must build and install all of these tools.
+
+   People who just want to build programs from distributed sources
+normally do not need any special tools beyond a Unix shell, a make
+program, and a C compiler.
+
+autoconf
+     provides a general portability framework, based on testing the
+     features of the host system at build time.
+
+automake
+     a system for describing how to build a program, permitting the
+     developer to write a simplified `Makefile'.
+
+libtool
+     a standardized approach to building shared libraries.
+
+gettext
+     provides a framework for translation of text messages into other
+     languages; not really discussed in this document.
+
+m4
+     autoconf requires the GNU version of m4; the standard Unix m4 does
+     not suffice.
+
+perl
+     automake requires perl.
+
+\1f
+File: configure.info,  Node: History,  Next: Building,  Prev: Tools,  Up: Introduction
+
+1.3 History
+===========
+
+This is a very brief and probably inaccurate history.
+
+   As the number of Unix variants increased during the 1980s, it became
+harder to write programs which could run on all variants.  While it was
+often possible to use `#ifdef' to identify particular systems,
+developers frequently did not have access to every system, and the
+characteristics of some systems changed from version to version.
+
+   By 1992, at least three different approaches had been developed:
+   * The Metaconfig program, by Larry Wall, Harlan Stenn, and Raphael
+     Manfredi.
+
+   * The Cygnus configure script, by K. Richard Pixley, and the gcc
+     configure script, by Richard Stallman.  These use essentially the
+     same approach, and the developers communicated regularly.
+
+   * The autoconf program, by David MacKenzie.
+
+   The Metaconfig program is still used for Perl and a few other
+programs.  It is part of the Dist package.  I do not know if it is
+being developed.
+
+   In 1994, David MacKenzie and others modified autoconf to incorporate
+all the features of Cygnus configure.  Since then, there has been a
+slow but steady conversion of GNU programs from Cygnus configure to
+autoconf. gcc has been converted, eliminating the gcc configure script.
+
+   GNU autoconf was regularly maintained until late 1996.  As of this
+writing in June, 1998, it has no public maintainer.
+
+   Most programs are built using the make program, which requires the
+developer to write Makefiles describing how to build the programs.
+Since most programs are built in pretty much the same way, this led to a
+lot of duplication.
+
+   The X Window system is built using the imake tool, which uses a
+database of rules to eliminate the duplication.  However, building a
+tool which was developed using imake requires that the builder have
+imake installed, violating one of the goals of the GNU system.
+
+   The new BSD make provides a standard library of Makefile fragments,
+which permits developers to write very simple Makefiles.  However, this
+requires that the builder install the new BSD make program.
+
+   In 1994, David MacKenzie wrote the first version of automake, which
+permitted writing a simple build description which was converted into a
+Makefile which could be used by the standard make program.  In 1995, Tom
+Tromey completely rewrote automake in Perl, and he continues to enhance
+it.
+
+   Various free packages built libraries, and by around 1995 several
+included support to build shared libraries on various platforms.
+However, there was no consistent approach.  In early 1996, Gordon
+Matzigkeit began working on libtool, which provided a standardized
+approach to building shared libraries.  This was integrated into
+automake from the start.
+
+   The development of automake and libtool was driven by the GNITS
+project, a group of GNU maintainers who designed standardized tools to
+help meet the GNU coding standards.
+
+\1f
+File: configure.info,  Node: Building,  Prev: History,  Up: Introduction
+
+1.4 Building
+============
+
+Most readers of this document should already know how to build a tool by
+running `configure' and `make'.  This section may serve as a quick
+introduction or reminder.
+
+   Building a tool is normally as simple as running `configure'
+followed by `make'.  You should normally run `configure' from an empty
+directory, using some path to refer to the `configure' script in the
+source directory.  The directory in which you run `configure' is called
+the "object directory".
+
+   In order to use a object directory which is different from the source
+directory, you must be using the GNU version of `make', which has the
+required `VPATH' support.  Despite this restriction, using a different
+object directory is highly recommended:
+   * It keeps the files generated during the build from cluttering up
+     your sources.
+
+   * It permits you to remove the built files by simply removing the
+     entire build directory.
+
+   * It permits you to build from the same sources with several sets of
+     configure options simultaneously.
+
+   If you don't have GNU `make', you will have to run `configure' in
+the source directory.  All GNU packages should support this; in
+particular, GNU packages should not assume the presence of GNU `make'.
+
+   After running `configure', you can build the tools by running `make'.
+
+   To install the tools, run `make install'.  Installing the tools will
+copy the programs and any required support files to the "installation
+directory".  The location of the installation directory is controlled
+by `configure' options, as described below.
+
+   In the Cygnus tree at present, the info files are built and
+installed as a separate step.  To build them, run `make info'.  To
+install them, run `make install-info'. The equivalent html files are
+also built and installed in a separate step. To build the html files,
+run `make html'. To install the html files run `make install-html'.
+
+   All `configure' scripts support a wide variety of options.  The most
+interesting ones are `--with' and `--enable' options which are
+generally specific to particular tools.  You can usually use the
+`--help' option to get a list of interesting options for a particular
+configure script.
+
+   The only generic options you are likely to use are the `--prefix'
+and `--exec-prefix' options.  These options are used to specify the
+installation directory.
+
+   The directory named by the `--prefix' option will hold machine
+independent files such as info files.
+
+   The directory named by the `--exec-prefix' option, which is normally
+a subdirectory of the `--prefix' directory, will hold machine dependent
+files such as executables.
+
+   The default for `--prefix' is `/usr/local'.  The default for
+`--exec-prefix' is the value used for `--prefix'.
+
+   The convention used in Cygnus releases is to use a `--prefix' option
+of `/usr/cygnus/RELEASE', where RELEASE is the name of the release, and
+to use a `--exec-prefix' option of `/usr/cygnus/RELEASE/H-HOST', where
+HOST is the configuration name of the host system (*note Configuration
+Names::).
+
+   Do not use either the source or the object directory as the
+installation directory.  That will just lead to confusion.
+
+\1f
+File: configure.info,  Node: Getting Started,  Next: Files,  Prev: Introduction,  Up: Top
+
+2 Getting Started
+*****************
+
+To start using the GNU configure and build system with your software
+package, you must write three files, and you must run some tools to
+manually generate additional files.
+
+* Menu:
+
+* Write configure.in::         Write configure.in.
+* Write Makefile.am::          Write Makefile.am.
+* Write acconfig.h::           Write acconfig.h.
+* Generate files::             Generate files.
+* Getting Started Example::    Example.
+
+\1f
+File: configure.info,  Node: Write configure.in,  Next: Write Makefile.am,  Up: Getting Started
+
+2.1 Write configure.in
+======================
+
+You must first write the file `configure.in'.  This is an autoconf
+input file, and the autoconf manual describes in detail what this file
+should look like.
+
+   You will write tests in your `configure.in' file to check for
+conditions that may change from one system to another, such as the
+presence of particular header files or functions.
+
+   For example, not all systems support the `gettimeofday' function.
+If you want to use the `gettimeofday' function when it is available,
+and to use some other function when it is not, you would check for this
+by putting `AC_CHECK_FUNCS(gettimeofday)' in `configure.in'.
+
+   When the configure script is run at build time, this will arrange to
+define the preprocessor macro `HAVE_GETTIMEOFDAY' to the value 1 if the
+`gettimeofday' function is available, and to not define the macro at
+all if the function is not available.  Your code can then use `#ifdef'
+to test whether it is safe to call `gettimeofday'.
+
+   If you have an existing body of code, the `autoscan' program may
+help identify potential portability problems, and hence configure tests
+that you will want to use.  *Note Invoking autoscan: (autoconf)Invoking
+autoscan.
+
+   Another handy tool for an existing body of code is `ifnames'.  This
+will show you all the preprocessor conditionals that the code already
+uses.  *Note Invoking ifnames: (autoconf)Invoking ifnames.
+
+   Besides the portability tests which are specific to your particular
+package, every `configure.in' file should contain the following macros.
+
+`AC_INIT'
+     This macro takes a single argument, which is the name of a file in
+     your package.  For example, `AC_INIT(foo.c)'.
+
+`AC_PREREQ(VERSION)'
+     This macro is optional.  It may be used to indicate the version of
+     `autoconf' that you are using.  This will prevent users from
+     running an earlier version of `autoconf' and perhaps getting an
+     invalid `configure' script.  For example, `AC_PREREQ(2.12)'.
+
+`AM_INIT_AUTOMAKE'
+     This macro takes two arguments: the name of the package, and a
+     version number.  For example, `AM_INIT_AUTOMAKE(foo, 1.0)'.  (This
+     macro is not needed if you are not using automake).
+
+`AM_CONFIG_HEADER'
+     This macro names the header file which will hold the preprocessor
+     macro definitions at run time.  Normally this should be
+     `config.h'.  Your sources would then use `#include "config.h"' to
+     include it.
+
+     This macro may optionally name the input file for that header
+     file; by default, this is `config.h.in', but that file name works
+     poorly on DOS filesystems.  Therefore, it is often better to name
+     it explicitly as `config.in'.
+
+     This is what you should normally put in `configure.in':
+          AM_CONFIG_HEADER(config.h:config.in)
+
+     (If you are not using automake, use `AC_CONFIG_HEADER' rather than
+     `AM_CONFIG_HEADER').
+
+`AM_MAINTAINER_MODE'
+     This macro always appears in Cygnus configure scripts.  Other
+     programs may or may not use it.
+
+     If this macro is used, the `--enable-maintainer-mode' option is
+     required to enable automatic rebuilding of generated files used by
+     the configure system.  This of course requires that developers be
+     aware of, and use, that option.
+
+     If this macro is not used, then the generated files will always be
+     rebuilt automatically.  This will cause problems if the wrong
+     versions of autoconf, automake, or others are in the builder's
+     `PATH'.
+
+     (If you are not using automake, you do not need to use this macro).
+
+`AC_EXEEXT'
+     Either this macro or `AM_EXEEXT' always appears in Cygnus configure
+     files.  Other programs may or may not use one of them.
+
+     This macro looks for the executable suffix used on the host
+     system.  On Unix systems, this is the empty string.  On Windows
+     systems, this is `.exe'.  This macro directs automake to use the
+     executable suffix as appropriate when creating programs.  This
+     macro does not take any arguments.
+
+     The `AC_EXEEXT' form is new, and is part of a Cygnus patch to
+     autoconf to support compiling with Visual C++.  Older programs use
+     `AM_EXEEXT' instead.
+
+     (Programs which do not use automake use neither `AC_EXEEXT' nor
+     `AM_EXEEXT').
+
+`AC_PROG_CC'
+     If you are writing C code, you will normally want to use this
+     macro.  It locates the C compiler to use.  It does not take any
+     arguments.
+
+     However, if this `configure.in' file is for a library which is to
+     be compiled by a cross compiler which may not fully work, then you
+     will not want to use `AC_PROG_CC'.  Instead, you will want to use a
+     variant which does not call the macro `AC_PROG_CC_WORKS'.  Examples
+     can be found in various `configure.in' files for libraries that are
+     compiled with cross compilers, such as libiberty or libgloss.
+     This is essentially a bug in autoconf, and there will probably be
+     a better workaround at some point.
+
+`AC_PROG_CXX'
+     If you are writing C++ code, you will want to use this macro.  It
+     locates the C++ compiler to use.  It does not take any arguments.
+     The same cross compiler comments apply as for `AC_PROG_CC'.
+
+`AM_PROG_LIBTOOL'
+     If you want to build libraries, and you want to permit them to be
+     shared, or you want to link against libraries which were built
+     using libtool, then you will need this macro.  This macro is
+     required in order to use libtool.
+
+     By default, this will cause all libraries to be built as shared
+     libraries.  To prevent this-to change the default-use
+     `AM_DISABLE_SHARED' before `AM_PROG_LIBTOOL'.  The configure
+     options `--enable-shared' and `--disable-shared' may be used to
+     override the default at build time.
+
+`AC_DEFINE(_GNU_SOURCE)'
+     GNU packages should normally include this line before any other
+     feature tests.  This defines the macro `_GNU_SOURCE' when
+     compiling, which directs the libc header files to provide the
+     standard GNU system interfaces including all GNU extensions.  If
+     this macro is not defined, certain GNU extensions may not be
+     available.
+
+`AC_OUTPUT'
+     This macro takes a list of file names which the configure process
+     should produce.  This is normally a list of one or more `Makefile'
+     files in different directories.  If your package lives entirely in
+     a single directory, you would use simply `AC_OUTPUT(Makefile)'.
+     If you also have, for example, a `lib' subdirectory, you would use
+     `AC_OUTPUT(Makefile lib/Makefile)'.
+
+   If you want to use locally defined macros in your `configure.in'
+file, then you will need to write a `acinclude.m4' file which defines
+them (if not using automake, this file is called `aclocal.m4').
+Alternatively, you can put separate macros in an `m4' subdirectory, and
+put `ACLOCAL_AMFLAGS = -I m4' in your `Makefile.am' file so that the
+`aclocal' program will be able to find them.
+
+   The different macro prefixes indicate which tool defines the macro.
+Macros which start with `AC_' are part of autoconf.  Macros which start
+with `AM_' are provided by automake or libtool.
+
+\1f
+File: configure.info,  Node: Write Makefile.am,  Next: Write acconfig.h,  Prev: Write configure.in,  Up: Getting Started
+
+2.2 Write Makefile.am
+=====================
+
+You must write the file `Makefile.am'.  This is an automake input file,
+and the automake manual describes in detail what this file should look
+like.
+
+   The automake commands in `Makefile.am' mostly look like variable
+assignments in a `Makefile'.  automake recognizes special variable
+names, and automatically add make rules to the output as needed.
+
+   There will be one `Makefile.am' file for each directory in your
+package.  For each directory with subdirectories, the `Makefile.am'
+file should contain the line
+     SUBDIRS = DIR DIR ...
+   where each DIR is the name of a subdirectory.
+
+   For each `Makefile.am', there should be a corresponding `Makefile'
+in the `AC_OUTPUT' macro in `configure.in'.
+
+   Every `Makefile.am' written at Cygnus should contain the line
+     AUTOMAKE_OPTIONS = cygnus
+   This puts automake into Cygnus mode.  See the automake manual for
+details.
+
+   You may to include the version number of `automake' that you are
+using on the `AUTOMAKE_OPTIONS' line.  For example,
+     AUTOMAKE_OPTIONS = cygnus 1.3
+   This will prevent users from running an earlier version of
+`automake' and perhaps getting an invalid `Makefile.in'.
+
+   If your package builds a program, then in the directory where that
+program is built you will normally want a line like
+     bin_PROGRAMS = PROGRAM
+   where PROGRAM is the name of the program.  You will then want a line
+like
+     PROGRAM_SOURCES = FILE FILE ...
+   where each FILE is the name of a source file to link into the
+program (e.g., `foo.c').
+
+   If your package builds a library, and you do not want the library to
+ever be built as a shared library, then in the directory where that
+library is built you will normally want a line like
+     lib_LIBRARIES = libNAME.a
+   where `libNAME.a' is the name of the library.  You will then want a
+line like
+     libNAME_a_SOURCES = FILE FILE ...
+   where each FILE is the name of a source file to add to the library.
+
+   If your package builds a library, and you want to permit building the
+library as a shared library, then in the directory where that library is
+built you will normally want a line like
+     lib_LTLIBRARIES = libNAME.la
+   The use of `LTLIBRARIES', and the `.la' extension, indicate a
+library to be built using libtool.  As usual, you will then want a line
+like
+     libNAME_la_SOURCES = FILE FILE ...
+
+   The strings `bin' and `lib' that appear above in `bin_PROGRAMS' and
+`lib_LIBRARIES' are not arbitrary.  They refer to particular
+directories, which may be set by the `--bindir' and `--libdir' options
+to `configure'.  If those options are not used, the default values are
+based on the `--prefix' or `--exec-prefix' options to `configure'.  It
+is possible to use other names if the program or library should be
+installed in some other directory.
+
+   The `Makefile.am' file may also contain almost anything that may
+appear in a normal `Makefile'.  automake also supports many other
+special variables, as well as conditionals.
+
+   See the automake manual for more information.
+
+\1f
+File: configure.info,  Node: Write acconfig.h,  Next: Generate files,  Prev: Write Makefile.am,  Up: Getting Started
+
+2.3 Write acconfig.h
+====================
+
+If you are generating a portability header file, (i.e., you are using
+`AM_CONFIG_HEADER' in `configure.in'), then you will have to write a
+`acconfig.h' file.  It will have to contain the following lines.
+
+     /* Name of package.  */
+     #undef PACKAGE
+
+     /* Version of package.  */
+     #undef VERSION
+
+   This requirement is really a bug in the system, and the requirement
+may be eliminated at some later date.
+
+   The `acconfig.h' file will also similar comment and `#undef' lines
+for any unusual macros in the `configure.in' file, including any macro
+which appears in a `AC_DEFINE' macro.
+
+   In particular, if you are writing a GNU package and therefore include
+`AC_DEFINE(_GNU_SOURCE)' in `configure.in' as suggested above, you will
+need lines like this in `acconfig.h':
+     /* Enable GNU extensions.  */
+     #undef _GNU_SOURCE
+
+   Normally the `autoheader' program will inform you of any such
+requirements by printing an error message when it is run.  However, if
+you do anything particular odd in your `configure.in' file, you will
+have to make sure that the right entries appear in `acconfig.h', since
+otherwise the results of the tests may not be available in the
+`config.h' file which your code will use.
+
+   (Thee `PACKAGE' and `VERSION' lines are not required if you are not
+using automake, and in that case you may not need a `acconfig.h' file
+at all).
+
+\1f
+File: configure.info,  Node: Generate files,  Next: Getting Started Example,  Prev: Write acconfig.h,  Up: Getting Started
+
+2.4 Generate files
+==================
+
+Once you have written `configure.in', `Makefile.am', `acconfig.h', and
+possibly `acinclude.m4', you must use autoconf and automake programs to
+produce the first versions of the generated files.  This is done by
+executing the following sequence of commands.
+
+     aclocal
+     autoconf
+     autoheader
+     automake
+
+   The `aclocal' and `automake' commands are part of the automake
+package, and the `autoconf' and `autoheader' commands are part of the
+autoconf package.
+
+   If you are using a `m4' subdirectory for your macros, you will need
+to use the `-I m4' option when you run `aclocal'.
+
+   If you are not using the Cygnus tree, use the `-a' option when
+running `automake' command in order to copy the required support files
+into your source directory.
+
+   If you are using libtool, you must build and install the libtool
+package with the same `--prefix' and `--exec-prefix' options as you
+used with the autoconf and automake packages.  You must do this before
+running any of the above commands.  If you are not using the Cygnus
+tree, you will need to run the `libtoolize' program to copy the libtool
+support files into your directory.
+
+   Once you have managed to run these commands without getting any
+errors, you should create a new empty directory, and run the `configure'
+script which will have been created by `autoconf' with the
+`--enable-maintainer-mode' option.  This will give you a set of
+Makefiles which will include rules to automatically rebuild all the
+generated files.
+
+   After doing that, whenever you have changed some of the input files
+and want to regenerated the other files, go to your object directory
+and run `make'.  Doing this is more reliable than trying to rebuild the
+files manually, because there are complex order dependencies and it is
+easy to forget something.
+
+\1f
+File: configure.info,  Node: Getting Started Example,  Prev: Generate files,  Up: Getting Started
+
+2.5 Example
+===========
+
+Let's consider a trivial example.
+
+   Suppose we want to write a simple version of `touch'.  Our program,
+which we will call `poke', will take a single file name argument, and
+use the `utime' system call to set the modification and access times of
+the file to the current time.  We want this program to be highly
+portable.
+
+   We'll first see what this looks like without using autoconf and
+automake, and then see what it looks like with them.
+
+* Menu:
+
+* Getting Started Example 1::          First Try.
+* Getting Started Example 2::          Second Try.
+* Getting Started Example 3::          Third Try.
+* Generate Files in Example::          Generate Files.
+
+\1f
+File: configure.info,  Node: Getting Started Example 1,  Next: Getting Started Example 2,  Up: Getting Started Example
+
+2.5.1 First Try
+---------------
+
+Here is our first try at `poke.c'.  Note that we've written it without
+ANSI/ISO C prototypes, since we want it to be highly portable.
+
+     #include <stdio.h>
+     #include <stdlib.h>
+     #include <sys/types.h>
+     #include <utime.h>
+
+     int
+     main (argc, argv)
+          int argc;
+          char **argv;
+     {
+       if (argc != 2)
+         {
+           fprintf (stderr, "Usage: poke file\n");
+           exit (1);
+         }
+
+       if (utime (argv[1], NULL) < 0)
+         {
+           perror ("utime");
+           exit (1);
+         }
+
+       exit (0);
+     }
+
+   We also write a simple `Makefile'.
+
+     CC = gcc
+     CFLAGS = -g -O2
+
+     all: poke
+
+     poke: poke.o
+       $(CC) -o poke $(CFLAGS) $(LDFLAGS) poke.o
+
+   So far, so good.
+
+   Unfortunately, there are a few problems.
+
+   On older Unix systems derived from BSD 4.3, the `utime' system call
+does not accept a second argument of `NULL'.  On those systems, we need
+to pass a pointer to `struct utimbuf' structure.  Unfortunately, even
+older systems don't define that structure; on those systems, we need to
+pass an array of two `long' values.
+
+   The header file `stdlib.h' was invented by ANSI C, and older systems
+don't have a copy.  We included it above to get a declaration of `exit'.
+
+   We can find some of these portability problems by running
+`autoscan', which will create a `configure.scan' file which we can use
+as a prototype for our `configure.in' file.  I won't show the output,
+but it will notice the potential problems with `utime' and `stdlib.h'.
+
+   In our `Makefile', we don't provide any way to install the program.
+This doesn't matter much for such a simple example, but a real program
+will need an `install' target.  For that matter, we will also want a
+`clean' target.
+
+\1f
+File: configure.info,  Node: Getting Started Example 2,  Next: Getting Started Example 3,  Prev: Getting Started Example 1,  Up: Getting Started Example
+
+2.5.2 Second Try
+----------------
+
+Here is our second try at this program.
+
+   We modify `poke.c' to use preprocessor macros to control what
+features are available.  (I've cheated a bit by using the same macro
+names which autoconf will use).
+
+     #include <stdio.h>
+
+     #ifdef STDC_HEADERS
+     #include <stdlib.h>
+     #endif
+
+     #include <sys/types.h>
+
+     #ifdef HAVE_UTIME_H
+     #include <utime.h>
+     #endif
+
+     #ifndef HAVE_UTIME_NULL
+
+     #include <time.h>
+
+     #ifndef HAVE_STRUCT_UTIMBUF
+
+     struct utimbuf
+     {
+       long actime;
+       long modtime;
+     };
+
+     #endif
+
+     static int
+     utime_now (file)
+          char *file;
+     {
+       struct utimbuf now;
+
+       now.actime = now.modtime = time (NULL);
+       return utime (file, &now);
+     }
+
+     #define utime(f, p) utime_now (f)
+
+     #endif /* HAVE_UTIME_NULL  */
+
+     int
+     main (argc, argv)
+          int argc;
+          char **argv;
+     {
+       if (argc != 2)
+         {
+           fprintf (stderr, "Usage: poke file\n");
+           exit (1);
+         }
+
+       if (utime (argv[1], NULL) < 0)
+         {
+           perror ("utime");
+           exit (1);
+         }
+
+       exit (0);
+     }
+
+   Here is the associated `Makefile'.  We've added support for the
+preprocessor flags we use.  We've also added `install' and `clean'
+targets.
+
+     # Set this to your installation directory.
+     bindir = /usr/local/bin
+
+     # Uncomment this if you have the standard ANSI/ISO C header files.
+     # STDC_HDRS = -DSTDC_HEADERS
+
+     # Uncomment this if you have utime.h.
+     # UTIME_H = -DHAVE_UTIME_H
+
+     # Uncomment this if utime (FILE, NULL) works on your system.
+     # UTIME_NULL = -DHAVE_UTIME_NULL
+
+     # Uncomment this if struct utimbuf is defined in utime.h.
+     # UTIMBUF = -DHAVE_STRUCT_UTIMBUF
+
+     CC = gcc
+     CFLAGS = -g -O2
+
+     ALL_CFLAGS = $(STDC_HDRS) $(UTIME_H) $(UTIME_NULL) $(UTIMBUF) $(CFLAGS)
+
+     all: poke
+
+     poke: poke.o
+       $(CC) -o poke $(ALL_CFLAGS) $(LDFLAGS) poke.o
+
+     .c.o:
+       $(CC) -c $(ALL_CFLAGS) poke.c
+
+     install: poke
+       cp poke $(bindir)/poke
+
+     clean:
+       rm poke poke.o
+
+   Some problems with this approach should be clear.
+
+   Users who want to compile poke will have to know how `utime' works
+on their systems, so that they can uncomment the `Makefile' correctly.
+
+   The installation is done using `cp', but many systems have an
+`install' program which may be used, and which supports optional
+features such as stripping debugging information out of the installed
+binary.
+
+   The use of `Makefile' variables like `CC', `CFLAGS' and `LDFLAGS'
+follows the requirements of the GNU standards.  This is convenient for
+all packages, since it reduces surprises for users.  However, it is
+easy to get the details wrong, and wind up with a slightly nonstandard
+distribution.
+
+\1f
+File: configure.info,  Node: Getting Started Example 3,  Next: Generate Files in Example,  Prev: Getting Started Example 2,  Up: Getting Started Example
+
+2.5.3 Third Try
+---------------
+
+For our third try at this program, we will write a `configure.in'
+script to discover the configuration features on the host system, rather
+than requiring the user to edit the `Makefile'.  We will also write a
+`Makefile.am' rather than a `Makefile'.
+
+   The only change to `poke.c' is to add a line at the start of the
+file:
+     #include "config.h"
+
+   The new `configure.in' file is as follows.
+
+     AC_INIT(poke.c)
+     AM_INIT_AUTOMAKE(poke, 1.0)
+     AM_CONFIG_HEADER(config.h:config.in)
+     AC_PROG_CC
+     AC_HEADER_STDC
+     AC_CHECK_HEADERS(utime.h)
+     AC_EGREP_HEADER(utimbuf, utime.h, AC_DEFINE(HAVE_STRUCT_UTIMBUF))
+     AC_FUNC_UTIME_NULL
+     AC_OUTPUT(Makefile)
+
+   The first four macros in this file, and the last one, were described
+above; see *Note Write configure.in::.  If we omit these macros, then
+when we run `automake' we will get a reminder that we need them.
+
+   The other macros are standard autoconf macros.
+
+`AC_HEADER_STDC'
+     Check for standard C headers.
+
+`AC_CHECK_HEADERS'
+     Check whether a particular header file exists.
+
+`AC_EGREP_HEADER'
+     Check for a particular string in a particular header file, in this
+     case checking for `utimbuf' in `utime.h'.
+
+`AC_FUNC_UTIME_NULL'
+     Check whether `utime' accepts a NULL second argument to set the
+     file change time to the current time.
+
+   See the autoconf manual for a more complete description.
+
+   The new `Makefile.am' file is as follows.  Note how simple this is
+compared to our earlier `Makefile'.
+
+     bin_PROGRAMS = poke
+
+     poke_SOURCES = poke.c
+
+   This means that we should build a single program name `poke'.  It
+should be installed in the binary directory, which we called `bindir'
+earlier.  The program `poke' is built from the source file `poke.c'.
+
+   We must also write a `acconfig.h' file.  Besides `PACKAGE' and
+`VERSION', which must be mentioned for all packages which use automake,
+we must include `HAVE_STRUCT_UTIMBUF', since we mentioned it in an
+`AC_DEFINE'.
+
+     /* Name of package.  */
+     #undef PACKAGE
+
+     /* Version of package.  */
+     #undef VERSION
+
+     /* Whether utime.h defines struct utimbuf.  */
+     #undef HAVE_STRUCT_UTIMBUF
+
+\1f
+File: configure.info,  Node: Generate Files in Example,  Prev: Getting Started Example 3,  Up: Getting Started Example
+
+2.5.4 Generate Files
+--------------------
+
+We must now generate the other files, using the following commands.
+
+     aclocal
+     autoconf
+     autoheader
+     automake
+
+   When we run `autoheader', it will remind us of any macros we forgot
+to add to `acconfig.h'.
+
+   When we run `automake', it will want to add some files to our
+distribution.  It will add them automatically if we use the
+`--add-missing' option.
+
+   By default, `automake' will run in GNU mode, which means that it
+will want us to create certain additional files; as of this writing, it
+will want `NEWS', `README', `AUTHORS', and `ChangeLog', all of which
+are files which should appear in a standard GNU distribution.  We can
+either add those files, or run `automake' with the `--foreign' option.
+
+   Running these tools will generate the following files, all of which
+are described in the next chapter.
+
+   * `aclocal.m4'
+
+   * `configure'
+
+   * `config.in'
+
+   * `Makefile.in'
+
+   * `stamp-h.in'
+
+\1f
+File: configure.info,  Node: Files,  Next: Configuration Names,  Prev: Getting Started,  Up: Top
+
+3 Files
+*******
+
+As was seen in the previous chapter, the GNU configure and build system
+uses a number of different files.  The developer must write a few files.
+The others are generated by various tools.
+
+   The system is rather flexible, and can be used in many different
+ways.  In describing the files that it uses, I will describe the common
+case, and mention some other cases that may arise.
+
+* Menu:
+
+* Developer Files::            Developer Files.
+* Build Files::                        Build Files.
+* Support Files::              Support Files.
+
+\1f
+File: configure.info,  Node: Developer Files,  Next: Build Files,  Up: Files
+
+3.1 Developer Files
+===================
+
+This section describes the files written or generated by the developer
+of a package.
+
+* Menu:
+
+* Developer Files Picture::    Developer Files Picture.
+* Written Developer Files::    Written Developer Files.
+* Generated Developer Files::  Generated Developer Files.
+
+\1f
+File: configure.info,  Node: Developer Files Picture,  Next: Written Developer Files,  Up: Developer Files
+
+3.1.1 Developer Files Picture
+-----------------------------
+
+Here is a picture of the files which are written by the developer, the
+generated files which would be included with a complete source
+distribution, and the tools which create those files.  The file names
+are plain text and the tool names are enclosed by `*' characters (e.g.,
+`autoheader' is the name of a tool, not the name of a file).
+
+   acconfig.h       configure.in                 Makefile.am
+       |                |                           |
+       |  --------------+----------------------     |
+       |  |             |                     |     |
+       v  v             |    acinclude.m4     |     |
+   *autoheader*         |         |           v     v
+       |                |         v      --->*automake*
+       v                |--->*aclocal*   |       |
+   config.in            |         |      |       v
+                        |         v      |   Makefile.in
+                        |    aclocal.m4---
+                        |     |
+                        v     v
+                       *autoconf*
+                           |
+                           v
+                       configure
+
+\1f
+File: configure.info,  Node: Written Developer Files,  Next: Generated Developer Files,  Prev: Developer Files Picture,  Up: Developer Files
+
+3.1.2 Written Developer Files
+-----------------------------
+
+The following files would be written by the developer.
+
+`configure.in'
+     This is the configuration script.  This script contains
+     invocations of autoconf macros.  It may also contain ordinary
+     shell script code.  This file will contain feature tests for
+     portability issues.  The last thing in the file will normally be
+     an `AC_OUTPUT' macro listing which files to create when the
+     builder runs the configure script.  This file is always required
+     when using the GNU configure system.  *Note Write configure.in::.
+
+`Makefile.am'
+     This is the automake input file.  It describes how the code should
+     be built.  It consists of definitions of automake variables.  It
+     may also contain ordinary Makefile targets.  This file is only
+     needed when using automake (newer tools normally use automake, but
+     there are still older tools which have not been converted, in
+     which the developer writes `Makefile.in' directly).  *Note Write
+     Makefile.am::.
+
+`acconfig.h'
+     When the configure script creates a portability header file, by
+     using `AM_CONFIG_HEADER' (or, if not using automake,
+     `AC_CONFIG_HEADER'), this file is used to describe macros which are
+     not recognized by the `autoheader' command.  This is normally a
+     fairly uninteresting file, consisting of a collection of `#undef'
+     lines with comments.  Normally any call to `AC_DEFINE' in
+     `configure.in' will require a line in this file. *Note Write
+     acconfig.h::.
+
+`acinclude.m4'
+     This file is not always required.  It defines local autoconf
+     macros.  These macros may then be used in `configure.in'.  If you
+     don't need any local autoconf macros, then you don't need this
+     file at all.  In fact, in general, you never need local autoconf
+     macros, since you can put everything in `configure.in', but
+     sometimes a local macro is convenient.
+
+     Newer tools may omit `acinclude.m4', and instead use a
+     subdirectory, typically named `m4', and define `ACLOCAL_AMFLAGS =
+     -I m4' in `Makefile.am' to force `aclocal' to look there for macro
+     definitions.  The macro definitions are then placed in separate
+     files in that directory.
+
+     The `acinclude.m4' file is only used when using automake; in older
+     tools, the developer writes `aclocal.m4' directly, if it is needed.
+
+\1f
+File: configure.info,  Node: Generated Developer Files,  Prev: Written Developer Files,  Up: Developer Files
+
+3.1.3 Generated Developer Files
+-------------------------------
+
+The following files would be generated by the developer.
+
+   When using automake, these files are normally not generated manually
+after the first time.  Instead, the generated `Makefile' contains rules
+to automatically rebuild the files as required.  When
+`AM_MAINTAINER_MODE' is used in `configure.in' (the normal case in
+Cygnus code), the automatic rebuilding rules will only be defined if
+you configure using the `--enable-maintainer-mode' option.
+
+   When using automatic rebuilding, it is important to ensure that all
+the various tools have been built and installed on your `PATH'.  Using
+automatic rebuilding is highly recommended, so much so that I'm not
+going to explain what you have to do if you don't use it.
+
+`configure'
+     This is the configure script which will be run when building the
+     package.  This is generated by `autoconf' from `configure.in' and
+     `aclocal.m4'.  This is a shell script.
+
+`Makefile.in'
+     This is the file which the configure script will turn into the
+     `Makefile' at build time.  This file is generated by `automake'
+     from `Makefile.am'.  If you aren't using automake, you must write
+     this file yourself.  This file is pretty much a normal `Makefile',
+     with some configure substitutions for certain variables.
+
+`aclocal.m4'
+     This file is created by the `aclocal' program, based on the
+     contents of `configure.in' and `acinclude.m4' (or, as noted in the
+     description of `acinclude.m4' above, on the contents of an `m4'
+     subdirectory).  This file contains definitions of autoconf macros
+     which `autoconf' will use when generating the file `configure'.
+     These autoconf macros may be defined by you in `acinclude.m4' or
+     they may be defined by other packages such as automake, libtool or
+     gettext.  If you aren't using automake, you will normally write
+     this file yourself; in that case, if `configure.in' uses only
+     standard autoconf macros, this file will not be needed at all.
+
+`config.in'
+     This file is created by `autoheader' based on `acconfig.h' and
+     `configure.in'.  At build time, the configure script will define
+     some of the macros in it to create `config.h', which may then be
+     included by your program.  This permits your C code to use
+     preprocessor conditionals to change its behaviour based on the
+     characteristics of the host system.  This file may also be called
+     `config.h.in'.
+
+`stamp.h-in'
+     This rather uninteresting file, which I omitted from the picture,
+     is generated by `automake'.  It always contains the string
+     `timestamp'.  It is used as a timestamp file indicating whether
+     `config.in' is up to date.  Using a timestamp file means that
+     `config.in' can be marked as up to date without actually changing
+     its modification time.  This is useful since `config.in' depends
+     upon `configure.in', but it is easy to change `configure.in' in a
+     way which does not affect `config.in'.
+
+\1f
+File: configure.info,  Node: Build Files,  Next: Support Files,  Prev: Developer Files,  Up: Files
+
+3.2 Build Files
+===============
+
+This section describes the files which are created at configure and
+build time.  These are the files which somebody who builds the package
+will see.
+
+   Of course, the developer will also build the package.  The
+distinction between developer files and build files is not that the
+developer does not see the build files, but that somebody who only
+builds the package does not have to worry about the developer files.
+
+* Menu:
+
+* Build Files Picture::                Build Files Picture.
+* Build Files Description::    Build Files Description.
+
+\1f
+File: configure.info,  Node: Build Files Picture,  Next: Build Files Description,  Up: Build Files
+
+3.2.1 Build Files Picture
+-------------------------
+
+Here is a picture of the files which will be created at build time.
+`config.status' is both a created file and a shell script which is run
+to create other files, and the picture attempts to show that.
+
+   config.in        *configure*      Makefile.in
+      |                  |               |
+      |                  v               |
+      |             config.status        |
+      |                  |               |
+   *config.status*<======+==========>*config.status*
+      |                                  |
+      v                                  v
+   config.h                          Makefile
+
+\1f
+File: configure.info,  Node: Build Files Description,  Prev: Build Files Picture,  Up: Build Files
+
+3.2.2 Build Files Description
+-----------------------------
+
+This is a description of the files which are created at build time.
+
+`config.status'
+     The first step in building a package is to run the `configure'
+     script.  The `configure' script will create the file
+     `config.status', which is itself a shell script.  When you first
+     run `configure', it will automatically run `config.status'.  An
+     `Makefile' derived from an automake generated `Makefile.in' will
+     contain rules to automatically run `config.status' again when
+     necessary to recreate certain files if their inputs change.
+
+`Makefile'
+     This is the file which make will read to build the program.  The
+     `config.status' script will transform `Makefile.in' into
+     `Makefile'.
+
+`config.h'
+     This file defines C preprocessor macros which C code can use to
+     adjust its behaviour on different systems.  The `config.status'
+     script will transform `config.in' into `config.h'.
+
+`config.cache'
+     This file did not fit neatly into the picture, and I omitted it.
+     It is used by the `configure' script to cache results between
+     runs.  This can be an important speedup.  If you modify
+     `configure.in' in such a way that the results of old tests should
+     change (perhaps you have added a new library to `LDFLAGS'), then
+     you will have to remove `config.cache' to force the tests to be
+     rerun.
+
+     The autoconf manual explains how to set up a site specific cache
+     file.  This can speed up running `configure' scripts on your
+     system.
+
+`stamp.h'
+     This file, which I omitted from the picture, is similar to
+     `stamp-h.in'.  It is used as a timestamp file indicating whether
+     `config.h' is up to date.  This is useful since `config.h' depends
+     upon `config.status', but it is easy for `config.status' to change
+     in a way which does not affect `config.h'.
+
+\1f
+File: configure.info,  Node: Support Files,  Prev: Build Files,  Up: Files
+
+3.3 Support Files
+=================
+
+The GNU configure and build system requires several support files to be
+included with your distribution.  You do not normally need to concern
+yourself with these.  If you are using the Cygnus tree, most are already
+present.  Otherwise, they will be installed with your source by
+`automake' (with the `--add-missing' option) and `libtoolize'.
+
+   You don't have to put the support files in the top level directory.
+You can put them in a subdirectory, and use the `AC_CONFIG_AUX_DIR'
+macro in `configure.in' to tell `automake' and the `configure' script
+where they are.
+
+   In this section, I describe the support files, so that you can know
+what they are and why they are there.
+
+`ABOUT-NLS'
+     Added by automake if you are using gettext.  This is a
+     documentation file about the gettext project.
+
+`ansi2knr.c'
+     Used by an automake generated `Makefile' if you put `ansi2knr' in
+     `AUTOMAKE_OPTIONS' in `Makefile.am'.  This permits compiling ANSI
+     C code with a K&R C compiler.
+
+`ansi2knr.1'
+     The man page which goes with `ansi2knr.c'.
+
+`config.guess'
+     A shell script which determines the configuration name for the
+     system on which it is run.
+
+`config.sub'
+     A shell script which canonicalizes a configuration name entered by
+     a user.
+
+`elisp-comp'
+     Used to compile Emacs LISP files.
+
+`install-sh'
+     A shell script which installs a program.  This is used if the
+     configure script can not find an install binary.
+
+`ltconfig'
+     Used by libtool.  This is a shell script which configures libtool
+     for the particular system on which it is used.
+
+`ltmain.sh'
+     Used by libtool.  This is the actual libtool script which is used,
+     after it is configured by `ltconfig' to build a library.
+
+`mdate-sh'
+     A shell script used by an automake generated `Makefile' to pretty
+     print the modification time of a file.  This is used to maintain
+     version numbers for texinfo files.
+
+`missing'
+     A shell script used if some tool is missing entirely.  This is
+     used by an automake generated `Makefile' to avoid certain sorts of
+     timestamp problems.
+
+`mkinstalldirs'
+     A shell script which creates a directory, including all parent
+     directories.  This is used by an automake generated `Makefile'
+     during installation.
+
+`texinfo.tex'
+     Required if you have any texinfo files.  This is used when
+     converting Texinfo files into DVI using `texi2dvi' and TeX.
+
+`ylwrap'
+     A shell script used by an automake generated `Makefile' to run
+     programs like `bison', `yacc', `flex', and `lex'.  These programs
+     default to producing output files with a fixed name, and the
+     `ylwrap' script runs them in a subdirectory to avoid file name
+     conflicts when using a parallel make program.
+
+\1f
+File: configure.info,  Node: Configuration Names,  Next: Cross Compilation Tools,  Prev: Files,  Up: Top
+
+4 Configuration Names
+*********************
+
+The GNU configure system names all systems using a "configuration
+name".  All such names used to be triplets (they may now contain four
+parts in certain cases), and the term "configuration triplet" is still
+seen.
+
+* Menu:
+
+* Configuration Name Definition::      Configuration Name Definition.
+* Using Configuration Names::          Using Configuration Names.
+
+\1f
+File: configure.info,  Node: Configuration Name Definition,  Next: Using Configuration Names,  Up: Configuration Names
+
+4.1 Configuration Name Definition
+=================================
+
+This is a string of the form CPU-MANUFACTURER-OPERATING_SYSTEM.  In
+some cases, this is extended to a four part form:
+CPU-MANUFACTURER-KERNEL-OPERATING_SYSTEM.
+
+   When using a configuration name in a configure option, it is normally
+not necessary to specify an entire name.  In particular, the
+MANUFACTURER field is often omitted, leading to strings such as
+`i386-linux' or `sparc-sunos'.  The shell script `config.sub' will
+translate these shortened strings into the canonical form.  autoconf
+will arrange for `config.sub' to be run automatically when it is needed.
+
+   The fields of a configuration name are as follows:
+
+CPU
+     The type of processor.  This is typically something like `i386' or
+     `sparc'.  More specific variants are used as well, such as
+     `mipsel' to indicate a little endian MIPS processor.
+
+MANUFACTURER
+     A somewhat freeform field which indicates the manufacturer of the
+     system.  This is often simply `unknown'.  Other common strings are
+     `pc' for an IBM PC compatible system, or the name of a workstation
+     vendor, such as `sun'.
+
+OPERATING_SYSTEM
+     The name of the operating system which is run on the system.  This
+     will be something like `solaris2.5' or `irix6.3'.  There is no
+     particular restriction on the version number, and strings like
+     `aix4.1.4.0' are seen.  For an embedded system, which has no
+     operating system, this field normally indicates the type of object
+     file format, such as `elf' or `coff'.
+
+KERNEL
+     This is used mainly for GNU/Linux.  A typical GNU/Linux
+     configuration name is `i586-pc-linux-gnulibc1'.  In this case the
+     kernel, `linux', is separated from the operating system,
+     `gnulibc1'.
+
+   The shell script `config.guess' will normally print the correct
+configuration name for the system on which it is run.  It does by
+running `uname' and by examining other characteristics of the system.
+
+   Because `config.guess' can normally determine the configuration name
+for a machine, it is normally only necessary to specify a configuration
+name when building a cross-compiler or when building using a
+cross-compiler.
+
+\1f
+File: configure.info,  Node: Using Configuration Names,  Prev: Configuration Name Definition,  Up: Configuration Names
+
+4.2 Using Configuration Names
+=============================
+
+A configure script will sometimes have to make a decision based on a
+configuration name.  You will need to do this if you have to compile
+code differently based on something which can not be tested using a
+standard autoconf feature test.
+
+   It is normally better to test for particular features, rather than to
+test for a particular system.  This is because as Unix evolves,
+different systems copy features from one another.  Even if you need to
+determine whether the feature is supported based on a configuration
+name, you should define a macro which describes the feature, rather than
+defining a macro which describes the particular system you are on.
+
+   Testing for a particular system is normally done using a case
+statement in `configure.in'.  The case statement might look something
+like the following, assuming that `host' is a shell variable holding a
+canonical configuration name (which will be the case if `configure.in'
+uses the `AC_CANONICAL_HOST' or `AC_CANONICAL_SYSTEM' macro).
+
+     case "${host}" in
+     i[3-7]86-*-linux-gnu*) do something ;;
+     sparc*-sun-solaris2.[56789]*) do something ;;
+     sparc*-sun-solaris*) do something ;;
+     mips*-*-elf*) do something ;;
+     esac
+
+   It is particularly important to use `*' after the operating system
+field, in order to match the version number which will be generated by
+`config.guess'.
+
+   In most cases you must be careful to match a range of processor
+types.  For most processor families, a trailing `*' suffices, as in
+`mips*' above.  For the i386 family, something along the lines of
+`i[3-7]86' suffices at present.  For the m68k family, you will need
+something like `m68*'.  Of course, if you do not need to match on the
+processor, it is simpler to just replace the entire field by a `*', as
+in `*-*-irix*'.
+
+\1f
+File: configure.info,  Node: Cross Compilation Tools,  Next: Canadian Cross,  Prev: Configuration Names,  Up: Top
+
+5 Cross Compilation Tools
+*************************
+
+The GNU configure and build system can be used to build "cross
+compilation" tools.  A cross compilation tool is a tool which runs on
+one system and produces code which runs on another system.
+
+* Menu:
+
+* Cross Compilation Concepts::         Cross Compilation Concepts.
+* Host and Target::                    Host and Target.
+* Using the Host Type::                        Using the Host Type.
+* Specifying the Target::              Specifying the Target.
+* Using the Target Type::              Using the Target Type.
+* Cross Tools in the Cygnus Tree::     Cross Tools in the Cygnus Tree
+
+\1f
+File: configure.info,  Node: Cross Compilation Concepts,  Next: Host and Target,  Up: Cross Compilation Tools
+
+5.1 Cross Compilation Concepts
+==============================
+
+A compiler which produces programs which run on a different system is a
+cross compilation compiler, or simply a "cross compiler".  Similarly,
+we speak of cross assemblers, cross linkers, etc.
+
+   In the normal case, a compiler produces code which runs on the same
+system as the one on which the compiler runs.  When it is necessary to
+distinguish this case from the cross compilation case, such a compiler
+is called a "native compiler".  Similarly, we speak of native
+assemblers, etc.
+
+   Although the debugger is not strictly speaking a compilation tool,
+it is nevertheless meaningful to speak of a cross debugger: a debugger
+which is used to debug code which runs on another system.  Everything
+that is said below about configuring cross compilation tools applies to
+the debugger as well.
+
+\1f
+File: configure.info,  Node: Host and Target,  Next: Using the Host Type,  Prev: Cross Compilation Concepts,  Up: Cross Compilation Tools
+
+5.2 Host and Target
+===================
+
+When building cross compilation tools, there are two different systems
+involved: the system on which the tools will run, and the system for
+which the tools generate code.
+
+   The system on which the tools will run is called the "host" system.
+
+   The system for which the tools generate code is called the "target"
+system.
+
+   For example, suppose you have a compiler which runs on a GNU/Linux
+system and generates ELF programs for a MIPS embedded system.  In this
+case the GNU/Linux system is the host, and the MIPS ELF system is the
+target.  Such a compiler could be called a GNU/Linux cross MIPS ELF
+compiler, or, equivalently, a `i386-linux-gnu' cross `mips-elf'
+compiler.
+
+   Naturally, most programs are not cross compilation tools.  For those
+programs, it does not make sense to speak of a target.  It only makes
+sense to speak of a target for tools like `gcc' or the `binutils' which
+actually produce running code.  For example, it does not make sense to
+speak of the target of a tool like `bison' or `make'.
+
+   Most cross compilation tools can also serve as native tools.  For a
+native compilation tool, it is still meaningful to speak of a target.
+For a native tool, the target is the same as the host.  For example, for
+a GNU/Linux native compiler, the host is GNU/Linux, and the target is
+also GNU/Linux.
+
+\1f
+File: configure.info,  Node: Using the Host Type,  Next: Specifying the Target,  Prev: Host and Target,  Up: Cross Compilation Tools
+
+5.3 Using the Host Type
+=======================
+
+In almost all cases the host system is the system on which you run the
+`configure' script, and on which you build the tools (for the case when
+they differ, *note Canadian Cross::).
+
+   If your configure script needs to know the configuration name of the
+host system, and the package is not a cross compilation tool and
+therefore does not have a target, put `AC_CANONICAL_HOST' in
+`configure.in'.  This macro will arrange to define a few shell
+variables when the `configure' script is run.
+
+`host'
+     The canonical configuration name of the host.  This will normally
+     be determined by running the `config.guess' shell script, although
+     the user is permitted to override this by using an explicit
+     `--host' option.
+
+`host_alias'
+     In the unusual case that the user used an explicit `--host' option,
+     this will be the argument to `--host'.  In the normal case, this
+     will be the same as the `host' variable.
+
+`host_cpu'
+`host_vendor'
+`host_os'
+     The first three parts of the canonical configuration name.
+
+   The shell variables may be used by putting shell code in
+`configure.in'.  For an example, see *Note Using Configuration Names::.
+
+\1f
+File: configure.info,  Node: Specifying the Target,  Next: Using the Target Type,  Prev: Using the Host Type,  Up: Cross Compilation Tools
+
+5.4 Specifying the Target
+=========================
+
+By default, the `configure' script will assume that the target is the
+same as the host.  This is the more common case; for example, it leads
+to a native compiler rather than a cross compiler.
+
+   If you want to build a cross compilation tool, you must specify the
+target explicitly by using the `--target' option when you run
+`configure'.  The argument to `--target' is the configuration name of
+the system for which you wish to generate code.  *Note Configuration
+Names::.
+
+   For example, to build tools which generate code for a MIPS ELF
+embedded system, you would use `--target mips-elf'.
+
+\1f
+File: configure.info,  Node: Using the Target Type,  Next: Cross Tools in the Cygnus Tree,  Prev: Specifying the Target,  Up: Cross Compilation Tools
+
+5.5 Using the Target Type
+=========================
+
+When writing `configure.in' for a cross compilation tool, you will need
+to use information about the target.  To do this, put
+`AC_CANONICAL_SYSTEM' in `configure.in'.
+
+   `AC_CANONICAL_SYSTEM' will look for a `--target' option and
+canonicalize it using the `config.sub' shell script.  It will also run
+`AC_CANONICAL_HOST' (*note Using the Host Type::).
+
+   The target type will be recorded in the following shell variables.
+Note that the host versions of these variables will also be defined by
+`AC_CANONICAL_HOST'.
+
+`target'
+     The canonical configuration name of the target.
+
+`target_alias'
+     The argument to the `--target' option.  If the user did not specify
+     a `--target' option, this will be the same as `host_alias'.
+
+`target_cpu'
+`target_vendor'
+`target_os'
+     The first three parts of the canonical target configuration name.
+
+   Note that if `host' and `target' are the same string, you can assume
+a native configuration.  If they are different, you can assume a cross
+configuration.
+
+   It is arguably possible for `host' and `target' to represent the
+same system, but for the strings to not be identical.  For example, if
+`config.guess' returns `sparc-sun-sunos4.1.4', and somebody configures
+with `--target sparc-sun-sunos4.1', then the slight differences between
+the two versions of SunOS may be unimportant for your tool.  However,
+in the general case it can be quite difficult to determine whether the
+differences between two configuration names are significant or not.
+Therefore, by convention, if the user specifies a `--target' option
+without specifying a `--host' option, it is assumed that the user wants
+to configure a cross compilation tool.
+
+   The variables `target' and `target_alias' should be handled
+differently.
+
+   In general, whenever the user may actually see a string,
+`target_alias' should be used.  This includes anything which may appear
+in the file system, such as a directory name or part of a tool name.
+It also includes any tool output, unless it is clearly labelled as the
+canonical target configuration name.  This permits the user to use the
+`--target' option to specify how the tool will appear to the outside
+world.
+
+   On the other hand, when checking for characteristics of the target
+system, `target' should be used.  This is because a wide variety of
+`--target' options may map into the same canonical configuration name.
+You should not attempt to duplicate the canonicalization done by
+`config.sub' in your own code.
+
+   By convention, cross tools are installed with a prefix of the
+argument used with the `--target' option, also known as `target_alias'
+(*note Using the Target Type::).  If the user does not use the
+`--target' option, and thus is building a native tool, no prefix is
+used.
+
+   For example, if gcc is configured with `--target mips-elf', then the
+installed binary will be named `mips-elf-gcc'.  If gcc is configured
+without a `--target' option, then the installed binary will be named
+`gcc'.
+
+   The autoconf macro `AC_ARG_PROGRAM' will handle this for you.  If
+you are using automake, no more need be done; the programs will
+automatically be installed with the correct prefixes.  Otherwise, see
+the autoconf documentation for `AC_ARG_PROGRAM'.
+
+\1f
+File: configure.info,  Node: Cross Tools in the Cygnus Tree,  Prev: Using the Target Type,  Up: Cross Compilation Tools
+
+5.6 Cross Tools in the Cygnus Tree
+==================================
+
+The Cygnus tree is used for various packages including gdb, the GNU
+binutils, and egcs.  It is also, of course, used for Cygnus releases.
+
+   In the Cygnus tree, the top level `configure' script uses the old
+Cygnus configure system, not autoconf.  The top level `Makefile.in' is
+written to build packages based on what is in the source tree, and
+supports building a large number of tools in a single
+`configure'/`make' step.
+
+   The Cygnus tree may be configured with a `--target' option.  The
+`--target' option applies recursively to every subdirectory, and
+permits building an entire set of cross tools at once.
+
+* Menu:
+
+* Host and Target Libraries::          Host and Target Libraries.
+* Target Library Configure Scripts::   Target Library Configure Scripts.
+* Make Targets in Cygnus Tree::         Make Targets in Cygnus Tree.
+* Target libiberty::                   Target libiberty
+
+\1f
+File: configure.info,  Node: Host and Target Libraries,  Next: Target Library Configure Scripts,  Up: Cross Tools in the Cygnus Tree
+
+5.6.1 Host and Target Libraries
+-------------------------------
+
+The Cygnus tree distinguishes host libraries from target libraries.
+
+   Host libraries are built with the compiler used to build the programs
+which run on the host, which is called the host compiler.  This includes
+libraries such as `bfd' and `tcl'.  These libraries are built with the
+host compiler, and are linked into programs like the binutils or gcc
+which run on the host.
+
+   Target libraries are built with the target compiler.  If gcc is
+present in the source tree, then the target compiler is the gcc that is
+built using the host compiler.  Target libraries are libraries such as
+`newlib' and `libstdc++'.  These libraries are not linked into the host
+programs, but are instead made available for use with programs built
+with the target compiler.
+
+   For the rest of this section, assume that gcc is present in the
+source tree, so that it will be used to build the target libraries.
+
+   There is a complication here.  The configure process needs to know
+which compiler you are going to use to build a tool; otherwise, the
+feature tests will not work correctly.  The Cygnus tree handles this by
+not configuring the target libraries until the target compiler is
+built.  In order to permit everything to build using a single
+`configure'/`make', the configuration of the target libraries is
+actually triggered during the make step.
+
+   When the target libraries are configured, the `--target' option is
+not used.  Instead, the `--host' option is used with the argument of
+the `--target' option for the overall configuration.  If no `--target'
+option was used for the overall configuration, the `--host' option will
+be passed with the output of the `config.guess' shell script.  Any
+`--build' option is passed down unchanged.
+
+   This translation of configuration options is done because since the
+target libraries are compiled with the target compiler, they are being
+built in order to run on the target of the overall configuration.  By
+the definition of host, this means that their host system is the same as
+the target system of the overall configuration.
+
+   The same process is used for both a native configuration and a cross
+configuration.  Even when using a native configuration, the target
+libraries will be configured and built using the newly built compiler.
+This is particularly important for the C++ libraries, since there is no
+reason to assume that the C++ compiler used to build the host tools (if
+there even is one) uses the same ABI as the g++ compiler which will be
+used to build the target libraries.
+
+   There is one difference between a native configuration and a cross
+configuration.  In a native configuration, the target libraries are
+normally configured and built as siblings of the host tools.  In a cross
+configuration, the target libraries are normally built in a subdirectory
+whose name is the argument to `--target'.  This is mainly for
+historical reasons.
+
+   To summarize, running `configure' in the Cygnus tree configures all
+the host libraries and tools, but does not configure any of the target
+libraries.  Running `make' then does the following steps:
+
+   * Build the host libraries.
+
+   * Build the host programs, including gcc.  Note that we call gcc
+     both a host program (since it runs on the host) and a target
+     compiler (since it generates code for the target).
+
+   * Using the newly built target compiler, configure the target
+     libraries.
+
+   * Build the target libraries.
+
+   The steps need not be done in precisely this order, since they are
+actually controlled by `Makefile' targets.
+
+\1f
+File: configure.info,  Node: Target Library Configure Scripts,  Next: Make Targets in Cygnus Tree,  Prev: Host and Target Libraries,  Up: Cross Tools in the Cygnus Tree
+
+5.6.2 Target Library Configure Scripts
+--------------------------------------
+
+There are a few things you must know in order to write a configure
+script for a target library.  This is just a quick sketch, and beginners
+shouldn't worry if they don't follow everything here.
+
+   The target libraries are configured and built using a newly built
+target compiler.  There may not be any startup files or libraries for
+this target compiler.  In fact, those files will probably be built as
+part of some target library, which naturally means that they will not
+exist when your target library is configured.
+
+   This means that the configure script for a target library may not use
+any test which requires doing a link.  This unfortunately includes many
+useful autoconf macros, such as `AC_CHECK_FUNCS'.  autoconf macros
+which do a compile but not a link, such as `AC_CHECK_HEADERS', may be
+used.
+
+   This is a severe restriction, but normally not a fatal one, as target
+libraries can often assume the presence of other target libraries, and
+thus know which functions will be available.
+
+   As of this writing, the autoconf macro `AC_PROG_CC' does a link to
+make sure that the compiler works.  This may fail in a target library,
+so target libraries must use a different set of macros to locate the
+compiler.  See the `configure.in' file in a directory like `libiberty'
+or `libgloss' for an example.
+
+   As noted in the previous section, target libraries are sometimes
+built in directories which are siblings to the host tools, and are
+sometimes built in a subdirectory.  The `--with-target-subdir' configure
+option will be passed when the library is configured.  Its value will be
+an empty string if the target library is a sibling.  Its value will be
+the name of the subdirectory if the target library is in a subdirectory.
+
+   If the overall build is not a native build (i.e., the overall
+configure used the `--target' option), then the library will be
+configured with the `--with-cross-host' option.  The value of this
+option will be the host system of the overall build.  Recall that the
+host system of the library will be the target of the overall build.  If
+the overall build is a native build, the `--with-cross-host' option
+will not be used.
+
+   A library which can be built both standalone and as a target library
+may want to install itself into different directories depending upon the
+case.  When built standalone, or when built native, the library should
+be installed in `$(libdir)'.  When built as a target library which is
+not native, the library should be installed in `$(tooldir)/lib'.  The
+`--with-cross-host' option may be used to distinguish these cases.
+
+   This same test of `--with-cross-host' may be used to see whether it
+is OK to use link tests in the configure script.  If the
+`--with-cross-host' option is not used, then the library is being built
+either standalone or native, and a link should work.
+
+\1f
+File: configure.info,  Node: Make Targets in Cygnus Tree,  Next: Target libiberty,  Prev: Target Library Configure Scripts,  Up: Cross Tools in the Cygnus Tree
+
+5.6.3 Make Targets in Cygnus Tree
+---------------------------------
+
+The top level `Makefile' in the Cygnus tree defines targets for every
+known subdirectory.
+
+   For every subdirectory DIR which holds a host library or program,
+the `Makefile' target `all-DIR' will build that library or program.
+
+   There are dependencies among host tools.  For example, building gcc
+requires first building gas, because the gcc build process invokes the
+target assembler.  These dependencies are reflected in the top level
+`Makefile'.
+
+   For every subdirectory DIR which holds a target library, the
+`Makefile' target `configure-target-DIR' will configure that library.
+The `Makefile' target `all-target-DIR' will build that library.
+
+   Every `configure-target-DIR' target depends upon `all-gcc', since
+gcc, the target compiler, is required to configure the tool.  Every
+`all-target-DIR' target depends upon the corresponding
+`configure-target-DIR' target.
+
+   There are several other targets which may be of interest for each
+directory: `install-DIR', `clean-DIR', and `check-DIR'.  There are also
+corresponding `target' versions of these for the target libraries ,
+such as `install-target-DIR'.
+
+\1f
+File: configure.info,  Node: Target libiberty,  Prev: Make Targets in Cygnus Tree,  Up: Cross Tools in the Cygnus Tree
+
+5.6.4 Target libiberty
+----------------------
+
+The `libiberty' subdirectory is currently a special case, in that it is
+the only directory which is built both using the host compiler and
+using the target compiler.
+
+   This is because the files in `libiberty' are used when building the
+host tools, and they are also incorporated into the `libstdc++' target
+library as support code.
+
+   This duality does not pose any particular difficulties.  It means
+that there are targets for both `all-libiberty' and
+`all-target-libiberty'.
+
+   In a native configuration, when target libraries are not built in a
+subdirectory, the same objects are normally used as both the host build
+and the target build.  This is normally OK, since libiberty contains
+only C code, and in a native configuration the results of the host
+compiler and the target compiler are normally interoperable.
+
+   Irix 6 is again an exception here, since the SGI native compiler
+defaults to using the `O32' ABI, and gcc defaults to using the `N32'
+ABI.  On Irix 6, the target libraries are built in a subdirectory even
+for a native configuration, avoiding this problem.
+
+   There are currently no other libraries built for both the host and
+the target, but there is no conceptual problem with adding more.
+
+\1f
+File: configure.info,  Node: Canadian Cross,  Next: Cygnus Configure,  Prev: Cross Compilation Tools,  Up: Top
+
+6 Canadian Cross
+****************
+
+It is possible to use the GNU configure and build system to build a
+program which will run on a system which is different from the system on
+which the tools are built.  In other words, it is possible to build
+programs using a cross compiler.
+
+   This is referred to as a "Canadian Cross".
+
+* Menu:
+
+* Canadian Cross Example::             Canadian Cross Example.
+* Canadian Cross Concepts::            Canadian Cross Concepts.
+* Build Cross Host Tools::             Build Cross Host Tools.
+* Build and Host Options::             Build and Host Options.
+* CCross not in Cygnus Tree::          Canadian Cross not in Cygnus Tree.
+* CCross in Cygnus Tree::              Canadian Cross in Cygnus Tree.
+* Supporting Canadian Cross::          Supporting Canadian Cross.
+
+\1f
+File: configure.info,  Node: Canadian Cross Example,  Next: Canadian Cross Concepts,  Up: Canadian Cross
+
+6.1 Canadian Cross Example
+==========================
+
+Here is an example of a Canadian Cross.
+
+   While running on a GNU/Linux, you can build a program which will run
+on a Solaris system.  You would use a GNU/Linux cross Solaris compiler
+to build the program.
+
+   Of course, you could not run the resulting program on your GNU/Linux
+system.  You would have to copy it over to a Solaris system before you
+would run it.
+
+   Of course, you could also simply build the programs on the Solaris
+system in the first place.  However, perhaps the Solaris system is not
+available for some reason; perhaps you actually don't have one, but you
+want to build the tools for somebody else to use.  Or perhaps your
+GNU/Linux system is much faster than your Solaris system.
+
+   A Canadian Cross build is most frequently used when building
+programs to run on a non-Unix system, such as DOS or Windows.  It may
+be simpler to configure and build on a Unix system than to support the
+configuration machinery on a non-Unix system.
+
+\1f
+File: configure.info,  Node: Canadian Cross Concepts,  Next: Build Cross Host Tools,  Prev: Canadian Cross Example,  Up: Canadian Cross
+
+6.2 Canadian Cross Concepts
+===========================
+
+When building a Canadian Cross, there are at least two different systems
+involved: the system on which the tools are being built, and the system
+on which the tools will run.
+
+   The system on which the tools are being built is called the "build"
+system.
+
+   The system on which the tools will run is called the host system.
+
+   For example, if you are building a Solaris program on a GNU/Linux
+system, as in the previous section, the build system would be GNU/Linux,
+and the host system would be Solaris.
+
+   It is, of course, possible to build a cross compiler using a Canadian
+Cross (i.e., build a cross compiler using a cross compiler).  In this
+case, the system for which the resulting cross compiler generates code
+is called the target system.  (For a more complete discussion of host
+and target systems, *note Host and Target::).
+
+   An example of building a cross compiler using a Canadian Cross would
+be building a Windows cross MIPS ELF compiler on a GNU/Linux system.  In
+this case the build system would be GNU/Linux, the host system would be
+Windows, and the target system would be MIPS ELF.
+
+   The name Canadian Cross comes from the case when the build, host, and
+target systems are all different.  At the time that these issues were
+all being hashed out, Canada had three national political parties.
+
+\1f
+File: configure.info,  Node: Build Cross Host Tools,  Next: Build and Host Options,  Prev: Canadian Cross Concepts,  Up: Canadian Cross
+
+6.3 Build Cross Host Tools
+==========================
+
+In order to configure a program for a Canadian Cross build, you must
+first build and install the set of cross tools you will use to build the
+program.
+
+   These tools will be build cross host tools.  That is, they will run
+on the build system, and will produce code that runs on the host system.
+
+   It is easy to confuse the meaning of build and host here.  Always
+remember that the build system is where you are doing the build, and the
+host system is where the resulting program will run.  Therefore, you
+need a build cross host compiler.
+
+   In general, you must have a complete cross environment in order to do
+the build.  This normally means a cross compiler, cross assembler, and
+so forth, as well as libraries and include files for the host system.
+
+\1f
+File: configure.info,  Node: Build and Host Options,  Next: CCross not in Cygnus Tree,  Prev: Build Cross Host Tools,  Up: Canadian Cross
+
+6.4 Build and Host Options
+==========================
+
+When you run `configure', you must use both the `--build' and `--host'
+options.
+
+   The `--build' option is used to specify the configuration name of
+the build system.  This can normally be the result of running the
+`config.guess' shell script, and it is reasonable to use
+`--build=`config.guess`'.
+
+   The `--host' option is used to specify the configuration name of the
+host system.
+
+   As we explained earlier, `config.guess' is used to set the default
+value for the `--host' option (*note Using the Host Type::).  We can
+now see that since `config.guess' returns the type of system on which
+it is run, it really identifies the build system.  Since the host
+system is normally the same as the build system (i.e., people do not
+normally build using a cross compiler), it is reasonable to use the
+result of `config.guess' as the default for the host system when the
+`--host' option is not used.
+
+   It might seem that if the `--host' option were used without the
+`--build' option that the configure script could run `config.guess' to
+determine the build system, and presume a Canadian Cross if the result
+of `config.guess' differed from the `--host' option.  However, for
+historical reasons, some configure scripts are routinely run using an
+explicit `--host' option, rather than using the default from
+`config.guess'.  As noted earlier, it is difficult or impossible to
+reliably compare configuration names (*note Using the Target Type::).
+Therefore, by convention, if the `--host' option is used, but the
+`--build' option is not used, then the build system defaults to the
+host system.
+
+\1f
+File: configure.info,  Node: CCross not in Cygnus Tree,  Next: CCross in Cygnus Tree,  Prev: Build and Host Options,  Up: Canadian Cross
+
+6.5 Canadian Cross not in Cygnus Tree.
+======================================
+
+If you are not using the Cygnus tree, you must explicitly specify the
+cross tools which you want to use to build the program.  This is done by
+setting environment variables before running the `configure' script.
+
+   You must normally set at least the environment variables `CC', `AR',
+and `RANLIB' to the cross tools which you want to use to build.
+
+   For some programs, you must set additional cross tools as well, such
+as `AS', `LD', or `NM'.
+
+   You would set these environment variables to the build cross tools
+which you are going to use.
+
+   For example, if you are building a Solaris program on a GNU/Linux
+system, and your GNU/Linux cross Solaris compiler were named
+`solaris-gcc', then you would set the environment variable `CC' to
+`solaris-gcc'.
+
+\1f
+File: configure.info,  Node: CCross in Cygnus Tree,  Next: Supporting Canadian Cross,  Prev: CCross not in Cygnus Tree,  Up: Canadian Cross
+
+6.6 Canadian Cross in Cygnus Tree
+=================================
+
+This section describes configuring and building a Canadian Cross when
+using the Cygnus tree.
+
+* Menu:
+
+* Standard Cygnus CCross::     Building a Normal Program.
+* Cross Cygnus CCross::                Building a Cross Program.
+
+\1f
+File: configure.info,  Node: Standard Cygnus CCross,  Next: Cross Cygnus CCross,  Up: CCross in Cygnus Tree
+
+6.6.1 Building a Normal Program
+-------------------------------
+
+When configuring a Canadian Cross in the Cygnus tree, all the
+appropriate environment variables are automatically set to `HOST-TOOL',
+where HOST is the value used for the `--host' option, and TOOL is the
+name of the tool (e.g., `gcc', `as', etc.).  These tools must be on
+your `PATH'.
+
+   Adding a prefix of HOST will give the usual name for the build cross
+host tools.  To see this, consider that when these cross tools were
+built, they were configured to run on the build system and to produce
+code for the host system.  That is, they were configured with a
+`--target' option that is the same as the system which we are now
+calling the host.  Recall that the default name for installed cross
+tools uses the target system as a prefix (*note Using the Target
+Type::).  Since that is the system which we are now calling the host,
+HOST is the right prefix to use.
+
+   For example, if you configure with `--build=i386-linux-gnu' and
+`--host=solaris', then the Cygnus tree will automatically default to
+using the compiler `solaris-gcc'.  You must have previously built and
+installed this compiler, probably by doing a build with no `--host'
+option and with a `--target' option of `solaris'.
+
+\1f
+File: configure.info,  Node: Cross Cygnus CCross,  Prev: Standard Cygnus CCross,  Up: CCross in Cygnus Tree
+
+6.6.2 Building a Cross Program
+------------------------------
+
+There are additional considerations if you want to build a cross
+compiler, rather than a native compiler, in the Cygnus tree using a
+Canadian Cross.
+
+   When you build a cross compiler using the Cygnus tree, then the
+target libraries will normally be built with the newly built target
+compiler (*note Host and Target Libraries::).  However, this will not
+work when building with a Canadian Cross.  This is because the newly
+built target compiler will be a program which runs on the host system,
+and therefore will not be able to run on the build system.
+
+   Therefore, when building a cross compiler with the Cygnus tree, you
+must first install a set of build cross target tools.  These tools will
+be used when building the target libraries.
+
+   Note that this is not a requirement of a Canadian Cross in general.
+For example, it would be possible to build just the host cross target
+tools on the build system, to copy the tools to the host system, and to
+build the target libraries on the host system.  The requirement for
+build cross target tools is imposed by the Cygnus tree, which expects
+to be able to build both host programs and target libraries in a single
+`configure'/`make' step.  Because it builds these in a single step, it
+expects to be able to build the target libraries on the build system,
+which means that it must use a build cross target toolchain.
+
+   For example, suppose you want to build a Windows cross MIPS ELF
+compiler on a GNU/Linux system.  You must have previously installed
+both a GNU/Linux cross Windows compiler and a GNU/Linux cross MIPS ELF
+compiler.
+
+   In order to build the Windows (configuration name `i386-cygwin32')
+cross MIPS ELF (configure name `mips-elf') compiler, you might execute
+the following commands (long command lines are broken across lines with
+a trailing backslash as a continuation character).
+
+     mkdir linux-x-cygwin32
+     cd linux-x-cygwin32
+     SRCDIR/configure --target i386-cygwin32 --prefix=INSTALLDIR \
+       --exec-prefix=INSTALLDIR/H-i386-linux
+     make
+     make install
+     cd ..
+     mkdir linux-x-mips-elf
+     cd linux-x-mips-elf
+     SRCDIR/configure --target mips-elf --prefix=INSTALLDIR \
+       --exec-prefix=INSTALLDIR/H-i386-linux
+     make
+     make install
+     cd ..
+     mkdir cygwin32-x-mips-elf
+     cd cygwin32-x-mips-elf
+     SRCDIR/configure --build=i386-linux-gnu --host=i386-cygwin32 \
+       --target=mips-elf --prefix=WININSTALLDIR \
+       --exec-prefix=WININSTALLDIR/H-i386-cygwin32
+     make
+     make install
+
+   You would then copy the contents of WININSTALLDIR over to the
+Windows machine, and run the resulting programs.
+
+\1f
+File: configure.info,  Node: Supporting Canadian Cross,  Prev: CCross in Cygnus Tree,  Up: Canadian Cross
+
+6.7 Supporting Canadian Cross
+=============================
+
+If you want to make it possible to build a program you are developing
+using a Canadian Cross, you must take some care when writing your
+configure and make rules.  Simple cases will normally work correctly.
+However, it is not hard to write configure and make tests which will
+fail in a Canadian Cross.
+
+* Menu:
+
+* CCross in Configure::                Supporting Canadian Cross in Configure Scripts.
+* CCross in Make::             Supporting Canadian Cross in Makefiles.
+
+\1f
+File: configure.info,  Node: CCross in Configure,  Next: CCross in Make,  Up: Supporting Canadian Cross
+
+6.7.1 Supporting Canadian Cross in Configure Scripts
+----------------------------------------------------
+
+In a `configure.in' file, after calling `AC_PROG_CC', you can find out
+whether this is a Canadian Cross configure by examining the shell
+variable `cross_compiling'.  In a Canadian Cross, which means that the
+compiler is a cross compiler, `cross_compiling' will be `yes'.  In a
+normal configuration, `cross_compiling' will be `no'.
+
+   You ordinarily do not need to know the type of the build system in a
+configure script.  However, if you do need that information, you can get
+it by using the macro `AC_CANONICAL_SYSTEM', the same macro that is
+used to determine the target system.  This macro will set the variables
+`build', `build_alias', `build_cpu', `build_vendor', and `build_os',
+which correspond to the similar `target' and `host' variables, except
+that they describe the build system.
+
+   When writing tests in `configure.in', you must remember that you
+want to test the host environment, not the build environment.
+
+   Macros like `AC_CHECK_FUNCS' which use the compiler will test the
+host environment.  That is because the tests will be done by running the
+compiler, which is actually a build cross host compiler.  If the
+compiler can find the function, that means that the function is present
+in the host environment.
+
+   Tests like `test -f /dev/ptyp0', on the other hand, will test the
+build environment.  Remember that the configure script is running on the
+build system, not the host system.  If your configure scripts examines
+files, those files will be on the build system.  Whatever you determine
+based on those files may or may not be the case on the host system.
+
+   Most autoconf macros will work correctly for a Canadian Cross.  The
+main exception is `AC_TRY_RUN'.  This macro tries to compile and run a
+test program.  This will fail in a Canadian Cross, because the program
+will be compiled for the host system, which means that it will not run
+on the build system.
+
+   The `AC_TRY_RUN' macro provides an optional argument to tell the
+configure script what to do in a Canadian Cross.  If that argument is
+not present, you will get a warning when you run `autoconf':
+     warning: AC_TRY_RUN called without default to allow cross compiling
+   This tells you that the resulting `configure' script will not work
+with a Canadian Cross.
+
+   In some cases while it may better to perform a test at configure
+time, it is also possible to perform the test at run time.  In such a
+case you can use the cross compiling argument to `AC_TRY_RUN' to tell
+your program that the test could not be performed at configure time.
+
+   There are a few other autoconf macros which will not work correctly
+with a Canadian Cross: a partial list is `AC_FUNC_GETPGRP',
+`AC_FUNC_SETPGRP', `AC_FUNC_SETVBUF_REVERSED', and
+`AC_SYS_RESTARTABLE_SYSCALLS'.  The `AC_CHECK_SIZEOF' macro is
+generally not very useful with a Canadian Cross; it permits an optional
+argument indicating the default size, but there is no way to know what
+the correct default should be.
+
+\1f
+File: configure.info,  Node: CCross in Make,  Prev: CCross in Configure,  Up: Supporting Canadian Cross
+
+6.7.2 Supporting Canadian Cross in Makefiles.
+---------------------------------------------
+
+The main Canadian Cross issue in a `Makefile' arises when you want to
+use a subsidiary program to generate code or data which you will then
+include in your real program.
+
+   If you compile this subsidiary program using `$(CC)' in the usual
+way, you will not be able to run it.  This is because `$(CC)' will
+build a program for the host system, but the program is being built on
+the build system.
+
+   You must instead use a compiler for the build system, rather than the
+host system.  In the Cygnus tree, this make variable `$(CC_FOR_BUILD)'
+will hold a compiler for the build system.
+
+   Note that you should not include `config.h' in a file you are
+compiling with `$(CC_FOR_BUILD)'.  The `configure' script will build
+`config.h' with information for the host system.  However, you are
+compiling the file using a compiler for the build system (a native
+compiler).  Subsidiary programs are normally simple filters which do no
+user interaction, and it is normally possible to write them in a highly
+portable fashion so that the absence of `config.h' is not crucial.
+
+   The gcc `Makefile.in' shows a complex situation in which certain
+files, such as `rtl.c', must be compiled into both subsidiary programs
+run on the build system and into the final program.  This approach may
+be of interest for advanced build system hackers.  Note that the build
+system compiler is rather confusingly called `HOST_CC'.
+
+\1f
+File: configure.info,  Node: Cygnus Configure,  Next: Multilibs,  Prev: Canadian Cross,  Up: Top
+
+7 Cygnus Configure
+******************
+
+The Cygnus configure script predates autoconf.  All of its interesting
+features have been incorporated into autoconf.  No new programs should
+be written to use the Cygnus configure script.
+
+   However, the Cygnus configure script is still used in a few places:
+at the top of the Cygnus tree and in a few target libraries in the
+Cygnus tree.  Until those uses have been replaced with autoconf, some
+brief notes are appropriate here.  This is not complete documentation,
+but it should be possible to use this as a guide while examining the
+scripts themselves.
+
+* Menu:
+
+* Cygnus Configure Basics::            Cygnus Configure Basics.
+* Cygnus Configure in C++ Libraries::  Cygnus Configure in C++ Libraries.
+
+\1f
+File: configure.info,  Node: Cygnus Configure Basics,  Next: Cygnus Configure in C++ Libraries,  Up: Cygnus Configure
+
+7.1 Cygnus Configure Basics
+===========================
+
+Cygnus configure does not use any generated files; there is no program
+corresponding to `autoconf'.  Instead, there is a single shell script
+named `configure' which may be found at the top of the Cygnus tree.
+This shell script was written by hand; it was not generated by
+autoconf, and it is incorrect, and indeed harmful, to run `autoconf' in
+the top level of a Cygnus tree.
+
+   Cygnus configure works in a particular directory by examining the
+file `configure.in' in that directory.  That file is broken into four
+separate shell scripts.
+
+   The first is the contents of `configure.in' up to a line that starts
+with `# per-host:'.  This is the common part.
+
+   The second is the rest of `configure.in' up to a line that starts
+with `# per-target:'.  This is the per host part.
+
+   The third is the rest of `configure.in' up to a line that starts
+with `# post-target:'.  This is the per target part.
+
+   The fourth is the remainder of `configure.in'.  This is the post
+target part.
+
+   If any of these comment lines are missing, the corresponding shell
+script is empty.
+
+   Cygnus configure will first execute the common part.  This must set
+the shell variable `srctrigger' to the name of a source file, to
+confirm that Cygnus configure is looking at the right directory.  This
+may set the shell variables `package_makefile_frag' and
+`package_makefile_rules_frag'.
+
+   Cygnus configure will next set the `build' and `host' shell
+variables, and execute the per host part.  This may set the shell
+variable `host_makefile_frag'.
+
+   Cygnus configure will next set the `target' variable, and execute
+the per target part.  This may set the shell variable
+`target_makefile_frag'.
+
+   Any of these scripts may set the `subdirs' shell variable.  This
+variable is a list of subdirectories where a `Makefile.in' file may be
+found.  Cygnus configure will automatically look for a `Makefile.in'
+file in the current directory.  The `subdirs' shell variable is not
+normally used, and I believe that the only directory which uses it at
+present is `newlib'.
+
+   For each `Makefile.in', Cygnus configure will automatically create a
+`Makefile' by adding definitions for `make' variables such as `host'
+and `target', and automatically editing the values of `make' variables
+such as `prefix' if they are present.
+
+   Also, if any of the `makefile_frag' shell variables are set, Cygnus
+configure will interpret them as file names relative to either the
+working directory or the source directory, and will read the contents of
+the file into the generated `Makefile'.  The file contents will be read
+in after the first line in `Makefile.in' which starts with `####'.
+
+   These `Makefile' fragments are used to customize behaviour for a
+particular host or target.  They serve to select particular files to
+compile, and to define particular preprocessor macros by providing
+values for `make' variables which are then used during compilation.
+Cygnus configure, unlike autoconf, normally does not do feature tests,
+and normally requires support to be added manually for each new host.
+
+   The `Makefile' fragment support is similar to the autoconf
+`AC_SUBST_FILE' macro.
+
+   After creating each `Makefile', the post target script will be run
+(i.e., it may be run several times).  This script may further customize
+the `Makefile'.  When it is run, the shell variable `Makefile' will
+hold the name of the `Makefile', including the appropriate directory
+component.
+
+   Like an autoconf generated `configure' script, Cygnus configure will
+create a file named `config.status' which, when run, will automatically
+recreate the configuration.  The `config.status' file will simply
+execute the Cygnus configure script again with the appropriate
+arguments.
+
+   Any of the parts of `configure.in' may set the shell variables
+`files' and `links'.  Cygnus configure will set up symlinks from the
+names in `links' to the files named in `files'.  This is similar to the
+autoconf `AC_LINK_FILES' macro.
+
+   Finally, any of the parts of `configure.in' may set the shell
+variable `configdirs' to a set of subdirectories.  If it is set, Cygnus
+configure will recursively run the configure process in each
+subdirectory.  If the subdirectory uses Cygnus configure, it will
+contain a `configure.in' file but no `configure' file, in which case
+Cygnus configure will invoke itself recursively.  If the subdirectory
+has a `configure' file, Cygnus configure assumes that it is an autoconf
+generated `configure' script, and simply invokes it directly.
+
+\1f
+File: configure.info,  Node: Cygnus Configure in C++ Libraries,  Prev: Cygnus Configure Basics,  Up: Cygnus Configure
+
+7.2 Cygnus Configure in C++ Libraries
+=====================================
+
+The C++ library configure system, written by Per Bothner, deserves
+special mention.  It uses Cygnus configure, but it does feature testing
+like that done by autoconf generated `configure' scripts.  This
+approach is used in the libraries `libio', `libstdc++', and `libg++'.
+
+   Most of the `Makefile' information is written out by the shell
+script `libio/config.shared'.  Each `configure.in' file sets certain
+shell variables, and then invokes `config.shared' to create two package
+`Makefile' fragments.  These fragments are then incorporated into the
+resulting `Makefile' by the Cygnus configure script.
+
+   The file `_G_config.h' is created in the `libio' object directory by
+running the shell script `libio/gen-params'.  This shell script uses
+feature tests to define macros and typedefs in `_G_config.h'.
+
+\1f
+File: configure.info,  Node: Multilibs,  Next: FAQ,  Prev: Cygnus Configure,  Up: Top
+
+8 Multilibs
+***********
+
+For some targets gcc may have different processor requirements depending
+upon command line options.  An obvious example is the `-msoft-float'
+option supported on several processors.  This option means that the
+floating point registers are not available, which means that floating
+point operations must be done by calling an emulation subroutine rather
+than by using machine instructions.
+
+   For such options, gcc is often configured to compile target libraries
+twice: once with `-msoft-float' and once without.  When gcc compiles
+target libraries more than once, the resulting libraries are called
+"multilibs".
+
+   Multilibs are not really part of the GNU configure and build system,
+but we discuss them here since they require support in the `configure'
+scripts and `Makefile's used for target libraries.
+
+* Menu:
+
+* Multilibs in gcc::                   Multilibs in gcc.
+* Multilibs in Target Libraries::      Multilibs in Target Libraries.
+
+\1f
+File: configure.info,  Node: Multilibs in gcc,  Next: Multilibs in Target Libraries,  Up: Multilibs
+
+8.1 Multilibs in gcc
+====================
+
+In gcc, multilibs are defined by setting the variable
+`MULTILIB_OPTIONS' in the target `Makefile' fragment.  Several other
+`MULTILIB' variables may also be defined there.  *Note The Target
+Makefile Fragment: (gcc)Target Fragment.
+
+   If you have built gcc, you can see what multilibs it uses by running
+it with the `-print-multi-lib' option.  The output `.;' means that no
+multilibs are used.  In general, the output is a sequence of lines, one
+per multilib.  The first part of each line, up to the `;', is the name
+of the multilib directory.  The second part is a list of compiler
+options separated by `@' characters.
+
+   Multilibs are built in a tree of directories.  The top of the tree,
+represented by `.' in the list of multilib directories, is the default
+library to use when no special compiler options are used.  The
+subdirectories of the tree hold versions of the library to use when
+particular compiler options are used.
+
+\1f
+File: configure.info,  Node: Multilibs in Target Libraries,  Prev: Multilibs in gcc,  Up: Multilibs
+
+8.2 Multilibs in Target Libraries
+=================================
+
+The target libraries in the Cygnus tree are automatically built with
+multilibs.  That means that each library is built multiple times.
+
+   This default is set in the top level `configure.in' file, by adding
+`--enable-multilib' to the list of arguments passed to configure when
+it is run for the target libraries (*note Host and Target Libraries::).
+
+   Each target library uses the shell script `config-ml.in', written by
+Doug Evans, to prepare to build target libraries.  This shell script is
+invoked after the `Makefile' has been created by the `configure'
+script.  If multilibs are not enabled, it does nothing, otherwise it
+modifies the `Makefile' to support multilibs.
+
+   The `config-ml.in' script makes one copy of the `Makefile' for each
+multilib in the appropriate subdirectory.  When configuring in the
+source directory (which is not recommended), it will build a symlink
+tree of the sources in each subdirectory.
+
+   The `config-ml.in' script sets several variables in the various
+`Makefile's.  The `Makefile.in' must have definitions for these
+variables already; `config-ml.in' simply changes the existing values.
+The `Makefile' should use default values for these variables which will
+do the right thing in the subdirectories.
+
+`MULTISRCTOP'
+     `config-ml.in' will set this to a sequence of `../' strings, where
+     the number of strings is the number of multilib levels in the
+     source tree.  The default value should be the empty string.
+
+`MULTIBUILDTOP'
+     `config-ml.in' will set this to a sequence of `../' strings, where
+     the number of strings is number of multilib levels in the object
+     directory.  The default value should be the empty string.  This
+     will differ from `MULTISRCTOP' when configuring in the source tree
+     (which is not recommended).
+
+`MULTIDIRS'
+     In the top level `Makefile' only, `config-ml.in' will set this to
+     the list of multilib subdirectories.  The default value should be
+     the empty string.
+
+`MULTISUBDIR'
+     `config-ml.in' will set this to the installed subdirectory name to
+     use for this subdirectory, with a leading `/'.  The default value
+     shold be the empty string.
+
+`MULTIDO'
+`MULTICLEAN'
+     In the top level `Makefile' only, `config-ml.in' will set these
+     variables to commands to use when doing a recursive make.  These
+     variables should both default to the string `true', so that by
+     default nothing happens.
+
+   All references to the parent of the source directory should use the
+variable `MULTISRCTOP'.  Instead of writing `$(srcdir)/..', you must
+write `$(srcdir)/$(MULTISRCTOP)..'.
+
+   Similarly, references to the parent of the object directory should
+use the variable `MULTIBUILDTOP'.
+
+   In the installation target, the libraries should be installed in the
+subdirectory `MULTISUBDIR'.  Instead of installing
+`$(libdir)/libfoo.a', install `$(libdir)$(MULTISUBDIR)/libfoo.a'.
+
+   The `config-ml.in' script also modifies the top level `Makefile' to
+add `multi-do' and `multi-clean' targets which are used when building
+multilibs.
+
+   The default target of the `Makefile' should include the following
+command:
+     @$(MULTIDO) $(FLAGS_TO_PASS) DO=all multi-do
+   This assumes that `$(FLAGS_TO_PASS)' is defined as a set of
+variables to pass to a recursive invocation of `make'.  This will build
+all the multilibs.  Note that the default value of `MULTIDO' is `true',
+so by default this command will do nothing.  It will only do something
+in the top level `Makefile' if multilibs were enabled.
+
+   The `install' target of the `Makefile' should include the following
+command:
+     @$(MULTIDO) $(FLAGS_TO_PASS) DO=install multi-do
+
+   In general, any operation, other than clean, which should be
+performed on all the multilibs should use a `$(MULTIDO)' line, setting
+the variable `DO' to the target of each recursive call to `make'.
+
+   The `clean' targets (`clean', `mostlyclean', etc.) should use
+`$(MULTICLEAN)'.  For example, the `clean' target should do this:
+     @$(MULTICLEAN) DO=clean multi-clean
+
+\1f
+File: configure.info,  Node: FAQ,  Next: Index,  Prev: Multilibs,  Up: Top
+
+9 Frequently Asked Questions
+****************************
+
+Which do I run first, `autoconf' or `automake'?
+     Except when you first add autoconf or automake support to a
+     package, you shouldn't run either by hand.  Instead, configure
+     with the `--enable-maintainer-mode' option, and let `make' take
+     care of it.
+
+`autoconf' says something about undefined macros.
+     This means that you have macros in your `configure.in' which are
+     not defined by `autoconf'.  You may be using an old version of
+     `autoconf'; try building and installing a newer one.  Make sure the
+     newly installled `autoconf' is first on your `PATH'.  Also, see
+     the next question.
+
+My `configure' script has stuff like `CY_GNU_GETTEXT' in it.
+     This means that you have macros in your `configure.in' which should
+     be defined in your `aclocal.m4' file, but aren't.  This usually
+     means that `aclocal' was not able to appropriate definitions of the
+     macros.  Make sure that you have installed all the packages you
+     need.  In particular, make sure that you have installed libtool
+     (this is where `AM_PROG_LIBTOOL' is defined) and gettext (this is
+     where `CY_GNU_GETTEXT' is defined, at least in the Cygnus version
+     of gettext).
+
+My `Makefile' has `@' characters in it.
+     This may mean that you tried to use an autoconf substitution in
+     your `Makefile.in' without adding the appropriate `AC_SUBST' call
+     to your `configure' script.  Or it may just mean that you need to
+     rebuild `Makefile' in your build directory.  To rebuild `Makefile'
+     from `Makefile.in', run the shell script `config.status' with no
+     arguments.  If you need to force `configure' to run again, first
+     run `config.status --recheck'.  These runs are normally done
+     automatically by `Makefile' targets, but if your `Makefile' has
+     gotten messed up you'll need to help them along.
+
+Why do I have to run both `config.status --recheck' and `config.status'?
+     Normally, you don't; they will be run automatically by `Makefile'
+     targets.  If you do need to run them, use `config.status --recheck'
+     to run the `configure' script again with the same arguments as the
+     first time you ran it.  Use `config.status' (with no arguments) to
+     regenerate all files (`Makefile', `config.h', etc.) based on the
+     results of the configure script.  The two cases are separate
+     because it isn't always necessary to regenerate all the files
+     after running `config.status --recheck'.  The `Makefile' targets
+     generated by automake will use the environment variables
+     `CONFIG_FILES' and `CONFIG_HEADERS' to only regenerate files as
+     they are needed.
+
+What is the Cygnus tree?
+     The Cygnus tree is used for various packages including gdb, the GNU
+     binutils, and egcs.  It is also, of course, used for Cygnus
+     releases.  It is the build system which was developed at Cygnus,
+     using the Cygnus configure script.  It permits building many
+     different packages with a single configure and make.  The
+     configure scripts in the tree are being converted to autoconf, but
+     the general build structure remains intact.
+
+Why do I have to keep rebuilding and reinstalling the tools?
+     I know, it's a pain.  Unfortunately, there are bugs in the tools
+     themselves which need to be fixed, and each time that happens
+     everybody who uses the tools need to reinstall new versions of
+     them.  I don't know if there is going to be a clever fix until the
+     tools stabilize.
+
+Why not just have a Cygnus tree `make' target to update the tools?
+     The tools unfortunately need to be installed before they can be
+     used.  That means that they must be built using an appropriate
+     prefix, and it seems unwise to assume that every configuration
+     uses an appropriate prefix.  It might be possible to make them
+     work in place, or it might be possible to install them in some
+     subdirectory; so far these approaches have not been implemented.
+
+\1f
+File: configure.info,  Node: Index,  Prev: FAQ,  Up: Top
+
+Index
+*****
+
+\0\b[index\0\b]
+* Menu:
+
+* --build option:                        Build and Host Options.
+                                                              (line   9)
+* --host option:                         Build and Host Options.
+                                                              (line  14)
+* --target option:                       Specifying the Target.
+                                                              (line  10)
+* _GNU_SOURCE:                           Write configure.in.  (line 134)
+* AC_CANONICAL_HOST:                     Using the Host Type. (line  10)
+* AC_CANONICAL_SYSTEM:                   Using the Target Type.
+                                                              (line   6)
+* AC_CONFIG_HEADER:                      Write configure.in.  (line  66)
+* AC_EXEEXT:                             Write configure.in.  (line  86)
+* AC_INIT:                               Write configure.in.  (line  38)
+* AC_OUTPUT:                             Write configure.in.  (line 142)
+* AC_PREREQ:                             Write configure.in.  (line  42)
+* AC_PROG_CC:                            Write configure.in.  (line 103)
+* AC_PROG_CXX:                           Write configure.in.  (line 117)
+* acconfig.h:                            Written Developer Files.
+                                                              (line  27)
+* acconfig.h, writing:                   Write acconfig.h.    (line   6)
+* acinclude.m4:                          Written Developer Files.
+                                                              (line  37)
+* aclocal.m4:                            Generated Developer Files.
+                                                              (line  33)
+* AM_CONFIG_HEADER:                      Write configure.in.  (line  53)
+* AM_DISABLE_SHARED:                     Write configure.in.  (line 127)
+* AM_EXEEXT:                             Write configure.in.  (line  86)
+* AM_INIT_AUTOMAKE:                      Write configure.in.  (line  48)
+* AM_MAINTAINER_MODE:                    Write configure.in.  (line  70)
+* AM_PROG_LIBTOOL:                       Write configure.in.  (line 122)
+* AM_PROG_LIBTOOL in configure:          FAQ.                 (line  19)
+* build option:                          Build and Host Options.
+                                                              (line   9)
+* building with a cross compiler:        Canadian Cross.      (line   6)
+* canadian cross:                        Canadian Cross.      (line   6)
+* canadian cross in configure:           CCross in Configure. (line   6)
+* canadian cross in cygnus tree:         CCross in Cygnus Tree.
+                                                              (line   6)
+* canadian cross in makefile:            CCross in Make.      (line   6)
+* canadian cross, configuring:           Build and Host Options.
+                                                              (line   6)
+* canonical system names:                Configuration Names. (line   6)
+* config.cache:                          Build Files Description.
+                                                              (line  28)
+* config.h:                              Build Files Description.
+                                                              (line  23)
+* config.h.in:                           Generated Developer Files.
+                                                              (line  45)
+* config.in:                             Generated Developer Files.
+                                                              (line  45)
+* config.status:                         Build Files Description.
+                                                              (line   9)
+* config.status --recheck:               FAQ.                 (line  40)
+* configuration names:                   Configuration Names. (line   6)
+* configuration triplets:                Configuration Names. (line   6)
+* configure:                             Generated Developer Files.
+                                                              (line  21)
+* configure build system:                Build and Host Options.
+                                                              (line   9)
+* configure host:                        Build and Host Options.
+                                                              (line  14)
+* configure target:                      Specifying the Target.
+                                                              (line  10)
+* configure.in:                          Written Developer Files.
+                                                              (line   9)
+* configure.in, writing:                 Write configure.in.  (line   6)
+* configuring a canadian cross:          Build and Host Options.
+                                                              (line   6)
+* cross compiler:                        Cross Compilation Concepts.
+                                                              (line   6)
+* cross compiler, building with:         Canadian Cross.      (line   6)
+* cross tools:                           Cross Compilation Tools.
+                                                              (line   6)
+* CY_GNU_GETTEXT in configure:           FAQ.                 (line  19)
+* cygnus configure:                      Cygnus Configure.    (line   6)
+* goals:                                 Goals.               (line   6)
+* history:                               History.             (line   6)
+* host names:                            Configuration Names. (line   6)
+* host option:                           Build and Host Options.
+                                                              (line  14)
+* host system:                           Host and Target.     (line   6)
+* host triplets:                         Configuration Names. (line   6)
+* HOST_CC:                               CCross in Make.      (line  27)
+* libg++ configure:                      Cygnus Configure in C++ Libraries.
+                                                              (line   6)
+* libio configure:                       Cygnus Configure in C++ Libraries.
+                                                              (line   6)
+* libstdc++ configure:                   Cygnus Configure in C++ Libraries.
+                                                              (line   6)
+* Makefile:                              Build Files Description.
+                                                              (line  18)
+* Makefile, garbage characters:          FAQ.                 (line  29)
+* Makefile.am:                           Written Developer Files.
+                                                              (line  18)
+* Makefile.am, writing:                  Write Makefile.am.   (line   6)
+* Makefile.in:                           Generated Developer Files.
+                                                              (line  26)
+* multilibs:                             Multilibs.           (line   6)
+* stamp-h:                               Build Files Description.
+                                                              (line  41)
+* stamp-h.in:                            Generated Developer Files.
+                                                              (line  54)
+* system names:                          Configuration Names. (line   6)
+* system types:                          Configuration Names. (line   6)
+* target option:                         Specifying the Target.
+                                                              (line  10)
+* target system:                         Host and Target.     (line   6)
+* triplets:                              Configuration Names. (line   6)
+* undefined macros:                      FAQ.                 (line  12)
+
+
+\1f
+Tag Table:
+Node: Top\7f1011
+Node: Introduction\7f1539
+Node: Goals\7f2621
+Node: Tools\7f3345
+Node: History\7f4339
+Node: Building\7f7337
+Node: Getting Started\7f10600
+Node: Write configure.in\7f11113
+Node: Write Makefile.am\7f18364
+Node: Write acconfig.h\7f21541
+Node: Generate files\7f23078
+Node: Getting Started Example\7f25044
+Node: Getting Started Example 1\7f25799
+Node: Getting Started Example 2\7f27720
+Node: Getting Started Example 3\7f30715
+Node: Generate Files in Example\7f33079
+Node: Files\7f34169
+Node: Developer Files\7f34780
+Node: Developer Files Picture\7f35160
+Node: Written Developer Files\7f36448
+Node: Generated Developer Files\7f39000
+Node: Build Files\7f42144
+Node: Build Files Picture\7f42805
+Node: Build Files Description\7f43569
+Node: Support Files\7f45575
+Node: Configuration Names\7f48457
+Node: Configuration Name Definition\7f48957
+Node: Using Configuration Names\7f51280
+Node: Cross Compilation Tools\7f53250
+Node: Cross Compilation Concepts\7f53941
+Node: Host and Target\7f54909
+Node: Using the Host Type\7f56410
+Node: Specifying the Target\7f57759
+Node: Using the Target Type\7f58548
+Node: Cross Tools in the Cygnus Tree\7f61979
+Node: Host and Target Libraries\7f63036
+Node: Target Library Configure Scripts\7f66785
+Node: Make Targets in Cygnus Tree\7f69877
+Node: Target libiberty\7f71225
+Node: Canadian Cross\7f72612
+Node: Canadian Cross Example\7f73453
+Node: Canadian Cross Concepts\7f74572
+Node: Build Cross Host Tools\7f76084
+Node: Build and Host Options\7f77036
+Node: CCross not in Cygnus Tree\7f78822
+Node: CCross in Cygnus Tree\7f79800
+Node: Standard Cygnus CCross\7f80221
+Node: Cross Cygnus CCross\7f81585
+Node: Supporting Canadian Cross\7f84385
+Node: CCross in Configure\7f85000
+Node: CCross in Make\7f88168
+Node: Cygnus Configure\7f89771
+Node: Cygnus Configure Basics\7f90606
+Node: Cygnus Configure in C++ Libraries\7f95284
+Node: Multilibs\7f96291
+Node: Multilibs in gcc\7f97336
+Node: Multilibs in Target Libraries\7f98414
+Node: FAQ\7f102605
+Node: Index\7f106705
+\1f
+End Tag Table
@@ -1,5 +1,5 @@
 This is gdb.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gdb-6.6/gdb/doc/gdb.texinfo.
+../../../../../android-toolchain/gdb-6.6/gdb/doc/gdb.texinfo.
 
 INFO-DIR-SECTION Software development
 START-INFO-DIR-ENTRY
@@ -25414,8 +25414,8 @@ Index
 * C and C++ constants:                   C Constants.         (line   6)
 * C and C++ defaults:                    C Defaults.          (line   6)
 * C and C++ operators:                   C Operators.         (line   6)
-* c packet:                              Packets.             (line  74)
 * C packet:                              Packets.             (line  80)
+* c packet:                              Packets.             (line  74)
 * C++:                                   C.                   (line  10)
 * C++ compilers:                         C plus plus expressions.
                                                               (line   8)
@@ -25565,8 +25565,8 @@ Index
 * Cygwin-specific commands:              Cygwin Native.       (line   6)
 * d (delete):                            Delete Breaks.       (line  36)
 * d (SingleKey TUI key):                 TUI Single Key Mode. (line  13)
-* d packet:                              Packets.             (line  86)
 * D packet:                              Packets.             (line  92)
+* d packet:                              Packets.             (line  86)
 * data breakpoints:                      Breakpoints.         (line  20)
 * data manipulation, in GDB/MI:          GDB/MI Data Manipulation.
                                                               (line   6)
@@ -25662,8 +25662,8 @@ Index
 * dont-repeat:                           Define.              (line  58)
 * DOS serial data link, remote debugging: DJGPP Native.       (line 121)
 * DOS serial port status:                DJGPP Native.        (line 142)
-* down:                                  Selection.           (line  40)
 * Down:                                  TUI Keys.            (line  60)
+* down:                                  Selection.           (line  40)
 * down-silently:                         Selection.           (line  64)
 * downcase-word (M-l):                   Commands For Text.   (line  45)
 * download server address (M32R):        M32R/D.              (line  27)
@@ -25832,8 +25832,8 @@ Index
 * function entry/exit, wrong values of variables: Variables.  (line  58)
 * functions without line info, and stepping: Continuing and Stepping.
                                                               (line  93)
-* g packet:                              Packets.             (line 108)
 * G packet:                              Packets.             (line 124)
+* g packet:                              Packets.             (line 108)
 * g++, GNU C++ compiler:                 C.                   (line  10)
 * garbled pointers:                      DJGPP Native.        (line  42)
 * GCC and C++:                           C plus plus expressions.
@@ -25927,8 +25927,8 @@ Index
 * htrace:                                OpenRISC 1000.       (line  69)
 * hwatch:                                OpenRISC 1000.       (line  59)
 * i (info):                              Help.                (line 100)
-* i packet:                              Packets.             (line 149)
 * I packet:                              Packets.             (line 154)
+* i packet:                              Packets.             (line 149)
 * i/o:                                   Input/Output.        (line   6)
 * I/O registers (Atmel AVR):             AVR.                 (line  10)
 * i386:                                  remote stub.         (line  57)
@@ -26367,8 +26367,8 @@ Index
 * overloading in C++:                    Debugging C plus plus.
                                                               (line  14)
 * overwrite-mode ():                     Commands For Text.   (line  53)
-* p packet:                              Packets.             (line 198)
 * P packet:                              Packets.             (line 213)
+* p packet:                              Packets.             (line 198)
 * Pacal objects, static members display: Print Settings.      (line 312)
 * packet size, remote protocol:          General Query Packets.
                                                               (line 275)
@@ -26620,8 +26620,8 @@ Index
 * s (SingleKey TUI key):                 TUI Single Key Mode. (line  28)
 * s (step):                              Continuing and Stepping.
                                                               (line  46)
-* s packet:                              Packets.             (line 241)
 * S packet:                              Packets.             (line 247)
+* s packet:                              Packets.             (line 241)
 * save command history:                  Command History.     (line  36)
 * save GDB output to a file:             Logging output.      (line   6)
 * save tracepoints for future sessions:  save-tracepoints.    (line   6)
@@ -27054,8 +27054,8 @@ Index
 * sysinfo:                               DJGPP Native.        (line  19)
 * system calls and thread breakpoints:   Thread Stops.        (line  36)
 * system, file-i/o system call:          system.              (line   6)
-* t packet:                              Packets.             (line 254)
 * T packet:                              Packets.             (line 259)
+* t packet:                              Packets.             (line 254)
 * T packet reply:                        Stop Reply Packets.  (line  22)
 * tabset NCHARS:                         TUI Commands.        (line  65)
 * target:                                Target Commands.     (line  49)
@@ -27301,12 +27301,12 @@ Index
 * z0 packet:                             Packets.             (line 385)
 * Z1 packet:                             Packets.             (line 411)
 * z1 packet:                             Packets.             (line 411)
-* z2 packet:                             Packets.             (line 432)
 * Z2 packet:                             Packets.             (line 432)
+* z2 packet:                             Packets.             (line 432)
 * Z3 packet:                             Packets.             (line 446)
 * z3 packet:                             Packets.             (line 446)
-* z4 packet:                             Packets.             (line 460)
 * Z4 packet:                             Packets.             (line 460)
+* z4 packet:                             Packets.             (line 460)
 * Z8000:                                 Z8000.               (line   6)
 * Zilog Z8000 simulator:                 Z8000.               (line   6)
 * {TYPE}:                                Expressions.         (line  42)
@@ -27314,384 +27314,384 @@ Index
 
 \1f
 Tag Table:
-Node: Top\7f1199
-Node: Summary\7f3625
-Node: Free Software\7f5261
-Node: Contributors\7f10829
-Node: Sample Session\7f18813
-Node: Invocation\7f25649
-Node: Invoking GDB\7f26193
-Node: File Options\7f28506
-Node: Mode Options\7f31266
-Node: Startup\7f37678
-Ref: Startup-Footnote-1\7f40133
-Node: Quitting GDB\7f40242
-Node: Shell Commands\7f41139
-Node: Logging output\7f41981
-Node: Commands\7f42827
-Node: Command Syntax\7f43465
-Node: Completion\7f45631
-Node: Help\7f49966
-Node: Running\7f55196
-Node: Compilation\7f56378
-Node: Starting\7f59017
-Node: Arguments\7f63906
-Node: Environment\7f65176
-Node: Working Directory\7f68444
-Node: Input/Output\7f69552
-Node: Attach\7f71523
-Node: Kill Process\7f73959
-Node: Threads\7f74925
-Node: Processes\7f81069
-Node: Checkpoint/Restart\7f86120
-Ref: Checkpoint/Restart-Footnote-1\7f90653
-Node: Stopping\7f90688
-Node: Breakpoints\7f91835
-Node: Set Breaks\7f95253
-Node: Set Watchpoints\7f106972
-Node: Set Catchpoints\7f114810
-Node: Delete Breaks\7f118288
-Node: Disabling\7f120005
-Node: Conditions\7f122772
-Node: Break Commands\7f127720
-Node: Breakpoint Menus\7f130605
-Node: Error in Breakpoints\7f132337
-Node: Breakpoint related warnings\7f133915
-Node: Continuing and Stepping\7f136242
-Node: Signals\7f145582
-Node: Thread Stops\7f149854
-Node: Stack\7f154459
-Node: Frames\7f155934
-Node: Backtrace\7f158686
-Ref: Backtrace-Footnote-1\7f163576
-Node: Selection\7f163764
-Node: Frame Info\7f166628
-Node: Source\7f168959
-Node: List\7f169963
-Node: Edit\7f173492
-Ref: Edit-Footnote-1\7f175223
-Node: Search\7f175458
-Node: Source Path\7f176266
-Ref: set substitute-path\7f182020
-Node: Machine Code\7f184241
-Node: Data\7f187651
-Node: Expressions\7f190032
-Node: Variables\7f192000
-Node: Arrays\7f195986
-Node: Output Formats\7f198515
-Ref: Output Formats-Footnote-1\7f200737
-Node: Memory\7f200894
-Node: Auto Display\7f205930
-Node: Print Settings\7f209702
-Node: Value History\7f221488
-Node: Convenience Vars\7f223904
-Node: Registers\7f227428
-Ref: Registers-Footnote-1\7f232103
-Node: Floating Point Hardware\7f232498
-Node: Vector Unit\7f233028
-Node: OS Information\7f233413
-Node: Memory Region Attributes\7f235411
-Node: Dump/Restore Files\7f239227
-Node: Core File Generation\7f241530
-Node: Character Sets\7f242762
-Node: Caching Remote Data\7f249594
-Node: Macros\7f250732
-Node: Tracepoints\7f257683
-Node: Set Tracepoints\7f259525
-Node: Create and Delete Tracepoints\7f260724
-Node: Enable and Disable Tracepoints\7f262368
-Node: Tracepoint Passcounts\7f263067
-Node: Tracepoint Actions\7f264491
-Node: Listing Tracepoints\7f267491
-Node: Starting and Stopping Trace Experiment\7f268612
-Node: Analyze Collected Data\7f269790
-Node: tfind\7f271095
-Node: tdump\7f275488
-Node: save-tracepoints\7f277147
-Node: Tracepoint Variables\7f277566
-Node: Overlays\7f278581
-Node: How Overlays Work\7f279301
-Ref: A code overlay\7f281861
-Node: Overlay Commands\7f285299
-Node: Automatic Overlay Debugging\7f289489
-Node: Overlay Sample Program\7f291630
-Node: Languages\7f293390
-Node: Setting\7f294553
-Node: Filenames\7f296255
-Node: Manually\7f297041
-Node: Automatically\7f298250
-Node: Show\7f299311
-Node: Checks\7f300633
-Node: Type Checking\7f302023
-Node: Range Checking\7f304756
-Node: Supported languages\7f307157
-Node: C\7f308330
-Node: C Operators\7f309561
-Node: C Constants\7f313942
-Node: C plus plus expressions\7f316429
-Node: C Defaults\7f319972
-Node: C Checks\7f320655
-Node: Debugging C\7f321378
-Node: Debugging C plus plus\7f321898
-Node: Objective-C\7f324984
-Node: Method Names in Commands\7f325445
-Node: The Print Command with Objective-C\7f327160
-Node: Fortran\7f327811
-Node: Fortran Operators\7f328536
-Node: Fortran Defaults\7f329126
-Node: Special Fortran commands\7f329511
-Node: Pascal\7f330011
-Node: Modula-2\7f330526
-Node: M2 Operators\7f331501
-Node: Built-In Func/Proc\7f334499
-Node: M2 Constants\7f337277
-Node: M2 Types\7f338878
-Node: M2 Defaults\7f342151
-Node: Deviations\7f342756
-Node: M2 Checks\7f343857
-Node: M2 Scope\7f344675
-Node: GDB/M2\7f345699
-Node: Ada\7f346611
-Node: Ada Mode Intro\7f347410
-Node: Omissions from Ada\7f349282
-Node: Additions to Ada\7f353243
-Node: Stopping Before Main Program\7f357141
-Node: Ada Glitches\7f357673
-Node: Unsupported languages\7f359651
-Node: Symbols\7f360341
-Node: Altering\7f373702
-Node: Assignment\7f374671
-Node: Jumping\7f377776
-Node: Signaling\7f379933
-Node: Returning\7f381064
-Node: Calling\7f382266
-Node: Patching\7f384159
-Node: GDB Files\7f385236
-Node: Files\7f385777
-Node: Separate Debug Files\7f403518
-Node: Symbol Errors\7f411860
-Node: Targets\7f415463
-Node: Active Targets\7f416992
-Node: Target Commands\7f418571
-Node: Byte Order\7f423811
-Node: Remote\7f424803
-Node: Remote Debugging\7f425913
-Node: Connecting\7f426303
-Node: Server\7f431171
-Ref: Server-Footnote-1\7f435534
-Node: Remote configuration\7f435654
-Ref: set remotebreak\7f436678
-Ref: set remote hardware-watchpoint-limit\7f438403
-Ref: set remote hardware-breakpoint-limit\7f438403
-Node: remote stub\7f440317
-Node: Stub Contents\7f443214
-Node: Bootstrapping\7f445325
-Node: Debug Session\7f449134
-Node: Configurations\7f450694
-Node: Native\7f451463
-Node: HP-UX\7f452057
-Node: BSD libkvm Interface\7f452346
-Node: SVR4 Process Information\7f453417
-Node: DJGPP Native\7f456847
-Node: Cygwin Native\7f463427
-Node: Non-debug DLL symbols\7f466825
-Node: Hurd Native\7f471375
-Node: Neutrino\7f476638
-Node: Embedded OS\7f477013
-Node: VxWorks\7f477489
-Node: VxWorks Connection\7f479706
-Node: VxWorks Download\7f480640
-Node: VxWorks Attach\7f482375
-Node: Embedded Processors\7f482773
-Node: ARM\7f484150
-Node: H8/300\7f487104
-Node: Renesas Boards\7f488603
-Node: Renesas ICE\7f493027
-Node: Renesas Special\7f494754
-Node: H8/500\7f495204
-Node: M32R/D\7f495579
-Node: M68K\7f497284
-Node: MIPS Embedded\7f497918
-Node: OpenRISC 1000\7f502863
-Node: PowerPC\7f505717
-Node: PA\7f506381
-Node: SH\7f506661
-Node: Sparclet\7f507122
-Node: Sparclet File\7f508594
-Node: Sparclet Connection\7f509476
-Node: Sparclet Download\7f509956
-Node: Sparclet Execution\7f511007
-Node: Sparclite\7f511600
-Node: ST2000\7f511976
-Node: Z8000\7f513521
-Node: AVR\7f514902
-Node: CRIS\7f515265
-Node: Super-H\7f516243
-Node: WinCE\7f516499
-Node: Architectures\7f517407
-Node: i386\7f517755
-Node: A29K\7f518439
-Node: Alpha\7f519278
-Node: MIPS\7f519411
-Node: HPPA\7f522723
-Node: Controlling GDB\7f523229
-Node: Prompt\7f523990
-Node: Editing\7f524769
-Node: Command History\7f525712
-Node: Screen Size\7f529092
-Node: Numbers\7f530797
-Node: ABI\7f532774
-Node: Messages/Warnings\7f535703
-Node: Debugging Output\7f538196
-Node: Sequences\7f542403
-Node: Define\7f543005
-Node: Hooks\7f546356
-Node: Command Files\7f548546
-Node: Output\7f552399
-Node: Interpreters\7f554813
-Node: TUI\7f556904
-Node: TUI Overview\7f557598
-Node: TUI Keys\7f560683
-Node: TUI Single Key Mode\7f563184
-Node: TUI Commands\7f564027
-Node: TUI Configuration\7f565964
-Node: Emacs\7f567442
-Node: GDB/MI\7f572550
-Node: GDB/MI Command Syntax\7f574341
-Node: GDB/MI Input Syntax\7f574554
-Node: GDB/MI Output Syntax\7f576108
-Node: GDB/MI Compatibility with CLI\7f579526
-Node: GDB/MI Development and Front Ends\7f580263
-Node: GDB/MI Output Records\7f582065
-Node: GDB/MI Result Records\7f582347
-Node: GDB/MI Stream Records\7f583074
-Node: GDB/MI Out-of-band Records\7f584345
-Node: GDB/MI Simple Examples\7f585782
-Node: GDB/MI Command Description Format\7f587595
-Node: GDB/MI Breakpoint Commands\7f588475
-Node: GDB/MI Program Context\7f604844
-Node: GDB/MI Thread Commands\7f609326
-Node: GDB/MI Program Execution\7f611402
-Node: GDB/MI Stack Manipulation\7f620011
-Node: GDB/MI Variable Objects\7f629645
-Ref: -var-list-children\7f635409
-Node: GDB/MI Data Manipulation\7f638642
-Node: GDB/MI Tracepoint Commands\7f653008
-Node: GDB/MI Symbol Query\7f653252
-Node: GDB/MI File Commands\7f656540
-Node: GDB/MI Target Manipulation\7f660646
-Node: GDB/MI Miscellaneous Commands\7f667825
-Ref: -interpreter-exec\7f669957
-Node: Annotations\7f671179
-Node: Annotations Overview\7f672019
-Node: Prompting\7f674477
-Node: Errors\7f676001
-Node: Invalidation\7f676897
-Node: Annotations for Running\7f677374
-Node: Source Annotations\7f678894
-Node: GDB Bugs\7f679819
-Node: Bug Criteria\7f680545
-Node: Bug Reporting\7f681422
-Node: Command Line Editing\7f689044
-Node: Introduction and Notation\7f689712
-Node: Readline Interaction\7f691332
-Node: Readline Bare Essentials\7f692521
-Node: Readline Movement Commands\7f694308
-Node: Readline Killing Commands\7f695271
-Node: Readline Arguments\7f697189
-Node: Searching\7f698231
-Node: Readline Init File\7f700380
-Node: Readline Init File Syntax\7f701443
-Node: Conditional Init Constructs\7f713375
-Node: Sample Init File\7f715906
-Node: Bindable Readline Commands\7f719021
-Node: Commands For Moving\7f720076
-Node: Commands For History\7f720935
-Node: Commands For Text\7f724057
-Node: Commands For Killing\7f726781
-Node: Numeric Arguments\7f728921
-Node: Commands For Completion\7f730058
-Node: Keyboard Macros\7f731600
-Node: Miscellaneous Commands\7f732169
-Node: Readline vi Mode\7f735528
-Node: Using History Interactively\7f736445
-Node: History Interaction\7f736950
-Node: Event Designators\7f738372
-Node: Word Designators\7f739305
-Node: Modifiers\7f740942
-Node: Formatting Documentation\7f742167
-Ref: Formatting Documentation-Footnote-1\7f745487
-Node: Installing GDB\7f745551
-Node: Requirements\7f746063
-Node: Running Configure\7f747144
-Node: Separate Objdir\7f750683
-Node: Config Names\7f753567
-Node: Configure Options\7f755012
-Node: Maintenance Commands\7f757349
-Ref: maint info breakpoints\7f758008
-Node: Remote Protocol\7f767516
-Node: Overview\7f767923
-Ref: Binary Data\7f770109
-Node: Packets\7f771915
-Ref: read registers packet\7f775521
-Ref: cycle step packet\7f776674
-Ref: write register packet\7f778550
-Ref: step with signal packet\7f779428
-Ref: X packet\7f783099
-Ref: insert breakpoint or watchpoint packet\7f783389
-Node: Stop Reply Packets\7f785835
-Node: General Query Packets\7f788894
-Ref: qSupported\7f795880
-Ref: qXfer read\7f803384
-Ref: qXfer auxiliary vector read\7f803882
-Ref: qXfer memory map read\7f804227
-Ref: General Query Packets-Footnote-1\7f807029
-Node: Register Packet Format\7f807356
-Node: Tracepoint Packets\7f808274
-Node: Interrupts\7f814363
-Node: Examples\7f815826
-Node: File-I/O remote protocol extension\7f816439
-Node: File-I/O Overview\7f816897
-Node: Protocol basics\7f819044
-Node: The F request packet\7f821274
-Node: The F reply packet\7f822173
-Node: The Ctrl-C message\7f823089
-Node: Console I/O\7f824716
-Node: List of supported calls\7f825932
-Node: open\7f826292
-Node: close\7f828786
-Node: read\7f829168
-Node: write\7f829775
-Node: lseek\7f830542
-Node: rename\7f831420
-Node: unlink\7f832816
-Node: stat/fstat\7f833755
-Node: gettimeofday\7f834642
-Node: isatty\7f835077
-Node: system\7f835673
-Node: Protocol specific representation of datatypes\7f837215
-Node: Integral datatypes\7f837590
-Node: Pointer values\7f838397
-Node: Memory transfer\7f839105
-Node: struct stat\7f839725
-Node: struct timeval\7f841927
-Node: Constants\7f842444
-Node: Open flags\7f842891
-Node: mode_t values\7f843232
-Node: Errno values\7f843724
-Node: Lseek flags\7f844535
-Node: Limits\7f844720
-Node: File-I/O Examples\7f845080
-Node: Memory map format\7f846194
-Node: Agent Expressions\7f848649
-Node: General Bytecode Design\7f851570
-Node: Bytecode Descriptions\7f856370
-Node: Using Agent Expressions\7f867056
-Node: Varying Target Capabilities\7f868589
-Node: Tracing on Symmetrix\7f869762
-Node: Rationale\7f875584
-Node: Copying\7f882963
-Node: GNU Free Documentation License\7f902179
-Node: Index\7f924614
+Node: Top\7f1172
+Node: Summary\7f3598
+Node: Free Software\7f5234
+Node: Contributors\7f10802
+Node: Sample Session\7f18786
+Node: Invocation\7f25622
+Node: Invoking GDB\7f26166
+Node: File Options\7f28479
+Node: Mode Options\7f31239
+Node: Startup\7f37651
+Ref: Startup-Footnote-1\7f40106
+Node: Quitting GDB\7f40215
+Node: Shell Commands\7f41112
+Node: Logging output\7f41954
+Node: Commands\7f42800
+Node: Command Syntax\7f43438
+Node: Completion\7f45604
+Node: Help\7f49939
+Node: Running\7f55169
+Node: Compilation\7f56351
+Node: Starting\7f58990
+Node: Arguments\7f63879
+Node: Environment\7f65149
+Node: Working Directory\7f68417
+Node: Input/Output\7f69525
+Node: Attach\7f71496
+Node: Kill Process\7f73932
+Node: Threads\7f74898
+Node: Processes\7f81042
+Node: Checkpoint/Restart\7f86093
+Ref: Checkpoint/Restart-Footnote-1\7f90626
+Node: Stopping\7f90661
+Node: Breakpoints\7f91808
+Node: Set Breaks\7f95226
+Node: Set Watchpoints\7f106945
+Node: Set Catchpoints\7f114783
+Node: Delete Breaks\7f118261
+Node: Disabling\7f119978
+Node: Conditions\7f122745
+Node: Break Commands\7f127693
+Node: Breakpoint Menus\7f130578
+Node: Error in Breakpoints\7f132310
+Node: Breakpoint related warnings\7f133888
+Node: Continuing and Stepping\7f136215
+Node: Signals\7f145555
+Node: Thread Stops\7f149827
+Node: Stack\7f154432
+Node: Frames\7f155907
+Node: Backtrace\7f158659
+Ref: Backtrace-Footnote-1\7f163549
+Node: Selection\7f163737
+Node: Frame Info\7f166601
+Node: Source\7f168932
+Node: List\7f169936
+Node: Edit\7f173465
+Ref: Edit-Footnote-1\7f175196
+Node: Search\7f175431
+Node: Source Path\7f176239
+Ref: set substitute-path\7f181993
+Node: Machine Code\7f184214
+Node: Data\7f187624
+Node: Expressions\7f190005
+Node: Variables\7f191973
+Node: Arrays\7f195959
+Node: Output Formats\7f198488
+Ref: Output Formats-Footnote-1\7f200710
+Node: Memory\7f200867
+Node: Auto Display\7f205903
+Node: Print Settings\7f209675
+Node: Value History\7f221461
+Node: Convenience Vars\7f223877
+Node: Registers\7f227401
+Ref: Registers-Footnote-1\7f232076
+Node: Floating Point Hardware\7f232471
+Node: Vector Unit\7f233001
+Node: OS Information\7f233386
+Node: Memory Region Attributes\7f235384
+Node: Dump/Restore Files\7f239200
+Node: Core File Generation\7f241503
+Node: Character Sets\7f242735
+Node: Caching Remote Data\7f249567
+Node: Macros\7f250705
+Node: Tracepoints\7f257656
+Node: Set Tracepoints\7f259498
+Node: Create and Delete Tracepoints\7f260697
+Node: Enable and Disable Tracepoints\7f262341
+Node: Tracepoint Passcounts\7f263040
+Node: Tracepoint Actions\7f264464
+Node: Listing Tracepoints\7f267464
+Node: Starting and Stopping Trace Experiment\7f268585
+Node: Analyze Collected Data\7f269763
+Node: tfind\7f271068
+Node: tdump\7f275461
+Node: save-tracepoints\7f277120
+Node: Tracepoint Variables\7f277539
+Node: Overlays\7f278554
+Node: How Overlays Work\7f279274
+Ref: A code overlay\7f281834
+Node: Overlay Commands\7f285272
+Node: Automatic Overlay Debugging\7f289462
+Node: Overlay Sample Program\7f291603
+Node: Languages\7f293363
+Node: Setting\7f294526
+Node: Filenames\7f296228
+Node: Manually\7f297014
+Node: Automatically\7f298223
+Node: Show\7f299284
+Node: Checks\7f300606
+Node: Type Checking\7f301996
+Node: Range Checking\7f304729
+Node: Supported languages\7f307130
+Node: C\7f308303
+Node: C Operators\7f309534
+Node: C Constants\7f313915
+Node: C plus plus expressions\7f316402
+Node: C Defaults\7f319945
+Node: C Checks\7f320628
+Node: Debugging C\7f321351
+Node: Debugging C plus plus\7f321871
+Node: Objective-C\7f324957
+Node: Method Names in Commands\7f325418
+Node: The Print Command with Objective-C\7f327133
+Node: Fortran\7f327784
+Node: Fortran Operators\7f328509
+Node: Fortran Defaults\7f329099
+Node: Special Fortran commands\7f329484
+Node: Pascal\7f329984
+Node: Modula-2\7f330499
+Node: M2 Operators\7f331474
+Node: Built-In Func/Proc\7f334472
+Node: M2 Constants\7f337250
+Node: M2 Types\7f338851
+Node: M2 Defaults\7f342124
+Node: Deviations\7f342729
+Node: M2 Checks\7f343830
+Node: M2 Scope\7f344648
+Node: GDB/M2\7f345672
+Node: Ada\7f346584
+Node: Ada Mode Intro\7f347383
+Node: Omissions from Ada\7f349255
+Node: Additions to Ada\7f353216
+Node: Stopping Before Main Program\7f357114
+Node: Ada Glitches\7f357646
+Node: Unsupported languages\7f359624
+Node: Symbols\7f360314
+Node: Altering\7f373675
+Node: Assignment\7f374644
+Node: Jumping\7f377749
+Node: Signaling\7f379906
+Node: Returning\7f381037
+Node: Calling\7f382239
+Node: Patching\7f384132
+Node: GDB Files\7f385209
+Node: Files\7f385750
+Node: Separate Debug Files\7f403491
+Node: Symbol Errors\7f411833
+Node: Targets\7f415436
+Node: Active Targets\7f416965
+Node: Target Commands\7f418544
+Node: Byte Order\7f423784
+Node: Remote\7f424776
+Node: Remote Debugging\7f425886
+Node: Connecting\7f426276
+Node: Server\7f431144
+Ref: Server-Footnote-1\7f435507
+Node: Remote configuration\7f435627
+Ref: set remotebreak\7f436651
+Ref: set remote hardware-watchpoint-limit\7f438376
+Ref: set remote hardware-breakpoint-limit\7f438376
+Node: remote stub\7f440290
+Node: Stub Contents\7f443187
+Node: Bootstrapping\7f445298
+Node: Debug Session\7f449107
+Node: Configurations\7f450667
+Node: Native\7f451436
+Node: HP-UX\7f452030
+Node: BSD libkvm Interface\7f452319
+Node: SVR4 Process Information\7f453390
+Node: DJGPP Native\7f456820
+Node: Cygwin Native\7f463400
+Node: Non-debug DLL symbols\7f466798
+Node: Hurd Native\7f471348
+Node: Neutrino\7f476611
+Node: Embedded OS\7f476986
+Node: VxWorks\7f477462
+Node: VxWorks Connection\7f479679
+Node: VxWorks Download\7f480613
+Node: VxWorks Attach\7f482348
+Node: Embedded Processors\7f482746
+Node: ARM\7f484123
+Node: H8/300\7f487077
+Node: Renesas Boards\7f488576
+Node: Renesas ICE\7f493000
+Node: Renesas Special\7f494727
+Node: H8/500\7f495177
+Node: M32R/D\7f495552
+Node: M68K\7f497257
+Node: MIPS Embedded\7f497891
+Node: OpenRISC 1000\7f502836
+Node: PowerPC\7f505690
+Node: PA\7f506354
+Node: SH\7f506634
+Node: Sparclet\7f507095
+Node: Sparclet File\7f508567
+Node: Sparclet Connection\7f509449
+Node: Sparclet Download\7f509929
+Node: Sparclet Execution\7f510980
+Node: Sparclite\7f511573
+Node: ST2000\7f511949
+Node: Z8000\7f513494
+Node: AVR\7f514875
+Node: CRIS\7f515238
+Node: Super-H\7f516216
+Node: WinCE\7f516472
+Node: Architectures\7f517380
+Node: i386\7f517728
+Node: A29K\7f518412
+Node: Alpha\7f519251
+Node: MIPS\7f519384
+Node: HPPA\7f522696
+Node: Controlling GDB\7f523202
+Node: Prompt\7f523963
+Node: Editing\7f524742
+Node: Command History\7f525685
+Node: Screen Size\7f529065
+Node: Numbers\7f530770
+Node: ABI\7f532747
+Node: Messages/Warnings\7f535676
+Node: Debugging Output\7f538169
+Node: Sequences\7f542376
+Node: Define\7f542978
+Node: Hooks\7f546329
+Node: Command Files\7f548519
+Node: Output\7f552372
+Node: Interpreters\7f554786
+Node: TUI\7f556877
+Node: TUI Overview\7f557571
+Node: TUI Keys\7f560656
+Node: TUI Single Key Mode\7f563157
+Node: TUI Commands\7f564000
+Node: TUI Configuration\7f565937
+Node: Emacs\7f567415
+Node: GDB/MI\7f572523
+Node: GDB/MI Command Syntax\7f574314
+Node: GDB/MI Input Syntax\7f574527
+Node: GDB/MI Output Syntax\7f576081
+Node: GDB/MI Compatibility with CLI\7f579499
+Node: GDB/MI Development and Front Ends\7f580236
+Node: GDB/MI Output Records\7f582038
+Node: GDB/MI Result Records\7f582320
+Node: GDB/MI Stream Records\7f583047
+Node: GDB/MI Out-of-band Records\7f584318
+Node: GDB/MI Simple Examples\7f585755
+Node: GDB/MI Command Description Format\7f587568
+Node: GDB/MI Breakpoint Commands\7f588448
+Node: GDB/MI Program Context\7f604817
+Node: GDB/MI Thread Commands\7f609299
+Node: GDB/MI Program Execution\7f611375
+Node: GDB/MI Stack Manipulation\7f619984
+Node: GDB/MI Variable Objects\7f629618
+Ref: -var-list-children\7f635382
+Node: GDB/MI Data Manipulation\7f638615
+Node: GDB/MI Tracepoint Commands\7f652981
+Node: GDB/MI Symbol Query\7f653225
+Node: GDB/MI File Commands\7f656513
+Node: GDB/MI Target Manipulation\7f660619
+Node: GDB/MI Miscellaneous Commands\7f667798
+Ref: -interpreter-exec\7f669930
+Node: Annotations\7f671152
+Node: Annotations Overview\7f671992
+Node: Prompting\7f674450
+Node: Errors\7f675974
+Node: Invalidation\7f676870
+Node: Annotations for Running\7f677347
+Node: Source Annotations\7f678867
+Node: GDB Bugs\7f679792
+Node: Bug Criteria\7f680518
+Node: Bug Reporting\7f681395
+Node: Command Line Editing\7f689017
+Node: Introduction and Notation\7f689685
+Node: Readline Interaction\7f691305
+Node: Readline Bare Essentials\7f692494
+Node: Readline Movement Commands\7f694281
+Node: Readline Killing Commands\7f695244
+Node: Readline Arguments\7f697162
+Node: Searching\7f698204
+Node: Readline Init File\7f700353
+Node: Readline Init File Syntax\7f701416
+Node: Conditional Init Constructs\7f713348
+Node: Sample Init File\7f715879
+Node: Bindable Readline Commands\7f718994
+Node: Commands For Moving\7f720049
+Node: Commands For History\7f720908
+Node: Commands For Text\7f724030
+Node: Commands For Killing\7f726754
+Node: Numeric Arguments\7f728894
+Node: Commands For Completion\7f730031
+Node: Keyboard Macros\7f731573
+Node: Miscellaneous Commands\7f732142
+Node: Readline vi Mode\7f735501
+Node: Using History Interactively\7f736418
+Node: History Interaction\7f736923
+Node: Event Designators\7f738345
+Node: Word Designators\7f739278
+Node: Modifiers\7f740915
+Node: Formatting Documentation\7f742140
+Ref: Formatting Documentation-Footnote-1\7f745460
+Node: Installing GDB\7f745524
+Node: Requirements\7f746036
+Node: Running Configure\7f747117
+Node: Separate Objdir\7f750656
+Node: Config Names\7f753540
+Node: Configure Options\7f754985
+Node: Maintenance Commands\7f757322
+Ref: maint info breakpoints\7f757981
+Node: Remote Protocol\7f767489
+Node: Overview\7f767896
+Ref: Binary Data\7f770082
+Node: Packets\7f771888
+Ref: read registers packet\7f775494
+Ref: cycle step packet\7f776647
+Ref: write register packet\7f778523
+Ref: step with signal packet\7f779401
+Ref: X packet\7f783072
+Ref: insert breakpoint or watchpoint packet\7f783362
+Node: Stop Reply Packets\7f785808
+Node: General Query Packets\7f788867
+Ref: qSupported\7f795853
+Ref: qXfer read\7f803357
+Ref: qXfer auxiliary vector read\7f803855
+Ref: qXfer memory map read\7f804200
+Ref: General Query Packets-Footnote-1\7f807002
+Node: Register Packet Format\7f807329
+Node: Tracepoint Packets\7f808247
+Node: Interrupts\7f814336
+Node: Examples\7f815799
+Node: File-I/O remote protocol extension\7f816412
+Node: File-I/O Overview\7f816870
+Node: Protocol basics\7f819017
+Node: The F request packet\7f821247
+Node: The F reply packet\7f822146
+Node: The Ctrl-C message\7f823062
+Node: Console I/O\7f824689
+Node: List of supported calls\7f825905
+Node: open\7f826265
+Node: close\7f828759
+Node: read\7f829141
+Node: write\7f829748
+Node: lseek\7f830515
+Node: rename\7f831393
+Node: unlink\7f832789
+Node: stat/fstat\7f833728
+Node: gettimeofday\7f834615
+Node: isatty\7f835050
+Node: system\7f835646
+Node: Protocol specific representation of datatypes\7f837188
+Node: Integral datatypes\7f837563
+Node: Pointer values\7f838370
+Node: Memory transfer\7f839078
+Node: struct stat\7f839698
+Node: struct timeval\7f841900
+Node: Constants\7f842417
+Node: Open flags\7f842864
+Node: mode_t values\7f843205
+Node: Errno values\7f843697
+Node: Lseek flags\7f844508
+Node: Limits\7f844693
+Node: File-I/O Examples\7f845053
+Node: Memory map format\7f846167
+Node: Agent Expressions\7f848622
+Node: General Bytecode Design\7f851543
+Node: Bytecode Descriptions\7f856343
+Node: Using Agent Expressions\7f867029
+Node: Varying Target Capabilities\7f868562
+Node: Tracing on Symmetrix\7f869735
+Node: Rationale\7f875557
+Node: Copying\7f882936
+Node: GNU Free Documentation License\7f902152
+Node: Index\7f924587
 \1f
 End Tag Table
@@ -1,5 +1,5 @@
 This is gdbint.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gdb-6.6/gdb/doc/gdbint.texinfo.
+../../../../../android-toolchain/gdb-6.6/gdb/doc/gdbint.texinfo.
 
 INFO-DIR-SECTION Software development
 START-INFO-DIR-ENTRY
@@ -7768,54 +7768,54 @@ Index
 
 \1f
 Tag Table:
-Node: Top\7f964
-Node: Requirements\7f1803
-Node: Overall Structure\7f3291
-Node: Algorithms\7f8224
-Node: User Interface\7f37932
-Ref: User Interface-Footnote-1\7f61709
-Ref: User Interface-Footnote-2\7f61758
-Node: libgdb\7f61993
-Node: Symbol Handling\7f65953
-Node: Language Support\7f81053
-Node: Host Definition\7f86454
-Node: Target Architecture Definition\7f93811
-Ref: BREAKPOINT_FROM_PC\7f121433
-Ref: DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS\7f127601
-Ref: frame_align\7f128433
-Ref: DEPRECATED_FRAME_SAVED_PC\7f130812
-Ref: unwind_pc\7f130998
-Ref: unwind_sp\7f131551
-Ref: stabs_argument_has_addr\7f144014
-Ref: push_dummy_call\7f144788
-Ref: push_dummy_code\7f145374
-Ref: DEPRECATED_REG_STRUCT_HAS_ADDR\7f146219
-Ref: SAVE_DUMMY_FRAME_TOS\7f146453
-Ref: gdbarch_return_value\7f147072
-Ref: DEPRECATED_STACK_ALIGN\7f150357
-Ref: TARGET_WRITE_PC\7f152984
-Ref: TARGET_READ_SP\7f153018
-Ref: unwind_dummy_id\7f154691
-Ref: Target Architecture Definition-Footnote-1\7f163244
-Ref: Target Architecture Definition-Footnote-2\7f163487
-Node: Target Vector Definition\7f163606
-Node: Managing Execution State\7f164149
-Node: Existing Targets\7f165962
-Node: Native Debugging\7f168283
-Node: Support Libraries\7f178722
-Node: Coding\7f190128
-Node: Porting GDB\7f215847
-Node: Versions and Branches\7f217756
-Ref: Tags\7f223715
-Ref: experimental branch tags\7f224046
-Node: Start of New Year Procedure\7f224778
-Node: Releasing GDB\7f225776
-Node: Testsuite\7f244120
-Node: Hints\7f251073
-Node: Getting Started\7f251395
-Node: Debugging GDB\7f255538
-Node: GDB Observers\7f260900
-Node: GNU Free Documentation License\7f265265
-Node: Index\7f287709
+Node: Top\7f937
+Node: Requirements\7f1776
+Node: Overall Structure\7f3264
+Node: Algorithms\7f8197
+Node: User Interface\7f37905
+Ref: User Interface-Footnote-1\7f61682
+Ref: User Interface-Footnote-2\7f61731
+Node: libgdb\7f61966
+Node: Symbol Handling\7f65926
+Node: Language Support\7f81026
+Node: Host Definition\7f86427
+Node: Target Architecture Definition\7f93784
+Ref: BREAKPOINT_FROM_PC\7f121406
+Ref: DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS\7f127574
+Ref: frame_align\7f128406
+Ref: DEPRECATED_FRAME_SAVED_PC\7f130785
+Ref: unwind_pc\7f130971
+Ref: unwind_sp\7f131524
+Ref: stabs_argument_has_addr\7f143987
+Ref: push_dummy_call\7f144761
+Ref: push_dummy_code\7f145347
+Ref: DEPRECATED_REG_STRUCT_HAS_ADDR\7f146192
+Ref: SAVE_DUMMY_FRAME_TOS\7f146426
+Ref: gdbarch_return_value\7f147045
+Ref: DEPRECATED_STACK_ALIGN\7f150330
+Ref: TARGET_WRITE_PC\7f152957
+Ref: TARGET_READ_SP\7f152991
+Ref: unwind_dummy_id\7f154664
+Ref: Target Architecture Definition-Footnote-1\7f163217
+Ref: Target Architecture Definition-Footnote-2\7f163460
+Node: Target Vector Definition\7f163579
+Node: Managing Execution State\7f164122
+Node: Existing Targets\7f165935
+Node: Native Debugging\7f168256
+Node: Support Libraries\7f178695
+Node: Coding\7f190101
+Node: Porting GDB\7f215820
+Node: Versions and Branches\7f217729
+Ref: Tags\7f223688
+Ref: experimental branch tags\7f224019
+Node: Start of New Year Procedure\7f224751
+Node: Releasing GDB\7f225749
+Node: Testsuite\7f244093
+Node: Hints\7f251046
+Node: Getting Started\7f251368
+Node: Debugging GDB\7f255511
+Node: GDB Observers\7f260873
+Node: GNU Free Documentation License\7f265238
+Node: Index\7f287682
 \1f
 End Tag Table
@@ -1,5 +1,5 @@
 This is stabs.info, produced by makeinfo version 4.8 from
-/home/dougkwan/android-tool-src/toolchain/android-toolchain/gdb-6.6/gdb/doc/stabs.texinfo.
+../../../../../android-toolchain/gdb-6.6/gdb/doc/stabs.texinfo.
 
 INFO-DIR-SECTION Software development
 START-INFO-DIR-ENTRY
@@ -4426,98 +4426,98 @@ Symbol Types Index
 
 \1f
 Tag Table:
-Node: Top\7f937
-Node: Overview\7f1984
-Node: Flow\7f3399
-Node: Stabs Format\7f4925
-Node: String Field\7f6487
-Node: C Example\7f11918
-Node: Assembly Code\7f12463
-Node: Program Structure\7f14434
-Node: Main Program\7f15160
-Node: Source Files\7f15721
-Node: Include Files\7f18173
-Node: Line Numbers\7f20838
-Node: Procedures\7f22372
-Node: Nested Procedures\7f28262
-Node: Block Structure\7f29438
-Node: Alternate Entry Points\7f30844
-Node: Constants\7f31577
-Node: Variables\7f34689
-Node: Stack Variables\7f35377
-Node: Global Variables\7f37078
-Node: Register Variables\7f38234
-Node: Common Blocks\7f39056
-Node: Statics\7f40310
-Node: Based Variables\7f42891
-Node: Parameters\7f44276
-Node: Register Parameters\7f45888
-Node: Local Variable Parameters\7f48149
-Node: Reference Parameters\7f51064
-Node: Conformant Arrays\7f51684
-Node: Types\7f52401
-Node: Builtin Types\7f53348
-Node: Traditional Builtin Types\7f54494
-Node: Traditional Integer Types\7f54895
-Node: Traditional Other Types\7f57203
-Node: Builtin Type Descriptors\7f58117
-Node: Negative Type Numbers\7f61617
-Node: Miscellaneous Types\7f67972
-Node: Cross-References\7f69858
-Node: Subranges\7f71533
-Node: Arrays\7f72772
-Node: Strings\7f75997
-Node: Enumerations\7f77059
-Node: Structures\7f79444
-Node: Typedefs\7f82151
-Node: Unions\7f83475
-Node: Function Types\7f85056
-Node: Macro define and undefine\7f86638
-Node: Symbol Tables\7f88215
-Node: Symbol Table Format\7f88667
-Node: Transformations On Symbol Tables\7f90115
-Node: Transformations On Static Variables\7f91469
-Node: Transformations On Global Variables\7f92205
-Node: Stab Section Transformations\7f93448
-Node: Cplusplus\7f94831
-Node: Class Names\7f95414
-Node: Nested Symbols\7f96159
-Node: Basic Cplusplus Types\7f97005
-Node: Simple Classes\7f98565
-Node: Class Instance\7f102859
-Node: Methods\7f103576
-Node: Method Type Descriptor\7f105795
-Node: Member Type Descriptor\7f106995
-Node: Protections\7f107787
-Node: Method Modifiers\7f110877
-Node: Virtual Methods\7f112505
-Node: Inheritance\7f116306
-Node: Virtual Base Classes\7f120002
-Node: Static Members\7f122246
-Node: Stab Types\7f122716
-Node: Non-Stab Symbol Types\7f123340
-Node: Stab Symbol Types\7f124771
-Node: Symbol Descriptors\7f128702
-Node: Type Descriptors\7f131481
-Node: Expanded Reference\7f134693
-Node: N_PC\7f136111
-Node: N_NSYMS\7f136479
-Node: N_NOMAP\7f136720
-Node: N_M2C\7f137026
-Node: N_BROWS\7f137460
-Node: N_DEFD\7f137743
-Node: N_EHDECL\7f138200
-Node: N_MOD2\7f138451
-Node: N_CATCH\7f138689
-Node: N_SSYM\7f139183
-Node: N_SCOPE\7f139468
-Node: Gould\7f139658
-Node: N_LENG\7f140650
-Node: Questions\7f140878
-Node: Stab Sections\7f142522
-Node: Stab Section Basics\7f143120
-Node: ELF Linker Relocation\7f146461
-Node: GNU Free Documentation License\7f149871
-Node: Symbol Types Index\7f172305
+Node: Top\7f910
+Node: Overview\7f1957
+Node: Flow\7f3372
+Node: Stabs Format\7f4898
+Node: String Field\7f6460
+Node: C Example\7f11891
+Node: Assembly Code\7f12436
+Node: Program Structure\7f14407
+Node: Main Program\7f15133
+Node: Source Files\7f15694
+Node: Include Files\7f18146
+Node: Line Numbers\7f20811
+Node: Procedures\7f22345
+Node: Nested Procedures\7f28235
+Node: Block Structure\7f29411
+Node: Alternate Entry Points\7f30817
+Node: Constants\7f31550
+Node: Variables\7f34662
+Node: Stack Variables\7f35350
+Node: Global Variables\7f37051
+Node: Register Variables\7f38207
+Node: Common Blocks\7f39029
+Node: Statics\7f40283
+Node: Based Variables\7f42864
+Node: Parameters\7f44249
+Node: Register Parameters\7f45861
+Node: Local Variable Parameters\7f48122
+Node: Reference Parameters\7f51037
+Node: Conformant Arrays\7f51657
+Node: Types\7f52374
+Node: Builtin Types\7f53321
+Node: Traditional Builtin Types\7f54467
+Node: Traditional Integer Types\7f54868
+Node: Traditional Other Types\7f57176
+Node: Builtin Type Descriptors\7f58090
+Node: Negative Type Numbers\7f61590
+Node: Miscellaneous Types\7f67945
+Node: Cross-References\7f69831
+Node: Subranges\7f71506
+Node: Arrays\7f72745
+Node: Strings\7f75970
+Node: Enumerations\7f77032
+Node: Structures\7f79417
+Node: Typedefs\7f82124
+Node: Unions\7f83448
+Node: Function Types\7f85029
+Node: Macro define and undefine\7f86611
+Node: Symbol Tables\7f88188
+Node: Symbol Table Format\7f88640
+Node: Transformations On Symbol Tables\7f90088
+Node: Transformations On Static Variables\7f91442
+Node: Transformations On Global Variables\7f92178
+Node: Stab Section Transformations\7f93421
+Node: Cplusplus\7f94804
+Node: Class Names\7f95387
+Node: Nested Symbols\7f96132
+Node: Basic Cplusplus Types\7f96978
+Node: Simple Classes\7f98538
+Node: Class Instance\7f102832
+Node: Methods\7f103549
+Node: Method Type Descriptor\7f105768
+Node: Member Type Descriptor\7f106968
+Node: Protections\7f107760
+Node: Method Modifiers\7f110850
+Node: Virtual Methods\7f112478
+Node: Inheritance\7f116279
+Node: Virtual Base Classes\7f119975
+Node: Static Members\7f122219
+Node: Stab Types\7f122689
+Node: Non-Stab Symbol Types\7f123313
+Node: Stab Symbol Types\7f124744
+Node: Symbol Descriptors\7f128675
+Node: Type Descriptors\7f131454
+Node: Expanded Reference\7f134666
+Node: N_PC\7f136084
+Node: N_NSYMS\7f136452
+Node: N_NOMAP\7f136693
+Node: N_M2C\7f136999
+Node: N_BROWS\7f137433
+Node: N_DEFD\7f137716
+Node: N_EHDECL\7f138173
+Node: N_MOD2\7f138424
+Node: N_CATCH\7f138662
+Node: N_SSYM\7f139156
+Node: N_SCOPE\7f139441
+Node: Gould\7f139631
+Node: N_LENG\7f140623
+Node: Questions\7f140851
+Node: Stab Sections\7f142495
+Node: Stab Section Basics\7f143093
+Node: ELF Linker Relocation\7f146434
+Node: GNU Free Documentation License\7f149844
+Node: Symbol Types Index\7f172278
 \1f
 End Tag Table
diff --git a/linux-x86/toolchain/arm-eabi-4.4.0/share/info/standards.info b/linux-x86/toolchain/arm-eabi-4.4.0/share/info/standards.info
new file mode 100644 (file)
index 0000000..13473ea
--- /dev/null
@@ -0,0 +1,4930 @@
+This is standards.info, produced by makeinfo version 4.8 from
+../../../../android-toolchain/gdb-6.6/etc/standards.texi.
+
+START-INFO-DIR-ENTRY
+* Standards: (standards).        GNU coding standards.
+END-INFO-DIR-ENTRY
+
+   GNU Coding Standards Copyright (C) 1992, 1993, 1994, 1995, 1996,
+1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+   Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.  A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+\1f
+File: standards.info,  Node: Top,  Next: Preface,  Prev: (dir),  Up: (dir)
+
+Version
+*******
+
+Last updated February 14, 2002.
+
+* Menu:
+
+* Preface::                     About the GNU Coding Standards
+* Legal Issues::                Keeping Free Software Free
+* Design Advice::               General Program Design
+* Program Behavior::            Program Behavior for All Programs
+* Writing C::                   Making The Best Use of C
+* Documentation::               Documenting Programs
+* Managing Releases::           The Release Process
+* References::                  References to Non-Free Software or Documentation
+* Copying This Manual::         How to Make Copies of This Manual
+* Index::
+
+\1f
+File: standards.info,  Node: Preface,  Next: Legal Issues,  Prev: Top,  Up: Top
+
+1 About the GNU Coding Standards
+********************************
+
+The GNU Coding Standards were written by Richard Stallman and other GNU
+Project volunteers.  Their purpose is to make the GNU system clean,
+consistent, and easy to install.  This document can also be read as a
+guide to writing portable, robust and reliable programs.  It focuses on
+programs written in C, but many of the rules and principles are useful
+even if you write in another programming language.  The rules often
+state reasons for writing in a certain way.
+
+   This release of the GNU Coding Standards was last updated February
+14, 2002.
+
+   If you did not obtain this file directly from the GNU project and
+recently, please check for a newer version.  You can ftp the GNU Coding
+Standards from any GNU FTP host in the directory `/pub/gnu/standards/'.
+The GNU Coding Standards are available there in several different
+formats: `standards.text', `standards.info', and `standards.dvi', as
+well as the Texinfo "source" which is divided in two files:
+`standards.texi' and `make-stds.texi'.  The GNU Coding Standards are
+also available on the GNU World Wide Web server:
+`http://www.gnu.org/prep/standards_toc.html'.
+
+   Corrections or suggestions for this document should be sent to
+<bug-standards@gnu.org>.  If you make a suggestion, please include a
+suggested new wording for it; our time is limited.  We prefer a context
+diff to the `standards.texi' or `make-stds.texi' files, but if you
+don't have those files, please mail your suggestion anyway.
+
+   These standards cover the minimum of what is important when writing a
+GNU package.  Likely, the needs for additional standards will come up.
+Sometimes, you might suggest that such standards be added to this
+document.  If you think your standards would be generally useful, please
+do suggest them.
+
+   You should also set standards for your package on many questions not
+addressed or not firmly specified here.  The most important point is to
+be self-consistent--try to stick to the conventions you pick, and try
+to document them as much as possible.  That way, your program will be
+more maintainable by others.
+
+\1f
+File: standards.info,  Node: Legal Issues,  Next: Design Advice,  Prev: Preface,  Up: Top
+
+2 Keeping Free Software Free
+****************************
+
+This node discusses how you can make sure that GNU software avoids
+legal difficulties, and other related issues.
+
+* Menu:
+
+* Reading Non-Free Code::       Referring to Proprietary Programs
+* Contributions::               Accepting Contributions
+* Trademarks::                  How We Deal with Trademark Issues
+
+\1f
+File: standards.info,  Node: Reading Non-Free Code,  Next: Contributions,  Up: Legal Issues
+
+2.1 Referring to Proprietary Programs
+=====================================
+
+Don't in any circumstances refer to Unix source code for or during your
+work on GNU!  (Or to any other proprietary programs.)
+
+   If you have a vague recollection of the internals of a Unix program,
+this does not absolutely mean you can't write an imitation of it, but
+do try to organize the imitation internally along different lines,
+because this is likely to make the details of the Unix version
+irrelevant and dissimilar to your results.
+
+   For example, Unix utilities were generally optimized to minimize
+memory use; if you go for speed instead, your program will be very
+different.  You could keep the entire input file in core and scan it
+there instead of using stdio.  Use a smarter algorithm discovered more
+recently than the Unix program.  Eliminate use of temporary files.  Do
+it in one pass instead of two (we did this in the assembler).
+
+   Or, on the contrary, emphasize simplicity instead of speed.  For some
+applications, the speed of today's computers makes simpler algorithms
+adequate.
+
+   Or go for generality.  For example, Unix programs often have static
+tables or fixed-size strings, which make for arbitrary limits; use
+dynamic allocation instead.  Make sure your program handles NULs and
+other funny characters in the input files.  Add a programming language
+for extensibility and write part of the program in that language.
+
+   Or turn some parts of the program into independently usable
+libraries.  Or use a simple garbage collector instead of tracking
+precisely when to free memory, or use a new GNU facility such as
+obstacks.
+
+\1f
+File: standards.info,  Node: Contributions,  Next: Trademarks,  Prev: Reading Non-Free Code,  Up: Legal Issues
+
+2.2 Accepting Contributions
+===========================
+
+If the program you are working on is copyrighted by the Free Software
+Foundation, then when someone else sends you a piece of code to add to
+the program, we need legal papers to use it--just as we asked you to
+sign papers initially.  _Each_ person who makes a nontrivial
+contribution to a program must sign some sort of legal papers in order
+for us to have clear title to the program; the main author alone is not
+enough.
+
+   So, before adding in any contributions from other people, please tell
+us, so we can arrange to get the papers.  Then wait until we tell you
+that we have received the signed papers, before you actually use the
+contribution.
+
+   This applies both before you release the program and afterward.  If
+you receive diffs to fix a bug, and they make significant changes, we
+need legal papers for that change.
+
+   This also applies to comments and documentation files.  For copyright
+law, comments and code are just text.  Copyright applies to all kinds of
+text, so we need legal papers for all kinds.
+
+   We know it is frustrating to ask for legal papers; it's frustrating
+for us as well.  But if you don't wait, you are going out on a limb--for
+example, what if the contributor's employer won't sign a disclaimer?
+You might have to take that code out again!
+
+   You don't need papers for changes of a few lines here or there, since
+they are not significant for copyright purposes.  Also, you don't need
+papers if all you get from the suggestion is some ideas, not actual code
+which you use.  For example, if someone send you one implementation, but
+you write a different implementation of the same idea, you don't need to
+get papers.
+
+   The very worst thing is if you forget to tell us about the other
+contributor.  We could be very embarrassed in court some day as a
+result.
+
+   We have more detailed advice for maintainers of programs; if you have
+reached the stage of actually maintaining a program for GNU (whether
+released or not), please ask us for a copy.
+
+\1f
+File: standards.info,  Node: Trademarks,  Prev: Contributions,  Up: Legal Issues
+
+2.3 Trademarks
+==============
+
+Please do not include any trademark acknowledgements in GNU software
+packages or documentation.
+
+   Trademark acknowledgements are the statements that such-and-such is a
+trademark of so-and-so.  The GNU Project has no objection to the basic
+idea of trademarks, but these acknowledgements feel like kowtowing, so
+we don't use them.  There is no legal requirement for them.
+
+   What is legally required, as regards other people's trademarks, is to
+avoid using them in ways which a reader might read as naming or labeling
+our own programs or activities.  For example, since "Objective C" is
+(or at least was) a trademark, we made sure to say that we provide a
+"compiler for the Objective C language" rather than an "Objective C
+compiler".  The latter is meant to be short for the former, but it does
+not explicitly state the relationship, so it could be misinterpreted as
+using "Objective C" as a label for the compiler rather than for the
+language.
+
+\1f
+File: standards.info,  Node: Design Advice,  Next: Program Behavior,  Prev: Legal Issues,  Up: Top
+
+3 General Program Design
+************************
+
+This node discusses some of the issues you should take into account
+when designing your program.
+
+* Menu:
+
+* Source Language::             Which languges to use.
+* Compatibility::               Compatibility with other implementations
+* Using Extensions::            Using non-standard features
+* Standard C::                  Using Standard C features
+* Conditional Compilation::     Compiling Code Only If A Conditional is True
+
+\1f
+File: standards.info,  Node: Source Language,  Next: Compatibility,  Up: Design Advice
+
+3.1 Which Languages to Use
+==========================
+
+When you want to use a language that gets compiled and runs at high
+speed, the best language to use is C.  Using another language is like
+using a non-standard feature: it will cause trouble for users.  Even if
+GCC supports the other language, users may find it inconvenient to have
+to install the compiler for that other language in order to build your
+program.  For example, if you write your program in C++, people will
+have to install the GNU C++ compiler in order to compile your program.
+
+   C has one other advantage over C++ and other compiled languages: more
+people know C, so more people will find it easy to read and modify the
+program if it is written in C.
+
+   So in general it is much better to use C, rather than the comparable
+alternatives.
+
+   But there are two exceptions to that conclusion:
+
+   * It is no problem to use another language to write a tool
+     specifically intended for use with that language.  That is because
+     the only people who want to build the tool will be those who have
+     installed the other language anyway.
+
+   * If an application is of interest only to a narrow part of the
+     community, then the question of which language it is written in
+     has less effect on other people, so you may as well please
+     yourself.
+
+   Many programs are designed to be extensible: they include an
+interpreter for a language that is higher level than C.  Often much of
+the program is written in that language, too.  The Emacs editor
+pioneered this technique.
+
+   The standard extensibility interpreter for GNU software is GUILE,
+which implements the language Scheme (an especially clean and simple
+dialect of Lisp).  `http://www.gnu.org/software/guile/'.  We don't
+reject programs written in other "scripting languages" such as Perl and
+Python, but using GUILE is very important for the overall consistency of
+the GNU system.
+
+\1f
+File: standards.info,  Node: Compatibility,  Next: Using Extensions,  Prev: Source Language,  Up: Design Advice
+
+3.2 Compatibility with Other Implementations
+============================================
+
+With occasional exceptions, utility programs and libraries for GNU
+should be upward compatible with those in Berkeley Unix, and upward
+compatible with Standard C if Standard C specifies their behavior, and
+upward compatible with POSIX if POSIX specifies their behavior.
+
+   When these standards conflict, it is useful to offer compatibility
+modes for each of them.
+
+   Standard C and POSIX prohibit many kinds of extensions.  Feel free
+to make the extensions anyway, and include a `--ansi', `--posix', or
+`--compatible' option to turn them off.  However, if the extension has
+a significant chance of breaking any real programs or scripts, then it
+is not really upward compatible.  So you should try to redesign its
+interface to make it upward compatible.
+
+   Many GNU programs suppress extensions that conflict with POSIX if the
+environment variable `POSIXLY_CORRECT' is defined (even if it is
+defined with a null value).  Please make your program recognize this
+variable if appropriate.
+
+   When a feature is used only by users (not by programs or command
+files), and it is done poorly in Unix, feel free to replace it
+completely with something totally different and better.  (For example,
+`vi' is replaced with Emacs.)  But it is nice to offer a compatible
+feature as well.  (There is a free `vi' clone, so we offer it.)
+
+   Additional useful features are welcome regardless of whether there
+is any precedent for them.
+
+\1f
+File: standards.info,  Node: Using Extensions,  Next: Standard C,  Prev: Compatibility,  Up: Design Advice
+
+3.3 Using Non-standard Features
+===============================
+
+Many GNU facilities that already exist support a number of convenient
+extensions over the comparable Unix facilities.  Whether to use these
+extensions in implementing your program is a difficult question.
+
+   On the one hand, using the extensions can make a cleaner program.
+On the other hand, people will not be able to build the program unless
+the other GNU tools are available.  This might cause the program to
+work on fewer kinds of machines.
+
+   With some extensions, it might be easy to provide both alternatives.
+For example, you can define functions with a "keyword" `INLINE' and
+define that as a macro to expand into either `inline' or nothing,
+depending on the compiler.
+
+   In general, perhaps it is best not to use the extensions if you can
+straightforwardly do without them, but to use the extensions if they
+are a big improvement.
+
+   An exception to this rule are the large, established programs (such
+as Emacs) which run on a great variety of systems.  Using GNU
+extensions in such programs would make many users unhappy, so we don't
+do that.
+
+   Another exception is for programs that are used as part of
+compilation: anything that must be compiled with other compilers in
+order to bootstrap the GNU compilation facilities.  If these require
+the GNU compiler, then no one can compile them without having them
+installed already.  That would be extremely troublesome in certain
+cases.
+
+\1f
+File: standards.info,  Node: Standard C,  Next: Conditional Compilation,  Prev: Using Extensions,  Up: Design Advice
+
+3.4 Standard C and Pre-Standard C
+=================================
+
+1989 Standard C is widespread enough now that it is ok to use its
+features in new programs.  There is one exception: do not ever use the
+"trigraph" feature of Standard C.
+
+   1999 Standard C is not widespread yet, so please do not require its
+features in programs.  It is ok to use its features if they are present.
+
+   However, it is easy to support pre-standard compilers in most
+programs, so if you know how to do that, feel free.  If a program you
+are maintaining has such support, you should try to keep it working.
+
+   To support pre-standard C, instead of writing function definitions in
+standard prototype form,
+
+     int
+     foo (int x, int y)
+     ...
+
+write the definition in pre-standard style like this,
+
+     int
+     foo (x, y)
+          int x, y;
+     ...
+
+and use a separate declaration to specify the argument prototype:
+
+     int foo (int, int);
+
+   You need such a declaration anyway, in a header file, to get the
+benefit of prototypes in all the files where the function is called.
+And once you have the declaration, you normally lose nothing by writing
+the function definition in the pre-standard style.
+
+   This technique does not work for integer types narrower than `int'.
+If you think of an argument as being of a type narrower than `int',
+declare it as `int' instead.
+
+   There are a few special cases where this technique is hard to use.
+For example, if a function argument needs to hold the system type
+`dev_t', you run into trouble, because `dev_t' is shorter than `int' on
+some machines; but you cannot use `int' instead, because `dev_t' is
+wider than `int' on some machines.  There is no type you can safely use
+on all machines in a non-standard definition.  The only way to support
+non-standard C and pass such an argument is to check the width of
+`dev_t' using Autoconf and choose the argument type accordingly.  This
+may not be worth the trouble.
+
+   In order to support pre-standard compilers that do not recognize
+prototypes, you may want to use a preprocessor macro like this:
+
+     /* Declare the prototype for a general external function.  */
+     #if defined (__STDC__) || defined (WINDOWSNT)
+     #define P_(proto) proto
+     #else
+     #define P_(proto) ()
+     #endif
+
+\1f
+File: standards.info,  Node: Conditional Compilation,  Prev: Standard C,  Up: Design Advice
+
+3.5 Conditional Compilation
+===========================
+
+When supporting configuration options already known when building your
+program we prefer using `if (... )' over conditional compilation, as in
+the former case the compiler is able to perform more extensive checking
+of all possible code paths.
+
+   For example, please write
+
+       if (HAS_FOO)
+         ...
+       else
+         ...
+
+   instead of:
+
+       #ifdef HAS_FOO
+         ...
+       #else
+         ...
+       #endif
+
+   A modern compiler such as GCC will generate exactly the same code in
+both cases, and we have been using similar techniques with good success
+in several projects.
+
+   While this is not a silver bullet solving all portability problems,
+following this policy would have saved the GCC project alone many person
+hours if not days per year.
+
+   In the case of function-like macros like `REVERSIBLE_CC_MODE' in GCC
+which cannot be simply used in `if( ...)' statements, there is an easy
+workaround.  Simply introduce another macro `HAS_REVERSIBLE_CC_MODE' as
+in the following example:
+
+       #ifdef REVERSIBLE_CC_MODE
+       #define HAS_REVERSIBLE_CC_MODE 1
+       #else
+       #define HAS_REVERSIBLE_CC_MODE 0
+       #endif
+
+\1f
+File: standards.info,  Node: Program Behavior,  Next: Writing C,  Prev: Design Advice,  Up: Top
+
+4 Program Behavior for All Programs
+***********************************
+
+This node describes conventions for writing robust software.  It also
+describes general standards for error messages, the command line
+interface, and how libraries should behave.
+
+* Menu:
+
+* Semantics::                   Writing robust programs
+* Libraries::                   Library behavior
+* Errors::                      Formatting error messages
+* User Interfaces::             Standards about interfaces generally
+* Graphical Interfaces::        Standards for graphical interfaces
+* Command-Line Interfaces::     Standards for command line interfaces
+* Option Table::                Table of long options
+* Memory Usage::                When and how to care about memory needs
+* File Usage::                  Which files to use, and where
+
+\1f
+File: standards.info,  Node: Semantics,  Next: Libraries,  Up: Program Behavior
+
+4.1 Writing Robust Programs
+===========================
+
+Avoid arbitrary limits on the length or number of _any_ data structure,
+including file names, lines, files, and symbols, by allocating all data
+structures dynamically.  In most Unix utilities, "long lines are
+silently truncated".  This is not acceptable in a GNU utility.
+
+   Utilities reading files should not drop NUL characters, or any other
+nonprinting characters _including those with codes above 0177_.  The
+only sensible exceptions would be utilities specifically intended for
+interface to certain types of terminals or printers that can't handle
+those characters.  Whenever possible, try to make programs work
+properly with sequences of bytes that represent multibyte characters,
+using encodings such as UTF-8 and others.
+
+   Check every system call for an error return, unless you know you
+wish to ignore errors.  Include the system error text (from `perror' or
+equivalent) in _every_ error message resulting from a failing system
+call, as well as the name of the file if any and the name of the
+utility.  Just "cannot open foo.c" or "stat failed" is not sufficient.
+
+   Check every call to `malloc' or `realloc' to see if it returned
+zero.  Check `realloc' even if you are making the block smaller; in a
+system that rounds block sizes to a power of 2, `realloc' may get a
+different block if you ask for less space.
+
+   In Unix, `realloc' can destroy the storage block if it returns zero.
+GNU `realloc' does not have this bug: if it fails, the original block
+is unchanged.  Feel free to assume the bug is fixed.  If you wish to
+run your program on Unix, and wish to avoid lossage in this case, you
+can use the GNU `malloc'.
+
+   You must expect `free' to alter the contents of the block that was
+freed.  Anything you want to fetch from the block, you must fetch before
+calling `free'.
+
+   If `malloc' fails in a noninteractive program, make that a fatal
+error.  In an interactive program (one that reads commands from the
+user), it is better to abort the command and return to the command
+reader loop.  This allows the user to kill other processes to free up
+virtual memory, and then try the command again.
+
+   Use `getopt_long' to decode arguments, unless the argument syntax
+makes this unreasonable.
+
+   When static storage is to be written in during program execution, use
+explicit C code to initialize it.  Reserve C initialized declarations
+for data that will not be changed.
+
+   Try to avoid low-level interfaces to obscure Unix data structures
+(such as file directories, utmp, or the layout of kernel memory), since
+these are less likely to work compatibly.  If you need to find all the
+files in a directory, use `readdir' or some other high-level interface.
+These are supported compatibly by GNU.
+
+   The preferred signal handling facilities are the BSD variant of
+`signal', and the POSIX `sigaction' function; the alternative USG
+`signal' interface is an inferior design.
+
+   Nowadays, using the POSIX signal functions may be the easiest way to
+make a program portable.  If you use `signal', then on GNU/Linux
+systems running GNU libc version 1, you should include `bsd/signal.h'
+instead of `signal.h', so as to get BSD behavior.  It is up to you
+whether to support systems where `signal' has only the USG behavior, or
+give up on them.
+
+   In error checks that detect "impossible" conditions, just abort.
+There is usually no point in printing any message.  These checks
+indicate the existence of bugs.  Whoever wants to fix the bugs will have
+to read the source code and run a debugger.  So explain the problem with
+comments in the source.  The relevant data will be in variables, which
+are easy to examine with the debugger, so there is no point moving them
+elsewhere.
+
+   Do not use a count of errors as the exit status for a program.
+_That does not work_, because exit status values are limited to 8 bits
+(0 through 255).  A single run of the program might have 256 errors; if
+you try to return 256 as the exit status, the parent process will see 0
+as the status, and it will appear that the program succeeded.
+
+   If you make temporary files, check the `TMPDIR' environment
+variable; if that variable is defined, use the specified directory
+instead of `/tmp'.
+
+   In addition, be aware that there is a possible security problem when
+creating temporary files in world-writable directories.  In C, you can
+avoid this problem by creating temporary files in this manner:
+
+     fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0600);
+
+or by using the `mkstemps' function from libiberty.
+
+   In bash, use `set -C' to avoid this problem.
+
+\1f
+File: standards.info,  Node: Libraries,  Next: Errors,  Prev: Semantics,  Up: Program Behavior
+
+4.2 Library Behavior
+====================
+
+Try to make library functions reentrant.  If they need to do dynamic
+storage allocation, at least try to avoid any nonreentrancy aside from
+that of `malloc' itself.
+
+   Here are certain name conventions for libraries, to avoid name
+conflicts.
+
+   Choose a name prefix for the library, more than two characters long.
+All external function and variable names should start with this prefix.
+In addition, there should only be one of these in any given library
+member.  This usually means putting each one in a separate source file.
+
+   An exception can be made when two external symbols are always used
+together, so that no reasonable program could use one without the
+other; then they can both go in the same file.
+
+   External symbols that are not documented entry points for the user
+should have names beginning with `_'.  The `_' should be followed by
+the chosen name prefix for the library, to prevent collisions with
+other libraries.  These can go in the same files with user entry points
+if you like.
+
+   Static functions and variables can be used as you like and need not
+fit any naming convention.
+
+\1f
+File: standards.info,  Node: Errors,  Next: User Interfaces,  Prev: Libraries,  Up: Program Behavior
+
+4.3 Formatting Error Messages
+=============================
+
+Error messages from compilers should look like this:
+
+     SOURCE-FILE-NAME:LINENO: MESSAGE
+
+If you want to mention the column number, use this format:
+
+     SOURCE-FILE-NAME:LINENO:COLUMN: MESSAGE
+
+Line numbers should start from 1 at the beginning of the file, and
+column numbers should start from 1 at the beginning of the line.  (Both
+of these conventions are chosen for compatibility.)  Calculate column
+numbers assuming that space and all ASCII printing characters have
+equal width, and assuming tab stops every 8 columns.
+
+   Error messages from other noninteractive programs should look like
+this:
+
+     PROGRAM:SOURCE-FILE-NAME:LINENO: MESSAGE
+
+when there is an appropriate source file, or like this:
+
+     PROGRAM: MESSAGE
+
+when there is no relevant source file.
+
+   If you want to mention the column number, use this format:
+
+     PROGRAM:SOURCE-FILE-NAME:LINENO:COLUMN: MESSAGE
+
+   In an interactive program (one that is reading commands from a
+terminal), it is better not to include the program name in an error
+message.  The place to indicate which program is running is in the
+prompt or with the screen layout.  (When the same program runs with
+input from a source other than a terminal, it is not interactive and
+would do best to print error messages using the noninteractive style.)
+
+   The string MESSAGE should not begin with a capital letter when it
+follows a program name and/or file name.  Also, it should not end with
+a period.
+
+   Error messages from interactive programs, and other messages such as
+usage messages, should start with a capital letter.  But they should not
+end with a period.
+
+\1f
+File: standards.info,  Node: User Interfaces,  Next: Graphical Interfaces,  Prev: Errors,  Up: Program Behavior
+
+4.4 Standards for Interfaces Generally
+======================================
+
+Please don't make the behavior of a utility depend on the name used to
+invoke it.  It is useful sometimes to make a link to a utility with a
+different name, and that should not change what it does.
+
+   Instead, use a run time option or a compilation switch or both to
+select among the alternate behaviors.
+
+   Likewise, please don't make the behavior of the program depend on the
+type of output device it is used with.  Device independence is an
+important principle of the system's design; do not compromise it merely
+to save someone from typing an option now and then.  (Variation in error
+message syntax when using a terminal is ok, because that is a side issue
+that people do not depend on.)
+
+   If you think one behavior is most useful when the output is to a
+terminal, and another is most useful when the output is a file or a
+pipe, then it is usually best to make the default behavior the one that
+is useful with output to a terminal, and have an option for the other
+behavior.
+
+   Compatibility requires certain programs to depend on the type of
+output device.  It would be disastrous if `ls' or `sh' did not do so in
+the way all users expect.  In some of these cases, we supplement the
+program with a preferred alternate version that does not depend on the
+output device type.  For example, we provide a `dir' program much like
+`ls' except that its default output format is always multi-column
+format.
+
+\1f
+File: standards.info,  Node: Graphical Interfaces,  Next: Command-Line Interfaces,  Prev: User Interfaces,  Up: Program Behavior
+
+4.5 Standards for Graphical Interfaces
+======================================
+
+When you write a program that provides a graphical user interface,
+please make it work with X Windows and the GTK toolkit unless the
+functionality specifically requires some alternative (for example,
+"displaying jpeg images while in console mode").
+
+   In addition, please provide a command-line interface to control the
+functionality.  (In many cases, the graphical user interface can be a
+separate program which invokes the command-line program.)  This is so
+that the same jobs can be done from scripts.
+
+   Please also consider providing a CORBA interface (for use from
+GNOME), a library interface (for use from C), and perhaps a
+keyboard-driven console interface (for use by users from console mode).
+Once you are doing the work to provide the functionality and the
+graphical interface, these won't be much extra work.
+
+\1f
+File: standards.info,  Node: Command-Line Interfaces,  Next: Option Table,  Prev: Graphical Interfaces,  Up: Program Behavior
+
+4.6 Standards for Command Line Interfaces
+=========================================
+
+It is a good idea to follow the POSIX guidelines for the command-line
+options of a program.  The easiest way to do this is to use `getopt' to
+parse them.  Note that the GNU version of `getopt' will normally permit
+options anywhere among the arguments unless the special argument `--'
+is used.  This is not what POSIX specifies; it is a GNU extension.
+
+   Please define long-named options that are equivalent to the
+single-letter Unix-style options.  We hope to make GNU more user
+friendly this way.  This is easy to do with the GNU function
+`getopt_long'.
+
+   One of the advantages of long-named options is that they can be
+consistent from program to program.  For example, users should be able
+to expect the "verbose" option of any GNU program which has one, to be
+spelled precisely `--verbose'.  To achieve this uniformity, look at the
+table of common long-option names when you choose the option names for
+your program (*note Option Table::).
+
+   It is usually a good idea for file names given as ordinary arguments
+to be input files only; any output files would be specified using
+options (preferably `-o' or `--output').  Even if you allow an output
+file name as an ordinary argument for compatibility, try to provide an
+option as another way to specify it.  This will lead to more consistency
+among GNU utilities, and fewer idiosyncracies for users to remember.
+
+   All programs should support two standard options: `--version' and
+`--help'.
+
+`--version'
+     This option should direct the program to print information about
+     its name, version, origin and legal status, all on standard
+     output, and then exit successfully.  Other options and arguments
+     should be ignored once this is seen, and the program should not
+     perform its normal function.
+
+     The first line is meant to be easy for a program to parse; the
+     version number proper starts after the last space.  In addition,
+     it contains the canonical name for this program, in this format:
+
+          GNU Emacs 19.30
+
+     The program's name should be a constant string; _don't_ compute it
+     from `argv[0]'.  The idea is to state the standard or canonical
+     name for the program, not its file name.  There are other ways to
+     find out the precise file name where a command is found in `PATH'.
+
+     If the program is a subsidiary part of a larger package, mention
+     the package name in parentheses, like this:
+
+          emacsserver (GNU Emacs) 19.30
+
+     If the package has a version number which is different from this
+     program's version number, you can mention the package version
+     number just before the close-parenthesis.
+
+     If you *need* to mention the version numbers of libraries which
+     are distributed separately from the package which contains this
+     program, you can do so by printing an additional line of version
+     info for each library you want to mention.  Use the same format
+     for these lines as for the first line.
+
+     Please do not mention all of the libraries that the program uses
+     "just for completeness"--that would produce a lot of unhelpful
+     clutter.  Please mention library version numbers only if you find
+     in practice that they are very important to you in debugging.
+
+     The following line, after the version number line or lines, should
+     be a copyright notice.  If more than one copyright notice is
+     called for, put each on a separate line.
+
+     Next should follow a brief statement that the program is free
+     software, and that users are free to copy and change it on certain
+     conditions.  If the program is covered by the GNU GPL, say so
+     here.  Also mention that there is no warranty, to the extent
+     permitted by law.
+
+     It is ok to finish the output with a list of the major authors of
+     the program, as a way of giving credit.
+
+     Here's an example of output that follows these rules:
+
+          GNU Emacs 19.34.5
+          Copyright (C) 1996 Free Software Foundation, Inc.
+          GNU Emacs comes with NO WARRANTY,
+          to the extent permitted by law.
+          You may redistribute copies of GNU Emacs
+          under the terms of the GNU General Public License.
+          For more information about these matters,
+          see the files named COPYING.
+
+     You should adapt this to your program, of course, filling in the
+     proper year, copyright holder, name of program, and the references
+     to distribution terms, and changing the rest of the wording as
+     necessary.
+
+     This copyright notice only needs to mention the most recent year in
+     which changes were made--there's no need to list the years for
+     previous versions' changes.  You don't have to mention the name of
+     the program in these notices, if that is inconvenient, since it
+     appeared in the first line.
+
+     Translations of the above lines must preserve the validity of the
+     copyright notices (*note Internationalization::).  If the
+     translation's character set supports it, the `(C)' should be
+     replaced with the copyright symbol, as follows:
+
+     (the official copyright symbol, which is the letter C in a circle);
+
+     Write the word "Copyright" exactly like that, in English.  Do not
+     translate it into another language.  International treaties
+     recognize the English word "Copyright"; translations into other
+     languages do not have legal significance.
+
+`--help'
+     This option should output brief documentation for how to invoke the
+     program, on standard output, then exit successfully.  Other
+     options and arguments should be ignored once this is seen, and the
+     program should not perform its normal function.
+
+     Near the end of the `--help' option's output there should be a line
+     that says where to mail bug reports.  It should have this format:
+
+          Report bugs to MAILING-ADDRESS.
+
+\1f
+File: standards.info,  Node: Option Table,  Next: Memory Usage,  Prev: Command-Line Interfaces,  Up: Program Behavior
+
+4.7 Table of Long Options
+=========================
+
+Here is a table of long options used by GNU programs.  It is surely
+incomplete, but we aim to list all the options that a new program might
+want to be compatible with.  If you use names not already in the table,
+please send <bug-standards@gnu.org> a list of them, with their
+meanings, so we can update the table.
+
+`after-date'
+     `-N' in `tar'.
+
+`all'
+     `-a' in `du', `ls', `nm', `stty', `uname', and `unexpand'.
+
+`all-text'
+     `-a' in `diff'.
+
+`almost-all'
+     `-A' in `ls'.
+
+`append'
+     `-a' in `etags', `tee', `time'; `-r' in `tar'.
+
+`archive'
+     `-a' in `cp'.
+
+`archive-name'
+     `-n' in `shar'.
+
+`arglength'
+     `-l' in `m4'.
+
+`ascii'
+     `-a' in `diff'.
+
+`assign'
+     `-v' in `gawk'.
+
+`assume-new'
+     `-W' in Make.
+
+`assume-old'
+     `-o' in Make.
+
+`auto-check'
+     `-a' in `recode'.
+
+`auto-pager'
+     `-a' in `wdiff'.
+
+`auto-reference'
+     `-A' in `ptx'.
+
+`avoid-wraps'
+     `-n' in `wdiff'.
+
+`background'
+     For server programs, run in the background.
+
+`backward-search'
+     `-B' in `ctags'.
+
+`basename'
+     `-f' in `shar'.
+
+`batch'
+     Used in GDB.
+
+`baud'
+     Used in GDB.
+
+`before'
+     `-b' in `tac'.
+
+`binary'
+     `-b' in `cpio' and `diff'.
+
+`bits-per-code'
+     `-b' in `shar'.
+
+`block-size'
+     Used in `cpio' and `tar'.
+
+`blocks'
+     `-b' in `head' and `tail'.
+
+`break-file'
+     `-b' in `ptx'.
+
+`brief'
+     Used in various programs to make output shorter.
+
+`bytes'
+     `-c' in `head', `split', and `tail'.
+
+`c++'
+     `-C' in `etags'.
+
+`catenate'
+     `-A' in `tar'.
+
+`cd'
+     Used in various programs to specify the directory to use.
+
+`changes'
+     `-c' in `chgrp' and `chown'.
+
+`classify'
+     `-F' in `ls'.
+
+`colons'
+     `-c' in `recode'.
+
+`command'
+     `-c' in `su'; `-x' in GDB.
+
+`compare'
+     `-d' in `tar'.
+
+`compat'
+     Used in `gawk'.
+
+`compress'
+     `-Z' in `tar' and `shar'.
+
+`concatenate'
+     `-A' in `tar'.
+
+`confirmation'
+     `-w' in `tar'.
+
+`context'
+     Used in `diff'.
+
+`copyleft'
+     `-W copyleft' in `gawk'.
+
+`copyright'
+     `-C' in `ptx', `recode', and `wdiff'; `-W copyright' in `gawk'.
+
+`core'
+     Used in GDB.
+
+`count'
+     `-q' in `who'.
+
+`count-links'
+     `-l' in `du'.
+
+`create'
+     Used in `tar' and `cpio'.
+
+`cut-mark'
+     `-c' in `shar'.
+
+`cxref'
+     `-x' in `ctags'.
+
+`date'
+     `-d' in `touch'.
+
+`debug'
+     `-d' in Make and `m4'; `-t' in Bison.
+
+`define'
+     `-D' in `m4'.
+
+`defines'
+     `-d' in Bison and `ctags'.
+
+`delete'
+     `-D' in `tar'.
+
+`dereference'
+     `-L' in `chgrp', `chown', `cpio', `du', `ls', and `tar'.
+
+`dereference-args'
+     `-D' in `du'.
+
+`device'
+     Specify an I/O device (special file name).
+
+`diacritics'
+     `-d' in `recode'.
+
+`dictionary-order'
+     `-d' in `look'.
+
+`diff'
+     `-d' in `tar'.
+
+`digits'
+     `-n' in `csplit'.
+
+`directory'
+     Specify the directory to use, in various programs.  In `ls', it
+     means to show directories themselves rather than their contents.
+     In `rm' and `ln', it means to not treat links to directories
+     specially.
+
+`discard-all'
+     `-x' in `strip'.
+
+`discard-locals'
+     `-X' in `strip'.
+
+`dry-run'
+     `-n' in Make.
+
+`ed'
+     `-e' in `diff'.
+
+`elide-empty-files'
+     `-z' in `csplit'.
+
+`end-delete'
+     `-x' in `wdiff'.
+
+`end-insert'
+     `-z' in `wdiff'.
+
+`entire-new-file'
+     `-N' in `diff'.
+
+`environment-overrides'
+     `-e' in Make.
+
+`eof'
+     `-e' in `xargs'.
+
+`epoch'
+     Used in GDB.
+
+`error-limit'
+     Used in `makeinfo'.
+
+`error-output'
+     `-o' in `m4'.
+
+`escape'
+     `-b' in `ls'.
+
+`exclude-from'
+     `-X' in `tar'.
+
+`exec'
+     Used in GDB.
+
+`exit'
+     `-x' in `xargs'.
+
+`exit-0'
+     `-e' in `unshar'.
+
+`expand-tabs'
+     `-t' in `diff'.
+
+`expression'
+     `-e' in `sed'.
+
+`extern-only'
+     `-g' in `nm'.
+
+`extract'
+     `-i' in `cpio'; `-x' in `tar'.
+
+`faces'
+     `-f' in `finger'.
+
+`fast'
+     `-f' in `su'.
+
+`fatal-warnings'
+     `-E' in `m4'.
+
+`file'
+     `-f' in `info', `gawk', Make, `mt', and `tar'; `-n' in `sed'; `-r'
+     in `touch'.
+
+`field-separator'
+     `-F' in `gawk'.
+
+`file-prefix'
+     `-b' in Bison.
+
+`file-type'
+     `-F' in `ls'.
+
+`files-from'
+     `-T' in `tar'.
+
+`fill-column'
+     Used in `makeinfo'.
+
+`flag-truncation'
+     `-F' in `ptx'.
+
+`fixed-output-files'
+     `-y' in Bison.
+
+`follow'
+     `-f' in `tail'.
+
+`footnote-style'
+     Used in `makeinfo'.
+
+`force'
+     `-f' in `cp', `ln', `mv', and `rm'.
+
+`force-prefix'
+     `-F' in `shar'.
+
+`foreground'
+     For server programs, run in the foreground; in other words, don't
+     do anything special to run the server in the background.
+
+`format'
+     Used in `ls', `time', and `ptx'.
+
+`freeze-state'
+     `-F' in `m4'.
+
+`fullname'
+     Used in GDB.
+
+`gap-size'
+     `-g' in `ptx'.
+
+`get'
+     `-x' in `tar'.
+
+`graphic'
+     `-i' in `ul'.
+
+`graphics'
+     `-g' in `recode'.
+
+`group'
+     `-g' in `install'.
+
+`gzip'
+     `-z' in `tar' and `shar'.
+
+`hashsize'
+     `-H' in `m4'.
+
+`header'
+     `-h' in `objdump' and `recode'
+
+`heading'
+     `-H' in `who'.
+
+`help'
+     Used to ask for brief usage information.
+
+`here-delimiter'
+     `-d' in `shar'.
+
+`hide-control-chars'
+     `-q' in `ls'.
+
+`html'
+     In `makeinfo', output HTML.
+
+`idle'
+     `-u' in `who'.
+
+`ifdef'
+     `-D' in `diff'.
+
+`ignore'
+     `-I' in `ls'; `-x' in `recode'.
+
+`ignore-all-space'
+     `-w' in `diff'.
+
+`ignore-backups'
+     `-B' in `ls'.
+
+`ignore-blank-lines'
+     `-B' in `diff'.
+
+`ignore-case'
+     `-f' in `look' and `ptx'; `-i' in `diff' and `wdiff'.
+
+`ignore-errors'
+     `-i' in Make.
+
+`ignore-file'
+     `-i' in `ptx'.
+
+`ignore-indentation'
+     `-I' in `etags'.
+
+`ignore-init-file'
+     `-f' in Oleo.
+
+`ignore-interrupts'
+     `-i' in `tee'.
+
+`ignore-matching-lines'
+     `-I' in `diff'.
+
+`ignore-space-change'
+     `-b' in `diff'.
+
+`ignore-zeros'
+     `-i' in `tar'.
+
+`include'
+     `-i' in `etags'; `-I' in `m4'.
+
+`include-dir'
+     `-I' in Make.
+
+`incremental'
+     `-G' in `tar'.
+
+`info'
+     `-i', `-l', and `-m' in Finger.
+
+`init-file'
+     In some programs, specify the name of the file to read as the
+     user's init file.
+
+`initial'
+     `-i' in `expand'.
+
+`initial-tab'
+     `-T' in `diff'.
+
+`inode'
+     `-i' in `ls'.
+
+`interactive'
+     `-i' in `cp', `ln', `mv', `rm'; `-e' in `m4'; `-p' in `xargs';
+     `-w' in `tar'.
+
+`intermix-type'
+     `-p' in `shar'.
+
+`iso-8601'
+     Used in `date'
+
+`jobs'
+     `-j' in Make.
+
+`just-print'
+     `-n' in Make.
+
+`keep-going'
+     `-k' in Make.
+
+`keep-files'
+     `-k' in `csplit'.
+
+`kilobytes'
+     `-k' in `du' and `ls'.
+
+`language'
+     `-l' in `etags'.
+
+`less-mode'
+     `-l' in `wdiff'.
+
+`level-for-gzip'
+     `-g' in `shar'.
+
+`line-bytes'
+     `-C' in `split'.
+
+`lines'
+     Used in `split', `head', and `tail'.
+
+`link'
+     `-l' in `cpio'.
+
+`lint'
+`lint-old'
+     Used in `gawk'.
+
+`list'
+     `-t' in `cpio'; `-l' in `recode'.
+
+`list'
+     `-t' in `tar'.
+
+`literal'
+     `-N' in `ls'.
+
+`load-average'
+     `-l' in Make.
+
+`login'
+     Used in `su'.
+
+`machine'
+     No listing of which programs already use this; someone should
+     check to see if any actually do, and tell <gnu@gnu.org>.
+
+`macro-name'
+     `-M' in `ptx'.
+
+`mail'
+     `-m' in `hello' and `uname'.
+
+`make-directories'
+     `-d' in `cpio'.
+
+`makefile'
+     `-f' in Make.
+
+`mapped'
+     Used in GDB.
+
+`max-args'
+     `-n' in `xargs'.
+
+`max-chars'
+     `-n' in `xargs'.
+
+`max-lines'
+     `-l' in `xargs'.
+
+`max-load'
+     `-l' in Make.
+
+`max-procs'
+     `-P' in `xargs'.
+
+`mesg'
+     `-T' in `who'.
+
+`message'
+     `-T' in `who'.
+
+`minimal'
+     `-d' in `diff'.
+
+`mixed-uuencode'
+     `-M' in `shar'.
+
+`mode'
+     `-m' in `install', `mkdir', and `mkfifo'.
+
+`modification-time'
+     `-m' in `tar'.
+
+`multi-volume'
+     `-M' in `tar'.
+
+`name-prefix'
+     `-a' in Bison.
+
+`nesting-limit'
+     `-L' in `m4'.
+
+`net-headers'
+     `-a' in `shar'.
+
+`new-file'
+     `-W' in Make.
+
+`no-builtin-rules'
+     `-r' in Make.
+
+`no-character-count'
+     `-w' in `shar'.
+
+`no-check-existing'
+     `-x' in `shar'.
+
+`no-common'
+     `-3' in `wdiff'.
+
+`no-create'
+     `-c' in `touch'.
+
+`no-defines'
+     `-D' in `etags'.
+
+`no-deleted'
+     `-1' in `wdiff'.
+
+`no-dereference'
+     `-d' in `cp'.
+
+`no-inserted'
+     `-2' in `wdiff'.
+
+`no-keep-going'
+     `-S' in Make.
+
+`no-lines'
+     `-l' in Bison.
+
+`no-piping'
+     `-P' in `shar'.
+
+`no-prof'
+     `-e' in `gprof'.
+
+`no-regex'
+     `-R' in `etags'.
+
+`no-sort'
+     `-p' in `nm'.
+
+`no-split'
+     Used in `makeinfo'.
+
+`no-static'
+     `-a' in `gprof'.
+
+`no-time'
+     `-E' in `gprof'.
+
+`no-timestamp'
+     `-m' in `shar'.
+
+`no-validate'
+     Used in `makeinfo'.
+
+`no-wait'
+     Used in `emacsclient'.
+
+`no-warn'
+     Used in various programs to inhibit warnings.
+
+`node'
+     `-n' in `info'.
+
+`nodename'
+     `-n' in `uname'.
+
+`nonmatching'
+     `-f' in `cpio'.
+
+`nstuff'
+     `-n' in `objdump'.
+
+`null'
+     `-0' in `xargs'.
+
+`number'
+     `-n' in `cat'.
+
+`number-nonblank'
+     `-b' in `cat'.
+
+`numeric-sort'
+     `-n' in `nm'.
+
+`numeric-uid-gid'
+     `-n' in `cpio' and `ls'.
+
+`nx'
+     Used in GDB.
+
+`old-archive'
+     `-o' in `tar'.
+
+`old-file'
+     `-o' in Make.
+
+`one-file-system'
+     `-l' in `tar', `cp', and `du'.
+
+`only-file'
+     `-o' in `ptx'.
+
+`only-prof'
+     `-f' in `gprof'.
+
+`only-time'
+     `-F' in `gprof'.
+
+`options'
+     `-o' in `getopt', `fdlist', `fdmount', `fdmountd', and `fdumount'.
+
+`output'
+     In various programs, specify the output file name.
+
+`output-prefix'
+     `-o' in `shar'.
+
+`override'
+     `-o' in `rm'.
+
+`overwrite'
+     `-c' in `unshar'.
+
+`owner'
+     `-o' in `install'.
+
+`paginate'
+     `-l' in `diff'.
+
+`paragraph-indent'
+     Used in `makeinfo'.
+
+`parents'
+     `-p' in `mkdir' and `rmdir'.
+
+`pass-all'
+     `-p' in `ul'.
+
+`pass-through'
+     `-p' in `cpio'.
+
+`port'
+     `-P' in `finger'.
+
+`portability'
+     `-c' in `cpio' and `tar'.
+
+`posix'
+     Used in `gawk'.
+
+`prefix-builtins'
+     `-P' in `m4'.
+
+`prefix'
+     `-f' in `csplit'.
+
+`preserve'
+     Used in `tar' and `cp'.
+
+`preserve-environment'
+     `-p' in `su'.
+
+`preserve-modification-time'
+     `-m' in `cpio'.
+
+`preserve-order'
+     `-s' in `tar'.
+
+`preserve-permissions'
+     `-p' in `tar'.
+
+`print'
+     `-l' in `diff'.
+
+`print-chars'
+     `-L' in `cmp'.
+
+`print-data-base'
+     `-p' in Make.
+
+`print-directory'
+     `-w' in Make.
+
+`print-file-name'
+     `-o' in `nm'.
+
+`print-symdefs'
+     `-s' in `nm'.
+
+`printer'
+     `-p' in `wdiff'.
+
+`prompt'
+     `-p' in `ed'.
+
+`proxy'
+     Specify an HTTP proxy.
+
+`query-user'
+     `-X' in `shar'.
+
+`question'
+     `-q' in Make.
+
+`quiet'
+     Used in many programs to inhibit the usual output.  *Note_* every
+     program accepting `--quiet' should accept `--silent' as a synonym.
+
+`quiet-unshar'
+     `-Q' in `shar'
+
+`quote-name'
+     `-Q' in `ls'.
+
+`rcs'
+     `-n' in `diff'.
+
+`re-interval'
+     Used in `gawk'.
+
+`read-full-blocks'
+     `-B' in `tar'.
+
+`readnow'
+     Used in GDB.
+
+`recon'
+     `-n' in Make.
+
+`record-number'
+     `-R' in `tar'.
+
+`recursive'
+     Used in `chgrp', `chown', `cp', `ls', `diff', and `rm'.
+
+`reference-limit'
+     Used in `makeinfo'.
+
+`references'
+     `-r' in `ptx'.
+
+`regex'
+     `-r' in `tac' and `etags'.
+
+`release'
+     `-r' in `uname'.
+
+`reload-state'
+     `-R' in `m4'.
+
+`relocation'
+     `-r' in `objdump'.
+
+`rename'
+     `-r' in `cpio'.
+
+`replace'
+     `-i' in `xargs'.
+
+`report-identical-files'
+     `-s' in `diff'.
+
+`reset-access-time'
+     `-a' in `cpio'.
+
+`reverse'
+     `-r' in `ls' and `nm'.
+
+`reversed-ed'
+     `-f' in `diff'.
+
+`right-side-defs'
+     `-R' in `ptx'.
+
+`same-order'
+     `-s' in `tar'.
+
+`same-permissions'
+     `-p' in `tar'.
+
+`save'
+     `-g' in `stty'.
+
+`se'
+     Used in GDB.
+
+`sentence-regexp'
+     `-S' in `ptx'.
+
+`separate-dirs'
+     `-S' in `du'.
+
+`separator'
+     `-s' in `tac'.
+
+`sequence'
+     Used by `recode' to chose files or pipes for sequencing passes.
+
+`shell'
+     `-s' in `su'.
+
+`show-all'
+     `-A' in `cat'.
+
+`show-c-function'
+     `-p' in `diff'.
+
+`show-ends'
+     `-E' in `cat'.
+
+`show-function-line'
+     `-F' in `diff'.
+
+`show-tabs'
+     `-T' in `cat'.
+
+`silent'
+     Used in many programs to inhibit the usual output.  *Note_* every
+     program accepting `--silent' should accept `--quiet' as a synonym.
+
+`size'
+     `-s' in `ls'.
+
+`socket'
+     Specify a file descriptor for a network server to use for its
+     socket, instead of opening and binding a new socket.  This
+     provides a way to run, in a nonpriveledged process, a server that
+     normally needs a reserved port number.
+
+`sort'
+     Used in `ls'.
+
+`source'
+     `-W source' in `gawk'.
+
+`sparse'
+     `-S' in `tar'.
+
+`speed-large-files'
+     `-H' in `diff'.
+
+`split-at'
+     `-E' in `unshar'.
+
+`split-size-limit'
+     `-L' in `shar'.
+
+`squeeze-blank'
+     `-s' in `cat'.
+
+`start-delete'
+     `-w' in `wdiff'.
+
+`start-insert'
+     `-y' in `wdiff'.
+
+`starting-file'
+     Used in `tar' and `diff' to specify which file within a directory
+     to start processing with.
+
+`statistics'
+     `-s' in `wdiff'.
+
+`stdin-file-list'
+     `-S' in `shar'.
+
+`stop'
+     `-S' in Make.
+
+`strict'
+     `-s' in `recode'.
+
+`strip'
+     `-s' in `install'.
+
+`strip-all'
+     `-s' in `strip'.
+
+`strip-debug'
+     `-S' in `strip'.
+
+`submitter'
+     `-s' in `shar'.
+
+`suffix'
+     `-S' in `cp', `ln', `mv'.
+
+`suffix-format'
+     `-b' in `csplit'.
+
+`sum'
+     `-s' in `gprof'.
+
+`summarize'
+     `-s' in `du'.
+
+`symbolic'
+     `-s' in `ln'.
+
+`symbols'
+     Used in GDB and `objdump'.
+
+`synclines'
+     `-s' in `m4'.
+
+`sysname'
+     `-s' in `uname'.
+
+`tabs'
+     `-t' in `expand' and `unexpand'.
+
+`tabsize'
+     `-T' in `ls'.
+
+`terminal'
+     `-T' in `tput' and `ul'.  `-t' in `wdiff'.
+
+`text'
+     `-a' in `diff'.
+
+`text-files'
+     `-T' in `shar'.
+
+`time'
+     Used in `ls' and `touch'.
+
+`timeout'
+     Specify how long to wait before giving up on some operation.
+
+`to-stdout'
+     `-O' in `tar'.
+
+`total'
+     `-c' in `du'.
+
+`touch'
+     `-t' in Make, `ranlib', and `recode'.
+
+`trace'
+     `-t' in `m4'.
+
+`traditional'
+     `-t' in `hello'; `-W traditional' in `gawk'; `-G' in `ed', `m4',
+     and `ptx'.
+
+`tty'
+     Used in GDB.
+
+`typedefs'
+     `-t' in `ctags'.
+
+`typedefs-and-c++'
+     `-T' in `ctags'.
+
+`typeset-mode'
+     `-t' in `ptx'.
+
+`uncompress'
+     `-z' in `tar'.
+
+`unconditional'
+     `-u' in `cpio'.
+
+`undefine'
+     `-U' in `m4'.
+
+`undefined-only'
+     `-u' in `nm'.
+
+`update'
+     `-u' in `cp', `ctags', `mv', `tar'.
+
+`usage'
+     Used in `gawk'; same as `--help'.
+
+`uuencode'
+     `-B' in `shar'.
+
+`vanilla-operation'
+     `-V' in `shar'.
+
+`verbose'
+     Print more information about progress.  Many programs support this.
+
+`verify'
+     `-W' in `tar'.
+
+`version'
+     Print the version number.
+
+`version-control'
+     `-V' in `cp', `ln', `mv'.
+
+`vgrind'
+     `-v' in `ctags'.
+
+`volume'
+     `-V' in `tar'.
+
+`what-if'
+     `-W' in Make.
+
+`whole-size-limit'
+     `-l' in `shar'.
+
+`width'
+     `-w' in `ls' and `ptx'.
+
+`word-regexp'
+     `-W' in `ptx'.
+
+`writable'
+     `-T' in `who'.
+
+`zeros'
+     `-z' in `gprof'.
+
+\1f
+File: standards.info,  Node: Memory Usage,  Next: File Usage,  Prev: Option Table,  Up: Program Behavior
+
+4.8 Memory Usage
+================
+
+If a program typically uses just a few meg of memory, don't bother
+making any effort to reduce memory usage.  For example, if it is
+impractical for other reasons to operate on files more than a few meg
+long, it is reasonable to read entire input files into core to operate
+on them.
+
+   However, for programs such as `cat' or `tail', that can usefully
+operate on very large files, it is important to avoid using a technique
+that would artificially limit the size of files it can handle.  If a
+program works by lines and could be applied to arbitrary user-supplied
+input files, it should keep only a line in memory, because this is not
+very hard and users will want to be able to operate on input files that
+are bigger than will fit in core all at once.
+
+   If your program creates complicated data structures, just make them
+in core and give a fatal error if `malloc' returns zero.
+
+\1f
+File: standards.info,  Node: File Usage,  Prev: Memory Usage,  Up: Program Behavior
+
+4.9 File Usage
+==============
+
+Programs should be prepared to operate when `/usr' and `/etc' are
+read-only file systems.  Thus, if the program manages log files, lock
+files, backup files, score files, or any other files which are modified
+for internal purposes, these files should not be stored in `/usr' or
+`/etc'.
+
+   There are two exceptions.  `/etc' is used to store system
+configuration information; it is reasonable for a program to modify
+files in `/etc' when its job is to update the system configuration.
+Also, if the user explicitly asks to modify one file in a directory, it
+is reasonable for the program to store other files in the same
+directory.
+
+\1f
+File: standards.info,  Node: Writing C,  Next: Documentation,  Prev: Program Behavior,  Up: Top
+
+5 Making The Best Use of C
+**************************
+
+This node provides advice on how best to use the C language when
+writing GNU software.
+
+* Menu:
+
+* Formatting::                  Formatting Your Source Code
+* Comments::                    Commenting Your Work
+* Syntactic Conventions::       Clean Use of C Constructs
+* Names::                       Naming Variables, Functions, and Files
+* System Portability::          Portability between different operating systems
+* CPU Portability::             Supporting the range of CPU types
+* System Functions::            Portability and ``standard'' library functions
+* Internationalization::        Techniques for internationalization
+* Mmap::                        How you can safely use `mmap'.
+
+\1f
+File: standards.info,  Node: Formatting,  Next: Comments,  Up: Writing C
+
+5.1 Formatting Your Source Code
+===============================
+
+It is important to put the open-brace that starts the body of a C
+function in column zero, and avoid putting any other open-brace or
+open-parenthesis or open-bracket in column zero.  Several tools look
+for open-braces in column zero to find the beginnings of C functions.
+These tools will not work on code not formatted that way.
+
+   It is also important for function definitions to start the name of
+the function in column zero.  This helps people to search for function
+definitions, and may also help certain tools recognize them.  Thus, the
+proper format is this:
+
+     static char *
+     concat (s1, s2)        /* Name starts in column zero here */
+          char *s1, *s2;
+     {                     /* Open brace in column zero here */
+       ...
+     }
+
+or, if you want to use Standard C syntax, format the definition like
+this:
+
+     static char *
+     concat (char *s1, char *s2)
+     {
+       ...
+     }
+
+   In Standard C, if the arguments don't fit nicely on one line, split
+it like this:
+
+     int
+     lots_of_args (int an_integer, long a_long, short a_short,
+                   double a_double, float a_float)
+     ...
+
+   The rest of this section gives our recommendations for other aspects
+of C formatting style, which is also the default style of the `indent'
+program in version 1.2 and newer.  It corresponds to the options
+
+     -nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2
+     -ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -psl -nsc -nsob
+
+   We don't think of these recommendations as requirements, because it
+causes no problems for users if two different programs have different
+formatting styles.
+
+   But whatever style you use, please use it consistently, since a
+mixture of styles within one program tends to look ugly.  If you are
+contributing changes to an existing program, please follow the style of
+that program.
+
+   For the body of the function, our recommended style looks like this:
+
+     if (x < foo (y, z))
+       haha = bar[4] + 5;
+     else
+       {
+         while (z)
+           {
+             haha += foo (z, z);
+             z--;
+           }
+         return ++x + bar ();
+       }
+
+   We find it easier to read a program when it has spaces before the
+open-parentheses and after the commas.  Especially after the commas.
+
+   When you split an expression into multiple lines, split it before an
+operator, not after one.  Here is the right way:
+
+     if (foo_this_is_long && bar > win (x, y, z)
+         && remaining_condition)
+
+   Try to avoid having two operators of different precedence at the same
+level of indentation.  For example, don't write this:
+
+     mode = (inmode[j] == VOIDmode
+             || GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j])
+             ? outmode[j] : inmode[j]);
+
+   Instead, use extra parentheses so that the indentation shows the
+nesting:
+
+     mode = ((inmode[j] == VOIDmode
+              || (GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j])))
+             ? outmode[j] : inmode[j]);
+
+   Insert extra parentheses so that Emacs will indent the code properly.
+For example, the following indentation looks nice if you do it by hand,
+
+     v = rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
+         + rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000;
+
+but Emacs would alter it.  Adding a set of parentheses produces
+something that looks equally nice, and which Emacs will preserve:
+
+     v = (rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
+          + rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000);
+
+   Format do-while statements like this:
+
+     do
+       {
+         a = foo (a);
+       }
+     while (a > 0);
+
+   Please use formfeed characters (control-L) to divide the program into
+pages at logical places (but not within a function).  It does not matter
+just how long the pages are, since they do not have to fit on a printed
+page.  The formfeeds should appear alone on lines by themselves.
+
+\1f
+File: standards.info,  Node: Comments,  Next: Syntactic Conventions,  Prev: Formatting,  Up: Writing C
+
+5.2 Commenting Your Work
+========================
+
+Every program should start with a comment saying briefly what it is for.
+Example: `fmt - filter for simple filling of text'.
+
+   Please write the comments in a GNU program in English, because
+English is the one language that nearly all programmers in all
+countries can read.  If you do not write English well, please write
+comments in English as well as you can, then ask other people to help
+rewrite them.  If you can't write comments in English, please find
+someone to work with you and translate your comments into English.
+
+   Please put a comment on each function saying what the function does,
+what sorts of arguments it gets, and what the possible values of
+arguments mean and are used for.  It is not necessary to duplicate in
+words the meaning of the C argument declarations, if a C type is being
+used in its customary fashion.  If there is anything nonstandard about
+its use (such as an argument of type `char *' which is really the
+address of the second character of a string, not the first), or any
+possible values that would not work the way one would expect (such as,
+that strings containing newlines are not guaranteed to work), be sure
+to say so.
+
+   Also explain the significance of the return value, if there is one.
+
+   Please put two spaces after the end of a sentence in your comments,
+so that the Emacs sentence commands will work.  Also, please write
+complete sentences and capitalize the first word.  If a lower-case
+identifier comes at the beginning of a sentence, don't capitalize it!
+Changing the spelling makes it a different identifier.  If you don't
+like starting a sentence with a lower case letter, write the sentence
+differently (e.g., "The identifier lower-case is ...").
+
+   The comment on a function is much clearer if you use the argument
+names to speak about the argument values.  The variable name itself
+should be lower case, but write it in upper case when you are speaking
+about the value rather than the variable itself.  Thus, "the inode
+number NODE_NUM" rather than "an inode".
+
+   There is usually no purpose in restating the name of the function in
+the comment before it, because the reader can see that for himself.
+There might be an exception when the comment is so long that the
+function itself would be off the bottom of the screen.
+
+   There should be a comment on each static variable as well, like this:
+
+     /* Nonzero means truncate lines in the display;
+        zero means continue them.  */
+     int truncate_lines;
+
+   Every `#endif' should have a comment, except in the case of short
+conditionals (just a few lines) that are not nested.  The comment should
+state the condition of the conditional that is ending, _including its
+sense_.  `#else' should have a comment describing the condition _and
+sense_ of the code that follows.  For example:
+
+     #ifdef foo
+       ...
+     #else /* not foo */
+       ...
+     #endif /* not foo */
+     #ifdef foo
+       ...
+     #endif /* foo */
+
+but, by contrast, write the comments this way for a `#ifndef':
+
+     #ifndef foo
+       ...
+     #else /* foo */
+       ...
+     #endif /* foo */
+     #ifndef foo
+       ...
+     #endif /* not foo */
+
+\1f
+File: standards.info,  Node: Syntactic Conventions,  Next: Names,  Prev: Comments,  Up: Writing C
+
+5.3 Clean Use of C Constructs
+=============================
+
+Please explicitly declare the types of all objects.  For example, you
+should explicitly declare all arguments to functions, and you should
+declare functions to return `int' rather than omitting the `int'.
+
+   Some programmers like to use the GCC `-Wall' option, and change the
+code whenever it issues a warning.  If you want to do this, then do.
+Other programmers prefer not to use `-Wall', because it gives warnings
+for valid and legitimate code which they do not want to change.  If you
+want to do this, then do.  The compiler should be your servant, not
+your master.
+
+   Declarations of external functions and functions to appear later in
+the source file should all go in one place near the beginning of the
+file (somewhere before the first function definition in the file), or
+else should go in a header file.  Don't put `extern' declarations inside
+functions.
+
+   It used to be common practice to use the same local variables (with
+names like `tem') over and over for different values within one
+function.  Instead of doing this, it is better declare a separate local
+variable for each distinct purpose, and give it a name which is
+meaningful.  This not only makes programs easier to understand, it also
+facilitates optimization by good compilers.  You can also move the
+declaration of each local variable into the smallest scope that includes
+all its uses.  This makes the program even cleaner.
+
+   Don't use local variables or parameters that shadow global
+identifiers.
+
+   Don't declare multiple variables in one declaration that spans lines.
+Start a new declaration on each line, instead.  For example, instead of
+this:
+
+     int    foo,
+            bar;
+
+write either this:
+
+     int foo, bar;
+
+or this:
+
+     int foo;
+     int bar;
+
+(If they are global variables, each should have a comment preceding it
+anyway.)
+
+   When you have an `if'-`else' statement nested in another `if'
+statement, always put braces around the `if'-`else'.  Thus, never write
+like this:
+
+     if (foo)
+       if (bar)
+         win ();
+       else
+         lose ();
+
+always like this:
+
+     if (foo)
+       {
+         if (bar)
+           win ();
+         else
+           lose ();
+       }
+
+   If you have an `if' statement nested inside of an `else' statement,
+either write `else if' on one line, like this,
+
+     if (foo)
+       ...
+     else if (bar)
+       ...
+
+with its `then'-part indented like the preceding `then'-part, or write
+the nested `if' within braces like this:
+
+     if (foo)
+       ...
+     else
+       {
+         if (bar)
+           ...
+       }
+
+   Don't declare both a structure tag and variables or typedefs in the
+same declaration.  Instead, declare the structure tag separately and
+then use it to declare the variables or typedefs.
+
+   Try to avoid assignments inside `if'-conditions.  For example, don't
+write this:
+
+     if ((foo = (char *) malloc (sizeof *foo)) == 0)
+       fatal ("virtual memory exhausted");
+
+instead, write this:
+
+     foo = (char *) malloc (sizeof *foo);
+     if (foo == 0)
+       fatal ("virtual memory exhausted");
+
+   Don't make the program ugly to placate `lint'.  Please don't insert
+any casts to `void'.  Zero without a cast is perfectly fine as a null
+pointer constant, except when calling a varargs function.
+
+\1f
+File: standards.info,  Node: Names,  Next: System Portability,  Prev: Syntactic Conventions,  Up: Writing C
+
+5.4 Naming Variables, Functions, and Files
+==========================================
+
+The names of global variables and functions in a program serve as
+comments of a sort.  So don't choose terse names--instead, look for
+names that give useful information about the meaning of the variable or
+function.  In a GNU program, names should be English, like other
+comments.
+
+   Local variable names can be shorter, because they are used only
+within one context, where (presumably) comments explain their purpose.
+
+   Try to limit your use of abbreviations in symbol names.  It is ok to
+make a few abbreviations, explain what they mean, and then use them
+frequently, but don't use lots of obscure abbreviations.
+
+   Please use underscores to separate words in a name, so that the Emacs
+word commands can be useful within them.  Stick to lower case; reserve
+upper case for macros and `enum' constants, and for name-prefixes that
+follow a uniform convention.
+
+   For example, you should use names like `ignore_space_change_flag';
+don't use names like `iCantReadThis'.
+
+   Variables that indicate whether command-line options have been
+specified should be named after the meaning of the option, not after
+the option-letter.  A comment should state both the exact meaning of
+the option and its letter.  For example,
+
+     /* Ignore changes in horizontal whitespace (-b).  */
+     int ignore_space_change_flag;
+
+   When you want to define names with constant integer values, use
+`enum' rather than `#define'.  GDB knows about enumeration constants.
+
+   You might want to make sure that none of the file names would
+conflict the files were loaded onto an MS-DOS file system which
+shortens the names.  You can use the program `doschk' to test for this.
+
+   Some GNU programs were designed to limit themselves to file names of
+14 characters or less, to avoid file name conflicts if they are read
+into older System V systems.  Please preserve this feature in the
+existing GNU programs that have it, but there is no need to do this in
+new GNU programs.  `doschk' also reports file names longer than 14
+characters.
+
+\1f
+File: standards.info,  Node: System Portability,  Next: CPU Portability,  Prev: Names,  Up: Writing C
+
+5.5 Portability between System Types
+====================================
+
+In the Unix world, "portability" refers to porting to different Unix
+versions.  For a GNU program, this kind of portability is desirable, but
+not paramount.
+
+   The primary purpose of GNU software is to run on top of the GNU
+kernel, compiled with the GNU C compiler, on various types of CPU.  So
+the kinds of portability that are absolutely necessary are quite
+limited.  But it is important to support Linux-based GNU systems, since
+they are the form of GNU that is popular.
+
+   Beyond that, it is good to support the other free operating systems
+(*BSD), and it is nice to support other Unix-like systems if you want
+to.  Supporting a variety of Unix-like systems is desirable, although
+not paramount.  It is usually not too hard, so you may as well do it.
+But you don't have to consider it an obligation, if it does turn out to
+be hard.
+
+   The easiest way to achieve portability to most Unix-like systems is
+to use Autoconf.  It's unlikely that your program needs to know more
+information about the host platform than Autoconf can provide, simply
+because most of the programs that need such knowledge have already been
+written.
+
+   Avoid using the format of semi-internal data bases (e.g.,
+directories) when there is a higher-level alternative (`readdir').
+
+   As for systems that are not like Unix, such as MSDOS, Windows, the
+Macintosh, VMS, and MVS, supporting them is often a lot of work.  When
+that is the case, it is better to spend your time adding features that
+will be useful on GNU and GNU/Linux, rather than on supporting other
+incompatible systems.
+
+   It is a good idea to define the "feature test macro" `_GNU_SOURCE'
+when compiling your C files.  When you compile on GNU or GNU/Linux,
+this will enable the declarations of GNU library extension functions,
+and that will usually give you a compiler error message if you define
+the same function names in some other way in your program.  (You don't
+have to actually _use_ these functions, if you prefer to make the
+program more portable to other systems.)
+
+   But whether or not you use these GNU extensions, you should avoid
+using their names for any other meanings.  Doing so would make it hard
+to move your code into other GNU programs.
+
+\1f
+File: standards.info,  Node: CPU Portability,  Next: System Functions,  Prev: System Portability,  Up: Writing C
+
+5.6 Portability between CPUs
+============================
+
+Even GNU systems will differ because of differences among CPU
+types--for example, difference in byte ordering and alignment
+requirements.  It is absolutely essential to handle these differences.
+However, don't make any effort to cater to the possibility that an
+`int' will be less than 32 bits.  We don't support 16-bit machines in
+GNU.
+
+   Similarly, don't make any effort to cater to the possibility that
+`long' will be smaller than predefined types like `size_t'.  For
+example, the following code is ok:
+
+     printf ("size = %lu\n", (unsigned long) sizeof array);
+     printf ("diff = %ld\n", (long) (pointer2 - pointer1));
+
+   1989 Standard C requires this to work, and we know of only one
+counterexample: 64-bit programs on Microsoft Windows IA-64.  We will
+leave it to those who want to port GNU programs to that environment to
+figure out how to do it.
+
+   Predefined file-size types like `off_t' are an exception: they are
+longer than `long' on many platforms, so code like the above won't work
+with them.  One way to print an `off_t' value portably is to print its
+digits yourself, one by one.
+
+   Don't assume that the address of an `int' object is also the address
+of its least-significant byte.  This is false on big-endian machines.
+Thus, don't make the following mistake:
+
+     int c;
+     ...
+     while ((c = getchar()) != EOF)
+       write(file_descriptor, &c, 1);
+
+   When calling functions, you need not worry about the difference
+between pointers of various types, or between pointers and integers.
+On most machines, there's no difference anyway.  As for the few
+machines where there is a difference, all of them support Standard C
+prototypes, so you can use prototypes (perhaps conditionalized to be
+active only in Standard C) to make the code work on those systems.
+
+   In certain cases, it is ok to pass integer and pointer arguments
+indiscriminately to the same function, and use no prototype on any
+system.  For example, many GNU programs have error-reporting functions
+that pass their arguments along to `printf' and friends:
+
+     error (s, a1, a2, a3)
+          char *s;
+          char *a1, *a2, *a3;
+     {
+       fprintf (stderr, "error: ");
+       fprintf (stderr, s, a1, a2, a3);
+     }
+
+In practice, this works on all machines, since a pointer is generally
+the widest possible kind of argument; it is much simpler than any
+"correct" alternative.  Be sure _not_ to use a prototype for such
+functions.
+
+   If you have decided to use Standard C, then you can instead define
+`error' using `stdarg.h', and pass the arguments along to `vfprintf'.
+
+   Avoid casting pointers to integers if you can.  Such casts greatly
+reduce portability, and in most programs they are easy to avoid.  In the
+cases where casting pointers to integers is essential--such as, a Lisp
+interpreter which stores type information as well as an address in one
+word--you'll have to make explicit provisions to handle different word
+sizes.  You will also need to make provision for systems in which the
+normal range of addresses you can get from `malloc' starts far away
+from zero.
+
+\1f
+File: standards.info,  Node: System Functions,  Next: Internationalization,  Prev: CPU Portability,  Up: Writing C
+
+5.7 Calling System Functions
+============================
+
+C implementations differ substantially.  Standard C reduces but does
+not eliminate the incompatibilities; meanwhile, many GNU packages still
+support pre-standard compilers because this is not hard to do.  This
+chapter gives recommendations for how to use the more-or-less standard C
+library functions to avoid unnecessary loss of portability.
+
+   * Don't use the return value of `sprintf'.  It returns the number of
+     characters written on some systems, but not on all systems.
+
+   * Be aware that `vfprintf' is not always available.
+
+   * `main' should be declared to return type `int'.  It should
+     terminate either by calling `exit' or by returning the integer
+     status code; make sure it cannot ever return an undefined value.
+
+   * Don't declare system functions explicitly.
+
+     Almost any declaration for a system function is wrong on some
+     system.  To minimize conflicts, leave it to the system header
+     files to declare system functions.  If the headers don't declare a
+     function, let it remain undeclared.
+
+     While it may seem unclean to use a function without declaring it,
+     in practice this works fine for most system library functions on
+     the systems where this really happens; thus, the disadvantage is
+     only theoretical.  By contrast, actual declarations have
+     frequently caused actual conflicts.
+
+   * If you must declare a system function, don't specify the argument
+     types.  Use an old-style declaration, not a Standard C prototype.
+     The more you specify about the function, the more likely a
+     conflict.
+
+   * In particular, don't unconditionally declare `malloc' or `realloc'.
+
+     Most GNU programs use those functions just once, in functions
+     conventionally named `xmalloc' and `xrealloc'.  These functions
+     call `malloc' and `realloc', respectively, and check the results.
+
+     Because `xmalloc' and `xrealloc' are defined in your program, you
+     can declare them in other files without any risk of type conflict.
+
+     On most systems, `int' is the same length as a pointer; thus, the
+     calls to `malloc' and `realloc' work fine.  For the few
+     exceptional systems (mostly 64-bit machines), you can use
+     *conditionalized* declarations of `malloc' and `realloc'--or put
+     these declarations in configuration files specific to those
+     systems.
+
+   * The string functions require special treatment.  Some Unix systems
+     have a header file `string.h'; others have `strings.h'.  Neither
+     file name is portable.  There are two things you can do: use
+     Autoconf to figure out which file to include, or don't include
+     either file.
+
+   * If you don't include either strings file, you can't get
+     declarations for the string functions from the header file in the
+     usual way.
+
+     That causes less of a problem than you might think.  The newer
+     standard string functions should be avoided anyway because many
+     systems still don't support them.  The string functions you can
+     use are these:
+
+          strcpy   strncpy   strcat   strncat
+          strlen   strcmp    strncmp
+          strchr   strrchr
+
+     The copy and concatenate functions work fine without a declaration
+     as long as you don't use their values.  Using their values without
+     a declaration fails on systems where the width of a pointer
+     differs from the width of `int', and perhaps in other cases.  It
+     is trivial to avoid using their values, so do that.
+
+     The compare functions and `strlen' work fine without a declaration
+     on most systems, possibly all the ones that GNU software runs on.
+     You may find it necessary to declare them *conditionally* on a few
+     systems.
+
+     The search functions must be declared to return `char *'.  Luckily,
+     there is no variation in the data type they return.  But there is
+     variation in their names.  Some systems give these functions the
+     names `index' and `rindex'; other systems use the names `strchr'
+     and `strrchr'.  Some systems support both pairs of names, but
+     neither pair works on all systems.
+
+     You should pick a single pair of names and use it throughout your
+     program.  (Nowadays, it is better to choose `strchr' and `strrchr'
+     for new programs, since those are the standard names.)  Declare
+     both of those names as functions returning `char *'.  On systems
+     which don't support those names, define them as macros in terms of
+     the other pair.  For example, here is what to put at the beginning
+     of your file (or in a header) if you want to use the names
+     `strchr' and `strrchr' throughout:
+
+          #ifndef HAVE_STRCHR
+          #define strchr index
+          #endif
+          #ifndef HAVE_STRRCHR
+          #define strrchr rindex
+          #endif
+
+          char *strchr ();
+          char *strrchr ();
+
+   Here we assume that `HAVE_STRCHR' and `HAVE_STRRCHR' are macros
+defined in systems where the corresponding functions exist.  One way to
+get them properly defined is to use Autoconf.
+
+\1f
+File: standards.info,  Node: Internationalization,  Next: Mmap,  Prev: System Functions,  Up: Writing C
+
+5.8 Internationalization
+========================
+
+GNU has a library called GNU gettext that makes it easy to translate the
+messages in a program into various languages.  You should use this
+library in every program.  Use English for the messages as they appear
+in the program, and let gettext provide the way to translate them into
+other languages.
+
+   Using GNU gettext involves putting a call to the `gettext' macro
+around each string that might need translation--like this:
+
+     printf (gettext ("Processing file `%s'..."));
+
+This permits GNU gettext to replace the string `"Processing file
+`%s'..."' with a translated version.
+
+   Once a program uses gettext, please make a point of writing calls to
+`gettext' when you add new strings that call for translation.
+
+   Using GNU gettext in a package involves specifying a "text domain
+name" for the package.  The text domain name is used to separate the
+translations for this package from the translations for other packages.
+Normally, the text domain name should be the same as the name of the
+package--for example, `fileutils' for the GNU file utilities.
+
+   To enable gettext to work well, avoid writing code that makes
+assumptions about the structure of words or sentences.  When you want
+the precise text of a sentence to vary depending on the data, use two or
+more alternative string constants each containing a complete sentences,
+rather than inserting conditionalized words or phrases into a single
+sentence framework.
+
+   Here is an example of what not to do:
+
+     printf ("%d file%s processed", nfiles,
+             nfiles != 1 ? "s" : "");
+
+The problem with that example is that it assumes that plurals are made
+by adding `s'.  If you apply gettext to the format string, like this,
+
+     printf (gettext ("%d file%s processed"), nfiles,
+             nfiles != 1 ? "s" : "");
+
+the message can use different words, but it will still be forced to use
+`s' for the plural.  Here is a better way:
+
+     printf ((nfiles != 1 ? "%d files processed"
+              : "%d file processed"),
+             nfiles);
+
+This way, you can apply gettext to each of the two strings
+independently:
+
+     printf ((nfiles != 1 ? gettext ("%d files processed")
+              : gettext ("%d file processed")),
+             nfiles);
+
+This can be any method of forming the plural of the word for "file", and
+also handles languages that require agreement in the word for
+"processed".
+
+   A similar problem appears at the level of sentence structure with
+this code:
+
+     printf ("#  Implicit rule search has%s been done.\n",
+             f->tried_implicit ? "" : " not");
+
+Adding `gettext' calls to this code cannot give correct results for all
+languages, because negation in some languages requires adding words at
+more than one place in the sentence.  By contrast, adding `gettext'
+calls does the job straightfowardly if the code starts out like this:
+
+     printf (f->tried_implicit
+             ? "#  Implicit rule search has been done.\n",
+             : "#  Implicit rule search has not been done.\n");
+
+\1f
+File: standards.info,  Node: Mmap,  Prev: Internationalization,  Up: Writing C
+
+5.9 Mmap
+========
+
+Don't assume that `mmap' either works on all files or fails for all
+files.  It may work on some files and fail on others.
+
+   The proper way to use `mmap' is to try it on the specific file for
+which you want to use it--and if `mmap' doesn't work, fall back on
+doing the job in another way using `read' and `write'.
+
+   The reason this precaution is needed is that the GNU kernel (the
+HURD) provides a user-extensible file system, in which there can be many
+different kinds of "ordinary files."  Many of them support `mmap', but
+some do not.  It is important to make programs handle all these kinds
+of files.
+
+\1f
+File: standards.info,  Node: Documentation,  Next: Managing Releases,  Prev: Writing C,  Up: Top
+
+6 Documenting Programs
+**********************
+
+A GNU program should ideally come with full free documentation, adequate
+for both reference and tutorial purposes.  If the package can be
+programmed or extended, the documentation should cover programming or
+extending it, as well as just using it.
+
+* Menu:
+
+* GNU Manuals::                 Writing proper manuals.
+* Doc Strings and Manuals::     Compiling doc strings doesn't make a manual.
+* Manual Structure Details::    Specific structure conventions.
+* License for Manuals::         Writing the distribution terms for a manual.
+* Manual Credits::              Giving credit to documentation contributors.
+* Printed Manuals::             Mentioning the printed manual.
+* NEWS File::                   NEWS files supplement manuals.
+* Change Logs::                 Recording Changes
+* Man Pages::                   Man pages are secondary.
+* Reading other Manuals::       How far you can go in learning
+                                from other manuals.
+
+\1f
+File: standards.info,  Node: GNU Manuals,  Next: Doc Strings and Manuals,  Up: Documentation
+
+6.1 GNU Manuals
+===============
+
+The preferred document format for the GNU system is the Texinfo
+formatting language.  Every GNU package should (ideally) have
+documentation in Texinfo both for reference and for learners.  Texinfo
+makes it possible to produce a good quality formatted book, using TeX,
+and to generate an Info file.  It is also possible to generate HTML
+output from Texinfo source.  See the Texinfo manual, either the
+hardcopy, or the on-line version available through `info' or the Emacs
+Info subsystem (`C-h i').
+
+   Nowadays some other formats such as Docbook and Sgmltexi can be
+converted automatically into Texinfo.  It is ok to produce the Texinfo
+documentation by conversion this way, as long as it gives good results.
+
+   Programmers often find it most natural to structure the documentation
+following the structure of the implementation, which they know.  But
+this structure is not necessarily good for explaining how to use the
+program; it may be irrelevant and confusing for a user.
+
+   At every level, from the sentences in a paragraph to the grouping of
+topics into separate manuals, the right way to structure documentation
+is according to the concepts and questions that a user will have in mind
+when reading it.  Sometimes this structure of ideas matches the
+structure of the implementation of the software being documented--but
+often they are different.  Often the most important part of learning to
+write good documentation is learning to notice when you are structuring
+the documentation like the implementation, and think about better
+alternatives.
+
+   For example, each program in the GNU system probably ought to be
+documented in one manual; but this does not mean each program should
+have its own manual.  That would be following the structure of the
+implementation, rather than the structure that helps the user
+understand.
+
+   Instead, each manual should cover a coherent _topic_.  For example,
+instead of a manual for `diff' and a manual for `diff3', we have one
+manual for "comparison of files" which covers both of those programs,
+as well as `cmp'.  By documenting these programs together, we can make
+the whole subject clearer.
+
+   The manual which discusses a program should certainly document all of
+the program's command-line options and all of its commands.  It should
+give examples of their use.  But don't organize the manual as a list of
+features.  Instead, organize it logically, by subtopics.  Address the
+questions that a user will ask when thinking about the job that the
+program does.
+
+   In general, a GNU manual should serve both as tutorial and reference.
+It should be set up for convenient access to each topic through Info,
+and for reading straight through (appendixes aside).  A GNU manual
+should give a good introduction to a beginner reading through from the
+start, and should also provide all the details that hackers want.  The
+Bison manual is a good example of this--please take a look at it to see
+what we mean.
+
+   That is not as hard as it first sounds.  Arrange each chapter as a
+logical breakdown of its topic, but order the sections, and write their
+text, so that reading the chapter straight through makes sense.  Do
+likewise when structuring the book into chapters, and when structuring a
+section into paragraphs.  The watchword is, _at each point, address the
+most fundamental and important issue raised by the preceding text._
+
+   If necessary, add extra chapters at the beginning of the manual which
+are purely tutorial and cover the basics of the subject.  These provide
+the framework for a beginner to understand the rest of the manual.  The
+Bison manual provides a good example of how to do this.
+
+   To serve as a reference, a manual should have an Index that list all
+the functions, variables, options, and important concepts that are part
+of the program.  One combined Index should do for a short manual, but
+sometimes for a complex package it is better to use multiple indices.
+The Texinfo manual includes advice on preparing good index entries, see
+*Note Making Index Entries: (texinfo)Index Entries, and see *Note
+Defining the Entries of an Index: (texinfo)Indexing Commands.
+
+   Don't use Unix man pages as a model for how to write GNU
+documentation; most of them are terse, badly structured, and give
+inadequate explanation of the underlying concepts.  (There are, of
+course, some exceptions.)  Also, Unix man pages use a particular format
+which is different from what we use in GNU manuals.
+
+   Please include an email address in the manual for where to report
+bugs _in the manual_.
+
+   Please do not use the term "pathname" that is used in Unix
+documentation; use "file name" (two words) instead.  We use the term
+"path" only for search paths, which are lists of directory names.
+
+   Please do not use the term "illegal" to refer to erroneous input to a
+computer program.  Please use "invalid" for this, and reserve the term
+"illegal" for activities punishable by law.
+
+\1f
+File: standards.info,  Node: Doc Strings and Manuals,  Next: Manual Structure Details,  Prev: GNU Manuals,  Up: Documentation
+
+6.2 Doc Strings and Manuals
+===========================
+
+Some programming systems, such as Emacs, provide a documentation string
+for each function, command or variable.  You may be tempted to write a
+reference manual by compiling the documentation strings and writing a
+little additional text to go around them--but you must not do it.  That
+approach is a fundamental mistake.  The text of well-written
+documentation strings will be entirely wrong for a manual.
+
+   A documentation string needs to stand alone--when it appears on the
+screen, there will be no other text to introduce or explain it.
+Meanwhile, it can be rather informal in style.
+
+   The text describing a function or variable in a manual must not stand
+alone; it appears in the context of a section or subsection.  Other text
+at the beginning of the section should explain some of the concepts, and
+should often make some general points that apply to several functions or
+variables.  The previous descriptions of functions and variables in the
+section will also have given information about the topic.  A description
+written to stand alone would repeat some of that information; this
+redundance looks bad.  Meanwhile, the informality that is acceptable in
+a documentation string is totally unacceptable in a manual.
+
+   The only good way to use documentation strings in writing a good
+manual is to use them as a source of information for writing good text.
+
+\1f
+File: standards.info,  Node: Manual Structure Details,  Next: License for Manuals,  Prev: Doc Strings and Manuals,  Up: Documentation
+
+6.3 Manual Structure Details
+============================
+
+The title page of the manual should state the version of the programs or
+packages documented in the manual.  The Top node of the manual should
+also contain this information.  If the manual is changing more
+frequently than or independent of the program, also state a version
+number for the manual in both of these places.
+
+   Each program documented in the manual should have a node named
+`PROGRAM Invocation' or `Invoking PROGRAM'.  This node (together with
+its subnodes, if any) should describe the program's command line
+arguments and how to run it (the sort of information people would look
+in a man page for).  Start with an `@example' containing a template for
+all the options and arguments that the program uses.
+
+   Alternatively, put a menu item in some menu whose item name fits one
+of the above patterns.  This identifies the node which that item points
+to as the node for this purpose, regardless of the node's actual name.
+
+   The `--usage' feature of the Info reader looks for such a node or
+menu item in order to find the relevant text, so it is essential for
+every Texinfo file to have one.
+
+   If one manual describes several programs, it should have such a node
+for each program described in the manual.
+
+\1f
+File: standards.info,  Node: License for Manuals,  Next: Manual Credits,  Prev: Manual Structure Details,  Up: Documentation
+
+6.4 License for Manuals
+=======================
+
+Please use the GNU Free Documentation License for all GNU manuals that
+are more than a few pages long.  Likewise for a collection of short
+documents--you only need one copy of the GNU FDL for the whole
+collection.  For a single short document, you can use a very permissive
+non-copyleft license, to avoid taking up space with a long license.
+
+   See `http://www.gnu.org/copyleft/fdl-howto.html' for more explanation
+of how to employ the GFDL.
+
+   Note that it is not obligatory to include a copy of the GNU GPL or
+GNU LGPL in a manual whose license is neither the GPL nor the LGPL.  It
+can be a good idea to include the program's license in a large manual;
+in a short manual, whose size would be increased considerably by
+including the program's license, it is probably better not to include
+it.
+
+\1f
+File: standards.info,  Node: Manual Credits,  Next: Printed Manuals,  Prev: License for Manuals,  Up: Documentation
+
+6.5 Manual Credits
+==================
+
+Please credit the principal human writers of the manual as the authors,
+on the title page of the manual.  If a company sponsored the work, thank
+the company in a suitable place in the manual, but do not cite the
+company as an author.
+
+\1f
+File: standards.info,  Node: Printed Manuals,  Next: NEWS File,  Prev: Manual Credits,  Up: Documentation
+
+6.6 Printed Manuals
+===================
+
+The FSF publishes some GNU manuals in printed form.  To encourage sales
+of these manuals, the on-line versions of the manual should mention at
+the very start that the printed manual is available and should point at
+information for getting it--for instance, with a link to the page
+`http://www.gnu.org/order/order.html'.  This should not be included in
+the printed manual, though, because there it is redundant.
+
+   It is also useful to explain in the on-line forms of the manual how
+the user can print out the manual from the sources.
+
+\1f
+File: standards.info,  Node: NEWS File,  Next: Change Logs,  Prev: Printed Manuals,  Up: Documentation
+
+6.7 The NEWS File
+=================
+
+In addition to its manual, the package should have a file named `NEWS'
+which contains a list of user-visible changes worth mentioning.  In
+each new release, add items to the front of the file and identify the
+version they pertain to.  Don't discard old items; leave them in the
+file after the newer items.  This way, a user upgrading from any
+previous version can see what is new.
+
+   If the `NEWS' file gets very long, move some of the older items into
+a file named `ONEWS' and put a note at the end referring the user to
+that file.
+
+\1f
+File: standards.info,  Node: Change Logs,  Next: Man Pages,  Prev: NEWS File,  Up: Documentation
+
+6.8 Change Logs
+===============
+
+Keep a change log to describe all the changes made to program source
+files.  The purpose of this is so that people investigating bugs in the
+future will know about the changes that might have introduced the bug.
+Often a new bug can be found by looking at what was recently changed.
+More importantly, change logs can help you eliminate conceptual
+inconsistencies between different parts of a program, by giving you a
+history of how the conflicting concepts arose and who they came from.
+
+* Menu:
+
+* Change Log Concepts::
+* Style of Change Logs::
+* Simple Changes::
+* Conditional Changes::
+* Indicating the Part Changed::
+
+\1f
+File: standards.info,  Node: Change Log Concepts,  Next: Style of Change Logs,  Up: Change Logs
+
+6.8.1 Change Log Concepts
+-------------------------
+
+You can think of the change log as a conceptual "undo list" which
+explains how earlier versions were different from the current version.
+People can see the current version; they don't need the change log to
+tell them what is in it.  What they want from a change log is a clear
+explanation of how the earlier version differed.
+
+   The change log file is normally called `ChangeLog' and covers an
+entire directory.  Each directory can have its own change log, or a
+directory can use the change log of its parent directory-it's up to you.
+
+   Another alternative is to record change log information with a
+version control system such as RCS or CVS.  This can be converted
+automatically to a `ChangeLog' file using `rcs2log'; in Emacs, the
+command `C-x v a' (`vc-update-change-log') does the job.
+
+   There's no need to describe the full purpose of the changes or how
+they work together.  If you think that a change calls for explanation,
+you're probably right.  Please do explain it--but please put the
+explanation in comments in the code, where people will see it whenever
+they see the code.  For example, "New function" is enough for the
+change log when you add a function, because there should be a comment
+before the function definition to explain what it does.
+
+   However, sometimes it is useful to write one line to describe the
+overall purpose of a batch of changes.
+
+   The easiest way to add an entry to `ChangeLog' is with the Emacs
+command `M-x add-change-log-entry'.  An entry should have an asterisk,
+the name of the changed file, and then in parentheses the name of the
+changed functions, variables or whatever, followed by a colon.  Then
+describe the changes you made to that function or variable.
+
+\1f
+File: standards.info,  Node: Style of Change Logs,  Next: Simple Changes,  Prev: Change Log Concepts,  Up: Change Logs
+
+6.8.2 Style of Change Logs
+--------------------------
+
+Here are some simple examples of change log entries, starting with the
+header line that says who made the change and when, followed by
+descriptions of specific changes.  (These examples are drawn from Emacs
+and GCC.)
+
+     1998-08-17  Richard Stallman  <rms@gnu.org>
+
+     * register.el (insert-register): Return nil.
+     (jump-to-register): Likewise.
+
+     * sort.el (sort-subr): Return nil.
+
+     * tex-mode.el (tex-bibtex-file, tex-file, tex-region):
+     Restart the tex shell if process is gone or stopped.
+     (tex-shell-running): New function.
+
+     * expr.c (store_one_arg): Round size up for move_block_to_reg.
+     (expand_call): Round up when emitting USE insns.
+     * stmt.c (assign_parms): Round size up for move_block_from_reg.
+
+   It's important to name the changed function or variable in full.
+Don't abbreviate function or variable names, and don't combine them.
+Subsequent maintainers will often search for a function name to find all
+the change log entries that pertain to it; if you abbreviate the name,
+they won't find it when they search.
+
+   For example, some people are tempted to abbreviate groups of function
+names by writing `* register.el ({insert,jump-to}-register)'; this is
+not a good idea, since searching for `jump-to-register' or
+`insert-register' would not find that entry.
+
+   Separate unrelated change log entries with blank lines.  When two
+entries represent parts of the same change, so that they work together,
+then don't put blank lines between them.  Then you can omit the file
+name and the asterisk when successive entries are in the same file.
+
+   Break long lists of function names by closing continued lines with
+`)', rather than `,', and opening the continuation with `(' as in this
+example:
+
+     * keyboard.c (menu_bar_items, tool_bar_items)
+     (Fexecute_extended_command): Deal with `keymap' property.
+
+\1f
+File: standards.info,  Node: Simple Changes,  Next: Conditional Changes,  Prev: Style of Change Logs,  Up: Change Logs
+
+6.8.3 Simple Changes
+--------------------
+
+Certain simple kinds of changes don't need much detail in the change
+log.
+
+   When you change the calling sequence of a function in a simple
+fashion, and you change all the callers of the function to use the new
+calling sequence, there is no need to make individual entries for all
+the callers that you changed.  Just write in the entry for the function
+being called, "All callers changed"--like this:
+
+     * keyboard.c (Fcommand_execute): New arg SPECIAL.
+     All callers changed.
+
+   When you change just comments or doc strings, it is enough to write
+an entry for the file, without mentioning the functions.  Just "Doc
+fixes" is enough for the change log.
+
+   There's no need to make change log entries for documentation files.
+This is because documentation is not susceptible to bugs that are hard
+to fix.  Documentation does not consist of parts that must interact in a
+precisely engineered fashion.  To correct an error, you need not know
+the history of the erroneous passage; it is enough to compare what the
+documentation says with the way the program actually works.
+
+\1f
+File: standards.info,  Node: Conditional Changes,  Next: Indicating the Part Changed,  Prev: Simple Changes,  Up: Change Logs
+
+6.8.4 Conditional Changes
+-------------------------
+
+C programs often contain compile-time `#if' conditionals.  Many changes
+are conditional; sometimes you add a new definition which is entirely
+contained in a conditional.  It is very useful to indicate in the
+change log the conditions for which the change applies.
+
+   Our convention for indicating conditional changes is to use square
+brackets around the name of the condition.
+
+   Here is a simple example, describing a change which is conditional
+but does not have a function or entity name associated with it:
+
+     * xterm.c [SOLARIS2]: Include string.h.
+
+   Here is an entry describing a new definition which is entirely
+conditional.  This new definition for the macro `FRAME_WINDOW_P' is
+used only when `HAVE_X_WINDOWS' is defined:
+
+     * frame.h [HAVE_X_WINDOWS] (FRAME_WINDOW_P): Macro defined.
+
+   Here is an entry for a change within the function `init_display',
+whose definition as a whole is unconditional, but the changes themselves
+are contained in a `#ifdef HAVE_LIBNCURSES' conditional:
+
+     * dispnew.c (init_display) [HAVE_LIBNCURSES]: If X, call tgetent.
+
+   Here is an entry for a change that takes affect only when a certain
+macro is _not_ defined:
+
+     (gethostname) [!HAVE_SOCKETS]: Replace with winsock version.
+
+\1f
+File: standards.info,  Node: Indicating the Part Changed,  Prev: Conditional Changes,  Up: Change Logs
+
+6.8.5 Indicating the Part Changed
+---------------------------------
+
+Indicate the part of a function which changed by using angle brackets
+enclosing an indication of what the changed part does.  Here is an entry
+for a change in the part of the function `sh-while-getopts' that deals
+with `sh' commands:
+
+     * progmodes/sh-script.el (sh-while-getopts) <sh>: Handle case that
+     user-specified option string is empty.
+
+\1f
+File: standards.info,  Node: Man Pages,  Next: Reading other Manuals,  Prev: Change Logs,  Up: Documentation
+
+6.9 Man Pages
+=============
+
+In the GNU project, man pages are secondary.  It is not necessary or
+expected for every GNU program to have a man page, but some of them do.
+It's your choice whether to include a man page in your program.
+
+   When you make this decision, consider that supporting a man page
+requires continual effort each time the program is changed.  The time
+you spend on the man page is time taken away from more useful work.
+
+   For a simple program which changes little, updating the man page may
+be a small job.  Then there is little reason not to include a man page,
+if you have one.
+
+   For a large program that changes a great deal, updating a man page
+may be a substantial burden.  If a user offers to donate a man page,
+you may find this gift costly to accept.  It may be better to refuse
+the man page unless the same person agrees to take full responsibility
+for maintaining it--so that you can wash your hands of it entirely.  If
+this volunteer later ceases to do the job, then don't feel obliged to
+pick it up yourself; it may be better to withdraw the man page from the
+distribution until someone else agrees to update it.
+
+   When a program changes only a little, you may feel that the
+discrepancies are small enough that the man page remains useful without
+updating.  If so, put a prominent note near the beginning of the man
+page explaining that you don't maintain it and that the Texinfo manual
+is more authoritative.  The note should say how to access the Texinfo
+documentation.
+
+\1f
+File: standards.info,  Node: Reading other Manuals,  Prev: Man Pages,  Up: Documentation
+
+6.10 Reading other Manuals
+==========================
+
+There may be non-free books or documentation files that describe the
+program you are documenting.
+
+   It is ok to use these documents for reference, just as the author of
+a new algebra textbook can read other books on algebra.  A large portion
+of any non-fiction book consists of facts, in this case facts about how
+a certain program works, and these facts are necessarily the same for
+everyone who writes about the subject.  But be careful not to copy your
+outline structure, wording, tables or examples from preexisting non-free
+documentation.  Copying from free documentation may be ok; please check
+with the FSF about the individual case.
+
+\1f
+File: standards.info,  Node: Managing Releases,  Next: References,  Prev: Documentation,  Up: Top
+
+7 The Release Process
+*********************
+
+Making a release is more than just bundling up your source files in a
+tar file and putting it up for FTP.  You should set up your software so
+that it can be configured to run on a variety of systems.  Your Makefile
+should conform to the GNU standards described below, and your directory
+layout should also conform to the standards discussed below.  Doing so
+makes it easy to include your package into the larger framework of all
+GNU software.
+
+* Menu:
+
+* Configuration::               How Configuration Should Work
+* Makefile Conventions::        Makefile Conventions
+* Releases::                    Making Releases
+
+\1f
+File: standards.info,  Node: Configuration,  Next: Makefile Conventions,  Up: Managing Releases
+
+7.1 How Configuration Should Work
+=================================
+
+Each GNU distribution should come with a shell script named
+`configure'.  This script is given arguments which describe the kind of
+machine and system you want to compile the program for.
+
+   The `configure' script must record the configuration options so that
+they affect compilation.
+
+   One way to do this is to make a link from a standard name such as
+`config.h' to the proper configuration file for the chosen system.  If
+you use this technique, the distribution should _not_ contain a file
+named `config.h'.  This is so that people won't be able to build the
+program without configuring it first.
+
+   Another thing that `configure' can do is to edit the Makefile.  If
+you do this, the distribution should _not_ contain a file named
+`Makefile'.  Instead, it should include a file `Makefile.in' which
+contains the input used for editing.  Once again, this is so that people
+won't be able to build the program without configuring it first.
+
+   If `configure' does write the `Makefile', then `Makefile' should
+have a target named `Makefile' which causes `configure' to be rerun,
+setting up the same configuration that was set up last time.  The files
+that `configure' reads should be listed as dependencies of `Makefile'.
+
+   All the files which are output from the `configure' script should
+have comments at the beginning explaining that they were generated
+automatically using `configure'.  This is so that users won't think of
+trying to edit them by hand.
+
+   The `configure' script should write a file named `config.status'
+which describes which configuration options were specified when the
+program was last configured.  This file should be a shell script which,
+if run, will recreate the same configuration.
+
+   The `configure' script should accept an option of the form
+`--srcdir=DIRNAME' to specify the directory where sources are found (if
+it is not the current directory).  This makes it possible to build the
+program in a separate directory, so that the actual source directory is
+not modified.
+
+   If the user does not specify `--srcdir', then `configure' should
+check both `.' and `..' to see if it can find the sources.  If it finds
+the sources in one of these places, it should use them from there.
+Otherwise, it should report that it cannot find the sources, and should
+exit with nonzero status.
+
+   Usually the easy way to support `--srcdir' is by editing a
+definition of `VPATH' into the Makefile.  Some rules may need to refer
+explicitly to the specified source directory.  To make this possible,
+`configure' can add to the Makefile a variable named `srcdir' whose
+value is precisely the specified directory.
+
+   The `configure' script should also take an argument which specifies
+the type of system to build the program for.  This argument should look
+like this:
+
+     CPU-COMPANY-SYSTEM
+
+   For example, a Sun 3 might be `m68k-sun-sunos4.1'.
+
+   The `configure' script needs to be able to decode all plausible
+alternatives for how to describe a machine.  Thus, `sun3-sunos4.1'
+would be a valid alias.  For many programs, `vax-dec-ultrix' would be
+an alias for `vax-dec-bsd', simply because the differences between
+Ultrix and BSD are rarely noticeable, but a few programs might need to
+distinguish them.
+
+   There is a shell script called `config.sub' that you can use as a
+subroutine to validate system types and canonicalize aliases.
+
+   Other options are permitted to specify in more detail the software
+or hardware present on the machine, and include or exclude optional
+parts of the package:
+
+`--enable-FEATURE[=PARAMETER]'
+     Configure the package to build and install an optional user-level
+     facility called FEATURE.  This allows users to choose which
+     optional features to include.  Giving an optional PARAMETER of
+     `no' should omit FEATURE, if it is built by default.
+
+     No `--enable' option should *ever* cause one feature to replace
+     another.  No `--enable' option should ever substitute one useful
+     behavior for another useful behavior.  The only proper use for
+     `--enable' is for questions of whether to build part of the program
+     or exclude it.
+
+`--with-PACKAGE'
+     The package PACKAGE will be installed, so configure this package
+     to work with PACKAGE.
+
+     Possible values of PACKAGE include `gnu-as' (or `gas'), `gnu-ld',
+     `gnu-libc', `gdb', `x', and `x-toolkit'.
+
+     Do not use a `--with' option to specify the file name to use to
+     find certain files.  That is outside the scope of what `--with'
+     options are for.
+
+   All `configure' scripts should accept all of these "detail" options,
+whether or not they make any difference to the particular package at
+hand.  In particular, they should accept any option that starts with
+`--with-' or `--enable-'.  This is so users will be able to configure
+an entire GNU source tree at once with a single set of options.
+
+   You will note that the categories `--with-' and `--enable-' are
+narrow: they *do not* provide a place for any sort of option you might
+think of.  That is deliberate.  We want to limit the possible
+configuration options in GNU software.  We do not want GNU programs to
+have idiosyncratic configuration options.
+
+   Packages that perform part of the compilation process may support
+cross-compilation.  In such a case, the host and target machines for the
+program may be different.
+
+   The `configure' script should normally treat the specified type of
+system as both the host and the target, thus producing a program which
+works for the same type of machine that it runs on.
+
+   To configure a cross-compiler, cross-assembler, or what have you, you
+should specify a target different from the host, using the configure
+option `--target=TARGETTYPE'.  The syntax for TARGETTYPE is the same as
+for the host type.  So the command would look like this:
+
+     ./configure HOSTTYPE --target=TARGETTYPE
+
+   Programs for which cross-operation is not meaningful need not accept
+the `--target' option, because configuring an entire operating system
+for cross-operation is not a meaningful operation.
+
+   Bootstrapping a cross-compiler requires compiling it on a machine
+other than the host it will run on.  Compilation packages accept a
+configuration option `--build=BUILDTYPE' for specifying the
+configuration on which you will compile them, but the configure script
+should normally guess the build machine type (using `config.guess'), so
+this option is probably not necessary.  The host and target types
+normally default from the build type, so in bootstrapping a
+cross-compiler you must specify them both explicitly.
+
+   Some programs have ways of configuring themselves automatically.  If
+your program is set up to do this, your `configure' script can simply
+ignore most of its arguments.
+
+\1f
+File: standards.info,  Node: Makefile Conventions,  Next: Releases,  Prev: Configuration,  Up: Managing Releases
+
+7.2 Makefile Conventions
+========================
+
+This node describes conventions for writing the Makefiles for GNU
+programs.  Using Automake will help you write a Makefile that follows
+these conventions.
+
+* Menu:
+
+* Makefile Basics::             General Conventions for Makefiles
+* Utilities in Makefiles::      Utilities in Makefiles
+* Command Variables::           Variables for Specifying Commands
+* Directory Variables::         Variables for Installation Directories
+* Standard Targets::            Standard Targets for Users
+* Install Command Categories::  Three categories of commands in the `install'
+                                  rule: normal, pre-install and post-install.
+
+\1f
+File: standards.info,  Node: Makefile Basics,  Next: Utilities in Makefiles,  Up: Makefile Conventions
+
+7.2.1 General Conventions for Makefiles
+---------------------------------------
+
+Every Makefile should contain this line:
+
+     SHELL = /bin/sh
+
+to avoid trouble on systems where the `SHELL' variable might be
+inherited from the environment.  (This is never a problem with GNU
+`make'.)
+
+   Different `make' programs have incompatible suffix lists and
+implicit rules, and this sometimes creates confusion or misbehavior.  So
+it is a good idea to set the suffix list explicitly using only the
+suffixes you need in the particular Makefile, like this:
+
+     .SUFFIXES:
+     .SUFFIXES: .c .o
+
+The first line clears out the suffix list, the second introduces all
+suffixes which may be subject to implicit rules in this Makefile.
+
+   Don't assume that `.' is in the path for command execution.  When
+you need to run programs that are a part of your package during the
+make, please make sure that it uses `./' if the program is built as
+part of the make or `$(srcdir)/' if the file is an unchanging part of
+the source code.  Without one of these prefixes, the current search
+path is used.
+
+   The distinction between `./' (the "build directory") and
+`$(srcdir)/' (the "source directory") is important because users can
+build in a separate directory using the `--srcdir' option to
+`configure'.  A rule of the form:
+
+     foo.1 : foo.man sedscript
+             sed -e sedscript foo.man > foo.1
+
+will fail when the build directory is not the source directory, because
+`foo.man' and `sedscript' are in the source directory.
+
+   When using GNU `make', relying on `VPATH' to find the source file
+will work in the case where there is a single dependency file, since
+the `make' automatic variable `$<' will represent the source file
+wherever it is.  (Many versions of `make' set `$<' only in implicit
+rules.)  A Makefile target like
+
+     foo.o : bar.c
+             $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o
+
+should instead be written as
+
+     foo.o : bar.c
+             $(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@
+
+in order to allow `VPATH' to work correctly.  When the target has
+multiple dependencies, using an explicit `$(srcdir)' is the easiest way
+to make the rule work well.  For example, the target above for `foo.1'
+is best written as:
+
+     foo.1 : foo.man sedscript
+             sed -e $(srcdir)/sedscript $(srcdir)/foo.man > $@
+
+   GNU distributions usually contain some files which are not source
+files--for example, Info files, and the output from Autoconf, Automake,
+Bison or Flex.  Since these files normally appear in the source
+directory, they should always appear in the source directory, not in the
+build directory.  So Makefile rules to update them should put the
+updated files in the source directory.
+
+   However, if a file does not appear in the distribution, then the
+Makefile should not put it in the source directory, because building a
+program in ordinary circumstances should not modify the source directory
+in any way.
+
+   Try to make the build and installation targets, at least (and all
+their subtargets) work correctly with a parallel `make'.
+
+\1f
+File: standards.info,  Node: Utilities in Makefiles,  Next: Command Variables,  Prev: Makefile Basics,  Up: Makefile Conventions
+
+7.2.2 Utilities in Makefiles
+----------------------------
+
+Write the Makefile commands (and any shell scripts, such as
+`configure') to run in `sh', not in `csh'.  Don't use any special
+features of `ksh' or `bash'.
+
+   The `configure' script and the Makefile rules for building and
+installation should not use any utilities directly except these:
+
+     cat cmp cp diff echo egrep expr false grep install-info
+     ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true
+
+   The compression program `gzip' can be used in the `dist' rule.
+
+   Stick to the generally supported options for these programs.  For
+example, don't use `mkdir -p', convenient as it may be, because most
+systems don't support it.
+
+   It is a good idea to avoid creating symbolic links in makefiles,
+since a few systems don't support them.
+
+   The Makefile rules for building and installation can also use
+compilers and related programs, but should do so via `make' variables
+so that the user can substitute alternatives.  Here are some of the
+programs we mean:
+
+     ar bison cc flex install ld ldconfig lex
+     make makeinfo ranlib texi2dvi yacc
+
+   Use the following `make' variables to run those programs:
+
+     $(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX)
+     $(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC)
+
+   When you use `ranlib' or `ldconfig', you should make sure nothing
+bad happens if the system does not have the program in question.
+Arrange to ignore an error from that command, and print a message before
+the command to tell the user that failure of this command does not mean
+a problem.  (The Autoconf `AC_PROG_RANLIB' macro can help with this.)
+
+   If you use symbolic links, you should implement a fallback for
+systems that don't have symbolic links.
+
+   Additional utilities that can be used via Make variables are:
+
+     chgrp chmod chown mknod
+
+   It is ok to use other utilities in Makefile portions (or scripts)
+intended only for particular systems where you know those utilities
+exist.
+
+\1f
+File: standards.info,  Node: Command Variables,  Next: Directory Variables,  Prev: Utilities in Makefiles,  Up: Makefile Conventions
+
+7.2.3 Variables for Specifying Commands
+---------------------------------------
+
+Makefiles should provide variables for overriding certain commands,
+options, and so on.
+
+   In particular, you should run most utility programs via variables.
+Thus, if you use Bison, have a variable named `BISON' whose default
+value is set with `BISON = bison', and refer to it with `$(BISON)'
+whenever you need to use Bison.
+
+   File management utilities such as `ln', `rm', `mv', and so on, need
+not be referred to through variables in this way, since users don't
+need to replace them with other programs.
+
+   Each program-name variable should come with an options variable that
+is used to supply options to the program.  Append `FLAGS' to the
+program-name variable name to get the options variable name--for
+example, `BISONFLAGS'.  (The names `CFLAGS' for the C compiler,
+`YFLAGS' for yacc, and `LFLAGS' for lex, are exceptions to this rule,
+but we keep them because they are standard.)  Use `CPPFLAGS' in any
+compilation command that runs the preprocessor, and use `LDFLAGS' in
+any compilation command that does linking as well as in any direct use
+of `ld'.
+
+   If there are C compiler options that _must_ be used for proper
+compilation of certain files, do not include them in `CFLAGS'.  Users
+expect to be able to specify `CFLAGS' freely themselves.  Instead,
+arrange to pass the necessary options to the C compiler independently
+of `CFLAGS', by writing them explicitly in the compilation commands or
+by defining an implicit rule, like this:
+
+     CFLAGS = -g
+     ALL_CFLAGS = -I. $(CFLAGS)
+     .c.o:
+             $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
+
+   Do include the `-g' option in `CFLAGS', because that is not
+_required_ for proper compilation.  You can consider it a default that
+is only recommended.  If the package is set up so that it is compiled
+with GCC by default, then you might as well include `-O' in the default
+value of `CFLAGS' as well.
+
+   Put `CFLAGS' last in the compilation command, after other variables
+containing compiler options, so the user can use `CFLAGS' to override
+the others.
+
+   `CFLAGS' should be used in every invocation of the C compiler, both
+those which do compilation and those which do linking.
+
+   Every Makefile should define the variable `INSTALL', which is the
+basic command for installing a file into the system.
+
+   Every Makefile should also define the variables `INSTALL_PROGRAM'
+and `INSTALL_DATA'.  (The default for `INSTALL_PROGRAM' should be
+`$(INSTALL)'; the default for `INSTALL_DATA' should be `${INSTALL} -m
+644'.)  Then it should use those variables as the commands for actual
+installation, for executables and nonexecutables respectively.  Use
+these variables as follows:
+
+     $(INSTALL_PROGRAM) foo $(bindir)/foo
+     $(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a
+
+   Optionally, you may prepend the value of `DESTDIR' to the target
+filename.  Doing this allows the installer to create a snapshot of the
+installation to be copied onto the real target filesystem later.  Do not
+set the value of `DESTDIR' in your Makefile, and do not include it in
+any installed files.  With support for `DESTDIR', the above examples
+become:
+
+     $(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo
+     $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a
+
+Always use a file name, not a directory name, as the second argument of
+the installation commands.  Use a separate command for each file to be
+installed.
+
+\1f
+File: standards.info,  Node: Directory Variables,  Next: Standard Targets,  Prev: Command Variables,  Up: Makefile Conventions
+
+7.2.4 Variables for Installation Directories
+--------------------------------------------
+
+Installation directories should always be named by variables, so it is
+easy to install in a nonstandard place.  The standard names for these
+variables are described below.  They are based on a standard filesystem
+layout; variants of it are used in SVR4, 4.4BSD, GNU/Linux, Ultrix v4,
+and other modern operating systems.
+
+   These two variables set the root for the installation.  All the other
+installation directories should be subdirectories of one of these two,
+and nothing should be directly installed into these two directories.
+
+`prefix'
+     A prefix used in constructing the default values of the variables
+     listed below.  The default value of `prefix' should be
+     `/usr/local'.  When building the complete GNU system, the prefix
+     will be empty and `/usr' will be a symbolic link to `/'.  (If you
+     are using Autoconf, write it as `@prefix@'.)
+
+     Running `make install' with a different value of `prefix' from the
+     one used to build the program should _not_ recompile the program.
+
+`exec_prefix'
+     A prefix used in constructing the default values of some of the
+     variables listed below.  The default value of `exec_prefix' should
+     be `$(prefix)'.  (If you are using Autoconf, write it as
+     `@exec_prefix@'.)
+
+     Generally, `$(exec_prefix)' is used for directories that contain
+     machine-specific files (such as executables and subroutine
+     libraries), while `$(prefix)' is used directly for other
+     directories.
+
+     Running `make install' with a different value of `exec_prefix'
+     from the one used to build the program should _not_ recompile the
+     program.
+
+   Executable programs are installed in one of the following
+directories.
+
+`bindir'
+     The directory for installing executable programs that users can
+     run.  This should normally be `/usr/local/bin', but write it as
+     `$(exec_prefix)/bin'.  (If you are using Autoconf, write it as
+     `@bindir@'.)
+
+`sbindir'
+     The directory for installing executable programs that can be run
+     from the shell, but are only generally useful to system
+     administrators.  This should normally be `/usr/local/sbin', but
+     write it as `$(exec_prefix)/sbin'.  (If you are using Autoconf,
+     write it as `@sbindir@'.)
+
+`libexecdir'
+     The directory for installing executable programs to be run by other
+     programs rather than by users.  This directory should normally be
+     `/usr/local/libexec', but write it as `$(exec_prefix)/libexec'.
+     (If you are using Autoconf, write it as `@libexecdir@'.)
+
+   Data files used by the program during its execution are divided into
+categories in two ways.
+
+   * Some files are normally modified by programs; others are never
+     normally modified (though users may edit some of these).
+
+   * Some files are architecture-independent and can be shared by all
+     machines at a site; some are architecture-dependent and can be
+     shared only by machines of the same kind and operating system;
+     others may never be shared between two machines.
+
+   This makes for six different possibilities.  However, we want to
+discourage the use of architecture-dependent files, aside from object
+files and libraries.  It is much cleaner to make other data files
+architecture-independent, and it is generally not hard.
+
+   Therefore, here are the variables Makefiles should use to specify
+directories:
+
+`datadir'
+     The directory for installing read-only architecture independent
+     data files.  This should normally be `/usr/local/share', but write
+     it as `$(prefix)/share'.  (If you are using Autoconf, write it as
+     `@datadir@'.)  As a special exception, see `$(infodir)' and
+     `$(includedir)' below.
+
+`sysconfdir'
+     The directory for installing read-only data files that pertain to a
+     single machine-that is to say, files for configuring a host.
+     Mailer and network configuration files, `/etc/passwd', and so
+     forth belong here.  All the files in this directory should be
+     ordinary ASCII text files.  This directory should normally be
+     `/usr/local/etc', but write it as `$(prefix)/etc'.  (If you are
+     using Autoconf, write it as `@sysconfdir@'.)
+
+     Do not install executables here in this directory (they probably
+     belong in `$(libexecdir)' or `$(sbindir)').  Also do not install
+     files that are modified in the normal course of their use (programs
+     whose purpose is to change the configuration of the system
+     excluded).  Those probably belong in `$(localstatedir)'.
+
+`sharedstatedir'
+     The directory for installing architecture-independent data files
+     which the programs modify while they run.  This should normally be
+     `/usr/local/com', but write it as `$(prefix)/com'.  (If you are
+     using Autoconf, write it as `@sharedstatedir@'.)
+
+`localstatedir'
+     The directory for installing data files which the programs modify
+     while they run, and that pertain to one specific machine.  Users
+     should never need to modify files in this directory to configure
+     the package's operation; put such configuration information in
+     separate files that go in `$(datadir)' or `$(sysconfdir)'.
+     `$(localstatedir)' should normally be `/usr/local/var', but write
+     it as `$(prefix)/var'.  (If you are using Autoconf, write it as
+     `@localstatedir@'.)
+
+`libdir'
+     The directory for object files and libraries of object code.  Do
+     not install executables here, they probably ought to go in
+     `$(libexecdir)' instead.  The value of `libdir' should normally be
+     `/usr/local/lib', but write it as `$(exec_prefix)/lib'.  (If you
+     are using Autoconf, write it as `@libdir@'.)
+
+`infodir'
+     The directory for installing the Info files for this package.  By
+     default, it should be `/usr/local/info', but it should be written
+     as `$(prefix)/info'.  (If you are using Autoconf, write it as
+     `@infodir@'.)
+
+`lispdir'
+     The directory for installing any Emacs Lisp files in this package.
+     By default, it should be `/usr/local/share/emacs/site-lisp', but
+     it should be written as `$(prefix)/share/emacs/site-lisp'.
+
+     If you are using Autoconf, write the default as `@lispdir@'.  In
+     order to make `@lispdir@' work, you need the following lines in
+     your `configure.in' file:
+
+          lispdir='${datadir}/emacs/site-lisp'
+          AC_SUBST(lispdir)
+
+`includedir'
+     The directory for installing header files to be included by user
+     programs with the C `#include' preprocessor directive.  This
+     should normally be `/usr/local/include', but write it as
+     `$(prefix)/include'.  (If you are using Autoconf, write it as
+     `@includedir@'.)
+
+     Most compilers other than GCC do not look for header files in
+     directory `/usr/local/include'.  So installing the header files
+     this way is only useful with GCC.  Sometimes this is not a problem
+     because some libraries are only really intended to work with GCC.
+     But some libraries are intended to work with other compilers.
+     They should install their header files in two places, one
+     specified by `includedir' and one specified by `oldincludedir'.
+
+`oldincludedir'
+     The directory for installing `#include' header files for use with
+     compilers other than GCC.  This should normally be `/usr/include'.
+     (If you are using Autoconf, you can write it as `@oldincludedir@'.)
+
+     The Makefile commands should check whether the value of
+     `oldincludedir' is empty.  If it is, they should not try to use
+     it; they should cancel the second installation of the header files.
+
+     A package should not replace an existing header in this directory
+     unless the header came from the same package.  Thus, if your Foo
+     package provides a header file `foo.h', then it should install the
+     header file in the `oldincludedir' directory if either (1) there
+     is no `foo.h' there or (2) the `foo.h' that exists came from the
+     Foo package.
+
+     To tell whether `foo.h' came from the Foo package, put a magic
+     string in the file--part of a comment--and `grep' for that string.
+
+   Unix-style man pages are installed in one of the following:
+
+`mandir'
+     The top-level directory for installing the man pages (if any) for
+     this package.  It will normally be `/usr/local/man', but you should
+     write it as `$(prefix)/man'.  (If you are using Autoconf, write it
+     as `@mandir@'.)
+
+`man1dir'
+     The directory for installing section 1 man pages.  Write it as
+     `$(mandir)/man1'.
+
+`man2dir'
+     The directory for installing section 2 man pages.  Write it as
+     `$(mandir)/man2'
+
+`...'
+     *Don't make the primary documentation for any GNU software be a
+     man page.  Write a manual in Texinfo instead.  Man pages are just
+     for the sake of people running GNU software on Unix, which is a
+     secondary application only.*
+
+`manext'
+     The file name extension for the installed man page.  This should
+     contain a period followed by the appropriate digit; it should
+     normally be `.1'.
+
+`man1ext'
+     The file name extension for installed section 1 man pages.
+
+`man2ext'
+     The file name extension for installed section 2 man pages.
+
+`...'
+     Use these names instead of `manext' if the package needs to
+     install man pages in more than one section of the manual.
+
+   And finally, you should set the following variable:
+
+`srcdir'
+     The directory for the sources being compiled.  The value of this
+     variable is normally inserted by the `configure' shell script.
+     (If you are using Autconf, use `srcdir = @srcdir@'.)
+
+   For example:
+
+     # Common prefix for installation directories.
+     # NOTE: This directory must exist when you start the install.
+     prefix = /usr/local
+     exec_prefix = $(prefix)
+     # Where to put the executable for the command `gcc'.
+     bindir = $(exec_prefix)/bin
+     # Where to put the directories used by the compiler.
+     libexecdir = $(exec_prefix)/libexec
+     # Where to put the Info files.
+     infodir = $(prefix)/info
+
+   If your program installs a large number of files into one of the
+standard user-specified directories, it might be useful to group them
+into a subdirectory particular to that program.  If you do this, you
+should write the `install' rule to create these subdirectories.
+
+   Do not expect the user to include the subdirectory name in the value
+of any of the variables listed above.  The idea of having a uniform set
+of variable names for installation directories is to enable the user to
+specify the exact same values for several different GNU packages.  In
+order for this to be useful, all the packages must be designed so that
+they will work sensibly when the user does so.
+
+\1f
+File: standards.info,  Node: Standard Targets,  Next: Install Command Categories,  Prev: Directory Variables,  Up: Makefile Conventions
+
+7.2.5 Standard Targets for Users
+--------------------------------
+
+All GNU programs should have the following targets in their Makefiles:
+
+`all'
+     Compile the entire program.  This should be the default target.
+     This target need not rebuild any documentation files; Info files
+     should normally be included in the distribution, and DVI files
+     should be made only when explicitly asked for.
+
+     By default, the Make rules should compile and link with `-g', so
+     that executable programs have debugging symbols.  Users who don't
+     mind being helpless can strip the executables later if they wish.
+
+`install'
+     Compile the program and copy the executables, libraries, and so on
+     to the file names where they should reside for actual use.  If
+     there is a simple test to verify that a program is properly
+     installed, this target should run that test.
+
+     Do not strip executables when installing them.  Devil-may-care
+     users can use the `install-strip' target to do that.
+
+     If possible, write the `install' target rule so that it does not
+     modify anything in the directory where the program was built,
+     provided `make all' has just been done.  This is convenient for
+     building the program under one user name and installing it under
+     another.
+
+     The commands should create all the directories in which files are
+     to be installed, if they don't already exist.  This includes the
+     directories specified as the values of the variables `prefix' and
+     `exec_prefix', as well as all subdirectories that are needed.  One
+     way to do this is by means of an `installdirs' target as described
+     below.
+
+     Use `-' before any command for installing a man page, so that
+     `make' will ignore any errors.  This is in case there are systems
+     that don't have the Unix man page documentation system installed.
+
+     The way to install Info files is to copy them into `$(infodir)'
+     with `$(INSTALL_DATA)' (*note Command Variables::), and then run
+     the `install-info' program if it is present.  `install-info' is a
+     program that edits the Info `dir' file to add or update the menu
+     entry for the given Info file; it is part of the Texinfo package.
+     Here is a sample rule to install an Info file:
+
+          $(DESTDIR)$(infodir)/foo.info: foo.info
+                  $(POST_INSTALL)
+          # There may be a newer info file in . than in srcdir.
+                  -if test -f foo.info; then d=.; \
+                   else d=$(srcdir); fi; \
+                  $(INSTALL_DATA) $$d/foo.info $(DESTDIR)$@; \
+          # Run install-info only if it exists.
+          # Use `if' instead of just prepending `-' to the
+          # line so we notice real errors from install-info.
+          # We use `$(SHELL) -c' because some shells do not
+          # fail gracefully when there is an unknown command.
+                  if $(SHELL) -c 'install-info --version' \
+                     >/dev/null 2>&1; then \
+                    install-info --dir-file=$(DESTDIR)$(infodir)/dir \
+                                 $(DESTDIR)$(infodir)/foo.info; \
+                  else true; fi
+
+     When writing the `install' target, you must classify all the
+     commands into three categories: normal ones, "pre-installation"
+     commands and "post-installation" commands.  *Note Install Command
+     Categories::.
+
+`uninstall'
+     Delete all the installed files--the copies that the `install'
+     target creates.
+
+     This rule should not modify the directories where compilation is
+     done, only the directories where files are installed.
+
+     The uninstallation commands are divided into three categories,
+     just like the installation commands.  *Note Install Command
+     Categories::.
+
+`install-strip'
+     Like `install', but strip the executable files while installing
+     them.  In simple cases, this target can use the `install' target in
+     a simple way:
+
+          install-strip:
+                  $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \
+                          install
+
+     But if the package installs scripts as well as real executables,
+     the `install-strip' target can't just refer to the `install'
+     target; it has to strip the executables but not the scripts.
+
+     `install-strip' should not strip the executables in the build
+     directory which are being copied for installation.  It should only
+     strip the copies that are installed.
+
+     Normally we do not recommend stripping an executable unless you
+     are sure the program has no bugs.  However, it can be reasonable
+     to install a stripped executable for actual execution while saving
+     the unstripped executable elsewhere in case there is a bug.
+
+`clean'
+     Delete all files from the current directory that are normally
+     created by building the program.  Don't delete the files that
+     record the configuration.  Also preserve files that could be made
+     by building, but normally aren't because the distribution comes
+     with them.
+
+     Delete `.dvi' files here if they are not part of the distribution.
+
+`distclean'
+     Delete all files from the current directory that are created by
+     configuring or building the program.  If you have unpacked the
+     source and built the program without creating any other files,
+     `make distclean' should leave only the files that were in the
+     distribution.
+
+`mostlyclean'
+     Like `clean', but may refrain from deleting a few files that people
+     normally don't want to recompile.  For example, the `mostlyclean'
+     target for GCC does not delete `libgcc.a', because recompiling it
+     is rarely necessary and takes a lot of time.
+
+`maintainer-clean'
+     Delete almost everything from the current directory that can be
+     reconstructed with this Makefile.  This typically includes
+     everything deleted by `distclean', plus more: C source files
+     produced by Bison, tags tables, Info files, and so on.
+
+     The reason we say "almost everything" is that running the command
+     `make maintainer-clean' should not delete `configure' even if
+     `configure' can be remade using a rule in the Makefile.  More
+     generally, `make maintainer-clean' should not delete anything that
+     needs to exist in order to run `configure' and then begin to build
+     the program.  This is the only exception; `maintainer-clean' should
+     delete everything else that can be rebuilt.
+
+     The `maintainer-clean' target is intended to be used by a
+     maintainer of the package, not by ordinary users.  You may need
+     special tools to reconstruct some of the files that `make
+     maintainer-clean' deletes.  Since these files are normally
+     included in the distribution, we don't take care to make them easy
+     to reconstruct.  If you find you need to unpack the full
+     distribution again, don't blame us.
+
+     To help make users aware of this, the commands for the special
+     `maintainer-clean' target should start with these two:
+
+          @echo 'This command is intended for maintainers to use; it'
+          @echo 'deletes files that may need special tools to rebuild.'
+
+`TAGS'
+     Update a tags table for this program.
+
+`info'
+     Generate any Info files needed.  The best way to write the rules
+     is as follows:
+
+          info: foo.info
+
+          foo.info: foo.texi chap1.texi chap2.texi
+                  $(MAKEINFO) $(srcdir)/foo.texi
+
+     You must define the variable `MAKEINFO' in the Makefile.  It should
+     run the `makeinfo' program, which is part of the Texinfo
+     distribution.
+
+     Normally a GNU distribution comes with Info files, and that means
+     the Info files are present in the source directory.  Therefore,
+     the Make rule for an info file should update it in the source
+     directory.  When users build the package, ordinarily Make will not
+     update the Info files because they will already be up to date.
+
+`dvi'
+     Generate DVI files for all Texinfo documentation.  For example:
+
+          dvi: foo.dvi
+
+          foo.dvi: foo.texi chap1.texi chap2.texi
+                  $(TEXI2DVI) $(srcdir)/foo.texi
+
+     You must define the variable `TEXI2DVI' in the Makefile.  It should
+     run the program `texi2dvi', which is part of the Texinfo
+     distribution.(1)  Alternatively, write just the dependencies, and
+     allow GNU `make' to provide the command.
+
+`dist'
+     Create a distribution tar file for this program.  The tar file
+     should be set up so that the file names in the tar file start with
+     a subdirectory name which is the name of the package it is a
+     distribution for.  This name can include the version number.
+
+     For example, the distribution tar file of GCC version 1.40 unpacks
+     into a subdirectory named `gcc-1.40'.
+
+     The easiest way to do this is to create a subdirectory
+     appropriately named, use `ln' or `cp' to install the proper files
+     in it, and then `tar' that subdirectory.
+
+     Compress the tar file with `gzip'.  For example, the actual
+     distribution file for GCC version 1.40 is called `gcc-1.40.tar.gz'.
+
+     The `dist' target should explicitly depend on all non-source files
+     that are in the distribution, to make sure they are up to date in
+     the distribution.  *Note Making Releases: Releases.
+
+`check'
+     Perform self-tests (if any).  The user must build the program
+     before running the tests, but need not install the program; you
+     should write the self-tests so that they work when the program is
+     built but not installed.
+
+   The following targets are suggested as conventional names, for
+programs in which they are useful.
+
+`installcheck'
+     Perform installation tests (if any).  The user must build and
+     install the program before running the tests.  You should not
+     assume that `$(bindir)' is in the search path.
+
+`installdirs'
+     It's useful to add a target named `installdirs' to create the
+     directories where files are installed, and their parent
+     directories.  There is a script called `mkinstalldirs' which is
+     convenient for this; you can find it in the Texinfo package.  You
+     can use a rule like this:
+
+          # Make sure all installation directories (e.g. $(bindir))
+          # actually exist by making them if necessary.
+          installdirs: mkinstalldirs
+                  $(srcdir)/mkinstalldirs $(bindir) $(datadir) \
+                                          $(libdir) $(infodir) \
+                                          $(mandir)
+
+     or, if you wish to support `DESTDIR',
+
+          # Make sure all installation directories (e.g. $(bindir))
+          # actually exist by making them if necessary.
+          installdirs: mkinstalldirs
+                  $(srcdir)/mkinstalldirs \
+                      $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) \
+                      $(DESTDIR)$(libdir) $(DESTDIR)$(infodir) \
+                      $(DESTDIR)$(mandir)
+
+     This rule should not modify the directories where compilation is
+     done.  It should do nothing but create installation directories.
+
+   ---------- Footnotes ----------
+
+   (1) `texi2dvi' uses TeX to do the real work of formatting. TeX is
+not distributed with Texinfo.
+
+\1f
+File: standards.info,  Node: Install Command Categories,  Prev: Standard Targets,  Up: Makefile Conventions
+
+7.2.6 Install Command Categories
+--------------------------------
+
+When writing the `install' target, you must classify all the commands
+into three categories: normal ones, "pre-installation" commands and
+"post-installation" commands.
+
+   Normal commands move files into their proper places, and set their
+modes.  They may not alter any files except the ones that come entirely
+from the package they belong to.
+
+   Pre-installation and post-installation commands may alter other
+files; in particular, they can edit global configuration files or data
+bases.
+
+   Pre-installation commands are typically executed before the normal
+commands, and post-installation commands are typically run after the
+normal commands.
+
+   The most common use for a post-installation command is to run
+`install-info'.  This cannot be done with a normal command, since it
+alters a file (the Info directory) which does not come entirely and
+solely from the package being installed.  It is a post-installation
+command because it needs to be done after the normal command which
+installs the package's Info files.
+
+   Most programs don't need any pre-installation commands, but we have
+the feature just in case it is needed.
+
+   To classify the commands in the `install' rule into these three
+categories, insert "category lines" among them.  A category line
+specifies the category for the commands that follow.
+
+   A category line consists of a tab and a reference to a special Make
+variable, plus an optional comment at the end.  There are three
+variables you can use, one for each category; the variable name
+specifies the category.  Category lines are no-ops in ordinary execution
+because these three Make variables are normally undefined (and you
+_should not_ define them in the makefile).
+
+   Here are the three possible category lines, each with a comment that
+explains what it means:
+
+             $(PRE_INSTALL)     # Pre-install commands follow.
+             $(POST_INSTALL)    # Post-install commands follow.
+             $(NORMAL_INSTALL)  # Normal commands follow.
+
+   If you don't use a category line at the beginning of the `install'
+rule, all the commands are classified as normal until the first category
+line.  If you don't use any category lines, all the commands are
+classified as normal.
+
+   These are the category lines for `uninstall':
+
+             $(PRE_UNINSTALL)     # Pre-uninstall commands follow.
+             $(POST_UNINSTALL)    # Post-uninstall commands follow.
+             $(NORMAL_UNINSTALL)  # Normal commands follow.
+
+   Typically, a pre-uninstall command would be used for deleting entries
+from the Info directory.
+
+   If the `install' or `uninstall' target has any dependencies which
+act as subroutines of installation, then you should start _each_
+dependency's commands with a category line, and start the main target's
+commands with a category line also.  This way, you can ensure that each
+command is placed in the right category regardless of which of the
+dependencies actually run.
+
+   Pre-installation and post-installation commands should not run any
+programs except for these:
+
+     [ basename bash cat chgrp chmod chown cmp cp dd diff echo
+     egrep expand expr false fgrep find getopt grep gunzip gzip
+     hostname install install-info kill ldconfig ln ls md5sum
+     mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee
+     test touch true uname xargs yes
+
+   The reason for distinguishing the commands in this way is for the
+sake of making binary packages.  Typically a binary package contains
+all the executables and other files that need to be installed, and has
+its own method of installing them--so it does not need to run the normal
+installation commands.  But installing the binary package does need to
+execute the pre-installation and post-installation commands.
+
+   Programs to build binary packages work by extracting the
+pre-installation and post-installation commands.  Here is one way of
+extracting the pre-installation commands:
+
+     make -n install -o all \
+           PRE_INSTALL=pre-install \
+           POST_INSTALL=post-install \
+           NORMAL_INSTALL=normal-install \
+       | gawk -f pre-install.awk
+
+where the file `pre-install.awk' could contain this:
+
+     $0 ~ /^\t[ \t]*(normal_install|post_install)[ \t]*$/ {on = 0}
+     on {print $0}
+     $0 ~ /^\t[ \t]*pre_install[ \t]*$/ {on = 1}
+
+   The resulting file of pre-installation commands is executed as a
+shell script as part of installing the binary package.
+
+\1f
+File: standards.info,  Node: Releases,  Prev: Makefile Conventions,  Up: Managing Releases
+
+7.3 Making Releases
+===================
+
+Package the distribution of `Foo version 69.96' up in a gzipped tar
+file with the name `foo-69.96.tar.gz'.  It should unpack into a
+subdirectory named `foo-69.96'.
+
+   Building and installing the program should never modify any of the
+files contained in the distribution.  This means that all the files
+that form part of the program in any way must be classified into "source
+files" and "non-source files".  Source files are written by humans and
+never changed automatically; non-source files are produced from source
+files by programs under the control of the Makefile.
+
+   The distribution should contain a file named `README' which gives
+the name of the package, and a general description of what it does.  It
+is also good to explain the purpose of each of the first-level
+subdirectories in the package, if there are any.  The `README' file
+should either state the version number of the package, or refer to where
+in the package it can be found.
+
+   The `README' file should refer to the file `INSTALL', which should
+contain an explanation of the installation procedure.
+
+   The `README' file should also refer to the file which contains the
+copying conditions.  The GNU GPL, if used, should be in a file called
+`COPYING'.  If the GNU LGPL is used, it should be in a file called
+`COPYING.LIB'.
+
+   Naturally, all the source files must be in the distribution.  It is
+okay to include non-source files in the distribution, provided they are
+up-to-date and machine-independent, so that building the distribution
+normally will never modify them.  We commonly include non-source files
+produced by Bison, `lex', TeX, and `makeinfo'; this helps avoid
+unnecessary dependencies between our distributions, so that users can
+install whichever packages they want to install.
+
+   Non-source files that might actually be modified by building and
+installing the program should *never* be included in the distribution.
+So if you do distribute non-source files, always make sure they are up
+to date when you make a new distribution.
+
+   Make sure that the directory into which the distribution unpacks (as
+well as any subdirectories) are all world-writable (octal mode 777).
+This is so that old versions of `tar' which preserve the ownership and
+permissions of the files from the tar archive will be able to extract
+all the files even if the user is unprivileged.
+
+   Make sure that all the files in the distribution are world-readable.
+
+   Make sure that no file name in the distribution is more than 14
+characters long.  Likewise, no file created by building the program
+should have a name longer than 14 characters.  The reason for this is
+that some systems adhere to a foolish interpretation of the POSIX
+standard, and refuse to open a longer name, rather than truncating as
+they did in the past.
+
+   Don't include any symbolic links in the distribution itself.  If the
+tar file contains symbolic links, then people cannot even unpack it on
+systems that don't support symbolic links.  Also, don't use multiple
+names for one file in different directories, because certain file
+systems cannot handle this and that prevents unpacking the distribution.
+
+   Try to make sure that all the file names will be unique on MS-DOS.  A
+name on MS-DOS consists of up to 8 characters, optionally followed by a
+period and up to three characters.  MS-DOS will truncate extra
+characters both before and after the period.  Thus, `foobarhacker.c'
+and `foobarhacker.o' are not ambiguous; they are truncated to
+`foobarha.c' and `foobarha.o', which are distinct.
+
+   Include in your distribution a copy of the `texinfo.tex' you used to
+test print any `*.texinfo' or `*.texi' files.
+
+   Likewise, if your program uses small GNU software packages like
+regex, getopt, obstack, or termcap, include them in the distribution
+file.  Leaving them out would make the distribution file a little
+smaller at the expense of possible inconvenience to a user who doesn't
+know what other files to get.
+
+\1f
+File: standards.info,  Node: References,  Next: Copying This Manual,  Prev: Managing Releases,  Up: Top
+
+8 References to Non-Free Software and Documentation
+***************************************************
+
+A GNU program should not recommend use of any non-free program.  We
+can't stop some people from writing proprietary programs, or stop other
+people from using them, but we can and should avoid helping to
+advertise them to new potential customers.  Proprietary software is a
+social and ethical problem, and the point of GNU is to solve that
+problem.
+
+   When a non-free program or system is well known, you can mention it
+in passing--that is harmless, since users who might want to use it
+probably already know about it.  For instance, it is fine to explain
+how to build your package on top of some non-free operating system, or
+how to use it together with some widely used non-free program.
+
+   However, you should give only the necessary information to help those
+who already use the non-free program to use your program with it--don't
+give, or refer to, any further information about the proprietary
+program, and don't imply that the proprietary program enhances your
+program, or that its existence is in any way a good thing.  The goal
+should be that people already using the proprietary program will get
+the advice they need about how to use your free program, while people
+who don't already use the proprietary program will not see anything to
+lead them to take an interest in it.
+
+   If a non-free program or system is obscure in your program's domain,
+your program should not mention or support it at all, since doing so
+would tend to popularize the non-free program more than it popularizes
+your program.  (You cannot hope to find many additional users among the
+users of Foobar if the users of Foobar are few.)
+
+   A GNU package should not refer the user to any non-free documentation
+for free software.  Free documentation that can be included in free
+operating systems is essential for completing the GNU system, so it is
+a major focus of the GNU Project; to recommend use of documentation
+that we are not allowed to use in GNU would undermine the efforts to
+get documentation that we can include.  So GNU packages should never
+recommend non-free documentation.
+
+\1f
+File: standards.info,  Node: Copying This Manual,  Next: Index,  Prev: References,  Up: Top
+
+Appendix A Copying This Manual
+******************************
+
+* Menu:
+
+* GNU Free Documentation License::  License for copying this manual
+
+\1f
+File: standards.info,  Node: GNU Free Documentation License,  Up: Copying This Manual
+
+Appendix B GNU Free Documentation License
+*****************************************
+
+                        Version 1.1, March 2000
+
+     Copyright (C) 2000  Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
+  0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     written document "free" in the sense of freedom: to assure everyone
+     the effective freedom to copy and redistribute it, with or without
+     modifying it, either commercially or noncommercially.  Secondarily,
+     this License preserves for the author and publisher a way to get
+     credit for their work, while not being considered responsible for
+     modifications made by others.
+
+     This License is a kind of "copyleft", which means that derivative
+     works of the document must themselves be free in the same sense.
+     It complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for
+     free software, because free software needs free documentation: a
+     free program should come with manuals providing the same freedoms
+     that the software does.  But this License is not limited to
+     software manuals; it can be used for any textual work, regardless
+     of subject matter or whether it is published as a printed book.
+     We recommend this License principally for works whose purpose is
+     instruction or reference.
+
+
+  1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work that contains a
+     notice placed by the copyright holder saying it can be distributed
+     under the terms of this License.  The "Document", below, refers to
+     any such manual or work.  Any member of the public is a licensee,
+     and is addressed as "you."
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter
+     section of the Document that deals exclusively with the
+     relationship of the publishers or authors of the Document to the
+     Document's overall subject (or to related matters) and contains
+     nothing that could fall directly within that overall subject.
+     (For example, if the Document is in part a textbook of
+     mathematics, a Secondary Section may not explain any mathematics.)
+     The relationship could be a matter of historical connection with
+     the subject or with related matters, or of legal, commercial,
+     philosophical, ethical or political position regarding them.
+
+     The "Invariant Sections" are certain Secondary Sections whose
+     titles are designated, as being those of Invariant Sections, in
+     the notice that says that the Document is released under this
+     License.
+
+     The "Cover Texts" are certain short passages of text that are
+     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+     that says that the Document is released under this License.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, whose contents can be viewed and edited directly
+     and straightforwardly with generic text editors or (for images
+     composed of pixels) generic paint programs or (for drawings) some
+     widely available drawing editor, and that is suitable for input to
+     text formatters or for automatic translation to a variety of
+     formats suitable for input to text formatters.  A copy made in an
+     otherwise Transparent file format whose markup has been designed
+     to thwart or discourage subsequent modification by readers is not
+     Transparent.  A copy that is not "Transparent" is called "Opaque."
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format,
+     SGML or XML using a publicly available DTD, and
+     standard-conforming simple HTML designed for human modification.
+     Opaque formats include PostScript, PDF, proprietary formats that
+     can be read and edited only by proprietary word processors, SGML
+     or XML for which the DTD and/or processing tools are not generally
+     available, and the machine-generated HTML produced by some word
+     processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the
+     material this License requires to appear in the title page.  For
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
+
+  2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License
+     applies to the Document are reproduced in all copies, and that you
+     add no other conditions whatsoever to those of this License.  You
+     may not use technical measures to obstruct or control the reading
+     or further copying of the copies you make or distribute.  However,
+     you may accept compensation in exchange for copies.  If you
+     distribute a large enough number of copies you must also follow
+     the conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above,
+     and you may publicly display copies.
+
+  3. COPYING IN QUANTITY
+
+     If you publish printed copies of the Document numbering more than
+     100, and the Document's license notice requires Cover Texts, you
+     must enclose the copies in covers that carry, clearly and legibly,
+     all these Cover Texts: Front-Cover Texts on the front cover, and
+     Back-Cover Texts on the back cover.  Both covers must also clearly
+     and legibly identify you as the publisher of these copies.  The
+     front cover must present the full title with all words of the
+     title equally prominent and visible.  You may add other material
+     on the covers in addition.  Copying with changes limited to the
+     covers, as long as they preserve the title of the Document and
+     satisfy these conditions, can be treated as verbatim copying in
+     other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto
+     adjacent pages.
+
+     If you publish or distribute Opaque copies of the Document
+     numbering more than 100, you must either include a
+     machine-readable Transparent copy along with each Opaque copy, or
+     state in or with each Opaque copy a publicly-accessible
+     computer-network location containing a complete Transparent copy
+     of the Document, free of added material, which the general
+     network-using public has access to download anonymously at no
+     charge using public-standard network protocols.  If you use the
+     latter option, you must take reasonably prudent steps, when you
+     begin distribution of Opaque copies in quantity, to ensure that
+     this Transparent copy will remain thus accessible at the stated
+     location until at least one year after the last time you
+     distribute an Opaque copy (directly or through your agents or
+     retailers) of that edition to the public.
+
+     It is requested, but not required, that you contact the authors of
+     the Document well before redistributing any large number of
+     copies, to give them a chance to provide you with an updated
+     version of the Document.
+
+  4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document
+     under the conditions of sections 2 and 3 above, provided that you
+     release the Modified Version under precisely this License, with
+     the Modified Version filling the role of the Document, thus
+     licensing distribution and modification of the Modified Version to
+     whoever possesses a copy of it.  In addition, you must do these
+     things in the Modified Version:
+
+     A. Use in the Title Page (and on the covers, if any) a title
+     distinct    from that of the Document, and from those of previous
+     versions    (which should, if there were any, be listed in the
+     History section    of the Document).  You may use the same title
+     as a previous version    if the original publisher of that version
+     gives permission.
+     B. List on the Title Page, as authors, one or more persons or
+     entities    responsible for authorship of the modifications in the
+     Modified    Version, together with at least five of the principal
+     authors of the    Document (all of its principal authors, if it
+     has less than five).
+     C. State on the Title page the name of the publisher of the
+     Modified Version, as the publisher.
+     D. Preserve all the copyright notices of the Document.
+     E. Add an appropriate copyright notice for your modifications
+     adjacent to the other copyright notices.
+     F. Include, immediately after the copyright notices, a license
+     notice    giving the public permission to use the Modified Version
+     under the    terms of this License, in the form shown in the
+     Addendum below.
+     G. Preserve in that license notice the full lists of Invariant
+     Sections    and required Cover Texts given in the Document's
+     license notice.
+     H. Include an unaltered copy of this License.
+     I. Preserve the section entitled "History", and its title, and add
+     to    it an item stating at least the title, year, new authors, and
+       publisher of the Modified Version as given on the Title Page.
+     If    there is no section entitled "History" in the Document,
+     create one    stating the title, year, authors, and publisher of
+     the Document as    given on its Title Page, then add an item
+     describing the Modified    Version as stated in the previous
+     sentence.
+     J. Preserve the network location, if any, given in the Document for
+       public access to a Transparent copy of the Document, and
+     likewise    the network locations given in the Document for
+     previous versions    it was based on.  These may be placed in the
+     "History" section.     You may omit a network location for a work
+     that was published at    least four years before the Document
+     itself, or if the original    publisher of the version it refers
+     to gives permission.
+     K. In any section entitled "Acknowledgements" or "Dedications",
+     preserve the section's title, and preserve in the section all the
+      substance and tone of each of the contributor acknowledgements
+     and/or dedications given therein.
+     L. Preserve all the Invariant Sections of the Document,
+     unaltered in their text and in their titles.  Section numbers
+     or the equivalent are not considered part of the section titles.
+     M. Delete any section entitled "Endorsements."  Such a section
+     may not be included in the Modified Version.
+     N. Do not retitle any existing section as "Endorsements"    or to
+     conflict in title with any Invariant Section.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no
+     material copied from the Document, you may at your option
+     designate some or all of these sections as invariant.  To do this,
+     add their titles to the list of Invariant Sections in the Modified
+     Version's license notice.  These titles must be distinct from any
+     other section titles.
+
+     You may add a section entitled "Endorsements", provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties-for example, statements of peer review or that the text has
+     been approved by an organization as the authoritative definition
+     of a standard.
+
+     You may add a passage of up to five words as a Front-Cover Text,
+     and a passage of up to 25 words as a Back-Cover Text, to the end
+     of the list of Cover Texts in the Modified Version.  Only one
+     passage of Front-Cover Text and one of Back-Cover Text may be
+     added by (or through arrangements made by) any one entity.  If the
+     Document already includes a cover text for the same cover,
+     previously added by you or by arrangement made by the same entity
+     you are acting on behalf of, you may not add another; but you may
+     replace the old one, on explicit permission from the previous
+     publisher that added the old one.
+
+     The author(s) and publisher(s) of the Document do not by this
+     License give permission to use their names for publicity for or to
+     assert or imply endorsement of any Modified Version.
+
+  5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under
+     this License, under the terms defined in section 4 above for
+     modified versions, provided that you include in the combination
+     all of the Invariant Sections of all of the original documents,
+     unmodified, and list them all as Invariant Sections of your
+     combined work in its license notice.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name
+     but different contents, make the title of each such section unique
+     by adding at the end of it, in parentheses, the name of the
+     original author or publisher of that section if known, or else a
+     unique number.  Make the same adjustment to the section titles in
+     the list of Invariant Sections in the license notice of the
+     combined work.
+
+     In the combination, you must combine any sections entitled
+     "History" in the various original documents, forming one section
+     entitled "History"; likewise combine any sections entitled
+     "Acknowledgements", and any sections entitled "Dedications."  You
+     must delete all sections entitled "Endorsements."
+
+  6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the
+     rules of this License for verbatim copying of each of the
+     documents in all other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert
+     a copy of this License into the extracted document, and follow
+     this License in all other respects regarding verbatim copying of
+     that document.
+
+  7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other
+     separate and independent documents or works, in or on a volume of
+     a storage or distribution medium, does not as a whole count as a
+     Modified Version of the Document, provided no compilation
+     copyright is claimed for the compilation.  Such a compilation is
+     called an "aggregate", and this License does not apply to the
+     other self-contained works thus compiled with the Document, on
+     account of their being thus compiled, if they are not themselves
+     derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one
+     quarter of the entire aggregate, the Document's Cover Texts may be
+     placed on covers that surround only the Document within the
+     aggregate.  Otherwise they must appear on covers around the whole
+     aggregate.
+
+  8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section
+     4.  Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License provided that you also include the
+     original English version of this License.  In case of a
+     disagreement between the translation and the original English
+     version of this License, the original English version will prevail.
+
+  9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided for under this License.  Any other
+     attempt to copy, modify, sublicense or distribute the Document is
+     void, and will automatically terminate your rights under this
+     License.  However, parties who have received copies, or rights,
+     from you under this License will not have their licenses
+     terminated so long as such parties remain in full compliance.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of
+     the GNU Free Documentation License from time to time.  Such new
+     versions will be similar in spirit to the present version, but may
+     differ in detail to address new problems or concerns.  See
+     http://www.gnu.org/copyleft/.
+
+     Each version of the License is given a distinguishing version
+     number.  If the Document specifies that a particular numbered
+     version of this License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that specified version or of any later version that has been
+     published (not as a draft) by the Free Software Foundation.  If
+     the Document does not specify a version number of this License,
+     you may choose any version ever published (not as a draft) by the
+     Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+     Copyright (C)  YEAR  YOUR NAME.
+     Permission is granted to copy, distribute and/or modify this document
+     under the terms of the GNU Free Documentation License, Version 1.1
+     or any later version published by the Free Software Foundation;
+     with the Invariant Sections being LIST THEIR TITLES, with the
+     Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+     A copy of the license is included in the section entitled "GNU
+     Free Documentation License."
+
+   If you have no Invariant Sections, write "with no Invariant Sections"
+instead of saying which ones are invariant.  If you have no Front-Cover
+Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
+LIST"; likewise for Back-Cover Texts.
+
+   If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+\1f
+File: standards.info,  Node: Index,  Prev: Copying This Manual,  Up: Top
+
+Index
+*****
+
+\0\b[index\0\b]
+* Menu:
+
+* #endif, commenting:                    Comments.            (line  54)
+* --help option:                         Command-Line Interfaces.
+                                                              (line 119)
+* --version option:                      Command-Line Interfaces.
+                                                              (line  34)
+* -Wall compiler option:                 Syntactic Conventions.
+                                                              (line  10)
+* accepting contributions:               Contributions.       (line   6)
+* address for bug reports:               Command-Line Interfaces.
+                                                              (line 125)
+* ANSI C standard:                       Standard C.          (line   6)
+* arbitrary limits on data:              Semantics.           (line   6)
+* autoconf:                              System Portability.  (line  23)
+* avoiding proprietary code:             Reading Non-Free Code.
+                                                              (line   6)
+* behavior, dependent on program's name: User Interfaces.     (line   6)
+* binary packages:                       Install Command Categories.
+                                                              (line  80)
+* bindir:                                Directory Variables. (line  45)
+* braces, in C source:                   Formatting.          (line   6)
+* bug reports:                           Command-Line Interfaces.
+                                                              (line 125)
+* canonical name of a program:           Command-Line Interfaces.
+                                                              (line  41)
+* casting pointers to integers:          CPU Portability.     (line  67)
+* change logs:                           Change Logs.         (line   6)
+* change logs, conditional changes:      Conditional Changes. (line   6)
+* change logs, style:                    Style of Change Logs.
+                                                              (line   6)
+* command-line arguments, decoding:      Semantics.           (line  46)
+* command-line interface:                Command-Line Interfaces.
+                                                              (line   6)
+* commenting:                            Comments.            (line   6)
+* compatibility with C and POSIX standards: Compatibility.    (line   6)
+* compiler warnings:                     Syntactic Conventions.
+                                                              (line  10)
+* conditional changes, and change logs:  Conditional Changes. (line   6)
+* conditionals, comments for:            Comments.            (line  54)
+* configure:                             Configuration.       (line   6)
+* control-L:                             Formatting.          (line 114)
+* conventions for makefiles:             Makefile Conventions.
+                                                              (line   6)
+* corba:                                 Graphical Interfaces.
+                                                              (line  16)
+* credits for manuals:                   Manual Credits.      (line   6)
+* data types, and portability:           CPU Portability.     (line   6)
+* declaration for system functions:      System Functions.    (line  21)
+* documentation:                         Documentation.       (line   6)
+* doschk:                                Names.               (line  38)
+* downloading this manual:               Preface.             (line  17)
+* error messages:                        Semantics.           (line  19)
+* error messages, formatting:            Errors.              (line   6)
+* exec_prefix:                           Directory Variables. (line  27)
+* expressions, splitting:                Formatting.          (line  77)
+* file usage:                            File Usage.          (line   6)
+* file-name limitations:                 Names.               (line  38)
+* formatting error messages:             Errors.              (line   6)
+* formatting source code:                Formatting.          (line   6)
+* formfeed:                              Formatting.          (line 114)
+* function argument, declaring:          Syntactic Conventions.
+                                                              (line   6)
+* function prototypes:                   Standard C.          (line  17)
+* getopt:                                Command-Line Interfaces.
+                                                              (line   6)
+* gettext:                               Internationalization.
+                                                              (line   6)
+* gnome:                                 Graphical Interfaces.
+                                                              (line  16)
+* graphical user interface:              Graphical Interfaces.
+                                                              (line   6)
+* gtk:                                   Graphical Interfaces.
+                                                              (line   6)
+* GUILE:                                 Source Language.     (line  38)
+* implicit int:                          Syntactic Conventions.
+                                                              (line   6)
+* impossible conditions:                 Semantics.           (line  70)
+* internationalization:                  Internationalization.
+                                                              (line   6)
+* legal aspects:                         Legal Issues.        (line   6)
+* legal papers:                          Contributions.       (line   6)
+* libexecdir:                            Directory Variables. (line  58)
+* libraries:                             Libraries.           (line   6)
+* library functions, and portability:    System Functions.    (line   6)
+* license for manuals:                   License for Manuals. (line   6)
+* lint:                                  Syntactic Conventions.
+                                                              (line 109)
+* long option names:                     Option Table.        (line   6)
+* long-named options:                    Command-Line Interfaces.
+                                                              (line  12)
+* makefile, conventions for:             Makefile Conventions.
+                                                              (line   6)
+* malloc return value:                   Semantics.           (line  25)
+* man pages:                             Man Pages.           (line   6)
+* manual structure:                      Manual Structure Details.
+                                                              (line   6)
+* memory allocation failure:             Semantics.           (line  25)
+* memory usage:                          Memory Usage.        (line   6)
+* message text, and internationalization: Internationalization.
+                                                              (line  29)
+* mmap:                                  Mmap.                (line   6)
+* multiple variables in a line:          Syntactic Conventions.
+                                                              (line  35)
+* names of variables, functions, and files: Names.            (line   6)
+* NEWS file:                             NEWS File.           (line   6)
+* non-POSIX systems, and portability:    System Portability.  (line  32)
+* non-standard extensions:               Using Extensions.    (line   6)
+* NUL characters:                        Semantics.           (line  11)
+* open brace:                            Formatting.          (line   6)
+* optional features, configure-time:     Configuration.       (line  76)
+* options for compatibility:             Compatibility.       (line  14)
+* output device and program's behavior:  User Interfaces.     (line  13)
+* packaging:                             Releases.            (line   6)
+* portability, and data types:           CPU Portability.     (line   6)
+* portability, and library functions:    System Functions.    (line   6)
+* portability, between system types:     System Portability.  (line   6)
+* POSIX compatibility:                   Compatibility.       (line   6)
+* POSIXLY_CORRECT, environment variable: Compatibility.       (line  21)
+* post-installation commands:            Install Command Categories.
+                                                              (line   6)
+* pre-installation commands:             Install Command Categories.
+                                                              (line   6)
+* prefix:                                Directory Variables. (line  17)
+* program configuration:                 Configuration.       (line   6)
+* program design:                        Design Advice.       (line   6)
+* program name and its behavior:         User Interfaces.     (line   6)
+* program's canonical name:              Command-Line Interfaces.
+                                                              (line  41)
+* programming languges:                  Source Language.     (line   6)
+* proprietary programs:                  Reading Non-Free Code.
+                                                              (line   6)
+* README file:                           Releases.            (line  17)
+* references to non-free material:       References.          (line   6)
+* releasing:                             Managing Releases.   (line   6)
+* sbindir:                               Directory Variables. (line  51)
+* signal handling:                       Semantics.           (line  59)
+* spaces before open-paren:              Formatting.          (line  71)
+* standard command-line options:         Command-Line Interfaces.
+                                                              (line  31)
+* standards for makefiles:               Makefile Conventions.
+                                                              (line   6)
+* string library functions:              System Functions.    (line  55)
+* syntactic conventions:                 Syntactic Conventions.
+                                                              (line   6)
+* table of long options:                 Option Table.        (line   6)
+* temporary files:                       Semantics.           (line  84)
+* temporary variables:                   Syntactic Conventions.
+                                                              (line  23)
+* texinfo.tex, in a distribution:        Releases.            (line  73)
+* TMPDIR environment variable:           Semantics.           (line  84)
+* trademarks:                            Trademarks.          (line   6)
+* where to obtain standards.texi:        Preface.             (line  17)
+
+
+\1f
+Tag Table:
+Node: Top\7f729
+Node: Preface\7f1429
+Node: Legal Issues\7f3649
+Node: Reading Non-Free Code\7f4113
+Node: Contributions\7f5841
+Node: Trademarks\7f7995
+Node: Design Advice\7f9058
+Node: Source Language\7f9642
+Node: Compatibility\7f11654
+Node: Using Extensions\7f13282
+Node: Standard C\7f14858
+Node: Conditional Compilation\7f17261
+Node: Program Behavior\7f18560
+Node: Semantics\7f19479
+Node: Libraries\7f24172
+Node: Errors\7f25417
+Node: User Interfaces\7f27198
+Node: Graphical Interfaces\7f28803
+Node: Command-Line Interfaces\7f29838
+Node: Option Table\7f35909
+Node: Memory Usage\7f50918
+Node: File Usage\7f51943
+Node: Writing C\7f52691
+Node: Formatting\7f53541
+Node: Comments\7f57604
+Node: Syntactic Conventions\7f60906
+Node: Names\7f64318
+Node: System Portability\7f66527
+Node: CPU Portability\7f68912
+Node: System Functions\7f72168
+Node: Internationalization\7f77365
+Node: Mmap\7f80518
+Node: Documentation\7f81228
+Node: GNU Manuals\7f82333
+Node: Doc Strings and Manuals\7f87390
+Node: Manual Structure Details\7f88943
+Node: License for Manuals\7f90361
+Node: Manual Credits\7f91335
+Node: Printed Manuals\7f91728
+Node: NEWS File\7f92414
+Node: Change Logs\7f93092
+Node: Change Log Concepts\7f93846
+Node: Style of Change Logs\7f95710
+Node: Simple Changes\7f97745
+Node: Conditional Changes\7f98989
+Node: Indicating the Part Changed\7f100411
+Node: Man Pages\7f100938
+Node: Reading other Manuals\7f102562
+Node: Managing Releases\7f103353
+Node: Configuration\7f104116
+Node: Makefile Conventions\7f111021
+Node: Makefile Basics\7f111827
+Node: Utilities in Makefiles\7f115001
+Node: Command Variables\7f117146
+Node: Directory Variables\7f120723
+Node: Standard Targets\7f131617
+Ref: Standard Targets-Footnote-1\7f142857
+Node: Install Command Categories\7f142957
+Node: Releases\7f147539
+Node: References\7f151627
+Node: Copying This Manual\7f153912
+Node: GNU Free Documentation License\7f154148
+Node: Index\7f173849
+\1f
+End Tag Table
index 9dfd732..4097899 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/es/LC_MESSAGES/bfd.mo and b/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/es/LC_MESSAGES/bfd.mo differ
index 3130319..8e4253f 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/es/LC_MESSAGES/opcodes.mo and b/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/es/LC_MESSAGES/opcodes.mo differ
index 97678b7..927782d 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/fi/LC_MESSAGES/opcodes.mo and b/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/fi/LC_MESSAGES/opcodes.mo differ
index 3fd1e06..47a17c6 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/fr/LC_MESSAGES/opcodes.mo and b/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/fr/LC_MESSAGES/opcodes.mo differ
index 4343237..79c304c 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/ga/LC_MESSAGES/opcodes.mo and b/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/ga/LC_MESSAGES/opcodes.mo differ
index 85e25d5..6e28b25 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/nl/LC_MESSAGES/opcodes.mo and b/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/nl/LC_MESSAGES/opcodes.mo differ
index 243cfe1..f5683c6 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/vi/LC_MESSAGES/bfd.mo and b/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/vi/LC_MESSAGES/bfd.mo differ
index 07f941b..1ab0155 100644 (file)
Binary files a/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/vi/LC_MESSAGES/opcodes.mo and b/linux-x86/toolchain/arm-eabi-4.4.0/share/locale/vi/LC_MESSAGES/opcodes.mo differ